27 #include <mraa/common.hpp>
28 #include <mraa/i2c.hpp>
30 #include <mraa/gpio.hpp>
32 #if defined(SWIGJAVA) || defined(JAVACALLBACK)
33 #include "../IsrCallback.h"
36 #define LSM9DS0_I2C_BUS 1
37 #define LSM9DS0_DEFAULT_XM_ADDR 0x1d
38 #define LSM9DS0_DEFAULT_GYRO_ADDR 0x6b
95 REG_WHO_AM_I_G = 0x0f,
99 REG_CTRL_REG1_G = 0x20,
100 REG_CTRL_REG2_G = 0x21,
101 REG_CTRL_REG3_G = 0x22,
102 REG_CTRL_REG4_G = 0x23,
103 REG_CTRL_REG5_G = 0x24,
105 REG_REFERENCE_G = 0x25,
109 REG_STATUS_REG_G = 0x27,
111 REG_OUT_X_L_G = 0x28,
112 REG_OUT_X_H_G = 0x29,
113 REG_OUT_Y_L_G = 0x2a,
114 REG_OUT_Y_H_G = 0x2b,
115 REG_OUT_Z_L_G = 0x2c,
116 REG_OUT_Z_H_G = 0x2d,
118 REG_FIFO_CTRL_REG_G = 0x2e,
119 REG_FIFO_SRC_REG_G = 0x2f,
121 REG_INT1_CFG_G = 0x30,
122 REG_INT1_SRC_G = 0x31,
124 REG_INT1_TSH_XH_G = 0x32,
125 REG_INT1_TSH_XL_G = 0x33,
126 REG_INT1_TSH_YH_G = 0x34,
127 REG_INT1_TSH_YL_G = 0x35,
128 REG_INT1_TSH_ZH_G = 0x36,
129 REG_INT1_TSH_ZL_G = 0x37,
133 REG_INT1_DURATION_G = 0x38
140 CTRL_REG1_G_YEN = 0x01,
141 CTRL_REG1_G_XEN = 0x02,
142 CTRL_REG1_G_ZEN = 0x04,
143 CTRL_REG1_G_PD = 0x08,
145 CTRL_REG1_G_BW0 = 0x10,
146 CTRL_REG1_G_BW1 = 0x20,
147 _CTRL_REG1_G_BW_MASK = 3,
148 _CTRL_REG1_G_BW_SHIFT = 4,
150 CTRL_REG1_G_DR0 = 0x40,
151 CTRL_REG1_G_DR1 = 0x80,
152 _CTRL_REG1_G_DR_MASK = 3,
153 _CTRL_REG1_G_DR_SHIFT = 6,
164 CTRL_REG1_G_ODR0 = 0x10,
165 CTRL_REG1_G_ODR1 = 0x20,
166 CTRL_REG1_G_ODR2 = 0x40,
167 CTRL_REG1_G_ODR3 = 0x80,
168 _CTRL_REG1_G_ODR_MASK = 15,
169 _CTRL_REG1_G_ODR_SHIFT = 4
200 CTRL_REG2_G_HPCF0 = 0x01,
201 CTRL_REG2_G_HPCF1 = 0x02,
202 CTRL_REG2_G_HPCF2 = 0x04,
203 CTRL_REG2_G_HPCF3 = 0x08,
204 _CTRL_REG2_G_HPCF_MASK = 15,
205 _CTRL_REG2_G_HPCF_SHIFT = 0,
207 CTRL_REG2_G_HPM0 = 0x10,
208 CTRL_REG2_G_HPM1 = 0x20,
209 _CTRL_REG2_G_HPM_MASK = 3,
210 _CTRL_REG2_G_HPM_SHIFT = 4,
242 G_HPM_NORMAL_RESET_HPF = 0,
245 G_HPM_AUTORESET_ON_INTR = 3
252 CTRL_REG3_G_I2_EMPTY = 0x01,
253 CTRL_REG3_G_I2_ORUN = 0x02,
254 CTRL_REG3_G_I2_WTM = 0x04,
255 CTRL_REG3_G_I2_DRDY = 0x08,
256 CTRL_REG3_G_PP_OD = 0x10,
257 CTRL_REG3_G_H_LACTIVE = 0x20,
258 CTRL_REG3_G_I1_BOOT = 0x40,
259 CTRL_REG3_G_I1_INT1 = 0x80,
266 CTRL_REG4_G_SIM = 0x01,
268 CTRL_REG4_G_ST0 = 0x02,
269 CTRL_REG4_G_ST1 = 0x04,
270 _CTRL_REG4_G_ST_MASK = 3,
271 _CTRL_REG4_G_ST_SHIFT = 1,
275 CTRL_REG4_G_FS0 = 0x10,
276 CTRL_REG4_G_FS1 = 0x20,
277 _CTRL_REG4_G_FS_MASK = 3,
278 _CTRL_REG4_G_FS_SHIFT = 4,
280 CTRL_REG4_G_BLE = 0x40,
281 CTRL_REG4_G_BDU = 0x80
312 CTRL_REG5_G_OUTSEL0 = 0x01,
313 CTRL_REG5_G_OUTSEL1 = 0x02,
314 _CTRL_REG5_G_OUTSEL_MASK = 3,
315 _CTRL_REG5_G_OUTSEL_SHIFT = 0,
317 CTRL_REG5_G_INT1SEL0 = 0x04,
318 CTRL_REG5_G_INT1SEL1 = 0x08,
319 _CTRL_REG5_G_INT1SEL_MASK = 3,
320 _CTRL_REG5_G_INT1SEL_SHIFT = 2,
322 CTRL_REG5_G_HPEN = 0x10,
326 CTRL_REG5_G_FIFO_EN = 0x40,
327 CTRL_REG5_G_BOOT = 0x80
346 STATUS_REG_G_XDA = 0x01,
347 STATUS_REG_G_YDA = 0x02,
348 STATUS_REG_G_ZDA = 0x04,
349 STATUS_REG_G_ZYXDA = 0x08,
351 STATUS_REG_G_XOR = 0x10,
352 STATUS_REG_G_YOR = 0x20,
353 STATUS_REG_G_ZOR = 0x40,
354 STATUS_REG_G_ZYXOR = 0x80
361 FIFO_CTRL_REG_G_WTM0 = 0x01,
362 FIFO_CTRL_REG_G_WTM1 = 0x02,
363 FIFO_CTRL_REG_G_WTM2 = 0x04,
364 FIFO_CTRL_REG_G_WTM3 = 0x08,
365 FIFO_CTRL_REG_G_WTM4 = 0x10,
366 _FIFO_CTRL_REG_G_WTM_MASK = 31,
367 _FIFO_CTRL_REG_G_WTM_SHIFT = 0,
369 FIFO_CTRL_REG_G_FM0 = 0x20,
370 FIFO_CTRL_REG_G_FM1 = 0x40,
371 FIFO_CTRL_REG_G_FM2 = 0x80,
372 _FIFO_CTRL_REG_G_FM_MASK = 7,
373 _FIFO_CTRL_REG_G_FM_SHIFT = 5,
387 G_FM_STREAM2FIFO = 3,
388 G_FM_BYPASS2STREAM = 4
398 FIFO_CTRL_REG_G_FSS0 = 0x01,
399 FIFO_CTRL_REG_G_FSS1 = 0x02,
400 FIFO_CTRL_REG_G_FSS2 = 0x04,
401 FIFO_CTRL_REG_G_FSS3 = 0x08,
402 FIFO_CTRL_REG_G_FSS4 = 0x10,
403 _FIFO_CTRL_REG_G_FSS_MASK = 31,
404 _FIFO_CTRL_REG_G_FSS_SHIFT = 0,
406 FIFO_CTRL_REG_G_EMPTY = 0x20,
407 FIFO_CTRL_REG_G_OVRN = 0x40,
408 FIFO_CTRL_REG_G_WTM = 0x80
416 INT1_CFG_G_XLIE = 0x01,
417 INT1_CFG_G_XHIE = 0x02,
418 INT1_CFG_G_YLIE = 0x04,
419 INT1_CFG_G_YHIE = 0x08,
420 INT1_CFG_G_ZLIE = 0x10,
421 INT1_CFG_G_ZHIE = 0x20,
423 INT1_CFG_G_LIR = 0x40,
424 INT1_CFG_G_ANDOR = 0x80
432 INT1_SRC_G_XL = 0x01,
433 INT1_SRC_G_XH = 0x02,
434 INT1_SRC_G_YL = 0x04,
435 INT1_SRC_G_YH = 0x08,
436 INT1_SRC_G_ZL = 0x10,
437 INT1_SRC_G_ZH = 0x20,
453 REG_OUT_TEMP_L_XM = 0x05,
454 REG_OUT_TEMP_H_XM = 0x06,
456 REG_STATUS_REG_M = 0x07,
458 REG_OUT_X_L_M = 0x08,
459 REG_OUT_X_H_M = 0x09,
460 REG_OUT_Y_L_M = 0x0a,
461 REG_OUT_Y_H_M = 0x0b,
462 REG_OUT_Z_L_M = 0x0c,
463 REG_OUT_Z_H_M = 0x0d,
467 REG_WHO_AM_I_XM = 0x0f,
471 REG_INT_CTRL_REG_M = 0x12,
472 REG_INT_SRC_REG_M = 0x13,
474 REG_INT_THS_L_M = 0x14,
475 REG_INT_THS_H_M = 0x15,
477 REG_OFFSET_X_L_M = 0x16,
478 REG_OFFSET_X_H_M = 0x17,
479 REG_OFFSET_Y_L_M = 0x18,
480 REG_OFFSET_Y_H_M = 0x19,
481 REG_OFFSET_Z_L_M = 0x1a,
482 REG_OFFSET_Z_H_M = 0x1b,
484 REG_REFERENCE_X = 0x1c,
485 REG_REFERENCE_Y = 0x1d,
486 REG_REFERENCE_Z = 0x1e,
488 REG_CTRL_REG0_XM = 0x1f,
489 REG_CTRL_REG1_XM = 0x20,
490 REG_CTRL_REG2_XM = 0x21,
491 REG_CTRL_REG3_XM = 0x22,
492 REG_CTRL_REG4_XM = 0x23,
493 REG_CTRL_REG5_XM = 0x24,
494 REG_CTRL_REG6_XM = 0x25,
495 REG_CTRL_REG7_XM = 0x26,
497 REG_STATUS_REG_A = 0x27,
499 REG_OUT_X_L_A = 0x28,
500 REG_OUT_X_H_A = 0x29,
501 REG_OUT_Y_L_A = 0x2a,
502 REG_OUT_Y_H_A = 0x2b,
503 REG_OUT_Z_L_A = 0x2c,
504 REG_OUT_Z_H_A = 0x2d,
506 REG_FIFO_CTRL_REG = 0x2e,
507 REG_FIFO_SRC_REG = 0x2f,
509 REG_INT_GEN_1_REG = 0x30,
510 REG_INT_GEN_1_SRC = 0x31,
511 REG_INT_GEN_1_THS = 0x32,
512 REG_INT_GEN_1_DURATION = 0x33,
514 REG_INT_GEN_2_REG = 0x34,
515 REG_INT_GEN_2_SRC = 0x35,
516 REG_INT_GEN_2_THS = 0x36,
517 REG_INT_GEN_2_DURATION = 0x37,
519 REG_CLICK_CFG = 0x38,
520 REG_CLICK_SRC = 0x39,
521 REG_CLICK_THS = 0x3a,
523 REG_TIME_LIMIT = 0x3b,
524 REG_TIME_LATENCY = 0x3c,
525 REG_TIME_WINDOW = 0x3d,
535 STATUS_REG_M_XMDA = 0x01,
536 STATUS_REG_M_YMDA = 0x02,
537 STATUS_REG_M_ZMDA = 0x04,
538 STATUS_REG_M_ZYXMDA = 0x08,
540 STATUS_REG_M_XMOR = 0x10,
541 STATUS_REG_M_YMOR = 0x20,
542 STATUS_REG_M_ZMOR = 0x40,
543 STATUS_REG_M_ZYXMOR = 0x80
550 INT_CTRL_REG_M_MIEN = 0x01,
551 INT_CTRL_REG_M_4D = 0x02,
552 INT_CTRL_REG_M_IEL = 0x04,
553 INT_CTRL_REG_M_IEA = 0x08,
554 INT_CTRL_REG_M_PP_OD = 0x10,
555 INT_CTRL_REG_M_ZMIEN = 0x20,
556 INT_CTRL_REG_M_YMIEN = 0x40,
557 INT_CTRL_REG_M_XMIEN = 0x80
564 INT_SRC_REG_M_MINT = 0x01,
565 INT_SRC_REG_M_MROI = 0x02,
566 INT_SRC_REG_M_NTH_Z = 0x04,
567 INT_SRC_REG_M_NTH_Y = 0x08,
568 INT_SRC_REG_M_NTH_X = 0x10,
569 INT_SRC_REG_M_PTH_Z = 0x20,
570 INT_SRC_REG_M_PTH_Y = 0x40,
571 INT_SRC_REG_M_PTH_X = 0x80
579 CTRL_REG0_XM_HPIS2 = 0x01,
580 CTRL_REG0_XM_HPIS1 = 0x02,
582 CTRL_REG0_XM_HP_CLICK = 0x04,
586 CTRL_REG0_XM_WTM_LEN = 0x20,
587 CTRL_REG0_XM_FIFO_EN = 0x40,
588 CTRL_REG0_XM_BOOT = 0x80
595 CTRL_REG1_XM_AXEN = 0x01,
596 CTRL_REG1_XM_AYEN = 0x02,
597 CTRL_REG1_XM_AZEN = 0x03,
599 CTRL_REG1_XM_BDU = 0x04,
601 CTRL_REG1_XM_AODR0 = 0x10,
602 CTRL_REG1_XM_AODR1 = 0x20,
603 CTRL_REG1_XM_AODR2 = 0x40,
604 CTRL_REG1_XM_AODR3 = 0x80,
605 _CTRL_REG1_XM_AODR_MASK = 15,
606 _CTRL_REG1_XM_AODR_SHIFT = 4
631 CTRL_REG2_XM_SIM = 0x01,
633 CTRL_REG2_XM_AST0 = 0x02,
634 CTRL_REG2_XM_AST1 = 0x04,
635 _CTRL_REG2_XM_AST_MASK = 3,
636 _CTRL_REG2_XM_AST_SHIFT = 1,
638 CTRL_REG2_XM_AFS0 = 0x08,
639 CTRL_REG2_XM_AFS1 = 0x10,
640 CTRL_REG2_XM_AFS2 = 0x20,
641 _CTRL_REG2_XM_AFS_MASK = 7,
642 _CTRL_REG2_XM_AFS_SHIFT = 3,
644 CTRL_REG2_XM_ABW0 = 0x40,
645 CTRL_REG2_XM_ABW1 = 0x80,
646 _CTRL_REG2_XM_ABW_MASK = 3,
647 _CTRL_REG2_XM_ABW_SHIFT = 6
687 CTRL_REG3_XM_P1_EMPTY = 0x01,
688 CTRL_REG3_XM_P1_DRDYM = 0x02,
689 CTRL_REG3_XM_P1_DRDYA = 0x04,
690 CTRL_REG3_XM_P1_INTM = 0x08,
691 CTRL_REG3_XM_P1_INT2 = 0x10,
692 CTRL_REG3_XM_P1_INT1 = 0x20,
693 CTRL_REG3_XM_P1_TAP = 0x40,
694 CTRL_REG3_XM_P1_BOOT = 0x80
701 CTRL_REG4_XM_P2_WTM = 0x01,
702 CTRL_REG4_XM_P2_OVERRUN = 0x02,
703 CTRL_REG4_XM_P2_DRDYM = 0x04,
704 CTRL_REG4_XM_P2_DRDYA = 0x08,
705 CTRL_REG4_XM_P2_INTM = 0x10,
706 CTRL_REG4_XM_P2_INT2 = 0x20,
707 CTRL_REG4_XM_P2_INT1 = 0x40,
708 CTRL_REG4_XM_P2_TAP = 0x80
715 CTRL_REG5_XM_LIR1 = 0x01,
716 CTRL_REG5_XM_LIR2 = 0x02,
718 CTRL_REG5_XM_ODR0 = 0x04,
719 CTRL_REG5_XM_ODR1 = 0x08,
720 CTRL_REG5_XM_ODR2 = 0x10,
721 _CTRL_REG5_XM_ODR_MASK = 7,
722 _CTRL_REG5_XM_ODR_SHIFT = 2,
724 CTRL_REG5_XM_RES0 = 0x20,
725 CTRL_REG5_XM_RES1 = 0x40,
726 _CTRL_REG5_XM_RES_MASK = 3,
727 _CTRL_REG5_XM_RES_SHIFT = 5,
729 CTRL_REG5_XM_TEMP_EN = 0x80
763 CTRL_REG6_XM_MFS0 = 0x20,
764 CTRL_REG6_XM_MFS1 = 0x40,
765 _CTRL_REG6_XM_MFS_MASK = 3,
766 _CTRL_REG6_XM_MFS_SHIFT = 5
785 CTRL_REG7_XM_MD0 = 0x01,
786 CTRL_REG7_XM_MD1 = 0x02,
787 _CTRL_REG7_XM_MD_MASK = 3,
788 _CTRL_REG7_XM_MD_SHIFT = 0,
790 CTRL_REG7_XM_MLP = 0x04,
794 CTRL_REG7_XM_AFDS = 0x20,
796 CTRL_REG7_XM_AHPM0 = 0x40,
797 CTRL_REG7_XM_AHPM1 = 0x80,
798 _CTRL_REG7_XM_AHPM_MASK = 3,
799 _CTRL_REG7_XM_AHPM_SHIFT = 6
806 XM_MD_CONTINUOUS = 0,
820 XM_AHPM_NORMAL_REF = 0,
821 XM_AHPM_REFERENCE = 1,
823 XM_AHPM_AUTORESET = 3
830 STATUS_REG_A_XADA = 0x01,
831 STATUS_REG_A_YADA = 0x02,
832 STATUS_REG_A_ZADA = 0x04,
833 STATUS_REG_A_ZYXADA = 0x08,
835 STATUS_REG_A_XAOR = 0x10,
836 STATUS_REG_A_YAOR = 0x20,
837 STATUS_REG_A_ZAOR = 0x40,
838 STATUS_REG_A_ZYXAOR = 0x80
845 FIFO_CTRL_REG_FTH0 = 0x01,
846 FIFO_CTRL_REG_FTH1 = 0x02,
847 FIFO_CTRL_REG_FTH2 = 0x04,
848 FIFO_CTRL_REG_FTH3 = 0x08,
849 FIFO_CTRL_REG_FTH4 = 0x10,
850 _FIFO_CTRL_REG_FTH_MASK = 31,
851 _FIFO_CTRL_REG_FTH_SHIFT = 0,
853 FIFO_CTRL_REG_FM0 = 0x20,
854 FIFO_CTRL_REG_FM1 = 0x40,
855 FIFO_CTRL_REG_FM2 = 0x80,
856 _FIFO_CTRL_REG_FM_MASK = 7,
857 _FIFO_CTRL_REG_FM_SHIFT = 5,
882 FIFO_CTRL_REG_FSS0 = 0x01,
883 FIFO_CTRL_REG_FSS1 = 0x02,
884 FIFO_CTRL_REG_FSS2 = 0x04,
885 FIFO_CTRL_REG_FSS3 = 0x08,
886 FIFO_CTRL_REG_FSS4 = 0x10,
887 _FIFO_CTRL_REG_FSS_MASK = 31,
888 _FIFO_CTRL_REG_FSS_SHIFT = 0,
890 FIFO_CTRL_REG_EMPTY = 0x20,
891 FIFO_CTRL_REG_OVRN = 0x40,
892 FIFO_CTRL_REG_WTM = 0x80
900 INT_GEN_X_REG_XLIE_XDOWNE = 0x01,
901 INT_GEN_X_REG_XHIE_XUPE = 0x02,
902 INT_GEN_X_REG_YLIE_YDOWNE = 0x04,
903 INT_GEN_X_REG_YHIE_YUPE = 0x08,
904 INT_GEN_X_REG_ZLIE_ZDOWNE = 0x10,
905 INT_GEN_X_REG_ZHIE_ZUPE = 0x20,
906 INT_GEN_X_REG_6D = 0x40,
907 INT_GEN_X_REG_AOI = 0x80
915 INT_GEN_X_SRC_XL = 0x01,
916 INT_GEN_X_SRC_XH = 0x02,
917 INT_GEN_X_SRC_YL = 0x04,
918 INT_GEN_X_SRC_YH = 0x08,
919 INT_GEN_X_SRC_ZL = 0x10,
920 INT_GEN_X_SRC_ZH = 0x20,
921 INT_GEN_X_SRC_IA = 0x40
930 INT_GEN_X_THS0 = 0x01,
931 INT_GEN_X_THS1 = 0x02,
932 INT_GEN_X_THS2 = 0x04,
933 INT_GEN_X_THS3 = 0x08,
934 INT_GEN_X_THS4 = 0x10,
935 INT_GEN_X_THS5 = 0x20,
936 INT_GEN_X_THS6 = 0x40,
937 _INT_GEN_X_THS_MASK = 127,
938 _INT_GEN_X_THS_SHIFT = 0
947 INT_GEN_X_DUR0 = 0x01,
948 INT_GEN_X_DUR1 = 0x02,
949 INT_GEN_X_DUR2 = 0x04,
950 INT_GEN_X_DUR3 = 0x08,
951 INT_GEN_X_DUR4 = 0x10,
952 INT_GEN_X_DUR5 = 0x20,
953 INT_GEN_X_DUR6 = 0x40,
954 _INT_GEN_X_DUR_MASK = 127,
955 _INT_GEN_X_DUR_SHIFT = 0
964 CLICK_CONFIG_XS = 0x01,
965 CLICK_CONFIG_XD = 0x02,
966 CLICK_CONFIG_YS = 0x04,
967 CLICK_CONFIG_YD = 0x08,
968 CLICK_CONFIG_ZS = 0x10,
969 CLICK_CONFIG_ZD = 0x20
981 CLICK_SRC_SIGN = 0x08,
982 CLICK_SRC_SCLICK = 0x10,
983 CLICK_SRC_DCLICK = 0x20,
993 CLICK_THS_THS0 = 0x01,
994 CLICK_THS_THS1 = 0x02,
995 CLICK_THS_THS2 = 0x04,
996 CLICK_THS_THS3 = 0x08,
997 CLICK_THS_THS4 = 0x10,
998 CLICK_THS_THS5 = 0x20,
999 CLICK_THS_THS6 = 0x40,
1000 _CLICK_THS_THS_MASK = 127,
1001 _CLICK_THS_THS_SHIFT = 0
1010 CLICK_TIME_LIMIT_TLI0 = 0x01,
1011 CLICK_TIME_LIMIT_TLI1 = 0x02,
1012 CLICK_TIME_LIMIT_TLI2 = 0x04,
1013 CLICK_TIME_LIMIT_TLI3 = 0x08,
1014 CLICK_TIME_LIMIT_TLI4 = 0x10,
1015 CLICK_TIME_LIMIT_TLI5 = 0x20,
1016 CLICK_TIME_LIMIT_TLI6 = 0x40,
1017 _CLICK_TIME_LIMIT_TLI_MASK = 127,
1018 _CLICK_TIME_LIMIT_TLI_SHIFT = 0
1027 ACT_THS_ACTH0 = 0x01,
1028 ACT_THS_ACTH1 = 0x02,
1029 ACT_THS_ACTH2 = 0x04,
1030 ACT_THS_ACTH3 = 0x08,
1031 ACT_THS_ACTH4 = 0x10,
1032 ACT_THS_ACTH5 = 0x20,
1033 ACT_THS_ACTH6 = 0x40,
1034 _ACT_THS_ACTH_MASK = 127,
1035 _ACT_THS_ACTH_SHIFT = 0
1062 LSM9DS0(
int bus=LSM9DS0_I2C_BUS,
1063 uint8_t gAddress=LSM9DS0_DEFAULT_GYRO_ADDR,
1064 uint8_t xmAddress=LSM9DS0_DEFAULT_XM_ADDR);
1111 uint8_t
readReg(DEVICE_T dev, uint8_t reg);
1122 void readRegs(DEVICE_T dev, uint8_t reg, uint8_t *buffer,
int len);
1132 bool writeReg(DEVICE_T dev, uint8_t reg, uint8_t val);
1264 #if defined(SWIGJAVA) || defined(JAVACALLBACK)
1414 #if defined(SWIGJAVA) || defined(JAVACALLBACK)
1415 void installISR(INTERRUPT_PINS_T intr,
int gpio, mraa::Edge level,
1430 void installISR(INTERRUPT_PINS_T intr,
int gpio, mraa::Edge level,
1431 void (*isr)(
void *),
void *arg);
1467 #if defined(SWIGJAVA) || defined(JAVACALLBACK)
1468 void installISR(INTERRUPT_PINS_T intr,
int gpio, mraa::Edge level,
1469 void (*isr)(
void *),
void *arg);
1472 static const uint8_t m_autoIncrementMode = 0x80;
1480 mraa::Gpio*& getPin(INTERRUPT_PINS_T intr);
1483 mraa::Gpio *m_gpioG_INT;
1484 mraa::Gpio *m_gpioG_DRDY;
1485 mraa::Gpio *m_gpioXM_GEN1;
1486 mraa::Gpio *m_gpioXM_GEN2;
CTRL_REG4_XM_BITS_T
Definition: lsm9ds0.h:700
CTRL_REG0_XM_BITS_T
Definition: lsm9ds0.h:578
bool setMagnetometerMode(XM_MD_T mode)
Definition: lsm9ds0.cxx:522
G_ODR_T
Definition: lsm9ds0.h:175
G_HPCF_T
Definition: lsm9ds0.h:222
float getTemperature()
Definition: lsm9ds0.cxx:647
void updateTemperature()
Definition: lsm9ds0.cxx:267
CTRL_REG7_XM_BITS_T
Definition: lsm9ds0.h:784
STATUS_REG_A_BITS_T
Definition: lsm9ds0.h:829
bool setInterruptGen1(uint8_t enables)
Definition: lsm9ds0.cxx:719
uint8_t getAccelerometerStatus()
Definition: lsm9ds0.cxx:679
CLICK_TIME_LIMIT_BITS_T
Definition: lsm9ds0.h:1009
bool setMagnetometerInterruptControl(uint8_t enables)
Definition: lsm9ds0.cxx:704
uint8_t readReg(DEVICE_T dev, uint8_t reg)
Definition: lsm9ds0.cxx:287
bool setMagnetometerODR(XM_ODR_T odr)
Definition: lsm9ds0.cxx:511
LSM9DS0(int bus=LSM9DS0_I2C_BUS, uint8_t gAddress=LSM9DS0_DEFAULT_GYRO_ADDR, uint8_t xmAddress=LSM9DS0_DEFAULT_XM_ADDR)
Definition: lsm9ds0.cxx:36
XM_ABW_T
Definition: lsm9ds0.h:676
uint8_t getMagnetometerStatus()
Definition: lsm9ds0.cxx:674
void update()
Definition: lsm9ds0.cxx:205
uint8_t getInterruptGen2Src()
Definition: lsm9ds0.cxx:739
bool setAccelerometerScale(XM_AFS_T scale)
Definition: lsm9ds0.cxx:453
void updateMagnetometer()
Definition: lsm9ds0.cxx:249
XM_MD_T
Definition: lsm9ds0.h:805
bool setGyroscopeODR(G_ODR_T odr)
Definition: lsm9ds0.cxx:376
FM_T
Definition: lsm9ds0.h:867
uint8_t getMagnetometerInterruptControl()
Definition: lsm9ds0.cxx:699
XM_AST_T
Definition: lsm9ds0.h:653
bool setGyroscopeInterruptConfig(uint8_t enables)
Definition: lsm9ds0.cxx:689
bool setGyroscopeScale(G_FS_T scale)
Definition: lsm9ds0.cxx:387
bool setMagnetometerResolution(XM_RES_T res)
Definition: lsm9ds0.cxx:500
G_FS_T
Definition: lsm9ds0.h:301
INT_GEN_X_DUR_BITS_T
Definition: lsm9ds0.h:946
REG_XM_T
Definition: lsm9ds0.h:450
API for the LSM9DS0 3-axis Gyroscope, Accelerometer, and Magnetometer.
Definition: lsm9ds0.h:78
uint8_t getGyroscopeInterruptConfig()
Definition: lsm9ds0.cxx:684
FIFO_CTRL_REG_G_T
Definition: lsm9ds0.h:360
bool setGyroscopeEnableAxes(uint8_t axes)
Definition: lsm9ds0.cxx:360
STATUS_REG_M_BITS_T
Definition: lsm9ds0.h:534
XM_ODR_T
Definition: lsm9ds0.h:735
CTRL_REG4_G_BITS_T
Definition: lsm9ds0.h:265
uint8_t getInterruptGen1Src()
Definition: lsm9ds0.cxx:724
void updateAccelerometer()
Definition: lsm9ds0.cxx:231
uint8_t getGyroscopeStatus()
Definition: lsm9ds0.cxx:669
bool setMagnetometerScale(XM_MFS_T scale)
Definition: lsm9ds0.cxx:545
INT_GEN_X_THS_BITS_T
Definition: lsm9ds0.h:929
uint8_t getMagnetometerInterruptSrc()
Definition: lsm9ds0.cxx:709
void updateGyroscope()
Definition: lsm9ds0.cxx:213
G_ST_T
Definition: lsm9ds0.h:288
CTRL_REG2_XM_BITS_T
Definition: lsm9ds0.h:630
uint8_t getInterruptGen1()
Definition: lsm9ds0.cxx:714
G_HPM_T
Definition: lsm9ds0.h:241
bool setMagnetometerLPM(bool enable)
Definition: lsm9ds0.cxx:533
FIFO_SRC_REG_BITS_T
Definition: lsm9ds0.h:881
XM_RES_T
Definition: lsm9ds0.h:749
void getMagnetometer(float *x, float *y, float *z)
Definition: lsm9ds0.cxx:612
uint8_t getInterruptGen2()
Definition: lsm9ds0.cxx:729
CLICK_THS_BITS_T
Definition: lsm9ds0.h:992
INT1_CFG_G_BITS_T
Definition: lsm9ds0.h:415
CTRL_REG3_G_BITS_T
Definition: lsm9ds0.h:251
void getGyroscope(float *x, float *y, float *z)
Definition: lsm9ds0.cxx:600
FIFO_CTRL_REG_T
Definition: lsm9ds0.h:844
STATUS_REG_G_BITS_T
Definition: lsm9ds0.h:345
INT1_SRC_G_BITS_T
Definition: lsm9ds0.h:431
G_FM_T
Definition: lsm9ds0.h:383
void readRegs(DEVICE_T dev, uint8_t reg, uint8_t *buffer, int len)
Definition: lsm9ds0.cxx:304
bool setGyroscopePowerDown(bool enable)
Definition: lsm9ds0.cxx:348
CTRL_REG6_XM_BITS_T
Definition: lsm9ds0.h:760
CTRL_REG5_XM_BITS_T
Definition: lsm9ds0.h:714
bool writeReg(DEVICE_T dev, uint8_t reg, uint8_t val)
Definition: lsm9ds0.cxx:323
CLICK_CONFIG_BITS_T
Definition: lsm9ds0.h:963
XM_MFS_T
Definition: lsm9ds0.h:774
XM_AFS_T
Definition: lsm9ds0.h:663
XM_AODR_T
Definition: lsm9ds0.h:612
bool setInterruptGen2(uint8_t enables)
Definition: lsm9ds0.cxx:734
CTRL_REG1_XM_BITS_T
Definition: lsm9ds0.h:594
void getAccelerometer(float *x, float *y, float *z)
Definition: lsm9ds0.cxx:588
void installISR(INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, void(*isr)(void *), void *arg)
Definition: lsm9ds0.cxx:752
bool setAccelerometerEnableAxes(uint8_t axes)
Definition: lsm9ds0.cxx:426
bool enableTemperatureSensor(bool enable)
Definition: lsm9ds0.cxx:657
CTRL_REG5_G_BITS_T
Definition: lsm9ds0.h:311
G_INT1OUTSEL_T
Definition: lsm9ds0.h:335
INT_GEN_X_SRC_BITS_T
Definition: lsm9ds0.h:914
ACT_THS_BITS_T
Definition: lsm9ds0.h:1026
bool setAccelerometerODR(XM_AODR_T odr)
Definition: lsm9ds0.cxx:442
INT_CTRL_REG_M_BITS_T
Definition: lsm9ds0.h:549
CLICK_SRC_BITS_T
Definition: lsm9ds0.h:977
CTRL_REG1_G_BITS_T
Definition: lsm9ds0.h:139
CTRL_REG3_XM_BITS_T
Definition: lsm9ds0.h:686
bool init()
Definition: lsm9ds0.cxx:85
XM_AHPM_T
Definition: lsm9ds0.h:815
CTRL_REG2_G_BITS_T
Definition: lsm9ds0.h:199
REG_G_T
Definition: lsm9ds0.h:92
FIFO_SRC_REG_G_BITS_T
Definition: lsm9ds0.h:397
INT_SRC_REG_M_BITS_T
Definition: lsm9ds0.h:563
~LSM9DS0()
Definition: lsm9ds0.cxx:77
uint8_t getGyroscopeInterruptSrc()
Definition: lsm9ds0.cxx:694
INT_GEN_X_REG_BITS_T
Definition: lsm9ds0.h:899
void uninstallISR(INTERRUPT_PINS_T intr)
Definition: lsm9ds0.cxx:765