LibDriver ENS160
Loading...
Searching...
No Matches
driver_ens160_register_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static ens160_handle_t gs_handle;
41
52{
53 uint8_t res;
54 uint8_t major;
55 uint8_t minor;
56 uint8_t release;
57 uint8_t status;
58 uint8_t checksum;
59 uint16_t raw;
60 uint16_t raw_check;
61 uint16_t reg;
62 uint16_t resistance0;
63 uint16_t resistance1;
64 uint16_t resistance2;
65 uint16_t resistance3;
66 float celsius_deg;
67 float celsius_deg_check;
68 float percentage;
69 float percentage_check;
70 float ohm;
71 float ohm_check;
72 uint8_t params[8];
73 uint8_t params_check[8];
74 ens160_info_t info;
75 ens160_interface_t interface_check;
76 ens160_address_t addr_check;
77 ens160_mode_t mode;
78 ens160_pin_polarity_t polarity;
80 ens160_bool_t enable;
81
82 /* link interface function */
95
96 /* get information */
97 res = ens160_info(&info);
98 if (res != 0)
99 {
100 ens160_interface_debug_print("ens160: get info failed.\n");
101
102 return 1;
103 }
104 else
105 {
106 /* print chip info */
107 ens160_interface_debug_print("ens160: chip is %s.\n", info.chip_name);
108 ens160_interface_debug_print("ens160: manufacturer is %s.\n", info.manufacturer_name);
109 ens160_interface_debug_print("ens160: interface is %s.\n", info.interface);
110 ens160_interface_debug_print("ens160: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
111 ens160_interface_debug_print("ens160: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
112 ens160_interface_debug_print("ens160: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
113 ens160_interface_debug_print("ens160: max current is %0.2fmA.\n", info.max_current_ma);
114 ens160_interface_debug_print("ens160: max temperature is %0.1fC.\n", info.temperature_max);
115 ens160_interface_debug_print("ens160: min temperature is %0.1fC.\n", info.temperature_min);
116 }
117
118 /* start register test */
119 ens160_interface_debug_print("ens160: start register test.\n");
120
121 /* ens160_set_interface/ens160_get_interface test */
122 ens160_interface_debug_print("ens160: ens160_set_interface/ens160_get_interface test.\n");
123
124 /* set IIC interface */
126 if (res != 0)
127 {
128 ens160_interface_debug_print("ens160: set interface failed.\n");
129
130 return 1;
131 }
132 ens160_interface_debug_print("ens160: set interface iic.\n");
133 res = ens160_get_interface(&gs_handle, &interface_check);
134 if (res != 0)
135 {
136 ens160_interface_debug_print("ens160: get interface failed.\n");
137
138 return 1;
139 }
140 ens160_interface_debug_print("ens160: check interface %s.\n", (interface_check == ENS160_INTERFACE_IIC) ? "ok" : "error");
141
142 /* set SPI interface */
144 if (res != 0)
145 {
146 ens160_interface_debug_print("ens160: set interface failed.\n");
147
148 return 1;
149 }
150 ens160_interface_debug_print("ens160: set interface spi.\n");
151 res = ens160_get_interface(&gs_handle, &interface_check);
152 if (res != 0)
153 {
154 ens160_interface_debug_print("ens160: get interface failed.\n");
155
156 return 1;
157 }
158 ens160_interface_debug_print("ens160: check interface %s.\n", (interface_check == ENS160_INTERFACE_SPI) ? "ok" : "error");
159
160 /* ens160_set_addr_pin/ens160_get_addr_pin test */
161 ens160_interface_debug_print("ens160: ens160_set_addr_pin/ens160_get_addr_pin test.\n");
162
163 /* address0 */
164 res = ens160_set_addr_pin(&gs_handle, ENS160_ADDRESS_0);
165 if (res != 0)
166 {
167 ens160_interface_debug_print("ens160: set addr pin failed.\n");
168
169 return 1;
170 }
171 ens160_interface_debug_print("ens160: set address0.\n");
172 res = ens160_get_addr_pin(&gs_handle, &addr_check);
173 if (res != 0)
174 {
175 ens160_interface_debug_print("ens160: get addr pin failed.\n");
176
177 return 1;
178 }
179 ens160_interface_debug_print("ens160: check addr pin %s.\n", (addr_check == ENS160_ADDRESS_0) ? "ok" : "error");
180
181 /* address1 */
182 res = ens160_set_addr_pin(&gs_handle, ENS160_ADDRESS_1);
183 if (res != 0)
184 {
185 ens160_interface_debug_print("ens160: set addr pin failed.\n");
186
187 return 1;
188 }
189 ens160_interface_debug_print("ens160: set address1.\n");
190 res = ens160_get_addr_pin(&gs_handle, &addr_check);
191 if (res != 0)
192 {
193 ens160_interface_debug_print("ens160: get addr pin failed.\n");
194
195 return 1;
196 }
197 ens160_interface_debug_print("ens160: check addr pin %s.\n", (addr_check == ENS160_ADDRESS_1) ? "ok" : "error");
198
199 /* set the interface */
200 res = ens160_set_interface(&gs_handle, interface);
201 if (res != 0)
202 {
203 ens160_interface_debug_print("ens160: set interface failed.\n");
204
205 return 1;
206 }
207
208 /* set the address pin */
209 res = ens160_set_addr_pin(&gs_handle, addr_pin);
210 if (res != 0)
211 {
212 ens160_interface_debug_print("ens160: set addr pin failed.\n");
213
214 return 1;
215 }
216
217 /* init the ens160 */
218 res = ens160_init(&gs_handle);
219 if (res != 0)
220 {
221 ens160_interface_debug_print("ens160: init failed.\n");
222
223 return 1;
224 }
225
226 /* ens160_set_mode/ens160_get_mode test */
227 ens160_interface_debug_print("ens160: ens160_set_mode/ens160_get_mode test.\n");
228
229 /* set deep sleep mode */
230 res = ens160_set_mode(&gs_handle, ENS160_MODE_DEEP_SLEEP);
231 if (res != 0)
232 {
233 ens160_interface_debug_print("ens160: set mode failed.\n");
234 (void)ens160_deinit(&gs_handle);
235
236 return 1;
237 }
238 ens160_interface_debug_print("ens160: set deep sleep mode.\n");
239 res = ens160_get_mode(&gs_handle, &mode);
240 if (res != 0)
241 {
242 ens160_interface_debug_print("ens160: get mode failed.\n");
243 (void)ens160_deinit(&gs_handle);
244
245 return 1;
246 }
247 ens160_interface_debug_print("ens160: check mode %s.\n", (mode == ENS160_MODE_DEEP_SLEEP) ? "ok" : "error");
248
249 /* set standard mode */
250 res = ens160_set_mode(&gs_handle, ENS160_MODE_STANDARD);
251 if (res != 0)
252 {
253 ens160_interface_debug_print("ens160: set mode failed.\n");
254 (void)ens160_deinit(&gs_handle);
255
256 return 1;
257 }
258 ens160_interface_debug_print("ens160: set standard mode.\n");
259 res = ens160_get_mode(&gs_handle, &mode);
260 if (res != 0)
261 {
262 ens160_interface_debug_print("ens160: get mode failed.\n");
263 (void)ens160_deinit(&gs_handle);
264
265 return 1;
266 }
267 ens160_interface_debug_print("ens160: check mode %s.\n", (mode == ENS160_MODE_STANDARD) ? "ok" : "error");
268
269 /* set idle mode */
270 res = ens160_set_mode(&gs_handle, ENS160_MODE_IDLE);
271 if (res != 0)
272 {
273 ens160_interface_debug_print("ens160: set mode failed.\n");
274 (void)ens160_deinit(&gs_handle);
275
276 return 1;
277 }
278 ens160_interface_debug_print("ens160: set idle mode.\n");
279 res = ens160_get_mode(&gs_handle, &mode);
280 if (res != 0)
281 {
282 ens160_interface_debug_print("ens160: get mode failed.\n");
283 (void)ens160_deinit(&gs_handle);
284
285 return 1;
286 }
287 ens160_interface_debug_print("ens160: check mode %s.\n", (mode == ENS160_MODE_IDLE) ? "ok" : "error");
288
289 /* ens160_set_interrupt_pin_polarity/ens160_get_interrupt_pin_polarity test */
290 ens160_interface_debug_print("ens160: ens160_set_interrupt_pin_polarity/ens160_get_interrupt_pin_polarity test.\n");
291
292 /* set interrupt pin polarity high */
294 if (res != 0)
295 {
296 ens160_interface_debug_print("ens160: set interrupt pin polarity failed.\n");
297 (void)ens160_deinit(&gs_handle);
298
299 return 1;
300 }
301 ens160_interface_debug_print("ens160: set interrupt pin polarity high.\n");
302 res = ens160_get_interrupt_pin_polarity(&gs_handle, &polarity);
303 if (res != 0)
304 {
305 ens160_interface_debug_print("ens160: get interrupt pin polarity failed.\n");
306 (void)ens160_deinit(&gs_handle);
307
308 return 1;
309 }
310 ens160_interface_debug_print("ens160: check interrupt pin polarity %s.\n", (polarity == ENS160_PIN_POLARITY_HIGH) ? "ok" : "error");
311
312 /* set interrupt pin polarity low */
314 if (res != 0)
315 {
316 ens160_interface_debug_print("ens160: set interrupt pin polarity failed.\n");
317 (void)ens160_deinit(&gs_handle);
318
319 return 1;
320 }
321 ens160_interface_debug_print("ens160: set interrupt pin polarity low.\n");
322 res = ens160_get_interrupt_pin_polarity(&gs_handle, &polarity);
323 if (res != 0)
324 {
325 ens160_interface_debug_print("ens160: get interrupt pin polarity failed.\n");
326 (void)ens160_deinit(&gs_handle);
327
328 return 1;
329 }
330 ens160_interface_debug_print("ens160: check interrupt pin polarity %s.\n", (polarity == ENS160_PIN_POLARITY_LOW) ? "ok" : "error");
331
332 /* ens160_set_interrupt_pin_drive/ens160_get_interrupt_pin_drive test */
333 ens160_interface_debug_print("ens160: ens160_set_interrupt_pin_drive/ens160_get_interrupt_pin_drive test.\n");
334
335 /* set interrupt pin drive push-pull */
337 if (res != 0)
338 {
339 ens160_interface_debug_print("ens160: set interrupt pin drive failed.\n");
340 (void)ens160_deinit(&gs_handle);
341
342 return 1;
343 }
344 ens160_interface_debug_print("ens160: set interrupt pin drive push-pull.\n");
345 res = ens160_get_interrupt_pin_drive(&gs_handle, &drive);
346 if (res != 0)
347 {
348 ens160_interface_debug_print("ens160: get interrupt pin drive failed.\n");
349 (void)ens160_deinit(&gs_handle);
350
351 return 1;
352 }
353 ens160_interface_debug_print("ens160: check interrupt pin drive %s.\n", (drive == ENS160_PIN_DRIVE_PUSH_PULL) ? "ok" : "error");
354
355 /* set interrupt pin drive open drain */
357 if (res != 0)
358 {
359 ens160_interface_debug_print("ens160: set interrupt pin drive failed.\n");
360 (void)ens160_deinit(&gs_handle);
361
362 return 1;
363 }
364 ens160_interface_debug_print("ens160: set interrupt pin drive open drain.\n");
365 res = ens160_get_interrupt_pin_drive(&gs_handle, &drive);
366 if (res != 0)
367 {
368 ens160_interface_debug_print("ens160: get interrupt pin drive failed.\n");
369 (void)ens160_deinit(&gs_handle);
370
371 return 1;
372 }
373 ens160_interface_debug_print("ens160: check interrupt pin drive %s.\n", (drive == ENS160_PIN_DRIVE_OPEN_DRAIN) ? "ok" : "error");
374
375 /* ens160_set_general_purpose_read_interrupt_pin_asserted/ens160_get_general_purpose_read_interrupt_pin_asserted test */
376 ens160_interface_debug_print("ens160: ens160_set_general_purpose_read_interrupt_pin_asserted/");
377 ens160_interface_debug_print("ens160_get_general_purpose_read_interrupt_pin_asserted test.\n");
378
379 /* enable general purpose read interrupt pin asserted */
381 if (res != 0)
382 {
383 ens160_interface_debug_print("ens160: set general purpose read interrupt pin asserted failed.\n");
384 (void)ens160_deinit(&gs_handle);
385
386 return 1;
387 }
388 ens160_interface_debug_print("ens160: enable general purpose read interrupt pin asserted.\n");
390 if (res != 0)
391 {
392 ens160_interface_debug_print("ens160: get general purpose read interrupt pin asserted failed.\n");
393 (void)ens160_deinit(&gs_handle);
394
395 return 1;
396 }
397 ens160_interface_debug_print("ens160: check general purpose read interrupt pin asserted %s.\n", (enable == ENS160_BOOL_TRUE) ? "ok" : "error");
398
399 /* disable general purpose read interrupt pin asserted */
401 if (res != 0)
402 {
403 ens160_interface_debug_print("ens160: set general purpose read interrupt pin asserted failed.\n");
404 (void)ens160_deinit(&gs_handle);
405
406 return 1;
407 }
408 ens160_interface_debug_print("ens160: disable general purpose read interrupt pin asserted.\n");
410 if (res != 0)
411 {
412 ens160_interface_debug_print("ens160: get general purpose read interrupt pin asserted failed.\n");
413 (void)ens160_deinit(&gs_handle);
414
415 return 1;
416 }
417 ens160_interface_debug_print("ens160: check general purpose read interrupt pin asserted %s.\n", (enable == ENS160_BOOL_FALSE) ? "ok" : "error");
418
419 /* ens160_set_data_interrupt_pin_asserted/ens160_get_data_interrupt_pin_asserted test */
420 ens160_interface_debug_print("ens160: ens160_set_data_interrupt_pin_asserted/ens160_get_data_interrupt_pin_asserted test.\n");
421
422 /* enable data interrupt pin asserted */
424 if (res != 0)
425 {
426 ens160_interface_debug_print("ens160: set data interrupt pin asserted failed.\n");
427 (void)ens160_deinit(&gs_handle);
428
429 return 1;
430 }
431 ens160_interface_debug_print("ens160: enable data interrupt pin asserted.\n");
432 res = ens160_get_data_interrupt_pin_asserted(&gs_handle, &enable);
433 if (res != 0)
434 {
435 ens160_interface_debug_print("ens160: get data interrupt pin asserted failed.\n");
436 (void)ens160_deinit(&gs_handle);
437
438 return 1;
439 }
440 ens160_interface_debug_print("ens160: check data interrupt pin asserted %s.\n", (enable == ENS160_BOOL_TRUE) ? "ok" : "error");
441
442 /* disable data interrupt pin asserted */
444 if (res != 0)
445 {
446 ens160_interface_debug_print("ens160: set data interrupt pin asserted failed.\n");
447 (void)ens160_deinit(&gs_handle);
448
449 return 1;
450 }
451 ens160_interface_debug_print("ens160: disable data interrupt pin asserted.\n");
452 res = ens160_get_data_interrupt_pin_asserted(&gs_handle, &enable);
453 if (res != 0)
454 {
455 ens160_interface_debug_print("ens160: get data interrupt pin asserted failed.\n");
456 (void)ens160_deinit(&gs_handle);
457
458 return 1;
459 }
460 ens160_interface_debug_print("ens160: check data interrupt pin asserted %s.\n", (enable == ENS160_BOOL_FALSE) ? "ok" : "error");
461
462 /* ens160_set_interrupt/ens160_get_interrupt test */
463 ens160_interface_debug_print("ens160: ens160_set_interrupt/ens160_get_interrupt test.\n");
464
465 /* enable interrupt */
466 res = ens160_set_interrupt(&gs_handle, ENS160_BOOL_TRUE);
467 if (res != 0)
468 {
469 ens160_interface_debug_print("ens160: set interrupt failed.\n");
470 (void)ens160_deinit(&gs_handle);
471
472 return 1;
473 }
474 ens160_interface_debug_print("ens160: enable interrupt.\n");
475 res = ens160_get_interrupt(&gs_handle, &enable);
476 if (res != 0)
477 {
478 ens160_interface_debug_print("ens160: get interrupt failed.\n");
479 (void)ens160_deinit(&gs_handle);
480
481 return 1;
482 }
483 ens160_interface_debug_print("ens160: check interrupt %s.\n", (enable == ENS160_BOOL_TRUE) ? "ok" : "error");
484
485 /* disable interrupt */
486 res = ens160_set_interrupt(&gs_handle, ENS160_BOOL_FALSE);
487 if (res != 0)
488 {
489 ens160_interface_debug_print("ens160: set interrupt failed.\n");
490 (void)ens160_deinit(&gs_handle);
491
492 return 1;
493 }
494 ens160_interface_debug_print("ens160: disable interrupt.\n");
495 res = ens160_get_interrupt(&gs_handle, &enable);
496 if (res != 0)
497 {
498 ens160_interface_debug_print("ens160: get interrupt failed.\n");
499 (void)ens160_deinit(&gs_handle);
500
501 return 1;
502 }
503 ens160_interface_debug_print("ens160: check interrupt %s.\n", (enable == ENS160_BOOL_FALSE) ? "ok" : "error");
504
505 /* ens160_get_app_version test */
506 ens160_interface_debug_print("ens160: ens160_get_app_version test.\n");
507
508 /* get app version */
509 res = ens160_get_app_version(&gs_handle, &major, &minor, &release);
510 if (res != 0)
511 {
512 ens160_interface_debug_print("ens160: get app version failed.\n");
513 (void)ens160_deinit(&gs_handle);
514
515 return 1;
516 }
517 ens160_interface_debug_print("ens160: app version is %d.%d.%d.\n", major, minor, release);
518
519 /* ens160_set_temperature_compensation/ens160_get_temperature_compensation test */
520 ens160_interface_debug_print("ens160: ens160_set_temperature_compensation/ens160_get_temperature_compensation test.\n");
521
522 raw = rand() % 0xFFFFU;
523 res = ens160_set_temperature_compensation(&gs_handle, raw);
524 if (res != 0)
525 {
526 ens160_interface_debug_print("ens160: set temperature compensation failed.\n");
527 (void)ens160_deinit(&gs_handle);
528
529 return 1;
530 }
531 ens160_interface_debug_print("ens160: set temperature compensation 0x%04X.\n", raw);
532 res = ens160_get_temperature_compensation(&gs_handle, &raw_check);
533 if (res != 0)
534 {
535 ens160_interface_debug_print("ens160: get temperature compensation failed.\n");
536 (void)ens160_deinit(&gs_handle);
537
538 return 1;
539 }
540 ens160_interface_debug_print("ens160: check temperature compensation %s.\n", (raw == raw_check) ? "ok" : "error");
541
542 /* ens160_set_humidity_compensation/ens160_get_humidity_compensation test */
543 ens160_interface_debug_print("ens160: ens160_set_humidity_compensation/ens160_get_humidity_compensation test.\n");
544
545 /* set humidity compensation */
546 raw = rand() % 0xFFFFU;
547 res = ens160_set_humidity_compensation(&gs_handle, raw);
548 if (res != 0)
549 {
550 ens160_interface_debug_print("ens160: set humidity compensation failed.\n");
551 (void)ens160_deinit(&gs_handle);
552
553 return 1;
554 }
555 ens160_interface_debug_print("ens160: set humidity compensation 0x%04X.\n", raw);
556 res = ens160_get_humidity_compensation(&gs_handle, &raw_check);
557 if (res != 0)
558 {
559 ens160_interface_debug_print("ens160: get humidity compensation failed.\n");
560 (void)ens160_deinit(&gs_handle);
561
562 return 1;
563 }
564 ens160_interface_debug_print("ens160: check humidity compensation %s.\n", (raw == raw_check) ? "ok" : "error");
565
566 /* ens160_set_params/ens160_get_params test */
567 ens160_interface_debug_print("ens160: ens160_set_params/ens160_get_params test.\n");
568
569 params[0] = rand() % 0xFFU;
570 params[1] = rand() % 0xFFU;
571 params[2] = rand() % 0xFFU;
572 params[3] = rand() % 0xFFU;
573 params[4] = rand() % 0xFFU;
574 params[5] = rand() % 0xFFU;
575 params[6] = rand() % 0xFFU;
576 params[7] = rand() % 0xFFU;
577 res = ens160_set_params(&gs_handle, params);
578 if (res != 0)
579 {
580 ens160_interface_debug_print("ens160: set params failed.\n");
581 (void)ens160_deinit(&gs_handle);
582
583 return 1;
584 }
585 ens160_interface_debug_print("ens160: set params[%d] 0x%02X.\n", 0, params[0]);
586 ens160_interface_debug_print("ens160: set params[%d] 0x%02X.\n", 1, params[1]);
587 ens160_interface_debug_print("ens160: set params[%d] 0x%02X.\n", 2, params[2]);
588 ens160_interface_debug_print("ens160: set params[%d] 0x%02X.\n", 3, params[3]);
589 ens160_interface_debug_print("ens160: set params[%d] 0x%02X.\n", 4, params[4]);
590 ens160_interface_debug_print("ens160: set params[%d] 0x%02X.\n", 5, params[5]);
591 ens160_interface_debug_print("ens160: set params[%d] 0x%02X.\n", 6, params[6]);
592 ens160_interface_debug_print("ens160: set params[%d] 0x%02X.\n", 7, params[7]);
593 res = ens160_get_params(&gs_handle, params_check);
594 if (res != 0)
595 {
596 ens160_interface_debug_print("ens160: get params failed.\n");
597 (void)ens160_deinit(&gs_handle);
598
599 return 1;
600 }
601 ens160_interface_debug_print("ens160: check params[%d] %s.\n", 0, (params[0] == params_check[0]) ? "ok" : "error");
602 ens160_interface_debug_print("ens160: check params[%d] %s.\n", 1, (params[1] == params_check[1]) ? "ok" : "error");
603 ens160_interface_debug_print("ens160: check params[%d] %s.\n", 2, (params[2] == params_check[2]) ? "ok" : "error");
604 ens160_interface_debug_print("ens160: check params[%d] %s.\n", 3, (params[3] == params_check[3]) ? "ok" : "error");
605 ens160_interface_debug_print("ens160: check params[%d] %s.\n", 4, (params[4] == params_check[4]) ? "ok" : "error");
606 ens160_interface_debug_print("ens160: check params[%d] %s.\n", 5, (params[5] == params_check[5]) ? "ok" : "error");
607 ens160_interface_debug_print("ens160: check params[%d] %s.\n", 6, (params[6] == params_check[6]) ? "ok" : "error");
608 ens160_interface_debug_print("ens160: check params[%d] %s.\n", 7, (params[7] == params_check[7]) ? "ok" : "error");
609
610 /* ens160_get_params_output test */
611 ens160_interface_debug_print("ens160: ens160_get_params_output test.\n");
612
613 /* get params output */
614 res = ens160_get_params_output(&gs_handle, params);
615 if (res != 0)
616 {
617 ens160_interface_debug_print("ens160: get params output failed.\n");
618 (void)ens160_deinit(&gs_handle);
619
620 return 1;
621 }
622 ens160_interface_debug_print("ens160: get params[%d] output 0x%02X.\n", 0, params[0]);
623 ens160_interface_debug_print("ens160: get params[%d] output 0x%02X.\n", 1, params[1]);
624 ens160_interface_debug_print("ens160: get params[%d] output 0x%02X.\n", 2, params[2]);
625 ens160_interface_debug_print("ens160: get params[%d] output 0x%02X.\n", 3, params[3]);
626 ens160_interface_debug_print("ens160: get params[%d] output 0x%02X.\n", 4, params[4]);
627 ens160_interface_debug_print("ens160: get params[%d] output 0x%02X.\n", 5, params[5]);
628 ens160_interface_debug_print("ens160: get params[%d] output 0x%02X.\n", 6, params[6]);
629 ens160_interface_debug_print("ens160: get params[%d] output 0x%02X.\n", 7, params[7]);
630
631 /* ens160_get_status test */
632 ens160_interface_debug_print("ens160: ens160_get_status test.\n");
633
634 /* get status */
635 res = ens160_get_status(&gs_handle, &status);
636 if (res != 0)
637 {
638 ens160_interface_debug_print("ens160: get status failed.\n");
639 (void)ens160_deinit(&gs_handle);
640
641 return 1;
642 }
643 ens160_interface_debug_print("ens160: status is 0x%02X.\n", status);
644
645 /* ens160_get_calculation_temperature test */
646 ens160_interface_debug_print("ens160: ens160_get_calculation_temperature test.\n");
647
648 /* get calculation temperature */
649 res = ens160_get_calculation_temperature(&gs_handle, &raw);
650 if (res != 0)
651 {
652 ens160_interface_debug_print("ens160: get calculation temperature failed.\n");
653 (void)ens160_deinit(&gs_handle);
654
655 return 1;
656 }
657 ens160_interface_debug_print("ens160: calculation temperature is 0x%04X.\n", raw);
658
659 /* ens160_get_calculation_humidity test */
660 ens160_interface_debug_print("ens160: ens160_get_calculation_humidity test.\n");
661
662 /* get calculation humidity */
663 res = ens160_get_calculation_humidity(&gs_handle, &raw);
664 if (res != 0)
665 {
666 ens160_interface_debug_print("ens160: get calculation humidity failed.\n");
667 (void)ens160_deinit(&gs_handle);
668
669 return 1;
670 }
671 ens160_interface_debug_print("ens160: calculation humidity is 0x%04X.\n", raw);
672
673 /* ens160_get_checksum test */
674 ens160_interface_debug_print("ens160: ens160_get_checksum test.\n");
675
676 /* get checksum */
677 res = ens160_get_checksum(&gs_handle, &checksum);
678 if (res != 0)
679 {
680 ens160_interface_debug_print("ens160: get checksum failed.\n");
681 (void)ens160_deinit(&gs_handle);
682
683 return 1;
684 }
685 ens160_interface_debug_print("ens160: checksum is 0x%02X.\n", checksum);
686
687 /* ens160_nop test */
688 ens160_interface_debug_print("ens160: ens160_nop test.\n");
689
690 /* nop */
691 res = ens160_nop(&gs_handle);
692 if (res != 0)
693 {
694 ens160_interface_debug_print("ens160: nop failed.\n");
695 (void)ens160_deinit(&gs_handle);
696
697 return 1;
698 }
699 ens160_interface_debug_print("ens160: check nop %s.\n", (res == 0) ? "ok" : "error");
700
701 /* ens160_clear test */
702 ens160_interface_debug_print("ens160: ens160_clear test.\n");
703
704 /* clear */
705 res = ens160_clear(&gs_handle);
706 if (res != 0)
707 {
708 ens160_interface_debug_print("ens160: clear failed.\n");
709 (void)ens160_deinit(&gs_handle);
710
711 return 1;
712 }
713 ens160_interface_debug_print("ens160: check clear %s.\n", (res == 0) ? "ok" : "error");
714
715 /* ens160_soft_reset test */
716 ens160_interface_debug_print("ens160: ens160_soft_reset test.\n");
717
718 /* soft reset */
719 res = ens160_soft_reset(&gs_handle);
720 if (res != 0)
721 {
722 ens160_interface_debug_print("ens160: soft reset failed.\n");
723 (void)ens160_deinit(&gs_handle);
724
725 return 1;
726 }
727 ens160_interface_debug_print("ens160: check soft reset %s.\n", (res == 0) ? "ok" : "error");
728
729 /* ens160_temperature_convert_to_register/ens160_temperature_convert_to_data test */
730 ens160_interface_debug_print("ens160: ens160_temperature_convert_to_register/ens160_temperature_convert_to_data test.\n");
731
732 celsius_deg = (float)(rand() % 1000) / 20.0f;
733 res = ens160_temperature_convert_to_register(&gs_handle, celsius_deg, &reg);
734 if (res != 0)
735 {
736 ens160_interface_debug_print("ens160: temperature convert to register failed.\n");
737 (void)ens160_deinit(&gs_handle);
738
739 return 1;
740 }
741 ens160_interface_debug_print("ens160: set temperature %0.2fC.\n", celsius_deg);
742 res = ens160_temperature_convert_to_data(&gs_handle, reg, &celsius_deg_check);
743 if (res != 0)
744 {
745 ens160_interface_debug_print("ens160: temperature convert to data failed.\n");
746 (void)ens160_deinit(&gs_handle);
747
748 return 1;
749 }
750 ens160_interface_debug_print("ens160: check temperature %0.2fC.\n", celsius_deg_check);
751
752 /* ens160_humidity_convert_to_register/ens160_humidity_convert_to_data test */
753 ens160_interface_debug_print("ens160: ens160_humidity_convert_to_register/ens160_humidity_convert_to_data test.\n");
754
755 percentage = (float)(rand() % 1000) / 10.0f;
756 res = ens160_humidity_convert_to_register(&gs_handle, percentage, &reg);
757 if (res != 0)
758 {
759 ens160_interface_debug_print("ens160: humidity convert to register failed.\n");
760 (void)ens160_deinit(&gs_handle);
761
762 return 1;
763 }
764 ens160_interface_debug_print("ens160: set humidity %0.2f%%.\n", percentage);
765 res = ens160_humidity_convert_to_data(&gs_handle, reg, &percentage_check);
766 if (res != 0)
767 {
768 ens160_interface_debug_print("ens160: humidity convert to data failed.\n");
769 (void)ens160_deinit(&gs_handle);
770
771 return 1;
772 }
773 ens160_interface_debug_print("ens160: check humidity %0.2f%%.\n", percentage_check);
774
775 /* ens160_resistance_convert_to_register/ens160_resistance_convert_to_data test */
776 ens160_interface_debug_print("ens160: ens160_resistance_convert_to_register/ens160_resistance_convert_to_data test.\n");
777
778 ohm = (float)(rand() % 1000) / 10.0f;
779 res = ens160_resistance_convert_to_register(&gs_handle, ohm, &reg);
780 if (res != 0)
781 {
782 ens160_interface_debug_print("ens160: resistance convert to register failed.\n");
783 (void)ens160_deinit(&gs_handle);
784
785 return 1;
786 }
787 ens160_interface_debug_print("ens160: set resistance %0.2fohm.\n", ohm);
788 res = ens160_resistance_convert_to_data(&gs_handle, reg, &ohm_check);
789 if (res != 0)
790 {
791 ens160_interface_debug_print("ens160: resistance convert to data failed.\n");
792 (void)ens160_deinit(&gs_handle);
793
794 return 1;
795 }
796 ens160_interface_debug_print("ens160: check resistance %0.2fohm.\n", ohm_check);
797
798 /* ens160_resistance_split test */
799 ens160_interface_debug_print("ens160: ens160_resistance_split test.\n");
800
801 params[0] = rand() % 0xFFU;
802 params[1] = rand() % 0xFFU;
803 params[2] = rand() % 0xFFU;
804 params[3] = rand() % 0xFFU;
805 params[4] = rand() % 0xFFU;
806 params[5] = rand() % 0xFFU;
807 params[6] = rand() % 0xFFU;
808 params[7] = rand() % 0xFFU;
809 res = ens160_resistance_split(&gs_handle, params,
810 &resistance0, &resistance1,
811 &resistance2, &resistance3);
812 if (res != 0)
813 {
814 ens160_interface_debug_print("ens160: resistance split failed.\n");
815 (void)ens160_deinit(&gs_handle);
816
817 return 1;
818 }
819 ens160_interface_debug_print("ens160: set raw[%d] 0x%02X.\n", 0, params[0]);
820 ens160_interface_debug_print("ens160: set raw[%d] 0x%02X.\n", 1, params[1]);
821 ens160_interface_debug_print("ens160: set raw[%d] 0x%02X.\n", 2, params[2]);
822 ens160_interface_debug_print("ens160: set raw[%d] 0x%02X.\n", 3, params[3]);
823 ens160_interface_debug_print("ens160: set raw[%d] 0x%02X.\n", 4, params[4]);
824 ens160_interface_debug_print("ens160: set raw[%d] 0x%02X.\n", 5, params[5]);
825 ens160_interface_debug_print("ens160: set raw[%d] 0x%02X.\n", 6, params[6]);
826 ens160_interface_debug_print("ens160: set raw[%d] 0x%02X.\n", 7, params[7]);
827 ens160_interface_debug_print("ens160: resistance0 is 0x%04X.\n", resistance0);
828 ens160_interface_debug_print("ens160: resistance1 is 0x%04X.\n", resistance1);
829 ens160_interface_debug_print("ens160: resistance2 is 0x%04X.\n", resistance2);
830 ens160_interface_debug_print("ens160: resistance3 is 0x%04X.\n", resistance3);
831
832 /* finish register test */
833 ens160_interface_debug_print("ens160: finish register test.\n");
834 (void)ens160_deinit(&gs_handle);
835
836 return 0;
837}
driver ens160 register test header file
ens160_mode_t
ens160 mode enumeration definition
uint8_t ens160_resistance_convert_to_register(ens160_handle_t *handle, float ohm, uint16_t *reg)
convert the resistance to the register raw data
ens160_address_t
ens160 address enumeration definition
uint8_t ens160_get_status(ens160_handle_t *handle, uint8_t *status)
get status
uint8_t ens160_resistance_convert_to_data(ens160_handle_t *handle, uint16_t reg, float *ohm)
convert the register raw data to the resistance
uint8_t ens160_set_params(ens160_handle_t *handle, uint8_t params[8])
set params
uint8_t ens160_deinit(ens160_handle_t *handle)
close the chip
uint8_t ens160_set_addr_pin(ens160_handle_t *handle, ens160_address_t addr_pin)
set the iic address pin
uint8_t ens160_set_interrupt_pin_drive(ens160_handle_t *handle, ens160_pin_drive_t drive)
set interrupt pin drive
ens160_pin_polarity_t
ens160 pin polarity enumeration definition
struct ens160_info_s ens160_info_t
ens160 information structure definition
uint8_t ens160_get_data_interrupt_pin_asserted(ens160_handle_t *handle, ens160_bool_t *enable)
get data interrupt pin asserted
uint8_t ens160_humidity_convert_to_data(ens160_handle_t *handle, uint16_t reg, float *percentage)
convert the register raw data to the humidity
uint8_t ens160_info(ens160_info_t *info)
get chip's information
uint8_t ens160_clear(ens160_handle_t *handle)
clear
uint8_t ens160_get_temperature_compensation(ens160_handle_t *handle, uint16_t *raw)
get temperature compensation
uint8_t ens160_temperature_convert_to_register(ens160_handle_t *handle, float celsius_deg, uint16_t *reg)
convert the temperature to the register raw data
uint8_t ens160_get_params_output(ens160_handle_t *handle, uint8_t params[8])
get params output
uint8_t ens160_get_params(ens160_handle_t *handle, uint8_t params[8])
get params
uint8_t ens160_get_interrupt_pin_polarity(ens160_handle_t *handle, ens160_pin_polarity_t *polarity)
get interrupt pin polarity
uint8_t ens160_set_interface(ens160_handle_t *handle, ens160_interface_t interface)
set the chip interface
uint8_t ens160_soft_reset(ens160_handle_t *handle)
soft reset
uint8_t ens160_set_interrupt_pin_polarity(ens160_handle_t *handle, ens160_pin_polarity_t polarity)
set interrupt pin polarity
uint8_t ens160_set_mode(ens160_handle_t *handle, ens160_mode_t mode)
set mode
uint8_t ens160_humidity_convert_to_register(ens160_handle_t *handle, float percentage, uint16_t *reg)
convert the humidity to the register raw data
uint8_t ens160_get_interrupt_pin_drive(ens160_handle_t *handle, ens160_pin_drive_t *drive)
get interrupt pin drive
uint8_t ens160_set_humidity_compensation(ens160_handle_t *handle, uint16_t raw)
set humidity compensation
ens160_interface_t
ens160 interface enumeration definition
uint8_t ens160_set_interrupt(ens160_handle_t *handle, ens160_bool_t enable)
enable or disable interrupt
uint8_t ens160_get_mode(ens160_handle_t *handle, ens160_mode_t *mode)
get mode
uint8_t ens160_set_general_purpose_read_interrupt_pin_asserted(ens160_handle_t *handle, ens160_bool_t enable)
set general purpose read interrupt pin asserted
uint8_t ens160_temperature_convert_to_data(ens160_handle_t *handle, uint16_t reg, float *celsius_deg)
convert the register raw data to the temperature
uint8_t ens160_get_interface(ens160_handle_t *handle, ens160_interface_t *interface)
get the chip interface
uint8_t ens160_get_humidity_compensation(ens160_handle_t *handle, uint16_t *raw)
get humidity compensation
uint8_t ens160_get_general_purpose_read_interrupt_pin_asserted(ens160_handle_t *handle, ens160_bool_t *enable)
get general purpose read interrupt pin asserted
ens160_bool_t
ens160 bool enumeration definition
uint8_t ens160_get_addr_pin(ens160_handle_t *handle, ens160_address_t *addr_pin)
get the iic address pin
uint8_t ens160_get_interrupt(ens160_handle_t *handle, ens160_bool_t *enable)
get interrupt
ens160_pin_drive_t
ens160 pin drive enumeration definition
uint8_t ens160_get_calculation_temperature(ens160_handle_t *handle, uint16_t *raw)
get calculation temperature
uint8_t ens160_get_app_version(ens160_handle_t *handle, uint8_t *major, uint8_t *minor, uint8_t *release)
get app version
struct ens160_handle_s ens160_handle_t
ens160 handle structure definition
uint8_t ens160_resistance_split(ens160_handle_t *handle, uint8_t raw[8], uint16_t *resistance0, uint16_t *resistance1, uint16_t *resistance2, uint16_t *resistance3)
resistance split
uint8_t ens160_get_calculation_humidity(ens160_handle_t *handle, uint16_t *raw)
get calculation humidity
uint8_t ens160_nop(ens160_handle_t *handle)
nop
uint8_t ens160_set_temperature_compensation(ens160_handle_t *handle, uint16_t raw)
set temperature compensation
uint8_t ens160_init(ens160_handle_t *handle)
initialize the chip
uint8_t ens160_set_data_interrupt_pin_asserted(ens160_handle_t *handle, ens160_bool_t enable)
set data interrupt pin asserted
uint8_t ens160_get_checksum(ens160_handle_t *handle, uint8_t *checksum)
get checksum
@ ENS160_MODE_STANDARD
@ ENS160_MODE_DEEP_SLEEP
@ ENS160_MODE_IDLE
@ ENS160_ADDRESS_1
@ ENS160_ADDRESS_0
@ ENS160_PIN_POLARITY_HIGH
@ ENS160_PIN_POLARITY_LOW
@ ENS160_INTERFACE_SPI
@ ENS160_INTERFACE_IIC
@ ENS160_BOOL_TRUE
@ ENS160_BOOL_FALSE
@ ENS160_PIN_DRIVE_PUSH_PULL
@ ENS160_PIN_DRIVE_OPEN_DRAIN
uint8_t ens160_interface_iic_init(void)
interface iic bus init
uint8_t ens160_interface_spi_write(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus write
uint8_t ens160_interface_iic_deinit(void)
interface iic bus deinit
void ens160_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t ens160_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
void ens160_interface_receive_callback(uint8_t type, uint16_t *dat)
interface receive callback
void ens160_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t ens160_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t ens160_interface_spi_deinit(void)
interface spi bus deinit
uint8_t ens160_interface_spi_read(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus read
uint8_t ens160_interface_spi_init(void)
interface spi bus init
uint8_t ens160_register_test(ens160_interface_t interface, ens160_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]