3-axis MEMS ultra low power magnetometer

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   X_NUCLEO_IKS01A3 X_NUCLEO_IKS01A3

Revision:
1:8562ae1a0534
Parent:
0:671edf39d961
--- a/lis2mdl_reg.h	Tue Mar 05 18:06:37 2019 +0000
+++ b/lis2mdl_reg.h	Wed Jul 24 14:18:39 2019 +0000
@@ -39,7 +39,7 @@
 #define LIS2MDL_REGS_H
 
 #ifdef __cplusplus
-  extern "C" {
+extern "C" {
 #endif
 
 /* Includes ------------------------------------------------------------------*/
@@ -76,24 +76,24 @@
   *
   */
 
-typedef union{
-  int16_t i16bit[3];
-  uint8_t u8bit[6];
+typedef union {
+    int16_t i16bit[3];
+    uint8_t u8bit[6];
 } axis3bit16_t;
 
-typedef union{
-  int16_t i16bit;
-  uint8_t u8bit[2];
+typedef union {
+    int16_t i16bit;
+    uint8_t u8bit[2];
 } axis1bit16_t;
 
-typedef union{
-  int32_t i32bit[3];
-  uint8_t u8bit[12];
+typedef union {
+    int32_t i32bit[3];
+    uint8_t u8bit[12];
 } axis3bit32_t;
 
-typedef union{
-  int32_t i32bit;
-  uint8_t u8bit[4];
+typedef union {
+    int32_t i32bit;
+    uint8_t u8bit[4];
 } axis1bit32_t;
 
 /**
@@ -101,15 +101,15 @@
   *
   */
 
-typedef struct{
-  uint8_t bit0       : 1;
-  uint8_t bit1       : 1;
-  uint8_t bit2       : 1;
-  uint8_t bit3       : 1;
-  uint8_t bit4       : 1;
-  uint8_t bit5       : 1;
-  uint8_t bit6       : 1;
-  uint8_t bit7       : 1;
+typedef struct {
+    uint8_t bit0       : 1;
+    uint8_t bit1       : 1;
+    uint8_t bit2       : 1;
+    uint8_t bit3       : 1;
+    uint8_t bit4       : 1;
+    uint8_t bit5       : 1;
+    uint8_t bit6       : 1;
+    uint8_t bit7       : 1;
 } bitwise_t;
 
 #define PROPERTY_DISABLE                (0U)
@@ -122,23 +122,23 @@
   *
   */
 
-  /** @addtogroup  LIS2MDL_Interfaces_Functions
-    * @brief       This section provide a set of functions used to read and
-    *              write a generic register of the device.
-    *              MANDATORY: return 0 -> no Error.
-    * @{
-    *
-    */
+/** @addtogroup  LIS2MDL_Interfaces_Functions
+  * @brief       This section provide a set of functions used to read and
+  *              write a generic register of the device.
+  *              MANDATORY: return 0 -> no Error.
+  * @{
+  *
+  */
 
-typedef int32_t (*lis2mdl_write_ptr)(void *, uint8_t, uint8_t*, uint16_t);
-typedef int32_t (*lis2mdl_read_ptr) (void *, uint8_t, uint8_t*, uint16_t);
+typedef int32_t (*lis2mdl_write_ptr)(void *, uint8_t, uint8_t *, uint16_t);
+typedef int32_t (*lis2mdl_read_ptr)(void *, uint8_t, uint8_t *, uint16_t);
 
 typedef struct {
-  /** Component mandatory fields **/
-  lis2mdl_write_ptr  write_reg;
-  lis2mdl_read_ptr   read_reg;
-  /** Customizable optional pointer **/
-  void *handle;
+    /** Component mandatory fields **/
+    lis2mdl_write_ptr  write_reg;
+    lis2mdl_read_ptr   read_reg;
+    /** Customizable optional pointer **/
+    void *handle;
 } lis2mdl_ctx_t;
 
 /**
@@ -151,7 +151,7 @@
   *
   */
 
-  /** I2C Device Address 8 bit format **/
+/** I2C Device Address 8 bit format **/
 #define LIS2MDL_I2C_ADD                 0x3DU
 
 /** Device Identification (Who am I) **/
@@ -171,70 +171,70 @@
 #define LIS2MDL_WHO_AM_I                0x4FU
 #define LIS2MDL_CFG_REG_A               0x60U
 typedef struct {
-  uint8_t md                     : 2;
-  uint8_t odr                    : 2;
-  uint8_t lp                     : 1;
-  uint8_t soft_rst               : 1;
-  uint8_t reboot                 : 1;
-  uint8_t comp_temp_en           : 1;
+    uint8_t md                     : 2;
+    uint8_t odr                    : 2;
+    uint8_t lp                     : 1;
+    uint8_t soft_rst               : 1;
+    uint8_t reboot                 : 1;
+    uint8_t comp_temp_en           : 1;
 } lis2mdl_cfg_reg_a_t;
 
 #define LIS2MDL_CFG_REG_B               0x61U
 typedef struct {
-  uint8_t lpf                    : 1;
-  uint8_t set_rst                : 2; /* OFF_CANC + Set_FREQ */
-  uint8_t int_on_dataoff         : 1;
-  uint8_t off_canc_one_shot      : 1;
-  uint8_t not_used_01            : 3;
+    uint8_t lpf                    : 1;
+    uint8_t set_rst                : 2; /* OFF_CANC + Set_FREQ */
+    uint8_t int_on_dataoff         : 1;
+    uint8_t off_canc_one_shot      : 1;
+    uint8_t not_used_01            : 3;
 } lis2mdl_cfg_reg_b_t;
 
 #define LIS2MDL_CFG_REG_C               0x62U
 typedef struct {
-  uint8_t drdy_on_pin            : 1;
-  uint8_t self_test              : 1;
-  uint8_t not_used_01            : 1;
-  uint8_t ble                    : 1;
-  uint8_t bdu                    : 1;
-  uint8_t i2c_dis                : 1;
-  uint8_t int_on_pin             : 1;
-  uint8_t not_used_02            : 1;
+    uint8_t drdy_on_pin            : 1;
+    uint8_t self_test              : 1;
+    uint8_t not_used_01            : 1;
+    uint8_t ble                    : 1;
+    uint8_t bdu                    : 1;
+    uint8_t i2c_dis                : 1;
+    uint8_t int_on_pin             : 1;
+    uint8_t not_used_02            : 1;
 } lis2mdl_cfg_reg_c_t;
 
 #define LIS2MDL_INT_CRTL_REG            0x63U
 typedef struct {
-  uint8_t ien                    : 1;
-  uint8_t iel                    : 1;
-  uint8_t iea                    : 1;
-  uint8_t not_used_01            : 2;
-  uint8_t zien                   : 1;
-  uint8_t yien                   : 1;
-  uint8_t xien                   : 1;
+    uint8_t ien                    : 1;
+    uint8_t iel                    : 1;
+    uint8_t iea                    : 1;
+    uint8_t not_used_01            : 2;
+    uint8_t zien                   : 1;
+    uint8_t yien                   : 1;
+    uint8_t xien                   : 1;
 } lis2mdl_int_crtl_reg_t;
 
 #define LIS2MDL_INT_SOURCE_REG          0x64U
 typedef struct {
-  uint8_t _int                    : 1;
-  uint8_t mroi                   : 1;
-  uint8_t n_th_s_z               : 1;
-  uint8_t n_th_s_y               : 1;
-  uint8_t n_th_s_x               : 1;
-  uint8_t p_th_s_z               : 1;
-  uint8_t p_th_s_y               : 1;
-  uint8_t p_th_s_x               : 1;
+    uint8_t _int                    : 1;
+    uint8_t mroi                   : 1;
+    uint8_t n_th_s_z               : 1;
+    uint8_t n_th_s_y               : 1;
+    uint8_t n_th_s_x               : 1;
+    uint8_t p_th_s_z               : 1;
+    uint8_t p_th_s_y               : 1;
+    uint8_t p_th_s_x               : 1;
 } lis2mdl_int_source_reg_t;
 
 #define LIS2MDL_INT_THS_L_REG           0x65U
 #define LIS2MDL_INT_THS_H_REG           0x66U
 #define LIS2MDL_STATUS_REG              0x67U
 typedef struct {
-  uint8_t xda                    : 1;
-  uint8_t yda                    : 1;
-  uint8_t zda                    : 1;
-  uint8_t zyxda                  : 1;
-  uint8_t xior                   : 1;  //changed as xor is a reserved word in c++
-  uint8_t yor                    : 1;
-  uint8_t zor                    : 1;
-  uint8_t zyxor                  : 1;
+    uint8_t xda                    : 1;
+    uint8_t yda                    : 1;
+    uint8_t zda                    : 1;
+    uint8_t zyxda                  : 1;
+    uint8_t xior                   : 1;  //changed as xor is a reserved word in c++
+    uint8_t yor                    : 1;
+    uint8_t zor                    : 1;
+    uint8_t zyxor                  : 1;
 } lis2mdl_status_reg_t;
 
 #define LIS2MDL_OUTX_L_REG              0x68U
@@ -258,15 +258,15 @@
   * @{
   *
   */
-typedef union{
-  lis2mdl_cfg_reg_a_t            cfg_reg_a;
-  lis2mdl_cfg_reg_b_t            cfg_reg_b;
-  lis2mdl_cfg_reg_c_t            cfg_reg_c;
-  lis2mdl_int_crtl_reg_t         int_crtl_reg;
-  lis2mdl_int_source_reg_t       int_source_reg;
-  lis2mdl_status_reg_t           status_reg;
-  bitwise_t                      bitwise;
-  uint8_t                        byte;
+typedef union {
+    lis2mdl_cfg_reg_a_t            cfg_reg_a;
+    lis2mdl_cfg_reg_b_t            cfg_reg_b;
+    lis2mdl_cfg_reg_c_t            cfg_reg_c;
+    lis2mdl_int_crtl_reg_t         int_crtl_reg;
+    lis2mdl_int_source_reg_t       int_source_reg;
+    lis2mdl_status_reg_t           status_reg;
+    bitwise_t                      bitwise;
+    uint8_t                        byte;
 } lis2mdl_reg_t;
 
 /**
@@ -274,11 +274,11 @@
   *
   */
 
-int32_t lis2mdl_read_reg(lis2mdl_ctx_t *ctx, uint8_t reg, uint8_t* data,
+int32_t lis2mdl_read_reg(lis2mdl_ctx_t *ctx, uint8_t reg, uint8_t *data,
                          uint16_t len);
-int32_t lis2mdl_write_reg(lis2mdl_ctx_t *ctx, uint8_t reg, uint8_t* data,
+int32_t lis2mdl_write_reg(lis2mdl_ctx_t *ctx, uint8_t reg, uint8_t *data,
                           uint16_t len);
-                          
+
 extern float_t lis2mdl_from_lsb_to_mgauss(int16_t lsb);
 extern float_t lis2mdl_from_lsb_to_celsius(int16_t lsb);
 
@@ -286,25 +286,25 @@
 int32_t lis2mdl_mag_user_offset_get(lis2mdl_ctx_t *ctx, uint8_t *buff);
 
 typedef enum {
-  LIS2MDL_CONTINUOUS_MODE  = 0,
-  LIS2MDL_SINGLE_TRIGGER   = 1,
-  LIS2MDL_POWER_DOWN       = 2,
+    LIS2MDL_CONTINUOUS_MODE  = 0,
+    LIS2MDL_SINGLE_TRIGGER   = 1,
+    LIS2MDL_POWER_DOWN       = 2,
 } lis2mdl_md_t;
 int32_t lis2mdl_operating_mode_set(lis2mdl_ctx_t *ctx, lis2mdl_md_t val);
 int32_t lis2mdl_operating_mode_get(lis2mdl_ctx_t *ctx, lis2mdl_md_t *val);
 
 typedef enum {
-  LIS2MDL_ODR_10Hz   = 0,
-  LIS2MDL_ODR_20Hz   = 1,
-  LIS2MDL_ODR_50Hz   = 2,
-  LIS2MDL_ODR_100Hz  = 3,
+    LIS2MDL_ODR_10Hz   = 0,
+    LIS2MDL_ODR_20Hz   = 1,
+    LIS2MDL_ODR_50Hz   = 2,
+    LIS2MDL_ODR_100Hz  = 3,
 } lis2mdl_odr_t;
 int32_t lis2mdl_data_rate_set(lis2mdl_ctx_t *ctx, lis2mdl_odr_t val);
 int32_t lis2mdl_data_rate_get(lis2mdl_ctx_t *ctx, lis2mdl_odr_t *val);
 
 typedef enum {
-  LIS2MDL_HIGH_RESOLUTION  = 0,
-  LIS2MDL_LOW_POWER        = 1,
+    LIS2MDL_HIGH_RESOLUTION  = 0,
+    LIS2MDL_LOW_POWER        = 1,
 } lis2mdl_lp_t;
 int32_t lis2mdl_power_mode_set(lis2mdl_ctx_t *ctx, lis2mdl_lp_t val);
 int32_t lis2mdl_power_mode_get(lis2mdl_ctx_t *ctx, lis2mdl_lp_t *val);
@@ -313,8 +313,8 @@
 int32_t lis2mdl_offset_temp_comp_get(lis2mdl_ctx_t *ctx, uint8_t *val);
 
 typedef enum {
-  LIS2MDL_ODR_DIV_2  = 0,
-  LIS2MDL_ODR_DIV_4  = 1,
+    LIS2MDL_ODR_DIV_2  = 0,
+    LIS2MDL_ODR_DIV_4  = 1,
 } lis2mdl_lpf_t;
 int32_t lis2mdl_low_pass_bandwidth_set(lis2mdl_ctx_t *ctx,
                                        lis2mdl_lpf_t val);
@@ -322,9 +322,9 @@
                                        lis2mdl_lpf_t *val);
 
 typedef enum {
-  LIS2MDL_SET_SENS_ODR_DIV_63        = 0,
-  LIS2MDL_SENS_OFF_CANC_EVERY_ODR    = 1,
-  LIS2MDL_SET_SENS_ONLY_AT_POWER_ON  = 2,
+    LIS2MDL_SET_SENS_ODR_DIV_63        = 0,
+    LIS2MDL_SENS_OFF_CANC_EVERY_ODR    = 1,
+    LIS2MDL_SET_SENS_ONLY_AT_POWER_ON  = 2,
 } lis2mdl_set_rst_t;
 int32_t lis2mdl_set_rst_mode_set(lis2mdl_ctx_t *ctx,
                                  lis2mdl_set_rst_t val);
@@ -359,8 +359,8 @@
 int32_t lis2mdl_self_test_get(lis2mdl_ctx_t *ctx, uint8_t *val);
 
 typedef enum {
-  LIS2MDL_LSB_AT_LOW_ADD  = 0,
-  LIS2MDL_MSB_AT_LOW_ADD  = 1,
+    LIS2MDL_LSB_AT_LOW_ADD  = 0,
+    LIS2MDL_MSB_AT_LOW_ADD  = 1,
 } lis2mdl_ble_t;
 int32_t lis2mdl_data_format_set(lis2mdl_ctx_t *ctx, lis2mdl_ble_t val);
 int32_t lis2mdl_data_format_get(lis2mdl_ctx_t *ctx, lis2mdl_ble_t *val);
@@ -368,8 +368,8 @@
 int32_t lis2mdl_status_get(lis2mdl_ctx_t *ctx, lis2mdl_status_reg_t *val);
 
 typedef enum {
-  LIS2MDL_CHECK_BEFORE  = 0,
-  LIS2MDL_CHECK_AFTER   = 1,
+    LIS2MDL_CHECK_BEFORE  = 0,
+    LIS2MDL_CHECK_AFTER   = 1,
 } lis2mdl_int_on_dataoff_t;
 int32_t lis2mdl_offset_int_conf_set(lis2mdl_ctx_t *ctx,
                                     lis2mdl_int_on_dataoff_t val);
@@ -394,8 +394,8 @@
 int32_t lis2mdl_int_gen_treshold_get(lis2mdl_ctx_t *ctx, uint8_t *buff);
 
 typedef enum {
-  LIS2MDL_I2C_ENABLE   = 0,
-  LIS2MDL_I2C_DISABLE  = 1,
+    LIS2MDL_I2C_ENABLE   = 0,
+    LIS2MDL_I2C_DISABLE  = 1,
 } lis2mdl_i2c_dis_t;
 int32_t lis2mdl_i2c_interface_set(lis2mdl_ctx_t *ctx,
                                   lis2mdl_i2c_dis_t val);