27 #include <mraa/i2c.hpp>
28 #include <mraa/gpio.hpp>
30 #define LSM9DS0_I2C_BUS 1
31 #define LSM9DS0_DEFAULT_XM_ADDR 0x1d
32 #define LSM9DS0_DEFAULT_GYRO_ADDR 0x6b
89 REG_WHO_AM_I_G = 0x0f,
93 REG_CTRL_REG1_G = 0x20,
94 REG_CTRL_REG2_G = 0x21,
95 REG_CTRL_REG3_G = 0x22,
96 REG_CTRL_REG4_G = 0x23,
97 REG_CTRL_REG5_G = 0x24,
99 REG_REFERENCE_G = 0x25,
103 REG_STATUS_REG_G = 0x27,
105 REG_OUT_X_L_G = 0x28,
106 REG_OUT_X_H_G = 0x29,
107 REG_OUT_Y_L_G = 0x2a,
108 REG_OUT_Y_H_G = 0x2b,
109 REG_OUT_Z_L_G = 0x2c,
110 REG_OUT_Z_H_G = 0x2d,
112 REG_FIFO_CTRL_REG_G = 0x2e,
113 REG_FIFO_SRC_REG_G = 0x2f,
115 REG_INT1_CFG_G = 0x30,
116 REG_INT1_SRC_G = 0x31,
118 REG_INT1_TSH_XH_G = 0x32,
119 REG_INT1_TSH_XL_G = 0x33,
120 REG_INT1_TSH_YH_G = 0x34,
121 REG_INT1_TSH_YL_G = 0x35,
122 REG_INT1_TSH_ZH_G = 0x36,
123 REG_INT1_TSH_ZL_G = 0x37,
127 REG_INT1_DURATION_G = 0x38
134 CTRL_REG1_G_YEN = 0x01,
135 CTRL_REG1_G_XEN = 0x02,
136 CTRL_REG1_G_ZEN = 0x04,
137 CTRL_REG1_G_PD = 0x08,
139 CTRL_REG1_G_BW0 = 0x10,
140 CTRL_REG1_G_BW1 = 0x20,
141 _CTRL_REG1_G_BW_MASK = 3,
142 _CTRL_REG1_G_BW_SHIFT = 4,
144 CTRL_REG1_G_DR0 = 0x40,
145 CTRL_REG1_G_DR1 = 0x80,
146 _CTRL_REG1_G_DR_MASK = 3,
147 _CTRL_REG1_G_DR_SHIFT = 6,
158 CTRL_REG1_G_ODR0 = 0x10,
159 CTRL_REG1_G_ODR1 = 0x20,
160 CTRL_REG1_G_ODR2 = 0x40,
161 CTRL_REG1_G_ODR3 = 0x80,
162 _CTRL_REG1_G_ODR_MASK = 15,
163 _CTRL_REG1_G_ODR_SHIFT = 4
194 CTRL_REG2_G_HPCF0 = 0x01,
195 CTRL_REG2_G_HPCF1 = 0x02,
196 CTRL_REG2_G_HPCF2 = 0x04,
197 CTRL_REG2_G_HPCF3 = 0x08,
198 _CTRL_REG2_G_HPCF_MASK = 15,
199 _CTRL_REG2_G_HPCF_SHIFT = 0,
201 CTRL_REG2_G_HPM0 = 0x10,
202 CTRL_REG2_G_HPM1 = 0x20,
203 _CTRL_REG2_G_HPM_MASK = 3,
204 _CTRL_REG2_G_HPM_SHIFT = 4,
236 G_HPM_NORMAL_RESET_HPF = 0,
239 G_HPM_AUTORESET_ON_INTR = 3
246 CTRL_REG3_G_I2_EMPTY = 0x01,
247 CTRL_REG3_G_I2_ORUN = 0x02,
248 CTRL_REG3_G_I2_WTM = 0x04,
249 CTRL_REG3_G_I2_DRDY = 0x08,
250 CTRL_REG3_G_PP_OD = 0x10,
251 CTRL_REG3_G_H_LACTIVE = 0x20,
252 CTRL_REG3_G_I1_BOOT = 0x40,
253 CTRL_REG3_G_I1_INT1 = 0x80,
260 CTRL_REG4_G_SIM = 0x01,
262 CTRL_REG4_G_ST0 = 0x02,
263 CTRL_REG4_G_ST1 = 0x04,
264 _CTRL_REG4_G_ST_MASK = 3,
265 _CTRL_REG4_G_ST_SHIFT = 1,
269 CTRL_REG4_G_FS0 = 0x10,
270 CTRL_REG4_G_FS1 = 0x20,
271 _CTRL_REG4_G_FS_MASK = 3,
272 _CTRL_REG4_G_FS_SHIFT = 4,
274 CTRL_REG4_G_BLE = 0x40,
275 CTRL_REG4_G_BDU = 0x80
306 CTRL_REG5_G_OUTSEL0 = 0x01,
307 CTRL_REG5_G_OUTSEL1 = 0x02,
308 _CTRL_REG5_G_OUTSEL_MASK = 3,
309 _CTRL_REG5_G_OUTSEL_SHIFT = 0,
311 CTRL_REG5_G_INT1SEL0 = 0x04,
312 CTRL_REG5_G_INT1SEL1 = 0x08,
313 _CTRL_REG5_G_INT1SEL_MASK = 3,
314 _CTRL_REG5_G_INT1SEL_SHIFT = 2,
316 CTRL_REG5_G_HPEN = 0x10,
320 CTRL_REG5_G_FIFO_EN = 0x40,
321 CTRL_REG5_G_BOOT = 0x80
340 STATUS_REG_G_XDA = 0x01,
341 STATUS_REG_G_YDA = 0x02,
342 STATUS_REG_G_ZDA = 0x04,
343 STATUS_REG_G_ZYXDA = 0x08,
345 STATUS_REG_G_XOR = 0x10,
346 STATUS_REG_G_YOR = 0x20,
347 STATUS_REG_G_ZOR = 0x40,
348 STATUS_REG_G_ZYXOR = 0x80
355 FIFO_CTRL_REG_G_WTM0 = 0x01,
356 FIFO_CTRL_REG_G_WTM1 = 0x02,
357 FIFO_CTRL_REG_G_WTM2 = 0x04,
358 FIFO_CTRL_REG_G_WTM3 = 0x08,
359 FIFO_CTRL_REG_G_WTM4 = 0x10,
360 _FIFO_CTRL_REG_G_WTM_MASK = 31,
361 _FIFO_CTRL_REG_G_WTM_SHIFT = 0,
363 FIFO_CTRL_REG_G_FM0 = 0x20,
364 FIFO_CTRL_REG_G_FM1 = 0x40,
365 FIFO_CTRL_REG_G_FM2 = 0x80,
366 _FIFO_CTRL_REG_G_FM_MASK = 7,
367 _FIFO_CTRL_REG_G_FM_SHIFT = 5,
381 G_FM_STREAM2FIFO = 3,
382 G_FM_BYPASS2STREAM = 4
392 FIFO_CTRL_REG_G_FSS0 = 0x01,
393 FIFO_CTRL_REG_G_FSS1 = 0x02,
394 FIFO_CTRL_REG_G_FSS2 = 0x04,
395 FIFO_CTRL_REG_G_FSS3 = 0x08,
396 FIFO_CTRL_REG_G_FSS4 = 0x10,
397 _FIFO_CTRL_REG_G_FSS_MASK = 31,
398 _FIFO_CTRL_REG_G_FSS_SHIFT = 0,
400 FIFO_CTRL_REG_G_EMPTY = 0x20,
401 FIFO_CTRL_REG_G_OVRN = 0x40,
402 FIFO_CTRL_REG_G_WTM = 0x80
410 INT1_CFG_G_XLIE = 0x01,
411 INT1_CFG_G_XHIE = 0x02,
412 INT1_CFG_G_YLIE = 0x04,
413 INT1_CFG_G_YHIE = 0x08,
414 INT1_CFG_G_ZLIE = 0x10,
415 INT1_CFG_G_ZHIE = 0x20,
417 INT1_CFG_G_LIR = 0x40,
418 INT1_CFG_G_ANDOR = 0x80
426 INT1_SRC_G_XL = 0x01,
427 INT1_SRC_G_XH = 0x02,
428 INT1_SRC_G_YL = 0x04,
429 INT1_SRC_G_YH = 0x08,
430 INT1_SRC_G_ZL = 0x10,
431 INT1_SRC_G_ZH = 0x20,
447 REG_OUT_TEMP_L_XM = 0x05,
448 REG_OUT_TEMP_H_XM = 0x06,
450 REG_STATUS_REG_M = 0x07,
452 REG_OUT_X_L_M = 0x08,
453 REG_OUT_X_H_M = 0x09,
454 REG_OUT_Y_L_M = 0x0a,
455 REG_OUT_Y_H_M = 0x0b,
456 REG_OUT_Z_L_M = 0x0c,
457 REG_OUT_Z_H_M = 0x0d,
461 REG_WHO_AM_I_XM = 0x0f,
465 REG_INT_CTRL_REG_M = 0x12,
466 REG_INT_SRC_REG_M = 0x13,
468 REG_INT_THS_L_M = 0x14,
469 REG_INT_THS_H_M = 0x15,
471 REG_OFFSET_X_L_M = 0x16,
472 REG_OFFSET_X_H_M = 0x17,
473 REG_OFFSET_Y_L_M = 0x18,
474 REG_OFFSET_Y_H_M = 0x19,
475 REG_OFFSET_Z_L_M = 0x1a,
476 REG_OFFSET_Z_H_M = 0x1b,
478 REG_REFERENCE_X = 0x1c,
479 REG_REFERENCE_Y = 0x1d,
480 REG_REFERENCE_Z = 0x1e,
482 REG_CTRL_REG0_XM = 0x1f,
483 REG_CTRL_REG1_XM = 0x20,
484 REG_CTRL_REG2_XM = 0x21,
485 REG_CTRL_REG3_XM = 0x22,
486 REG_CTRL_REG4_XM = 0x23,
487 REG_CTRL_REG5_XM = 0x24,
488 REG_CTRL_REG6_XM = 0x25,
489 REG_CTRL_REG7_XM = 0x26,
491 REG_STATUS_REG_A = 0x27,
493 REG_OUT_X_L_A = 0x28,
494 REG_OUT_X_H_A = 0x29,
495 REG_OUT_Y_L_A = 0x2a,
496 REG_OUT_Y_H_A = 0x2b,
497 REG_OUT_Z_L_A = 0x2c,
498 REG_OUT_Z_H_A = 0x2d,
500 REG_FIFO_CTRL_REG = 0x2e,
501 REG_FIFO_SRC_REG = 0x2f,
503 REG_INT_GEN_1_REG = 0x30,
504 REG_INT_GEN_1_SRC = 0x31,
505 REG_INT_GEN_1_THS = 0x32,
506 REG_INT_GEN_1_DURATION = 0x33,
508 REG_INT_GEN_2_REG = 0x34,
509 REG_INT_GEN_2_SRC = 0x35,
510 REG_INT_GEN_2_THS = 0x36,
511 REG_INT_GEN_2_DURATION = 0x37,
513 REG_CLICK_CFG = 0x38,
514 REG_CLICK_SRC = 0x39,
515 REG_CLICK_THS = 0x3a,
517 REG_TIME_LIMIT = 0x3b,
518 REG_TIME_LATENCY = 0x3c,
519 REG_TIME_WINDOW = 0x3d,
529 STATUS_REG_M_XMDA = 0x01,
530 STATUS_REG_M_YMDA = 0x02,
531 STATUS_REG_M_ZMDA = 0x04,
532 STATUS_REG_M_ZYXMDA = 0x08,
534 STATUS_REG_M_XMOR = 0x10,
535 STATUS_REG_M_YMOR = 0x20,
536 STATUS_REG_M_ZMOR = 0x40,
537 STATUS_REG_M_ZYXMOR = 0x80
544 INT_CTRL_REG_M_MIEN = 0x01,
545 INT_CTRL_REG_M_4D = 0x02,
546 INT_CTRL_REG_M_IEL = 0x04,
547 INT_CTRL_REG_M_IEA = 0x08,
548 INT_CTRL_REG_M_PP_OD = 0x10,
549 INT_CTRL_REG_M_ZMIEN = 0x20,
550 INT_CTRL_REG_M_YMIEN = 0x40,
551 INT_CTRL_REG_M_XMIEN = 0x80
558 INT_SRC_REG_M_MINT = 0x01,
559 INT_SRC_REG_M_MROI = 0x02,
560 INT_SRC_REG_M_NTH_Z = 0x04,
561 INT_SRC_REG_M_NTH_Y = 0x08,
562 INT_SRC_REG_M_NTH_X = 0x10,
563 INT_SRC_REG_M_PTH_Z = 0x20,
564 INT_SRC_REG_M_PTH_Y = 0x40,
565 INT_SRC_REG_M_PTH_X = 0x80
573 CTRL_REG0_XM_HPIS2 = 0x01,
574 CTRL_REG0_XM_HPIS1 = 0x02,
576 CTRL_REG0_XM_HP_CLICK = 0x04,
580 CTRL_REG0_XM_WTM_LEN = 0x20,
581 CTRL_REG0_XM_FIFO_EN = 0x40,
582 CTRL_REG0_XM_BOOT = 0x80
589 CTRL_REG1_XM_AXEN = 0x01,
590 CTRL_REG1_XM_AYEN = 0x02,
591 CTRL_REG1_XM_AZEN = 0x03,
593 CTRL_REG1_XM_BDU = 0x04,
595 CTRL_REG1_XM_AODR0 = 0x10,
596 CTRL_REG1_XM_AODR1 = 0x20,
597 CTRL_REG1_XM_AODR2 = 0x40,
598 CTRL_REG1_XM_AODR3 = 0x80,
599 _CTRL_REG1_XM_AODR_MASK = 15,
600 _CTRL_REG1_XM_AODR_SHIFT = 4
625 CTRL_REG2_XM_SIM = 0x01,
627 CTRL_REG2_XM_AST0 = 0x02,
628 CTRL_REG2_XM_AST1 = 0x04,
629 _CTRL_REG2_XM_AST_MASK = 3,
630 _CTRL_REG2_XM_AST_SHIFT = 1,
632 CTRL_REG2_XM_AFS0 = 0x08,
633 CTRL_REG2_XM_AFS1 = 0x10,
634 CTRL_REG2_XM_AFS2 = 0x20,
635 _CTRL_REG2_XM_AFS_MASK = 7,
636 _CTRL_REG2_XM_AFS_SHIFT = 3,
638 CTRL_REG2_XM_ABW0 = 0x40,
639 CTRL_REG2_XM_ABW1 = 0x80,
640 _CTRL_REG2_XM_ABW_MASK = 3,
641 _CTRL_REG2_XM_ABW_SHIFT = 6
681 CTRL_REG3_XM_P1_EMPTY = 0x01,
682 CTRL_REG3_XM_P1_DRDYM = 0x02,
683 CTRL_REG3_XM_P1_DRDYA = 0x04,
684 CTRL_REG3_XM_P1_INTM = 0x08,
685 CTRL_REG3_XM_P1_INT2 = 0x10,
686 CTRL_REG3_XM_P1_INT1 = 0x20,
687 CTRL_REG3_XM_P1_TAP = 0x40,
688 CTRL_REG3_XM_P1_BOOT = 0x80
695 CTRL_REG4_XM_P2_WTM = 0x01,
696 CTRL_REG4_XM_P2_OVERRUN = 0x02,
697 CTRL_REG4_XM_P2_DRDYM = 0x04,
698 CTRL_REG4_XM_P2_DRDYA = 0x08,
699 CTRL_REG4_XM_P2_INTM = 0x10,
700 CTRL_REG4_XM_P2_INT2 = 0x20,
701 CTRL_REG4_XM_P2_INT1 = 0x40,
702 CTRL_REG4_XM_P2_TAP = 0x80
709 CTRL_REG5_XM_LIR1 = 0x01,
710 CTRL_REG5_XM_LIR2 = 0x02,
712 CTRL_REG5_XM_ODR0 = 0x04,
713 CTRL_REG5_XM_ODR1 = 0x08,
714 CTRL_REG5_XM_ODR2 = 0x10,
715 _CTRL_REG5_XM_ODR_MASK = 7,
716 _CTRL_REG5_XM_ODR_SHIFT = 2,
718 CTRL_REG5_XM_RES0 = 0x20,
719 CTRL_REG5_XM_RES1 = 0x40,
720 _CTRL_REG5_XM_RES_MASK = 3,
721 _CTRL_REG5_XM_RES_SHIFT = 5,
723 CTRL_REG5_XM_TEMP_EN = 0x80
757 CTRL_REG6_XM_MFS0 = 0x20,
758 CTRL_REG6_XM_MFS1 = 0x40,
759 _CTRL_REG6_XM_MFS_MASK = 3,
760 _CTRL_REG6_XM_MFS_SHIFT = 5
779 CTRL_REG7_XM_MD0 = 0x01,
780 CTRL_REG7_XM_MD1 = 0x02,
781 _CTRL_REG7_XM_MD_MASK = 3,
782 _CTRL_REG7_XM_MD_SHIFT = 0,
784 CTRL_REG7_XM_MLP = 0x04,
788 CTRL_REG7_XM_AFDS = 0x20,
790 CTRL_REG7_XM_AHPM0 = 0x40,
791 CTRL_REG7_XM_AHPM1 = 0x80,
792 _CTRL_REG7_XM_AHPM_MASK = 3,
793 _CTRL_REG7_XM_AHPM_SHIFT = 6
800 XM_MD_CONTINUOUS = 0,
814 XM_AHPM_NORMAL_REF = 0,
815 XM_AHPM_REFERENCE = 1,
817 XM_AHPM_AUTORESET = 3
824 STATUS_REG_A_XADA = 0x01,
825 STATUS_REG_A_YADA = 0x02,
826 STATUS_REG_A_ZADA = 0x04,
827 STATUS_REG_A_ZYXADA = 0x08,
829 STATUS_REG_A_XAOR = 0x10,
830 STATUS_REG_A_YAOR = 0x20,
831 STATUS_REG_A_ZAOR = 0x40,
832 STATUS_REG_A_ZYXAOR = 0x80
839 FIFO_CTRL_REG_FTH0 = 0x01,
840 FIFO_CTRL_REG_FTH1 = 0x02,
841 FIFO_CTRL_REG_FTH2 = 0x04,
842 FIFO_CTRL_REG_FTH3 = 0x08,
843 FIFO_CTRL_REG_FTH4 = 0x10,
844 _FIFO_CTRL_REG_FTH_MASK = 31,
845 _FIFO_CTRL_REG_FTH_SHIFT = 0,
847 FIFO_CTRL_REG_FM0 = 0x20,
848 FIFO_CTRL_REG_FM1 = 0x40,
849 FIFO_CTRL_REG_FM2 = 0x80,
850 _FIFO_CTRL_REG_FM_MASK = 7,
851 _FIFO_CTRL_REG_FM_SHIFT = 5,
876 FIFO_CTRL_REG_FSS0 = 0x01,
877 FIFO_CTRL_REG_FSS1 = 0x02,
878 FIFO_CTRL_REG_FSS2 = 0x04,
879 FIFO_CTRL_REG_FSS3 = 0x08,
880 FIFO_CTRL_REG_FSS4 = 0x10,
881 _FIFO_CTRL_REG_FSS_MASK = 31,
882 _FIFO_CTRL_REG_FSS_SHIFT = 0,
884 FIFO_CTRL_REG_EMPTY = 0x20,
885 FIFO_CTRL_REG_OVRN = 0x40,
886 FIFO_CTRL_REG_WTM = 0x80
894 INT_GEN_X_REG_XLIE_XDOWNE = 0x01,
895 INT_GEN_X_REG_XHIE_XUPE = 0x02,
896 INT_GEN_X_REG_YLIE_YDOWNE = 0x04,
897 INT_GEN_X_REG_YHIE_YUPE = 0x08,
898 INT_GEN_X_REG_ZLIE_ZDOWNE = 0x10,
899 INT_GEN_X_REG_ZHIE_ZUPE = 0x20,
900 INT_GEN_X_REG_6D = 0x40,
901 INT_GEN_X_REG_AOI = 0x80
909 INT_GEN_X_SRC_XL = 0x01,
910 INT_GEN_X_SRC_XH = 0x02,
911 INT_GEN_X_SRC_YL = 0x04,
912 INT_GEN_X_SRC_YH = 0x08,
913 INT_GEN_X_SRC_ZL = 0x10,
914 INT_GEN_X_SRC_ZH = 0x20,
915 INT_GEN_X_SRC_IA = 0x40
924 INT_GEN_X_THS0 = 0x01,
925 INT_GEN_X_THS1 = 0x02,
926 INT_GEN_X_THS2 = 0x04,
927 INT_GEN_X_THS3 = 0x08,
928 INT_GEN_X_THS4 = 0x10,
929 INT_GEN_X_THS5 = 0x20,
930 INT_GEN_X_THS6 = 0x40,
931 _INT_GEN_X_THS_MASK = 127,
932 _INT_GEN_X_THS_SHIFT = 0
941 INT_GEN_X_DUR0 = 0x01,
942 INT_GEN_X_DUR1 = 0x02,
943 INT_GEN_X_DUR2 = 0x04,
944 INT_GEN_X_DUR3 = 0x08,
945 INT_GEN_X_DUR4 = 0x10,
946 INT_GEN_X_DUR5 = 0x20,
947 INT_GEN_X_DUR6 = 0x40,
948 _INT_GEN_X_DUR_MASK = 127,
949 _INT_GEN_X_DUR_SHIFT = 0
958 CLICK_CONFIG_XS = 0x01,
959 CLICK_CONFIG_XD = 0x02,
960 CLICK_CONFIG_YS = 0x04,
961 CLICK_CONFIG_YD = 0x08,
962 CLICK_CONFIG_ZS = 0x10,
963 CLICK_CONFIG_ZD = 0x20
975 CLICK_SRC_SIGN = 0x08,
976 CLICK_SRC_SCLICK = 0x10,
977 CLICK_SRC_DCLICK = 0x20,
987 CLICK_THS_THS0 = 0x01,
988 CLICK_THS_THS1 = 0x02,
989 CLICK_THS_THS2 = 0x04,
990 CLICK_THS_THS3 = 0x08,
991 CLICK_THS_THS4 = 0x10,
992 CLICK_THS_THS5 = 0x20,
993 CLICK_THS_THS6 = 0x40,
994 _CLICK_THS_THS_MASK = 127,
995 _CLICK_THS_THS_SHIFT = 0
1004 CLICK_TIME_LIMIT_TLI0 = 0x01,
1005 CLICK_TIME_LIMIT_TLI1 = 0x02,
1006 CLICK_TIME_LIMIT_TLI2 = 0x04,
1007 CLICK_TIME_LIMIT_TLI3 = 0x08,
1008 CLICK_TIME_LIMIT_TLI4 = 0x10,
1009 CLICK_TIME_LIMIT_TLI5 = 0x20,
1010 CLICK_TIME_LIMIT_TLI6 = 0x40,
1011 _CLICK_TIME_LIMIT_TLI_MASK = 127,
1012 _CLICK_TIME_LIMIT_TLI_SHIFT = 0
1021 ACT_THS_ACTH0 = 0x01,
1022 ACT_THS_ACTH1 = 0x02,
1023 ACT_THS_ACTH2 = 0x04,
1024 ACT_THS_ACTH3 = 0x08,
1025 ACT_THS_ACTH4 = 0x10,
1026 ACT_THS_ACTH5 = 0x20,
1027 ACT_THS_ACTH6 = 0x40,
1028 _ACT_THS_ACTH_MASK = 127,
1029 _ACT_THS_ACTH_SHIFT = 0
1056 LSM9DS0(
int bus=LSM9DS0_I2C_BUS,
1057 uint8_t gAddress=LSM9DS0_DEFAULT_GYRO_ADDR,
1058 uint8_t xmAddress=LSM9DS0_DEFAULT_XM_ADDR);
1105 uint8_t
readReg(DEVICE_T dev, uint8_t reg);
1116 void readRegs(DEVICE_T dev, uint8_t reg, uint8_t *buf,
int len);
1126 bool writeReg(DEVICE_T dev, uint8_t reg, uint8_t val);
1397 void installISR(INTERRUPT_PINS_T intr,
int gpio, mraa::Edge level,
1398 void (*isr)(
void *),
void *arg);
1434 static const uint8_t m_autoIncrementMode = 0x80;
1442 mraa::Gpio*& getPin(INTERRUPT_PINS_T intr);
1445 mraa::Gpio *m_gpioG_INT;
1446 mraa::Gpio *m_gpioG_DRDY;
1447 mraa::Gpio *m_gpioXM_GEN1;
1448 mraa::Gpio *m_gpioXM_GEN2;
CTRL_REG4_XM_BITS_T
Definition: lsm9ds0.h:694
CTRL_REG0_XM_BITS_T
Definition: lsm9ds0.h:572
bool setMagnetometerMode(XM_MD_T mode)
Definition: lsm9ds0.cxx:509
G_ODR_T
Definition: lsm9ds0.h:169
G_HPCF_T
Definition: lsm9ds0.h:216
float getTemperature()
Definition: lsm9ds0.cxx:610
void updateTemperature()
Definition: lsm9ds0.cxx:259
CTRL_REG7_XM_BITS_T
Definition: lsm9ds0.h:778
STATUS_REG_A_BITS_T
Definition: lsm9ds0.h:823
bool setInterruptGen1(uint8_t enables)
Definition: lsm9ds0.cxx:682
uint8_t getAccelerometerStatus()
Definition: lsm9ds0.cxx:642
CLICK_TIME_LIMIT_BITS_T
Definition: lsm9ds0.h:1003
bool setMagnetometerInterruptControl(uint8_t enables)
Definition: lsm9ds0.cxx:667
uint8_t readReg(DEVICE_T dev, uint8_t reg)
Definition: lsm9ds0.cxx:279
bool setMagnetometerODR(XM_ODR_T odr)
Definition: lsm9ds0.cxx:498
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:670
uint8_t getMagnetometerStatus()
Definition: lsm9ds0.cxx:637
void update()
Definition: lsm9ds0.cxx:197
uint8_t getInterruptGen2Src()
Definition: lsm9ds0.cxx:702
bool setAccelerometerScale(XM_AFS_T scale)
Definition: lsm9ds0.cxx:441
void updateMagnetometer()
Definition: lsm9ds0.cxx:241
XM_MD_T
Definition: lsm9ds0.h:799
bool setGyroscopeODR(G_ODR_T odr)
Definition: lsm9ds0.cxx:365
FM_T
Definition: lsm9ds0.h:861
uint8_t getMagnetometerInterruptControl()
Definition: lsm9ds0.cxx:662
XM_AST_T
Definition: lsm9ds0.h:647
bool setGyroscopeInterruptConfig(uint8_t enables)
Definition: lsm9ds0.cxx:652
bool setGyroscopeScale(G_FS_T scale)
Definition: lsm9ds0.cxx:376
bool setMagnetometerResolution(XM_RES_T res)
Definition: lsm9ds0.cxx:487
G_FS_T
Definition: lsm9ds0.h:295
INT_GEN_X_DUR_BITS_T
Definition: lsm9ds0.h:940
REG_XM_T
Definition: lsm9ds0.h:444
API for the LSM9DS0 3-axis Gyroscope, Accelerometer, and Magnetometer.
Definition: lsm9ds0.h:72
uint8_t getGyroscopeInterruptConfig()
Definition: lsm9ds0.cxx:647
FIFO_CTRL_REG_G_T
Definition: lsm9ds0.h:354
bool setGyroscopeEnableAxes(uint8_t axes)
Definition: lsm9ds0.cxx:349
STATUS_REG_M_BITS_T
Definition: lsm9ds0.h:528
XM_ODR_T
Definition: lsm9ds0.h:729
CTRL_REG4_G_BITS_T
Definition: lsm9ds0.h:259
uint8_t getInterruptGen1Src()
Definition: lsm9ds0.cxx:687
void updateAccelerometer()
Definition: lsm9ds0.cxx:223
uint8_t getGyroscopeStatus()
Definition: lsm9ds0.cxx:632
bool setMagnetometerScale(XM_MFS_T scale)
Definition: lsm9ds0.cxx:532
INT_GEN_X_THS_BITS_T
Definition: lsm9ds0.h:923
uint8_t getMagnetometerInterruptSrc()
Definition: lsm9ds0.cxx:672
void updateGyroscope()
Definition: lsm9ds0.cxx:205
G_ST_T
Definition: lsm9ds0.h:282
CTRL_REG2_XM_BITS_T
Definition: lsm9ds0.h:624
uint8_t getInterruptGen1()
Definition: lsm9ds0.cxx:677
void readRegs(DEVICE_T dev, uint8_t reg, uint8_t *buf, int len)
Definition: lsm9ds0.cxx:295
G_HPM_T
Definition: lsm9ds0.h:235
bool setMagnetometerLPM(bool enable)
Definition: lsm9ds0.cxx:520
FIFO_SRC_REG_BITS_T
Definition: lsm9ds0.h:875
XM_RES_T
Definition: lsm9ds0.h:743
void getMagnetometer(float *x, float *y, float *z)
Definition: lsm9ds0.cxx:598
uint8_t getInterruptGen2()
Definition: lsm9ds0.cxx:692
CLICK_THS_BITS_T
Definition: lsm9ds0.h:986
INT1_CFG_G_BITS_T
Definition: lsm9ds0.h:409
CTRL_REG3_G_BITS_T
Definition: lsm9ds0.h:245
void getGyroscope(float *x, float *y, float *z)
Definition: lsm9ds0.cxx:586
FIFO_CTRL_REG_T
Definition: lsm9ds0.h:838
STATUS_REG_G_BITS_T
Definition: lsm9ds0.h:339
INT1_SRC_G_BITS_T
Definition: lsm9ds0.h:425
G_FM_T
Definition: lsm9ds0.h:377
bool setGyroscopePowerDown(bool enable)
Definition: lsm9ds0.cxx:337
CTRL_REG6_XM_BITS_T
Definition: lsm9ds0.h:754
CTRL_REG5_XM_BITS_T
Definition: lsm9ds0.h:708
bool writeReg(DEVICE_T dev, uint8_t reg, uint8_t val)
Definition: lsm9ds0.cxx:313
CLICK_CONFIG_BITS_T
Definition: lsm9ds0.h:957
XM_MFS_T
Definition: lsm9ds0.h:768
XM_AFS_T
Definition: lsm9ds0.h:657
XM_AODR_T
Definition: lsm9ds0.h:606
bool setInterruptGen2(uint8_t enables)
Definition: lsm9ds0.cxx:697
CTRL_REG1_XM_BITS_T
Definition: lsm9ds0.h:588
void getAccelerometer(float *x, float *y, float *z)
Definition: lsm9ds0.cxx:574
void installISR(INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, void(*isr)(void *), void *arg)
Definition: lsm9ds0.cxx:707
bool setAccelerometerEnableAxes(uint8_t axes)
Definition: lsm9ds0.cxx:414
bool enableTemperatureSensor(bool enable)
Definition: lsm9ds0.cxx:620
CTRL_REG5_G_BITS_T
Definition: lsm9ds0.h:305
G_INT1OUTSEL_T
Definition: lsm9ds0.h:329
INT_GEN_X_SRC_BITS_T
Definition: lsm9ds0.h:908
ACT_THS_BITS_T
Definition: lsm9ds0.h:1020
bool setAccelerometerODR(XM_AODR_T odr)
Definition: lsm9ds0.cxx:430
INT_CTRL_REG_M_BITS_T
Definition: lsm9ds0.h:543
CLICK_SRC_BITS_T
Definition: lsm9ds0.h:971
CTRL_REG1_G_BITS_T
Definition: lsm9ds0.h:133
CTRL_REG3_XM_BITS_T
Definition: lsm9ds0.h:680
bool init()
Definition: lsm9ds0.cxx:90
XM_AHPM_T
Definition: lsm9ds0.h:809
CTRL_REG2_G_BITS_T
Definition: lsm9ds0.h:193
REG_G_T
Definition: lsm9ds0.h:86
FIFO_SRC_REG_G_BITS_T
Definition: lsm9ds0.h:391
INT_SRC_REG_M_BITS_T
Definition: lsm9ds0.h:557
~LSM9DS0()
Definition: lsm9ds0.cxx:82
uint8_t getGyroscopeInterruptSrc()
Definition: lsm9ds0.cxx:657
INT_GEN_X_REG_BITS_T
Definition: lsm9ds0.h:893
void uninstallISR(INTERRUPT_PINS_T intr)
Definition: lsm9ds0.cxx:720