Da Vinci Firmware 1
Firmware for the DaVinci-M rocket avionics board.
Loading...
Searching...
No Matches
lsm6dso32_reg.c
Go to the documentation of this file.
1
19#ifndef LSM6DSO32_REGS_H
20#include "lsm6dso32_reg.h"
21#endif
22
23#include "main.h"
24
54int32_t __weak lsm6dso32_read_reg(stmdev_ctx_t *ctx, uint8_t reg,
55 uint8_t *data,
56 uint16_t len)
57{
58 int32_t ret;
59
60 ret = ctx->read_reg(ctx->handle, reg, data, len);
61
62 return ret;
63}
64
75int32_t __weak lsm6dso32_write_reg(stmdev_ctx_t *ctx, uint8_t reg,
76 uint8_t *data,
77 uint16_t len)
78{
79 int32_t ret;
80
81 ret = ctx->write_reg(ctx->handle, reg, data, len);
82
83 return ret;
84}
85
97float_t lsm6dso32_from_fs4_to_mg(int16_t lsb)
98{
99 return ((float_t)lsb) * 0.122f;
100}
101
102float_t lsm6dso32_from_fs8_to_mg(int16_t lsb)
103{
104 return ((float_t)lsb) * 0.244f;
105}
106
107float_t lsm6dso32_from_fs16_to_mg(int16_t lsb)
108{
109 return ((float_t)lsb) * 0.488f;
110}
111
112float_t lsm6dso32_from_fs32_to_mg(int16_t lsb)
113{
114 return ((float_t)lsb) * 0.976f;
115}
116
118{
119 return ((float_t)lsb) * 4.375f;
120}
121
123{
124 return ((float_t)lsb) * 8.75f;
125}
126
128{
129 return ((float_t)lsb) * 17.50f;
130}
131
133{
134 return ((float_t)lsb) * 35.0f;
135}
136
138{
139 return ((float_t)lsb) * 70.0f;
140}
141
143{
144 return (((float_t)lsb / 256.0f) + 25.0f);
145}
146
147float_t lsm6dso32_from_lsb_to_nsec(int16_t lsb)
148{
149 return ((float_t)lsb * 25000.0f);
150}
151
174{
175 lsm6dso32_ctrl1_xl_t ctrl1_xl;
176 int32_t ret;
177
179 (uint8_t *)&ctrl1_xl, 1);
180
181 if (ret == 0)
182 {
183 ctrl1_xl.fs_xl = (uint8_t) val & 0x03U;
185 (uint8_t *)&ctrl1_xl, 1);
186 }
187
188 return ret;
189}
190
201{
203 int32_t ret;
204
205 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL1_XL, (uint8_t *)&reg, 1);
206
207 switch (reg.fs_xl)
208 {
209 case LSM6DSO32_4g:
210 *val = LSM6DSO32_4g;
211 break;
212
213 case LSM6DSO32_8g:
214 *val = LSM6DSO32_8g;
215 break;
216
217 case LSM6DSO32_16g:
218 *val = LSM6DSO32_16g;
219 break;
220
221 case LSM6DSO32_32g:
222 *val = LSM6DSO32_32g;
223 break;
224
225 default:
226 *val = LSM6DSO32_4g;
227 break;
228 }
229
230 return ret;
231}
232
244{
245 lsm6dso32_ctrl1_xl_t ctrl1_xl;
246 lsm6dso32_ctrl5_c_t ctrl5_c;
247 lsm6dso32_ctrl6_c_t ctrl6_c;
248 lsm6dso32_func_cfg_access_t func_cfg_access;
249 int32_t ret;
250
252 (uint8_t *)&ctrl1_xl, 1);
253
254 if (ret == 0)
255 {
256 ctrl1_xl.odr_xl = (uint8_t) LSM6DSO32_XL_ODR_OFF & 0x0FU;
258 (uint8_t *)&ctrl1_xl, 1);
259 }
260
261 if (ret == 0)
262 {
264 (uint8_t *)&func_cfg_access, 1);
265 }
266
267 if (ret == 0)
268 {
269 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL5_C, (uint8_t *) &ctrl5_c, 1);
270 }
271
272 if (ret == 0)
273 {
274 ctrl5_c.xl_ulp_en = ((uint8_t)val & 0x20U) >> 5;
276 (uint8_t *) &ctrl5_c, 1);
277 }
278
279 if (ret == 0)
280 {
281 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL6_C, (uint8_t *) &ctrl6_c, 1);
282 }
283
284 if (ret == 0)
285 {
286 ctrl6_c.xl_hm_mode = ((uint8_t)val & 0x10U) >> 4;
288 (uint8_t *) &ctrl6_c, 1);
289 }
290
291 if (ret == 0)
292 {
294 (uint8_t *)&ctrl1_xl, 1);
295 }
296
297 if (ret == 0)
298 {
299 ctrl1_xl.odr_xl = (uint8_t) val & 0x0FU;
301 (uint8_t *)&ctrl1_xl, 1);
302 }
303
304 return ret;
305}
306
318{
319 lsm6dso32_ctrl1_xl_t ctrl1_xl;
320 lsm6dso32_ctrl5_c_t ctrl5_c;
321 lsm6dso32_ctrl6_c_t ctrl6_c;
322 lsm6dso32_func_cfg_access_t func_cfg_access;
323 int32_t ret;
324
326 (uint8_t *)&ctrl1_xl, 1);
327
328 if (ret == 0)
329 {
331 (uint8_t *)&func_cfg_access, 1);
332 }
333
334 if (ret == 0)
335 {
336 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL5_C, (uint8_t *) &ctrl5_c, 1);
337 }
338
339 if (ret == 0)
340 {
341 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL6_C, (uint8_t *) &ctrl6_c, 1);
342 }
343
344 switch ((ctrl5_c.xl_ulp_en << 5) + (ctrl6_c.xl_hm_mode << 4) +
345 ctrl1_xl.odr_xl)
346 {
349 break;
350
353 break;
354
357 break;
358
361 break;
362
365 break;
366
369 break;
370
373 break;
374
377 break;
378
381 break;
382
385 break;
386
389 break;
390
393 break;
394
397 break;
398
401 break;
402
405 break;
406
409 break;
410
413 break;
414
417 break;
418
421 break;
422
425 break;
426
429 break;
430
433 break;
434
437 break;
438
439 default:
441 break;
442 }
443
444 return ret;
445}
446
457{
459 int32_t ret;
460
461 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL2_G, (uint8_t *)&reg, 1);
462
463 if (ret == 0)
464 {
465 reg.fs_g = (uint8_t) val;
466 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL2_G, (uint8_t *)&reg, 1);
467 }
468
469 return ret;
470}
471
481 lsm6dso32_fs_g_t *val)
482{
484 int32_t ret;
485
486 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL2_G, (uint8_t *)&reg, 1);
487
488 switch (reg.fs_g)
489 {
490 case LSM6DSO32_250dps:
491 *val = LSM6DSO32_250dps;
492 break;
493
494 case LSM6DSO32_125dps:
495 *val = LSM6DSO32_125dps;
496 break;
497
498 case LSM6DSO32_500dps:
499 *val = LSM6DSO32_500dps;
500 break;
501
503 *val = LSM6DSO32_1000dps;
504 break;
505
507 *val = LSM6DSO32_2000dps;
508 break;
509
510 default:
511 *val = LSM6DSO32_250dps;
512 break;
513 }
514
515 return ret;
516}
517
528{
529 lsm6dso32_ctrl2_g_t ctrl2_g;
530 lsm6dso32_ctrl7_g_t ctrl7_g;
531 int32_t ret;
532
533 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL2_G, (uint8_t *)&ctrl2_g, 1);
534
535 if (ret == 0)
536 {
537 ctrl2_g.odr_g = (uint8_t) LSM6DSO32_GY_ODR_OFF & 0x0FU;
538 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL2_G, (uint8_t *)&ctrl2_g, 1);
539 }
540
541 if (ret == 0)
542 {
543 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL7_G, (uint8_t *)&ctrl7_g, 1);
544 }
545
546 if (ret == 0)
547 {
548 ctrl7_g.g_hm_mode = ((uint8_t)val & 0x10U) >> 4;
549 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL7_G, (uint8_t *)&ctrl7_g, 1);
550 }
551
552 if (ret == 0)
553 {
554 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL2_G, (uint8_t *)&ctrl2_g, 1);
555 }
556
557 if (ret == 0)
558 {
559 ctrl2_g.odr_g = (uint8_t)val & 0x0FU;
560 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL2_G, (uint8_t *)&ctrl2_g, 1);
561 }
562
563 return ret;
564}
565
576{
577 lsm6dso32_ctrl2_g_t ctrl2_g;
578 lsm6dso32_ctrl7_g_t ctrl7_g;
579 int32_t ret;
580
581 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL7_G, (uint8_t *)&ctrl7_g, 1);
582
583 if (ret == 0)
584 {
585 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL2_G, (uint8_t *)&ctrl2_g, 1);
586 }
587
588 switch ((ctrl7_g.g_hm_mode << 4) + ctrl2_g.odr_g)
589 {
592 break;
593
596 break;
597
600 break;
601
604 break;
605
608 break;
609
612 break;
613
616 break;
617
620 break;
621
624 break;
625
628 break;
629
632 break;
633
636 break;
637
640 break;
641
644 break;
645
648 break;
649
652 break;
653
654 default:
656 break;
657 }
658
659 return ret;
660}
661
671 uint8_t val)
672{
674 int32_t ret;
675
676 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
677
678 if (ret == 0)
679 {
680 reg.bdu = val;
681 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
682 }
683
684 return ret;
685}
686
696 uint8_t *val)
697{
699 int32_t ret;
700
701 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
702 *val = reg.bdu;
703
704 return ret;
705}
706
718{
720 int32_t ret;
721
722 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL6_C, (uint8_t *)&reg, 1);
723
724 if (ret == 0)
725 {
726 reg.usr_off_w = (uint8_t)val;
727 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL6_C, (uint8_t *)&reg, 1);
728 }
729
730 return ret;
731}
732
744{
746 int32_t ret;
747
748 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL6_C, (uint8_t *)&reg, 1);
749
750 switch (reg.usr_off_w)
751 {
753 *val = LSM6DSO32_LSb_1mg;
754 break;
755
757 *val = LSM6DSO32_LSb_16mg;
758 break;
759
760 default:
761 *val = LSM6DSO32_LSb_1mg;
762 break;
763 }
764
765 return ret;
766}
767
780{
781 int32_t ret;
782
784 (uint8_t *)&val->all_int_src, 1);
785
786 if (ret == 0)
787 {
789 (uint8_t *)&val->wake_up_src, 1);
790 }
791
792 if (ret == 0)
793 {
795 (uint8_t *)&val->tap_src, 1);
796 }
797
798 if (ret == 0)
799 {
801 (uint8_t *)&val->d6d_src, 1);
802 }
803
804 if (ret == 0)
805 {
807 (uint8_t *)&val->status_reg, 1);
808 }
809
810 if (ret == 0)
811 {
813 }
814
815 if (ret == 0)
816 {
818 (uint8_t *)&val->emb_func_status, 1);
819 }
820
821 if (ret == 0)
822 {
824 (uint8_t *)&val->fsm_status_a, 1);
825 }
826
827 if (ret == 0)
828 {
830 (uint8_t *)&val->fsm_status_b, 1);
831 }
832
833 if (ret == 0)
834 {
836 }
837
838 return ret;
839}
840
851{
852 int32_t ret;
853
854 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_STATUS_REG, (uint8_t *) val, 1);
855
856 return ret;
857}
858
868 uint8_t *val)
869{
871 int32_t ret;
872
873 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_STATUS_REG, (uint8_t *)&reg, 1);
874 *val = reg.xlda;
875
876 return ret;
877}
878
888 uint8_t *val)
889{
891 int32_t ret;
892
893 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_STATUS_REG, (uint8_t *)&reg, 1);
894 *val = reg.gda;
895
896 return ret;
897}
898
908 uint8_t *val)
909{
911 int32_t ret;
912
913 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_STATUS_REG, (uint8_t *)&reg, 1);
914 *val = reg.tda;
915
916 return ret;
917}
918
930 uint8_t *buff)
931{
932 int32_t ret;
933
934 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_X_OFS_USR, buff, 1);
935
936 return ret;
937}
938
950 uint8_t *buff)
951{
952 int32_t ret;
953
954 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_X_OFS_USR, buff, 1);
955
956 return ret;
957}
958
970 uint8_t *buff)
971{
972 int32_t ret;
973
974 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_Y_OFS_USR, buff, 1);
975
976 return ret;
977}
978
990 uint8_t *buff)
991{
992 int32_t ret;
993
994 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_Y_OFS_USR, buff, 1);
995
996 return ret;
997}
998
1010 uint8_t *buff)
1011{
1012 int32_t ret;
1013
1014 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_Z_OFS_USR, buff, 1);
1015
1016 return ret;
1017}
1018
1030 uint8_t *buff)
1031{
1032 int32_t ret;
1033
1034 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_Z_OFS_USR, buff, 1);
1035
1036 return ret;
1037}
1038
1048{
1050 int32_t ret;
1051
1052 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL7_G, (uint8_t *)&reg, 1);
1053
1054 if (ret == 0)
1055 {
1056 reg.usr_off_on_out = val;
1057 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL7_G, (uint8_t *)&reg, 1);
1058 }
1059
1060 return ret;
1061}
1062
1072{
1074 int32_t ret;
1075
1076 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL7_G, (uint8_t *)&reg, 1);
1077 *val = reg.usr_off_on_out;
1078
1079 return ret;
1080}
1081
1103int32_t lsm6dso32_timestamp_set(stmdev_ctx_t *ctx, uint8_t val)
1104{
1106 int32_t ret;
1107
1108 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL10_C, (uint8_t *)&reg, 1);
1109
1110 if (ret == 0)
1111 {
1112 reg.timestamp_en = val;
1113 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL10_C, (uint8_t *)&reg, 1);
1114 }
1115
1116 return ret;
1117}
1118
1127int32_t lsm6dso32_timestamp_get(stmdev_ctx_t *ctx, uint8_t *val)
1128{
1130 int32_t ret;
1131
1132 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL10_C, (uint8_t *)&reg, 1);
1133 *val = reg.timestamp_en;
1134
1135 return ret;
1136}
1137
1148int32_t lsm6dso32_timestamp_raw_get(stmdev_ctx_t *ctx, uint32_t *val)
1149{
1150 uint8_t buff[4];
1151 int32_t ret;
1152
1153 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TIMESTAMP0, buff, 4);
1154 *val = buff[3];
1155 *val = (*val * 256U) + buff[2];
1156 *val = (*val * 256U) + buff[1];
1157 *val = (*val * 256U) + buff[0];
1158
1159 return ret;
1160}
1161
1185{
1187 int32_t ret;
1188
1189 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL5_C, (uint8_t *)&reg, 1);
1190
1191 if (ret == 0)
1192 {
1193 reg.rounding = (uint8_t)val;
1194 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL5_C, (uint8_t *)&reg, 1);
1195 }
1196
1197 return ret;
1198}
1199
1210{
1212 int32_t ret;
1213
1214 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL5_C, (uint8_t *)&reg, 1);
1215
1216 switch (reg.rounding)
1217 {
1218 case LSM6DSO32_NO_ROUND:
1219 *val = LSM6DSO32_NO_ROUND;
1220 break;
1221
1222 case LSM6DSO32_ROUND_XL:
1223 *val = LSM6DSO32_ROUND_XL;
1224 break;
1225
1226 case LSM6DSO32_ROUND_GY:
1227 *val = LSM6DSO32_ROUND_GY;
1228 break;
1229
1231 *val = LSM6DSO32_ROUND_GY_XL;
1232 break;
1233
1234 default:
1235 *val = LSM6DSO32_NO_ROUND;
1236 break;
1237 }
1238
1239 return ret;
1240}
1241
1253{
1254 uint8_t buff[2];
1255 int32_t ret;
1256
1257 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_OUT_TEMP_L, buff, 2);
1258 val[0] = (int16_t)buff[1];
1259 val[0] = (val[0] * 256) + (int16_t)buff[0];
1260
1261 return ret;
1262}
1263
1274 int16_t *val)
1275{
1276 uint8_t buff[6];
1277 int32_t ret;
1278
1279 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_OUTX_L_G, buff, 6);
1280 val[0] = (int16_t)buff[1];
1281 val[0] = (val[0] * 256) + (int16_t)buff[0];
1282 val[1] = (int16_t)buff[3];
1283 val[1] = (val[1] * 256) + (int16_t)buff[2];
1284 val[2] = (int16_t)buff[5];
1285 val[2] = (val[2] * 256) + (int16_t)buff[4];
1286
1287 return ret;
1288}
1289
1300 int16_t *val)
1301{
1302 uint8_t buff[6];
1303 int32_t ret;
1304
1305 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_OUTX_L_A, buff, 6);
1306 val[0] = (int16_t)buff[1];
1307 val[0] = (val[0] * 256) + (int16_t)buff[0];
1308 val[1] = (int16_t)buff[3];
1309 val[1] = (val[1] * 256) + (int16_t)buff[2];
1310 val[2] = (int16_t)buff[5];
1311 val[2] = (val[2] * 256) + (int16_t)buff[4];
1312
1313 return ret;
1314}
1315
1324int32_t lsm6dso32_fifo_out_raw_get(stmdev_ctx_t *ctx, uint8_t *buff)
1325{
1326 int32_t ret;
1327
1329
1330 return ret;
1331}
1332
1342 uint16_t *val)
1343{
1344 uint8_t buff[2];
1345 int32_t ret;
1346
1348
1349 if (ret == 0)
1350 {
1351 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_STEP_COUNTER_L, buff, 2);
1352 }
1353
1354 if (ret == 0)
1355 {
1356 *val = buff[1];
1357 *val = (*val * 256U) + buff[0];
1359 }
1360
1361 return ret;
1362}
1363
1372{
1374 int32_t ret;
1375
1377
1378 if (ret == 0)
1379 {
1380 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_EMB_FUNC_SRC, (uint8_t *)&reg, 1);
1381 }
1382
1383 if (ret == 0)
1384 {
1387 (uint8_t *)&reg, 1);
1388 }
1389
1390 if (ret == 0)
1391 {
1393 }
1394
1395 return ret;
1396}
1397
1422int32_t lsm6dso32_odr_cal_reg_set(stmdev_ctx_t *ctx, uint8_t val)
1423{
1425 int32_t ret;
1426
1428 (uint8_t *)&reg, 1);
1429
1430 if (ret == 0)
1431 {
1432 reg.freq_fine = val;
1434 (uint8_t *)&reg, 1);
1435 }
1436
1437 return ret;
1438}
1439
1450int32_t lsm6dso32_odr_cal_reg_get(stmdev_ctx_t *ctx, uint8_t *val)
1451{
1453 int32_t ret;
1454
1456 (uint8_t *)&reg, 1);
1457 *val = reg.freq_fine;
1458
1459 return ret;
1460}
1461
1462
1474{
1476 int32_t ret;
1477
1479 (uint8_t *)&reg, 1);
1480
1481 if (ret == 0)
1482 {
1483 reg.reg_access = (uint8_t)val;
1485 (uint8_t *)&reg, 1);
1486 }
1487
1488 return ret;
1489}
1490
1502{
1504 int32_t ret;
1505
1507 (uint8_t *)&reg, 1);
1508
1509 switch (reg.reg_access)
1510 {
1512 *val = LSM6DSO32_USER_BANK;
1513 break;
1514
1517 break;
1518
1521 break;
1522
1523 default:
1524 *val = LSM6DSO32_USER_BANK;
1525 break;
1526 }
1527
1528 return ret;
1529}
1530
1541 uint16_t address,
1542 uint8_t *val)
1543{
1544 lsm6dso32_page_rw_t page_rw;
1545 lsm6dso32_page_sel_t page_sel;
1546 lsm6dso32_page_address_t page_address;
1547 int32_t ret;
1548
1550
1551 if (ret == 0)
1552 {
1553 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_PAGE_RW, (uint8_t *) &page_rw, 1);
1554 }
1555
1556 if (ret == 0)
1557 {
1558 page_rw.page_rw = 0x02; /* page_write enable */
1560 (uint8_t *) &page_rw, 1);
1561 }
1562
1563 if (ret == 0)
1564 {
1566 (uint8_t *) &page_sel, 1);
1567 }
1568
1569 if (ret == 0)
1570 {
1571 page_sel.page_sel = ((uint8_t)(address >> 8) & 0x0FU);
1572 page_sel.not_used_01 = 1;
1574 (uint8_t *) &page_sel, 1);
1575 }
1576
1577 if (ret == 0)
1578 {
1579 page_address.page_addr = (uint8_t)address & 0xFFU;
1581 (uint8_t *)&page_address, 1);
1582 }
1583
1584 if (ret == 0)
1585 {
1586 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_PAGE_VALUE, val, 1);
1587 }
1588
1589 if (ret == 0)
1590 {
1591 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_PAGE_RW, (uint8_t *) &page_rw, 1);
1592 }
1593
1594 if (ret == 0)
1595 {
1596 page_rw.page_rw = 0x00; /* page_write disable */
1598 (uint8_t *) &page_rw, 1);
1599 }
1600
1601 if (ret == 0)
1602 {
1604 }
1605
1606 return ret;
1607}
1608
1619int32_t lsm6dso32_ln_pg_write(stmdev_ctx_t *ctx, uint16_t address,
1620 uint8_t *buf, uint8_t len)
1621{
1622 lsm6dso32_page_rw_t page_rw;
1623 lsm6dso32_page_sel_t page_sel;
1624 lsm6dso32_page_address_t page_address;
1625 int32_t ret;
1626
1627 uint8_t msb, lsb;
1628 uint8_t i ;
1629 msb = ((uint8_t)(address >> 8) & 0x0FU);
1630 lsb = (uint8_t)address & 0xFFU;
1632
1633 if (ret == 0)
1634 {
1635 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_PAGE_RW, (uint8_t *) &page_rw, 1);
1636 }
1637
1638 if (ret == 0)
1639 {
1640 page_rw.page_rw = 0x02; /* page_write enable*/
1642 (uint8_t *) &page_rw, 1);
1643 }
1644
1645 if (ret == 0)
1646 {
1648 (uint8_t *) &page_sel, 1);
1649 }
1650
1651 if (ret == 0)
1652 {
1653 page_sel.page_sel = msb;
1654 page_sel.not_used_01 = 1;
1656 (uint8_t *) &page_sel, 1);
1657 }
1658
1659 if (ret == 0)
1660 {
1661 page_address.page_addr = lsb;
1663 (uint8_t *)&page_address, 1);
1664 }
1665
1666 if (ret == 0)
1667 {
1668 for (i = 0; ((i < len) && (ret == 0)); i++)
1669 {
1670 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_PAGE_VALUE, &buf[i], 1);
1671
1672 /* Check if page wrap */
1673 if ((lsb == 0x00U) && (ret == 0))
1674 {
1675 lsb++;
1676 msb++;
1678 (uint8_t *)&page_sel, 1);
1679
1680 if (ret == 0)
1681 {
1682 page_sel.page_sel = msb;
1683 page_sel.not_used_01 = 1;
1685 (uint8_t *)&page_sel, 1);
1686 }
1687 }
1688 }
1689
1690 page_sel.page_sel = 0;
1691 page_sel.not_used_01 = 1;
1693 (uint8_t *) &page_sel, 1);
1694 }
1695
1696 if (ret == 0)
1697 {
1698 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_PAGE_RW, (uint8_t *) &page_rw, 1);
1699 }
1700
1701 if (ret == 0)
1702 {
1703 page_rw.page_rw = 0x00; /* page_write disable */
1705 (uint8_t *) &page_rw, 1);
1706 }
1707
1708 if (ret == 0)
1709 {
1711 }
1712
1713 return ret;
1714}
1715
1725int32_t lsm6dso32_ln_pg_read_byte(stmdev_ctx_t *ctx, uint16_t address,
1726 uint8_t *val)
1727{
1728 lsm6dso32_page_rw_t page_rw;
1729 lsm6dso32_page_sel_t page_sel;
1730 lsm6dso32_page_address_t page_address;
1731 int32_t ret;
1732
1734
1735 if (ret == 0)
1736 {
1737 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_PAGE_RW, (uint8_t *) &page_rw, 1);
1738 }
1739
1740 if (ret == 0)
1741 {
1742 page_rw.page_rw = 0x01; /* page_read enable*/
1744 (uint8_t *) &page_rw, 1);
1745 }
1746
1747 if (ret == 0)
1748 {
1750 (uint8_t *) &page_sel, 1);
1751 }
1752
1753 if (ret == 0)
1754 {
1755 page_sel.page_sel = ((uint8_t)(address >> 8) & 0x0FU);
1756 page_sel.not_used_01 = 1;
1758 (uint8_t *) &page_sel, 1);
1759 }
1760
1761 if (ret == 0)
1762 {
1763 page_address.page_addr = (uint8_t)address & 0x00FFU;
1765 (uint8_t *)&page_address, 1);
1766 }
1767
1768 if (ret == 0)
1769 {
1770 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_PAGE_VALUE, val, 2);
1771 }
1772
1773 if (ret == 0)
1774 {
1775 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_PAGE_RW, (uint8_t *) &page_rw, 1);
1776 }
1777
1778 if (ret == 0)
1779 {
1780 page_rw.page_rw = 0x00; /* page_read disable */
1782 (uint8_t *) &page_rw, 1);
1783 }
1784
1785 if (ret == 0)
1786 {
1788 }
1789
1790 return ret;
1791}
1792
1804{
1806 int32_t ret;
1807
1809 (uint8_t *)&reg, 1);
1810
1811 if (ret == 0)
1812 {
1813 reg.dataready_pulsed = (uint8_t)val;
1815 (uint8_t *)&reg, 1);
1816 }
1817
1818 return ret;
1819}
1820
1833{
1835 int32_t ret;
1836
1838 (uint8_t *)&reg, 1);
1839
1840 switch (reg.dataready_pulsed)
1841 {
1844 break;
1845
1847 *val = LSM6DSO32_DRDY_PULSED;
1848 break;
1849
1850 default:
1852 break;
1853 }
1854
1855 return ret;
1856}
1857
1866int32_t lsm6dso32_device_id_get(stmdev_ctx_t *ctx, uint8_t *buff)
1867{
1868 int32_t ret;
1869
1870 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_WHO_AM_I, buff, 1);
1871
1872 return ret;
1873}
1874
1884int32_t lsm6dso32_reset_set(stmdev_ctx_t *ctx, uint8_t val)
1885{
1887 int32_t ret;
1888
1889 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
1890
1891 if (ret == 0)
1892 {
1893 reg.sw_reset = val;
1894 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
1895 }
1896
1897 return ret;
1898}
1899
1908int32_t lsm6dso32_reset_get(stmdev_ctx_t *ctx, uint8_t *val)
1909{
1911 int32_t ret;
1912
1913 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
1914 *val = reg.sw_reset;
1915
1916 return ret;
1917}
1918
1929{
1931 int32_t ret;
1932
1933 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
1934
1935 if (ret == 0)
1936 {
1937 reg.if_inc = val;
1938 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
1939 }
1940
1941 return ret;
1942}
1943
1954{
1956 int32_t ret;
1957
1958 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
1959 *val = reg.if_inc;
1960
1961 return ret;
1962}
1963
1972int32_t lsm6dso32_boot_set(stmdev_ctx_t *ctx, uint8_t val)
1973{
1975 int32_t ret;
1976
1977 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
1978
1979 if (ret == 0)
1980 {
1981 reg.boot = val;
1982 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
1983 }
1984
1985 return ret;
1986}
1987
1996int32_t lsm6dso32_boot_get(stmdev_ctx_t *ctx, uint8_t *val)
1997{
1999 int32_t ret;
2000
2001 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
2002 *val = reg.boot;
2003
2004 return ret;
2005}
2006
2017{
2019 int32_t ret;
2020
2021 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL5_C, (uint8_t *)&reg, 1);
2022
2023 if (ret == 0)
2024 {
2025 reg.st_xl = (uint8_t)val;
2026 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL5_C, (uint8_t *)&reg, 1);
2027 }
2028
2029 return ret;
2030}
2031
2041 lsm6dso32_st_xl_t *val)
2042{
2044 int32_t ret;
2045
2046 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL5_C, (uint8_t *)&reg, 1);
2047
2048 switch (reg.st_xl)
2049 {
2052 break;
2053
2056 break;
2057
2060 break;
2061
2062 default:
2064 break;
2065 }
2066
2067 return ret;
2068}
2069
2079 lsm6dso32_st_g_t val)
2080{
2082 int32_t ret;
2083
2084 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL5_C, (uint8_t *)&reg, 1);
2085
2086 if (ret == 0)
2087 {
2088 reg.st_g = (uint8_t)val;
2089 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL5_C, (uint8_t *)&reg, 1);
2090 }
2091
2092 return ret;
2093}
2094
2104 lsm6dso32_st_g_t *val)
2105{
2107 int32_t ret;
2108
2109 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL5_C, (uint8_t *)&reg, 1);
2110
2111 switch (reg.st_g)
2112 {
2115 break;
2116
2119 break;
2120
2123 break;
2124
2125 default:
2127 break;
2128 }
2129
2130 return ret;
2131}
2132
2156{
2158 int32_t ret;
2159
2160 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL1_XL, (uint8_t *)&reg, 1);
2161
2162 if (ret == 0)
2163 {
2164 reg.lpf2_xl_en = val;
2165 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL1_XL, (uint8_t *)&reg, 1);
2166 }
2167
2168 return ret;
2169}
2170
2180{
2182 int32_t ret;
2183
2184 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL1_XL, (uint8_t *)&reg, 1);
2185 *val = reg.lpf2_xl_en;
2186
2187 return ret;
2188}
2189
2201{
2203 int32_t ret;
2204
2205 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
2206
2207 if (ret == 0)
2208 {
2209 reg.lpf1_sel_g = val;
2210 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
2211 }
2212
2213 return ret;
2214}
2215
2227{
2229 int32_t ret;
2230
2231 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
2232 *val = reg.lpf1_sel_g;
2233
2234 return ret;
2235}
2236
2247 uint8_t val)
2248{
2250 int32_t ret;
2251
2252 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
2253
2254 if (ret == 0)
2255 {
2256 reg.drdy_mask = val;
2257 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
2258 }
2259
2260 return ret;
2261}
2262
2273 uint8_t *val)
2274{
2276 int32_t ret;
2277
2278 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
2279 *val = reg.drdy_mask;
2280
2281 return ret;
2282}
2283
2294{
2296 int32_t ret;
2297
2298 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL6_C, (uint8_t *)&reg, 1);
2299
2300 if (ret == 0)
2301 {
2302 reg.ftype = (uint8_t)val;
2303 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL6_C, (uint8_t *)&reg, 1);
2304 }
2305
2306 return ret;
2307}
2308
2318 lsm6dso32_ftype_t *val)
2319{
2321 int32_t ret;
2322
2323 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL6_C, (uint8_t *)&reg, 1);
2324
2325 switch (reg.ftype)
2326 {
2328 *val = LSM6DSO32_ULTRA_LIGHT;
2329 break;
2330
2332 *val = LSM6DSO32_VERY_LIGHT;
2333 break;
2334
2335 case LSM6DSO32_LIGHT:
2336 *val = LSM6DSO32_LIGHT;
2337 break;
2338
2339 case LSM6DSO32_MEDIUM:
2340 *val = LSM6DSO32_MEDIUM;
2341 break;
2342
2343 case LSM6DSO32_STRONG:
2344 *val = LSM6DSO32_STRONG;
2345 break;
2346
2348 *val = LSM6DSO32_VERY_STRONG;
2349 break;
2350
2352 *val = LSM6DSO32_AGGRESSIVE;
2353 break;
2354
2355 case LSM6DSO32_XTREME:
2356 *val = LSM6DSO32_XTREME;
2357 break;
2358
2359 default:
2360 *val = LSM6DSO32_ULTRA_LIGHT;
2361 break;
2362 }
2363
2364 return ret;
2365}
2366
2376{
2378 int32_t ret;
2379
2380 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL8_XL, (uint8_t *)&reg, 1);
2381
2382 if (ret == 0)
2383 {
2384 reg.low_pass_on_6d = val;
2385 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL8_XL, (uint8_t *)&reg, 1);
2386 }
2387
2388 return ret;
2389}
2390
2399int32_t lsm6dso32_xl_lp2_on_6d_get(stmdev_ctx_t *ctx, uint8_t *val)
2400{
2402 int32_t ret;
2403
2404 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL8_XL, (uint8_t *)&reg, 1);
2405 *val = reg.low_pass_on_6d;
2406
2407 return ret;
2408}
2409
2422{
2424 int32_t ret;
2425
2426 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL8_XL, (uint8_t *)&reg, 1);
2427
2428 if (ret == 0)
2429 {
2430 reg.hp_slope_xl_en = ((uint8_t)val & 0x10U) >> 4;
2431 reg.hp_ref_mode_xl = ((uint8_t)val & 0x20U) >> 5;
2432 reg.hpcf_xl = (uint8_t)val & 0x07U;
2433 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL8_XL, (uint8_t *)&reg, 1);
2434 }
2435
2436 return ret;
2437}
2438
2450{
2452 int32_t ret;
2453
2454 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL8_XL, (uint8_t *)&reg, 1);
2455
2456 switch ((reg.hp_ref_mode_xl << 5) | (reg.hp_slope_xl_en << 4) |
2457 reg.hpcf_xl)
2458 {
2461 break;
2462
2465 break;
2466
2469 break;
2470
2473 break;
2474
2477 break;
2478
2481 break;
2482
2485 break;
2486
2489 break;
2490
2493 break;
2494
2497 break;
2498
2501 break;
2502
2505 break;
2506
2509 break;
2510
2513 break;
2514
2517 break;
2518
2521 break;
2522
2525 break;
2526
2529 break;
2530
2533 break;
2534
2537 break;
2538
2541 break;
2542
2545 break;
2546
2549 break;
2550
2551 default:
2553 break;
2554 }
2555
2556 return ret;
2557}
2558
2571{
2573 int32_t ret;
2574
2575 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL8_XL, (uint8_t *)&reg, 1);
2576
2577 if (ret == 0)
2578 {
2579 reg.fastsettl_mode_xl = val;
2580 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL8_XL, (uint8_t *)&reg, 1);
2581 }
2582
2583 return ret;
2584}
2585
2597 uint8_t *val)
2598{
2600 int32_t ret;
2601
2602 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL8_XL, (uint8_t *)&reg, 1);
2603 *val = reg.fastsettl_mode_xl;
2604
2605 return ret;
2606}
2607
2619{
2621 int32_t ret;
2622
2623 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG0, (uint8_t *)&reg, 1);
2624
2625 if (ret == 0)
2626 {
2627 reg.slope_fds = (uint8_t)val;
2628 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_TAP_CFG0, (uint8_t *)&reg, 1);
2629 }
2630
2631 return ret;
2632}
2633
2645{
2647 int32_t ret;
2648
2649 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG0, (uint8_t *)&reg, 1);
2650
2651 switch (reg.slope_fds)
2652 {
2654 *val = LSM6DSO32_USE_SLOPE;
2655 break;
2656
2657 case LSM6DSO32_USE_HPF:
2658 *val = LSM6DSO32_USE_HPF;
2659 break;
2660
2661 default:
2662 *val = LSM6DSO32_USE_SLOPE;
2663 break;
2664 }
2665
2666 return ret;
2667}
2668
2680{
2682 int32_t ret;
2683
2684 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL7_G, (uint8_t *)&reg, 1);
2685
2686 if (ret == 0)
2687 {
2688 reg.hp_en_g = ((uint8_t)val & 0x80U) >> 7;
2689 reg.hpm_g = (uint8_t)val & 0x03U;
2690 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL7_G, (uint8_t *)&reg, 1);
2691 }
2692
2693 return ret;
2694}
2695
2706 lsm6dso32_hpm_g_t *val)
2707{
2709 int32_t ret;
2710
2711 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL7_G, (uint8_t *)&reg, 1);
2712
2713 switch ((reg.hp_en_g << 7) + reg.hpm_g)
2714 {
2717 break;
2718
2721 break;
2722
2725 break;
2726
2729 break;
2730
2733 break;
2734
2735 default:
2737 break;
2738 }
2739
2740 return ret;
2741}
2742
2768{
2770 int32_t ret;
2771
2772 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_PIN_CTRL, (uint8_t *)&reg, 1);
2773
2774 if (ret == 0)
2775 {
2776 reg.sdo_pu_en = (uint8_t)val;
2777 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_PIN_CTRL, (uint8_t *)&reg, 1);
2778 }
2779
2780 return ret;
2781}
2782
2793{
2795 int32_t ret;
2796
2797 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_PIN_CTRL, (uint8_t *)&reg, 1);
2798
2799 switch (reg.sdo_pu_en)
2800 {
2803 break;
2804
2807 break;
2808
2809 default:
2811 break;
2812 }
2813
2814 return ret;
2815}
2816
2826{
2828 int32_t ret;
2829
2830 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
2831
2832 if (ret == 0)
2833 {
2834 reg.sim = (uint8_t)val;
2835 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
2836 }
2837
2838 return ret;
2839}
2840
2850 lsm6dso32_sim_t *val)
2851{
2853 int32_t ret;
2854
2855 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
2856
2857 switch (reg.sim)
2858 {
2860 *val = LSM6DSO32_SPI_4_WIRE;
2861 break;
2862
2864 *val = LSM6DSO32_SPI_3_WIRE;
2865 break;
2866
2867 default:
2868 *val = LSM6DSO32_SPI_4_WIRE;
2869 break;
2870 }
2871
2872 return ret;
2873}
2874
2886{
2888 int32_t ret;
2889
2890 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
2891
2892 if (ret == 0)
2893 {
2894 reg.i2c_disable = (uint8_t)val;
2895 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
2896 }
2897
2898 return ret;
2899}
2900
2912{
2914 int32_t ret;
2915
2916 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
2917
2918 switch (reg.i2c_disable)
2919 {
2921 *val = LSM6DSO32_I2C_ENABLE;
2922 break;
2923
2925 *val = LSM6DSO32_I2C_DISABLE;
2926 break;
2927
2928 default:
2929 *val = LSM6DSO32_I2C_ENABLE;
2930 break;
2931 }
2932
2933 return ret;
2934}
2935
2946{
2947 lsm6dso32_i3c_bus_avb_t i3c_bus_avb;
2948 lsm6dso32_ctrl9_xl_t ctrl9_xl;
2949 int32_t ret;
2950
2952 (uint8_t *)&ctrl9_xl, 1);
2953
2954 if (ret == 0)
2955 {
2956 ctrl9_xl.i3c_disable = ((uint8_t)val & 0x80U) >> 7;
2958 (uint8_t *)&ctrl9_xl, 1);
2959 }
2960
2961 if (ret == 0)
2962 {
2964 (uint8_t *)&i3c_bus_avb, 1);
2965 }
2966
2967 if (ret == 0)
2968 {
2969 i3c_bus_avb.i3c_bus_avb_sel = (uint8_t)val & 0x03U;
2971 (uint8_t *)&i3c_bus_avb, 1);
2972 }
2973
2974 return ret;
2975}
2976
2987{
2988 lsm6dso32_ctrl9_xl_t ctrl9_xl;
2989 lsm6dso32_i3c_bus_avb_t i3c_bus_avb;
2990 int32_t ret;
2991
2993 (uint8_t *)&ctrl9_xl, 1);
2994
2995 if (ret == 0)
2996 {
2998 (uint8_t *)&i3c_bus_avb, 1);
2999
3000 switch ((ctrl9_xl.i3c_disable << 7) | i3c_bus_avb.i3c_bus_avb_sel)
3001 {
3003 *val = LSM6DSO32_I3C_DISABLE;
3004 break;
3005
3008 break;
3009
3012 break;
3013
3016 break;
3017
3020 break;
3021
3022 default:
3023 *val = LSM6DSO32_I3C_DISABLE;
3024 break;
3025 }
3026 }
3027
3028 return ret;
3029}
3030
3054{
3056 int32_t ret;
3057
3058 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_I3C_BUS_AVB, (uint8_t *)&reg, 1);
3059
3060 if (ret == 0)
3061 {
3062 reg.pd_dis_int1 = (uint8_t)val;
3063 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_I3C_BUS_AVB, (uint8_t *)&reg, 1);
3064 }
3065
3066 return ret;
3067}
3068
3079{
3081 int32_t ret;
3082
3083 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_I3C_BUS_AVB, (uint8_t *)&reg, 1);
3084
3085 switch (reg.pd_dis_int1)
3086 {
3089 break;
3090
3093 break;
3094
3095 default:
3097 break;
3098 }
3099
3100 return ret;
3101}
3102
3115{
3116 lsm6dso32_pin_int2_route_t pin_int2_route;
3117 lsm6dso32_tap_cfg2_t tap_cfg2;
3118 int32_t ret;
3119
3121
3122 if (ret == 0)
3123 {
3125 (uint8_t *)&val->emb_func_int1, 1);
3126 }
3127
3128 if (ret == 0)
3129 {
3131 (uint8_t *)&val->fsm_int1_a, 1);
3132 }
3133
3134 if (ret == 0)
3135 {
3137 (uint8_t *)&val->fsm_int1_b, 1);
3138 }
3139
3140 if (ret == 0)
3141 {
3143 }
3144
3145 if (ret == 0)
3146 {
3147 if ((val->emb_func_int1.int1_fsm_lc
3151 | val->fsm_int1_a.int1_fsm1
3152 | val->fsm_int1_a.int1_fsm2
3153 | val->fsm_int1_a.int1_fsm3
3154 | val->fsm_int1_a.int1_fsm4
3155 | val->fsm_int1_a.int1_fsm5
3156 | val->fsm_int1_a.int1_fsm6
3157 | val->fsm_int1_a.int1_fsm7
3158 | val->fsm_int1_a.int1_fsm8
3159 | val->fsm_int1_b.int1_fsm9
3160 | val->fsm_int1_b.int1_fsm10
3161 | val->fsm_int1_b.int1_fsm11
3162 | val->fsm_int1_b.int1_fsm12
3163 | val->fsm_int1_b.int1_fsm13
3164 | val->fsm_int1_b.int1_fsm14
3165 | val->fsm_int1_b.int1_fsm15
3167 {
3169 }
3170
3171 else
3172 {
3174 }
3175
3177 (uint8_t *)&val->int1_ctrl, 1);
3178 }
3179
3180 if (ret == 0)
3181 {
3183 (uint8_t *)&val->md1_cfg, 1);
3184 }
3185
3186 if (ret == 0)
3187 {
3189 (uint8_t *) &tap_cfg2, 1);
3190 }
3191
3192 if (ret == 0)
3193 {
3194 ret = lsm6dso32_pin_int2_route_get(ctx, &pin_int2_route);
3195 }
3196
3197 if (ret == 0)
3198 {
3199 if ((pin_int2_route.int2_ctrl.int2_cnt_bdr
3200 | pin_int2_route.int2_ctrl.int2_drdy_g
3201 | pin_int2_route.int2_ctrl.int2_drdy_temp
3202 | pin_int2_route.int2_ctrl.int2_drdy_xl
3203 | pin_int2_route.int2_ctrl.int2_fifo_full
3204 | pin_int2_route.int2_ctrl.int2_fifo_ovr
3205 | pin_int2_route.int2_ctrl.int2_fifo_th
3206 | pin_int2_route.md2_cfg.int2_6d
3207 | pin_int2_route.md2_cfg.int2_double_tap
3208 | pin_int2_route.md2_cfg.int2_ff
3209 | pin_int2_route.md2_cfg.int2_wu
3210 | pin_int2_route.md2_cfg.int2_single_tap
3211 | pin_int2_route.md2_cfg.int2_sleep_change
3213 | val->int1_ctrl.int1_boot
3214 | val->int1_ctrl.int1_cnt_bdr
3215 | val->int1_ctrl.int1_drdy_g
3216 | val->int1_ctrl.int1_drdy_xl
3219 | val->int1_ctrl.int1_fifo_th
3220 | val->md1_cfg.int1_6d
3222 | val->md1_cfg.int1_ff
3223 | val->md1_cfg.int1_wu
3226 {
3228 }
3229
3230 else
3231 {
3233 }
3234
3236 (uint8_t *) &tap_cfg2, 1);
3237 }
3238
3239 return ret;
3240}
3241
3253{
3254 int32_t ret;
3255
3257
3258 if (ret == 0)
3259 {
3261 (uint8_t *)&val->emb_func_int1, 1);
3262 }
3263
3264 if (ret == 0)
3265 {
3267 (uint8_t *)&val->fsm_int1_a, 1);
3268 }
3269
3270 if (ret == 0)
3271 {
3273 (uint8_t *)&val->fsm_int1_b, 1);
3274 }
3275
3276 if (ret == 0)
3277 {
3279 }
3280
3281 if (ret == 0)
3282 {
3284 (uint8_t *)&val->int1_ctrl, 1);
3285 }
3286
3287 if (ret == 0)
3288 {
3290 (uint8_t *)&val->md1_cfg, 1);
3291 }
3292
3293 return ret;
3294}
3295
3307{
3308 lsm6dso32_pin_int1_route_t pin_int1_route;
3309 lsm6dso32_tap_cfg2_t tap_cfg2;
3310 int32_t ret;
3311
3313
3314 if (ret == 0)
3315 {
3317 (uint8_t *)&val->emb_func_int2, 1);
3318 }
3319
3320 if (ret == 0)
3321 {
3323 (uint8_t *)&val->fsm_int2_a, 1);
3324 }
3325
3326 if (ret == 0)
3327 {
3329 (uint8_t *)&val->fsm_int2_b, 1);
3330 }
3331
3332 if (ret == 0)
3333 {
3335 }
3336
3337 if (ret == 0)
3338 {
3339 if ((val->emb_func_int2.int2_fsm_lc
3343 | val->fsm_int2_a.int2_fsm1
3344 | val->fsm_int2_a.int2_fsm2
3345 | val->fsm_int2_a.int2_fsm3
3346 | val->fsm_int2_a.int2_fsm4
3347 | val->fsm_int2_a.int2_fsm5
3348 | val->fsm_int2_a.int2_fsm6
3349 | val->fsm_int2_a.int2_fsm7
3350 | val->fsm_int2_a.int2_fsm8
3351 | val->fsm_int2_b.int2_fsm9
3352 | val->fsm_int2_b.int2_fsm10
3353 | val->fsm_int2_b.int2_fsm11
3354 | val->fsm_int2_b.int2_fsm12
3355 | val->fsm_int2_b.int2_fsm13
3356 | val->fsm_int2_b.int2_fsm14
3357 | val->fsm_int2_b.int2_fsm15
3359 {
3361 }
3362
3363 else
3364 {
3366 }
3367
3369 (uint8_t *)&val->int2_ctrl, 1);
3370 }
3371
3372 if (ret == 0)
3373 {
3375 (uint8_t *)&val->md2_cfg, 1);
3376 }
3377
3378 if (ret == 0)
3379 {
3381 (uint8_t *) &tap_cfg2, 1);
3382 }
3383
3384 if (ret == 0)
3385 {
3386 ret = lsm6dso32_pin_int1_route_get(ctx, &pin_int1_route);
3387 }
3388
3389 if (ret == 0)
3390 {
3391 if ((val->int2_ctrl.int2_cnt_bdr
3392 | val->int2_ctrl.int2_drdy_g
3394 | val->int2_ctrl.int2_drdy_xl
3397 | val->int2_ctrl.int2_fifo_th
3398 | val->md2_cfg.int2_6d
3400 | val->md2_cfg.int2_ff
3401 | val->md2_cfg.int2_wu
3404 | pin_int1_route.int1_ctrl.den_drdy_flag
3405 | pin_int1_route.int1_ctrl.int1_boot
3406 | pin_int1_route.int1_ctrl.int1_cnt_bdr
3407 | pin_int1_route.int1_ctrl.int1_drdy_g
3408 | pin_int1_route.int1_ctrl.int1_drdy_xl
3409 | pin_int1_route.int1_ctrl.int1_fifo_full
3410 | pin_int1_route.int1_ctrl.int1_fifo_ovr
3411 | pin_int1_route.int1_ctrl.int1_fifo_th
3412 | pin_int1_route.md1_cfg.int1_6d
3413 | pin_int1_route.md1_cfg.int1_double_tap
3414 | pin_int1_route.md1_cfg.int1_ff
3415 | pin_int1_route.md1_cfg.int1_wu
3416 | pin_int1_route.md1_cfg.int1_single_tap
3417 | pin_int1_route.md1_cfg.int1_sleep_change) != PROPERTY_DISABLE)
3418 {
3420 }
3421
3422 else
3423 {
3425 }
3426
3428 (uint8_t *) &tap_cfg2, 1);
3429 }
3430
3431 return ret;
3432}
3433
3445{
3446 int32_t ret;
3447
3449
3450 if (ret == 0)
3451 {
3453 (uint8_t *)&val->emb_func_int2, 1);
3454 }
3455
3456 if (ret == 0)
3457 {
3459 (uint8_t *)&val->fsm_int2_a, 1);
3460 }
3461
3462 if (ret == 0)
3463 {
3465 (uint8_t *)&val->fsm_int2_b, 1);
3466 }
3467
3468 if (ret == 0)
3469 {
3471 }
3472
3473 if (ret == 0)
3474 {
3476 (uint8_t *)&val->int2_ctrl, 1);
3477 }
3478
3479 if (ret == 0)
3480 {
3482 (uint8_t *)&val->md2_cfg, 1);
3483 }
3484
3485 return ret;
3486}
3487
3498{
3500 int32_t ret;
3501
3502 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
3503
3504 if (ret == 0)
3505 {
3506 reg.pp_od = (uint8_t)val;
3507 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
3508 }
3509
3510 return ret;
3511}
3512
3522 lsm6dso32_pp_od_t *val)
3523{
3525 int32_t ret;
3526
3527 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
3528
3529 switch (reg.pp_od)
3530 {
3532 *val = LSM6DSO32_PUSH_PULL;
3533 break;
3534
3536 *val = LSM6DSO32_OPEN_DRAIN;
3537 break;
3538
3539 default:
3540 *val = LSM6DSO32_PUSH_PULL;
3541 break;
3542 }
3543
3544 return ret;
3545}
3546
3557{
3559 int32_t ret;
3560
3561 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
3562
3563 if (ret == 0)
3564 {
3565 reg.h_lactive = (uint8_t)val;
3566 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
3567 }
3568
3569 return ret;
3570}
3571
3582{
3584 int32_t ret;
3585
3586 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
3587
3588 switch (reg.h_lactive)
3589 {
3591 *val = LSM6DSO32_ACTIVE_HIGH;
3592 break;
3593
3595 *val = LSM6DSO32_ACTIVE_LOW;
3596 break;
3597
3598 default:
3599 *val = LSM6DSO32_ACTIVE_HIGH;
3600 break;
3601 }
3602
3603 return ret;
3604}
3605
3614int32_t lsm6dso32_all_on_int1_set(stmdev_ctx_t *ctx, uint8_t val)
3615{
3617 int32_t ret;
3618
3619 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
3620
3621 if (ret == 0)
3622 {
3623 reg.int2_on_int1 = val;
3624 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
3625 }
3626
3627 return ret;
3628}
3629
3638int32_t lsm6dso32_all_on_int1_get(stmdev_ctx_t *ctx, uint8_t *val)
3639{
3641 int32_t ret;
3642
3643 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
3644 *val = reg.int2_on_int1;
3645
3646 return ret;
3647}
3648
3658 lsm6dso32_lir_t val)
3659{
3660 lsm6dso32_tap_cfg0_t tap_cfg0;
3661 lsm6dso32_page_rw_t page_rw;
3662 int32_t ret;
3663
3665 (uint8_t *) &tap_cfg0, 1);
3666
3667 if (ret == 0)
3668 {
3669 tap_cfg0.lir = (uint8_t)val & 0x01U;
3670 tap_cfg0.int_clr_on_read = (uint8_t)val & 0x01U;
3672 (uint8_t *) &tap_cfg0, 1);
3673 }
3674
3675 if (ret == 0)
3676 {
3678 }
3679
3680 if (ret == 0)
3681 {
3682 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_PAGE_RW, (uint8_t *) &page_rw, 1);
3683 }
3684
3685 if (ret == 0)
3686 {
3687 page_rw.emb_func_lir = ((uint8_t)val & 0x02U) >> 1;
3689 (uint8_t *) &page_rw, 1);
3690 }
3691
3692 if (ret == 0)
3693 {
3695 }
3696
3697 return ret;
3698}
3699
3709 lsm6dso32_lir_t *val)
3710{
3711 lsm6dso32_tap_cfg0_t tap_cfg0;
3712 lsm6dso32_page_rw_t page_rw;
3713 int32_t ret;
3714
3716 (uint8_t *) &tap_cfg0, 1);
3717
3718 if (ret == 0)
3719 {
3721 }
3722
3723 if (ret == 0)
3724 {
3725 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_PAGE_RW, (uint8_t *) &page_rw, 1);
3726 }
3727
3728 if (ret == 0)
3729 {
3731 }
3732
3733 if (ret == 0)
3734 {
3735 switch ((page_rw.emb_func_lir << 1) | tap_cfg0.lir)
3736 {
3739 break;
3740
3743 break;
3744
3747 break;
3748
3751 break;
3752
3753 default:
3755 break;
3756 }
3757
3759 }
3760
3761 if (ret == 0)
3762 {
3763 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_PAGE_RW, (uint8_t *) &page_rw, 1);
3764 }
3765
3766 if (ret == 0)
3767 {
3769 }
3770
3771 return ret;
3772}
3773
3801{
3803 int32_t ret;
3804
3805 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_WAKE_UP_DUR, (uint8_t *)&reg, 1);
3806
3807 if (ret == 0)
3808 {
3809 reg.wake_ths_w = (uint8_t)val;
3810 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_WAKE_UP_DUR, (uint8_t *)&reg, 1);
3811 }
3812
3813 return ret;
3814}
3815
3829{
3831 int32_t ret;
3832
3833 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_WAKE_UP_DUR, (uint8_t *)&reg, 1);
3834
3835 switch (reg.wake_ths_w)
3836 {
3839 break;
3840
3843 break;
3844
3845 default:
3847 break;
3848 }
3849
3850 return ret;
3851}
3852
3863{
3865 int32_t ret;
3866
3867 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_WAKE_UP_THS, (uint8_t *)&reg, 1);
3868
3869 if (ret == 0)
3870 {
3871 reg.wk_ths = val;
3872 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_WAKE_UP_THS, (uint8_t *)&reg, 1);
3873 }
3874
3875 return ret;
3876}
3877
3888{
3890 int32_t ret;
3891
3892 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_WAKE_UP_THS, (uint8_t *)&reg, 1);
3893 *val = reg.wk_ths;
3894
3895 return ret;
3896}
3897
3908 uint8_t val)
3909{
3911 int32_t ret;
3912
3913 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_WAKE_UP_THS, (uint8_t *)&reg, 1);
3914
3915 if (ret == 0)
3916 {
3917 reg.usr_off_on_wu = val;
3918 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_WAKE_UP_THS, (uint8_t *)&reg, 1);
3919 }
3920
3921 return ret;
3922}
3923
3934 uint8_t *val)
3935{
3937 int32_t ret;
3938
3939 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_WAKE_UP_THS, (uint8_t *)&reg, 1);
3940 *val = reg.usr_off_on_wu;
3941
3942 return ret;
3943}
3944
3954int32_t lsm6dso32_wkup_dur_set(stmdev_ctx_t *ctx, uint8_t val)
3955{
3957 int32_t ret;
3958
3959 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_WAKE_UP_DUR, (uint8_t *)&reg, 1);
3960
3961 if (ret == 0)
3962 {
3963 reg.wake_dur = val;
3964 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_WAKE_UP_DUR, (uint8_t *)&reg, 1);
3965 }
3966
3967 return ret;
3968}
3969
3979int32_t lsm6dso32_wkup_dur_get(stmdev_ctx_t *ctx, uint8_t *val)
3980{
3982 int32_t ret;
3983
3984 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_WAKE_UP_DUR, (uint8_t *)&reg, 1);
3985 *val = reg.wake_dur;
3986
3987 return ret;
3988}
3989
4013{
4015 int32_t ret;
4016
4017 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
4018
4019 if (ret == 0)
4020 {
4021 reg.sleep_g = val;
4022 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
4023 }
4024
4025 return ret;
4026}
4027
4037{
4039 int32_t ret;
4040
4041 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
4042 *val = reg.sleep_g;
4043
4044 return ret;
4045}
4046
4060{
4062 int32_t ret;
4063
4064 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG0, (uint8_t *)&reg, 1);
4065
4066 if (ret == 0)
4067 {
4068 reg.sleep_status_on_int = (uint8_t)val;
4069 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_TAP_CFG0, (uint8_t *)&reg, 1);
4070 }
4071
4072 return ret;
4073}
4074
4088{
4090 int32_t ret;
4091
4092 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG0, (uint8_t *)&reg, 1);
4093
4094 switch (reg.sleep_status_on_int)
4095 {
4098 break;
4099
4102 break;
4103
4104 default:
4106 break;
4107 }
4108
4109 return ret;
4110}
4111
4122{
4124 int32_t ret;
4125
4126 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG2, (uint8_t *)&reg, 1);
4127
4128 if (ret == 0)
4129 {
4130 reg.inact_en = (uint8_t)val;
4131 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_TAP_CFG2, (uint8_t *)&reg, 1);
4132 }
4133
4134 return ret;
4135}
4136
4147{
4149 int32_t ret;
4150
4151 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG2, (uint8_t *)&reg, 1);
4152
4153 switch (reg.inact_en)
4154 {
4157 break;
4158
4161 break;
4162
4165 break;
4166
4169 break;
4170
4171 default:
4173 break;
4174 }
4175
4176 return ret;
4177}
4178
4189{
4191 int32_t ret;
4192
4193 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_WAKE_UP_DUR, (uint8_t *)&reg, 1);
4194
4195 if (ret == 0)
4196 {
4197 reg.sleep_dur = val;
4198 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_WAKE_UP_DUR, (uint8_t *)&reg, 1);
4199 }
4200
4201 return ret;
4202}
4203
4214{
4216 int32_t ret;
4217
4218 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_WAKE_UP_DUR, (uint8_t *)&reg, 1);
4219 *val = reg.sleep_dur;
4220
4221 return ret;
4222}
4223
4247 uint8_t val)
4248{
4250 int32_t ret;
4251
4252 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG0, (uint8_t *)&reg, 1);
4253
4254 if (ret == 0)
4255 {
4256 reg.tap_z_en = val;
4257 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_TAP_CFG0, (uint8_t *)&reg, 1);
4258 }
4259
4260 return ret;
4261}
4262
4272 uint8_t *val)
4273{
4275 int32_t ret;
4276
4277 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG0, (uint8_t *)&reg, 1);
4278 *val = reg.tap_z_en;
4279
4280 return ret;
4281}
4282
4292 uint8_t val)
4293{
4295 int32_t ret;
4296
4297 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG0, (uint8_t *)&reg, 1);
4298
4299 if (ret == 0)
4300 {
4301 reg.tap_y_en = val;
4302 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_TAP_CFG0, (uint8_t *)&reg, 1);
4303 }
4304
4305 return ret;
4306}
4307
4317 uint8_t *val)
4318{
4320 int32_t ret;
4321
4322 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG0, (uint8_t *)&reg, 1);
4323 *val = reg.tap_y_en;
4324
4325 return ret;
4326}
4327
4337 uint8_t val)
4338{
4340 int32_t ret;
4341
4342 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG0, (uint8_t *)&reg, 1);
4343
4344 if (ret == 0)
4345 {
4346 reg.tap_x_en = val;
4347 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_TAP_CFG0, (uint8_t *)&reg, 1);
4348 }
4349
4350 return ret;
4351}
4352
4362 uint8_t *val)
4363{
4365 int32_t ret;
4366
4367 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG0, (uint8_t *)&reg, 1);
4368 *val = reg.tap_x_en;
4369
4370 return ret;
4371}
4372
4382{
4384 int32_t ret;
4385
4386 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG1, (uint8_t *)&reg, 1);
4387
4388 if (ret == 0)
4389 {
4390 reg.tap_ths_x = val;
4391 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_TAP_CFG1, (uint8_t *)&reg, 1);
4392 }
4393
4394 return ret;
4395}
4396
4406{
4408 int32_t ret;
4409
4410 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG1, (uint8_t *)&reg, 1);
4411 *val = reg.tap_ths_x;
4412
4413 return ret;
4414}
4415
4426{
4428 int32_t ret;
4429
4430 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG1, (uint8_t *)&reg, 1);
4431
4432 if (ret == 0)
4433 {
4434 reg.tap_priority = (uint8_t)val;
4435 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_TAP_CFG1, (uint8_t *)&reg, 1);
4436 }
4437
4438 return ret;
4439}
4440
4451{
4453 int32_t ret;
4454
4455 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG1, (uint8_t *)&reg, 1);
4456
4457 switch (reg.tap_priority)
4458 {
4459 case LSM6DSO32_XYZ:
4460 *val = LSM6DSO32_XYZ;
4461 break;
4462
4463 case LSM6DSO32_YXZ:
4464 *val = LSM6DSO32_YXZ;
4465 break;
4466
4467 case LSM6DSO32_XZY:
4468 *val = LSM6DSO32_XZY;
4469 break;
4470
4471 case LSM6DSO32_ZYX:
4472 *val = LSM6DSO32_ZYX;
4473 break;
4474
4475 case LSM6DSO32_YZX:
4476 *val = LSM6DSO32_YZX;
4477 break;
4478
4479 case LSM6DSO32_ZXY:
4480 *val = LSM6DSO32_ZXY;
4481 break;
4482
4483 default:
4484 *val = LSM6DSO32_XYZ;
4485 break;
4486 }
4487
4488 return ret;
4489}
4490
4500{
4502 int32_t ret;
4503
4504 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG2, (uint8_t *)&reg, 1);
4505
4506 if (ret == 0)
4507 {
4508 reg.tap_ths_y = val;
4509 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_TAP_CFG2, (uint8_t *)&reg, 1);
4510 }
4511
4512 return ret;
4513}
4514
4524{
4526 int32_t ret;
4527
4528 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_CFG2, (uint8_t *)&reg, 1);
4529 *val = reg.tap_ths_y;
4530
4531 return ret;
4532}
4533
4543{
4545 int32_t ret;
4546
4547 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_THS_6D, (uint8_t *)&reg, 1);
4548
4549 if (ret == 0)
4550 {
4551 reg.tap_ths_z = val;
4552 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_TAP_THS_6D, (uint8_t *)&reg, 1);
4553 }
4554
4555 return ret;
4556}
4557
4567{
4569 int32_t ret;
4570
4571 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_THS_6D, (uint8_t *)&reg, 1);
4572 *val = reg.tap_ths_z;
4573
4574 return ret;
4575}
4576
4590int32_t lsm6dso32_tap_shock_set(stmdev_ctx_t *ctx, uint8_t val)
4591{
4593 int32_t ret;
4594
4595 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_INT_DUR2, (uint8_t *)&reg, 1);
4596
4597 if (ret == 0)
4598 {
4599 reg.shock = val;
4600 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_INT_DUR2, (uint8_t *)&reg, 1);
4601 }
4602
4603 return ret;
4604}
4605
4619int32_t lsm6dso32_tap_shock_get(stmdev_ctx_t *ctx, uint8_t *val)
4620{
4622 int32_t ret;
4623
4624 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_INT_DUR2, (uint8_t *)&reg, 1);
4625 *val = reg.shock;
4626
4627 return ret;
4628}
4629
4644int32_t lsm6dso32_tap_quiet_set(stmdev_ctx_t *ctx, uint8_t val)
4645{
4647 int32_t ret;
4648
4649 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_INT_DUR2, (uint8_t *)&reg, 1);
4650
4651 if (ret == 0)
4652 {
4653 reg.quiet = val;
4654 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_INT_DUR2, (uint8_t *)&reg, 1);
4655 }
4656
4657 return ret;
4658}
4659
4674int32_t lsm6dso32_tap_quiet_get(stmdev_ctx_t *ctx, uint8_t *val)
4675{
4677 int32_t ret;
4678
4679 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_INT_DUR2, (uint8_t *)&reg, 1);
4680 *val = reg.quiet;
4681
4682 return ret;
4683}
4684
4700int32_t lsm6dso32_tap_dur_set(stmdev_ctx_t *ctx, uint8_t val)
4701{
4703 int32_t ret;
4704
4705 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_INT_DUR2, (uint8_t *)&reg, 1);
4706
4707 if (ret == 0)
4708 {
4709 reg.dur = val;
4710 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_INT_DUR2, (uint8_t *)&reg, 1);
4711 }
4712
4713 return ret;
4714}
4715
4731int32_t lsm6dso32_tap_dur_get(stmdev_ctx_t *ctx, uint8_t *val)
4732{
4734 int32_t ret;
4735
4736 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_INT_DUR2, (uint8_t *)&reg, 1);
4737 *val = reg.dur;
4738
4739 return ret;
4740}
4741
4752{
4754 int32_t ret;
4755
4756 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_WAKE_UP_THS, (uint8_t *)&reg, 1);
4757
4758 if (ret == 0)
4759 {
4760 reg.single_double_tap = (uint8_t)val;
4761 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_WAKE_UP_THS, (uint8_t *)&reg, 1);
4762 }
4763
4764 return ret;
4765}
4766
4777{
4779 int32_t ret;
4780
4781 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_WAKE_UP_THS, (uint8_t *)&reg, 1);
4782
4783 switch (reg.single_double_tap)
4784 {
4786 *val = LSM6DSO32_ONLY_SINGLE;
4787 break;
4788
4791 break;
4792
4793 default:
4794 *val = LSM6DSO32_ONLY_SINGLE;
4795 break;
4796 }
4797
4798 return ret;
4799}
4800
4824{
4826 int32_t ret;
4827
4828 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_THS_6D, (uint8_t *)&reg, 1);
4829
4830 if (ret == 0)
4831 {
4832 reg.sixd_ths = (uint8_t)val;
4833 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_TAP_THS_6D, (uint8_t *)&reg, 1);
4834 }
4835
4836 return ret;
4837}
4838
4849{
4851 int32_t ret;
4852
4853 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_THS_6D, (uint8_t *)&reg, 1);
4854
4855 switch (reg.sixd_ths)
4856 {
4857 case LSM6DSO32_DEG_68:
4858 *val = LSM6DSO32_DEG_68;
4859 break;
4860
4861 case LSM6DSO32_DEG_47:
4862 *val = LSM6DSO32_DEG_47;
4863 break;
4864
4865 default:
4866 *val = LSM6DSO32_DEG_68;
4867 break;
4868 }
4869
4870 return ret;
4871}
4872
4881int32_t lsm6dso32_4d_mode_set(stmdev_ctx_t *ctx, uint8_t val)
4882{
4884 int32_t ret;
4885
4886 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_THS_6D, (uint8_t *)&reg, 1);
4887
4888 if (ret == 0)
4889 {
4890 reg.d4d_en = val;
4891 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_TAP_THS_6D, (uint8_t *)&reg, 1);
4892 }
4893
4894 return ret;
4895}
4896
4905int32_t lsm6dso32_4d_mode_get(stmdev_ctx_t *ctx, uint8_t *val)
4906{
4908 int32_t ret;
4909
4910 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_TAP_THS_6D, (uint8_t *)&reg, 1);
4911 *val = reg.d4d_en;
4912
4913 return ret;
4914}
4915
4940{
4942 int32_t ret;
4943
4944 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FREE_FALL, (uint8_t *)&reg, 1);
4945
4946 if (ret == 0)
4947 {
4948 reg.ff_ths = (uint8_t)val;
4949 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_FREE_FALL, (uint8_t *)&reg, 1);
4950 }
4951
4952 return ret;
4953}
4954
4964 lsm6dso32_ff_ths_t *val)
4965{
4967 int32_t ret;
4968
4969 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FREE_FALL, (uint8_t *)&reg, 1);
4970
4971 switch (reg.ff_ths)
4972 {
4975 break;
4976
4979 break;
4980
4983 break;
4984
4985 default:
4987 break;
4988 }
4989
4990 return ret;
4991}
4992
5002int32_t lsm6dso32_ff_dur_set(stmdev_ctx_t *ctx, uint8_t val)
5003{
5004 lsm6dso32_wake_up_dur_t wake_up_dur;
5005 lsm6dso32_free_fall_t free_fall;
5006 int32_t ret;
5007
5009 (uint8_t *)&wake_up_dur, 1);
5010
5011 if (ret == 0)
5012 {
5014 (uint8_t *)&free_fall, 1);
5015 }
5016
5017 if (ret == 0)
5018 {
5019 wake_up_dur.ff_dur = ((uint8_t)val & 0x20U) >> 5;
5020 free_fall.ff_dur = (uint8_t)val & 0x1FU;
5022 (uint8_t *)&wake_up_dur, 1);
5023 }
5024
5025 if (ret == 0)
5026 {
5028 (uint8_t *)&free_fall, 1);
5029 }
5030
5031 return ret;
5032}
5033
5043int32_t lsm6dso32_ff_dur_get(stmdev_ctx_t *ctx, uint8_t *val)
5044{
5045 lsm6dso32_wake_up_dur_t wake_up_dur;
5046 lsm6dso32_free_fall_t free_fall;
5047 int32_t ret;
5048
5050 (uint8_t *)&wake_up_dur, 1);
5051
5052 if (ret == 0)
5053 {
5055 (uint8_t *)&free_fall, 1);
5056 *val = (wake_up_dur.ff_dur << 5) + free_fall.ff_dur;
5057 }
5058
5059 return ret;
5060}
5061
5084{
5085 lsm6dso32_fifo_ctrl1_t fifo_ctrl1;
5086 lsm6dso32_fifo_ctrl2_t fifo_ctrl2;
5087 int32_t ret;
5088
5090 (uint8_t *)&fifo_ctrl2, 1);
5091
5092 if (ret == 0)
5093 {
5094 fifo_ctrl1.wtm = 0x00FFU & (uint8_t)val;
5095 fifo_ctrl2.wtm = (uint8_t)((0x0100U & val) >> 8);
5097 (uint8_t *)&fifo_ctrl1, 1);
5098 }
5099
5100 if (ret == 0)
5101 {
5103 (uint8_t *)&fifo_ctrl2, 1);
5104 }
5105
5106 return ret;
5107}
5108
5117int32_t lsm6dso32_fifo_watermark_get(stmdev_ctx_t *ctx, uint16_t *val)
5118{
5119 lsm6dso32_fifo_ctrl1_t fifo_ctrl1;
5120 lsm6dso32_fifo_ctrl2_t fifo_ctrl2;
5121 int32_t ret;
5122
5124 (uint8_t *)&fifo_ctrl1, 1);
5125
5126 if (ret == 0)
5127 {
5129 (uint8_t *)&fifo_ctrl2, 1);
5130 *val = ((uint16_t)fifo_ctrl2.wtm << 8) + (uint16_t)fifo_ctrl1.wtm;
5131 }
5132
5133 return ret;
5134}
5135
5146 uint8_t val)
5147{
5149 int32_t ret;
5150
5152
5153 if (ret == 0)
5154 {
5156 (uint8_t *)&reg, 1);
5157 }
5158
5159 if (ret == 0)
5160 {
5161 reg.fifo_compr_init = val;
5163 (uint8_t *)&reg, 1);
5164 }
5165
5166 if (ret == 0)
5167 {
5169 }
5170
5171 return ret;
5172}
5173
5184 uint8_t *val)
5185{
5187 int32_t ret;
5188
5190
5191 if (ret == 0)
5192 {
5194 (uint8_t *)&reg, 1);
5195 }
5196
5197 if (ret == 0)
5198 {
5199 *val = reg.fifo_compr_init;
5201 }
5202
5203 return ret;
5204}
5205
5217{
5218 lsm6dso32_emb_func_en_b_t emb_func_en_b;
5219 lsm6dso32_fifo_ctrl2_t fifo_ctrl2;
5220 int32_t ret;
5221
5223
5224 if (ret == 0)
5225 {
5227 (uint8_t *)&emb_func_en_b, 1);
5228 }
5229
5230 if (ret == 0)
5231 {
5232 emb_func_en_b.fifo_compr_en = ((uint8_t)val & 0x04U) >> 2;
5234 (uint8_t *)&emb_func_en_b, 1);
5235 }
5236
5237 if (ret == 0)
5238 {
5240 }
5241
5242 if (ret == 0)
5243 {
5245 (uint8_t *)&fifo_ctrl2, 1);
5246 }
5247
5248 if (ret == 0)
5249 {
5250 fifo_ctrl2.fifo_compr_rt_en = ((uint8_t)val & 0x04U) >> 2;
5251 fifo_ctrl2.uncoptr_rate = (uint8_t)val & 0x03U;
5253 (uint8_t *)&fifo_ctrl2, 1);
5254 }
5255
5256 return ret;
5257}
5258
5270{
5272 int32_t ret;
5273
5274 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL2, (uint8_t *)&reg, 1);
5275
5276 switch ((reg.fifo_compr_rt_en << 2) | reg.uncoptr_rate)
5277 {
5279 *val = LSM6DSO32_CMP_DISABLE;
5280 break;
5281
5283 *val = LSM6DSO32_CMP_ALWAYS;
5284 break;
5285
5287 *val = LSM6DSO32_CMP_8_TO_1;
5288 break;
5289
5291 *val = LSM6DSO32_CMP_16_TO_1;
5292 break;
5293
5295 *val = LSM6DSO32_CMP_32_TO_1;
5296 break;
5297
5298 default:
5299 *val = LSM6DSO32_CMP_DISABLE;
5300 break;
5301 }
5302
5303 return ret;
5304}
5305
5315 uint8_t val)
5316{
5318 int32_t ret;
5319
5320 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL2, (uint8_t *)&reg, 1);
5321
5322 if (ret == 0)
5323 {
5324 reg.odrchg_en = val;
5325 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_FIFO_CTRL2, (uint8_t *)&reg, 1);
5326 }
5327
5328 return ret;
5329}
5330
5340 uint8_t *val)
5341{
5343 int32_t ret;
5344
5345 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL2, (uint8_t *)&reg, 1);
5346 *val = reg.odrchg_en;
5347
5348 return ret;
5349}
5350
5361 uint8_t val)
5362{
5364 int32_t ret;
5365
5366 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL2, (uint8_t *)&reg, 1);
5367
5368 if (ret == 0)
5369 {
5370 reg.fifo_compr_rt_en = val;
5371 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_FIFO_CTRL2, (uint8_t *)&reg, 1);
5372 }
5373
5374 return ret;
5375}
5376
5386 uint8_t *val)
5387{
5389 int32_t ret;
5390
5391 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL2, (uint8_t *)&reg, 1);
5392 *val = reg.fifo_compr_rt_en;
5393
5394 return ret;
5395}
5396
5407{
5409 int32_t ret;
5410
5411 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL2, (uint8_t *)&reg, 1);
5412
5413 if (ret == 0)
5414 {
5415 reg.stop_on_wtm = val;
5416 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_FIFO_CTRL2, (uint8_t *)&reg, 1);
5417 }
5418
5419 return ret;
5420}
5421
5432 uint8_t *val)
5433{
5435 int32_t ret;
5436
5437 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL2, (uint8_t *)&reg, 1);
5438 *val = reg.stop_on_wtm;
5439
5440 return ret;
5441}
5442
5454{
5456 int32_t ret;
5457
5458 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL3, (uint8_t *)&reg, 1);
5459
5460 if (ret == 0)
5461 {
5462 reg.bdr_xl = (uint8_t)val;
5463 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_FIFO_CTRL3, (uint8_t *)&reg, 1);
5464 }
5465
5466 return ret;
5467}
5468
5479 lsm6dso32_bdr_xl_t *val)
5480{
5482 int32_t ret;
5483
5484 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL3, (uint8_t *)&reg, 1);
5485
5486 switch (reg.bdr_xl)
5487 {
5490 break;
5491
5494 break;
5495
5498 break;
5499
5502 break;
5503
5506 break;
5507
5510 break;
5511
5514 break;
5515
5518 break;
5519
5522 break;
5523
5526 break;
5527
5530 break;
5531
5534 break;
5535
5536 default:
5538 break;
5539 }
5540
5541 return ret;
5542}
5543
5555{
5557 int32_t ret;
5558
5559 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL3, (uint8_t *)&reg, 1);
5560
5561 if (ret == 0)
5562 {
5563 reg.bdr_gy = (uint8_t)val;
5564 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_FIFO_CTRL3, (uint8_t *)&reg, 1);
5565 }
5566
5567 return ret;
5568}
5569
5580 lsm6dso32_bdr_gy_t *val)
5581{
5583 int32_t ret;
5584
5585 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL3, (uint8_t *)&reg, 1);
5586
5587 switch (reg.bdr_gy)
5588 {
5591 break;
5592
5595 break;
5596
5599 break;
5600
5603 break;
5604
5607 break;
5608
5611 break;
5612
5615 break;
5616
5619 break;
5620
5623 break;
5624
5627 break;
5628
5631 break;
5632
5635 break;
5636
5637 default:
5639 break;
5640 }
5641
5642 return ret;
5643}
5644
5655{
5657 int32_t ret;
5658
5659 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL4, (uint8_t *)&reg, 1);
5660
5661 if (ret == 0)
5662 {
5663 reg.fifo_mode = (uint8_t)val;
5664 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_FIFO_CTRL4, (uint8_t *)&reg, 1);
5665 }
5666
5667 return ret;
5668}
5669
5680{
5682 int32_t ret;
5683
5684 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL4, (uint8_t *)&reg, 1);
5685
5686 switch (reg.fifo_mode)
5687 {
5689 *val = LSM6DSO32_BYPASS_MODE;
5690 break;
5691
5693 *val = LSM6DSO32_FIFO_MODE;
5694 break;
5695
5698 break;
5699
5702 break;
5703
5705 *val = LSM6DSO32_STREAM_MODE;
5706 break;
5707
5710 break;
5711
5712 default:
5713 *val = LSM6DSO32_BYPASS_MODE;
5714 break;
5715 }
5716
5717 return ret;
5718}
5719
5731{
5733 int32_t ret;
5734
5735 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL4, (uint8_t *)&reg, 1);
5736
5737 if (ret == 0)
5738 {
5739 reg.odr_t_batch = (uint8_t)val;
5740 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_FIFO_CTRL4, (uint8_t *)&reg, 1);
5741 }
5742
5743 return ret;
5744}
5745
5757{
5759 int32_t ret;
5760
5761 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL4, (uint8_t *)&reg, 1);
5762
5763 switch (reg.odr_t_batch)
5764 {
5767 break;
5768
5771 break;
5772
5775 break;
5776
5779 break;
5780
5781 default:
5783 break;
5784 }
5785
5786 return ret;
5787}
5788
5801{
5803 int32_t ret;
5804
5805 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL4, (uint8_t *)&reg, 1);
5806
5807 if (ret == 0)
5808 {
5809 reg.odr_ts_batch = (uint8_t)val;
5810 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_FIFO_CTRL4, (uint8_t *)&reg, 1);
5811 }
5812
5813 return ret;
5814}
5815
5828{
5830 int32_t ret;
5831
5832 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_CTRL4, (uint8_t *)&reg, 1);
5833
5834 switch (reg.odr_ts_batch)
5835 {
5838 break;
5839
5840 case LSM6DSO32_DEC_1:
5841 *val = LSM6DSO32_DEC_1;
5842 break;
5843
5844 case LSM6DSO32_DEC_8:
5845 *val = LSM6DSO32_DEC_8;
5846 break;
5847
5848 case LSM6DSO32_DEC_32:
5849 *val = LSM6DSO32_DEC_32;
5850 break;
5851
5852 default:
5854 break;
5855 }
5856
5857 return ret;
5858}
5859
5872{
5874 int32_t ret;
5875
5877 (uint8_t *)&reg, 1);
5878
5879 if (ret == 0)
5880 {
5881 reg.trig_counter_bdr = (uint8_t)val;
5883 (uint8_t *)&reg, 1);
5884 }
5885
5886 return ret;
5887}
5888
5901{
5903 int32_t ret;
5904
5906 (uint8_t *)&reg, 1);
5907
5908 switch (reg.trig_counter_bdr)
5909 {
5912 break;
5913
5916 break;
5917
5918 default:
5920 break;
5921 }
5922
5923 return ret;
5924}
5925
5937 uint8_t val)
5938{
5940 int32_t ret;
5941
5943 (uint8_t *)&reg, 1);
5944
5945 if (ret == 0)
5946 {
5947 reg.rst_counter_bdr = val;
5949 (uint8_t *)&reg, 1);
5950 }
5951
5952 return ret;
5953}
5954
5966 uint8_t *val)
5967{
5969 int32_t ret;
5970
5972 (uint8_t *)&reg, 1);
5973 *val = reg.rst_counter_bdr;
5974
5975 return ret;
5976}
5977
5988 uint16_t val)
5989{
5990 lsm6dso32_counter_bdr_reg1_t counter_bdr_reg1;
5991 lsm6dso32_counter_bdr_reg2_t counter_bdr_reg2;
5992 int32_t ret;
5993
5995 (uint8_t *)&counter_bdr_reg1, 1);
5996
5997 if (ret == 0)
5998 {
5999 counter_bdr_reg2.cnt_bdr_th = 0x00FFU & (uint8_t)val;
6000 counter_bdr_reg1.cnt_bdr_th = (uint8_t)(0x0700U & val) >> 8;
6002 (uint8_t *)&counter_bdr_reg1, 1);
6003 }
6004
6005 if (ret == 0)
6006 {
6008 (uint8_t *)&counter_bdr_reg2, 1);
6009 }
6010
6011 return ret;
6012}
6013
6024 uint16_t *val)
6025{
6026 lsm6dso32_counter_bdr_reg1_t counter_bdr_reg1;
6027 lsm6dso32_counter_bdr_reg2_t counter_bdr_reg2;
6028 int32_t ret;
6029
6031 (uint8_t *)&counter_bdr_reg1, 1);
6032
6033 if (ret == 0)
6034 {
6036 (uint8_t *)&counter_bdr_reg2, 1);
6037 *val = ((uint16_t)counter_bdr_reg1.cnt_bdr_th << 8)
6038 + (uint16_t)counter_bdr_reg2.cnt_bdr_th;
6039 }
6040
6041 return ret;
6042}
6043
6053 uint16_t *val)
6054{
6055 lsm6dso32_fifo_status1_t fifo_status1;
6056 lsm6dso32_fifo_status2_t fifo_status2;
6057 int32_t ret;
6058
6060 (uint8_t *)&fifo_status1, 1);
6061
6062 if (ret == 0)
6063 {
6065 (uint8_t *)&fifo_status2, 1);
6066 *val = ((uint16_t)fifo_status2.diff_fifo << 8) +
6067 (uint16_t)fifo_status1.diff_fifo;
6068 }
6069
6070 return ret;
6071}
6072
6083{
6084 int32_t ret;
6085
6086 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_STATUS2, (uint8_t *) val, 1);
6087
6088 return ret;
6089}
6090
6100{
6102 int32_t ret;
6103
6104 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_STATUS2, (uint8_t *)&reg, 1);
6105 *val = reg.fifo_full_ia;
6106
6107 return ret;
6108}
6109
6120{
6122 int32_t ret;
6123
6124 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_STATUS2, (uint8_t *)&reg, 1);
6125 *val = reg.fifo_ovr_ia;
6126
6127 return ret;
6128}
6129
6139{
6141 int32_t ret;
6142
6143 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FIFO_STATUS2, (uint8_t *)&reg, 1);
6144 *val = reg.fifo_wtm_ia;
6145
6146 return ret;
6147}
6148
6159{
6161 int32_t ret;
6162
6164 (uint8_t *)&reg, 1);
6165
6166 switch (reg.tag_sensor)
6167 {
6169 *val = LSM6DSO32_GYRO_NC_TAG;
6170 break;
6171
6173 *val = LSM6DSO32_XL_NC_TAG;
6174 break;
6175
6178 break;
6179
6182 break;
6183
6186 break;
6187
6190 break;
6191
6194 break;
6195
6197 *val = LSM6DSO32_XL_2XC_TAG;
6198 break;
6199
6201 *val = LSM6DSO32_XL_3XC_TAG;
6202 break;
6203
6206 break;
6207
6210 break;
6211
6214 break;
6215
6218 break;
6219
6222 break;
6223
6226 break;
6227
6230 break;
6231
6234 break;
6235
6238 break;
6239
6242 break;
6243
6244 default:
6245 *val = LSM6DSO32_GYRO_NC_TAG;
6246 break;
6247 }
6248
6249 return ret;
6250}
6251
6263{
6265 int32_t ret;
6266
6268
6269 if (ret == 0)
6270 {
6272 (uint8_t *)&reg, 1);
6273 }
6274
6275 if (ret == 0)
6276 {
6277 reg.pedo_fifo_en = val;
6279 (uint8_t *)&reg, 1);
6280 }
6281
6282 if (ret == 0)
6283 {
6285 }
6286
6287 return ret;
6288}
6289
6300{
6302 int32_t ret;
6303
6305
6306 if (ret == 0)
6307 {
6309 (uint8_t *)&reg, 1);
6310 }
6311
6312 if (ret == 0)
6313 {
6314 *val = reg.pedo_fifo_en;
6316 }
6317
6318 return ret;
6319}
6320
6331{
6333 int32_t ret;
6334
6336
6337 if (ret == 0)
6338 {
6339 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_SLV0_CONFIG, (uint8_t *)&reg, 1);
6340 }
6341
6342 if (ret == 0)
6343 {
6344 reg.batch_ext_sens_0_en = val;
6345 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_SLV0_CONFIG, (uint8_t *)&reg, 1);
6346 }
6347
6348 if (ret == 0)
6349 {
6351 }
6352
6353 return ret;
6354}
6355
6366 uint8_t *val)
6367{
6369 int32_t ret;
6370
6372
6373 if (ret == 0)
6374 {
6375 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_SLV0_CONFIG, (uint8_t *)&reg, 1);
6376 }
6377
6378 if (ret == 0)
6379 {
6380 *val = reg.batch_ext_sens_0_en;
6382 }
6383
6384 return ret;
6385}
6386
6397{
6399 int32_t ret;
6400
6402
6403 if (ret == 0)
6404 {
6405 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_SLV1_CONFIG, (uint8_t *)&reg, 1);
6406 }
6407
6408 if (ret == 0)
6409 {
6410 reg.batch_ext_sens_1_en = val;
6411 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_SLV1_CONFIG, (uint8_t *)&reg, 1);
6412 }
6413
6414 if (ret == 0)
6415 {
6417 }
6418
6419 return ret;
6420}
6421
6432 uint8_t *val)
6433{
6435 int32_t ret;
6436
6438
6439 if (ret == 0)
6440 {
6441 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_SLV1_CONFIG, (uint8_t *)&reg, 1);
6442 *val = reg.batch_ext_sens_1_en;
6443 }
6444
6445 if (ret == 0)
6446 {
6448 }
6449
6450 return ret;
6451}
6452
6463{
6465 int32_t ret;
6466
6468
6469 if (ret == 0)
6470 {
6471 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_SLV2_CONFIG, (uint8_t *)&reg, 1);
6472 }
6473
6474 if (ret == 0)
6475 {
6476 reg.batch_ext_sens_2_en = val;
6477 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_SLV2_CONFIG, (uint8_t *)&reg, 1);
6478 }
6479
6480 if (ret == 0)
6481 {
6483 }
6484
6485 return ret;
6486}
6487
6498 uint8_t *val)
6499{
6501 int32_t ret;
6502
6504
6505 if (ret == 0)
6506 {
6507 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_SLV2_CONFIG, (uint8_t *)&reg, 1);
6508 }
6509
6510 if (ret == 0)
6511 {
6512 *val = reg.batch_ext_sens_2_en;
6514 }
6515
6516 return ret;
6517}
6518
6529{
6531 int32_t ret;
6532
6534
6535 if (ret == 0)
6536 {
6537 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_SLV3_CONFIG, (uint8_t *)&reg, 1);
6538 }
6539
6540 if (ret == 0)
6541 {
6542 reg.batch_ext_sens_3_en = val;
6543 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_SLV3_CONFIG, (uint8_t *)&reg, 1);
6544 }
6545
6546 if (ret == 0)
6547 {
6549 }
6550
6551 return ret;
6552}
6553
6564 uint8_t *val)
6565{
6567 int32_t ret;
6568
6570
6571 if (ret == 0)
6572 {
6573 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_SLV3_CONFIG, (uint8_t *)&reg, 1);
6574 }
6575
6576 if (ret == 0)
6577 {
6578 *val = reg.batch_ext_sens_3_en;
6580 }
6581
6582 return ret;
6583}
6584
6609{
6611 int32_t ret;
6612
6613 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL6_C, (uint8_t *)&reg, 1);
6614
6615 if (ret == 0)
6616 {
6617 reg.den_mode = (uint8_t)val;
6618 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL6_C, (uint8_t *)&reg, 1);
6619 }
6620
6621 return ret;
6622}
6623
6634{
6636 int32_t ret;
6637
6638 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL6_C, (uint8_t *)&reg, 1);
6639
6640 switch (reg.den_mode)
6641 {
6643 *val = LSM6DSO32_DEN_DISABLE;
6644 break;
6645
6647 *val = LSM6DSO32_LEVEL_FIFO;
6648 break;
6649
6652 break;
6653
6656 break;
6657
6660 break;
6661
6662 default:
6663 *val = LSM6DSO32_DEN_DISABLE;
6664 break;
6665 }
6666
6667 return ret;
6668}
6669
6680{
6682 int32_t ret;
6683
6684 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL9_XL, (uint8_t *)&reg, 1);
6685
6686 if (ret == 0)
6687 {
6688 reg.den_lh = (uint8_t)val;
6689 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL9_XL, (uint8_t *)&reg, 1);
6690 }
6691
6692 return ret;
6693}
6694
6704 lsm6dso32_den_lh_t *val)
6705{
6707 int32_t ret;
6708
6709 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL9_XL, (uint8_t *)&reg, 1);
6710
6711 switch (reg.den_lh)
6712 {
6714 *val = LSM6DSO32_DEN_ACT_LOW;
6715 break;
6716
6719 break;
6720
6721 default:
6722 *val = LSM6DSO32_DEN_ACT_LOW;
6723 break;
6724 }
6725
6726 return ret;
6727}
6728
6739{
6741 int32_t ret;
6742
6743 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL9_XL, (uint8_t *)&reg, 1);
6744
6745 if (ret == 0)
6746 {
6747 reg.den_xl_g = (uint8_t)val;
6748 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL9_XL, (uint8_t *)&reg, 1);
6749 }
6750
6751 return ret;
6752}
6753
6764{
6766 int32_t ret;
6767
6768 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL9_XL, (uint8_t *)&reg, 1);
6769
6770 switch (reg.den_xl_g)
6771 {
6774 break;
6775
6778 break;
6779
6782 break;
6783
6784 default:
6786 break;
6787 }
6788
6789 return ret;
6790}
6791
6801{
6803 int32_t ret;
6804
6805 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL9_XL, (uint8_t *)&reg, 1);
6806
6807 if (ret == 0)
6808 {
6809 reg.den_z = val;
6810 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL9_XL, (uint8_t *)&reg, 1);
6811 }
6812
6813 return ret;
6814}
6815
6825{
6827 int32_t ret;
6828
6829 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL9_XL, (uint8_t *)&reg, 1);
6830 *val = reg.den_z;
6831
6832 return ret;
6833}
6834
6844{
6846 int32_t ret;
6847
6848 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL9_XL, (uint8_t *)&reg, 1);
6849
6850 if (ret == 0)
6851 {
6852 reg.den_y = val;
6853 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL9_XL, (uint8_t *)&reg, 1);
6854 }
6855
6856 return ret;
6857}
6858
6868{
6870 int32_t ret;
6871
6872 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL9_XL, (uint8_t *)&reg, 1);
6873 *val = reg.den_y;
6874
6875 return ret;
6876}
6877
6887{
6889 int32_t ret;
6890
6891 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL9_XL, (uint8_t *)&reg, 1);
6892
6893 if (ret == 0)
6894 {
6895 reg.den_x = val;
6896 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL9_XL, (uint8_t *)&reg, 1);
6897 }
6898
6899 return ret;
6900}
6901
6911{
6913 int32_t ret;
6914
6915 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL9_XL, (uint8_t *)&reg, 1);
6916 *val = reg.den_x;
6917
6918 return ret;
6919}
6920
6944{
6945 lsm6dso32_emb_func_en_a_t emb_func_en_a;
6946 lsm6dso32_emb_func_en_b_t emb_func_en_b;
6947 lsm6dso32_pedo_cmd_reg_t pedo_cmd_reg;
6948 int32_t ret;
6949
6951 (uint8_t *)&pedo_cmd_reg);
6952
6953 if (ret == 0)
6954 {
6956 }
6957
6958 if (ret == 0)
6959 {
6961 (uint8_t *)&emb_func_en_a, 1);
6962 }
6963
6964 if (ret == 0)
6965 {
6967 (uint8_t *)&emb_func_en_b, 1);
6968 emb_func_en_a.pedo_en = (uint8_t)val & 0x01U;
6969 emb_func_en_b.pedo_adv_en = ((uint8_t)val & 0x02U) >> 1;
6970 pedo_cmd_reg.fp_rejection_en = ((uint8_t)val & 0x10U) >> 4;
6971 pedo_cmd_reg.ad_det_en = ((uint8_t)val & 0x20U) >> 5;
6972 }
6973
6974 if (ret == 0)
6975 {
6977 (uint8_t *)&emb_func_en_a, 1);
6978 }
6979
6980 if (ret == 0)
6981 {
6983 (uint8_t *)&emb_func_en_b, 1);
6984 }
6985
6986 if (ret == 0)
6987 {
6989 }
6990
6991 if (ret == 0)
6992 {
6994 (uint8_t *)&pedo_cmd_reg);
6995 }
6996
6997 return ret;
6998}
6999
7010{
7011 lsm6dso32_emb_func_en_a_t emb_func_en_a;
7012 lsm6dso32_emb_func_en_b_t emb_func_en_b;
7013 lsm6dso32_pedo_cmd_reg_t pedo_cmd_reg;
7014 int32_t ret;
7015
7017 (uint8_t *)&pedo_cmd_reg);
7018
7019 if (ret == 0)
7020 {
7022 }
7023
7024 if (ret == 0)
7025 {
7027 (uint8_t *)&emb_func_en_a, 1);
7028 }
7029
7030 if (ret == 0)
7031 {
7033 (uint8_t *)&emb_func_en_b, 1);
7034 }
7035
7036 if (ret == 0)
7037 {
7039 }
7040
7041 switch ((pedo_cmd_reg.ad_det_en << 5) | (pedo_cmd_reg.fp_rejection_en
7042 << 4) |
7043 (emb_func_en_b.pedo_adv_en << 1) | emb_func_en_a.pedo_en)
7044 {
7047 break;
7048
7051 break;
7052
7055 break;
7056
7059 break;
7060
7063 break;
7064
7065 default:
7067 break;
7068 }
7069
7070 return ret;
7071}
7072
7082 uint8_t *val)
7083{
7085 int32_t ret;
7086
7088
7089 if (ret == 0)
7090 {
7092 (uint8_t *)&reg, 1);
7093 }
7094
7095 if (ret == 0)
7096 {
7097 *val = reg.is_step_det;
7099 }
7100
7101 return ret;
7102}
7103
7113 uint8_t *buff)
7114{
7115 int32_t ret;
7116
7118 buff);
7119
7120 return ret;
7121}
7122
7132 uint8_t *buff)
7133{
7134 int32_t ret;
7135
7137 buff);
7138
7139 return ret;
7140}
7141
7151 uint16_t val)
7152{
7153 uint8_t buff[2];
7154 int32_t ret;
7155
7156 buff[1] = (uint8_t)(val / 256U);
7157 buff[0] = (uint8_t)(val - (buff[1] * 256U));
7159 &buff[0]);
7160
7161 if (ret == 0)
7162 {
7164 &buff[1]);
7165 }
7166
7167 return ret;
7168}
7169
7179 uint16_t *val)
7180{
7181 uint8_t buff[2];
7182 int32_t ret;
7183
7185 &buff[0]);
7186
7187 if (ret == 0)
7188 {
7190 &buff[1]);
7191 *val = buff[1];
7192 *val = (*val * 256U) + buff[0];
7193 }
7194
7195 return ret;
7196}
7197
7209{
7211 int32_t ret;
7212
7214 (uint8_t *)&reg);
7215
7216 if (ret == 0)
7217 {
7218 reg.carry_count_en = (uint8_t)val;
7220 (uint8_t *)&reg);
7221 }
7222
7223 return ret;
7224}
7225
7237{
7239 int32_t ret;
7240
7242 (uint8_t *)&reg);
7243
7244 switch (reg.carry_count_en)
7245 {
7247 *val = LSM6DSO32_EVERY_STEP;
7248 break;
7249
7252 break;
7253
7254 default:
7255 *val = LSM6DSO32_EVERY_STEP;
7256 break;
7257 }
7258
7259 return ret;
7260}
7261
7284int32_t lsm6dso32_motion_sens_set(stmdev_ctx_t *ctx, uint8_t val)
7285{
7287 int32_t ret;
7288
7290
7291 if (ret == 0)
7292 {
7294 (uint8_t *)&reg, 1);
7295 }
7296
7297 if (ret == 0)
7298 {
7299 reg.sign_motion_en = val;
7301 (uint8_t *)&reg, 1);
7302 }
7303
7304 if (ret == 0)
7305 {
7307 }
7308
7309 return ret;
7310}
7311
7320int32_t lsm6dso32_motion_sens_get(stmdev_ctx_t *ctx, uint8_t *val)
7321{
7323 int32_t ret;
7324
7326
7327 if (ret == 0)
7328 {
7330 (uint8_t *)&reg, 1);
7331 }
7332
7333 if (ret == 0)
7334 {
7335 *val = reg.sign_motion_en;
7337 }
7338
7339 return ret;
7340}
7341
7351 uint8_t *val)
7352{
7354 int32_t ret;
7355
7357
7358 if (ret == 0)
7359 {
7361 (uint8_t *)&reg, 1);
7362 }
7363
7364 if (ret == 0)
7365 {
7366 *val = reg.is_sigmot;
7368 }
7369
7370 return ret;
7371}
7372
7395int32_t lsm6dso32_tilt_sens_set(stmdev_ctx_t *ctx, uint8_t val)
7396{
7398 int32_t ret;
7399
7401
7402 if (ret == 0)
7403 {
7405 (uint8_t *)&reg, 1);
7406 }
7407
7408 if (ret == 0)
7409 {
7410 reg.tilt_en = val;
7412 (uint8_t *)&reg, 1);
7413 }
7414
7415 if (ret == 0)
7416 {
7418 }
7419
7420 return ret;
7421}
7422
7431int32_t lsm6dso32_tilt_sens_get(stmdev_ctx_t *ctx, uint8_t *val)
7432{
7434 int32_t ret;
7435
7437
7438 if (ret == 0)
7439 {
7441 (uint8_t *)&reg, 1);
7442 }
7443
7444 if (ret == 0)
7445 {
7446 *val = reg.tilt_en;
7448 }
7449
7450 return ret;
7451}
7452
7462 uint8_t *val)
7463{
7465 int32_t ret;
7466
7468
7469 if (ret == 0)
7470 {
7472 (uint8_t *)&reg, 1);
7473 }
7474
7475 if (ret == 0)
7476 {
7477 *val = reg.is_tilt;
7479 }
7480
7481 return ret;
7482}
7483
7506{
7507 uint8_t buff[2];
7508 int32_t ret;
7509
7510 buff[1] = (uint8_t)(val / 256U);
7511 buff[0] = (uint8_t)(val - (buff[1] * 256U));
7513 &buff[0]);
7514
7515 if (ret == 0)
7516 {
7518 &buff[1]);
7519 }
7520
7521 return ret;
7522}
7523
7533 uint16_t *val)
7534{
7535 uint8_t buff[2];
7536 int32_t ret;
7537
7539 &buff[0]);
7540
7541 if (ret == 0)
7542 {
7544 &buff[1]);
7545 *val = buff[1];
7546 *val = (*val * 256U) + buff[0];
7547 }
7548
7549 return ret;
7550}
7551
7560int32_t lsm6dso32_mag_offset_set(stmdev_ctx_t *ctx, int16_t *val)
7561{
7562 uint8_t buff[6];
7563 int32_t ret;
7564
7565 buff[1] = (uint8_t)((uint16_t)val[0] / 256U);
7566 buff[0] = (uint8_t)((uint16_t)val[0] - (buff[1] * 256U));
7567 buff[3] = (uint8_t)((uint16_t)val[1] / 256U);
7568 buff[2] = (uint8_t)((uint16_t)val[1] - (buff[3] * 256U));
7569 buff[5] = (uint8_t)((uint16_t)val[2] / 256U);
7570 buff[4] = (uint8_t)((uint16_t)val[2] - (buff[5] * 256U));
7572 &buff[0]);
7573
7574 if (ret == 0)
7575 {
7577 &buff[1]);
7578 }
7579
7580 if (ret == 0)
7581 {
7583 &buff[2]);
7584 }
7585
7586 if (ret == 0)
7587 {
7589 &buff[3]);
7590 }
7591
7592 if (ret == 0)
7593 {
7595 &buff[4]);
7596 }
7597
7598 if (ret == 0)
7599 {
7601 &buff[5]);
7602 }
7603
7604 return ret;
7605}
7606
7615int32_t lsm6dso32_mag_offset_get(stmdev_ctx_t *ctx, int16_t *val)
7616{
7617 uint8_t buff[6];
7618 int32_t ret;
7619
7621 &buff[0]);
7622
7623 if (ret == 0)
7624 {
7626 &buff[1]);
7627 }
7628
7629 if (ret == 0)
7630 {
7632 &buff[2]);
7633 }
7634
7635 if (ret == 0)
7636 {
7638 &buff[3]);
7639 }
7640
7641 if (ret == 0)
7642 {
7644 &buff[4]);
7645 }
7646
7647 if (ret == 0)
7648 {
7650 &buff[5]);
7651 val[0] = (int16_t)buff[1];
7652 val[0] = (val[0] * 256) + (int16_t)buff[0];
7653 val[1] = (int16_t)buff[3];
7654 val[1] = (val[1] * 256) + (int16_t)buff[2];
7655 val[2] = (int16_t)buff[5];
7656 val[2] = (val[2] * 256) + (int16_t)buff[4];
7657 }
7658
7659 return ret;
7660}
7661
7677{
7678 uint8_t buff[12];
7679 int32_t ret;
7680
7681 uint8_t index;
7682 buff[1] = (uint8_t)((uint16_t)val[0] / 256U);
7683 buff[0] = (uint8_t)((uint16_t)val[0] - (buff[1] * 256U));
7684 buff[3] = (uint8_t)((uint16_t)val[1] / 256U);
7685 buff[2] = (uint8_t)((uint16_t)val[1] - (buff[3] * 256U));
7686 buff[5] = (uint8_t)((uint16_t)val[2] / 256U);
7687 buff[4] = (uint8_t)((uint16_t)val[2] - (buff[5] * 256U));
7688 buff[7] = (uint8_t)((uint16_t)val[3] / 256U);
7689 buff[6] = (uint8_t)((uint16_t)val[3] - (buff[7] * 256U));
7690 buff[9] = (uint8_t)((uint16_t)val[4] / 256U);
7691 buff[8] = (uint8_t)((uint16_t)val[4] - (buff[9] * 256U));
7692 buff[11] = (uint8_t)((uint16_t)val[5] / 256U);
7693 buff[10] = (uint8_t)((uint16_t)val[5] - (buff[11] * 256U));
7694 index = 0x00U;
7696 &buff[index]);
7697
7698 if (ret == 0)
7699 {
7700 index++;
7702 &buff[index]);
7703 }
7704
7705 if (ret == 0)
7706 {
7707 index++;
7709 &buff[index]);
7710 }
7711
7712 if (ret == 0)
7713 {
7714 index++;
7716 &buff[index]);
7717 }
7718
7719 if (ret == 0)
7720 {
7721 index++;
7723 &buff[index]);
7724 }
7725
7726 if (ret == 0)
7727 {
7728 index++;
7730 &buff[index]);
7731 }
7732
7733 if (ret == 0)
7734 {
7735 index++;
7737 &buff[index]);
7738 }
7739
7740 if (ret == 0)
7741 {
7742 index++;
7744 &buff[index]);
7745 }
7746
7747 if (ret == 0)
7748 {
7749 index++;
7751 &buff[index]);
7752 }
7753
7754 if (ret == 0)
7755 {
7756 index++;
7758 &buff[index]);
7759 }
7760
7761 if (ret == 0)
7762 {
7763 index++;
7765 &buff[index]);
7766 }
7767
7768 if (ret == 0)
7769 {
7770 index++;
7772 &buff[index]);
7773 }
7774
7775 return ret;
7776}
7777
7794{
7795 uint8_t buff[12];
7796 int32_t ret;
7797
7798 uint8_t index;
7799 index = 0x00U;
7801 &buff[index]);
7802
7803 if (ret == 0)
7804 {
7805 index++;
7807 &buff[index]);
7808 }
7809
7810 if (ret == 0)
7811 {
7812 index++;
7814 &buff[index]);
7815 }
7816
7817 if (ret == 0)
7818 {
7819 index++;
7821 &buff[index]);
7822 }
7823
7824 if (ret == 0)
7825 {
7826 index++;
7828 &buff[index]);
7829 }
7830
7831 if (ret == 0)
7832 {
7833 index++;
7835 &buff[index]);
7836 }
7837
7838 if (ret == 0)
7839 {
7840 index++;
7842 &buff[index]);
7843 }
7844
7845 if (ret == 0)
7846 {
7847 index++;
7849 &buff[index]);
7850 }
7851
7852 if (ret == 0)
7853 {
7854 index++;
7856 &buff[index]);
7857 }
7858
7859 if (ret == 0)
7860 {
7861 index++;
7863 &buff[index]);
7864 }
7865
7866 if (ret == 0)
7867 {
7868 index++;
7870 &buff[index]);
7871 }
7872
7873 if (ret == 0)
7874 {
7875 index++;
7877 &buff[index]);
7878 }
7879
7880 val[0] = (int16_t)buff[1];
7881 val[0] = (val[0] * 256) + (int16_t)buff[0];
7882 val[1] = (int16_t)buff[3];
7883 val[1] = (val[1] * 256) + (int16_t)buff[2];
7884 val[2] = (int16_t)buff[5];
7885 val[2] = (val[2] * 256) + (int16_t)buff[4];
7886 val[3] = (int16_t)buff[7];
7887 val[3] = (val[3] * 256) + (int16_t)buff[6];
7888 val[4] = (int16_t)buff[9];
7889 val[4] = (val[4] * 256) + (int16_t)buff[8];
7890 val[5] = (int16_t)buff[11];
7891 val[5] = (val[5] * 256) + (int16_t)buff[10];
7892
7893 return ret;
7894}
7895
7909{
7911 int32_t ret;
7912
7914 (uint8_t *)&reg);
7915
7916 if (ret == 0)
7917 {
7918 reg.mag_z_axis = (uint8_t) val;
7920 (uint8_t *)&reg);
7921 }
7922
7923 return ret;
7924}
7925
7939{
7941 int32_t ret;
7942
7944 (uint8_t *)&reg);
7945
7946 switch (reg.mag_z_axis)
7947 {
7948 case LSM6DSO32_Z_EQ_Y:
7949 *val = LSM6DSO32_Z_EQ_Y;
7950 break;
7951
7953 *val = LSM6DSO32_Z_EQ_MIN_Y;
7954 break;
7955
7956 case LSM6DSO32_Z_EQ_X:
7957 *val = LSM6DSO32_Z_EQ_X;
7958 break;
7959
7961 *val = LSM6DSO32_Z_EQ_MIN_X;
7962 break;
7963
7965 *val = LSM6DSO32_Z_EQ_MIN_Z;
7966 break;
7967
7968 case LSM6DSO32_Z_EQ_Z:
7969 *val = LSM6DSO32_Z_EQ_Z;
7970 break;
7971
7972 default:
7973 *val = LSM6DSO32_Z_EQ_Y;
7974 break;
7975 }
7976
7977 return ret;
7978}
7979
7993{
7995 int32_t ret;
7996
7998 (uint8_t *)&reg);
7999
8000 if (ret == 0)
8001 {
8002 reg.mag_y_axis = (uint8_t)val;
8004 (uint8_t *) &reg);
8005 }
8006
8007 return ret;
8008}
8009
8023{
8025 int32_t ret;
8026
8028 (uint8_t *)&reg);
8029
8030 switch (reg.mag_y_axis)
8031 {
8032 case LSM6DSO32_Y_EQ_Y:
8033 *val = LSM6DSO32_Y_EQ_Y;
8034 break;
8035
8037 *val = LSM6DSO32_Y_EQ_MIN_Y;
8038 break;
8039
8040 case LSM6DSO32_Y_EQ_X:
8041 *val = LSM6DSO32_Y_EQ_X;
8042 break;
8043
8045 *val = LSM6DSO32_Y_EQ_MIN_X;
8046 break;
8047
8049 *val = LSM6DSO32_Y_EQ_MIN_Z;
8050 break;
8051
8052 case LSM6DSO32_Y_EQ_Z:
8053 *val = LSM6DSO32_Y_EQ_Z;
8054 break;
8055
8056 default:
8057 *val = LSM6DSO32_Y_EQ_Y;
8058 break;
8059 }
8060
8061 return ret;
8062}
8063
8077{
8079 int32_t ret;
8080
8082 (uint8_t *)&reg);
8083
8084 if (ret == 0)
8085 {
8086 reg.mag_x_axis = (uint8_t)val;
8088 (uint8_t *)&reg);
8089 }
8090
8091 return ret;
8092}
8093
8107{
8109 int32_t ret;
8110
8112 (uint8_t *)&reg);
8113
8114 switch (reg.mag_x_axis)
8115 {
8116 case LSM6DSO32_X_EQ_Y:
8117 *val = LSM6DSO32_X_EQ_Y;
8118 break;
8119
8121 *val = LSM6DSO32_X_EQ_MIN_Y;
8122 break;
8123
8124 case LSM6DSO32_X_EQ_X:
8125 *val = LSM6DSO32_X_EQ_X;
8126 break;
8127
8129 *val = LSM6DSO32_X_EQ_MIN_X;
8130 break;
8131
8133 *val = LSM6DSO32_X_EQ_MIN_Z;
8134 break;
8135
8136 case LSM6DSO32_X_EQ_Z:
8137 *val = LSM6DSO32_X_EQ_Z;
8138 break;
8139
8140 default:
8141 *val = LSM6DSO32_X_EQ_Y;
8142 break;
8143 }
8144
8145 return ret;
8146}
8147
8172 uint8_t *val)
8173{
8175 int32_t ret;
8176
8178
8179 if (ret == 0)
8180 {
8182 (uint8_t *)&reg, 1);
8183 }
8184
8185 if (ret == 0)
8186 {
8187 *val = reg.is_fsm_lc;
8189 }
8190
8191 return ret;
8192}
8193
8202int32_t lsm6dso32_emb_fsm_en_set(stmdev_ctx_t *ctx, uint8_t val)
8203{
8204 int32_t ret;
8205
8208
8209 if (ret == 0)
8210 {
8212 (uint8_t *)&reg, 1);
8213 }
8214
8215 if (ret == 0)
8216 {
8217 reg.fsm_en = val;
8219 (uint8_t *)&reg, 1);
8220 }
8221
8222 if (ret == 0)
8223 {
8225 }
8226
8227 return ret;
8228}
8229
8238int32_t lsm6dso32_emb_fsm_en_get(stmdev_ctx_t *ctx, uint8_t *val)
8239{
8240 int32_t ret;
8241
8244
8245 if (ret == 0)
8246 {
8248 (uint8_t *)&reg, 1);
8249 }
8250
8251 if (ret == 0)
8252 {
8253 *val = reg.fsm_en;
8255 (uint8_t *)&reg, 1);
8256 }
8257
8258 if (ret == 0)
8259 {
8261 }
8262
8263 return ret;
8264}
8265
8276{
8277 int32_t ret;
8278
8281
8282 if (ret == 0)
8283 {
8285 (uint8_t *)&val->fsm_enable_a, 1);
8286 }
8287
8288 if (ret == 0)
8289 {
8291 (uint8_t *)&val->fsm_enable_b, 1);
8292 }
8293
8294 if (ret == 0)
8295 {
8297 (uint8_t *)&reg, 1);
8298 }
8299
8300 if (ret == 0)
8301 {
8302 if ((val->fsm_enable_a.fsm1_en |
8303 val->fsm_enable_a.fsm2_en |
8304 val->fsm_enable_a.fsm3_en |
8305 val->fsm_enable_a.fsm4_en |
8306 val->fsm_enable_a.fsm5_en |
8307 val->fsm_enable_a.fsm6_en |
8308 val->fsm_enable_a.fsm7_en |
8309 val->fsm_enable_a.fsm8_en |
8310 val->fsm_enable_b.fsm9_en |
8311 val->fsm_enable_b.fsm10_en |
8312 val->fsm_enable_b.fsm11_en |
8313 val->fsm_enable_b.fsm12_en |
8314 val->fsm_enable_b.fsm13_en |
8315 val->fsm_enable_b.fsm14_en |
8316 val->fsm_enable_b.fsm15_en |
8319 {
8320 reg.fsm_en = PROPERTY_ENABLE;
8321 }
8322
8323 else
8324 {
8326 }
8327
8329 (uint8_t *)&reg, 1);
8330 }
8331
8332 if (ret == 0)
8333 {
8335 }
8336
8337 return ret;
8338}
8339
8350{
8351 int32_t ret;
8352
8354
8355 if (ret == 0)
8356 {
8357 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FSM_ENABLE_A, (uint8_t *) val,
8358 2);
8359 }
8360
8361 if (ret == 0)
8362 {
8364 }
8365
8366 return ret;
8367}
8368
8378int32_t lsm6dso32_long_cnt_set(stmdev_ctx_t *ctx, uint16_t val)
8379{
8380 uint8_t buff[2];
8381 int32_t ret;
8382
8383 buff[1] = (uint8_t)(val / 256U);
8384 buff[0] = (uint8_t)(val - (buff[1] * 256U));
8386
8387 if (ret == 0)
8388 {
8390 }
8391
8392 if (ret == 0)
8393 {
8395 }
8396
8397 return ret;
8398}
8399
8409int32_t lsm6dso32_long_cnt_get(stmdev_ctx_t *ctx, uint16_t *val)
8410{
8411 uint8_t buff[2];
8412 int32_t ret;
8413
8415
8416 if (ret == 0)
8417 {
8419 }
8420
8421 if (ret == 0)
8422 {
8424 *val = buff[1];
8425 *val = (*val * 256U) + buff[0];
8426 }
8427
8428 return ret;
8429}
8430
8442{
8444 int32_t ret;
8445
8447
8448 if (ret == 0)
8449 {
8451 (uint8_t *)&reg, 1);
8452 }
8453
8454 if (ret == 0)
8455 {
8456 reg. fsm_lc_clr = (uint8_t)val;
8458 (uint8_t *)&reg, 1);
8459 }
8460
8461 if (ret == 0)
8462 {
8464 }
8465
8466 return ret;
8467}
8468
8480{
8482 int32_t ret;
8483
8485
8486 if (ret == 0)
8487 {
8489 (uint8_t *)&reg, 1);
8490 }
8491
8492 if (ret == 0)
8493 {
8494 switch (reg.fsm_lc_clr)
8495 {
8497 *val = LSM6DSO32_LC_NORMAL;
8498 break;
8499
8500 case LSM6DSO32_LC_CLEAR:
8501 *val = LSM6DSO32_LC_CLEAR;
8502 break;
8503
8506 break;
8507
8508 default:
8509 *val = LSM6DSO32_LC_NORMAL;
8510 break;
8511 }
8512 }
8513
8514 if (ret == 0)
8515 {
8517 }
8518
8519 return ret;
8520}
8521
8532{
8533 int32_t ret;
8534
8536
8537 if (ret == 0)
8538 {
8539 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_FSM_OUTS1, (uint8_t *) &val,
8540 16);
8541 }
8542
8543 if (ret == 0)
8544 {
8546 }
8547
8548 return ret;
8549}
8550
8561{
8563 int32_t ret;
8564
8566
8567 if (ret == 0)
8568 {
8570 (uint8_t *)&reg, 1);
8571 }
8572
8573 if (ret == 0)
8574 {
8575 reg.not_used_01 = 3; /* set default values */
8576 reg.not_used_02 = 1; /* set default values */
8577 reg.fsm_odr = (uint8_t)val;
8579 (uint8_t *)&reg, 1);
8580 }
8581
8582 if (ret == 0)
8583 {
8585 }
8586
8587 return ret;
8588}
8589
8600{
8602 int32_t ret;
8603
8605
8606 if (ret == 0)
8607 {
8609 (uint8_t *)&reg, 1);
8610 }
8611
8612 if (ret == 0)
8613 {
8614 switch (reg.fsm_odr)
8615 {
8618 break;
8619
8622 break;
8623
8626 break;
8627
8630 break;
8631
8632 default:
8634 break;
8635 }
8636
8638 }
8639
8640 return ret;
8641}
8642
8651int32_t lsm6dso32_fsm_init_set(stmdev_ctx_t *ctx, uint8_t val)
8652{
8654 int32_t ret;
8655
8657
8658 if (ret == 0)
8659 {
8661 (uint8_t *)&reg, 1);
8662 }
8663
8664 if (ret == 0)
8665 {
8666 reg.fsm_init = val;
8668 (uint8_t *)&reg, 1);
8669 }
8670
8671 if (ret == 0)
8672 {
8674 }
8675
8676 return ret;
8677}
8678
8687int32_t lsm6dso32_fsm_init_get(stmdev_ctx_t *ctx, uint8_t *val)
8688{
8690 int32_t ret;
8691
8693
8694 if (ret == 0)
8695 {
8697 (uint8_t *)&reg, 1);
8698 }
8699
8700 if (ret == 0)
8701 {
8702 *val = reg.fsm_init;
8704 }
8705
8706 return ret;
8707}
8708
8721 uint16_t val)
8722{
8723 uint8_t buff[2];
8724 int32_t ret;
8725
8726 buff[1] = (uint8_t)(val / 256U);
8727 buff[0] = (uint8_t)(val - (buff[1] * 256U));
8729 &buff[0]);
8730
8731 if (ret == 0)
8732 {
8734 &buff[1]);
8735 }
8736
8737 return ret;
8738}
8739
8752 uint16_t *val)
8753{
8754 uint8_t buff[2];
8755 int32_t ret;
8756
8758 &buff[0]);
8759
8760 if (ret == 0)
8761 {
8763 &buff[1]);
8764 *val = buff[1];
8765 *val = (*val * 256U) + buff[0];
8766 }
8767
8768 return ret;
8769}
8770
8780 uint8_t *buff)
8781{
8782 int32_t ret;
8783
8785
8786 return ret;
8787}
8788
8798 uint8_t *buff)
8799{
8800 int32_t ret;
8801
8803
8804 return ret;
8805}
8806
8817 uint16_t val)
8818{
8819 uint8_t buff[2];
8820 int32_t ret;
8821
8822 buff[1] = (uint8_t)(val / 256U);
8823 buff[0] = (uint8_t)(val - (buff[1] * 256U));
8825 &buff[0]);
8826
8827 if (ret == 0)
8828 {
8829 ;
8831 &buff[1]);
8832 }
8833
8834 return ret;
8835}
8836
8847 uint16_t *val)
8848{
8849 uint8_t buff[2];
8850 int32_t ret;
8851
8853 &buff[0]);
8854
8855 if (ret == 0)
8856 {
8858 &buff[1]);
8859 *val = buff[1];
8860 *val = (*val * 256U) + buff[0];
8861 }
8862
8863 return ret;
8864}
8865
8890{
8891 int32_t ret;
8892
8894
8895 if (ret == 0)
8896 {
8898 (uint8_t *) val, 18U);
8899 }
8900
8901 if (ret == 0)
8902 {
8904 }
8905
8906 return ret;
8907}
8908
8919{
8921 int32_t ret;
8922
8924
8925 if (ret == 0)
8926 {
8928 (uint8_t *)&reg, 1);
8929 }
8930
8931 if (ret == 0)
8932 {
8933 reg.aux_sens_on = (uint8_t)val;
8935 (uint8_t *)&reg, 1);
8936 }
8937
8938 if (ret == 0)
8939 {
8941 }
8942
8943 return ret;
8944}
8945
8956{
8958 int32_t ret;
8959
8961
8962 if (ret == 0)
8963 {
8965 (uint8_t *)&reg, 1);
8966 }
8967
8968 if (ret == 0)
8969 {
8970 switch (reg.aux_sens_on)
8971 {
8972 case LSM6DSO32_SLV_0:
8973 *val = LSM6DSO32_SLV_0;
8974 break;
8975
8976 case LSM6DSO32_SLV_0_1:
8977 *val = LSM6DSO32_SLV_0_1;
8978 break;
8979
8981 *val = LSM6DSO32_SLV_0_1_2;
8982 break;
8983
8985 *val = LSM6DSO32_SLV_0_1_2_3;
8986 break;
8987
8988 default:
8989 *val = LSM6DSO32_SLV_0;
8990 break;
8991 }
8992
8994 }
8995
8996 return ret;
8997}
8998
9007int32_t lsm6dso32_sh_master_set(stmdev_ctx_t *ctx, uint8_t val)
9008{
9010 int32_t ret;
9011
9013
9014 if (ret == 0)
9015 {
9017 (uint8_t *)&reg, 1);
9018 }
9019
9020 if (ret == 0)
9021 {
9022 reg.master_on = val;
9024 (uint8_t *)&reg, 1);
9025 }
9026
9027 if (ret == 0)
9028 {
9030 }
9031
9032 return ret;
9033}
9034
9043int32_t lsm6dso32_sh_master_get(stmdev_ctx_t *ctx, uint8_t *val)
9044{
9046 int32_t ret;
9047
9049
9050 if (ret == 0)
9051 {
9053 (uint8_t *)&reg, 1);
9054 }
9055
9056 if (ret == 0)
9057 {
9058 *val = reg.master_on;
9060 }
9061
9062 return ret;
9063}
9064
9075{
9077 int32_t ret;
9078
9080
9081 if (ret == 0)
9082 {
9084 (uint8_t *)&reg, 1);
9085 }
9086
9087 if (ret == 0)
9088 {
9089 reg.shub_pu_en = (uint8_t)val;
9091 (uint8_t *)&reg, 1);
9092 }
9093
9094 if (ret == 0)
9095 {
9097 }
9098
9099 return ret;
9100}
9101
9112{
9114 int32_t ret;
9115
9117
9118 if (ret == 0)
9119 {
9121 (uint8_t *)&reg, 1);
9122 }
9123
9124 if (ret == 0)
9125 {
9126 switch (reg.shub_pu_en)
9127 {
9129 *val = LSM6DSO32_EXT_PULL_UP;
9130 break;
9131
9134 break;
9135
9136 default:
9137 *val = LSM6DSO32_EXT_PULL_UP;
9138 break;
9139 }
9140
9142 }
9143
9144 return ret;
9145}
9146
9157{
9159 int32_t ret;
9160
9162
9163 if (ret == 0)
9164 {
9166 (uint8_t *)&reg, 1);
9167 }
9168
9169 if (ret == 0)
9170 {
9171 reg.pass_through_mode = val;
9173 (uint8_t *)&reg, 1);
9174 }
9175
9176 if (ret == 0)
9177 {
9179 }
9180
9181 return ret;
9182}
9183
9194{
9196 int32_t ret;
9197
9199
9200 if (ret == 0)
9201 {
9203 (uint8_t *)&reg, 1);
9204 }
9205
9206 if (ret == 0)
9207 {
9208 *val = reg.pass_through_mode;
9210 }
9211
9212 return ret;
9213}
9214
9225{
9227 int32_t ret;
9228
9230
9231 if (ret == 0)
9232 {
9234 (uint8_t *)&reg, 1);
9235 }
9236
9237 if (ret == 0)
9238 {
9239 reg.start_config = (uint8_t)val;
9241 (uint8_t *)&reg, 1);
9242 }
9243
9244 if (ret == 0)
9245 {
9247 }
9248
9249 return ret;
9250}
9251
9262{
9264 int32_t ret;
9265
9267
9268 if (ret == 0)
9269 {
9271 (uint8_t *)&reg, 1);
9272 }
9273
9274 if (ret == 0)
9275 {
9276 switch (reg.start_config)
9277 {
9280 break;
9281
9283 *val = LSM6DSO32_XL_GY_DRDY;
9284 break;
9285
9286 default:
9288 break;
9289 }
9290
9292 }
9293
9294 return ret;
9295}
9296
9308{
9310 int32_t ret;
9311
9313
9314 if (ret == 0)
9315 {
9317 (uint8_t *)&reg, 1);
9318 }
9319
9320 if (ret == 0)
9321 {
9322 reg.write_once = (uint8_t)val;
9324 (uint8_t *)&reg, 1);
9325 }
9326
9327 if (ret == 0)
9328 {
9330 }
9331
9332 return ret;
9333}
9334
9346{
9348 int32_t ret;
9349
9351
9352 if (ret == 0)
9353 {
9355 (uint8_t *)&reg, 1);
9356 }
9357
9358 if (ret == 0)
9359 {
9360 switch (reg.write_once)
9361 {
9364 break;
9365
9368 break;
9369
9370 default:
9372 break;
9373 }
9374
9376 }
9377
9378 return ret;
9379}
9380
9389{
9391 int32_t ret;
9392
9394
9395 if (ret == 0)
9396 {
9398 (uint8_t *)&reg, 1);
9399 }
9400
9401 if (ret == 0)
9402 {
9405 (uint8_t *)&reg, 1);
9406 }
9407
9408 if (ret == 0)
9409 {
9412 (uint8_t *)&reg, 1);
9413 }
9414
9415 if (ret == 0)
9416 {
9418 }
9419
9420 return ret;
9421}
9422
9431int32_t lsm6dso32_sh_reset_get(stmdev_ctx_t *ctx, uint8_t *val)
9432{
9434 int32_t ret;
9435
9437
9438 if (ret == 0)
9439 {
9441 (uint8_t *)&reg, 1);
9442 }
9443
9444 if (ret == 0)
9445 {
9446 *val = reg.rst_master_regs;
9448 }
9449
9450 return ret;
9451}
9452
9463{
9465 int32_t ret;
9466
9468
9469 if (ret == 0)
9470 {
9471 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_SLV0_CONFIG, (uint8_t *)&reg, 1);
9472 }
9473
9474 if (ret == 0)
9475 {
9476 reg.shub_odr = (uint8_t)val;
9477 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_SLV0_CONFIG, (uint8_t *)&reg, 1);
9478 }
9479
9480 if (ret == 0)
9481 {
9483 }
9484
9485 return ret;
9486}
9487
9498{
9500 int32_t ret;
9501
9503
9504 if (ret == 0)
9505 {
9506 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_SLV0_CONFIG, (uint8_t *)&reg, 1);
9507 }
9508
9509 if (ret == 0)
9510 {
9511 switch (reg.shub_odr)
9512 {
9515 break;
9516
9518 *val = LSM6DSO32_SH_ODR_52Hz;
9519 break;
9520
9522 *val = LSM6DSO32_SH_ODR_26Hz;
9523 break;
9524
9526 *val = LSM6DSO32_SH_ODR_13Hz;
9527 break;
9528
9529 default:
9531 break;
9532 }
9533
9535 }
9536
9537 return ret;
9538}
9539
9553{
9555 int32_t ret;
9556
9558
9559 if (ret == 0)
9560 {
9561 reg.slave0 = val->slv0_add;
9562 reg.rw_0 = 0;
9563 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_SLV0_ADD, (uint8_t *)&reg, 1);
9564 }
9565
9566 if (ret == 0)
9567 {
9569 &(val->slv0_subadd), 1);
9570 }
9571
9572 if (ret == 0)
9573 {
9575 &(val->slv0_data), 1);
9576 }
9577
9578 if (ret == 0)
9579 {
9581 }
9582
9583 return ret;
9584}
9585
9599{
9600 lsm6dso32_slv0_add_t slv0_add;
9601 lsm6dso32_slv0_config_t slv0_config;
9602 int32_t ret;
9603
9605
9606 if (ret == 0)
9607 {
9608 slv0_add.slave0 = val->slv_add;
9609 slv0_add.rw_0 = 1;
9611 (uint8_t *)&slv0_add, 1);
9612 }
9613
9614 if (ret == 0)
9615 {
9617 &(val->slv_subadd), 1);
9618 }
9619
9620 if (ret == 0)
9621 {
9623 (uint8_t *)&slv0_config, 1);
9624 }
9625
9626 if (ret == 0)
9627 {
9628 slv0_config.slave0_numop = val->slv_len;
9630 (uint8_t *)&slv0_config, 1);
9631 }
9632
9633 if (ret == 0)
9634 {
9636 }
9637
9638 return ret;
9639}
9640
9654{
9655 lsm6dso32_slv1_add_t slv1_add;
9656 lsm6dso32_slv1_config_t slv1_config;
9657 int32_t ret;
9658
9660
9661 if (ret == 0)
9662 {
9663 slv1_add.slave1_add = val->slv_add;
9664 slv1_add.r_1 = 1;
9666 (uint8_t *)&slv1_add, 1);
9667 }
9668
9669 if (ret == 0)
9670 {
9672 &(val->slv_subadd), 1);
9673 }
9674
9675 if (ret == 0)
9676 {
9678 (uint8_t *)&slv1_config, 1);
9679 }
9680
9681 if (ret == 0)
9682 {
9683 slv1_config.slave1_numop = val->slv_len;
9685 (uint8_t *)&slv1_config, 1);
9686 }
9687
9688 if (ret == 0)
9689 {
9691 }
9692
9693 return ret;
9694}
9695
9709{
9710 lsm6dso32_slv2_add_t slv2_add;
9711 lsm6dso32_slv2_config_t slv2_config;
9712 int32_t ret;
9713
9715
9716 if (ret == 0)
9717 {
9718 slv2_add.slave2_add = val->slv_add;
9719 slv2_add.r_2 = 1;
9721 (uint8_t *)&slv2_add, 1);
9722 }
9723
9724 if (ret == 0)
9725 {
9727 &(val->slv_subadd), 1);
9728 }
9729
9730 if (ret == 0)
9731 {
9733 (uint8_t *)&slv2_config, 1);
9734 }
9735
9736 if (ret == 0)
9737 {
9738 slv2_config.slave2_numop = val->slv_len;
9740 (uint8_t *)&slv2_config, 1);
9741 }
9742
9743 if (ret == 0)
9744 {
9746 }
9747
9748 return ret;
9749}
9750
9764{
9765 lsm6dso32_slv3_add_t slv3_add;
9766 lsm6dso32_slv3_config_t slv3_config;
9767 int32_t ret;
9768
9770
9771 if (ret == 0)
9772 {
9773 slv3_add.slave3_add = val->slv_add;
9774 slv3_add.r_3 = 1;
9776 (uint8_t *)&slv3_add, 1);
9777 }
9778
9779 if (ret == 0)
9780 {
9782 &(val->slv_subadd), 1);
9783 }
9784
9785 if (ret == 0)
9786 {
9788 (uint8_t *)&slv3_config, 1);
9789 }
9790
9791 if (ret == 0)
9792 {
9793 slv3_config.slave3_numop = val->slv_len;
9795 (uint8_t *)&slv3_config, 1);
9796 }
9797
9798 if (ret == 0)
9799 {
9801 }
9802
9803 return ret;
9804}
9805
9816{
9817 int32_t ret;
9818
9820
9821 if (ret == 0)
9822 {
9824 (uint8_t *) val, 1);
9825 }
9826
9827 if (ret == 0)
9828 {
9830 }
9831
9832 return ret;
9833}
9834
9845/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
#define __weak
int32_t lsm6dso32_den_mark_axis_x_set(stmdev_ctx_t *ctx, uint8_t val)
DEN value stored in LSB of X-axis.[set].
int32_t lsm6dso32_den_mode_set(stmdev_ctx_t *ctx, lsm6dso32_den_mode_t val)
DEN functionality marking mode.[set].
int32_t lsm6dso32_den_mark_axis_z_get(stmdev_ctx_t *ctx, uint8_t *val)
DEN value stored in LSB of Z-axis.[get].
int32_t lsm6dso32_den_mark_axis_y_set(stmdev_ctx_t *ctx, uint8_t val)
DEN value stored in LSB of Y-axis.[set].
int32_t lsm6dso32_den_mode_get(stmdev_ctx_t *ctx, lsm6dso32_den_mode_t *val)
DEN functionality marking mode.[get].
int32_t lsm6dso32_den_enable_get(stmdev_ctx_t *ctx, lsm6dso32_den_xl_g_t *val)
DEN enable.[get].
int32_t lsm6dso32_den_mark_axis_x_get(stmdev_ctx_t *ctx, uint8_t *val)
DEN value stored in LSB of X-axis.[get].
int32_t lsm6dso32_den_mark_axis_y_get(stmdev_ctx_t *ctx, uint8_t *val)
DEN value stored in LSB of Y-axis.[get].
int32_t lsm6dso32_den_polarity_get(stmdev_ctx_t *ctx, lsm6dso32_den_lh_t *val)
DEN active level configuration.[get].
int32_t lsm6dso32_den_enable_set(stmdev_ctx_t *ctx, lsm6dso32_den_xl_g_t val)
DEN enable.[set].
int32_t lsm6dso32_den_polarity_set(stmdev_ctx_t *ctx, lsm6dso32_den_lh_t val)
DEN active level configuration.[set].
int32_t lsm6dso32_den_mark_axis_z_set(stmdev_ctx_t *ctx, uint8_t val)
DEN value stored in LSB of Z-axis.[set].
int32_t lsm6dso32_angular_rate_raw_get(stmdev_ctx_t *ctx, int16_t *val)
Angular rate sensor. The value is expressed as a 16-bit word in two’s complement.[get].
int32_t lsm6dso32_temperature_raw_get(stmdev_ctx_t *ctx, int16_t *val)
Temperature data output register (r). L and H registers together express a 16-bit word in two’s compl...
int32_t lsm6dso32_number_of_steps_get(stmdev_ctx_t *ctx, uint16_t *val)
Step counter output register.[get].
int32_t lsm6dso32_steps_reset(stmdev_ctx_t *ctx)
Reset step counter register.[get].
int32_t lsm6dso32_rounding_mode_set(stmdev_ctx_t *ctx, lsm6dso32_rounding_t val)
Circular burst-mode (rounding) read of the output registers.[set].
int32_t lsm6dso32_rounding_mode_get(stmdev_ctx_t *ctx, lsm6dso32_rounding_t *val)
Gyroscope UI chain full-scale selection.[get].
int32_t lsm6dso32_fifo_out_raw_get(stmdev_ctx_t *ctx, uint8_t *buff)
FIFO data output [get].
int32_t lsm6dso32_acceleration_raw_get(stmdev_ctx_t *ctx, int16_t *val)
Linear acceleration output register. The value is expressed as a 16-bit word in two’s complement....
int32_t lsm6dso32_act_mode_get(stmdev_ctx_t *ctx, lsm6dso32_inact_en_t *val)
Enable inactivity function.[get].
int32_t lsm6dso32_mag_offset_get(stmdev_ctx_t *ctx, int16_t *val)
Offset for hard-iron compensation register (r/w).[get].
int32_t lsm6dso32_mag_x_orient_get(stmdev_ctx_t *ctx, lsm6dso32_mag_x_axis_t *val)
Magnetometer X-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation)....
int32_t lsm6dso32_6d_threshold_set(stmdev_ctx_t *ctx, lsm6dso32_sixd_ths_t val)
Threshold for 4D/6D function.[set].
int32_t lsm6dso32_mag_y_orient_set(stmdev_ctx_t *ctx, lsm6dso32_mag_y_axis_t val)
Magnetometer Y-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation)....
int32_t lsm6dso32_act_sleep_dur_get(stmdev_ctx_t *ctx, uint8_t *val)
Duration to go in sleep mode.[get] 1 LSb = 512 / ODR.
int32_t lsm6dso32_act_mode_set(stmdev_ctx_t *ctx, lsm6dso32_inact_en_t val)
Enable inactivity function.[set].
int32_t lsm6dso32_act_pin_notification_get(stmdev_ctx_t *ctx, lsm6dso32_sleep_status_on_int_t *val)
Drives the sleep status instead of sleep change on INT pins (only if INT1_SLEEP_CHANGE or INT2_SLEEP_...
int32_t lsm6dso32_mag_y_orient_get(stmdev_ctx_t *ctx, lsm6dso32_mag_y_axis_t *val)
Magnetometer Y-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation)....
int32_t lsm6dso32_mag_z_orient_get(stmdev_ctx_t *ctx, lsm6dso32_mag_z_axis_t *val)
Magnetometer Z-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation)....
int32_t lsm6dso32_mag_offset_set(stmdev_ctx_t *ctx, int16_t *val)
Offset for hard-iron compensation register (r/w).[set].
int32_t lsm6dso32_act_pin_notification_set(stmdev_ctx_t *ctx, lsm6dso32_sleep_status_on_int_t val)
Drives the sleep status instead of sleep change on INT pins (only if INT1_SLEEP_CHANGE or INT2_SLEEP_...
int32_t lsm6dso32_mag_sensitivity_set(stmdev_ctx_t *ctx, uint16_t val)
External magnetometer sensitivity value register.[set].
int32_t lsm6dso32_mag_z_orient_set(stmdev_ctx_t *ctx, lsm6dso32_mag_z_axis_t val)
Magnetometer Z-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation)....
int32_t lsm6dso32_6d_threshold_get(stmdev_ctx_t *ctx, lsm6dso32_sixd_ths_t *val)
Threshold for 4D/6D function.[get].
int32_t lsm6dso32_4d_mode_set(stmdev_ctx_t *ctx, uint8_t val)
4D orientation detection enable.[set]
int32_t lsm6dso32_mag_soft_iron_get(stmdev_ctx_t *ctx, int16_t *val)
Soft-iron (3x3 symmetric) matrix correction register (r/w). The value is expressed as half-precision ...
int32_t lsm6dso32_mag_sensitivity_get(stmdev_ctx_t *ctx, uint16_t *val)
External magnetometer sensitivity value register.[get].
int32_t lsm6dso32_4d_mode_get(stmdev_ctx_t *ctx, uint8_t *val)
4D orientation detection enable.[get]
int32_t lsm6dso32_act_sleep_dur_set(stmdev_ctx_t *ctx, uint8_t val)
Duration to go in sleep mode.[set] 1 LSb = 512 / ODR.
int32_t lsm6dso32_gy_sleep_mode_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables gyroscope Sleep mode.[get].
int32_t lsm6dso32_gy_sleep_mode_set(stmdev_ctx_t *ctx, uint8_t val)
Enables gyroscope Sleep mode.[set].
int32_t lsm6dso32_mag_x_orient_set(stmdev_ctx_t *ctx, lsm6dso32_mag_x_axis_t val)
Magnetometer X-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation)....
int32_t lsm6dso32_mag_soft_iron_set(stmdev_ctx_t *ctx, int16_t *val)
Soft-iron (3x3 symmetric) matrix correction register (r/w). The value is expressed as half-precision ...
int32_t __weak lsm6dso32_write_reg(stmdev_ctx_t *ctx, uint8_t reg, uint8_t *data, uint16_t len)
Write generic device register.
int32_t __weak lsm6dso32_read_reg(stmdev_ctx_t *ctx, uint8_t reg, uint8_t *data, uint16_t len)
Read generic device register.
int32_t lsm6dso32_pedo_int_mode_set(stmdev_ctx_t *ctx, lsm6dso32_carry_count_en_t val)
Set when user wants to generate interrupt on count overflow event/every step.[set].
int32_t lsm6dso32_pedo_sens_set(stmdev_ctx_t *ctx, lsm6dso32_pedo_md_t val)
Enable pedometer algorithm.[set].
int32_t lsm6dso32_pedo_steps_period_get(stmdev_ctx_t *ctx, uint16_t *val)
Time period register for step detection on delta time (r/w).[get].
int32_t lsm6dso32_pedo_step_detect_get(stmdev_ctx_t *ctx, uint8_t *val)
Interrupt status bit for step detection.[get].
int32_t lsm6dso32_pedo_sens_get(stmdev_ctx_t *ctx, lsm6dso32_pedo_md_t *val)
Enable pedometer algorithm.[get].
int32_t lsm6dso32_pedo_int_mode_get(stmdev_ctx_t *ctx, lsm6dso32_carry_count_en_t *val)
Set when user wants to generate interrupt on count overflow event/every step.[get].
int32_t lsm6dso32_pedo_debounce_steps_set(stmdev_ctx_t *ctx, uint8_t *buff)
Pedometer debounce configuration register (r/w).[set].
int32_t lsm6dso32_pedo_steps_period_set(stmdev_ctx_t *ctx, uint16_t val)
Time period register for step detection on delta time (r/w).[set].
int32_t lsm6dso32_pedo_debounce_steps_get(stmdev_ctx_t *ctx, uint8_t *buff)
Pedometer debounce configuration register (r/w).[get].
float_t lsm6dso32_from_lsb_to_celsius(int16_t lsb)
float_t lsm6dso32_from_fs1000_to_mdps(int16_t lsb)
float_t lsm6dso32_from_fs500_to_mdps(int16_t lsb)
float_t lsm6dso32_from_fs250_to_mdps(int16_t lsb)
float_t lsm6dso32_from_fs125_to_mdps(int16_t lsb)
float_t lsm6dso32_from_fs8_to_mg(int16_t lsb)
float_t lsm6dso32_from_fs4_to_mg(int16_t lsb)
float_t lsm6dso32_from_lsb_to_nsec(int16_t lsb)
float_t lsm6dso32_from_fs32_to_mg(int16_t lsb)
float_t lsm6dso32_from_fs16_to_mg(int16_t lsb)
float_t lsm6dso32_from_fs2000_to_mdps(int16_t lsb)
int32_t lsm6dso32_sh_data_rate_get(stmdev_ctx_t *ctx, lsm6dso32_shub_odr_t *val)
Rate at which the master communicates.[get].
int32_t lsm6dso32_sh_data_rate_set(stmdev_ctx_t *ctx, lsm6dso32_shub_odr_t val)
Rate at which the master communicates.[set].
int32_t lsm6dso32_sh_syncro_mode_set(stmdev_ctx_t *ctx, lsm6dso32_start_config_t val)
Sensor hub trigger signal selection.[set].
int32_t lsm6dso32_sh_pin_mode_get(stmdev_ctx_t *ctx, lsm6dso32_shub_pu_en_t *val)
Master I2C pull-up enable.[get].
int32_t lsm6dso32_sh_slave_connected_get(stmdev_ctx_t *ctx, lsm6dso32_aux_sens_on_t *val)
Number of external sensors to be read by the sensor hub.[get].
int32_t lsm6dso32_sh_master_get(stmdev_ctx_t *ctx, uint8_t *val)
Sensor hub I2C master enable.[get].
int32_t lsm6dso32_sh_pass_through_set(stmdev_ctx_t *ctx, uint8_t val)
I2C interface pass-through.[set].
int32_t lsm6dso32_sh_write_mode_set(stmdev_ctx_t *ctx, lsm6dso32_write_once_t val)
Slave 0 write operation is performed only at the first sensor hub cycle.[set].
int32_t lsm6dso32_sh_slv1_cfg_read(stmdev_ctx_t *ctx, lsm6dso32_sh_cfg_read_t *val)
Configure slave 0 for perform a write/read.[set].
int32_t lsm6dso32_sh_slv2_cfg_read(stmdev_ctx_t *ctx, lsm6dso32_sh_cfg_read_t *val)
Configure slave 0 for perform a write/read.[set].
int32_t lsm6dso32_sh_cfg_write(stmdev_ctx_t *ctx, lsm6dso32_sh_cfg_write_t *val)
Configure slave 0 for perform a write.[set].
int32_t lsm6dso32_sh_slave_connected_set(stmdev_ctx_t *ctx, lsm6dso32_aux_sens_on_t val)
Number of external sensors to be read by the sensor hub.[set].
int32_t lsm6dso32_sh_pass_through_get(stmdev_ctx_t *ctx, uint8_t *val)
I2C interface pass-through.[get].
int32_t lsm6dso32_sh_status_get(stmdev_ctx_t *ctx, lsm6dso32_status_master_t *val)
Sensor hub source register.[get].
int32_t lsm6dso32_sh_syncro_mode_get(stmdev_ctx_t *ctx, lsm6dso32_start_config_t *val)
Sensor hub trigger signal selection.[get].
int32_t lsm6dso32_sh_master_set(stmdev_ctx_t *ctx, uint8_t val)
Sensor hub I2C master enable.[set].
int32_t lsm6dso32_sh_write_mode_get(stmdev_ctx_t *ctx, lsm6dso32_write_once_t *val)
Slave 0 write operation is performed only at the first sensor hub cycle.[get].
int32_t lsm6dso32_sh_read_data_raw_get(stmdev_ctx_t *ctx, lsm6dso32_emb_sh_read_t *val)
Sensor hub output registers.[get].
int32_t lsm6dso32_sh_reset_get(stmdev_ctx_t *ctx, uint8_t *val)
Reset Master logic and output registers.[get].
int32_t lsm6dso32_sh_reset_set(stmdev_ctx_t *ctx)
Reset Master logic and output registers.[set].
int32_t lsm6dso32_sh_pin_mode_set(stmdev_ctx_t *ctx, lsm6dso32_shub_pu_en_t val)
Master I2C pull-up enable.[set].
int32_t lsm6dso32_sh_slv0_cfg_read(stmdev_ctx_t *ctx, lsm6dso32_sh_cfg_read_t *val)
Configure slave 0 for perform a read.[set].
int32_t lsm6dso32_sh_slv3_cfg_read(stmdev_ctx_t *ctx, lsm6dso32_sh_cfg_read_t *val)
Configure slave 0 for perform a write/read.[set].
int32_t lsm6dso32_timestamp_set(stmdev_ctx_t *ctx, uint8_t val)
Enables timestamp counter.[set].
int32_t lsm6dso32_timestamp_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables timestamp counter.[get].
int32_t lsm6dso32_timestamp_raw_get(stmdev_ctx_t *ctx, uint32_t *val)
Timestamp first data output register (r). The value is expressed as a 32-bit word and the bit resolut...
int32_t lsm6dso32_wkup_dur_set(stmdev_ctx_t *ctx, uint8_t val)
Wake up duration event.[set] 1LSb = 1 / ODR.
int32_t lsm6dso32_wkup_ths_weight_get(stmdev_ctx_t *ctx, lsm6dso32_wake_ths_w_t *val)
Weight of 1 LSB of wakeup threshold.[get] 0: 1 LSB =FS_XL / 64 1: 1 LSB = FS_XL / 256.
int32_t lsm6dso32_wkup_dur_get(stmdev_ctx_t *ctx, uint8_t *val)
Wake up duration event.[get] 1LSb = 1 / ODR.
int32_t lsm6dso32_wkup_threshold_get(stmdev_ctx_t *ctx, uint8_t *val)
Threshold for wakeup: 1 LSB weight depends on WAKE_THS_W in WAKE_UP_DUR.[get].
int32_t lsm6dso32_wkup_ths_weight_set(stmdev_ctx_t *ctx, lsm6dso32_wake_ths_w_t val)
Weight of 1 LSB of wakeup threshold.[set] 0: 1 LSB =FS_XL / 64 1: 1 LSB = FS_XL / 256.
int32_t lsm6dso32_wkup_threshold_set(stmdev_ctx_t *ctx, uint8_t val)
Threshold for wakeup: 1 LSB weight depends on WAKE_THS_W in WAKE_UP_DUR.[set].
int32_t lsm6dso32_xl_usr_offset_on_wkup_get(stmdev_ctx_t *ctx, uint8_t *val)
Wake up duration event.[get] 1LSb = 1 / ODR.
int32_t lsm6dso32_xl_usr_offset_on_wkup_set(stmdev_ctx_t *ctx, uint8_t val)
Wake up duration event.[set] 1LSb = 1 / ODR.
int32_t lsm6dso32_ln_pg_write(stmdev_ctx_t *ctx, uint16_t address, uint8_t *buf, uint8_t len)
Write buffer in a page.[set].
int32_t lsm6dso32_ln_pg_read_byte(stmdev_ctx_t *ctx, uint16_t address, uint8_t *val)
Read a line(byte) in a page.[get].
int32_t lsm6dso32_reset_get(stmdev_ctx_t *ctx, uint8_t *val)
Software reset. Restore the default values in user registers.[get].
int32_t lsm6dso32_mem_bank_set(stmdev_ctx_t *ctx, lsm6dso32_reg_access_t val)
Enable access to the embedded functions/sensor hub configuration registers.[set].
int32_t lsm6dso32_gy_self_test_set(stmdev_ctx_t *ctx, lsm6dso32_st_g_t val)
Angular rate sensor self-test enable.[set].
int32_t lsm6dso32_reset_set(stmdev_ctx_t *ctx, uint8_t val)
Software reset. Restore the default values in user registers[set].
int32_t lsm6dso32_boot_get(stmdev_ctx_t *ctx, uint8_t *val)
Reboot memory content. Reload the calibration parameters.[get].
int32_t lsm6dso32_data_ready_mode_set(stmdev_ctx_t *ctx, lsm6dso32_dataready_pulsed_t val)
Data-ready pulsed / letched mode.[set].
int32_t lsm6dso32_odr_cal_reg_get(stmdev_ctx_t *ctx, uint8_t *val)
Difference in percentage of the effective ODR(and timestamp rate) with respect to the typical....
int32_t lsm6dso32_gy_self_test_get(stmdev_ctx_t *ctx, lsm6dso32_st_g_t *val)
Angular rate sensor self-test enable.[get].
int32_t lsm6dso32_odr_cal_reg_set(stmdev_ctx_t *ctx, uint8_t val)
Difference in percentage of the effective ODR(and timestamp rate) with respect to the typical....
int32_t lsm6dso32_data_ready_mode_get(stmdev_ctx_t *ctx, lsm6dso32_dataready_pulsed_t *val)
Data-ready pulsed / letched mode.[get].
int32_t lsm6dso32_auto_increment_get(stmdev_ctx_t *ctx, uint8_t *val)
Register address automatically incremented during a multiple byte access with a serial interface....
int32_t lsm6dso32_boot_set(stmdev_ctx_t *ctx, uint8_t val)
Reboot memory content. Reload the calibration parameters.[set].
int32_t lsm6dso32_xl_self_test_get(stmdev_ctx_t *ctx, lsm6dso32_st_xl_t *val)
Linear acceleration sensor self-test enable.[get].
int32_t lsm6dso32_device_id_get(stmdev_ctx_t *ctx, uint8_t *buff)
Device "Who am I".[get].
int32_t lsm6dso32_auto_increment_set(stmdev_ctx_t *ctx, uint8_t val)
Register address automatically incremented during a multiple byte access with a serial interface....
int32_t lsm6dso32_ln_pg_write_byte(stmdev_ctx_t *ctx, uint16_t address, uint8_t *val)
Write a line(byte) in a page.[set].
int32_t lsm6dso32_xl_self_test_set(stmdev_ctx_t *ctx, lsm6dso32_st_xl_t val)
Linear acceleration sensor self-test enable.[set].
int32_t lsm6dso32_mem_bank_get(stmdev_ctx_t *ctx, lsm6dso32_reg_access_t *val)
Enable access to the embedded functions/sensor hub configuration registers.[get].
int32_t lsm6dso32_rst_batch_counter_get(stmdev_ctx_t *ctx, uint8_t *val)
Resets the internal counter of batching events for a single sensor. This bit is automatically reset t...
int32_t lsm6dso32_batch_counter_threshold_set(stmdev_ctx_t *ctx, uint16_t val)
Batch data rate counter.[set].
int32_t lsm6dso32_fifo_pedo_batch_set(stmdev_ctx_t *ctx, uint8_t val)
: Enable FIFO batching of pedometer embedded function values.[set]
lsm6dso32_fifo_mode_t
int32_t lsm6dso32_compression_algo_set(stmdev_ctx_t *ctx, lsm6dso32_uncoptr_rate_t val)
Enable and configure compression algo.[set].
int32_t lsm6dso32_fifo_gy_batch_get(stmdev_ctx_t *ctx, lsm6dso32_bdr_gy_t *val)
Selects Batching Data Rate (writing frequency in FIFO) for gyroscope data.[get].
lsm6dso32_fifo_tag_t
int32_t lsm6dso32_compression_algo_real_time_set(stmdev_ctx_t *ctx, uint8_t val)
Enables/Disables compression algorithm runtime.[set].
lsm6dso32_odr_t_batch_t
int32_t lsm6dso32_fifo_xl_batch_set(stmdev_ctx_t *ctx, lsm6dso32_bdr_xl_t val)
Selects Batching Data Rate (writing frequency in FIFO) for accelerometer data.[set].
int32_t lsm6dso32_sh_batch_slave_3_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable FIFO batching data of fourth slave.[get].
int32_t lsm6dso32_fifo_ovr_flag_get(stmdev_ctx_t *ctx, uint8_t *val)
FIFO overrun status.[get].
int32_t lsm6dso32_fifo_data_level_get(stmdev_ctx_t *ctx, uint16_t *val)
Number of unread sensor data(TAG + 6 bytes) stored in FIFO.[get].
int32_t lsm6dso32_fifo_virtual_sens_odr_chg_set(stmdev_ctx_t *ctx, uint8_t val)
Enables ODR CHANGE virtual sensor to be batched in FIFO.[set].
int32_t lsm6dso32_fifo_temp_batch_set(stmdev_ctx_t *ctx, lsm6dso32_odr_t_batch_t val)
Selects Batching Data Rate (writing frequency in FIFO) for temperature data.[set].
int32_t lsm6dso32_compression_algo_real_time_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables/Disables compression algorithm runtime.[get].
int32_t lsm6dso32_sh_batch_slave_0_set(stmdev_ctx_t *ctx, uint8_t val)
Enable FIFO batching data of first slave.[set].
int32_t lsm6dso32_batch_counter_threshold_get(stmdev_ctx_t *ctx, uint16_t *val)
Batch data rate counter.[get].
int32_t lsm6dso32_rst_batch_counter_set(stmdev_ctx_t *ctx, uint8_t val)
Resets the internal counter of batching vents for a single sensor. This bit is automatically reset to...
int32_t lsm6dso32_fifo_watermark_get(stmdev_ctx_t *ctx, uint16_t *val)
FIFO watermark level selection.[get].
lsm6dso32_bdr_gy_t
lsm6dso32_trig_counter_bdr_t
lsm6dso32_uncoptr_rate_t
int32_t lsm6dso32_fifo_xl_batch_get(stmdev_ctx_t *ctx, lsm6dso32_bdr_xl_t *val)
Selects Batching Data Rate (writing frequency in FIFO) for accelerometer data.[get].
int32_t lsm6dso32_fifo_mode_set(stmdev_ctx_t *ctx, lsm6dso32_fifo_mode_t val)
FIFO mode selection.[set].
int32_t lsm6dso32_fifo_sensor_tag_get(stmdev_ctx_t *ctx, lsm6dso32_fifo_tag_t *val)
Identifies the sensor in FIFO_DATA_OUT.[get].
int32_t lsm6dso32_sh_batch_slave_2_set(stmdev_ctx_t *ctx, uint8_t val)
Enable FIFO batching data of third slave.[set].
int32_t lsm6dso32_fifo_pedo_batch_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable FIFO batching of pedometer embedded function values.[get].
int32_t lsm6dso32_sh_batch_slave_1_set(stmdev_ctx_t *ctx, uint8_t val)
Enable FIFO batching data of second slave.[set].
int32_t lsm6dso32_fifo_status_get(stmdev_ctx_t *ctx, lsm6dso32_fifo_status2_t *val)
FIFO status.[get].
int32_t lsm6dso32_fifo_mode_get(stmdev_ctx_t *ctx, lsm6dso32_fifo_mode_t *val)
FIFO mode selection.[get].
int32_t lsm6dso32_fifo_timestamp_decimation_get(stmdev_ctx_t *ctx, lsm6dso32_odr_ts_batch_t *val)
Selects decimation for timestamp batching in FIFO. Writing rate will be the maximum rate between XL a...
int32_t lsm6dso32_sh_batch_slave_1_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable FIFO batching data of second slave.[get].
int32_t lsm6dso32_compression_algo_get(stmdev_ctx_t *ctx, lsm6dso32_uncoptr_rate_t *val)
Enable and configure compression algo.[get].
int32_t lsm6dso32_fifo_gy_batch_set(stmdev_ctx_t *ctx, lsm6dso32_bdr_gy_t val)
Selects Batching Data Rate (writing frequency in FIFO) for gyroscope data.[set].
int32_t lsm6dso32_fifo_cnt_event_batch_get(stmdev_ctx_t *ctx, lsm6dso32_trig_counter_bdr_t *val)
Selects the trigger for the internal counter of batching events between XL and gyro....
int32_t lsm6dso32_fifo_stop_on_wtm_get(stmdev_ctx_t *ctx, uint8_t *val)
Sensing chain FIFO stop values memorization at threshold level.[get].
int32_t lsm6dso32_fifo_virtual_sens_odr_chg_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables ODR CHANGE virtual sensor to be batched in FIFO.[get].
int32_t lsm6dso32_compression_algo_init_set(stmdev_ctx_t *ctx, uint8_t val)
FIFO compression feature initialization request [set].
int32_t lsm6dso32_fifo_wtm_flag_get(stmdev_ctx_t *ctx, uint8_t *val)
FIFO watermark status.[get].
int32_t lsm6dso32_fifo_timestamp_decimation_set(stmdev_ctx_t *ctx, lsm6dso32_odr_ts_batch_t val)
Selects decimation for timestamp batching in FIFO. Writing rate will be the maximum rate between XL a...
int32_t lsm6dso32_compression_algo_init_get(stmdev_ctx_t *ctx, uint8_t *val)
FIFO compression feature initialization request [get].
int32_t lsm6dso32_fifo_stop_on_wtm_set(stmdev_ctx_t *ctx, uint8_t val)
Sensing chain FIFO stop values memorization at threshold level.[set].
int32_t lsm6dso32_fifo_cnt_event_batch_set(stmdev_ctx_t *ctx, lsm6dso32_trig_counter_bdr_t val)
Selects the trigger for the internal counter of batching events between XL and gyro....
int32_t lsm6dso32_fifo_watermark_set(stmdev_ctx_t *ctx, uint16_t val)
FIFO watermark level selection.[set].
int32_t lsm6dso32_sh_batch_slave_2_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable FIFO batching data of third slave.[get].
int32_t lsm6dso32_fifo_full_flag_get(stmdev_ctx_t *ctx, uint8_t *val)
Smart FIFO full status.[get].
int32_t lsm6dso32_sh_batch_slave_3_set(stmdev_ctx_t *ctx, uint8_t val)
Enable FIFO batching data of fourth slave.[set].
lsm6dso32_odr_ts_batch_t
lsm6dso32_bdr_xl_t
int32_t lsm6dso32_fifo_temp_batch_get(stmdev_ctx_t *ctx, lsm6dso32_odr_t_batch_t *val)
Selects Batching Data Rate (writing frequency in FIFO) for temperature data.[get].
int32_t lsm6dso32_sh_batch_slave_0_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable FIFO batching data of first slave.[get].
@ LSM6DSO32_BYPASS_TO_FIFO_MODE
@ LSM6DSO32_STREAM_MODE
@ LSM6DSO32_BYPASS_MODE
@ LSM6DSO32_BYPASS_TO_STREAM_MODE
@ LSM6DSO32_STREAM_TO_FIFO_MODE
@ LSM6DSO32_FIFO_MODE
@ LSM6DSO32_GYRO_3XC_TAG
@ LSM6DSO32_SENSORHUB_NACK_TAG
@ LSM6DSO32_GYRO_NC_TAG
@ LSM6DSO32_XL_2XC_TAG
@ LSM6DSO32_XL_NC_T_1_TAG
@ LSM6DSO32_SENSORHUB_SLAVE3_TAG
@ LSM6DSO32_GYRO_NC_T_2_TAG
@ LSM6DSO32_GYRO_NC_T_1_TAG
@ LSM6DSO32_XL_NC_TAG
@ LSM6DSO32_GYRO_2XC_TAG
@ LSM6DSO32_XL_NC_T_2_TAG
@ LSM6DSO32_SENSORHUB_SLAVE2_TAG
@ LSM6DSO32_CFG_CHANGE_TAG
@ LSM6DSO32_TIMESTAMP_TAG
@ LSM6DSO32_TEMPERATURE_TAG
@ LSM6DSO32_SENSORHUB_SLAVE0_TAG
@ LSM6DSO32_XL_3XC_TAG
@ LSM6DSO32_SENSORHUB_SLAVE1_TAG
@ LSM6DSO32_STEP_COUNTER_TAG
@ LSM6DSO32_TEMP_BATCHED_AT_1Hz6
@ LSM6DSO32_TEMP_NOT_BATCHED
@ LSM6DSO32_TEMP_BATCHED_AT_52Hz
@ LSM6DSO32_TEMP_BATCHED_AT_12Hz5
@ LSM6DSO32_GY_BATCHED_AT_3333Hz
@ LSM6DSO32_GY_NOT_BATCHED
@ LSM6DSO32_GY_BATCHED_AT_417Hz
@ LSM6DSO32_GY_BATCHED_AT_833Hz
@ LSM6DSO32_GY_BATCHED_AT_26Hz
@ LSM6DSO32_GY_BATCHED_AT_6Hz5
@ LSM6DSO32_GY_BATCHED_AT_12Hz5
@ LSM6DSO32_GY_BATCHED_AT_1667Hz
@ LSM6DSO32_GY_BATCHED_AT_208Hz
@ LSM6DSO32_GY_BATCHED_AT_52Hz
@ LSM6DSO32_GY_BATCHED_AT_104Hz
@ LSM6DSO32_GY_BATCHED_AT_6667Hz
@ LSM6DSO32_GYRO_BATCH_EVENT
@ LSM6DSO32_XL_BATCH_EVENT
@ LSM6DSO32_CMP_16_TO_1
@ LSM6DSO32_CMP_ALWAYS
@ LSM6DSO32_CMP_DISABLE
@ LSM6DSO32_CMP_32_TO_1
@ LSM6DSO32_CMP_8_TO_1
@ LSM6DSO32_DEC_8
@ LSM6DSO32_DEC_32
@ LSM6DSO32_DEC_1
@ LSM6DSO32_NO_DECIMATION
@ LSM6DSO32_XL_BATCHED_AT_26Hz
@ LSM6DSO32_XL_BATCHED_AT_1667Hz
@ LSM6DSO32_XL_BATCHED_AT_12Hz5
@ LSM6DSO32_XL_BATCHED_AT_208Hz
@ LSM6DSO32_XL_BATCHED_AT_6Hz5
@ LSM6DSO32_XL_BATCHED_AT_104Hz
@ LSM6DSO32_XL_BATCHED_AT_417Hz
@ LSM6DSO32_XL_BATCHED_AT_3333Hz
@ LSM6DSO32_XL_BATCHED_AT_6667Hz
@ LSM6DSO32_XL_NOT_BATCHED
@ LSM6DSO32_XL_BATCHED_AT_52Hz
@ LSM6DSO32_XL_BATCHED_AT_833Hz
int32_t lsm6dso32_xl_fast_settling_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables accelerometer LPF2 and HPF fast-settling mode. The filter sets the second samples after writi...
int32_t lsm6dso32_xl_fast_settling_set(stmdev_ctx_t *ctx, uint8_t val)
Enables accelerometer LPF2 and HPF fast-settling mode. The filter sets the second samples after writi...
int32_t lsm6dso32_xl_hp_path_internal_get(stmdev_ctx_t *ctx, lsm6dso32_slope_fds_t *val)
HPF or SLOPE filter selection on wake-up and Activity/Inactivity functions.[get].
int32_t lsm6dso32_xl_lp2_on_6d_set(stmdev_ctx_t *ctx, uint8_t val)
Low pass filter 2 on 6D function selection.[set].
int32_t lsm6dso32_xl_lp2_on_6d_get(stmdev_ctx_t *ctx, uint8_t *val)
Low pass filter 2 on 6D function selection.[get].
int32_t lsm6dso32_gy_filter_lp1_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables gyroscope digital LPF1 if auxiliary SPI is disabled; the bandwidth can be selected through FT...
int32_t lsm6dso32_xl_filter_lp2_set(stmdev_ctx_t *ctx, uint8_t val)
Accelerometer output from LPF2 filtering stage selection.[set].
int32_t lsm6dso32_xl_filter_lp2_get(stmdev_ctx_t *ctx, uint8_t *val)
Accelerometer output from LPF2 filtering stage selection.[get].
int32_t lsm6dso32_xl_hp_path_internal_set(stmdev_ctx_t *ctx, lsm6dso32_slope_fds_t val)
HPF or SLOPE filter selection on wake-up and Activity/Inactivity functions.[set].
int32_t lsm6dso32_gy_lp1_bandwidth_get(stmdev_ctx_t *ctx, lsm6dso32_ftype_t *val)
Gyroscope lp1 bandwidth.[get].
int32_t lsm6dso32_gy_hp_path_internal_set(stmdev_ctx_t *ctx, lsm6dso32_hpm_g_t val)
Enables gyroscope digital high-pass filter. The filter is enabled only if the gyro is in HP mode....
int32_t lsm6dso32_filter_settling_mask_get(stmdev_ctx_t *ctx, uint8_t *val)
Mask DRDY on pin (both XL & Gyro) until filter settling ends (XL and Gyro independently masked)....
int32_t lsm6dso32_xl_hp_path_on_out_set(stmdev_ctx_t *ctx, lsm6dso32_hp_slope_xl_en_t val)
Accelerometer slope filter / high-pass filter selection on output.[set].
int32_t lsm6dso32_gy_hp_path_internal_get(stmdev_ctx_t *ctx, lsm6dso32_hpm_g_t *val)
Enables gyroscope digital high-pass filter. The filter is enabled only if the gyro is in HP mode....
int32_t lsm6dso32_filter_settling_mask_set(stmdev_ctx_t *ctx, uint8_t val)
Mask DRDY on pin (both XL & Gyro) until filter settling ends (XL and Gyro independently masked)....
int32_t lsm6dso32_gy_lp1_bandwidth_set(stmdev_ctx_t *ctx, lsm6dso32_ftype_t val)
Gyroscope lp1 bandwidth.[set].
int32_t lsm6dso32_gy_filter_lp1_set(stmdev_ctx_t *ctx, uint8_t val)
Enables gyroscope digital LPF1 if auxiliary SPI is disabled; the bandwidth can be selected through FT...
int32_t lsm6dso32_xl_hp_path_on_out_get(stmdev_ctx_t *ctx, lsm6dso32_hp_slope_xl_en_t *val)
Accelerometer slope filter / high-pass filter selection on output.[get].
int32_t lsm6dso32_fsm_data_rate_set(stmdev_ctx_t *ctx, lsm6dso32_fsm_odr_t val)
Finite State Machine ODR configuration.[set].
lsm6dso32_fsm_lc_clr_t
int32_t lsm6dso32_long_clr_set(stmdev_ctx_t *ctx, lsm6dso32_fsm_lc_clr_t val)
Clear FSM long counter value.[set].
int32_t lsm6dso32_fsm_enable_set(stmdev_ctx_t *ctx, lsm6dso32_emb_fsm_enable_t *val)
Final State Machine enable.[set].
int32_t lsm6dso32_emb_fsm_en_set(stmdev_ctx_t *ctx, uint8_t val)
Final State Machine global enable.[set].
int32_t lsm6dso32_long_cnt_int_value_set(stmdev_ctx_t *ctx, uint16_t val)
FSM long counter timeout register (r/w). The long counter timeout value is an unsigned integer value ...
int32_t lsm6dso32_fsm_data_rate_get(stmdev_ctx_t *ctx, lsm6dso32_fsm_odr_t *val)
Finite State Machine ODR configuration.[get].
int32_t lsm6dso32_long_clr_get(stmdev_ctx_t *ctx, lsm6dso32_fsm_lc_clr_t *val)
Clear FSM long counter value.[get].
int32_t lsm6dso32_fsm_number_of_programs_get(stmdev_ctx_t *ctx, uint8_t *buff)
FSM number of programs register.[get].
int32_t lsm6dso32_fsm_init_set(stmdev_ctx_t *ctx, uint8_t val)
FSM initialization request.[set].
int32_t lsm6dso32_fsm_number_of_programs_set(stmdev_ctx_t *ctx, uint8_t *buff)
FSM number of programs register.[set].
int32_t lsm6dso32_fsm_init_get(stmdev_ctx_t *ctx, uint8_t *val)
FSM initialization request.[get].
int32_t lsm6dso32_long_cnt_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Interrupt status bit for FSM long counter timeout interrupt event.[get].
int32_t lsm6dso32_long_cnt_int_value_get(stmdev_ctx_t *ctx, uint16_t *val)
FSM long counter timeout register (r/w). The long counter timeout value is an unsigned integer value ...
int32_t lsm6dso32_fsm_enable_get(stmdev_ctx_t *ctx, lsm6dso32_emb_fsm_enable_t *val)
Final State Machine enable.[get].
int32_t lsm6dso32_fsm_out_get(stmdev_ctx_t *ctx, lsm6dso32_fsm_out_t *val)
FSM output registers[get].
int32_t lsm6dso32_emb_fsm_en_get(stmdev_ctx_t *ctx, uint8_t *val)
Final State Machine global enable.[get].
int32_t lsm6dso32_fsm_start_address_get(stmdev_ctx_t *ctx, uint16_t *val)
FSM start address register (r/w). First available address is 0x033C.[get].
int32_t lsm6dso32_fsm_start_address_set(stmdev_ctx_t *ctx, uint16_t val)
FSM start address register (r/w). First available address is 0x033C.[set].
lsm6dso32_fsm_odr_t
int32_t lsm6dso32_long_cnt_get(stmdev_ctx_t *ctx, uint16_t *val)
FSM long counter status register. Long counter value is an unsigned integer value (16-bit format)....
int32_t lsm6dso32_long_cnt_set(stmdev_ctx_t *ctx, uint16_t val)
FSM long counter status register. Long counter value is an unsigned integer value (16-bit format)....
@ LSM6DSO32_LC_CLEAR_DONE
@ LSM6DSO32_LC_NORMAL
@ LSM6DSO32_LC_CLEAR
@ LSM6DSO32_ODR_FSM_26Hz
@ LSM6DSO32_ODR_FSM_12Hz5
@ LSM6DSO32_ODR_FSM_52Hz
@ LSM6DSO32_ODR_FSM_104Hz
int32_t lsm6dso32_ff_dur_get(stmdev_ctx_t *ctx, uint8_t *val)
Free-fall duration event.[get] 1LSb = 1 / ODR.
int32_t lsm6dso32_ff_dur_set(stmdev_ctx_t *ctx, uint8_t val)
Free-fall duration event.[set] 1LSb = 1 / ODR.
int32_t lsm6dso32_ff_threshold_set(stmdev_ctx_t *ctx, lsm6dso32_ff_ths_t val)
Free fall threshold setting.[set].
int32_t lsm6dso32_ff_threshold_get(stmdev_ctx_t *ctx, lsm6dso32_ff_ths_t *val)
Free fall threshold setting.[get].
int32_t lsm6dso32_pin_int2_route_get(stmdev_ctx_t *ctx, lsm6dso32_pin_int2_route_t *val)
Select the signal that need to route on int2 pad.[get].
int32_t lsm6dso32_int_notification_get(stmdev_ctx_t *ctx, lsm6dso32_lir_t *val)
Interrupt notification mode.[get].
int32_t lsm6dso32_pin_mode_set(stmdev_ctx_t *ctx, lsm6dso32_pp_od_t val)
Push-pull/open drain selection on interrupt pads.[set].
int32_t lsm6dso32_pin_int1_route_set(stmdev_ctx_t *ctx, lsm6dso32_pin_int1_route_t *val)
Select the signal that need to route on int1 pad.[set].
int32_t lsm6dso32_pin_mode_get(stmdev_ctx_t *ctx, lsm6dso32_pp_od_t *val)
Push-pull/open drain selection on interrupt pads.[get].
int32_t lsm6dso32_pin_int2_route_set(stmdev_ctx_t *ctx, lsm6dso32_pin_int2_route_t *val)
Select the signal that need to route on int2 pad.[set].
int32_t lsm6dso32_pin_int1_route_get(stmdev_ctx_t *ctx, lsm6dso32_pin_int1_route_t *val)
Select the signal that need to route on int1 pad.[get].
int32_t lsm6dso32_pin_polarity_get(stmdev_ctx_t *ctx, lsm6dso32_h_lactive_t *val)
Interrupt active-high/low.[get].
int32_t lsm6dso32_pin_polarity_set(stmdev_ctx_t *ctx, lsm6dso32_h_lactive_t val)
Interrupt active-high/low.[set].
int32_t lsm6dso32_int1_mode_get(stmdev_ctx_t *ctx, lsm6dso32_int1_pd_en_t *val)
Connect/Disconnect INT1 internal pull-down.[get].
int32_t lsm6dso32_all_on_int1_get(stmdev_ctx_t *ctx, uint8_t *val)
All interrupt signals become available on INT1 pin.[get].
int32_t lsm6dso32_int1_mode_set(stmdev_ctx_t *ctx, lsm6dso32_int1_pd_en_t val)
Connect/Disconnect INT1 internal pull-down.[set].
int32_t lsm6dso32_all_on_int1_set(stmdev_ctx_t *ctx, uint8_t val)
All interrupt signals become available on INT1 pin.[set].
int32_t lsm6dso32_int_notification_set(stmdev_ctx_t *ctx, lsm6dso32_lir_t val)
Interrupt notification mode.[set].
int32_t lsm6dso32_motion_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Interrupt status bit for significant motion detection.[get].
int32_t lsm6dso32_motion_sens_set(stmdev_ctx_t *ctx, uint8_t val)
Enable significant motion detection function.[set].
int32_t lsm6dso32_motion_sens_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable significant motion detection function.[get].
int32_t lsm6dso32_tap_detection_on_z_set(stmdev_ctx_t *ctx, uint8_t val)
Enable Z direction in tap recognition.[set].
int32_t lsm6dso32_tap_shock_set(stmdev_ctx_t *ctx, uint8_t val)
Maximum duration is the maximum time of an over threshold signal detection to be recognized as a tap ...
int32_t lsm6dso32_tap_threshold_x_set(stmdev_ctx_t *ctx, uint8_t val)
X-axis tap recognition threshold.[set].
int32_t lsm6dso32_tap_quiet_get(stmdev_ctx_t *ctx, uint8_t *val)
Quiet time is the time after the first detected tap in which there must not be any over threshold eve...
int32_t lsm6dso32_tap_detection_on_x_set(stmdev_ctx_t *ctx, uint8_t val)
Enable X direction in tap recognition.[set].
int32_t lsm6dso32_tap_detection_on_y_set(stmdev_ctx_t *ctx, uint8_t val)
Enable Y direction in tap recognition.[set].
int32_t lsm6dso32_tap_threshold_z_set(stmdev_ctx_t *ctx, uint8_t val)
Z-axis recognition threshold.[set].
int32_t lsm6dso32_tap_threshold_y_get(stmdev_ctx_t *ctx, uint8_t *val)
Y-axis tap recognition threshold.[get].
int32_t lsm6dso32_tap_detection_on_y_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable Y direction in tap recognition.[get].
int32_t lsm6dso32_tap_mode_get(stmdev_ctx_t *ctx, lsm6dso32_single_double_tap_t *val)
Single/double-tap event enable.[get].
int32_t lsm6dso32_tap_dur_set(stmdev_ctx_t *ctx, uint8_t val)
When double tap recognition is enabled, this register expresses the maximum time between two consecut...
int32_t lsm6dso32_tap_detection_on_z_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable Z direction in tap recognition.[get].
int32_t lsm6dso32_tap_axis_priority_get(stmdev_ctx_t *ctx, lsm6dso32_tap_priority_t *val)
Selection of axis priority for TAP detection.[get].
int32_t lsm6dso32_tap_detection_on_x_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable X direction in tap recognition.[get].
int32_t lsm6dso32_tap_mode_set(stmdev_ctx_t *ctx, lsm6dso32_single_double_tap_t val)
Single/double-tap event enable.[set].
int32_t lsm6dso32_tap_quiet_set(stmdev_ctx_t *ctx, uint8_t val)
Quiet time is the time after the first detected tap in which there must not be any over threshold eve...
int32_t lsm6dso32_tap_threshold_x_get(stmdev_ctx_t *ctx, uint8_t *val)
X-axis tap recognition threshold.[get].
int32_t lsm6dso32_tap_shock_get(stmdev_ctx_t *ctx, uint8_t *val)
Maximum duration is the maximum time of an over threshold signal detection to be recognized as a tap ...
int32_t lsm6dso32_tap_threshold_y_set(stmdev_ctx_t *ctx, uint8_t val)
Y-axis tap recognition threshold.[set].
int32_t lsm6dso32_tap_axis_priority_set(stmdev_ctx_t *ctx, lsm6dso32_tap_priority_t val)
Selection of axis priority for TAP detection.[set].
int32_t lsm6dso32_tap_dur_get(stmdev_ctx_t *ctx, uint8_t *val)
When double tap recognition is enabled, this register expresses the maximum time between two consecut...
int32_t lsm6dso32_tap_threshold_z_get(stmdev_ctx_t *ctx, uint8_t *val)
Z-axis recognition threshold.[get].
int32_t lsm6dso32_tilt_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Interrupt status bit for tilt detection.[get].
int32_t lsm6dso32_tilt_sens_set(stmdev_ctx_t *ctx, uint8_t val)
Enable tilt calculation.[set].
int32_t lsm6dso32_tilt_sens_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable tilt calculation.[get].
int32_t lsm6dso32_xl_usr_offset_x_get(stmdev_ctx_t *ctx, uint8_t *buff)
Accelerometer X-axis user offset correction expressed in two’s complement, weight depends on USR_OFF_...
int32_t lsm6dso32_gy_full_scale_set(stmdev_ctx_t *ctx, lsm6dso32_fs_g_t val)
Gyroscope UI chain full-scale selection.[set].
int32_t lsm6dso32_xl_usr_offset_get(stmdev_ctx_t *ctx, uint8_t *val)
User offset on out flag.[get].
int32_t lsm6dso32_xl_usr_offset_z_get(stmdev_ctx_t *ctx, uint8_t *buff)
Accelerometer Z-axis user offset correction expressed in two’s complement, weight depends on USR_OFF_...
int32_t lsm6dso32_xl_offset_weight_set(stmdev_ctx_t *ctx, lsm6dso32_usr_off_w_t val)
Weight of XL user offset bits of registers X_OFS_USR (73h), Y_OFS_USR (74h), Z_OFS_USR (75h)....
int32_t lsm6dso32_xl_full_scale_set(stmdev_ctx_t *ctx, lsm6dso32_fs_xl_t val)
Accelerometer full-scale selection.[set].
int32_t lsm6dso32_block_data_update_set(stmdev_ctx_t *ctx, uint8_t val)
Block data update.[set].
int32_t lsm6dso32_xl_usr_offset_z_set(stmdev_ctx_t *ctx, uint8_t *buff)
Accelerometer Z-axis user offset correction expressed in two’s complement, weight depends on USR_OFF_...
int32_t lsm6dso32_xl_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Accelerometer new data available.[get].
int32_t lsm6dso32_xl_data_rate_set(stmdev_ctx_t *ctx, lsm6dso32_odr_xl_t val)
Accelerometer UI data rate and power mode selection.[set].
int32_t lsm6dso32_xl_usr_offset_y_set(stmdev_ctx_t *ctx, uint8_t *buff)
Accelerometer Y-axis user offset correction expressed in two’s complement, weight depends on USR_OFF_...
int32_t lsm6dso32_xl_full_scale_get(stmdev_ctx_t *ctx, lsm6dso32_fs_xl_t *val)
Accelerometer full-scale selection.[get].
int32_t lsm6dso32_xl_offset_weight_get(stmdev_ctx_t *ctx, lsm6dso32_usr_off_w_t *val)
Weight of XL user offset bits of registers X_OFS_USR (73h), Y_OFS_USR (74h), Z_OFS_USR (75h)....
int32_t lsm6dso32_i3c_disable_set(stmdev_ctx_t *ctx, lsm6dso32_i3c_disable_t val)
I3C Enable/Disable communication protocol[.set].
int32_t lsm6dso32_gy_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Gyroscope new data available.[get].
int32_t lsm6dso32_xl_data_rate_get(stmdev_ctx_t *ctx, lsm6dso32_odr_xl_t *val)
Accelerometer UI data rate selection.[get].
int32_t lsm6dso32_all_sources_get(stmdev_ctx_t *ctx, lsm6dso32_all_sources_t *val)
Read all the interrupt flag of the device.[get].
int32_t lsm6dso32_xl_usr_offset_x_set(stmdev_ctx_t *ctx, uint8_t *buff)
Accelerometer X-axis user offset correction expressed in two’s complement, weight depends on USR_OFF_...
int32_t lsm6dso32_temp_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Temperature new data available.[get].
int32_t lsm6dso32_i3c_disable_get(stmdev_ctx_t *ctx, lsm6dso32_i3c_disable_t *val)
I3C Enable/Disable communication protocol.[get].
int32_t lsm6dso32_gy_data_rate_get(stmdev_ctx_t *ctx, lsm6dso32_odr_g_t *val)
Gyroscope UI data rate selection.[get].
int32_t lsm6dso32_gy_full_scale_get(stmdev_ctx_t *ctx, lsm6dso32_fs_g_t *val)
Gyroscope UI chain full-scale selection.[get].
int32_t lsm6dso32_gy_data_rate_set(stmdev_ctx_t *ctx, lsm6dso32_odr_g_t val)
Gyroscope UI data rate selection.[set].
int32_t lsm6dso32_status_reg_get(stmdev_ctx_t *ctx, lsm6dso32_status_reg_t *val)
The STATUS_REG register is read by the primary interface.[get].
int32_t lsm6dso32_i2c_interface_get(stmdev_ctx_t *ctx, lsm6dso32_i2c_disable_t *val)
Disable / Enable I2C interface.[get].
int32_t lsm6dso32_xl_usr_offset_y_get(stmdev_ctx_t *ctx, uint8_t *buff)
Accelerometer Y-axis user offset correction expressed in two’s complement, weight depends on USR_OFF_...
int32_t lsm6dso32_block_data_update_get(stmdev_ctx_t *ctx, uint8_t *val)
Block data update.[get].
int32_t lsm6dso32_spi_mode_get(stmdev_ctx_t *ctx, lsm6dso32_sim_t *val)
SPI Serial Interface Mode selection.[get].
int32_t lsm6dso32_spi_mode_set(stmdev_ctx_t *ctx, lsm6dso32_sim_t val)
SPI Serial Interface Mode selection.[set].
int32_t lsm6dso32_xl_usr_offset_set(stmdev_ctx_t *ctx, uint8_t val)
Enables user offset on out.[set].
int32_t lsm6dso32_i2c_interface_set(stmdev_ctx_t *ctx, lsm6dso32_i2c_disable_t val)
Disable / Enable I2C interface.[set].
int32_t lsm6dso32_sdo_sa0_mode_get(stmdev_ctx_t *ctx, lsm6dso32_sdo_pu_en_t *val)
Connect/Disconnect SDO/SA0 internal pull-up.[get].
int32_t lsm6dso32_sdo_sa0_mode_set(stmdev_ctx_t *ctx, lsm6dso32_sdo_pu_en_t val)
Connect/Disconnect SDO/SA0 internal pull-up.[set].
#define PROPERTY_ENABLE
#define PROPERTY_DISABLE
This file contains all the functions prototypes for the lsm6dso32_reg.c driver.
#define LSM6DSO32_WAKE_UP_DUR
#define LSM6DSO32_SLV3_SUBADD
#define LSM6DSO32_FSM_LONG_COUNTER_CLEAR
#define LSM6DSO32_CTRL6_C
lsm6dso32_slope_fds_t
@ LSM6DSO32_USE_SLOPE
@ LSM6DSO32_USE_HPF
lsm6dso32_den_lh_t
@ LSM6DSO32_DEN_ACT_HIGH
@ LSM6DSO32_DEN_ACT_LOW
#define LSM6DSO32_MD2_CFG
#define LSM6DSO32_EMB_FUNC_ODR_CFG_B
#define LSM6DSO32_Y_OFS_USR
#define LSM6DSO32_INT2_CTRL
#define LSM6DSO32_FIFO_CTRL4
lsm6dso32_hp_slope_xl_en_t
@ LSM6DSO32_LP_ODR_DIV_10
@ LSM6DSO32_HP_REF_MD_ODR_DIV_10
@ LSM6DSO32_LP_ODR_DIV_100
@ LSM6DSO32_HP_PATH_DISABLE_ON_OUT
@ LSM6DSO32_HP_REF_MD_ODR_DIV_20
@ LSM6DSO32_HP_REF_MD_ODR_DIV_45
@ LSM6DSO32_HP_REF_MD_ODR_DIV_100
@ LSM6DSO32_HP_ODR_DIV_800
@ LSM6DSO32_HP_REF_MD_ODR_DIV_400
@ LSM6DSO32_LP_ODR_DIV_20
@ LSM6DSO32_HP_ODR_DIV_20
@ LSM6DSO32_HP_ODR_DIV_100
@ LSM6DSO32_SLOPE_ODR_DIV_4
@ LSM6DSO32_HP_REF_MD_ODR_DIV_800
@ LSM6DSO32_LP_ODR_DIV_45
@ LSM6DSO32_LP_ODR_DIV_200
@ LSM6DSO32_HP_ODR_DIV_200
@ LSM6DSO32_LP_ODR_DIV_800
@ LSM6DSO32_HP_ODR_DIV_45
@ LSM6DSO32_HP_REF_MD_ODR_DIV_200
@ LSM6DSO32_HP_ODR_DIV_10
@ LSM6DSO32_LP_ODR_DIV_400
@ LSM6DSO32_HP_ODR_DIV_400
#define LSM6DSO32_MAG_CFG_B
#define LSM6DSO32_FSM_ENABLE_A
#define LSM6DSO32_SLV0_SUBADD
#define LSM6DSO32_SLV3_CONFIG
#define LSM6DSO32_FSM_STATUS_A
#define LSM6DSO32_EMB_FUNC_SRC
#define LSM6DSO32_FSM_OUTS1
lsm6dso32_st_xl_t
@ LSM6DSO32_XL_ST_POSITIVE
@ LSM6DSO32_XL_ST_DISABLE
@ LSM6DSO32_XL_ST_NEGATIVE
lsm6dso32_wake_ths_w_t
@ LSM6DSO32_LSb_FS_DIV_64
@ LSM6DSO32_LSb_FS_DIV_256
#define LSM6DSO32_MAG_SI_YY_H
#define LSM6DSO32_COUNTER_BDR_REG2
#define LSM6DSO32_SLV1_SUBADD
#define LSM6DSO32_CTRL1_XL
#define LSM6DSO32_DATAWRITE_SLV0
lsm6dso32_rounding_t
@ LSM6DSO32_ROUND_GY
@ LSM6DSO32_NO_ROUND
@ LSM6DSO32_ROUND_GY_XL
@ LSM6DSO32_ROUND_XL
#define LSM6DSO32_PEDO_SC_DELTAT_L
#define LSM6DSO32_FSM_INT2_B
#define LSM6DSO32_PAGE_SEL
#define LSM6DSO32_SLV3_ADD
#define LSM6DSO32_FSM_LC_TIMEOUT_L
#define LSM6DSO32_FIFO_DATA_OUT_X_L
#define LSM6DSO32_MAG_SI_ZZ_L
#define LSM6DSO32_FIFO_DATA_OUT_TAG
#define LSM6DSO32_PEDO_CMD_REG
#define LSM6DSO32_FIFO_STATUS2
#define LSM6DSO32_MASTER_CONFIG
#define LSM6DSO32_FIFO_CTRL2
#define LSM6DSO32_CTRL7_G
#define LSM6DSO32_SENSOR_HUB_1
lsm6dso32_aux_sens_on_t
@ LSM6DSO32_SLV_0_1_2
@ LSM6DSO32_SLV_0
@ LSM6DSO32_SLV_0_1
@ LSM6DSO32_SLV_0_1_2_3
#define LSM6DSO32_EMB_FUNC_FIFO_CFG
#define LSM6DSO32_INT_DUR2
#define LSM6DSO32_MAG_OFFZ_L
#define LSM6DSO32_FIFO_STATUS1
lsm6dso32_reg_access_t
@ LSM6DSO32_USER_BANK
@ LSM6DSO32_EMBEDDED_FUNC_BANK
@ LSM6DSO32_SENSOR_HUB_BANK
lsm6dso32_sixd_ths_t
@ LSM6DSO32_DEG_68
@ LSM6DSO32_DEG_47
#define LSM6DSO32_PAGE_ADDRESS
#define LSM6DSO32_SLV2_CONFIG
#define LSM6DSO32_CTRL9_XL
#define LSM6DSO32_EMB_FUNC_INT1
#define LSM6DSO32_CTRL2_G
#define LSM6DSO32_STEP_COUNTER_L
#define LSM6DSO32_MAG_SENSITIVITY_L
#define LSM6DSO32_INTERNAL_FREQ_FINE
#define LSM6DSO32_MAG_SENSITIVITY_H
#define LSM6DSO32_COUNTER_BDR_REG1
#define LSM6DSO32_FREE_FALL
#define LSM6DSO32_SLV2_SUBADD
#define LSM6DSO32_TAP_THS_6D
#define LSM6DSO32_FSM_INT1_B
lsm6dso32_h_lactive_t
@ LSM6DSO32_ACTIVE_HIGH
@ LSM6DSO32_ACTIVE_LOW
#define LSM6DSO32_MAG_SI_YZ_L
lsm6dso32_i3c_disable_t
@ LSM6DSO32_I3C_ENABLE_T_25ms
@ LSM6DSO32_I3C_DISABLE
@ LSM6DSO32_I3C_ENABLE_T_2us
@ LSM6DSO32_I3C_ENABLE_T_50us
@ LSM6DSO32_I3C_ENABLE_T_1ms
#define LSM6DSO32_FSM_STATUS_B
lsm6dso32_den_mode_t
@ LSM6DSO32_LEVEL_FIFO
@ LSM6DSO32_EDGE_TRIGGER
@ LSM6DSO32_DEN_DISABLE
@ LSM6DSO32_LEVEL_TRIGGER
@ LSM6DSO32_LEVEL_LETCHED
#define LSM6DSO32_OUT_TEMP_L
#define LSM6DSO32_MD1_CFG
#define LSM6DSO32_SLV0_CONFIG
lsm6dso32_st_g_t
@ LSM6DSO32_GY_ST_NEGATIVE
@ LSM6DSO32_GY_ST_POSITIVE
@ LSM6DSO32_GY_ST_DISABLE
#define LSM6DSO32_WHO_AM_I
#define LSM6DSO32_MAG_OFFY_L
lsm6dso32_tap_priority_t
@ LSM6DSO32_XYZ
@ LSM6DSO32_ZXY
@ LSM6DSO32_YXZ
@ LSM6DSO32_XZY
@ LSM6DSO32_YZX
@ LSM6DSO32_ZYX
#define LSM6DSO32_STATUS_REG
lsm6dso32_mag_x_axis_t
@ LSM6DSO32_X_EQ_X
@ LSM6DSO32_X_EQ_Z
@ LSM6DSO32_X_EQ_MIN_Z
@ LSM6DSO32_X_EQ_Y
@ LSM6DSO32_X_EQ_MIN_X
@ LSM6DSO32_X_EQ_MIN_Y
#define LSM6DSO32_TAP_CFG2
#define LSM6DSO32_WAKE_UP_SRC
#define LSM6DSO32_SLV0_ADD
#define LSM6DSO32_EMB_FUNC_EN_A
#define LSM6DSO32_MAG_SI_ZZ_H
#define LSM6DSO32_OUTX_L_A
lsm6dso32_pedo_md_t
@ LSM6DSO32_PEDO_BASE_MODE
@ LSM6DSO32_PEDO_DISABLE
@ LSM6DSO32_PEDO_ADV_MODE
@ LSM6DSO32_FALSE_STEP_REJ
@ LSM6DSO32_FALSE_STEP_REJ_ADV_MODE
#define LSM6DSO32_SLV1_CONFIG
#define LSM6DSO32_MAG_SI_XZ_L
#define LSM6DSO32_EMB_FUNC_INIT_B
#define LSM6DSO32_ALL_INT_SRC
lsm6dso32_usr_off_w_t
@ LSM6DSO32_LSb_16mg
@ LSM6DSO32_LSb_1mg
#define LSM6DSO32_D6D_SRC
#define LSM6DSO32_I3C_BUS_AVB
lsm6dso32_single_double_tap_t
@ LSM6DSO32_ONLY_SINGLE
@ LSM6DSO32_BOTH_SINGLE_DOUBLE
lsm6dso32_sim_t
@ LSM6DSO32_SPI_4_WIRE
@ LSM6DSO32_SPI_3_WIRE
#define LSM6DSO32_PAGE_VALUE
lsm6dso32_odr_xl_t
@ LSM6DSO32_XL_ODR_3333Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_6667Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_833Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_208Hz_ULTRA_LOW_PW
@ LSM6DSO32_XL_ODR_12Hz5_HIGH_PERF
@ LSM6DSO32_XL_ODR_52Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_417Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_6Hz5_ULTRA_LOW_PW
@ LSM6DSO32_XL_ODR_208Hz_NORMAL_MD
@ LSM6DSO32_XL_ODR_26Hz_LOW_PW
@ LSM6DSO32_XL_ODR_208Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_12Hz5_LOW_PW
@ LSM6DSO32_XL_ODR_104Hz_NORMAL_MD
@ LSM6DSO32_XL_ODR_26Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_52Hz_ULTRA_LOW_PW
@ LSM6DSO32_XL_ODR_12Hz5_ULTRA_LOW_PW
@ LSM6DSO32_XL_ODR_6Hz5_LOW_PW
@ LSM6DSO32_XL_ODR_26Hz_ULTRA_LOW_PW
@ LSM6DSO32_XL_ODR_1667Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_OFF
@ LSM6DSO32_XL_ODR_104Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_52Hz_LOW_PW
@ LSM6DSO32_XL_ODR_104Hz_ULTRA_LOW_PW
lsm6dso32_shub_odr_t
@ LSM6DSO32_SH_ODR_13Hz
@ LSM6DSO32_SH_ODR_26Hz
@ LSM6DSO32_SH_ODR_52Hz
@ LSM6DSO32_SH_ODR_104Hz
#define LSM6DSO32_EMB_FUNC_STATUS
#define LSM6DSO32_MAG_SI_YZ_H
lsm6dso32_sleep_status_on_int_t
@ LSM6DSO32_DRIVE_SLEEP_CHG_EVENT
@ LSM6DSO32_DRIVE_SLEEP_STATUS
#define LSM6DSO32_MAG_SI_XX_H
#define LSM6DSO32_CTRL4_C
#define LSM6DSO32_MAG_CFG_A
#define LSM6DSO32_SLV1_ADD
#define LSM6DSO32_MAG_OFFY_H
#define LSM6DSO32_PAGE_RW
#define LSM6DSO32_CTRL8_XL
lsm6dso32_shub_pu_en_t
@ LSM6DSO32_INTERNAL_PULL_UP
@ LSM6DSO32_EXT_PULL_UP
#define LSM6DSO32_MAG_OFFZ_H
lsm6dso32_start_config_t
@ LSM6DSO32_XL_GY_DRDY
@ LSM6DSO32_EXT_ON_INT2_PIN
lsm6dso32_carry_count_en_t
@ LSM6DSO32_COUNT_OVERFLOW
@ LSM6DSO32_EVERY_STEP
lsm6dso32_write_once_t
@ LSM6DSO32_EACH_SH_CYCLE
@ LSM6DSO32_ONLY_FIRST_CYCLE
#define LSM6DSO32_FSM_INT2_A
#define LSM6DSO32_PIN_CTRL
#define LSM6DSO32_MAG_SI_XY_L
#define LSM6DSO32_FSM_ENABLE_B
#define LSM6DSO32_CTRL10_C
#define LSM6DSO32_TAP_SRC
#define LSM6DSO32_FSM_INT1_A
#define LSM6DSO32_OUTX_L_G
lsm6dso32_sdo_pu_en_t
@ LSM6DSO32_PULL_UP_DISC
@ LSM6DSO32_PULL_UP_CONNECT
#define LSM6DSO32_MAG_OFFX_L
lsm6dso32_lir_t
@ LSM6DSO32_ALL_INT_LATCHED
@ LSM6DSO32_BASE_LATCHED_EMB_PULSED
@ LSM6DSO32_BASE_PULSED_EMB_LATCHED
@ LSM6DSO32_ALL_INT_PULSED
#define LSM6DSO32_FSM_PROGRAMS
#define LSM6DSO32_EMB_FUNC_EN_B
lsm6dso32_ftype_t
@ LSM6DSO32_ULTRA_LIGHT
@ LSM6DSO32_STRONG
@ LSM6DSO32_VERY_STRONG
@ LSM6DSO32_XTREME
@ LSM6DSO32_MEDIUM
@ LSM6DSO32_AGGRESSIVE
@ LSM6DSO32_LIGHT
@ LSM6DSO32_VERY_LIGHT
#define LSM6DSO32_CTRL3_C
lsm6dso32_i2c_disable_t
@ LSM6DSO32_I2C_ENABLE
@ LSM6DSO32_I2C_DISABLE
#define LSM6DSO32_INT1_CTRL
lsm6dso32_mag_z_axis_t
@ LSM6DSO32_Z_EQ_MIN_Z
@ LSM6DSO32_Z_EQ_MIN_X
@ LSM6DSO32_Z_EQ_Z
@ LSM6DSO32_Z_EQ_MIN_Y
@ LSM6DSO32_Z_EQ_Y
@ LSM6DSO32_Z_EQ_X
#define LSM6DSO32_STATUS_MASTER
#define LSM6DSO32_TAP_CFG0
#define LSM6DSO32_Z_OFS_USR
#define LSM6DSO32_WAKE_UP_THS
#define LSM6DSO32_MAG_SI_XY_H
#define LSM6DSO32_FSM_START_ADD_L
#define LSM6DSO32_EMB_FUNC_INT2
lsm6dso32_fs_g_t
@ LSM6DSO32_500dps
@ LSM6DSO32_125dps
@ LSM6DSO32_2000dps
@ LSM6DSO32_1000dps
@ LSM6DSO32_250dps
lsm6dso32_odr_g_t
@ LSM6DSO32_GY_ODR_52Hz_LOW_PW
@ LSM6DSO32_GY_ODR_104Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_12Hz5_LOW_PW
@ LSM6DSO32_GY_ODR_26Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_208Hz_NORMAL_MD
@ LSM6DSO32_GY_ODR_6667Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_104Hz_NORMAL_MD
@ LSM6DSO32_GY_ODR_OFF
@ LSM6DSO32_GY_ODR_52Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_417Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_26Hz_LOW_PW
@ LSM6DSO32_GY_ODR_12Hz5_HIGH_PERF
@ LSM6DSO32_GY_ODR_3333Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_1667Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_833Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_208Hz_HIGH_PERF
#define LSM6DSO32_FIFO_CTRL3
lsm6dso32_dataready_pulsed_t
@ LSM6DSO32_DRDY_LATCHED
@ LSM6DSO32_DRDY_PULSED
#define LSM6DSO32_FIFO_CTRL1
lsm6dso32_int1_pd_en_t
@ LSM6DSO32_PULL_DOWN_CONNECT
@ LSM6DSO32_PULL_DOWN_DISC
#define LSM6DSO32_CTRL5_C
#define LSM6DSO32_PEDO_SC_DELTAT_H
lsm6dso32_mag_y_axis_t
@ LSM6DSO32_Y_EQ_Y
@ LSM6DSO32_Y_EQ_X
@ LSM6DSO32_Y_EQ_Z
@ LSM6DSO32_Y_EQ_MIN_X
@ LSM6DSO32_Y_EQ_MIN_Y
@ LSM6DSO32_Y_EQ_MIN_Z
lsm6dso32_inact_en_t
@ LSM6DSO32_XL_12Hz5_GY_NOT_AFFECTED
@ LSM6DSO32_XL_12Hz5_GY_PD
@ LSM6DSO32_XL_AND_GY_NOT_AFFECTED
@ LSM6DSO32_XL_12Hz5_GY_SLEEP
#define LSM6DSO32_X_OFS_USR
#define LSM6DSO32_FSM_LONG_COUNTER_L
lsm6dso32_fs_xl_t
@ LSM6DSO32_32g
@ LSM6DSO32_16g
@ LSM6DSO32_8g
@ LSM6DSO32_4g
lsm6dso32_den_xl_g_t
@ LSM6DSO32_STAMP_IN_XL_DATA
@ LSM6DSO32_STAMP_IN_GY_DATA
@ LSM6DSO32_STAMP_IN_GY_XL_DATA
#define LSM6DSO32_PEDO_DEB_STEPS_CONF
#define LSM6DSO32_FSM_START_ADD_H
#define LSM6DSO32_MAG_SI_YY_L
#define LSM6DSO32_TIMESTAMP0
#define LSM6DSO32_SLV2_ADD
lsm6dso32_pp_od_t
@ LSM6DSO32_OPEN_DRAIN
@ LSM6DSO32_PUSH_PULL
lsm6dso32_ff_ths_t
@ LSM6DSO32_FF_TSH_500mg
@ LSM6DSO32_FF_TSH_438mg
@ LSM6DSO32_FF_TSH_312mg
#define LSM6DSO32_MAG_SI_XX_L
#define LSM6DSO32_FUNC_CFG_ACCESS
#define LSM6DSO32_TAP_CFG1
#define LSM6DSO32_FSM_LC_TIMEOUT_H
#define LSM6DSO32_MAG_OFFX_H
lsm6dso32_hpm_g_t
@ LSM6DSO32_HP_FILTER_NONE
@ LSM6DSO32_HP_FILTER_16mHz
@ LSM6DSO32_HP_FILTER_1Hz04
@ LSM6DSO32_HP_FILTER_260mHz
@ LSM6DSO32_HP_FILTER_65mHz
#define LSM6DSO32_MAG_SI_XZ_H
: Header for main.c file. This file contains the common defines of the application.
lsm6dso32_all_int_src_t all_int_src
lsm6dso32_emb_func_status_t emb_func_status
lsm6dso32_fsm_status_b_t fsm_status_b
lsm6dso32_d6d_src_t d6d_src
lsm6dso32_wake_up_src_t wake_up_src
lsm6dso32_fsm_status_a_t fsm_status_a
lsm6dso32_status_reg_t status_reg
lsm6dso32_tap_src_t tap_src
lsm6dso32_fsm_enable_a_t fsm_enable_a
lsm6dso32_fsm_enable_b_t fsm_enable_b
lsm6dso32_emb_func_int1_t emb_func_int1
lsm6dso32_int1_ctrl_t int1_ctrl
lsm6dso32_md1_cfg_t md1_cfg
lsm6dso32_fsm_int1_a_t fsm_int1_a
lsm6dso32_fsm_int1_b_t fsm_int1_b
lsm6dso32_int2_ctrl_t int2_ctrl
lsm6dso32_emb_func_int2_t emb_func_int2
lsm6dso32_fsm_int2_b_t fsm_int2_b
lsm6dso32_md2_cfg_t md2_cfg
lsm6dso32_fsm_int2_a_t fsm_int2_a
stmdev_read_ptr read_reg
stmdev_write_ptr write_reg