@@ -627,6 +627,26 @@ ICM_20948_Status_e ICM_20948_set_sample_mode(ICM_20948_Device_t *pdev, ICM_20948
627
627
{
628
628
return retval ;
629
629
}
630
+
631
+ // Check the data was written correctly
632
+ retval = ICM_20948_execute_r (pdev , AGB0_REG_LP_CONFIG , (uint8_t * )& reg , sizeof (ICM_20948_LP_CONFIG_t ));
633
+ if (retval != ICM_20948_Stat_Ok )
634
+ {
635
+ return retval ;
636
+ }
637
+ if (sensors & ICM_20948_Internal_Acc )
638
+ {
639
+ if (reg .ACCEL_CYCLE != mode ) retval = ICM_20948_Stat_Err ;
640
+ }
641
+ if (sensors & ICM_20948_Internal_Gyr )
642
+ {
643
+ if (reg .GYRO_CYCLE != mode ) retval = ICM_20948_Stat_Err ;
644
+ }
645
+ if (sensors & ICM_20948_Internal_Mst )
646
+ {
647
+ if (reg .I2C_MST_CYCLE != mode ) retval = ICM_20948_Stat_Err ;
648
+ }
649
+
630
650
return retval ;
631
651
}
632
652
@@ -646,6 +666,9 @@ ICM_20948_Status_e ICM_20948_set_full_scale(ICM_20948_Device_t *pdev, ICM_20948_
646
666
retval |= ICM_20948_execute_r (pdev , AGB2_REG_ACCEL_CONFIG , (uint8_t * )& reg , sizeof (ICM_20948_ACCEL_CONFIG_t ));
647
667
reg .ACCEL_FS_SEL = fss .a ;
648
668
retval |= ICM_20948_execute_w (pdev , AGB2_REG_ACCEL_CONFIG , (uint8_t * )& reg , sizeof (ICM_20948_ACCEL_CONFIG_t ));
669
+ // Check the data was written correctly
670
+ retval |= ICM_20948_execute_r (pdev , AGB2_REG_ACCEL_CONFIG , (uint8_t * )& reg , sizeof (ICM_20948_ACCEL_CONFIG_t ));
671
+ if (reg .ACCEL_FS_SEL != fss .a ) retval |= ICM_20948_Stat_Err ;
649
672
}
650
673
if (sensors & ICM_20948_Internal_Gyr )
651
674
{
@@ -654,6 +677,9 @@ ICM_20948_Status_e ICM_20948_set_full_scale(ICM_20948_Device_t *pdev, ICM_20948_
654
677
retval |= ICM_20948_execute_r (pdev , AGB2_REG_GYRO_CONFIG_1 , (uint8_t * )& reg , sizeof (ICM_20948_GYRO_CONFIG_1_t ));
655
678
reg .GYRO_FS_SEL = fss .g ;
656
679
retval |= ICM_20948_execute_w (pdev , AGB2_REG_GYRO_CONFIG_1 , (uint8_t * )& reg , sizeof (ICM_20948_GYRO_CONFIG_1_t ));
680
+ // Check the data was written correctly
681
+ retval |= ICM_20948_execute_r (pdev , AGB2_REG_GYRO_CONFIG_1 , (uint8_t * )& reg , sizeof (ICM_20948_GYRO_CONFIG_1_t ));
682
+ if (reg .GYRO_FS_SEL != fss .g ) retval |= ICM_20948_Stat_Err ;
657
683
}
658
684
return retval ;
659
685
}
@@ -674,6 +700,9 @@ ICM_20948_Status_e ICM_20948_set_dlpf_cfg(ICM_20948_Device_t *pdev, ICM_20948_In
674
700
retval |= ICM_20948_execute_r (pdev , AGB2_REG_ACCEL_CONFIG , (uint8_t * )& reg , sizeof (ICM_20948_ACCEL_CONFIG_t ));
675
701
reg .ACCEL_DLPFCFG = cfg .a ;
676
702
retval |= ICM_20948_execute_w (pdev , AGB2_REG_ACCEL_CONFIG , (uint8_t * )& reg , sizeof (ICM_20948_ACCEL_CONFIG_t ));
703
+ // Check the data was written correctly
704
+ retval |= ICM_20948_execute_r (pdev , AGB2_REG_ACCEL_CONFIG , (uint8_t * )& reg , sizeof (ICM_20948_ACCEL_CONFIG_t ));
705
+ if (reg .ACCEL_DLPFCFG != cfg .a ) retval |= ICM_20948_Stat_Err ;
677
706
}
678
707
if (sensors & ICM_20948_Internal_Gyr )
679
708
{
@@ -682,6 +711,9 @@ ICM_20948_Status_e ICM_20948_set_dlpf_cfg(ICM_20948_Device_t *pdev, ICM_20948_In
682
711
retval |= ICM_20948_execute_r (pdev , AGB2_REG_GYRO_CONFIG_1 , (uint8_t * )& reg , sizeof (ICM_20948_GYRO_CONFIG_1_t ));
683
712
reg .GYRO_DLPFCFG = cfg .g ;
684
713
retval |= ICM_20948_execute_w (pdev , AGB2_REG_GYRO_CONFIG_1 , (uint8_t * )& reg , sizeof (ICM_20948_GYRO_CONFIG_1_t ));
714
+ // Check the data was written correctly
715
+ retval |= ICM_20948_execute_r (pdev , AGB2_REG_GYRO_CONFIG_1 , (uint8_t * )& reg , sizeof (ICM_20948_GYRO_CONFIG_1_t ));
716
+ if (reg .GYRO_DLPFCFG != cfg .g ) retval |= ICM_20948_Stat_Err ;
685
717
}
686
718
return retval ;
687
719
}
@@ -709,6 +741,16 @@ ICM_20948_Status_e ICM_20948_enable_dlpf(ICM_20948_Device_t *pdev, ICM_20948_Int
709
741
reg .ACCEL_FCHOICE = 0 ;
710
742
}
711
743
retval |= ICM_20948_execute_w (pdev , AGB2_REG_ACCEL_CONFIG , (uint8_t * )& reg , sizeof (ICM_20948_ACCEL_CONFIG_t ));
744
+ // Check the data was written correctly
745
+ retval |= ICM_20948_execute_r (pdev , AGB2_REG_ACCEL_CONFIG , (uint8_t * )& reg , sizeof (ICM_20948_ACCEL_CONFIG_t ));
746
+ if (enable )
747
+ {
748
+ if (reg .ACCEL_FCHOICE != 1 ) retval |= ICM_20948_Stat_Err ;
749
+ }
750
+ else
751
+ {
752
+ if (reg .ACCEL_FCHOICE != 0 ) retval |= ICM_20948_Stat_Err ;
753
+ }
712
754
}
713
755
if (sensors & ICM_20948_Internal_Gyr )
714
756
{
@@ -724,6 +766,16 @@ ICM_20948_Status_e ICM_20948_enable_dlpf(ICM_20948_Device_t *pdev, ICM_20948_Int
724
766
reg .GYRO_FCHOICE = 0 ;
725
767
}
726
768
retval |= ICM_20948_execute_w (pdev , AGB2_REG_GYRO_CONFIG_1 , (uint8_t * )& reg , sizeof (ICM_20948_GYRO_CONFIG_1_t ));
769
+ // Check the data was written correctly
770
+ retval |= ICM_20948_execute_r (pdev , AGB2_REG_GYRO_CONFIG_1 , (uint8_t * )& reg , sizeof (ICM_20948_GYRO_CONFIG_1_t ));
771
+ if (enable )
772
+ {
773
+ if (reg .GYRO_FCHOICE != 1 ) retval |= ICM_20948_Stat_Err ;
774
+ }
775
+ else
776
+ {
777
+ if (reg .GYRO_FCHOICE != 0 ) retval |= ICM_20948_Stat_Err ;
778
+ }
727
779
}
728
780
return retval ;
729
781
}
@@ -2384,7 +2436,7 @@ ICM_20948_Status_e inv_icm20948_read_dmp_data(ICM_20948_Device_t *pdev, icm_2094
2384
2436
return result ;
2385
2437
}
2386
2438
2387
- static uint8_t sensor_type_2_android_sensor (enum inv_icm20948_sensor sensor )
2439
+ uint8_t sensor_type_2_android_sensor (enum inv_icm20948_sensor sensor )
2388
2440
{
2389
2441
switch (sensor )
2390
2442
{
0 commit comments