33 #define LSM303D_DEFAULT_I2C_BUS 0 
   34 #define LSM303D_DEFAULT_I2C_ADDR 0x1e 
   37 #define LSM303D_CHIPID 0x49 
   58         LSM303D_REG_TEMP_OUT_L                   = 0x05,
 
   59         LSM303D_REG_TEMP_OUT_H                   = 0x06,
 
   61         LSM303D_REG_STATUS_M                     = 0x07,
 
   63         LSM303D_REG_OUT_X_L_M                    = 0x08,
 
   64         LSM303D_REG_OUT_X_H_M                    = 0x09,
 
   65         LSM303D_REG_OUT_Y_L_M                    = 0x0a,
 
   66         LSM303D_REG_OUT_Y_H_M                    = 0x0b,
 
   67         LSM303D_REG_OUT_Z_L_M                    = 0x0c,
 
   68         LSM303D_REG_OUT_Z_H_M                    = 0x0d,
 
   72         LSM303D_REG_WHO_AM_I                     = 0x0f,
 
   76         LSM303D_REG_INT_CTRL_M                   = 0x12,
 
   77         LSM303D_REG_INT_SRC_M                    = 0x13,
 
   78         LSM303D_REG_INT_THS_L_M                  = 0x14,
 
   79         LSM303D_REG_INT_THS_H_M                  = 0x15,
 
   81         LSM303D_REG_OFFSET_X_L_M                 = 0x16,
 
   82         LSM303D_REG_OFFSET_X_H_M                 = 0x17,
 
   83         LSM303D_REG_OFFSET_Y_L_M                 = 0x18,
 
   84         LSM303D_REG_OFFSET_Y_H_M                 = 0x19,
 
   85         LSM303D_REG_OFFSET_Z_L_M                 = 0x1a,
 
   86         LSM303D_REG_OFFSET_Z_H_M                 = 0x1b,
 
   88         LSM303D_REG_REFERENCE_X                  = 0x1c,
 
   89         LSM303D_REG_REFERENCE_Y                  = 0x1d,
 
   90         LSM303D_REG_REFERENCE_Z                  = 0x1e,
 
   92         LSM303D_REG_CTRL0                        = 0x1f,
 
   93         LSM303D_REG_CTRL1                        = 0x20,
 
   94         LSM303D_REG_CTRL2                        = 0x21,
 
   95         LSM303D_REG_CTRL3                        = 0x22,
 
   96         LSM303D_REG_CTRL4                        = 0x23,
 
   97         LSM303D_REG_CTRL5                        = 0x24,
 
   98         LSM303D_REG_CTRL6                        = 0x25,
 
   99         LSM303D_REG_CTRL7                        = 0x26,
 
  101         LSM303D_REG_STATUS_A                     = 0x27,
 
  103         LSM303D_REG_OUT_X_L_A                    = 0x28,
 
  104         LSM303D_REG_OUT_X_H_A                    = 0x29,
 
  105         LSM303D_REG_OUT_Y_L_A                    = 0x2a,
 
  106         LSM303D_REG_OUT_Y_H_A                    = 0x2b,
 
  107         LSM303D_REG_OUT_Z_L_A                    = 0x2c,
 
  108         LSM303D_REG_OUT_Z_H_A                    = 0x2d,
 
  110         LSM303D_REG_FIFO_CTRL                    = 0x2e,
 
  111         LSM303D_REG_FIFO_SRC                     = 0x2f,
 
  113         LSM303D_REG_IG_CFG1                      = 0x30,
 
  114         LSM303D_REG_IG_SRC1                      = 0x31,
 
  115         LSM303D_REG_IG_THS1                      = 0x32,
 
  116         LSM303D_REG_IG_DUR1                      = 0x33,
 
  117         LSM303D_REG_IG_CFG2                      = 0x34,
 
  118         LSM303D_REG_IG_SRC2                      = 0x35,
 
  119         LSM303D_REG_IG_THS2                      = 0x36,
 
  120         LSM303D_REG_IG_DUR2                      = 0x37,
 
  122         LSM303D_REG_CLICK_CFG                    = 0x38,
 
  123         LSM303D_REG_CLICK_SRC                    = 0x39,
 
  124         LSM303D_REG_CLICK_THS                    = 0x3a,
 
  126         LSM303D_REG_TIME_LIMIT                   = 0x3b,
 
  127         LSM303D_REG_TIME_LATENCY                 = 0x3c,
 
  128         LSM303D_REG_TIME_WINDOW                  = 0x3d,
 
  130         LSM303D_REG_ACT_THS                      = 0x3e,
 
  131         LSM303D_REG_ACT_DUR                      = 0x3f,
 
  140         LSM303D_CTRL1_AXEN                       = 0x01, 
 
  141         LSM303D_CTRL1_AYEN                       = 0x02,
 
  142         LSM303D_CTRL1_AZEN                       = 0x04,
 
  144         LSM303D_CTRL1_BDU                        = 0x08,
 
  146         LSM303D_CTRL1_AODR0                      = 0x10,
 
  147         LSM303D_CTRL1_AODR1                      = 0x20,
 
  148         LSM303D_CTRL1_AODR2                      = 0x40,
 
  149         LSM303D_CTRL1_AODR3                      = 0x80,
 
  150         _LSM303D_CTRL1_AODR_MASK                 = 15,
 
  151         _LSM303D_CTRL1_AODR_SHIFT                = 4,
 
  152     } LSM303D_CTRL1_BITS_T;
 
  158         LSM303D_AODR_POWER_DOWN                 = 0,
 
  159         LSM303D_AODR_3_125HZ                    = 1, 
 
  160         LSM303D_AODR_6_25HZ                     = 2,
 
  161         LSM303D_AODR_12_5HZ                     = 3,
 
  162         LSM303D_AODR_25HZ                       = 4,
 
  163         LSM303D_AODR_50HZ                       = 5,
 
  164         LSM303D_AODR_100HZ                      = 6,
 
  165         LSM303D_AODR_200HZ                      = 7,
 
  166         LSM303D_AODR_400HZ                      = 8,
 
  167         LSM303D_AODR_800HZ                      = 9,
 
  168         LSM303D_AODR_1600HZ                     = 10,
 
  175         LSM303D_CTRL2_SIM                        = 0x01,
 
  176         LSM303D_CTRL2_AST                        = 0x02,
 
  180         LSM303D_CTRL2_AFS0                       = 0x08, 
 
  181         LSM303D_CTRL2_AFS1                       = 0x10,
 
  182         LSM303D_CTRL2_AFS2                       = 0x20,
 
  183         _LSM303D_CTRL2_AFS_MASK                  = 7,
 
  184         _LSM303D_CTRL2_AFS_SHIFT                 = 3,
 
  186         LSM303D_CTRL2_ABW0                       = 0x40,
 
  187         LSM303D_CTRL2_ABW1                       = 0x80,
 
  188         _LSM303D_CTRL2_ABW_MASK                  = 3,
 
  189         _LSM303D_CTRL2_ABW_SHIFT                 = 6,
 
  190     } LSM303D_CTRL2_BITS_T;
 
  207         LSM303D_CTRL5_LIR1                       = 0x01,
 
  208         LSM303D_CTRL5_LIR2                       = 0x02,
 
  210         LSM303D_CTRL5_MODR0                      = 0x04, 
 
  211         LSM303D_CTRL5_MODR1                      = 0x08,
 
  212         LSM303D_CTRL5_MODR2                      = 0x10,
 
  213         _LSM303D_CTRL5_MODR_MASK                 = 7,
 
  214         _LSM303D_CTRL5_MODR_SHIFT                = 2,
 
  216         LSM303D_CTRL5_M_RES0                     = 0x20, 
 
  217         LSM303D_CTRL5_M_RES1                     = 0x40,
 
  218         _LSM303D_CTRL5_MRES_MASK                 = 3,
 
  219         _LSM303D_CTRL5_MRES_SHIFT                = 6,
 
  221         LSM303D_CTRL5_TEMP_EN                    = 0x80,
 
  222     } LSM303D_CTRL5_BITS_T;
 
  228         LSM303D_MODR_3_125HZ                     = 0, 
 
  229         LSM303D_MODR_6_25HZ                      = 1,
 
  230         LSM303D_MODR_12_5HZ                      = 2,
 
  231         LSM303D_MODR_25HZ                        = 3,
 
  232         LSM303D_MODR_50HZ                        = 4,
 
  233         LSM303D_MODR_100HZ                       = 5,
 
  240         LSM303D_M_RES_LOW                        = 0,
 
  241         LSM303D_M_RES_HIGH                       = 3,
 
  250         LSM303D_CTRL6_MFS0                       = 0x20,
 
  251         LSM303D_CTRL6_MFS1                       = 0x40,
 
  252         _LSM303D_CTRL6_MFS_MASK                  = 3,
 
  253         _LSM303D_CTRL6_MFS_SHIFT                 = 5,
 
  256     } LSM303D_CTRL6_BITS_T;
 
  272         LSM303D_CTRL7_MD0                        = 0x01,
 
  273         LSM303D_CTRL7_MD1                        = 0x02,
 
  274         _LSM303D_CTRL7_MD_MASK                   = 3,
 
  275         _LSM303D_CTRL7_MD_SHIFT                  = 0,
 
  277         LSM303D_CTRL7_MLP                        = 0x04,
 
  281         LSM303D_CTRL7_T_ONLY                     = 0x10,
 
  282         LSM303D_CTRL7_AFDS                       = 0x20,
 
  284         LSM303D_CTRL7_AHPM0                      = 0x40,
 
  285         LSM303D_CTRL7_AHPM1                      = 0x80,
 
  286         _LSM303D_CTRL7_AHPM_MASK                 = 3,
 
  287         _LSM303D_CTRL7_AHPM_SHIFT                = 6,
 
  288     } LSM303D_CTRL7_BITS_T;
 
  294         LSM303D_MD_CONTINUOUS                    = 0,
 
  295         LSM303D_MD_SINGLE                        = 1,
 
  296         LSM303D_MD_POWER_DOWN                    = 3,