Przeglądaj źródła

Fixed some Macro typos. Updated the bmi160_get_power_mode API. Fixed a bug which configured the pre-filter in the power mode API.

Bosch Sensortec 4 lat temu
rodzic
commit
a15536688c

+ 1 - 1
LICENSE

@@ -1,4 +1,4 @@
-Copyright (c) 2020 Bosch Sensortec GmbH. All rights reserved.
+Copyright (c) 2021 Bosch Sensortec GmbH. All rights reserved.
 
 BSD-3-Clause
 

+ 17 - 19
bmi160.c

@@ -1,5 +1,5 @@
 /**
-* Copyright (c) 2020 Bosch Sensortec GmbH. All rights reserved.
+* Copyright (c) 2021 Bosch Sensortec GmbH. All rights reserved.
 *
 * BSD-3-Clause
 *
@@ -31,8 +31,8 @@
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * @file       bmi160.c
-* @date       2021-03-12
-* @version    v3.9.1
+* @date       2021-10-05
+* @version    v3.9.2
 *
 */
 
@@ -1383,7 +1383,7 @@ int8_t bmi160_get_regs(uint8_t reg_addr, uint8_t *data, uint16_t len, const stru
     }
     else if (len == 0)
     {
-        rslt = BMI160_READ_WRITE_LENGHT_INVALID;
+        rslt = BMI160_E_READ_WRITE_LENGTH_INVALID;
     }
     else
     {
@@ -1415,7 +1415,7 @@ int8_t bmi160_set_regs(uint8_t reg_addr, uint8_t *data, uint16_t len, const stru
     }
     else if (len == 0)
     {
-        rslt = BMI160_READ_WRITE_LENGHT_INVALID;
+        rslt = BMI160_E_READ_WRITE_LENGTH_INVALID;
     }
     else
     {
@@ -1627,7 +1627,7 @@ int8_t bmi160_set_power_mode(struct bmi160_dev *dev)
 /*!
  * @brief This API gets the power mode of the sensor.
  */
-int8_t bmi160_get_power_mode(struct bmi160_pmu_status *pmu_status, const struct bmi160_dev *dev)
+int8_t bmi160_get_power_mode(struct bmi160_dev *dev)
 {
     int8_t rslt = 0;
     uint8_t power_mode = 0;
@@ -1642,10 +1642,9 @@ int8_t bmi160_get_power_mode(struct bmi160_pmu_status *pmu_status, const struct
         rslt = bmi160_get_regs(BMI160_PMU_STATUS_ADDR, &power_mode, 1, dev);
         if (rslt == BMI160_OK)
         {
-            /* Power mode of the accel,gyro,aux sensor is obtained */
-            pmu_status->aux_pmu_status = BMI160_GET_BITS_POS_0(power_mode, BMI160_MAG_POWER_MODE);
-            pmu_status->gyro_pmu_status = BMI160_GET_BITS(power_mode, BMI160_GYRO_POWER_MODE);
-            pmu_status->accel_pmu_status = BMI160_GET_BITS(power_mode, BMI160_ACCEL_POWER_MODE);
+            /* Power mode of the accel, gyro sensor is obtained */
+            dev->gyro_cfg.power = BMI160_GET_BITS(power_mode, BMI160_GYRO_POWER_MODE);
+            dev->accel_cfg.power = BMI160_GET_BITS(power_mode, BMI160_ACCEL_POWER_MODE);
         }
     }
 
@@ -3523,7 +3522,7 @@ static int8_t set_accel_pwr(struct bmi160_dev *dev)
     }
     else
     {
-        rslt = BMI160_E_OUT_OF_RANGE;
+        rslt = BMI160_E_INVALID_CONFIG;
     }
 
     return rslt;
@@ -3536,7 +3535,7 @@ static int8_t process_under_sampling(uint8_t *data, const struct bmi160_dev *dev
 {
     int8_t rslt;
     uint8_t temp = 0;
-    uint8_t pre_filter = 0;
+    uint8_t pre_filter[2] = { 0 };
 
     rslt = bmi160_get_regs(BMI160_ACCEL_CONFIG_ADDR, data, 1, dev);
     if (rslt == BMI160_OK)
@@ -3551,20 +3550,18 @@ static int8_t process_under_sampling(uint8_t *data, const struct bmi160_dev *dev
             /* Write data */
             rslt = bmi160_set_regs(BMI160_ACCEL_CONFIG_ADDR, data, 1, dev);
 
-            /* disable the pre-filter data in
-             * low power mode */
+            /* Disable the pre-filter data in low power mode */
             if (rslt == BMI160_OK)
             {
                 /* Disable the Pre-filter data*/
-                rslt = bmi160_set_regs(BMI160_INT_DATA_0_ADDR, &pre_filter, 2, dev);
+                rslt = bmi160_set_regs(BMI160_INT_DATA_0_ADDR, pre_filter, 2, dev);
             }
         }
         else if (*data & BMI160_ACCEL_UNDERSAMPLING_MASK)
         {
             temp = *data & ~BMI160_ACCEL_UNDERSAMPLING_MASK;
 
-            /* disable under-sampling parameter
-             * if already enabled */
+            /* Disable under-sampling parameter if already enabled */
             *data = temp;
 
             /* Write data */
@@ -3611,7 +3608,7 @@ static int8_t set_gyro_pwr(struct bmi160_dev *dev)
     }
     else
     {
-        rslt = BMI160_E_OUT_OF_RANGE;
+        rslt = BMI160_E_INVALID_CONFIG;
     }
 
     return rslt;
@@ -6379,6 +6376,7 @@ static int8_t configure_offset_enable(const struct bmi160_foc_conf *foc_conf, st
 
     return rslt;
 }
+
 static int8_t trigger_foc(struct bmi160_offsets *offset, struct bmi160_dev const *dev)
 {
     int8_t rslt;
@@ -6415,7 +6413,7 @@ static int8_t trigger_foc(struct bmi160_offsets *offset, struct bmi160_dev const
             else
             {
                 /* FOC failure case */
-                rslt = BMI160_FOC_FAILURE;
+                rslt = BMI160_E_FOC_FAILURE;
             }
         }
 

+ 5 - 21
bmi160.h

@@ -1,5 +1,5 @@
 /**
-* Copyright (c) 2020 Bosch Sensortec GmbH. All rights reserved.
+* Copyright (c) 2021 Bosch Sensortec GmbH. All rights reserved.
 *
 * BSD-3-Clause
 *
@@ -31,8 +31,8 @@
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * @file       bmi160.h
-* @date       2021-03-12
-* @version    v3.9.1
+* @date       2021-10-05
+* @version    v3.9.2
 *
 */
 
@@ -224,33 +224,17 @@ int8_t bmi160_set_power_mode(struct bmi160_dev *dev);
  * \ingroup bmi160ApiPowermode
  * \page bmi160_api_bmi160_get_power_mode bmi160_get_power_mode
  * \code
- * int8_t bmi160_get_power_mode(struct bmi160_pmu_status *pmu_status, const struct bmi160_dev *dev);
+ * int8_t bmi160_get_power_mode(struct bmi160_dev *dev);
  * \endcode
  * @details This API gets the power mode of the sensor.
  *
- * @param[in] power_mode  : Power mode of the sensor
  * @param[in] dev         : Structure instance of bmi160_dev
  *
- * power_mode Macros possible values for pmu_status->aux_pmu_status :
- *  - BMI160_AUX_PMU_SUSPEND
- *  - BMI160_AUX_PMU_NORMAL
- *  - BMI160_AUX_PMU_LOW_POWER
- *
- * power_mode Macros possible values for pmu_status->gyro_pmu_status :
- *  - BMI160_GYRO_PMU_SUSPEND
- *  - BMI160_GYRO_PMU_NORMAL
- *  - BMI160_GYRO_PMU_FSU
- *
- * power_mode Macros possible values for pmu_status->accel_pmu_status :
- *  - BMI160_ACCEL_PMU_SUSPEND
- *  - BMI160_ACCEL_PMU_NORMAL
- *  - BMI160_ACCEL_PMU_LOW_POWER
- *
  * @return Result of API execution status
  * @retval Zero Success
  * @retval Negative Error
  */
-int8_t bmi160_get_power_mode(struct bmi160_pmu_status *pmu_status, const struct bmi160_dev *dev);
+int8_t bmi160_get_power_mode(struct bmi160_dev *dev);
 
 /**
  * \ingroup bmi160

+ 30 - 56
bmi160_defs.h

@@ -1,5 +1,5 @@
 /**
-* Copyright (c) 2020 Bosch Sensortec GmbH. All rights reserved.
+* Copyright (c) 2021 Bosch Sensortec GmbH. All rights reserved.
 *
 * BSD-3-Clause
 *
@@ -31,8 +31,8 @@
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * @file       bmi160_defs.h
-* @date       2021-03-12
-* @version    v3.9.1
+* @date       2021-10-05
+* @version    v3.9.2
 *
 */
 
@@ -349,8 +349,9 @@
 #define BMI160_E_LWP_PRE_FLTR_INT_INVALID         INT8_C(-8)
 #define BMI160_E_LWP_PRE_FLTR_INVALID             INT8_C(-9)
 #define BMI160_E_AUX_NOT_FOUND                    INT8_C(-10)
-#define BMI160_FOC_FAILURE                        INT8_C(-11)
-#define BMI160_READ_WRITE_LENGHT_INVALID          INT8_C(-12)
+#define BMI160_E_FOC_FAILURE                      INT8_C(-11)
+#define BMI160_E_READ_WRITE_LENGTH_INVALID        INT8_C(-12)
+#define BMI160_E_INVALID_CONFIG                   INT8_C(-13)
 
 /**\name API warning codes */
 #define BMI160_W_GYRO_SELF_TEST_FAIL              INT8_C(1)
@@ -371,7 +372,7 @@
 
 /* Delay in ms settings */
 #define BMI160_ACCEL_DELAY_MS                     UINT8_C(5)
-#define BMI160_GYRO_DELAY_MS                      UINT8_C(81)
+#define BMI160_GYRO_DELAY_MS                      UINT8_C(80)
 #define BMI160_ONE_MS_DELAY                       UINT8_C(1)
 #define BMI160_AUX_COM_DELAY                      UINT8_C(10)
 #define BMI160_GYRO_SELF_TEST_DELAY               UINT8_C(20)
@@ -711,34 +712,6 @@ typedef int8_t (*bmi160_write_fptr_t)(uint8_t dev_addr, uint8_t reg_addr, uint8_
 typedef void (*bmi160_delay_fptr_t)(uint32_t period);
 
 /*************************** Data structures *********************************/
-struct bmi160_pmu_status
-{
-    /*! Power mode status of Accel
-     * Possible values :
-     *  - BMI160_ACCEL_PMU_SUSPEND
-     *  - BMI160_ACCEL_PMU_NORMAL
-     *  - BMI160_ACCEL_PMU_LOW_POWER
-     */
-    uint8_t accel_pmu_status;
-
-    /*! Power mode status of Gyro
-     * Possible values :
-     *  - BMI160_GYRO_PMU_SUSPEND
-     *  - BMI160_GYRO_PMU_NORMAL
-     *  - BMI160_GYRO_PMU_FSU
-     */
-    uint8_t gyro_pmu_status;
-
-    /*! Power mode status of 'Auxiliary sensor interface' whereas the actual
-     *  power mode of the aux. sensor should be configured
-     *  according to the connected sensor specifications
-     * Possible values :
-     *  - BMI160_AUX_PMU_SUSPEND
-     *  - BMI160_AUX_PMU_NORMAL
-     *  - BMI160_AUX_PMU_LOW_POWER
-     */
-    uint8_t aux_pmu_status;
-};
 
 /*!
  * @brief bmi160 interrupt status selection enum.
@@ -756,7 +729,8 @@ enum bmi160_int_status_sel {
  */
 struct bmi160_int_status_bits
 {
-#if LITTLE_ENDIAN == 1
+#ifdef LITTLE_ENDIAN
+
     uint32_t step : 1;
     uint32_t sigmot : 1;
     uint32_t anym : 1;
@@ -789,7 +763,7 @@ struct bmi160_int_status_bits
     uint32_t orient_1_0 : 2;
     uint32_t orient_2 : 1;
     uint32_t flat : 1;
-#elif BIG_ENDIAN == 1
+#else
     uint32_t high_first_x : 1;
     uint32_t high_first_y : 1;
     uint32_t high_first_z : 1;
@@ -1098,7 +1072,7 @@ enum bmi160_any_sig_motion_active_interrupt_state {
 };
 struct bmi160_acc_tap_int_cfg
 {
-#if LITTLE_ENDIAN == 1
+#ifdef LITTLE_ENDIAN
 
     /*! tap threshold */
     uint16_t tap_thr : 5;
@@ -1117,7 +1091,7 @@ struct bmi160_acc_tap_int_cfg
 
     /*! tap enable, 1 - enable, 0 - disable */
     uint16_t tap_en : 1;
-#elif BIG_ENDIAN == 1
+#else
 
     /*! tap enable, 1 - enable, 0 - disable */
     uint16_t tap_en : 1;
@@ -1140,7 +1114,7 @@ struct bmi160_acc_tap_int_cfg
 };
 struct bmi160_acc_any_mot_int_cfg
 {
-#if LITTLE_ENDIAN == 1
+#ifdef LITTLE_ENDIAN
 
     /*! 1 any-motion enable, 0 - any-motion disable */
     uint8_t anymotion_en : 1;
@@ -1162,7 +1136,7 @@ struct bmi160_acc_any_mot_int_cfg
 
     /*! slope threshold */
     uint8_t anymotion_thr;
-#elif BIG_ENDIAN == 1
+#else
 
     /*! slope threshold */
     uint8_t anymotion_thr;
@@ -1188,7 +1162,7 @@ struct bmi160_acc_any_mot_int_cfg
 };
 struct bmi160_acc_sig_mot_int_cfg
 {
-#if LITTLE_ENDIAN == 1
+#ifdef LITTLE_ENDIAN
 
     /*! skip time of sig-motion interrupt */
     uint8_t sig_mot_skip : 2;
@@ -1204,7 +1178,7 @@ struct bmi160_acc_sig_mot_int_cfg
 
     /*! sig-motion threshold */
     uint8_t sig_mot_thres;
-#elif BIG_ENDIAN == 1
+#else
 
     /*! sig-motion threshold */
     uint8_t sig_mot_thres;
@@ -1224,7 +1198,7 @@ struct bmi160_acc_sig_mot_int_cfg
 };
 struct bmi160_acc_step_detect_int_cfg
 {
-#if LITTLE_ENDIAN == 1
+#ifdef LITTLE_ENDIAN
 
     /*! 1- step detector enable, 0- step detector disable */
     uint16_t step_detector_en : 1;
@@ -1240,7 +1214,7 @@ struct bmi160_acc_step_detect_int_cfg
 
     /*! minimum step buffer size*/
     uint16_t step_min_buf : 3;
-#elif BIG_ENDIAN == 1
+#else
 
     /*! minimum step buffer size*/
     uint16_t step_min_buf : 3;
@@ -1260,7 +1234,7 @@ struct bmi160_acc_step_detect_int_cfg
 };
 struct bmi160_acc_no_motion_int_cfg
 {
-#if LITTLE_ENDIAN == 1
+#ifdef LITTLE_ENDIAN
 
     /*! no motion interrupt x */
     uint16_t no_motion_x : 1;
@@ -1282,7 +1256,7 @@ struct bmi160_acc_no_motion_int_cfg
 
     /*! no motion threshold */
     uint8_t no_motion_thres;
-#elif BIG_ENDIAN == 1
+#else
 
     /*! no motion threshold */
     uint8_t no_motion_thres;
@@ -1308,7 +1282,7 @@ struct bmi160_acc_no_motion_int_cfg
 };
 struct bmi160_acc_orient_int_cfg
 {
-#if LITTLE_ENDIAN == 1
+#ifdef LITTLE_ENDIAN
 
     /*! thresholds for switching between the different orientations */
     uint16_t orient_mode : 2;
@@ -1330,7 +1304,7 @@ struct bmi160_acc_orient_int_cfg
 
     /*! 1 - orient enable, 0 - orient disable */
     uint8_t orient_en : 1;
-#elif BIG_ENDIAN == 1
+#else
 
     /*! 1 - orient enable, 0 - orient disable */
     uint8_t orient_en : 1;
@@ -1356,7 +1330,7 @@ struct bmi160_acc_orient_int_cfg
 };
 struct bmi160_acc_flat_detect_int_cfg
 {
-#if LITTLE_ENDIAN == 1
+#ifdef LITTLE_ENDIAN
 
     /*! flat threshold */
     uint16_t flat_theta : 6;
@@ -1370,7 +1344,7 @@ struct bmi160_acc_flat_detect_int_cfg
 
     /*! 1 - flat enable, 0 - flat disable */
     uint16_t flat_en : 1;
-#elif BIG_ENDIAN == 1
+#else
 
     /*! 1 - flat enable, 0 - flat disable */
     uint16_t flat_en : 1;
@@ -1388,7 +1362,7 @@ struct bmi160_acc_flat_detect_int_cfg
 };
 struct bmi160_acc_low_g_int_cfg
 {
-#if LITTLE_ENDIAN == 1
+#ifdef LITTLE_ENDIAN
 
     /*! low-g interrupt trigger delay */
     uint8_t low_dur;
@@ -1407,7 +1381,7 @@ struct bmi160_acc_low_g_int_cfg
 
     /*! 1 - enable low-g, 0 - disable low-g */
     uint8_t low_en : 1;
-#elif BIG_ENDIAN == 1
+#else
 
     /*! 1 - enable low-g, 0 - disable low-g */
     uint8_t low_en : 1;
@@ -1430,7 +1404,7 @@ struct bmi160_acc_low_g_int_cfg
 };
 struct bmi160_acc_high_g_int_cfg
 {
-#if LITTLE_ENDIAN == 1
+#ifdef LITTLE_ENDIAN
 
     /*! High-g interrupt x, 1 - enable, 0 - disable */
     uint8_t high_g_x : 1;
@@ -1452,7 +1426,7 @@ struct bmi160_acc_high_g_int_cfg
 
     /*! High-g duration */
     uint8_t high_dur;
-#elif BIG_ENDIAN == 1
+#else
 
     /*! High-g duration */
     uint8_t high_dur;
@@ -1478,7 +1452,7 @@ struct bmi160_acc_high_g_int_cfg
 };
 struct bmi160_int_pin_settg
 {
-#if LITTLE_ENDIAN == 1
+#ifdef LITTLE_ENDIAN
 
     /*! To enable either INT1 or INT2 pin as output.
      * 0- output disabled ,1- output enabled */
@@ -1500,7 +1474,7 @@ struct bmi160_int_pin_settg
 
     /*! latch duration*/
     uint16_t latch_dur : 4;
-#elif BIG_ENDIAN == 1
+#else
 
     /*! latch duration*/
     uint16_t latch_dur : 4;

+ 1 - 5
examples/read_chip_id/read_chip_id.c

@@ -1,11 +1,7 @@
 /**
- * Copyright (C) 2018 Bosch Sensortec GmbH
+ * Copyright (C) 2021 Bosch Sensortec GmbH. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
- *
- * @file    bmi160_read_chip_id.c
- * @brief   Sample file how to read bmi160 sensor chip ID using LIB COINES
- *
  */
 
 /*********************************************************************/

+ 1 - 5
examples/read_sensor_data/read_sensor_data.c

@@ -1,11 +1,7 @@
 /**
- * Copyright (C) 2018 Bosch Sensortec GmbH
+ * Copyright (C) 2021 Bosch Sensortec GmbH. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
- *
- * @file    bmi160_read_sensor_data.c
- * @brief   Sample file to read BMI160 sensor data using COINES library
- *
  */
 
 /*********************************************************************/

+ 1 - 5
examples/tap/tap.c

@@ -1,11 +1,7 @@
 /**
- * Copyright (C) 2018 Bosch Sensortec GmbH
+ * Copyright (C) 2021 Bosch Sensortec GmbH. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
- *
- * @file    bmi160_read_sensor_data.c
- * @brief   Sample file to read BMI160 sensor data using COINES library
- *
  */
 
 /*********************************************************************/