|
51 | 51 | LSM303AGR_ACC_Sensor::LSM303AGR_ACC_Sensor(TwoWire *i2c) : dev_i2c(i2c) |
52 | 52 | { |
53 | 53 | address = LSM303AGR_ACC_I2C_ADDRESS; |
54 | | - |
| 54 | + isEnabled = 0; |
| 55 | +} |
| 56 | + |
| 57 | +/** |
| 58 | + * @brief Configure the sensor in order to be used |
| 59 | + * @retval 0 in case of success, an error code otherwise |
| 60 | + */ |
| 61 | +LSM303AGR_ACC_StatusTypeDef LSM303AGR_ACC_Sensor::begin(void) |
| 62 | +{ |
55 | 63 | /* Enable BDU */ |
56 | 64 | if ( LSM303AGR_ACC_W_BlockDataUpdate( (void *)this, LSM303AGR_ACC_BDU_ENABLED ) == MEMS_ERROR ) |
57 | 65 | { |
58 | | - return; |
| 66 | + return LSM303AGR_ACC_STATUS_ERROR; |
59 | 67 | } |
60 | 68 |
|
61 | 69 | /* FIFO mode selection */ |
62 | 70 | if ( LSM303AGR_ACC_W_FifoMode( (void *)this, LSM303AGR_ACC_FM_BYPASS ) == MEMS_ERROR ) |
63 | 71 | { |
64 | | - return; |
| 72 | + return LSM303AGR_ACC_STATUS_ERROR; |
65 | 73 | } |
66 | 74 |
|
67 | 75 | /* Output data rate selection - power down. */ |
68 | 76 | if ( LSM303AGR_ACC_W_ODR( (void *)this, LSM303AGR_ACC_ODR_DO_PWR_DOWN ) == MEMS_ERROR ) |
69 | 77 | { |
70 | | - return; |
| 78 | + return LSM303AGR_ACC_STATUS_ERROR; |
71 | 79 | } |
72 | 80 |
|
73 | 81 | /* Full scale selection. */ |
74 | 82 | if ( SetFS( 2.0f ) == LSM303AGR_ACC_STATUS_ERROR ) |
75 | 83 | { |
76 | | - return; |
| 84 | + return LSM303AGR_ACC_STATUS_ERROR; |
77 | 85 | } |
78 | 86 |
|
79 | 87 | /* Enable axes. */ |
80 | 88 | if ( LSM303AGR_ACC_W_XEN( (void *)this, LSM303AGR_ACC_XEN_ENABLED ) == MEMS_ERROR ) |
81 | 89 | { |
82 | | - return; |
| 90 | + return LSM303AGR_ACC_STATUS_ERROR; |
83 | 91 | } |
84 | 92 |
|
85 | 93 | if ( LSM303AGR_ACC_W_YEN ( (void *)this, LSM303AGR_ACC_YEN_ENABLED ) == MEMS_ERROR ) |
86 | 94 | { |
87 | | - return; |
| 95 | + return LSM303AGR_ACC_STATUS_ERROR; |
88 | 96 | } |
89 | 97 |
|
90 | 98 | if ( LSM303AGR_ACC_W_ZEN ( (void *)this, LSM303AGR_ACC_ZEN_ENABLED ) == MEMS_ERROR ) |
91 | 99 | { |
92 | | - return; |
| 100 | + return LSM303AGR_ACC_STATUS_ERROR; |
93 | 101 | } |
94 | 102 |
|
95 | 103 | /* Select default output data rate. */ |
96 | 104 | Last_ODR = 100.0f; |
97 | 105 |
|
98 | 106 | isEnabled = 0; |
99 | | -}; |
100 | 107 |
|
101 | | -/** Constructor |
102 | | - * @param i2c object of an helper class which handles the I2C peripheral |
103 | | - * @param address the address of the component's instance |
| 108 | + return LSM303AGR_ACC_STATUS_OK; |
| 109 | +} |
| 110 | + |
| 111 | +/** |
| 112 | + * @brief Disable the sensor and relative resources |
| 113 | + * @retval 0 in case of success, an error code otherwise |
104 | 114 | */ |
105 | | -LSM303AGR_ACC_Sensor::LSM303AGR_ACC_Sensor(TwoWire *i2c, uint8_t address) : dev_i2c(i2c), address(address) |
| 115 | +LSM303AGR_ACC_StatusTypeDef LSM303AGR_ACC_Sensor::end(void) |
106 | 116 | { |
107 | | - /* Enable BDU */ |
108 | | - if ( LSM303AGR_ACC_W_BlockDataUpdate( (void *)this, LSM303AGR_ACC_BDU_ENABLED ) == MEMS_ERROR ) |
109 | | - { |
110 | | - return; |
111 | | - } |
112 | | - |
113 | | - /* FIFO mode selection */ |
114 | | - if ( LSM303AGR_ACC_W_FifoMode( (void *)this, LSM303AGR_ACC_FM_BYPASS ) == MEMS_ERROR ) |
115 | | - { |
116 | | - return; |
117 | | - } |
118 | | - |
119 | | - /* Output data rate selection - power down. */ |
120 | | - if ( LSM303AGR_ACC_W_ODR( (void *)this, LSM303AGR_ACC_ODR_DO_PWR_DOWN ) == MEMS_ERROR ) |
121 | | - { |
122 | | - return; |
123 | | - } |
124 | | - |
125 | | - /* Full scale selection. */ |
126 | | - if ( SetFS( 2.0f ) == LSM303AGR_ACC_STATUS_ERROR ) |
127 | | - { |
128 | | - return; |
129 | | - } |
130 | | - |
131 | | - /* Enable axes. */ |
132 | | - if ( LSM303AGR_ACC_W_XEN( (void *)this, LSM303AGR_ACC_XEN_ENABLED ) == MEMS_ERROR ) |
133 | | - { |
134 | | - return; |
135 | | - } |
136 | | - |
137 | | - if ( LSM303AGR_ACC_W_YEN ( (void *)this, LSM303AGR_ACC_YEN_ENABLED ) == MEMS_ERROR ) |
138 | | - { |
139 | | - return; |
140 | | - } |
141 | | - |
142 | | - if ( LSM303AGR_ACC_W_ZEN ( (void *)this, LSM303AGR_ACC_ZEN_ENABLED ) == MEMS_ERROR ) |
| 117 | + if(Disable() != LSM303AGR_ACC_STATUS_OK) |
143 | 118 | { |
144 | | - return; |
| 119 | + return LSM303AGR_ACC_STATUS_ERROR; |
145 | 120 | } |
146 | | - |
147 | | - /* Select default output data rate. */ |
148 | | - Last_ODR = 100.0f; |
149 | | - |
150 | | - isEnabled = 0; |
151 | | -}; |
| 121 | + |
| 122 | + return LSM303AGR_ACC_STATUS_OK; |
| 123 | +} |
152 | 124 |
|
153 | 125 | /** |
154 | 126 | * @brief Enable LSM303AGR Accelerator |
|
0 commit comments