LibDriver BMM150
Loading...
Searching...
No Matches
driver_bmm150_shot.c
Go to the documentation of this file.
1
36
37#include "driver_bmm150_shot.h"
38
39static bmm150_handle_t gs_handle;
40
51{
52 uint8_t res;
53
54 /* link interface function */
67
68 /* set the interface */
69 res = bmm150_set_interface(&gs_handle, interface);
70 if (res != 0)
71 {
72 bmm150_interface_debug_print("bmm150: set interface failed.\n");
73
74 return 1;
75 }
76
77 /* set addr pin */
78 res = bmm150_set_addr_pin(&gs_handle, addr_pin);
79 if (res != 0)
80 {
81 bmm150_interface_debug_print("bmm150: set addr pin failed.\n");
82
83 return 1;
84 }
85 /* set the interface */
86 res = bmm150_set_interface(&gs_handle, interface);
87 if (res != 0)
88 {
89 bmm150_interface_debug_print("bmm150: set interface failed.\n");
90
91 return 1;
92 }
93
94 /* set addr pin */
95 res = bmm150_set_addr_pin(&gs_handle, addr_pin);
96 if (res != 0)
97 {
98 bmm150_interface_debug_print("bmm150: set addr pin failed.\n");
99
100 return 1;
101 }
102
103 /* bmm150 initialization */
104 res = bmm150_init(&gs_handle);
105 if (res != 0)
106 {
107 bmm150_interface_debug_print("bmm150: init failed.\n");
108
109 return 1;
110 }
111
112 /* power on */
113 res = bmm150_set_power_on(&gs_handle, BMM150_BOOL_TRUE);
114 if (res != 0)
115 {
116 bmm150_interface_debug_print("bmm150: set power on failed.\n");
117 (void)bmm150_deinit(&gs_handle);
118
119 return 1;
120 }
121
122 /* set advanced self test normal mode */
124 if (res != 0)
125 {
126 bmm150_interface_debug_print("bmm150: set advanced self test failed.\n");
127 (void)bmm150_deinit(&gs_handle);
128
129 return 1;
130 }
131
132 /* disable self test */
133 res = bmm150_set_self_test(&gs_handle, BMM150_BOOL_FALSE);
134 if (res != 0)
135 {
136 bmm150_interface_debug_print("bmm150: set self test failed.\n");
137 (void)bmm150_deinit(&gs_handle);
138
139 return 1;
140 }
141
142 /* disable data overrun */
144 if (res != 0)
145 {
146 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
147 (void)bmm150_deinit(&gs_handle);
148
149 return 1;
150 }
151
152 /* disable overflow */
154 if (res != 0)
155 {
156 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
157 (void)bmm150_deinit(&gs_handle);
158
159 return 1;
160 }
161
162 /* disable high threshold z */
164 if (res != 0)
165 {
166 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
167 (void)bmm150_deinit(&gs_handle);
168
169 return 1;
170 }
171
172 /* disable high threshold y */
174 if (res != 0)
175 {
176 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
177 (void)bmm150_deinit(&gs_handle);
178
179 return 1;
180 }
181
182 /* disable high threshold x */
184 if (res != 0)
185 {
186 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
187 (void)bmm150_deinit(&gs_handle);
188
189 return 1;
190 }
191
192 /* disable low threshold z */
194 if (res != 0)
195 {
196 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
197 (void)bmm150_deinit(&gs_handle);
198
199 return 1;
200 }
201
202 /* disable low threshold y */
204 if (res != 0)
205 {
206 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
207 (void)bmm150_deinit(&gs_handle);
208
209 return 1;
210 }
211
212 /* disable low threshold x */
214 if (res != 0)
215 {
216 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
217 (void)bmm150_deinit(&gs_handle);
218
219 return 1;
220 }
221
222 /* disable data ready pin */
224 if (res != 0)
225 {
226 bmm150_interface_debug_print("bmm150: set data ready pin failed.\n");
227 (void)bmm150_deinit(&gs_handle);
228
229 return 1;
230 }
231
232 /* disable interrupt pin */
234 if (res != 0)
235 {
236 bmm150_interface_debug_print("bmm150: set interrupt pin failed.\n");
237 (void)bmm150_deinit(&gs_handle);
238
239 return 1;
240 }
241
242 /* enable channel z */
243 res = bmm150_set_channel_z(&gs_handle, BMM150_BOOL_TRUE);
244 if (res != 0)
245 {
246 bmm150_interface_debug_print("bmm150: set channel z failed.\n");
247 (void)bmm150_deinit(&gs_handle);
248
249 return 1;
250 }
251
252 /* enable channel y */
253 res = bmm150_set_channel_y(&gs_handle, BMM150_BOOL_TRUE);
254 if (res != 0)
255 {
256 bmm150_interface_debug_print("bmm150: set channel y failed.\n");
257 (void)bmm150_deinit(&gs_handle);
258
259 return 1;
260 }
261
262 /* enable channel x */
263 res = bmm150_set_channel_x(&gs_handle, BMM150_BOOL_TRUE);
264 if (res != 0)
265 {
266 bmm150_interface_debug_print("bmm150: set channel x failed.\n");
267 (void)bmm150_deinit(&gs_handle);
268
269 return 1;
270 }
271
272 /* set default repxy number */
274 if (res != 0)
275 {
276 bmm150_interface_debug_print("bmm150: set repxy number failed.\n");
277 (void)bmm150_deinit(&gs_handle);
278
279 return 1;
280 }
281
282 /* set default repz number */
284 if (res != 0)
285 {
286 bmm150_interface_debug_print("bmm150: set repz number failed.\n");
287 (void)bmm150_deinit(&gs_handle);
288
289 return 1;
290 }
291
292 /* set default data rate */
294 if (res != 0)
295 {
296 bmm150_interface_debug_print("bmm150: set data rate failed.\n");
297 (void)bmm150_deinit(&gs_handle);
298
299 return 1;
300 }
301
302 /* set sleep mode */
303 res = bmm150_set_mode(&gs_handle, BMM150_MODE_SLEEP);
304 if (res != 0)
305 {
306 bmm150_interface_debug_print("bmm150: set mode failed.\n");
307 (void)bmm150_deinit(&gs_handle);
308
309 return 1;
310 }
311
312 return 0;
313}
314
323uint8_t bmm150_shot_read(float ut[3])
324{
325 int16_t raw[3];
326
327 /* read data */
328 if (bmm150_read(&gs_handle, raw, ut) != 0)
329 {
330 return 1;
331 }
332
333 return 0;
334}
335
344{
345 /* deinit */
346 if (bmm150_deinit(&gs_handle) != 0)
347 {
348 return 1;
349 }
350
351 return 0;
352}
driver bmm150 shot header file
uint8_t bmm150_deinit(bmm150_handle_t *handle)
close the chip
uint8_t bmm150_init(bmm150_handle_t *handle)
initialize the chip
uint8_t bmm150_set_data_ready_pin(bmm150_handle_t *handle, bmm150_bool_t enable)
enable or disable data ready pin
uint8_t bmm150_set_repz_number(bmm150_handle_t *handle, uint8_t number)
set repz number
uint8_t bmm150_set_interrupt_pin(bmm150_handle_t *handle, bmm150_bool_t enable)
enable or disable interrupt pin
uint8_t bmm150_set_addr_pin(bmm150_handle_t *handle, bmm150_address_t addr_pin)
set the iic address pin
uint8_t bmm150_set_advanced_self_test(bmm150_handle_t *handle, bmm150_advanced_self_test_t test)
set advanced self test
uint8_t bmm150_set_interface(bmm150_handle_t *handle, bmm150_interface_t interface)
set the chip interface
bmm150_interface_t
bmm150 interface enumeration definition
uint8_t bmm150_set_channel_y(bmm150_handle_t *handle, bmm150_bool_t enable)
enable or disable channel y
uint8_t bmm150_set_mode(bmm150_handle_t *handle, bmm150_mode_t mode)
set mode
uint8_t bmm150_set_power_on(bmm150_handle_t *handle, bmm150_bool_t enable)
set power on
struct bmm150_handle_s bmm150_handle_t
bmm150 handle structure definition
uint8_t bmm150_set_self_test(bmm150_handle_t *handle, bmm150_bool_t enable)
enable or disable self test
uint8_t bmm150_read(bmm150_handle_t *handle, int16_t raw[3], float ut[3])
read data
uint8_t bmm150_set_channel_z(bmm150_handle_t *handle, bmm150_bool_t enable)
enable or disable channel z
uint8_t bmm150_set_repxy_number(bmm150_handle_t *handle, uint8_t number)
set repxy number
bmm150_address_t
bmm150 address enumeration definition
uint8_t bmm150_set_interrupt(bmm150_handle_t *handle, bmm150_interrupt_status_t status, bmm150_bool_t enable)
enable or disable interrupt
uint8_t bmm150_set_data_rate(bmm150_handle_t *handle, bmm150_data_rate_t rate)
set data rate
uint8_t bmm150_set_channel_x(bmm150_handle_t *handle, bmm150_bool_t enable)
enable or disable channel x
@ BMM150_INTERRUPT_STATUS_HIGH_THRESHOLD_Z
@ BMM150_INTERRUPT_STATUS_LOW_THRESHOLD_Y
@ BMM150_INTERRUPT_STATUS_OVERFLOW
@ BMM150_INTERRUPT_STATUS_HIGH_THRESHOLD_Y
@ BMM150_INTERRUPT_STATUS_DATA_OVERRUN
@ BMM150_INTERRUPT_STATUS_LOW_THRESHOLD_X
@ BMM150_INTERRUPT_STATUS_HIGH_THRESHOLD_X
@ BMM150_INTERRUPT_STATUS_LOW_THRESHOLD_Z
@ BMM150_BOOL_FALSE
@ BMM150_BOOL_TRUE
@ BMM150_ADVANCED_SELF_TEST_NORMAL
@ BMM150_MODE_SLEEP
uint8_t bmm150_shot_init(bmm150_interface_t interface, bmm150_address_t addr_pin)
shot example init
uint8_t bmm150_shot_read(float ut[3])
shot example read
uint8_t bmm150_shot_deinit(void)
shot example deinit
#define BMM150_SHOT_DEFAULT_DATA_RATE
#define BMM150_SHOT_DEFAULT_REPZ
#define BMM150_SHOT_DEFAULT_REPXY
bmm150 shot example default definition
uint8_t bmm150_interface_spi_init(void)
interface spi bus init
uint8_t bmm150_interface_spi_read(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus read
uint8_t bmm150_interface_spi_write(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus write
uint8_t bmm150_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
void bmm150_interface_receive_callback(uint8_t type)
interface receive callback
uint8_t bmm150_interface_iic_init(void)
interface iic bus init
uint8_t bmm150_interface_spi_deinit(void)
interface spi bus deinit
uint8_t bmm150_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t bmm150_interface_iic_deinit(void)
interface iic bus deinit
void bmm150_interface_debug_print(const char *const fmt,...)
interface print format data
void bmm150_interface_delay_ms(uint32_t ms)
interface delay ms