LibDriver BMM150
Loading...
Searching...
No Matches
driver_bmm150_register_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static bmm150_handle_t gs_handle;
41
52{
53 uint8_t res;
54 uint8_t reg;
55 uint8_t reg_check;
56 int8_t reg2;
57 int8_t reg2_check;
58 float ut;
59 float ut_check;
60 bmm150_interface_t interface_test;
61 bmm150_address_t addr_check;
62 bmm150_info_t info;
63 bmm150_bool_t enable;
67 bmm150_mode_t mode;
68 bmm150_data_ready_pin_polarity_t ready_pin_polarity;
69 bmm150_interrupt_pin_polarity_t interrupt_pin_polarity;
70
71 /* link interface function */
84
85 /* get information */
86 res = bmm150_info(&info);
87 if (res != 0)
88 {
89 bmm150_interface_debug_print("bmm150: get info failed.\n");
90
91 return 1;
92 }
93 else
94 {
95 /* print chip info */
96 bmm150_interface_debug_print("bmm150: chip is %s.\n", info.chip_name);
97 bmm150_interface_debug_print("bmm150: manufacturer is %s.\n", info.manufacturer_name);
98 bmm150_interface_debug_print("bmm150: interface is %s.\n", info.interface);
99 bmm150_interface_debug_print("bmm150: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
100 bmm150_interface_debug_print("bmm150: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
101 bmm150_interface_debug_print("bmm150: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
102 bmm150_interface_debug_print("bmm150: max current is %0.2fmA.\n", info.max_current_ma);
103 bmm150_interface_debug_print("bmm150: max temperature is %0.1fC.\n", info.temperature_max);
104 bmm150_interface_debug_print("bmm150: min temperature is %0.1fC.\n", info.temperature_min);
105 }
106
107 /* start register test */
108 bmm150_interface_debug_print("bmm150: start register test.\n");
109
110 /* bmm150_set_interface/bmm150_get_interface test */
111 bmm150_interface_debug_print("bmm150: bmm150_set_interface/bmm150_get_interface test.\n");
112
113 /* set IIC interface */
115 if (res != 0)
116 {
117 bmm150_interface_debug_print("bmm150: set interface failed.\n");
118
119 return 1;
120 }
121 bmm150_interface_debug_print("bmm150: set interface iic.\n");
122 res = bmm150_get_interface(&gs_handle, &interface_test);
123 if (res != 0)
124 {
125 bmm150_interface_debug_print("bmm150: get interface failed.\n");
126
127 return 1;
128 }
129 bmm150_interface_debug_print("bmm150: check interface %s.\n", (interface_test == BMM150_INTERFACE_IIC) ? "ok" : "error");
130
131 /* set SPI interface */
133 if (res != 0)
134 {
135 bmm150_interface_debug_print("bmm150: set interface failed.\n");
136
137 return 1;
138 }
139 bmm150_interface_debug_print("bmm150: set interface spi.\n");
140 res = bmm150_get_interface(&gs_handle, &interface_test);
141 if (res != 0)
142 {
143 bmm150_interface_debug_print("bmm150: get interface failed.\n");
144
145 return 1;
146 }
147 bmm150_interface_debug_print("bmm150: check interface %s.\n", (interface_test == BMM150_INTERFACE_SPI) ? "ok" : "error");
148
149 /* bmm150_set_addr_pin/bmm150_get_addr_pin test */
150 bmm150_interface_debug_print("bmm150: bmm150_set_addr_pin/bmm150_get_addr_pin test.\n");
151
152 /* set addr csb sdo 00 */
154 if (res != 0)
155 {
156 bmm150_interface_debug_print("bmm150: set addr pin failed.\n");
157
158 return 1;
159 }
160 bmm150_interface_debug_print("bmm150: set addr csb sdo 00.\n");
161 res = bmm150_get_addr_pin(&gs_handle, &addr_check);
162 if (res != 0)
163 {
164 bmm150_interface_debug_print("bmm150: get addr pin failed.\n");
165
166 return 1;
167 }
168 bmm150_interface_debug_print("bmm150: check addr pin %s.\n", (addr_check == BMM150_ADDRESS_CSB_SDO_00) ? "ok" : "error");
169
170 /* set addr csb sdo 01 */
172 if (res != 0)
173 {
174 bmm150_interface_debug_print("bmm150: set addr pin failed.\n");
175
176 return 1;
177 }
178 bmm150_interface_debug_print("bmm150: set addr csb sdo 01.\n");
179 res = bmm150_get_addr_pin(&gs_handle, &addr_check);
180 if (res != 0)
181 {
182 bmm150_interface_debug_print("bmm150: get addr pin failed.\n");
183
184 return 1;
185 }
186 bmm150_interface_debug_print("bmm150: check addr pin %s.\n", (addr_check == BMM150_ADDRESS_CSB_SDO_01) ? "ok" : "error");
187
188 /* set addr csb sdo 10 */
190 if (res != 0)
191 {
192 bmm150_interface_debug_print("bmm150: set addr pin failed.\n");
193
194 return 1;
195 }
196 bmm150_interface_debug_print("bmm150: set addr csb sdo 10.\n");
197 res = bmm150_get_addr_pin(&gs_handle, &addr_check);
198 if (res != 0)
199 {
200 bmm150_interface_debug_print("bmm150: get addr pin failed.\n");
201
202 return 1;
203 }
204 bmm150_interface_debug_print("bmm150: check addr pin %s.\n", (addr_check == BMM150_ADDRESS_CSB_SDO_10) ? "ok" : "error");
205
206 /* set addr csb sdo 11 */
208 if (res != 0)
209 {
210 bmm150_interface_debug_print("bmm150: set addr pin failed.\n");
211
212 return 1;
213 }
214 bmm150_interface_debug_print("bmm150: set addr csb sdo 11.\n");
215 res = bmm150_get_addr_pin(&gs_handle, &addr_check);
216 if (res != 0)
217 {
218 bmm150_interface_debug_print("bmm150: get addr pin failed.\n");
219
220 return 1;
221 }
222 bmm150_interface_debug_print("bmm150: check addr pin %s.\n", (addr_check == BMM150_ADDRESS_CSB_SDO_11) ? "ok" : "error");
223
224 /* set the interface */
225 res = bmm150_set_interface(&gs_handle, interface);
226 if (res != 0)
227 {
228 bmm150_interface_debug_print("bmm150: set interface failed.\n");
229
230 return 1;
231 }
232
233 /* set the address pin */
234 res = bmm150_set_addr_pin(&gs_handle, addr_pin);
235 if (res != 0)
236 {
237 bmm150_interface_debug_print("bmm150: set addr pin failed.\n");
238
239 return 1;
240 }
241
242 /* init the bmm150 */
243 res = bmm150_init(&gs_handle);
244 if (res != 0)
245 {
246 bmm150_interface_debug_print("bmm150: init failed.\n");
247
248 return 1;
249 }
250
251 /* bmm150_set_power_on/bmm150_get_power_on test */
252 bmm150_interface_debug_print("bmm150: bmm150_set_power_on/bmm150_get_power_on test.\n");
253
254 /* disable power on */
255 res = bmm150_set_power_on(&gs_handle, BMM150_BOOL_FALSE);
256 if (res != 0)
257 {
258 bmm150_interface_debug_print("bmm150: set power on failed.\n");
259 (void)bmm150_deinit(&gs_handle);
260
261 return 1;
262 }
263 bmm150_interface_debug_print("bmm150: disable power on .\n");
264 res = bmm150_get_power_on(&gs_handle, &enable);
265 if (res != 0)
266 {
267 bmm150_interface_debug_print("bmm150: get power on failed.\n");
268 (void)bmm150_deinit(&gs_handle);
269
270 return 1;
271 }
272 bmm150_interface_debug_print("bmm150: check power on %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
273
274 /* enable power on */
275 res = bmm150_set_power_on(&gs_handle, BMM150_BOOL_TRUE);
276 if (res != 0)
277 {
278 bmm150_interface_debug_print("bmm150: set power on failed.\n");
279 (void)bmm150_deinit(&gs_handle);
280
281 return 1;
282 }
283 bmm150_interface_debug_print("bmm150: enable power on .\n");
284 res = bmm150_get_power_on(&gs_handle, &enable);
285 if (res != 0)
286 {
287 bmm150_interface_debug_print("bmm150: get power on failed.\n");
288 (void)bmm150_deinit(&gs_handle);
289
290 return 1;
291 }
292 bmm150_interface_debug_print("bmm150: check power on %s.\n", (enable == BMM150_BOOL_TRUE) ? "ok" : "error");
293
294 if (interface == BMM150_INTERFACE_IIC)
295 {
296 /* bmm150_set_spi_wire/bmm150_get_spi_wire test */
297 bmm150_interface_debug_print("bmm150: bmm150_set_spi_wire/bmm150_get_spi_wire test.\n");
298
299 /* set spi wire4 */
300 res = bmm150_set_spi_wire(&gs_handle, BMM150_SPI_WIRE_4);
301 if (res != 0)
302 {
303 bmm150_interface_debug_print("bmm150: set spi wire failed.\n");
304 (void)bmm150_deinit(&gs_handle);
305
306 return 1;
307 }
308 bmm150_interface_debug_print("bmm150: set spi wire4.\n");
309 res = bmm150_get_spi_wire(&gs_handle, &wire);
310 if (res != 0)
311 {
312 bmm150_interface_debug_print("bmm150: get spi wire failed.\n");
313 (void)bmm150_deinit(&gs_handle);
314
315 return 1;
316 }
317 bmm150_interface_debug_print("bmm150: check spi wire on %s.\n", (wire == BMM150_SPI_WIRE_4) ? "ok" : "error");
318
319 /* set spi wire3 */
320 res = bmm150_set_spi_wire(&gs_handle, BMM150_SPI_WIRE_3);
321 if (res != 0)
322 {
323 bmm150_interface_debug_print("bmm150: set spi wire failed.\n");
324 (void)bmm150_deinit(&gs_handle);
325
326 return 1;
327 }
328 bmm150_interface_debug_print("bmm150: set spi wire3.\n");
329 res = bmm150_get_spi_wire(&gs_handle, &wire);
330 if (res != 0)
331 {
332 bmm150_interface_debug_print("bmm150: get spi wire failed.\n");
333 (void)bmm150_deinit(&gs_handle);
334
335 return 1;
336 }
337 bmm150_interface_debug_print("bmm150: check spi wire on %s.\n", (wire == BMM150_SPI_WIRE_3) ? "ok" : "error");
338 }
339
340 /* bmm150_set_advanced_self_test/bmm150_get_advanced_self_test test */
341 bmm150_interface_debug_print("bmm150: bmm150_set_advanced_self_test/bmm150_get_advanced_self_test test.\n");
342
343 /* set advanced self test positive mode */
345 if (res != 0)
346 {
347 bmm150_interface_debug_print("bmm150: set advanced self test failed.\n");
348 (void)bmm150_deinit(&gs_handle);
349
350 return 1;
351 }
352 bmm150_interface_debug_print("bmm150: set advanced self test positive mode.\n");
353 res = bmm150_get_advanced_self_test(&gs_handle, &test);
354 if (res != 0)
355 {
356 bmm150_interface_debug_print("bmm150: get advanced self test failed.\n");
357 (void)bmm150_deinit(&gs_handle);
358
359 return 1;
360 }
361 bmm150_interface_debug_print("bmm150: check advanced self test %s.\n", (test == BMM150_ADVANCED_SELF_TEST_POSITIVE) ? "ok" : "error");
362
363 /* set advanced self test negative mode */
365 if (res != 0)
366 {
367 bmm150_interface_debug_print("bmm150: set advanced self test failed.\n");
368 (void)bmm150_deinit(&gs_handle);
369
370 return 1;
371 }
372 bmm150_interface_debug_print("bmm150: set advanced self test negative mode.\n");
373 res = bmm150_get_advanced_self_test(&gs_handle, &test);
374 if (res != 0)
375 {
376 bmm150_interface_debug_print("bmm150: get advanced self test failed.\n");
377 (void)bmm150_deinit(&gs_handle);
378
379 return 1;
380 }
381 bmm150_interface_debug_print("bmm150: check advanced self test %s.\n", (test == BMM150_ADVANCED_SELF_TEST_NEGATIVE) ? "ok" : "error");
382
383 /* set advanced self test normal mode */
385 if (res != 0)
386 {
387 bmm150_interface_debug_print("bmm150: set advanced self test failed.\n");
388 (void)bmm150_deinit(&gs_handle);
389
390 return 1;
391 }
392 bmm150_interface_debug_print("bmm150: set advanced self test normal mode.\n");
393 res = bmm150_get_advanced_self_test(&gs_handle, &test);
394 if (res != 0)
395 {
396 bmm150_interface_debug_print("bmm150: get advanced self test failed.\n");
397 (void)bmm150_deinit(&gs_handle);
398
399 return 1;
400 }
401 bmm150_interface_debug_print("bmm150: check advanced self test %s.\n", (test == BMM150_ADVANCED_SELF_TEST_NORMAL) ? "ok" : "error");
402
403 /* bmm150_set_data_rate/bmm150_get_data_rate test */
404 bmm150_interface_debug_print("bmm150: bmm150_set_data_rate/bmm150_get_data_rate test.\n");
405
406 /* set data rate 10hz */
408 if (res != 0)
409 {
410 bmm150_interface_debug_print("bmm150: set data rate failed.\n");
411 (void)bmm150_deinit(&gs_handle);
412
413 return 1;
414 }
415 bmm150_interface_debug_print("bmm150: set data rate 10hz.\n");
416 res = bmm150_get_data_rate(&gs_handle, &rate);
417 if (res != 0)
418 {
419 bmm150_interface_debug_print("bmm150: get data rate failed.\n");
420 (void)bmm150_deinit(&gs_handle);
421
422 return 1;
423 }
424 bmm150_interface_debug_print("bmm150: check data rate %s.\n", (rate == BMM150_DATA_RATE_10HZ) ? "ok" : "error");
425
426 /* set data rate 2hz */
428 if (res != 0)
429 {
430 bmm150_interface_debug_print("bmm150: set data rate failed.\n");
431 (void)bmm150_deinit(&gs_handle);
432
433 return 1;
434 }
435 bmm150_interface_debug_print("bmm150: set data rate 2hz.\n");
436 res = bmm150_get_data_rate(&gs_handle, &rate);
437 if (res != 0)
438 {
439 bmm150_interface_debug_print("bmm150: get data rate failed.\n");
440 (void)bmm150_deinit(&gs_handle);
441
442 return 1;
443 }
444 bmm150_interface_debug_print("bmm150: check data rate %s.\n", (rate == BMM150_DATA_RATE_2HZ) ? "ok" : "error");
445
446 /* set data rate 6hz */
448 if (res != 0)
449 {
450 bmm150_interface_debug_print("bmm150: set data rate failed.\n");
451 (void)bmm150_deinit(&gs_handle);
452
453 return 1;
454 }
455 bmm150_interface_debug_print("bmm150: set data rate 6hz.\n");
456 res = bmm150_get_data_rate(&gs_handle, &rate);
457 if (res != 0)
458 {
459 bmm150_interface_debug_print("bmm150: get data rate failed.\n");
460 (void)bmm150_deinit(&gs_handle);
461
462 return 1;
463 }
464 bmm150_interface_debug_print("bmm150: check data rate %s.\n", (rate == BMM150_DATA_RATE_6HZ) ? "ok" : "error");
465
466 /* set data rate 8hz */
468 if (res != 0)
469 {
470 bmm150_interface_debug_print("bmm150: set data rate failed.\n");
471 (void)bmm150_deinit(&gs_handle);
472
473 return 1;
474 }
475 bmm150_interface_debug_print("bmm150: set data rate 8hz.\n");
476 res = bmm150_get_data_rate(&gs_handle, &rate);
477 if (res != 0)
478 {
479 bmm150_interface_debug_print("bmm150: get data rate failed.\n");
480 (void)bmm150_deinit(&gs_handle);
481
482 return 1;
483 }
484 bmm150_interface_debug_print("bmm150: check data rate %s.\n", (rate == BMM150_DATA_RATE_8HZ) ? "ok" : "error");
485
486 /* set data rate 15hz */
488 if (res != 0)
489 {
490 bmm150_interface_debug_print("bmm150: set data rate failed.\n");
491 (void)bmm150_deinit(&gs_handle);
492
493 return 1;
494 }
495 bmm150_interface_debug_print("bmm150: set data rate 15hz.\n");
496 res = bmm150_get_data_rate(&gs_handle, &rate);
497 if (res != 0)
498 {
499 bmm150_interface_debug_print("bmm150: get data rate failed.\n");
500 (void)bmm150_deinit(&gs_handle);
501
502 return 1;
503 }
504 bmm150_interface_debug_print("bmm150: check data rate %s.\n", (rate == BMM150_DATA_RATE_15HZ) ? "ok" : "error");
505
506 /* set data rate 20hz */
508 if (res != 0)
509 {
510 bmm150_interface_debug_print("bmm150: set data rate failed.\n");
511 (void)bmm150_deinit(&gs_handle);
512
513 return 1;
514 }
515 bmm150_interface_debug_print("bmm150: set data rate 20hz.\n");
516 res = bmm150_get_data_rate(&gs_handle, &rate);
517 if (res != 0)
518 {
519 bmm150_interface_debug_print("bmm150: get data rate failed.\n");
520 (void)bmm150_deinit(&gs_handle);
521
522 return 1;
523 }
524 bmm150_interface_debug_print("bmm150: check data rate %s.\n", (rate == BMM150_DATA_RATE_20HZ) ? "ok" : "error");
525
526 /* set data rate 25hz */
528 if (res != 0)
529 {
530 bmm150_interface_debug_print("bmm150: set data rate failed.\n");
531 (void)bmm150_deinit(&gs_handle);
532
533 return 1;
534 }
535 bmm150_interface_debug_print("bmm150: set data rate 25hz.\n");
536 res = bmm150_get_data_rate(&gs_handle, &rate);
537 if (res != 0)
538 {
539 bmm150_interface_debug_print("bmm150: get data rate failed.\n");
540 (void)bmm150_deinit(&gs_handle);
541
542 return 1;
543 }
544 bmm150_interface_debug_print("bmm150: check data rate %s.\n", (rate == BMM150_DATA_RATE_25HZ) ? "ok" : "error");
545
546 /* set data rate 30hz */
548 if (res != 0)
549 {
550 bmm150_interface_debug_print("bmm150: set data rate failed.\n");
551 (void)bmm150_deinit(&gs_handle);
552
553 return 1;
554 }
555 bmm150_interface_debug_print("bmm150: set data rate 30hz.\n");
556 res = bmm150_get_data_rate(&gs_handle, &rate);
557 if (res != 0)
558 {
559 bmm150_interface_debug_print("bmm150: get data rate failed.\n");
560 (void)bmm150_deinit(&gs_handle);
561
562 return 1;
563 }
564 bmm150_interface_debug_print("bmm150: check data rate %s.\n", (rate == BMM150_DATA_RATE_30HZ) ? "ok" : "error");
565
566 /* bmm150_set_mode/bmm150_get_mode test */
567 bmm150_interface_debug_print("bmm150: bmm150_set_mode/bmm150_get_mode test.\n");
568
569 /* set normal mode */
570 res = bmm150_set_mode(&gs_handle, BMM150_MODE_NORMAL);
571 if (res != 0)
572 {
573 bmm150_interface_debug_print("bmm150: set mode failed.\n");
574 (void)bmm150_deinit(&gs_handle);
575
576 return 1;
577 }
578 bmm150_interface_debug_print("bmm150: set normal mode.\n");
579 res = bmm150_get_mode(&gs_handle, &mode);
580 if (res != 0)
581 {
582 bmm150_interface_debug_print("bmm150: get mode failed.\n");
583 (void)bmm150_deinit(&gs_handle);
584
585 return 1;
586 }
587 bmm150_interface_debug_print("bmm150: check mode %s.\n", (mode == BMM150_MODE_NORMAL) ? "ok" : "error");
588
589 /* set forced mode */
590 res = bmm150_set_mode(&gs_handle, BMM150_MODE_FORCED);
591 if (res != 0)
592 {
593 bmm150_interface_debug_print("bmm150: set mode failed.\n");
594 (void)bmm150_deinit(&gs_handle);
595
596 return 1;
597 }
598 bmm150_interface_debug_print("bmm150: set forced mode.\n");
599 res = bmm150_get_mode(&gs_handle, &mode);
600 if (res != 0)
601 {
602 bmm150_interface_debug_print("bmm150: get mode failed.\n");
603 (void)bmm150_deinit(&gs_handle);
604
605 return 1;
606 }
607 bmm150_interface_debug_print("bmm150: check mode %s.\n", (res == 0) ? "ok" : "error");
608
609 /* set sleep mode */
610 res = bmm150_set_mode(&gs_handle, BMM150_MODE_SLEEP);
611 if (res != 0)
612 {
613 bmm150_interface_debug_print("bmm150: set mode failed.\n");
614 (void)bmm150_deinit(&gs_handle);
615
616 return 1;
617 }
618 bmm150_interface_debug_print("bmm150: set sleep mode.\n");
619 res = bmm150_get_mode(&gs_handle, &mode);
620 if (res != 0)
621 {
622 bmm150_interface_debug_print("bmm150: get mode failed.\n");
623 (void)bmm150_deinit(&gs_handle);
624
625 return 1;
626 }
627 bmm150_interface_debug_print("bmm150: check mode %s.\n", (mode == BMM150_MODE_SLEEP) ? "ok" : "error");
628
629 /* bmm150_set_self_test/bmm150_get_self_test test */
630 bmm150_interface_debug_print("bmm150: bmm150_set_self_test/bmm150_get_self_test test.\n");
631
632 /* enable self test */
633 res = bmm150_set_self_test(&gs_handle, BMM150_BOOL_TRUE);
634 if (res != 0)
635 {
636 bmm150_interface_debug_print("bmm150: set self test failed.\n");
637 (void)bmm150_deinit(&gs_handle);
638
639 return 1;
640 }
641 bmm150_interface_debug_print("bmm150: enable self test.\n");
642 res = bmm150_get_self_test(&gs_handle, &enable);
643 if (res != 0)
644 {
645 bmm150_interface_debug_print("bmm150: get self test failed.\n");
646 (void)bmm150_deinit(&gs_handle);
647
648 return 1;
649 }
650 bmm150_interface_debug_print("bmm150: check self test %s.\n", (res == 0) ? "ok" : "error");
651
652 /* disable self test */
653 res = bmm150_set_self_test(&gs_handle, BMM150_BOOL_FALSE);
654 if (res != 0)
655 {
656 bmm150_interface_debug_print("bmm150: set self test failed.\n");
657 (void)bmm150_deinit(&gs_handle);
658
659 return 1;
660 }
661 bmm150_interface_debug_print("bmm150: disable self test.\n");
662 res = bmm150_get_self_test(&gs_handle, &enable);
663 if (res != 0)
664 {
665 bmm150_interface_debug_print("bmm150: get self test failed.\n");
666 (void)bmm150_deinit(&gs_handle);
667
668 return 1;
669 }
670 bmm150_interface_debug_print("bmm150: check self test %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
671
672 /* bmm150_set_interrupt/bmm150_get_interrupt test */
673 bmm150_interface_debug_print("bmm150: bmm150_set_interrupt/bmm150_get_interrupt test.\n");
674
675 /* enable data overrun */
677 if (res != 0)
678 {
679 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
680 (void)bmm150_deinit(&gs_handle);
681
682 return 1;
683 }
684 bmm150_interface_debug_print("bmm150: enable data overrun.\n");
686 if (res != 0)
687 {
688 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
689 (void)bmm150_deinit(&gs_handle);
690
691 return 1;
692 }
693 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_TRUE) ? "ok" : "error");
694
695 /* disable data overrun */
697 if (res != 0)
698 {
699 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
700 (void)bmm150_deinit(&gs_handle);
701
702 return 1;
703 }
704 bmm150_interface_debug_print("bmm150: disable data overrun.\n");
706 if (res != 0)
707 {
708 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
709 (void)bmm150_deinit(&gs_handle);
710
711 return 1;
712 }
713 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
714
715 /* enable overflow */
717 if (res != 0)
718 {
719 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
720 (void)bmm150_deinit(&gs_handle);
721
722 return 1;
723 }
724 bmm150_interface_debug_print("bmm150: enable overflow.\n");
725 res = bmm150_get_interrupt(&gs_handle, BMM150_INTERRUPT_STATUS_OVERFLOW, &enable);
726 if (res != 0)
727 {
728 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
729 (void)bmm150_deinit(&gs_handle);
730
731 return 1;
732 }
733 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_TRUE) ? "ok" : "error");
734
735 /* disable overflow */
737 if (res != 0)
738 {
739 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
740 (void)bmm150_deinit(&gs_handle);
741
742 return 1;
743 }
744 bmm150_interface_debug_print("bmm150: disable overflow.\n");
745 res = bmm150_get_interrupt(&gs_handle, BMM150_INTERRUPT_STATUS_OVERFLOW, &enable);
746 if (res != 0)
747 {
748 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
749 (void)bmm150_deinit(&gs_handle);
750
751 return 1;
752 }
753 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
754
755 /* enable high threshold z */
757 if (res != 0)
758 {
759 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
760 (void)bmm150_deinit(&gs_handle);
761
762 return 1;
763 }
764 bmm150_interface_debug_print("bmm150: enable high threshold z.\n");
766 if (res != 0)
767 {
768 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
769 (void)bmm150_deinit(&gs_handle);
770
771 return 1;
772 }
773 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_TRUE) ? "ok" : "error");
774
775 /* disable high threshold z */
777 if (res != 0)
778 {
779 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
780 (void)bmm150_deinit(&gs_handle);
781
782 return 1;
783 }
784 bmm150_interface_debug_print("bmm150: disable high threshold z.\n");
786 if (res != 0)
787 {
788 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
789 (void)bmm150_deinit(&gs_handle);
790
791 return 1;
792 }
793 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
794
795 /* enable high threshold y */
797 if (res != 0)
798 {
799 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
800 (void)bmm150_deinit(&gs_handle);
801
802 return 1;
803 }
804 bmm150_interface_debug_print("bmm150: enable high threshold y.\n");
806 if (res != 0)
807 {
808 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
809 (void)bmm150_deinit(&gs_handle);
810
811 return 1;
812 }
813 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_TRUE) ? "ok" : "error");
814
815 /* disable high threshold y */
817 if (res != 0)
818 {
819 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
820 (void)bmm150_deinit(&gs_handle);
821
822 return 1;
823 }
824 bmm150_interface_debug_print("bmm150: disable high threshold y.\n");
826 if (res != 0)
827 {
828 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
829 (void)bmm150_deinit(&gs_handle);
830
831 return 1;
832 }
833 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
834
835 /* enable high threshold x */
837 if (res != 0)
838 {
839 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
840 (void)bmm150_deinit(&gs_handle);
841
842 return 1;
843 }
844 bmm150_interface_debug_print("bmm150: enable high threshold x.\n");
846 if (res != 0)
847 {
848 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
849 (void)bmm150_deinit(&gs_handle);
850
851 return 1;
852 }
853 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_TRUE) ? "ok" : "error");
854
855 /* disable high threshold x */
857 if (res != 0)
858 {
859 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
860 (void)bmm150_deinit(&gs_handle);
861
862 return 1;
863 }
864 bmm150_interface_debug_print("bmm150: disable high threshold x.\n");
866 if (res != 0)
867 {
868 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
869 (void)bmm150_deinit(&gs_handle);
870
871 return 1;
872 }
873 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
874
875 /* enable low threshold z */
877 if (res != 0)
878 {
879 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
880 (void)bmm150_deinit(&gs_handle);
881
882 return 1;
883 }
884 bmm150_interface_debug_print("bmm150: enable low threshold z.\n");
886 if (res != 0)
887 {
888 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
889 (void)bmm150_deinit(&gs_handle);
890
891 return 1;
892 }
893 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_TRUE) ? "ok" : "error");
894
895 /* disable low threshold z */
897 if (res != 0)
898 {
899 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
900 (void)bmm150_deinit(&gs_handle);
901
902 return 1;
903 }
904 bmm150_interface_debug_print("bmm150: disable low threshold z.\n");
906 if (res != 0)
907 {
908 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
909 (void)bmm150_deinit(&gs_handle);
910
911 return 1;
912 }
913 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
914
915 /* enable low threshold y */
917 if (res != 0)
918 {
919 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
920 (void)bmm150_deinit(&gs_handle);
921
922 return 1;
923 }
924 bmm150_interface_debug_print("bmm150: enable low threshold y.\n");
926 if (res != 0)
927 {
928 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
929 (void)bmm150_deinit(&gs_handle);
930
931 return 1;
932 }
933 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_TRUE) ? "ok" : "error");
934
935 /* disable low threshold y */
937 if (res != 0)
938 {
939 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
940 (void)bmm150_deinit(&gs_handle);
941
942 return 1;
943 }
944 bmm150_interface_debug_print("bmm150: disable low threshold y.\n");
946 if (res != 0)
947 {
948 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
949 (void)bmm150_deinit(&gs_handle);
950
951 return 1;
952 }
953 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
954
955 /* enable low threshold x */
957 if (res != 0)
958 {
959 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
960 (void)bmm150_deinit(&gs_handle);
961
962 return 1;
963 }
964 bmm150_interface_debug_print("bmm150: enable low threshold x.\n");
966 if (res != 0)
967 {
968 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
969 (void)bmm150_deinit(&gs_handle);
970
971 return 1;
972 }
973 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_TRUE) ? "ok" : "error");
974
975 /* disable low threshold x */
977 if (res != 0)
978 {
979 bmm150_interface_debug_print("bmm150: set interrupt failed.\n");
980 (void)bmm150_deinit(&gs_handle);
981
982 return 1;
983 }
984 bmm150_interface_debug_print("bmm150: disable low threshold x.\n");
986 if (res != 0)
987 {
988 bmm150_interface_debug_print("bmm150: get interrupt failed.\n");
989 (void)bmm150_deinit(&gs_handle);
990
991 return 1;
992 }
993 bmm150_interface_debug_print("bmm150: check interrupt %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
994
995 /* bmm150_set_data_ready_pin/bmm150_get_data_ready_pin test */
996 bmm150_interface_debug_print("bmm150: bmm150_set_data_ready_pin/bmm150_get_data_ready_pin test.\n");
997
998 /* enable data ready pin */
1000 if (res != 0)
1001 {
1002 bmm150_interface_debug_print("bmm150: set data ready pin failed.\n");
1003 (void)bmm150_deinit(&gs_handle);
1004
1005 return 1;
1006 }
1007 bmm150_interface_debug_print("bmm150: enable data ready pin.\n");
1008 res = bmm150_get_data_ready_pin(&gs_handle, &enable);
1009 if (res != 0)
1010 {
1011 bmm150_interface_debug_print("bmm150: get data ready pin failed.\n");
1012 (void)bmm150_deinit(&gs_handle);
1013
1014 return 1;
1015 }
1016 bmm150_interface_debug_print("bmm150: check data ready pin %s.\n", (enable == BMM150_BOOL_TRUE) ? "ok" : "error");
1017
1018 /* disable data ready pin */
1020 if (res != 0)
1021 {
1022 bmm150_interface_debug_print("bmm150: set data ready pin failed.\n");
1023 (void)bmm150_deinit(&gs_handle);
1024
1025 return 1;
1026 }
1027 bmm150_interface_debug_print("bmm150: disable data ready pin.\n");
1028 res = bmm150_get_data_ready_pin(&gs_handle, &enable);
1029 if (res != 0)
1030 {
1031 bmm150_interface_debug_print("bmm150: get data ready pin failed.\n");
1032 (void)bmm150_deinit(&gs_handle);
1033
1034 return 1;
1035 }
1036 bmm150_interface_debug_print("bmm150: check data ready pin %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
1037
1038 /* bmm150_set_interrupt_pin/bmm150_get_interrupt_pin test */
1039 bmm150_interface_debug_print("bmm150: bmm150_set_interrupt_pin/bmm150_get_interrupt_pin test.\n");
1040
1041 /* enable interrupt pin */
1042 res = bmm150_set_interrupt_pin(&gs_handle, BMM150_BOOL_TRUE);
1043 if (res != 0)
1044 {
1045 bmm150_interface_debug_print("bmm150: set interrupt pin failed.\n");
1046 (void)bmm150_deinit(&gs_handle);
1047
1048 return 1;
1049 }
1050 bmm150_interface_debug_print("bmm150: enable interrupt pin.\n");
1051 res = bmm150_get_interrupt_pin(&gs_handle, &enable);
1052 if (res != 0)
1053 {
1054 bmm150_interface_debug_print("bmm150: get interrupt pin failed.\n");
1055 (void)bmm150_deinit(&gs_handle);
1056
1057 return 1;
1058 }
1059 bmm150_interface_debug_print("bmm150: check interrupt pin %s.\n", (enable == BMM150_BOOL_TRUE) ? "ok" : "error");
1060
1061 /* disable interrupt pin */
1063 if (res != 0)
1064 {
1065 bmm150_interface_debug_print("bmm150: set interrupt pin failed.\n");
1066 (void)bmm150_deinit(&gs_handle);
1067
1068 return 1;
1069 }
1070 bmm150_interface_debug_print("bmm150: disable interrupt pin.\n");
1071 res = bmm150_get_interrupt_pin(&gs_handle, &enable);
1072 if (res != 0)
1073 {
1074 bmm150_interface_debug_print("bmm150: get interrupt pin failed.\n");
1075 (void)bmm150_deinit(&gs_handle);
1076
1077 return 1;
1078 }
1079 bmm150_interface_debug_print("bmm150: check interrupt pin %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
1080
1081 /* bmm150_set_channel_z/bmm150_get_channel_z test */
1082 bmm150_interface_debug_print("bmm150: bmm150_set_channel_z/bmm150_get_channel_z test.\n");
1083
1084 /* enable channel z */
1085 res = bmm150_set_channel_z(&gs_handle, BMM150_BOOL_TRUE);
1086 if (res != 0)
1087 {
1088 bmm150_interface_debug_print("bmm150: set channel z failed.\n");
1089 (void)bmm150_deinit(&gs_handle);
1090
1091 return 1;
1092 }
1093 bmm150_interface_debug_print("bmm150: enable channel z.\n");
1094 res = bmm150_get_channel_z(&gs_handle, &enable);
1095 if (res != 0)
1096 {
1097 bmm150_interface_debug_print("bmm150: get channel z failed.\n");
1098 (void)bmm150_deinit(&gs_handle);
1099
1100 return 1;
1101 }
1102 bmm150_interface_debug_print("bmm150: check channel z %s.\n", (enable == BMM150_BOOL_TRUE) ? "ok" : "error");
1103
1104 /* disable channel z */
1105 res = bmm150_set_channel_z(&gs_handle, BMM150_BOOL_FALSE);
1106 if (res != 0)
1107 {
1108 bmm150_interface_debug_print("bmm150: set channel z failed.\n");
1109 (void)bmm150_deinit(&gs_handle);
1110
1111 return 1;
1112 }
1113 bmm150_interface_debug_print("bmm150: disable channel z.\n");
1114 res = bmm150_get_channel_z(&gs_handle, &enable);
1115 if (res != 0)
1116 {
1117 bmm150_interface_debug_print("bmm150: get channel z failed.\n");
1118 (void)bmm150_deinit(&gs_handle);
1119
1120 return 1;
1121 }
1122 bmm150_interface_debug_print("bmm150: check channel z %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
1123
1124 /* enable channel y */
1125 res = bmm150_set_channel_y(&gs_handle, BMM150_BOOL_TRUE);
1126 if (res != 0)
1127 {
1128 bmm150_interface_debug_print("bmm150: set channel y failed.\n");
1129 (void)bmm150_deinit(&gs_handle);
1130
1131 return 1;
1132 }
1133 bmm150_interface_debug_print("bmm150: enable channel y.\n");
1134 res = bmm150_get_channel_y(&gs_handle, &enable);
1135 if (res != 0)
1136 {
1137 bmm150_interface_debug_print("bmm150: get channel y failed.\n");
1138 (void)bmm150_deinit(&gs_handle);
1139
1140 return 1;
1141 }
1142 bmm150_interface_debug_print("bmm150: check channel y %s.\n", (enable == BMM150_BOOL_TRUE) ? "ok" : "error");
1143
1144 /* disable channel y */
1145 res = bmm150_set_channel_y(&gs_handle, BMM150_BOOL_FALSE);
1146 if (res != 0)
1147 {
1148 bmm150_interface_debug_print("bmm150: set channel y failed.\n");
1149 (void)bmm150_deinit(&gs_handle);
1150
1151 return 1;
1152 }
1153 bmm150_interface_debug_print("bmm150: disable channel y.\n");
1154 res = bmm150_get_channel_y(&gs_handle, &enable);
1155 if (res != 0)
1156 {
1157 bmm150_interface_debug_print("bmm150: get channel y failed.\n");
1158 (void)bmm150_deinit(&gs_handle);
1159
1160 return 1;
1161 }
1162 bmm150_interface_debug_print("bmm150: check channel y %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
1163
1164 /* enable channel x */
1165 res = bmm150_set_channel_x(&gs_handle, BMM150_BOOL_TRUE);
1166 if (res != 0)
1167 {
1168 bmm150_interface_debug_print("bmm150: set channel x failed.\n");
1169 (void)bmm150_deinit(&gs_handle);
1170
1171 return 1;
1172 }
1173 bmm150_interface_debug_print("bmm150: enable channel x.\n");
1174 res = bmm150_get_channel_x(&gs_handle, &enable);
1175 if (res != 0)
1176 {
1177 bmm150_interface_debug_print("bmm150: get channel x failed.\n");
1178 (void)bmm150_deinit(&gs_handle);
1179
1180 return 1;
1181 }
1182 bmm150_interface_debug_print("bmm150: check channel x %s.\n", (enable == BMM150_BOOL_TRUE) ? "ok" : "error");
1183
1184 /* disable channel x */
1185 res = bmm150_set_channel_x(&gs_handle, BMM150_BOOL_FALSE);
1186 if (res != 0)
1187 {
1188 bmm150_interface_debug_print("bmm150: set channel x failed.\n");
1189 (void)bmm150_deinit(&gs_handle);
1190
1191 return 1;
1192 }
1193 bmm150_interface_debug_print("bmm150: disable channel x.\n");
1194 res = bmm150_get_channel_x(&gs_handle, &enable);
1195 if (res != 0)
1196 {
1197 bmm150_interface_debug_print("bmm150: get channel x failed.\n");
1198 (void)bmm150_deinit(&gs_handle);
1199
1200 return 1;
1201 }
1202 bmm150_interface_debug_print("bmm150: check channel x %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
1203
1204 /* bmm150_set_data_ready_pin_polarity/bmm150_get_data_ready_pin_polarity test */
1205 bmm150_interface_debug_print("bmm150: bmm150_set_data_ready_pin_polarity/bmm150_get_data_ready_pin_polarity test.\n");
1206
1207 /* set data ready pin polarity low */
1209 if (res != 0)
1210 {
1211 bmm150_interface_debug_print("bmm150: set data ready pin polarity failed.\n");
1212 (void)bmm150_deinit(&gs_handle);
1213
1214 return 1;
1215 }
1216 bmm150_interface_debug_print("bmm150: set data ready pin polarity low.\n");
1217 res = bmm150_get_data_ready_pin_polarity(&gs_handle, &ready_pin_polarity);
1218 if (res != 0)
1219 {
1220 bmm150_interface_debug_print("bmm150: get data ready pin polarity failed.\n");
1221 (void)bmm150_deinit(&gs_handle);
1222
1223 return 1;
1224 }
1225 bmm150_interface_debug_print("bmm150: check data ready pin polarity x %s.\n", (ready_pin_polarity == BMM150_DATA_READY_PIN_POLARITY_LOW) ? "ok" : "error");
1226
1227 /* set data ready pin polarity high */
1229 if (res != 0)
1230 {
1231 bmm150_interface_debug_print("bmm150: set data ready pin polarity failed.\n");
1232 (void)bmm150_deinit(&gs_handle);
1233
1234 return 1;
1235 }
1236 bmm150_interface_debug_print("bmm150: set data ready pin polarity high.\n");
1237 res = bmm150_get_data_ready_pin_polarity(&gs_handle, &ready_pin_polarity);
1238 if (res != 0)
1239 {
1240 bmm150_interface_debug_print("bmm150: get data ready pin polarity failed.\n");
1241 (void)bmm150_deinit(&gs_handle);
1242
1243 return 1;
1244 }
1245 bmm150_interface_debug_print("bmm150: check data ready pin polarity x %s.\n", (ready_pin_polarity == BMM150_DATA_READY_PIN_POLARITY_HIGH) ? "ok" : "error");
1246
1247 /* bmm150_set_interrupt_latch/bmm150_get_interrupt_latch test */
1248 bmm150_interface_debug_print("bmm150: bmm150_set_interrupt_latch/bmm150_get_interrupt_latch test.\n");
1249
1250 /* enable interrupt latch */
1252 if (res != 0)
1253 {
1254 bmm150_interface_debug_print("bmm150: set interrupt latch failed.\n");
1255 (void)bmm150_deinit(&gs_handle);
1256
1257 return 1;
1258 }
1259 bmm150_interface_debug_print("bmm150: enable interrupt latch.\n");
1260 res = bmm150_get_interrupt_latch(&gs_handle, &enable);
1261 if (res != 0)
1262 {
1263 bmm150_interface_debug_print("bmm150: get interrupt latch failed.\n");
1264 (void)bmm150_deinit(&gs_handle);
1265
1266 return 1;
1267 }
1268 bmm150_interface_debug_print("bmm150: check interrupt latch %s.\n", (enable == BMM150_BOOL_TRUE) ? "ok" : "error");
1269
1270 /* disable interrupt latch */
1272 if (res != 0)
1273 {
1274 bmm150_interface_debug_print("bmm150: set interrupt latch failed.\n");
1275 (void)bmm150_deinit(&gs_handle);
1276
1277 return 1;
1278 }
1279 bmm150_interface_debug_print("bmm150: disable interrupt latch.\n");
1280 res = bmm150_get_interrupt_latch(&gs_handle, &enable);
1281 if (res != 0)
1282 {
1283 bmm150_interface_debug_print("bmm150: get interrupt latch failed.\n");
1284 (void)bmm150_deinit(&gs_handle);
1285
1286 return 1;
1287 }
1288 bmm150_interface_debug_print("bmm150: check interrupt latch %s.\n", (enable == BMM150_BOOL_FALSE) ? "ok" : "error");
1289
1290 /* bmm150_set_interrupt_pin_polarity/bmm150_get_interrupt_pin_polarity test */
1291 bmm150_interface_debug_print("bmm150: bmm150_set_interrupt_pin_polarity/bmm150_get_interrupt_pin_polarity test.\n");
1292
1293 /* set interrupt pin polarity low */
1295 if (res != 0)
1296 {
1297 bmm150_interface_debug_print("bmm150: set interrupt pin polarity failed.\n");
1298 (void)bmm150_deinit(&gs_handle);
1299
1300 return 1;
1301 }
1302 bmm150_interface_debug_print("bmm150: set interrupt pin polarity low.\n");
1303 res = bmm150_get_interrupt_pin_polarity(&gs_handle, &interrupt_pin_polarity);
1304 if (res != 0)
1305 {
1306 bmm150_interface_debug_print("bmm150: get interrupt pin polarity failed.\n");
1307 (void)bmm150_deinit(&gs_handle);
1308
1309 return 1;
1310 }
1311 bmm150_interface_debug_print("bmm150: check interrupt pin polarity %s.\n", (interrupt_pin_polarity == BMM150_INTERRUPT_PIN_POLARITY_LOW) ? "ok" : "error");
1312
1313 /* set interrupt pin polarity high */
1315 if (res != 0)
1316 {
1317 bmm150_interface_debug_print("bmm150: set interrupt pin polarity failed.\n");
1318 (void)bmm150_deinit(&gs_handle);
1319
1320 return 1;
1321 }
1322 bmm150_interface_debug_print("bmm150: set interrupt pin polarity high.\n");
1323 res = bmm150_get_interrupt_pin_polarity(&gs_handle, &interrupt_pin_polarity);
1324 if (res != 0)
1325 {
1326 bmm150_interface_debug_print("bmm150: get interrupt pin polarity failed.\n");
1327 (void)bmm150_deinit(&gs_handle);
1328
1329 return 1;
1330 }
1331 bmm150_interface_debug_print("bmm150: check interrupt pin polarity %s.\n", (interrupt_pin_polarity == BMM150_INTERRUPT_PIN_POLARITY_HIGH) ? "ok" : "error");
1332
1333 /* bmm150_set_low_threshold/bmm150_get_low_threshold test */
1334 bmm150_interface_debug_print("bmm150: bmm150_set_low_threshold/bmm150_get_low_threshold test.\n");
1335
1336 reg2 = rand() % 100;
1337 res = bmm150_set_low_threshold(&gs_handle, reg2);
1338 if (res != 0)
1339 {
1340 bmm150_interface_debug_print("bmm150: set low threshold failed.\n");
1341 (void)bmm150_deinit(&gs_handle);
1342
1343 return 1;
1344 }
1345 bmm150_interface_debug_print("bmm150: set low threshold %d.\n", reg2);
1346 res = bmm150_get_low_threshold(&gs_handle, &reg2_check);
1347 if (res != 0)
1348 {
1349 bmm150_interface_debug_print("bmm150: get low threshold failed.\n");
1350 (void)bmm150_deinit(&gs_handle);
1351
1352 return 1;
1353 }
1354 bmm150_interface_debug_print("bmm150: check low threshold %s.\n", (reg2 == reg2_check) ? "ok" : "error");
1355
1356 /* bmm150_set_high_threshold/bmm150_get_high_threshold test */
1357 bmm150_interface_debug_print("bmm150: bmm150_set_high_threshold/bmm150_get_high_threshold test.\n");
1358
1359 reg2 = -(rand() % 100);
1360 res = bmm150_set_high_threshold(&gs_handle, reg2);
1361 if (res != 0)
1362 {
1363 bmm150_interface_debug_print("bmm150: set high threshold failed.\n");
1364 (void)bmm150_deinit(&gs_handle);
1365
1366 return 1;
1367 }
1368 bmm150_interface_debug_print("bmm150: set high threshold %d.\n", reg2);
1369 res = bmm150_get_high_threshold(&gs_handle, &reg2_check);
1370 if (res != 0)
1371 {
1372 bmm150_interface_debug_print("bmm150: get high threshold failed.\n");
1373 (void)bmm150_deinit(&gs_handle);
1374
1375 return 1;
1376 }
1377 bmm150_interface_debug_print("bmm150: check high threshold %s.\n", (reg2 == reg2_check) ? "ok" : "error");
1378
1379 /* bmm150_set_repxy_number/bmm150_get_repxy_number test */
1380 bmm150_interface_debug_print("bmm150: bmm150_set_repxy_number/bmm150_get_repxy_number test.\n");
1381
1382 reg = rand() % 0xFFU;
1383 res = bmm150_set_repxy_number(&gs_handle, reg);
1384 if (res != 0)
1385 {
1386 bmm150_interface_debug_print("bmm150: set repxy number failed.\n");
1387 (void)bmm150_deinit(&gs_handle);
1388
1389 return 1;
1390 }
1391 bmm150_interface_debug_print("bmm150: set repxy number %d.\n", reg);
1392 res = bmm150_get_repxy_number(&gs_handle, &reg_check);
1393 if (res != 0)
1394 {
1395 bmm150_interface_debug_print("bmm150: get repxy number failed.\n");
1396 (void)bmm150_deinit(&gs_handle);
1397
1398 return 1;
1399 }
1400 bmm150_interface_debug_print("bmm150: check repxy number %s.\n", (reg == reg_check) ? "ok" : "error");
1401
1402 /* bmm150_set_repz_number/bmm150_get_repz_number test */
1403 bmm150_interface_debug_print("bmm150: bmm150_set_repz_number/bmm150_get_repz_number test.\n");
1404
1405 reg = rand() % 0xFFU;
1406 res = bmm150_set_repz_number(&gs_handle, reg);
1407 if (res != 0)
1408 {
1409 bmm150_interface_debug_print("bmm150: set repz number failed.\n");
1410 (void)bmm150_deinit(&gs_handle);
1411
1412 return 1;
1413 }
1414 bmm150_interface_debug_print("bmm150: set repz number %d.\n", reg);
1415 res = bmm150_get_repz_number(&gs_handle, &reg_check);
1416 if (res != 0)
1417 {
1418 bmm150_interface_debug_print("bmm150: get repz number failed.\n");
1419 (void)bmm150_deinit(&gs_handle);
1420
1421 return 1;
1422 }
1423 bmm150_interface_debug_print("bmm150: check repz number %s.\n", (reg == reg_check) ? "ok" : "error");
1424
1425 /* bmm150_interrupt_threshold_convert_to_register/bmm150_interrupt_threshold_convert_to_data test */
1426 bmm150_interface_debug_print("bmm150: bmm150_interrupt_threshold_convert_to_register/bmm150_interrupt_threshold_convert_to_data test.\n");
1427
1428 ut = (float)(rand() % 1000) / 10.0f;
1429 res = bmm150_interrupt_threshold_convert_to_register(&gs_handle, ut, &reg2);
1430 if (res != 0)
1431 {
1432 bmm150_interface_debug_print("bmm150: interrupt threshold convert to register failed.\n");
1433 (void)bmm150_deinit(&gs_handle);
1434
1435 return 1;
1436 }
1437 bmm150_interface_debug_print("bmm150: set interrupt threshold %0.2fuT.\n", ut);
1438 res = bmm150_interrupt_threshold_convert_to_data(&gs_handle, reg2, &ut_check);
1439 if (res != 0)
1440 {
1441 bmm150_interface_debug_print("bmm150: interrupt threshold convert to data failed.\n");
1442 (void)bmm150_deinit(&gs_handle);
1443
1444 return 1;
1445 }
1446 bmm150_interface_debug_print("bmm150: check interrupt threshold %0.2fuT.\n", ut_check);
1447
1448 /* bmm150_get_self_test_x test */
1449 bmm150_interface_debug_print("bmm150: bmm150_get_self_test_x test.\n");
1450
1451 /* get self test x */
1452 res = bmm150_get_self_test_x(&gs_handle, &enable);
1453 if (res != 0)
1454 {
1455 bmm150_interface_debug_print("bmm150: get self test x failed.\n");
1456 (void)bmm150_deinit(&gs_handle);
1457
1458 return 1;
1459 }
1460 bmm150_interface_debug_print("bmm150: check self test x %s.\n", (enable == BMM150_BOOL_TRUE) ? "true" : "false");
1461
1462 /* bmm150_get_self_test_y test */
1463 bmm150_interface_debug_print("bmm150: bmm150_get_self_test_y test.\n");
1464
1465 /* get self test y */
1466 res = bmm150_get_self_test_y(&gs_handle, &enable);
1467 if (res != 0)
1468 {
1469 bmm150_interface_debug_print("bmm150: get self test y failed.\n");
1470 (void)bmm150_deinit(&gs_handle);
1471
1472 return 1;
1473 }
1474 bmm150_interface_debug_print("bmm150: check self test y %s.\n", (enable == BMM150_BOOL_TRUE) ? "true" : "false");
1475
1476 /* bmm150_get_self_test_z test */
1477 bmm150_interface_debug_print("bmm150: bmm150_get_self_test_z test.\n");
1478
1479 /* get self test z */
1480 res = bmm150_get_self_test_z(&gs_handle, &enable);
1481 if (res != 0)
1482 {
1483 bmm150_interface_debug_print("bmm150: get self test z failed.\n");
1484 (void)bmm150_deinit(&gs_handle);
1485
1486 return 1;
1487 }
1488 bmm150_interface_debug_print("bmm150: check self test z %s.\n", (enable == BMM150_BOOL_TRUE) ? "true" : "false");
1489
1490 /* bmm150_get_data_ready_status test */
1491 bmm150_interface_debug_print("bmm150: bmm150_get_data_ready_status test.\n");
1492
1493 /* get data ready status */
1494 res = bmm150_get_data_ready_status(&gs_handle, &enable);
1495 if (res != 0)
1496 {
1497 bmm150_interface_debug_print("bmm150: get data ready status failed.\n");
1498 (void)bmm150_deinit(&gs_handle);
1499
1500 return 1;
1501 }
1502 bmm150_interface_debug_print("bmm150: check data ready status %s.\n", (enable == BMM150_BOOL_TRUE) ? "true" : "false");
1503
1504 /* bmm150_get_interrupt_status test */
1505 bmm150_interface_debug_print("bmm150: bmm150_get_interrupt_status test.\n");
1506
1507 /* data overrun */
1509 if (res != 0)
1510 {
1511 bmm150_interface_debug_print("bmm150: get interrupt status failed.\n");
1512 (void)bmm150_deinit(&gs_handle);
1513
1514 return 1;
1515 }
1516 bmm150_interface_debug_print("bmm150: check data overrun interrupt status %s.\n", (enable == BMM150_BOOL_TRUE) ? "true" : "false");
1517
1518 /* overflow */
1520 if (res != 0)
1521 {
1522 bmm150_interface_debug_print("bmm150: get interrupt status failed.\n");
1523 (void)bmm150_deinit(&gs_handle);
1524
1525 return 1;
1526 }
1527 bmm150_interface_debug_print("bmm150: check overflow interrupt status %s.\n", (enable == BMM150_BOOL_TRUE) ? "true" : "false");
1528
1529 /* high threshold z */
1531 if (res != 0)
1532 {
1533 bmm150_interface_debug_print("bmm150: get interrupt status failed.\n");
1534 (void)bmm150_deinit(&gs_handle);
1535
1536 return 1;
1537 }
1538 bmm150_interface_debug_print("bmm150: check high threshold z interrupt status %s.\n", (enable == BMM150_BOOL_TRUE) ? "true" : "false");
1539
1540 /* high threshold y */
1542 if (res != 0)
1543 {
1544 bmm150_interface_debug_print("bmm150: get interrupt status failed.\n");
1545 (void)bmm150_deinit(&gs_handle);
1546
1547 return 1;
1548 }
1549 bmm150_interface_debug_print("bmm150: check high threshold y interrupt status %s.\n", (enable == BMM150_BOOL_TRUE) ? "true" : "false");
1550
1551 /* high threshold x */
1553 if (res != 0)
1554 {
1555 bmm150_interface_debug_print("bmm150: get interrupt status failed.\n");
1556 (void)bmm150_deinit(&gs_handle);
1557
1558 return 1;
1559 }
1560 bmm150_interface_debug_print("bmm150: check high threshold x interrupt status %s.\n", (enable == BMM150_BOOL_TRUE) ? "true" : "false");
1561
1562 /* low threshold z */
1564 if (res != 0)
1565 {
1566 bmm150_interface_debug_print("bmm150: get interrupt status failed.\n");
1567 (void)bmm150_deinit(&gs_handle);
1568
1569 return 1;
1570 }
1571 bmm150_interface_debug_print("bmm150: check low threshold z interrupt status %s.\n", (enable == BMM150_BOOL_TRUE) ? "true" : "false");
1572
1573 /* low threshold y */
1575 if (res != 0)
1576 {
1577 bmm150_interface_debug_print("bmm150: get interrupt status failed.\n");
1578 (void)bmm150_deinit(&gs_handle);
1579
1580 return 1;
1581 }
1582 bmm150_interface_debug_print("bmm150: check low threshold y interrupt status %s.\n", (enable == BMM150_BOOL_TRUE) ? "true" : "false");
1583
1584 /* low threshold x */
1586 if (res != 0)
1587 {
1588 bmm150_interface_debug_print("bmm150: get interrupt status failed.\n");
1589 (void)bmm150_deinit(&gs_handle);
1590
1591 return 1;
1592 }
1593 bmm150_interface_debug_print("bmm150: check low threshold x interrupt status %s.\n", (enable == BMM150_BOOL_TRUE) ? "true" : "false");
1594
1595 /* bmm150_soft_reset test */
1596 bmm150_interface_debug_print("bmm150: bmm150_soft_reset test.\n");
1597
1598 /* soft reset */
1599 res = bmm150_soft_reset(&gs_handle);
1600 if (res != 0)
1601 {
1602 bmm150_interface_debug_print("bmm150: soft reset failed.\n");
1603 (void)bmm150_deinit(&gs_handle);
1604
1605 return 1;
1606 }
1607 bmm150_interface_debug_print("bmm150: check soft reset %s.\n", (res == 0) ? "ok" : "error");
1608
1609 /* finish register test */
1610 bmm150_interface_debug_print("bmm150: finish register test.\n");
1611 (void)bmm150_deinit(&gs_handle);
1612
1613 return 0;
1614}
driver bmm150 register test header file
uint8_t bmm150_get_channel_x(bmm150_handle_t *handle, bmm150_bool_t *enable)
get channel x status
uint8_t bmm150_get_interrupt_pin_polarity(bmm150_handle_t *handle, bmm150_interrupt_pin_polarity_t *polarity)
get interrupt pin polarity
uint8_t bmm150_soft_reset(bmm150_handle_t *handle)
soft reset
uint8_t bmm150_get_channel_z(bmm150_handle_t *handle, bmm150_bool_t *enable)
get channel z status
uint8_t bmm150_get_mode(bmm150_handle_t *handle, bmm150_mode_t *mode)
get mode
uint8_t bmm150_deinit(bmm150_handle_t *handle)
close the chip
uint8_t bmm150_get_repxy_number(bmm150_handle_t *handle, uint8_t *number)
get repxy number
uint8_t bmm150_init(bmm150_handle_t *handle)
initialize the chip
bmm150_data_rate_t
bmm150 data rate enumeration definition
uint8_t bmm150_get_spi_wire(bmm150_handle_t *handle, bmm150_spi_wire_t *wire)
get spi wire
uint8_t bmm150_get_self_test(bmm150_handle_t *handle, bmm150_bool_t *enable)
get self test status
uint8_t bmm150_set_data_ready_pin(bmm150_handle_t *handle, bmm150_bool_t enable)
enable or disable data ready pin
uint8_t bmm150_get_interface(bmm150_handle_t *handle, bmm150_interface_t *interface)
get the chip interface
uint8_t bmm150_get_data_ready_pin(bmm150_handle_t *handle, bmm150_bool_t *enable)
get data ready pin status
uint8_t bmm150_set_repz_number(bmm150_handle_t *handle, uint8_t number)
set repz number
uint8_t bmm150_get_low_threshold(bmm150_handle_t *handle, int8_t *threshold)
get low threshold
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_data_ready_pin_polarity(bmm150_handle_t *handle, bmm150_data_ready_pin_polarity_t polarity)
set data ready pin polarity
uint8_t bmm150_get_interrupt_latch(bmm150_handle_t *handle, bmm150_bool_t *enable)
get interrupt latch status
uint8_t bmm150_set_interrupt_pin_polarity(bmm150_handle_t *handle, bmm150_interrupt_pin_polarity_t polarity)
set interrupt pin polarity
uint8_t bmm150_set_interface(bmm150_handle_t *handle, bmm150_interface_t interface)
set the chip interface
bmm150_spi_wire_t
bmm150 spi wire enumeration definition
uint8_t bmm150_set_spi_wire(bmm150_handle_t *handle, bmm150_spi_wire_t wire)
set spi wire
uint8_t bmm150_get_channel_y(bmm150_handle_t *handle, bmm150_bool_t *enable)
get channel y status
uint8_t bmm150_get_self_test_y(bmm150_handle_t *handle, bmm150_bool_t *enable)
get self test y result
bmm150_interface_t
bmm150 interface enumeration definition
uint8_t bmm150_get_data_ready_status(bmm150_handle_t *handle, bmm150_bool_t *enable)
get data ready status
uint8_t bmm150_interrupt_threshold_convert_to_data(bmm150_handle_t *handle, int8_t reg, float *ut)
convert the register raw data to the interrupt threshold
uint8_t bmm150_set_high_threshold(bmm150_handle_t *handle, int8_t threshold)
set high threshold
uint8_t bmm150_get_self_test_x(bmm150_handle_t *handle, bmm150_bool_t *enable)
get self test x result
uint8_t bmm150_set_channel_y(bmm150_handle_t *handle, bmm150_bool_t enable)
enable or disable channel y
bmm150_bool_t
bmm150 bool enumeration definition
uint8_t bmm150_info(bmm150_info_t *info)
get chip's information
uint8_t bmm150_set_mode(bmm150_handle_t *handle, bmm150_mode_t mode)
set mode
uint8_t bmm150_get_high_threshold(bmm150_handle_t *handle, int8_t *threshold)
get high threshold
uint8_t bmm150_set_power_on(bmm150_handle_t *handle, bmm150_bool_t enable)
set power on
bmm150_advanced_self_test_t
bmm150 advanced self test enumeration definition
uint8_t bmm150_set_low_threshold(bmm150_handle_t *handle, int8_t threshold)
set low threshold
bmm150_interrupt_pin_polarity_t
bmm150 interrupt pin polarity enumeration definition
uint8_t bmm150_get_data_rate(bmm150_handle_t *handle, bmm150_data_rate_t *rate)
get data rate
uint8_t bmm150_get_interrupt_status(bmm150_handle_t *handle, bmm150_interrupt_status_t status, bmm150_bool_t *enable)
get interrupt status
struct bmm150_handle_s bmm150_handle_t
bmm150 handle structure definition
bmm150_mode_t
bmm150 mode enumeration definition
uint8_t bmm150_get_self_test_z(bmm150_handle_t *handle, bmm150_bool_t *enable)
get self test z result
uint8_t bmm150_set_self_test(bmm150_handle_t *handle, bmm150_bool_t enable)
enable or disable self test
uint8_t bmm150_set_interrupt_latch(bmm150_handle_t *handle, bmm150_bool_t enable)
enable or disable interrupt latch
bmm150_data_ready_pin_polarity_t
bmm150 data ready pin polarity enumeration definition
uint8_t bmm150_set_channel_z(bmm150_handle_t *handle, bmm150_bool_t enable)
enable or disable channel z
uint8_t bmm150_get_interrupt_pin(bmm150_handle_t *handle, bmm150_bool_t *enable)
get interrupt pin status
uint8_t bmm150_get_repz_number(bmm150_handle_t *handle, uint8_t *number)
get repz number
uint8_t bmm150_get_interrupt(bmm150_handle_t *handle, bmm150_interrupt_status_t status, bmm150_bool_t *enable)
get interrupt status
uint8_t bmm150_set_repxy_number(bmm150_handle_t *handle, uint8_t number)
set repxy number
uint8_t bmm150_get_power_on(bmm150_handle_t *handle, bmm150_bool_t *enable)
get power on
uint8_t bmm150_get_data_ready_pin_polarity(bmm150_handle_t *handle, bmm150_data_ready_pin_polarity_t *polarity)
get data ready pin polarity
struct bmm150_info_s bmm150_info_t
bmm150 information structure definition
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_get_advanced_self_test(bmm150_handle_t *handle, bmm150_advanced_self_test_t *test)
get advanced self test
uint8_t bmm150_interrupt_threshold_convert_to_register(bmm150_handle_t *handle, float ut, int8_t *reg)
convert the interrupt threshold to the register raw data
uint8_t bmm150_set_data_rate(bmm150_handle_t *handle, bmm150_data_rate_t rate)
set data rate
uint8_t bmm150_get_addr_pin(bmm150_handle_t *handle, bmm150_address_t *addr_pin)
get the iic address pin
uint8_t bmm150_set_channel_x(bmm150_handle_t *handle, bmm150_bool_t enable)
enable or disable channel x
@ BMM150_DATA_RATE_30HZ
@ BMM150_DATA_RATE_25HZ
@ BMM150_DATA_RATE_2HZ
@ BMM150_DATA_RATE_15HZ
@ BMM150_DATA_RATE_20HZ
@ BMM150_DATA_RATE_10HZ
@ BMM150_DATA_RATE_6HZ
@ BMM150_DATA_RATE_8HZ
@ 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_SPI_WIRE_4
@ BMM150_SPI_WIRE_3
@ BMM150_INTERFACE_SPI
@ BMM150_INTERFACE_IIC
@ BMM150_BOOL_FALSE
@ BMM150_BOOL_TRUE
@ BMM150_ADVANCED_SELF_TEST_NORMAL
@ BMM150_ADVANCED_SELF_TEST_NEGATIVE
@ BMM150_ADVANCED_SELF_TEST_POSITIVE
@ BMM150_INTERRUPT_PIN_POLARITY_LOW
@ BMM150_INTERRUPT_PIN_POLARITY_HIGH
@ BMM150_MODE_SLEEP
@ BMM150_MODE_FORCED
@ BMM150_MODE_NORMAL
@ BMM150_DATA_READY_PIN_POLARITY_HIGH
@ BMM150_DATA_READY_PIN_POLARITY_LOW
@ BMM150_ADDRESS_CSB_SDO_01
@ BMM150_ADDRESS_CSB_SDO_11
@ BMM150_ADDRESS_CSB_SDO_00
@ BMM150_ADDRESS_CSB_SDO_10
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
uint8_t bmm150_register_test(bmm150_interface_t interface, bmm150_address_t addr_pin)
register test
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]