LibDriver BME688
Loading...
Searching...
No Matches
driver_bme688_register_test.c
Go to the documentation of this file.
1
36
38#include "stdlib.h"
39
40static bme688_handle_t gs_handle;
41
52{
53 uint8_t res;
54 uint8_t reg;
55 uint8_t reg_check;
56 uint8_t i;
57 uint8_t index;
58 uint16_t ms;
59 float degree_celsius;
60 float ma;
61 float ma_check;
62 bme688_info_t info;
63 bme688_address_t addr_pin_check;
64 bme688_interface_t interface_check;
65 bme688_oversampling_t oversampling;
66 bme688_mode_t mode;
67 bme688_filter_t filter;
69 bme688_bool_t enable;
71
72 /* link interface function */
85
86 /* get bme688 info */
87 res = bme688_info(&info);
88 if (res != 0)
89 {
90 bme688_interface_debug_print("bme688: get info failed.\n");
91
92 return 1;
93 }
94 else
95 {
96 /* print bme688 */
97 bme688_interface_debug_print("bme688: chip is %s.\n", info.chip_name);
98 bme688_interface_debug_print("bme688: manufacturer is %s.\n", info.manufacturer_name);
99 bme688_interface_debug_print("bme688: interface is %s.\n", info.interface);
100 bme688_interface_debug_print("bme688: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
101 bme688_interface_debug_print("bme688: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
102 bme688_interface_debug_print("bme688: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
103 bme688_interface_debug_print("bme688: max current is %0.2fmA.\n", info.max_current_ma);
104 bme688_interface_debug_print("bme688: max temperature is %0.1fC.\n", info.temperature_max);
105 bme688_interface_debug_print("bme688: min temperature is %0.1fC.\n", info.temperature_min);
106 }
107
108 /* start register test */
109 bme688_interface_debug_print("bme688: start register test.\n");
110
111 /* bme688_set_interface/bme688_get_interface test */
112 bme688_interface_debug_print("bme688: bme688_set_interface/bme688_get_interface test.\n");
113
114 /* set interface */
116 if (res != 0)
117 {
118 bme688_interface_debug_print("bme688: set interface failed.\n");
119
120 return 1;
121 }
122
123 /* output */
124 bme688_interface_debug_print("bme688: set interface spi.\n");
125
126 /* get interface */
127 res = bme688_get_interface(&gs_handle, &interface_check);
128 if (res != 0)
129 {
130 bme688_interface_debug_print("bme688: get interface failed.\n");
131
132 return 1;
133 }
134 bme688_interface_debug_print("bme688: check interface %s.\n", interface_check == BME688_INTERFACE_SPI ? "ok" : "error");
135
136 /* set interface */
138 if (res != 0)
139 {
140 bme688_interface_debug_print("bme688: set interface failed.\n");
141
142 return 1;
143 }
144
145 /* output */
146 bme688_interface_debug_print("bme688: set interface iic.\n");
147
148 /* get interface */
149 res = bme688_get_interface(&gs_handle, &interface_check);
150 if (res != 0)
151 {
152 bme688_interface_debug_print("bme688: get interface failed.\n");
153
154 return 1;
155 }
156 bme688_interface_debug_print("bme688: check interface %s.\n", interface_check == BME688_INTERFACE_IIC ? "ok" : "error");
157
158 /* bme688_set_addr_pin/bme688_get_addr_pin test */
159 bme688_interface_debug_print("bme688: bme688_set_addr_pin/bme688_get_addr_pin test.\n");
160
161 /* set addr pin low */
163 if (res != 0)
164 {
165 bme688_interface_debug_print("bme688: set addr pin failed.\n");
166
167 return 1;
168 }
169
170 /* output */
171 bme688_interface_debug_print("bme688: set addr pin low.\n");
172
173 /* get addr pin */
174 res = bme688_get_addr_pin(&gs_handle, &addr_pin_check);
175 if (res != 0)
176 {
177 bme688_interface_debug_print("bme688: get addr pin failed.\n");
178
179 return 1;
180 }
181 bme688_interface_debug_print("bme688: check addr pin %s.\n", addr_pin_check == BME688_ADDRESS_ADO_LOW ? "ok" : "error");
182
183 /* set addr pin high */
185 if (res != 0)
186 {
187 bme688_interface_debug_print("bme688: set addr pin failed.\n");
188
189 return 1;
190 }
191
192 /* output */
193 bme688_interface_debug_print("bme688: set addr pin high.\n");
194
195 /* get addr pin */
196 res = bme688_get_addr_pin(&gs_handle, &addr_pin_check);
197 if (res != 0)
198 {
199 bme688_interface_debug_print("bme688: get addr pin failed.\n");
200
201 return 1;
202 }
203 bme688_interface_debug_print("bme688: check addr pin %s.\n", addr_pin_check == BME688_ADDRESS_ADO_HIGH ? "ok" : "error");
204
205 /* set interface */
206 res = bme688_set_interface(&gs_handle, interface);
207 if (res != 0)
208 {
209 bme688_interface_debug_print("bme688: set interface failed.\n");
210
211 return 1;
212 }
213
214 /* set addr pin */
215 res = bme688_set_addr_pin(&gs_handle, addr_pin);
216 if (res != 0)
217 {
218 bme688_interface_debug_print("bme688: set addr pin failed.\n");
219
220 return 1;
221 }
222
223 /* init */
224 res = bme688_init(&gs_handle);
225 if (res != 0)
226 {
227 bme688_interface_debug_print("bme688: init failed.\n");
228
229 return 1;
230 }
231
232 /* bme688_set_temperature_oversampling/bme688_get_temperature_oversampling test */
233 bme688_interface_debug_print("bme688: bme688_set_temperature_oversampling/bme688_get_temperature_oversampling test.\n");
234
235 /* set temperature oversampling skip */
237 if (res != 0)
238 {
239 bme688_interface_debug_print("bme688: set temperature oversampling failed.\n");
240 (void)bme688_deinit(&gs_handle);
241
242 return 1;
243 }
244
245 /* output */
246 bme688_interface_debug_print("bme688: set temperature oversampling skip.\n");
247
248 /* get temperature oversampling */
249 res = bme688_get_temperature_oversampling(&gs_handle, &oversampling);
250 if (res != 0)
251 {
252 bme688_interface_debug_print("bme688: get temperature oversampling failed.\n");
253 (void)bme688_deinit(&gs_handle);
254
255 return 1;
256 }
257 bme688_interface_debug_print("bme688: check temperature oversampling %s.\n", oversampling == BME688_OVERSAMPLING_SKIP ? "ok" : "error");
258
259 /* set temperature oversampling x1 */
261 if (res != 0)
262 {
263 bme688_interface_debug_print("bme688: set temperature oversampling failed.\n");
264 (void)bme688_deinit(&gs_handle);
265
266 return 1;
267 }
268
269 /* output */
270 bme688_interface_debug_print("bme688: set temperature oversampling x1.\n");
271
272 /* get temperature oversampling */
273 res = bme688_get_temperature_oversampling(&gs_handle, &oversampling);
274 if (res != 0)
275 {
276 bme688_interface_debug_print("bme688: get temperature oversampling failed.\n");
277 (void)bme688_deinit(&gs_handle);
278
279 return 1;
280 }
281 bme688_interface_debug_print("bme688: check temperature oversampling %s.\n", oversampling == BME688_OVERSAMPLING_x1 ? "ok" : "error");
282
283 /* set temperature oversampling x2 */
285 if (res != 0)
286 {
287 bme688_interface_debug_print("bme688: set temperature oversampling failed.\n");
288 (void)bme688_deinit(&gs_handle);
289
290 return 1;
291 }
292
293 /* output */
294 bme688_interface_debug_print("bme688: set temperature oversampling x2.\n");
295
296 /* get temperature oversampling */
297 res = bme688_get_temperature_oversampling(&gs_handle, &oversampling);
298 if (res != 0)
299 {
300 bme688_interface_debug_print("bme688: get temperature oversampling failed.\n");
301 (void)bme688_deinit(&gs_handle);
302
303 return 1;
304 }
305 bme688_interface_debug_print("bme688: check temperature oversampling %s.\n", oversampling == BME688_OVERSAMPLING_x2 ? "ok" : "error");
306
307 /* set temperature oversampling x4 */
309 if (res != 0)
310 {
311 bme688_interface_debug_print("bme688: set temperature oversampling failed.\n");
312 (void)bme688_deinit(&gs_handle);
313
314 return 1;
315 }
316
317 /* output */
318 bme688_interface_debug_print("bme688: set temperature oversampling x4.\n");
319
320 /* get temperature oversampling */
321 res = bme688_get_temperature_oversampling(&gs_handle, &oversampling);
322 if (res != 0)
323 {
324 bme688_interface_debug_print("bme688: get temperature oversampling failed.\n");
325 (void)bme688_deinit(&gs_handle);
326
327 return 1;
328 }
329 bme688_interface_debug_print("bme688: check temperature oversampling %s.\n", oversampling == BME688_OVERSAMPLING_x4 ? "ok" : "error");
330
331 /* set temperature oversampling x8 */
333 if (res != 0)
334 {
335 bme688_interface_debug_print("bme688: set temperature oversampling failed.\n");
336 (void)bme688_deinit(&gs_handle);
337
338 return 1;
339 }
340
341 /* output */
342 bme688_interface_debug_print("bme688: set temperature oversampling x8.\n");
343
344 /* get temperature oversampling */
345 res = bme688_get_temperature_oversampling(&gs_handle, &oversampling);
346 if (res != 0)
347 {
348 bme688_interface_debug_print("bme688: get temperature oversampling failed.\n");
349 (void)bme688_deinit(&gs_handle);
350
351 return 1;
352 }
353 bme688_interface_debug_print("bme688: check temperature oversampling %s.\n", oversampling == BME688_OVERSAMPLING_x8 ? "ok" : "error");
354
355 /* set temperature oversampling x16 */
357 if (res != 0)
358 {
359 bme688_interface_debug_print("bme688: set temperature oversampling failed.\n");
360 (void)bme688_deinit(&gs_handle);
361
362 return 1;
363 }
364
365 /* output */
366 bme688_interface_debug_print("bme688: set temperature oversampling x16.\n");
367
368 /* get temperature oversampling */
369 res = bme688_get_temperature_oversampling(&gs_handle, &oversampling);
370 if (res != 0)
371 {
372 bme688_interface_debug_print("bme688: get temperature oversampling failed.\n");
373 (void)bme688_deinit(&gs_handle);
374
375 return 1;
376 }
377 bme688_interface_debug_print("bme688: check temperature oversampling %s.\n", oversampling == BME688_OVERSAMPLING_x16 ? "ok" : "error");
378
379 /* bme688_set_pressure_oversampling/bme688_get_pressure_oversampling test */
380 bme688_interface_debug_print("bme688: bme688_set_pressure_oversampling/bme688_get_pressure_oversampling test.\n");
381
382 /* set pressure oversampling skip */
384 if (res != 0)
385 {
386 bme688_interface_debug_print("bme688: set pressure oversampling failed.\n");
387 (void)bme688_deinit(&gs_handle);
388
389 return 1;
390 }
391
392 /* output */
393 bme688_interface_debug_print("bme688: set pressure oversampling skip.\n");
394
395 /* get pressure oversampling */
396 res = bme688_get_pressure_oversampling(&gs_handle, &oversampling);
397 if (res != 0)
398 {
399 bme688_interface_debug_print("bme688: get pressure oversampling failed.\n");
400 (void)bme688_deinit(&gs_handle);
401
402 return 1;
403 }
404 bme688_interface_debug_print("bme688: check pressure oversampling %s.\n", oversampling == BME688_OVERSAMPLING_SKIP ? "ok" : "error");
405
406 /* set pressure oversampling x1 */
408 if (res != 0)
409 {
410 bme688_interface_debug_print("bme688: set pressure oversampling failed.\n");
411 (void)bme688_deinit(&gs_handle);
412
413 return 1;
414 }
415
416 /* output */
417 bme688_interface_debug_print("bme688: set pressure oversampling x1.\n");
418
419 /* get pressure oversampling */
420 res = bme688_get_pressure_oversampling(&gs_handle, &oversampling);
421 if (res != 0)
422 {
423 bme688_interface_debug_print("bme688: get pressure oversampling failed.\n");
424 (void)bme688_deinit(&gs_handle);
425
426 return 1;
427 }
428 bme688_interface_debug_print("bme688: check pressure oversampling %s.\n", oversampling == BME688_OVERSAMPLING_x1 ? "ok" : "error");
429
430 /* set pressure oversampling x2 */
432 if (res != 0)
433 {
434 bme688_interface_debug_print("bme688: set pressure oversampling failed.\n");
435 (void)bme688_deinit(&gs_handle);
436
437 return 1;
438 }
439
440 /* output */
441 bme688_interface_debug_print("bme688: set pressure oversampling x2.\n");
442
443 /* get pressure oversampling */
444 res = bme688_get_pressure_oversampling(&gs_handle, &oversampling);
445 if (res != 0)
446 {
447 bme688_interface_debug_print("bme688: get pressure oversampling failed.\n");
448 (void)bme688_deinit(&gs_handle);
449
450 return 1;
451 }
452 bme688_interface_debug_print("bme688: check pressure oversampling %s.\n", oversampling == BME688_OVERSAMPLING_x2 ? "ok" : "error");
453
454 /* set pressure oversampling x4 */
456 if (res != 0)
457 {
458 bme688_interface_debug_print("bme688: set pressure oversampling failed.\n");
459 (void)bme688_deinit(&gs_handle);
460
461 return 1;
462 }
463
464 /* output */
465 bme688_interface_debug_print("bme688: set pressure oversampling x4.\n");
466
467 /* get pressure oversampling */
468 res = bme688_get_pressure_oversampling(&gs_handle, &oversampling);
469 if (res != 0)
470 {
471 bme688_interface_debug_print("bme688: get pressure oversampling failed.\n");
472 (void)bme688_deinit(&gs_handle);
473
474 return 1;
475 }
476 bme688_interface_debug_print("bme688: check pressure oversampling %s.\n", oversampling == BME688_OVERSAMPLING_x4 ? "ok" : "error");
477
478 /* set pressure oversampling x8 */
480 if (res != 0)
481 {
482 bme688_interface_debug_print("bme688: set pressure oversampling failed.\n");
483 (void)bme688_deinit(&gs_handle);
484
485 return 1;
486 }
487
488 /* output */
489 bme688_interface_debug_print("bme688: set pressure oversampling x8.\n");
490
491 /* get pressure oversampling */
492 res = bme688_get_pressure_oversampling(&gs_handle, &oversampling);
493 if (res != 0)
494 {
495 bme688_interface_debug_print("bme688: get pressure oversampling failed.\n");
496 (void)bme688_deinit(&gs_handle);
497
498 return 1;
499 }
500 bme688_interface_debug_print("bme688: check pressure oversampling %s.\n", oversampling == BME688_OVERSAMPLING_x8 ? "ok" : "error");
501
502 /* set pressure oversampling x16 */
504 if (res != 0)
505 {
506 bme688_interface_debug_print("bme688: set pressure oversampling failed.\n");
507 (void)bme688_deinit(&gs_handle);
508
509 return 1;
510 }
511
512 /* output */
513 bme688_interface_debug_print("bme688: set pressure oversampling x16.\n");
514
515 /* get pressure oversampling */
516 res = bme688_get_pressure_oversampling(&gs_handle, &oversampling);
517 if (res != 0)
518 {
519 bme688_interface_debug_print("bme688: get pressure oversampling failed.\n");
520 (void)bme688_deinit(&gs_handle);
521
522 return 1;
523 }
524 bme688_interface_debug_print("bme688: check pressure oversampling %s.\n", oversampling == BME688_OVERSAMPLING_x16 ? "ok" : "error");
525
526 /* bme688_set_humidity_oversampling/bme688_get_humidity_oversampling test */
527 bme688_interface_debug_print("bme688: bme688_set_humidity_oversampling/bme688_get_humidity_oversampling test.\n");
528
529 /* set humidity oversampling skip */
531 if (res != 0)
532 {
533 bme688_interface_debug_print("bme688: set humidity oversampling failed.\n");
534 (void)bme688_deinit(&gs_handle);
535
536 return 1;
537 }
538
539 /* output */
540 bme688_interface_debug_print("bme688: set humidity oversampling skip.\n");
541
542 /* get humidity oversampling */
543 res = bme688_get_humidity_oversampling(&gs_handle, &oversampling);
544 if (res != 0)
545 {
546 bme688_interface_debug_print("bme688: get humidity oversampling failed.\n");
547 (void)bme688_deinit(&gs_handle);
548
549 return 1;
550 }
551 bme688_interface_debug_print("bme688: check humidity oversampling %s.\n", oversampling == BME688_OVERSAMPLING_SKIP ? "ok" : "error");
552
553 /* set humidity oversampling x1 */
555 if (res != 0)
556 {
557 bme688_interface_debug_print("bme688: set humidity oversampling failed.\n");
558 (void)bme688_deinit(&gs_handle);
559
560 return 1;
561 }
562
563 /* output */
564 bme688_interface_debug_print("bme688: set humidity oversampling x1.\n");
565
566 /* get humidity oversampling */
567 res = bme688_get_humidity_oversampling(&gs_handle, &oversampling);
568 if (res != 0)
569 {
570 bme688_interface_debug_print("bme688: get humidity oversampling failed.\n");
571 (void)bme688_deinit(&gs_handle);
572
573 return 1;
574 }
575 bme688_interface_debug_print("bme688: check humidity oversampling %s.\n", oversampling == BME688_OVERSAMPLING_x1 ? "ok" : "error");
576
577 /* set humidity oversampling x2 */
579 if (res != 0)
580 {
581 bme688_interface_debug_print("bme688: set humidity oversampling failed.\n");
582 (void)bme688_deinit(&gs_handle);
583
584 return 1;
585 }
586
587 /* output */
588 bme688_interface_debug_print("bme688: set humidity oversampling x2.\n");
589
590 /* get humidity oversampling */
591 res = bme688_get_humidity_oversampling(&gs_handle, &oversampling);
592 if (res != 0)
593 {
594 bme688_interface_debug_print("bme688: get humidity oversampling failed.\n");
595 (void)bme688_deinit(&gs_handle);
596
597 return 1;
598 }
599 bme688_interface_debug_print("bme688: check humidity oversampling %s.\n", oversampling == BME688_OVERSAMPLING_x2 ? "ok" : "error");
600
601 /* set humidity oversampling x4 */
603 if (res != 0)
604 {
605 bme688_interface_debug_print("bme688: set humidity oversampling failed.\n");
606 (void)bme688_deinit(&gs_handle);
607
608 return 1;
609 }
610
611 /* output */
612 bme688_interface_debug_print("bme688: set humidity oversampling x4.\n");
613
614 /* get humidity oversampling */
615 res = bme688_get_humidity_oversampling(&gs_handle, &oversampling);
616 if (res != 0)
617 {
618 bme688_interface_debug_print("bme688: get humidity oversampling failed.\n");
619 (void)bme688_deinit(&gs_handle);
620
621 return 1;
622 }
623 bme688_interface_debug_print("bme688: check humidity oversampling %s.\n", oversampling == BME688_OVERSAMPLING_x4 ? "ok" : "error");
624
625 /* set humidity oversampling x8 */
627 if (res != 0)
628 {
629 bme688_interface_debug_print("bme688: set humidity oversampling failed.\n");
630 (void)bme688_deinit(&gs_handle);
631
632 return 1;
633 }
634
635 /* output */
636 bme688_interface_debug_print("bme688: set humidity oversampling x8.\n");
637
638 /* get humidity oversampling */
639 res = bme688_get_humidity_oversampling(&gs_handle, &oversampling);
640 if (res != 0)
641 {
642 bme688_interface_debug_print("bme688: get humidity oversampling failed.\n");
643 (void)bme688_deinit(&gs_handle);
644
645 return 1;
646 }
647 bme688_interface_debug_print("bme688: check humidity oversampling %s.\n", oversampling == BME688_OVERSAMPLING_x8 ? "ok" : "error");
648
649 /* set humidity oversampling x16 */
651 if (res != 0)
652 {
653 bme688_interface_debug_print("bme688: set humidity oversampling failed.\n");
654 (void)bme688_deinit(&gs_handle);
655
656 return 1;
657 }
658
659 /* output */
660 bme688_interface_debug_print("bme688: set humidity oversampling x16.\n");
661
662 /* get humidity oversampling */
663 res = bme688_get_humidity_oversampling(&gs_handle, &oversampling);
664 if (res != 0)
665 {
666 bme688_interface_debug_print("bme688: get humidity oversampling failed.\n");
667 (void)bme688_deinit(&gs_handle);
668
669 return 1;
670 }
671 bme688_interface_debug_print("bme688: check humidity oversampling %s.\n", oversampling == BME688_OVERSAMPLING_x16 ? "ok" : "error");
672
673 /* bme688_set_mode/bme688_get_mode test */
674 bme688_interface_debug_print("bme688: bme688_set_mode/bme688_get_mode test.\n");
675
676 /* set mode forced */
677 res = bme688_set_mode(&gs_handle, BME688_MODE_FORCED);
678 if (res != 0)
679 {
680 bme688_interface_debug_print("bme688: set mode failed.\n");
681 (void)bme688_deinit(&gs_handle);
682
683 return 1;
684 }
685
686 /* output */
687 bme688_interface_debug_print("bme688: set mode forced.\n");
688
689 res = bme688_get_mode(&gs_handle, &mode);
690 if (res != 0)
691 {
692 bme688_interface_debug_print("bme688: get mode failed.\n");
693 (void)bme688_deinit(&gs_handle);
694
695 return 1;
696 }
697 bme688_interface_debug_print("bme688: check mode %s.\n", mode == BME688_MODE_FORCED ? "ok" : "error");
698
699 /* set mode parallel */
700 res = bme688_set_mode(&gs_handle, BME688_MODE_PARALLEL);
701 if (res != 0)
702 {
703 bme688_interface_debug_print("bme688: set mode failed.\n");
704 (void)bme688_deinit(&gs_handle);
705
706 return 1;
707 }
708
709 /* output */
710 bme688_interface_debug_print("bme688: set mode parallel.\n");
711
712 res = bme688_get_mode(&gs_handle, &mode);
713 if (res != 0)
714 {
715 bme688_interface_debug_print("bme688: get mode failed.\n");
716 (void)bme688_deinit(&gs_handle);
717
718 return 1;
719 }
720 bme688_interface_debug_print("bme688: check mode %s.\n", mode == BME688_MODE_PARALLEL ? "ok" : "error");
721
722 /* delay 200ms */
724
725 /* set mode sleep */
726 res = bme688_set_mode(&gs_handle, BME688_MODE_SLEEP);
727 if (res != 0)
728 {
729 bme688_interface_debug_print("bme688: set mode failed.\n");
730 (void)bme688_deinit(&gs_handle);
731
732 return 1;
733 }
734
735 /* output */
736 bme688_interface_debug_print("bme688: set mode sleep.\n");
737
738 res = bme688_get_mode(&gs_handle, &mode);
739 if (res != 0)
740 {
741 bme688_interface_debug_print("bme688: get mode failed.\n");
742 (void)bme688_deinit(&gs_handle);
743
744 return 1;
745 }
746 bme688_interface_debug_print("bme688: check mode %s.\n", mode == BME688_MODE_SLEEP ? "ok" : "error");
747
748 /* bme688_set_filter/bme688_get_filter test */
749 bme688_interface_debug_print("bme688: bme688_set_filter/bme688_get_filter test.\n");
750
751 /* set filter off */
752 res = bme688_set_filter(&gs_handle, BME688_FILTER_OFF);
753 if (res != 0)
754 {
755 bme688_interface_debug_print("bme688: set filter failed.\n");
756 (void)bme688_deinit(&gs_handle);
757
758 return 1;
759 }
760
761 /* output */
762 bme688_interface_debug_print("bme688: set filter off.\n");
763
764 /* get filter */
765 res = bme688_get_filter(&gs_handle, &filter);
766 if (res != 0)
767 {
768 bme688_interface_debug_print("bme688: get filter failed.\n");
769 (void)bme688_deinit(&gs_handle);
770
771 return 1;
772 }
773 bme688_interface_debug_print("bme688: check filter %s.\n", filter == BME688_FILTER_OFF ? "ok" : "error");
774
775 /* set filter coeff 1 */
776 res = bme688_set_filter(&gs_handle, BME688_FILTER_COEFF_1);
777 if (res != 0)
778 {
779 bme688_interface_debug_print("bme688: set filter failed.\n");
780 (void)bme688_deinit(&gs_handle);
781
782 return 1;
783 }
784
785 /* output */
786 bme688_interface_debug_print("bme688: set filter coeff 1.\n");
787
788 /* get filter */
789 res = bme688_get_filter(&gs_handle, &filter);
790 if (res != 0)
791 {
792 bme688_interface_debug_print("bme688: get filter failed.\n");
793 (void)bme688_deinit(&gs_handle);
794
795 return 1;
796 }
797 bme688_interface_debug_print("bme688: check filter %s.\n", filter == BME688_FILTER_COEFF_1 ? "ok" : "error");
798
799 /* set filter coeff 3 */
800 res = bme688_set_filter(&gs_handle, BME688_FILTER_COEFF_3);
801 if (res != 0)
802 {
803 bme688_interface_debug_print("bme688: set filter failed.\n");
804 (void)bme688_deinit(&gs_handle);
805
806 return 1;
807 }
808
809 /* output */
810 bme688_interface_debug_print("bme688: set filter coeff 3.\n");
811
812 /* get filter */
813 res = bme688_get_filter(&gs_handle, &filter);
814 if (res != 0)
815 {
816 bme688_interface_debug_print("bme688: get filter failed.\n");
817 (void)bme688_deinit(&gs_handle);
818
819 return 1;
820 }
821 bme688_interface_debug_print("bme688: check filter %s.\n", filter == BME688_FILTER_COEFF_3 ? "ok" : "error");
822
823 /* set filter coeff 7 */
824 res = bme688_set_filter(&gs_handle, BME688_FILTER_COEFF_7);
825 if (res != 0)
826 {
827 bme688_interface_debug_print("bme688: set filter failed.\n");
828 (void)bme688_deinit(&gs_handle);
829
830 return 1;
831 }
832
833 /* output */
834 bme688_interface_debug_print("bme688: set filter coeff 7.\n");
835
836 /* get filter */
837 res = bme688_get_filter(&gs_handle, &filter);
838 if (res != 0)
839 {
840 bme688_interface_debug_print("bme688: get filter failed.\n");
841 (void)bme688_deinit(&gs_handle);
842
843 return 1;
844 }
845 bme688_interface_debug_print("bme688: check filter %s.\n", filter == BME688_FILTER_COEFF_7 ? "ok" : "error");
846
847 /* set filter coeff 15 */
848 res = bme688_set_filter(&gs_handle, BME688_FILTER_COEFF_15);
849 if (res != 0)
850 {
851 bme688_interface_debug_print("bme688: set filter failed.\n");
852 (void)bme688_deinit(&gs_handle);
853
854 return 1;
855 }
856
857 /* output */
858 bme688_interface_debug_print("bme688: set filter coeff 15.\n");
859
860 /* get filter */
861 res = bme688_get_filter(&gs_handle, &filter);
862 if (res != 0)
863 {
864 bme688_interface_debug_print("bme688: get filter failed.\n");
865 (void)bme688_deinit(&gs_handle);
866
867 return 1;
868 }
869 bme688_interface_debug_print("bme688: check filter %s.\n", filter == BME688_FILTER_COEFF_15 ? "ok" : "error");
870
871 /* set filter coeff 31 */
872 res = bme688_set_filter(&gs_handle, BME688_FILTER_COEFF_31);
873 if (res != 0)
874 {
875 bme688_interface_debug_print("bme688: set filter failed.\n");
876 (void)bme688_deinit(&gs_handle);
877
878 return 1;
879 }
880
881 /* output */
882 bme688_interface_debug_print("bme688: set filter coeff 31.\n");
883
884 /* get filter */
885 res = bme688_get_filter(&gs_handle, &filter);
886 if (res != 0)
887 {
888 bme688_interface_debug_print("bme688: get filter failed.\n");
889 (void)bme688_deinit(&gs_handle);
890
891 return 1;
892 }
893 bme688_interface_debug_print("bme688: check filter %s.\n", filter == BME688_FILTER_COEFF_31 ? "ok" : "error");
894
895 /* set filter coeff 63 */
896 res = bme688_set_filter(&gs_handle, BME688_FILTER_COEFF_63);
897 if (res != 0)
898 {
899 bme688_interface_debug_print("bme688: set filter failed.\n");
900 (void)bme688_deinit(&gs_handle);
901
902 return 1;
903 }
904
905 /* output */
906 bme688_interface_debug_print("bme688: set filter coeff 63.\n");
907
908 /* get filter */
909 res = bme688_get_filter(&gs_handle, &filter);
910 if (res != 0)
911 {
912 bme688_interface_debug_print("bme688: get filter failed.\n");
913 (void)bme688_deinit(&gs_handle);
914
915 return 1;
916 }
917 bme688_interface_debug_print("bme688: check filter %s.\n", filter == BME688_FILTER_COEFF_63 ? "ok" : "error");
918
919 /* set filter coeff 127 */
921 if (res != 0)
922 {
923 bme688_interface_debug_print("bme688: set filter failed.\n");
924 (void)bme688_deinit(&gs_handle);
925
926 return 1;
927 }
928
929 /* output */
930 bme688_interface_debug_print("bme688: set filter coeff 127.\n");
931
932 /* get filter */
933 res = bme688_get_filter(&gs_handle, &filter);
934 if (res != 0)
935 {
936 bme688_interface_debug_print("bme688: get filter failed.\n");
937 (void)bme688_deinit(&gs_handle);
938
939 return 1;
940 }
941 bme688_interface_debug_print("bme688: check filter %s.\n", filter == BME688_FILTER_COEFF_127 ? "ok" : "error");
942
943 /* if iic interface */
944 if (interface == BME688_INTERFACE_IIC)
945 {
946 /* bme688_set_spi_wire/bme688_get_spi_wire test */
947 bme688_interface_debug_print("bme688: bme688_set_spi_wire/bme688_get_spi_wire test.\n");
948
949 /* set spi wire3 */
950 res = bme688_set_spi_wire(&gs_handle, BME688_SPI_WIRE_3);
951 if (res != 0)
952 {
953 bme688_interface_debug_print("bme688: set spi wire failed.\n");
954 (void)bme688_deinit(&gs_handle);
955
956 return 1;
957 }
958
959 /* output */
960 bme688_interface_debug_print("bme688: set spi wire 3.\n");
961
962 /* get spi wire */
963 res = bme688_get_spi_wire(&gs_handle, &spi);
964 if (res != 0)
965 {
966 bme688_interface_debug_print("bme688: get spi wire failed.\n");
967 (void)bme688_deinit(&gs_handle);
968
969 return 1;
970 }
971 bme688_interface_debug_print("bme688: check spi wire %s.\n", spi == BME688_SPI_WIRE_3 ? "ok" : "error");
972
973 /* set spi wire4 */
974 res = bme688_set_spi_wire(&gs_handle, BME688_SPI_WIRE_4);
975 if (res != 0)
976 {
977 bme688_interface_debug_print("bme688: set spi wire failed.\n");
978 (void)bme688_deinit(&gs_handle);
979
980 return 1;
981 }
982
983 /* output */
984 bme688_interface_debug_print("bme688: set spi wire 4.\n");
985
986 /* get spi wire */
987 res = bme688_get_spi_wire(&gs_handle, &spi);
988 if (res != 0)
989 {
990 bme688_interface_debug_print("bme688: get spi wire failed.\n");
991 (void)bme688_deinit(&gs_handle);
992
993 return 1;
994 }
995 bme688_interface_debug_print("bme688: check spi wire %s.\n", spi == BME688_SPI_WIRE_4 ? "ok" : "error");
996 }
997
998 /* bme688_set_spi_wire_3_data_interrupt/bme688_get_spi_wire_3_data_interrupt test */
999 bme688_interface_debug_print("bme688: bme688_set_spi_wire_3_data_interrupt/bme688_get_spi_wire_3_data_interrupt test.\n");
1000
1001 /* enable spi wire 3 data interrupt */
1003 if (res != 0)
1004 {
1005 bme688_interface_debug_print("bme688: set spi wire 3 data interrupt failed.\n");
1006 (void)bme688_deinit(&gs_handle);
1007
1008 return 1;
1009 }
1010 bme688_interface_debug_print("bme688: enable spi wire 3 data interrupt.\n");
1011 res = bme688_get_spi_wire_3_data_interrupt(&gs_handle, &enable);
1012 if (res != 0)
1013 {
1014 bme688_interface_debug_print("bme688: get spi wire 3 data interrupt failed.\n");
1015 (void)bme688_deinit(&gs_handle);
1016
1017 return 1;
1018 }
1019 bme688_interface_debug_print("bme688: check spi wire 3 data interrupt %s.\n", enable == BME688_BOOL_TRUE ? "ok" : "error");
1020
1021 /* disable spi wire 3 data interrupt */
1023 if (res != 0)
1024 {
1025 bme688_interface_debug_print("bme688: set spi wire 3 data interrupt failed.\n");
1026 (void)bme688_deinit(&gs_handle);
1027
1028 return 1;
1029 }
1030 bme688_interface_debug_print("bme688: disable spi wire 3 data interrupt.\n");
1031 res = bme688_get_spi_wire_3_data_interrupt(&gs_handle, &enable);
1032 if (res != 0)
1033 {
1034 bme688_interface_debug_print("bme688: get spi wire 3 data interrupt failed.\n");
1035 (void)bme688_deinit(&gs_handle);
1036
1037 return 1;
1038 }
1039 bme688_interface_debug_print("bme688: check spi wire 3 data interrupt %s.\n", enable == BME688_BOOL_FALSE ? "ok" : "error");
1040
1041 for (i = 0; i < 3; i++)
1042 {
1043 bme688_section_t section;
1044
1045 /* set section */
1046 if (i == 0)
1047 {
1048 section = BME688_SECTION_0;
1049 }
1050 else if (i == 1)
1051 {
1052 section = BME688_SECTION_1;
1053 }
1054 else
1055 {
1056 section = BME688_SECTION_2;
1057 }
1058
1059 /* set section */
1060 bme688_interface_debug_print("bme688: set section %d.\n", i);
1061
1062 /* bme688_get_new_data_status test */
1063 bme688_interface_debug_print("bme688: bme688_get_new_data_status test.\n");
1064
1065 /* get new data status */
1066 res = bme688_get_new_data_status(&gs_handle, section, &enable);
1067 if (res != 0)
1068 {
1069 bme688_interface_debug_print("bme688: get new data status failed.\n");
1070 (void)bme688_deinit(&gs_handle);
1071
1072 return 1;
1073 }
1074 bme688_interface_debug_print("bme688: new data status is %s.\n", enable == BME688_BOOL_TRUE ? "true" : "false");
1075
1076 /* bme688_get_gas_measuring_status test */
1077 bme688_interface_debug_print("bme688: bme688_get_gas_measuring_status test.\n");
1078
1079 /* get gas measuring status */
1080 res = bme688_get_gas_measuring_status(&gs_handle, section, &enable);
1081 if (res != 0)
1082 {
1083 bme688_interface_debug_print("bme688: get gas measuring status failed.\n");
1084 (void)bme688_deinit(&gs_handle);
1085
1086 return 1;
1087 }
1088 bme688_interface_debug_print("bme688: gas measuring status is %s.\n", enable == BME688_BOOL_TRUE ? "true" : "false");
1089
1090 /* bme688_get_measuring_status test */
1091 bme688_interface_debug_print("bme688: bme688_get_measuring_status test.\n");
1092
1093 /* get measuring status */
1094 res = bme688_get_measuring_status(&gs_handle, section, &enable);
1095 if (res != 0)
1096 {
1097 bme688_interface_debug_print("bme688: get measuring status failed.\n");
1098 (void)bme688_deinit(&gs_handle);
1099
1100 return 1;
1101 }
1102 bme688_interface_debug_print("bme688: get measuring status is %s.\n", enable == BME688_BOOL_TRUE ? "true" : "false");
1103
1104 /* bme688_get_gas_measuring_index test */
1105 bme688_interface_debug_print("bme688: bme688_get_gas_measuring_index test.\n");
1106
1107 /* get gas measuring index */
1108 res = bme688_get_gas_measuring_index(&gs_handle, section, &index);
1109 if (res != 0)
1110 {
1111 bme688_interface_debug_print("bme688: get gas measuring index failed.\n");
1112 (void)bme688_deinit(&gs_handle);
1113
1114 return 1;
1115 }
1116 bme688_interface_debug_print("bme688: gas measuring index is 0x%02X.\n", index);
1117
1118 /* bme688_get_gas_valid_status test */
1119 bme688_interface_debug_print("bme688: bme688_get_gas_valid_status test.\n");
1120
1121 /* get gas valid status */
1122 res = bme688_get_gas_valid_status(&gs_handle, section, &enable);
1123 if (res != 0)
1124 {
1125 bme688_interface_debug_print("bme688: get gas valid status failed.\n");
1126 (void)bme688_deinit(&gs_handle);
1127
1128 return 1;
1129 }
1130 bme688_interface_debug_print("bme688: gas valid status is %s.\n", enable == BME688_BOOL_TRUE ? "true" : "false");
1131
1132 /* bme688_get_heater_stability_status test */
1133 bme688_interface_debug_print("bme688: bme688_get_heater_stability_status test.\n");
1134
1135 /* get heater stability status */
1136 res = bme688_get_heater_stability_status(&gs_handle, section, &enable);
1137 if (res != 0)
1138 {
1139 bme688_interface_debug_print("bme688: get heater stability status failed.\n");
1140 (void)bme688_deinit(&gs_handle);
1141
1142 return 1;
1143 }
1144 bme688_interface_debug_print("bme688: heater stability status is %s.\n", enable == BME688_BOOL_TRUE ? "true" : "false");
1145 }
1146
1147 /* bme688_set_heater_off/bme688_get_heater_off test */
1148 bme688_interface_debug_print("bme688: bme688_set_heater_off/bme688_get_heater_off test.\n");
1149
1150 /* disable heater off */
1151 res = bme688_set_heater_off(&gs_handle, BME688_BOOL_FALSE);
1152 if (res != 0)
1153 {
1154 bme688_interface_debug_print("bme688: set heater off failed.\n");
1155 (void)bme688_deinit(&gs_handle);
1156
1157 return 1;
1158 }
1159 bme688_interface_debug_print("bme688: disable heater off.\n");
1160 res = bme688_get_heater_off(&gs_handle, &enable);
1161 if (res != 0)
1162 {
1163 bme688_interface_debug_print("bme688: get heater off failed.\n");
1164 (void)bme688_deinit(&gs_handle);
1165
1166 return 1;
1167 }
1168 bme688_interface_debug_print("bme688: check heater off %s.\n", enable == BME688_BOOL_FALSE ? "ok" : "error");
1169
1170 /* enable heater off */
1171 res = bme688_set_heater_off(&gs_handle, BME688_BOOL_TRUE);
1172 if (res != 0)
1173 {
1174 bme688_interface_debug_print("bme688: set heater off failed.\n");
1175 (void)bme688_deinit(&gs_handle);
1176
1177 return 1;
1178 }
1179 bme688_interface_debug_print("bme688: enable heater off.\n");
1180 res = bme688_get_heater_off(&gs_handle, &enable);
1181 if (res != 0)
1182 {
1183 bme688_interface_debug_print("bme688: get heater off failed.\n");
1184 (void)bme688_deinit(&gs_handle);
1185
1186 return 1;
1187 }
1188 bme688_interface_debug_print("bme688: check heater off %s.\n", enable == BME688_BOOL_TRUE ? "ok" : "error");
1189
1190 /* bme688_set_run_gas/bme688_get_run_gas test */
1191 bme688_interface_debug_print("bme688: bme688_set_run_gas/bme688_get_run_gas test.\n");
1192
1193 /* enable run gas */
1194 res = bme688_set_run_gas(&gs_handle, BME688_BOOL_TRUE);
1195 if (res != 0)
1196 {
1197 bme688_interface_debug_print("bme688: set run gas failed.\n");
1198 (void)bme688_deinit(&gs_handle);
1199
1200 return 1;
1201 }
1202 bme688_interface_debug_print("bme688: enable run gas.\n");
1203 res = bme688_get_run_gas(&gs_handle, &enable);
1204 if (res != 0)
1205 {
1206 bme688_interface_debug_print("bme688: get run gas failed.\n");
1207 (void)bme688_deinit(&gs_handle);
1208
1209 return 1;
1210 }
1211 bme688_interface_debug_print("bme688: check run gas %s.\n", enable == BME688_BOOL_TRUE ? "ok" : "error");
1212
1213 /* disable run gas */
1214 res = bme688_set_run_gas(&gs_handle, BME688_BOOL_FALSE);
1215 if (res != 0)
1216 {
1217 bme688_interface_debug_print("bme688: set run gas failed.\n");
1218 (void)bme688_deinit(&gs_handle);
1219
1220 return 1;
1221 }
1222 bme688_interface_debug_print("bme688: disable run gas.\n");
1223 res = bme688_get_run_gas(&gs_handle, &enable);
1224 if (res != 0)
1225 {
1226 bme688_interface_debug_print("bme688: get run gas failed.\n");
1227 (void)bme688_deinit(&gs_handle);
1228
1229 return 1;
1230 }
1231 bme688_interface_debug_print("bme688: check run gas %s.\n", enable == BME688_BOOL_FALSE ? "ok" : "error");
1232
1233 /* bme688_set_heater_profile/bme688_get_heater_profile test */
1234 bme688_interface_debug_print("bme688: bme688_set_heater_profile/bme688_get_heater_profile test.\n");
1235
1236 /* set heater profile */
1238 if (res != 0)
1239 {
1240 bme688_interface_debug_print("bme688: set heater profile failed.\n");
1241 (void)bme688_deinit(&gs_handle);
1242
1243 return 1;
1244 }
1245 bme688_interface_debug_print("bme688: set heater profile forced mode step 0, parallel mode no step.\n");
1246 res = bme688_get_heater_profile(&gs_handle, &profile);
1247 if (res != 0)
1248 {
1249 bme688_interface_debug_print("bme688: get heater profile failed.\n");
1250 (void)bme688_deinit(&gs_handle);
1251
1252 return 1;
1253 }
1254 bme688_interface_debug_print("bme688: check heater profile %s.\n", profile == BME688_HEATER_PROFILE_FORCED_STEP_0_PARALLEL_NO_STEP ? "ok" : "error");
1255
1256 /* set heater profile */
1258 if (res != 0)
1259 {
1260 bme688_interface_debug_print("bme688: set heater profile failed.\n");
1261 (void)bme688_deinit(&gs_handle);
1262
1263 return 1;
1264 }
1265 bme688_interface_debug_print("bme688: set heater profile forced mode step 1, parallel mode step 0.\n");
1266 res = bme688_get_heater_profile(&gs_handle, &profile);
1267 if (res != 0)
1268 {
1269 bme688_interface_debug_print("bme688: get heater profile failed.\n");
1270 (void)bme688_deinit(&gs_handle);
1271
1272 return 1;
1273 }
1274 bme688_interface_debug_print("bme688: check heater profile %s.\n", profile == BME688_HEATER_PROFILE_FORCED_STEP_1_PARALLEL_STEP_0 ? "ok" : "error");
1275
1276 /* set heater profile */
1278 if (res != 0)
1279 {
1280 bme688_interface_debug_print("bme688: set heater profile failed.\n");
1281 (void)bme688_deinit(&gs_handle);
1282
1283 return 1;
1284 }
1285 bme688_interface_debug_print("bme688: set heater profile forced mode step 2, parallel mode step 0 - 1.\n");
1286 res = bme688_get_heater_profile(&gs_handle, &profile);
1287 if (res != 0)
1288 {
1289 bme688_interface_debug_print("bme688: get heater profile failed.\n");
1290 (void)bme688_deinit(&gs_handle);
1291
1292 return 1;
1293 }
1294 bme688_interface_debug_print("bme688: check heater profile %s.\n", profile == BME688_HEATER_PROFILE_FORCED_STEP_2_PARALLEL_STEP_0_1 ? "ok" : "error");
1295
1296 /* set heater profile */
1298 if (res != 0)
1299 {
1300 bme688_interface_debug_print("bme688: set heater profile failed.\n");
1301 (void)bme688_deinit(&gs_handle);
1302
1303 return 1;
1304 }
1305 bme688_interface_debug_print("bme688: set heater profile forced mode step 3, parallel mode step 0 - 2.\n");
1306 res = bme688_get_heater_profile(&gs_handle, &profile);
1307 if (res != 0)
1308 {
1309 bme688_interface_debug_print("bme688: get heater profile failed.\n");
1310 (void)bme688_deinit(&gs_handle);
1311
1312 return 1;
1313 }
1314 bme688_interface_debug_print("bme688: check heater profile %s.\n", profile == BME688_HEATER_PROFILE_FORCED_STEP_3_PARALLEL_STEP_0_2 ? "ok" : "error");
1315
1316 /* set heater profile */
1318 if (res != 0)
1319 {
1320 bme688_interface_debug_print("bme688: set heater profile failed.\n");
1321 (void)bme688_deinit(&gs_handle);
1322
1323 return 1;
1324 }
1325 bme688_interface_debug_print("bme688: set heater profile forced mode step 4, parallel mode step 0 - 3.\n");
1326 res = bme688_get_heater_profile(&gs_handle, &profile);
1327 if (res != 0)
1328 {
1329 bme688_interface_debug_print("bme688: get heater profile failed.\n");
1330 (void)bme688_deinit(&gs_handle);
1331
1332 return 1;
1333 }
1334 bme688_interface_debug_print("bme688: check heater profile %s.\n", profile == BME688_HEATER_PROFILE_FORCED_STEP_4_PARALLEL_STEP_0_3 ? "ok" : "error");
1335
1336 /* set heater profile */
1338 if (res != 0)
1339 {
1340 bme688_interface_debug_print("bme688: set heater profile failed.\n");
1341 (void)bme688_deinit(&gs_handle);
1342
1343 return 1;
1344 }
1345 bme688_interface_debug_print("bme688: set heater profile forced mode step 5, parallel mode step 0 - 4.\n");
1346 res = bme688_get_heater_profile(&gs_handle, &profile);
1347 if (res != 0)
1348 {
1349 bme688_interface_debug_print("bme688: get heater profile failed.\n");
1350 (void)bme688_deinit(&gs_handle);
1351
1352 return 1;
1353 }
1354 bme688_interface_debug_print("bme688: check heater profile %s.\n", profile == BME688_HEATER_PROFILE_FORCED_STEP_5_PARALLEL_STEP_0_4 ? "ok" : "error");
1355
1356 /* set heater profile */
1358 if (res != 0)
1359 {
1360 bme688_interface_debug_print("bme688: set heater profile failed.\n");
1361 (void)bme688_deinit(&gs_handle);
1362
1363 return 1;
1364 }
1365 bme688_interface_debug_print("bme688: set heater profile forced mode step 6, parallel mode step 0 - 5.\n");
1366 res = bme688_get_heater_profile(&gs_handle, &profile);
1367 if (res != 0)
1368 {
1369 bme688_interface_debug_print("bme688: get heater profile failed.\n");
1370 (void)bme688_deinit(&gs_handle);
1371
1372 return 1;
1373 }
1374 bme688_interface_debug_print("bme688: check heater profile %s.\n", profile == BME688_HEATER_PROFILE_FORCED_STEP_6_PARALLEL_STEP_0_5 ? "ok" : "error");
1375
1376 /* set heater profile */
1378 if (res != 0)
1379 {
1380 bme688_interface_debug_print("bme688: set heater profile failed.\n");
1381 (void)bme688_deinit(&gs_handle);
1382
1383 return 1;
1384 }
1385 bme688_interface_debug_print("bme688: set heater profile forced mode step 7, parallel mode step 0 - 6.\n");
1386 res = bme688_get_heater_profile(&gs_handle, &profile);
1387 if (res != 0)
1388 {
1389 bme688_interface_debug_print("bme688: get heater profile failed.\n");
1390 (void)bme688_deinit(&gs_handle);
1391
1392 return 1;
1393 }
1394 bme688_interface_debug_print("bme688: check heater profile %s.\n", profile == BME688_HEATER_PROFILE_FORCED_STEP_7_PARALLEL_STEP_0_6 ? "ok" : "error");
1395
1396 /* set heater profile */
1398 if (res != 0)
1399 {
1400 bme688_interface_debug_print("bme688: set heater profile failed.\n");
1401 (void)bme688_deinit(&gs_handle);
1402
1403 return 1;
1404 }
1405 bme688_interface_debug_print("bme688: set heater profile forced mode step 8, parallel mode step 0 - 7.\n");
1406 res = bme688_get_heater_profile(&gs_handle, &profile);
1407 if (res != 0)
1408 {
1409 bme688_interface_debug_print("bme688: get heater profile failed.\n");
1410 (void)bme688_deinit(&gs_handle);
1411
1412 return 1;
1413 }
1414 bme688_interface_debug_print("bme688: check heater profile %s.\n", profile == BME688_HEATER_PROFILE_FORCED_STEP_8_PARALLEL_STEP_0_7 ? "ok" : "error");
1415
1416 /* set heater profile */
1418 if (res != 0)
1419 {
1420 bme688_interface_debug_print("bme688: set heater profile failed.\n");
1421 (void)bme688_deinit(&gs_handle);
1422
1423 return 1;
1424 }
1425 bme688_interface_debug_print("bme688: set heater profile forced mode step 9, parallel mode step 0 - 8.\n");
1426 res = bme688_get_heater_profile(&gs_handle, &profile);
1427 if (res != 0)
1428 {
1429 bme688_interface_debug_print("bme688: get heater profile failed.\n");
1430 (void)bme688_deinit(&gs_handle);
1431
1432 return 1;
1433 }
1434 bme688_interface_debug_print("bme688: check heater profile %s.\n", profile == BME688_HEATER_PROFILE_FORCED_STEP_9_PARALLEL_STEP_0_8 ? "ok" : "error");
1435
1436 /* set heater profile */
1438 if (res != 0)
1439 {
1440 bme688_interface_debug_print("bme688: set heater profile failed.\n");
1441 (void)bme688_deinit(&gs_handle);
1442
1443 return 1;
1444 }
1445 bme688_interface_debug_print("bme688: set heater profile forced mode no step, parallel mode step 0 - 9.\n");
1446 res = bme688_get_heater_profile(&gs_handle, &profile);
1447 if (res != 0)
1448 {
1449 bme688_interface_debug_print("bme688: get heater profile failed.\n");
1450 (void)bme688_deinit(&gs_handle);
1451
1452 return 1;
1453 }
1454 bme688_interface_debug_print("bme688: check heater profile %s.\n", profile == BME688_HEATER_PROFILE_FORCED_NO_STEP_PARALLEL_STEP_0_9 ? "ok" : "error");
1455
1456 /* bme688_set_gas_wait_shared/bme688_get_gas_wait_shared test */
1457 bme688_interface_debug_print("bme688: bme688_set_gas_wait_shared/bme688_get_gas_wait_shared test.\n");
1458
1459 reg = rand() % 0xFF;
1460 res = bme688_set_gas_wait_shared(&gs_handle, reg);
1461 if (res != 0)
1462 {
1463 bme688_interface_debug_print("bme688: set gas wait shared failed.\n");
1464 (void)bme688_deinit(&gs_handle);
1465
1466 return 1;
1467 }
1468 bme688_interface_debug_print("bme688: set gas wait shared 0x%02X.\n", reg);
1469 res = bme688_get_gas_wait_shared(&gs_handle, &reg_check);
1470 if (res != 0)
1471 {
1472 bme688_interface_debug_print("bme688: get gas wait shared failed.\n");
1473 (void)bme688_deinit(&gs_handle);
1474
1475 return 1;
1476 }
1477 bme688_interface_debug_print("bme688: check gas wait shared %s.\n", reg == reg_check ? "ok" : "error");
1478
1479 /* bme688_set_idac_heater/bme688_get_idac_heater test */
1480 bme688_interface_debug_print("bme688: bme688_set_idac_heater/bme688_get_idac_heater test.\n");
1481
1482 for (i = 0; i < 10; i++)
1483 {
1484 reg = rand() % 0xFFU;
1485 res = bme688_set_idac_heater(&gs_handle, i, reg);
1486 if (res != 0)
1487 {
1488 bme688_interface_debug_print("bme688: set idac heater failed.\n");
1489 (void)bme688_deinit(&gs_handle);
1490
1491 return 1;
1492 }
1493 bme688_interface_debug_print("bme688: set index %d idac heater 0x%02X.\n", i, reg);
1494 res = bme688_get_idac_heater(&gs_handle, i, &reg_check);
1495 if (res != 0)
1496 {
1497 bme688_interface_debug_print("bme688: get idac heater failed.\n");
1498 (void)bme688_deinit(&gs_handle);
1499
1500 return 1;
1501 }
1502 bme688_interface_debug_print("bme688: check idac heater %s.\n", reg == reg_check ? "ok" : "error");
1503 }
1504
1505 /* bme688_set_resistance_heater/bme688_get_resistance_heater test */
1506 bme688_interface_debug_print("bme688: bme688_set_resistance_heater/bme688_get_resistance_heater test.\n");
1507
1508 for (i = 0; i < 10; i++)
1509 {
1510 reg = rand() % 0xFFU;
1511 res = bme688_set_resistance_heater(&gs_handle, i, reg);
1512 if (res != 0)
1513 {
1514 bme688_interface_debug_print("bme688: set resistance heater failed.\n");
1515 (void)bme688_deinit(&gs_handle);
1516
1517 return 1;
1518 }
1519 bme688_interface_debug_print("bme688: set index %d resistance heater 0x%02X.\n", i, reg);
1520 res = bme688_get_resistance_heater(&gs_handle, i, &reg_check);
1521 if (res != 0)
1522 {
1523 bme688_interface_debug_print("bme688: get resistance heater failed.\n");
1524 (void)bme688_deinit(&gs_handle);
1525
1526 return 1;
1527 }
1528 bme688_interface_debug_print("bme688: check resistance heater %s.\n", reg == reg_check ? "ok" : "error");
1529 }
1530
1531 /* bme688_set_gas_wait/bme688_get_gas_wait test */
1532 bme688_interface_debug_print("bme688: bme688_set_gas_wait/bme688_get_gas_wait test.\n");
1533
1534 for (i = 0; i < 10; i++)
1535 {
1536 reg = rand() % 0xFFU;
1537 res = bme688_set_gas_wait(&gs_handle, i, reg);
1538 if (res != 0)
1539 {
1540 bme688_interface_debug_print("bme688: set gas wait failed.\n");
1541 (void)bme688_deinit(&gs_handle);
1542
1543 return 1;
1544 }
1545 bme688_interface_debug_print("bme688: set index %d gas wait 0x%02X.\n", i, reg);
1546 res = bme688_get_gas_wait(&gs_handle, i, &reg_check);
1547 if (res != 0)
1548 {
1549 bme688_interface_debug_print("bme688: get gas wait failed.\n");
1550 (void)bme688_deinit(&gs_handle);
1551
1552 return 1;
1553 }
1554 bme688_interface_debug_print("bme688: check gas wait %s.\n", reg == reg_check ? "ok" : "error");
1555 }
1556
1557 /* bme688_resistance_heater_convert_to_register test */
1558 bme688_interface_debug_print("bme688: bme688_resistance_heater_convert_to_register test.\n");
1559
1560 degree_celsius = (float)(rand() % 30000) / 100;
1561 res = bme688_resistance_heater_convert_to_register(&gs_handle, degree_celsius, &reg);
1562 if (res != 0)
1563 {
1564 bme688_interface_debug_print("bme688: resistance heater convert to register failed.\n");
1565 (void)bme688_deinit(&gs_handle);
1566
1567 return 1;
1568 }
1569 bme688_interface_debug_print("bme688: %0.2fC convert to register 0x%02X.\n", degree_celsius, reg);
1570
1571 /* bme688_gas_wait_convert_to_register test */
1572 bme688_interface_debug_print("bme688: bme688_gas_wait_convert_to_register test.\n");
1573
1574 ms = rand() % 100 + 50;
1575 res = bme688_gas_wait_convert_to_register(&gs_handle, ms, &reg);
1576 if (res != 0)
1577 {
1578 bme688_interface_debug_print("bme688: gas wait convert to register failed.\n");
1579 (void)bme688_deinit(&gs_handle);
1580
1581 return 1;
1582 }
1583 bme688_interface_debug_print("bme688: %dms convert to register 0x%02X.\n", ms, reg);
1584
1585 /* bme688_idac_heater_convert_to_register/bme688_idac_heater_convert_to_data test */
1586 bme688_interface_debug_print("bme688: bme688_idac_heater_convert_to_register/bme688_idac_heater_convert_to_data test.\n");
1587
1588 ma = (float)(rand() % 100) / 10.0f;
1589 bme688_interface_debug_print("bme688: idac heater ma before is %0.2fmA.\n", ma);
1590 res = bme688_idac_heater_convert_to_register(&gs_handle, ma, &reg);
1591 if (res != 0)
1592 {
1593 bme688_interface_debug_print("bme688: idac heater convert to register failed.\n");
1594 (void)bme688_deinit(&gs_handle);
1595
1596 return 1;
1597 }
1598 bme688_interface_debug_print("bme688: idac heater reg is 0x%02X.\n", reg);
1599 res = bme688_idac_heater_convert_to_data(&gs_handle, reg, &ma_check);
1600 if (res != 0)
1601 {
1602 bme688_interface_debug_print("bme688: idac heater convert to data failed.\n");
1603 (void)bme688_deinit(&gs_handle);
1604
1605 return 1;
1606 }
1607 bme688_interface_debug_print("bme688: idac heater ma after is %0.2fmA.\n", ma_check);
1608
1609 /* bme688_gas_wait_shared_convert_to_register test */
1610 bme688_interface_debug_print("bme688: bme688_gas_wait_shared_convert_to_register test.\n");
1611
1612 ms = rand() % 100 + 50;
1613 res = bme688_gas_wait_shared_convert_to_register(&gs_handle, ma, &reg);
1614 if (res != 0)
1615 {
1616 bme688_interface_debug_print("bme688: gas wait shared convert to register failed.\n");
1617 (void)bme688_deinit(&gs_handle);
1618
1619 return 1;
1620 }
1621 bme688_interface_debug_print("bme688: %dms convert to register 0x%02X.\n", ms, reg);
1622
1623 /* bme688_soft_reset test */
1624 bme688_interface_debug_print("bme688: bme688_soft_reset test.\n");
1625
1626 /* soft reset */
1627 res = bme688_soft_reset(&gs_handle);
1628 if (res != 0)
1629 {
1630 bme688_interface_debug_print("bme688: soft reset failed.\n");
1631 (void)bme688_deinit(&gs_handle);
1632
1633 return 1;
1634 }
1635 bme688_interface_debug_print("bme688: check soft reset %s.\n", res == 0 ? "ok" : "error");
1636
1637 /* finish register test */
1638 bme688_interface_debug_print("bme688: finish register test.\n");
1639 (void)bme688_deinit(&gs_handle);
1640
1641 return 0;
1642}
driver bme688 register test header file
uint8_t bme688_set_filter(bme688_handle_t *handle, bme688_filter_t filter)
set filter
uint8_t bme688_get_temperature_oversampling(bme688_handle_t *handle, bme688_oversampling_t *oversampling)
get temperature oversampling
uint8_t bme688_set_interface(bme688_handle_t *handle, bme688_interface_t interface)
set the interface
uint8_t bme688_soft_reset(bme688_handle_t *handle)
soft reset
bme688_mode_t
bme688 mode enumeration definition
uint8_t bme688_get_mode(bme688_handle_t *handle, bme688_mode_t *mode)
get mode
uint8_t bme688_get_humidity_oversampling(bme688_handle_t *handle, bme688_oversampling_t *oversampling)
get humidity oversampling
bme688_address_t
bme688 address enumeration definition
uint8_t bme688_set_addr_pin(bme688_handle_t *handle, bme688_address_t addr_pin)
set the iic address pin
uint8_t bme688_get_measuring_status(bme688_handle_t *handle, bme688_section_t section, bme688_bool_t *enable)
get measuring status
uint8_t bme688_get_spi_wire_3_data_interrupt(bme688_handle_t *handle, bme688_bool_t *enable)
get spi wire3 data interrupt status
uint8_t bme688_gas_wait_shared_convert_to_register(bme688_handle_t *handle, float m, uint8_t *reg)
convert the gas wait shared to the register raw data
uint8_t bme688_set_heater_profile(bme688_handle_t *handle, bme688_heater_profile_t profile)
set heater profile
uint8_t bme688_get_run_gas(bme688_handle_t *handle, bme688_bool_t *enable)
get run gas status
uint8_t bme688_get_resistance_heater(bme688_handle_t *handle, uint8_t index, uint8_t *reg)
get resistance heater
bme688_heater_profile_t
bme688 heater profile enumeration definition
uint8_t bme688_idac_heater_convert_to_register(bme688_handle_t *handle, float ma, uint8_t *reg)
convert the idac heater to the register raw data
uint8_t bme688_get_gas_measuring_status(bme688_handle_t *handle, bme688_section_t section, bme688_bool_t *enable)
get gas measuring status
uint8_t bme688_set_temperature_oversampling(bme688_handle_t *handle, bme688_oversampling_t oversampling)
set temperature oversampling
uint8_t bme688_set_mode(bme688_handle_t *handle, bme688_mode_t mode)
set mode
uint8_t bme688_get_heater_stability_status(bme688_handle_t *handle, bme688_section_t section, bme688_bool_t *enable)
get heater stability status
uint8_t bme688_set_run_gas(bme688_handle_t *handle, bme688_bool_t enable)
enable or disable run gas
uint8_t bme688_get_gas_valid_status(bme688_handle_t *handle, bme688_section_t section, bme688_bool_t *enable)
get gas valid status
uint8_t bme688_get_gas_measuring_index(bme688_handle_t *handle, bme688_section_t section, uint8_t *index)
get gas measuring index
uint8_t bme688_get_heater_off(bme688_handle_t *handle, bme688_bool_t *enable)
get heater off status
uint8_t bme688_set_spi_wire(bme688_handle_t *handle, bme688_spi_wire_t spi)
set spi wire
uint8_t bme688_get_filter(bme688_handle_t *handle, bme688_filter_t *filter)
get filter
uint8_t bme688_get_heater_profile(bme688_handle_t *handle, bme688_heater_profile_t *profile)
get heater profile
uint8_t bme688_set_idac_heater(bme688_handle_t *handle, uint8_t index, uint8_t reg)
set idac heater
bme688_filter_t
bme688 filter enumeration definition
uint8_t bme688_init(bme688_handle_t *handle)
initialize the chip
uint8_t bme688_info(bme688_info_t *info)
get chip's information
uint8_t bme688_get_idac_heater(bme688_handle_t *handle, uint8_t index, uint8_t *reg)
get idac heater
uint8_t bme688_get_interface(bme688_handle_t *handle, bme688_interface_t *interface)
get the interface
uint8_t bme688_set_spi_wire_3_data_interrupt(bme688_handle_t *handle, bme688_bool_t enable)
enable or disable spi wire3 data interrupt
uint8_t bme688_gas_wait_convert_to_register(bme688_handle_t *handle, uint16_t ms, uint8_t *reg)
convert the gas wait to the register raw data
struct bme688_info_s bme688_info_t
bme688 information structure definition
uint8_t bme688_set_gas_wait(bme688_handle_t *handle, uint8_t index, uint8_t reg)
set gas wait
uint8_t bme688_resistance_heater_convert_to_register(bme688_handle_t *handle, float degree_celsius, uint8_t *reg)
convert the resistance heater to the register raw data
uint8_t bme688_get_gas_wait_shared(bme688_handle_t *handle, uint8_t *reg)
get gas wait shared
uint8_t bme688_deinit(bme688_handle_t *handle)
close the chip
uint8_t bme688_set_resistance_heater(bme688_handle_t *handle, uint8_t index, uint8_t reg)
set resistance heater
uint8_t bme688_get_new_data_status(bme688_handle_t *handle, bme688_section_t section, bme688_bool_t *enable)
get new data status
bme688_section_t
bme688 section enumeration definition
uint8_t bme688_get_gas_wait(bme688_handle_t *handle, uint8_t index, uint8_t *reg)
get gas wait
uint8_t bme688_idac_heater_convert_to_data(bme688_handle_t *handle, uint8_t reg, float *ma)
convert the register raw data to idac heater
uint8_t bme688_get_addr_pin(bme688_handle_t *handle, bme688_address_t *addr_pin)
get the iic address pin
uint8_t bme688_set_heater_off(bme688_handle_t *handle, bme688_bool_t enable)
enable or disable heater off
bme688_bool_t
bme688 bool enumeration definition
uint8_t bme688_get_pressure_oversampling(bme688_handle_t *handle, bme688_oversampling_t *oversampling)
get pressure oversampling
bme688_interface_t
bme688 interface enumeration definition
bme688_oversampling_t
bme688 oversampling enumeration definition
uint8_t bme688_set_gas_wait_shared(bme688_handle_t *handle, uint8_t reg)
set gas wait shared
uint8_t bme688_set_humidity_oversampling(bme688_handle_t *handle, bme688_oversampling_t oversampling)
set humidity oversampling
uint8_t bme688_set_pressure_oversampling(bme688_handle_t *handle, bme688_oversampling_t oversampling)
set pressure oversampling
bme688_spi_wire_t
bme688 spi wire enumeration definition
uint8_t bme688_get_spi_wire(bme688_handle_t *handle, bme688_spi_wire_t *spi)
get spi wire
struct bme688_handle_s bme688_handle_t
bme688 handle structure definition
@ BME688_MODE_FORCED
@ BME688_MODE_SLEEP
@ BME688_MODE_PARALLEL
@ BME688_ADDRESS_ADO_HIGH
@ BME688_ADDRESS_ADO_LOW
@ BME688_HEATER_PROFILE_FORCED_STEP_8_PARALLEL_STEP_0_7
@ BME688_HEATER_PROFILE_FORCED_STEP_2_PARALLEL_STEP_0_1
@ BME688_HEATER_PROFILE_FORCED_STEP_1_PARALLEL_STEP_0
@ BME688_HEATER_PROFILE_FORCED_STEP_6_PARALLEL_STEP_0_5
@ BME688_HEATER_PROFILE_FORCED_STEP_4_PARALLEL_STEP_0_3
@ BME688_HEATER_PROFILE_FORCED_STEP_7_PARALLEL_STEP_0_6
@ BME688_HEATER_PROFILE_FORCED_STEP_3_PARALLEL_STEP_0_2
@ BME688_HEATER_PROFILE_FORCED_NO_STEP_PARALLEL_STEP_0_9
@ BME688_HEATER_PROFILE_FORCED_STEP_5_PARALLEL_STEP_0_4
@ BME688_HEATER_PROFILE_FORCED_STEP_9_PARALLEL_STEP_0_8
@ BME688_HEATER_PROFILE_FORCED_STEP_0_PARALLEL_NO_STEP
@ BME688_FILTER_COEFF_31
@ BME688_FILTER_COEFF_15
@ BME688_FILTER_COEFF_127
@ BME688_FILTER_COEFF_7
@ BME688_FILTER_COEFF_63
@ BME688_FILTER_COEFF_1
@ BME688_FILTER_OFF
@ BME688_FILTER_COEFF_3
@ BME688_SECTION_1
@ BME688_SECTION_2
@ BME688_SECTION_0
@ BME688_BOOL_TRUE
@ BME688_BOOL_FALSE
@ BME688_INTERFACE_IIC
@ BME688_INTERFACE_SPI
@ BME688_OVERSAMPLING_x2
@ BME688_OVERSAMPLING_x4
@ BME688_OVERSAMPLING_x8
@ BME688_OVERSAMPLING_x1
@ BME688_OVERSAMPLING_x16
@ BME688_OVERSAMPLING_SKIP
@ BME688_SPI_WIRE_4
@ BME688_SPI_WIRE_3
uint8_t bme688_interface_spi_write(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus write
uint8_t bme688_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
void bme688_interface_receive_callback(uint8_t status, bme688_parallel_data_t *data, uint8_t len)
interface receive callback
uint8_t bme688_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
void bme688_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t bme688_interface_spi_read(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus read
void bme688_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t bme688_interface_spi_deinit(void)
interface spi bus deinit
uint8_t bme688_interface_spi_init(void)
interface spi bus init
uint8_t bme688_interface_iic_deinit(void)
interface iic bus deinit
uint8_t bme688_interface_iic_init(void)
interface iic bus init
uint8_t bme688_register_test(bme688_interface_t interface, bme688_address_t addr_pin)
register test
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]