LibDriver HDC302X
Loading...
Searching...
No Matches
driver_hdc302x_register_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static hdc302x_handle_t gs_handle;
41
51{
52 uint8_t res;
53 uint8_t id[6];
54 uint8_t temperature_symbol;
55 uint8_t humidity_symbol;
56 uint8_t temperature_symbol_check;
57 uint8_t humidity_symbol_check;
58 uint16_t threshold;
59 uint16_t threshold_check;
60 uint16_t power;
61 uint16_t power_check;
62 uint16_t status;
63 uint16_t reg;
64 uint16_t offset;
65 uint16_t config;
66 float temperature_deg;
67 float humidity_percentage;
68 float temperature_deg_check;
69 float humidity_percentage_check;
71 hdc302x_info_t info;
72 hdc302x_low_power_mode_t low_power_mode;
73 hdc302x_auto_mode_t auto_mode;
74
75 /* link interface function */
84
85 /* get information */
86 res = hdc302x_info(&info);
87 if (res != 0)
88 {
89 hdc302x_interface_debug_print("hdc302x: get info failed.\n");
90
91 return 1;
92 }
93 else
94 {
95 /* print chip info */
96 hdc302x_interface_debug_print("hdc302x: chip is %s.\n", info.chip_name);
97 hdc302x_interface_debug_print("hdc302x: manufacturer is %s.\n", info.manufacturer_name);
98 hdc302x_interface_debug_print("hdc302x: interface is %s.\n", info.interface);
99 hdc302x_interface_debug_print("hdc302x: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
100 hdc302x_interface_debug_print("hdc302x: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
101 hdc302x_interface_debug_print("hdc302x: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
102 hdc302x_interface_debug_print("hdc302x: max current is %0.2fmA.\n", info.max_current_ma);
103 hdc302x_interface_debug_print("hdc302x: max temperature is %0.1fC.\n", info.temperature_max);
104 hdc302x_interface_debug_print("hdc302x: min temperature is %0.1fC.\n", info.temperature_min);
105 }
106
107 /* start register test */
108 hdc302x_interface_debug_print("hdc302x: start register test.\n");
109
110 /* hdc302x_set_addr/hdc302x_get_addr test */
111 hdc302x_interface_debug_print("hdc302x: hdc302x_set_addr/hdc302x_get_addr test.\n");
112
113 /* set addr 00 */
114 res = hdc302x_set_addr(&gs_handle, HDC302X_ADDRESS_00);
115 if (res != 0)
116 {
117 hdc302x_interface_debug_print("hdc302x: set addr failed.\n");
118
119 return 1;
120 }
121 hdc302x_interface_debug_print("hdc302x: set addr 00.\n");
122 res = hdc302x_get_addr(&gs_handle, &addr);
123 if (res != 0)
124 {
125 hdc302x_interface_debug_print("hdc302x: get addr failed.\n");
126
127 return 1;
128 }
129 hdc302x_interface_debug_print("hdc302x: check addr %s.\n", (addr == HDC302X_ADDRESS_00) ? "ok" : "error");
130
131 /* set addr 01 */
132 res = hdc302x_set_addr(&gs_handle, HDC302X_ADDRESS_01);
133 if (res != 0)
134 {
135 hdc302x_interface_debug_print("hdc302x: set addr failed.\n");
136
137 return 1;
138 }
139 hdc302x_interface_debug_print("hdc302x: set addr 01.\n");
140 res = hdc302x_get_addr(&gs_handle, &addr);
141 if (res != 0)
142 {
143 hdc302x_interface_debug_print("hdc302x: get addr failed.\n");
144
145 return 1;
146 }
147 hdc302x_interface_debug_print("hdc302x: check addr %s.\n", (addr == HDC302X_ADDRESS_01) ? "ok" : "error");
148
149 /* set addr 10 */
150 res = hdc302x_set_addr(&gs_handle, HDC302X_ADDRESS_10);
151 if (res != 0)
152 {
153 hdc302x_interface_debug_print("hdc302x: set addr failed.\n");
154
155 return 1;
156 }
157 hdc302x_interface_debug_print("hdc302x: set addr 10.\n");
158 res = hdc302x_get_addr(&gs_handle, &addr);
159 if (res != 0)
160 {
161 hdc302x_interface_debug_print("hdc302x: get addr failed.\n");
162
163 return 1;
164 }
165 hdc302x_interface_debug_print("hdc302x: check addr %s.\n", (addr == HDC302X_ADDRESS_10) ? "ok" : "error");
166
167 /* set addr 11 */
168 res = hdc302x_set_addr(&gs_handle, HDC302X_ADDRESS_11);
169 if (res != 0)
170 {
171 hdc302x_interface_debug_print("hdc302x: set addr failed.\n");
172
173 return 1;
174 }
175 hdc302x_interface_debug_print("hdc302x: set addr 11.\n");
176 res = hdc302x_get_addr(&gs_handle, &addr);
177 if (res != 0)
178 {
179 hdc302x_interface_debug_print("hdc302x: get addr failed.\n");
180
181 return 1;
182 }
183 hdc302x_interface_debug_print("hdc302x: check addr %s.\n", (addr == HDC302X_ADDRESS_11) ? "ok" : "error");
184
185 /* set the address */
186 res = hdc302x_set_addr(&gs_handle, addr_pin);
187 if (res != 0)
188 {
189 hdc302x_interface_debug_print("hdc302x: set addr failed.\n");
190
191 return 1;
192 }
193
194 /* init the hdc302x */
195 res = hdc302x_init(&gs_handle);
196 if (res != 0)
197 {
198 hdc302x_interface_debug_print("hdc302x: init failed.\n");
199
200 return 1;
201 }
202
203 /* hdc302x_set_low_power_mode/hdc302x_get_low_power_mode test */
204 hdc302x_interface_debug_print("hdc302x: hdc302x_set_low_power_mode/hdc302x_get_low_power_mode test.\n");
205
206 /* set low power mode0 */
208 if (res != 0)
209 {
210 hdc302x_interface_debug_print("hdc302x: set low power mode failed.\n");
211 (void)hdc302x_deinit(&gs_handle);
212
213 return 1;
214 }
215 hdc302x_interface_debug_print("hdc302x: set low power mode0.\n");
216 res = hdc302x_get_low_power_mode(&gs_handle, &low_power_mode);
217 if (res != 0)
218 {
219 hdc302x_interface_debug_print("hdc302x: get low power mode failed.\n");
220 (void)hdc302x_deinit(&gs_handle);
221
222 return 1;
223 }
224 hdc302x_interface_debug_print("hdc302x: check low power mode %s.\n", (low_power_mode == HDC302X_LOW_POWER_MODE_0) ? "ok" : "error");
225
226 /* set low power mode1 */
228 if (res != 0)
229 {
230 hdc302x_interface_debug_print("hdc302x: set low power mode failed.\n");
231 (void)hdc302x_deinit(&gs_handle);
232
233 return 1;
234 }
235 hdc302x_interface_debug_print("hdc302x: set low power mode1.\n");
236 res = hdc302x_get_low_power_mode(&gs_handle, &low_power_mode);
237 if (res != 0)
238 {
239 hdc302x_interface_debug_print("hdc302x: get low power mode failed.\n");
240 (void)hdc302x_deinit(&gs_handle);
241
242 return 1;
243 }
244 hdc302x_interface_debug_print("hdc302x: check low power mode %s.\n", (low_power_mode == HDC302X_LOW_POWER_MODE_1) ? "ok" : "error");
245
246 /* set low power mode2 */
248 if (res != 0)
249 {
250 hdc302x_interface_debug_print("hdc302x: set low power mode failed.\n");
251 (void)hdc302x_deinit(&gs_handle);
252
253 return 1;
254 }
255 hdc302x_interface_debug_print("hdc302x: set low power mode2.\n");
256 res = hdc302x_get_low_power_mode(&gs_handle, &low_power_mode);
257 if (res != 0)
258 {
259 hdc302x_interface_debug_print("hdc302x: get low power mode failed.\n");
260 (void)hdc302x_deinit(&gs_handle);
261
262 return 1;
263 }
264 hdc302x_interface_debug_print("hdc302x: check low power mode %s.\n", (low_power_mode == HDC302X_LOW_POWER_MODE_2) ? "ok" : "error");
265
266 /* set low power mode3 */
268 if (res != 0)
269 {
270 hdc302x_interface_debug_print("hdc302x: set low power mode failed.\n");
271 (void)hdc302x_deinit(&gs_handle);
272
273 return 1;
274 }
275 hdc302x_interface_debug_print("hdc302x: set low power mode3.\n");
276 res = hdc302x_get_low_power_mode(&gs_handle, &low_power_mode);
277 if (res != 0)
278 {
279 hdc302x_interface_debug_print("hdc302x: get low power mode failed.\n");
280 (void)hdc302x_deinit(&gs_handle);
281
282 return 1;
283 }
284 hdc302x_interface_debug_print("hdc302x: check low power mode %s.\n", (low_power_mode == HDC302X_LOW_POWER_MODE_3) ? "ok" : "error");
285
286 /* hdc302x_set_auto_mode/hdc302x_get_auto_mode test */
287 hdc302x_interface_debug_print("hdc302x: hdc302x_set_auto_mode/hdc302x_get_auto_mode test.\n");
288
289 /* set auto mode 0.5hz */
291 if (res != 0)
292 {
293 hdc302x_interface_debug_print("hdc302x: set auto mode failed.\n");
294 (void)hdc302x_deinit(&gs_handle);
295
296 return 1;
297 }
298 hdc302x_interface_debug_print("hdc302x: set auto mode 0.5hz.\n");
299 res = hdc302x_get_auto_mode(&gs_handle, &auto_mode);
300 if (res != 0)
301 {
302 hdc302x_interface_debug_print("hdc302x: get auto mode failed.\n");
303 (void)hdc302x_deinit(&gs_handle);
304
305 return 1;
306 }
307 hdc302x_interface_debug_print("hdc302x: check auto mode %s.\n", (auto_mode == HDC302X_AUTO_MODE_0P5_HZ) ? "ok" : "error");
308
309 /* set auto mode 1hz */
311 if (res != 0)
312 {
313 hdc302x_interface_debug_print("hdc302x: set auto mode failed.\n");
314 (void)hdc302x_deinit(&gs_handle);
315
316 return 1;
317 }
318 hdc302x_interface_debug_print("hdc302x: set auto mode 1hz.\n");
319 res = hdc302x_get_auto_mode(&gs_handle, &auto_mode);
320 if (res != 0)
321 {
322 hdc302x_interface_debug_print("hdc302x: get auto mode failed.\n");
323 (void)hdc302x_deinit(&gs_handle);
324
325 return 1;
326 }
327 hdc302x_interface_debug_print("hdc302x: check auto mode %s.\n", (auto_mode == HDC302X_AUTO_MODE_1_HZ) ? "ok" : "error");
328
329 /* set auto mode 2hz */
331 if (res != 0)
332 {
333 hdc302x_interface_debug_print("hdc302x: set auto mode failed.\n");
334 (void)hdc302x_deinit(&gs_handle);
335
336 return 1;
337 }
338 hdc302x_interface_debug_print("hdc302x: set auto mode 2hz.\n");
339 res = hdc302x_get_auto_mode(&gs_handle, &auto_mode);
340 if (res != 0)
341 {
342 hdc302x_interface_debug_print("hdc302x: get auto mode failed.\n");
343 (void)hdc302x_deinit(&gs_handle);
344
345 return 1;
346 }
347 hdc302x_interface_debug_print("hdc302x: check auto mode %s.\n", (auto_mode == HDC302X_AUTO_MODE_2_HZ) ? "ok" : "error");
348
349 /* set auto mode 4hz */
351 if (res != 0)
352 {
353 hdc302x_interface_debug_print("hdc302x: set auto mode failed.\n");
354 (void)hdc302x_deinit(&gs_handle);
355
356 return 1;
357 }
358 hdc302x_interface_debug_print("hdc302x: set auto mode 4hz.\n");
359 res = hdc302x_get_auto_mode(&gs_handle, &auto_mode);
360 if (res != 0)
361 {
362 hdc302x_interface_debug_print("hdc302x: get auto mode failed.\n");
363 (void)hdc302x_deinit(&gs_handle);
364
365 return 1;
366 }
367 hdc302x_interface_debug_print("hdc302x: check auto mode %s.\n", (auto_mode == HDC302X_AUTO_MODE_4_HZ) ? "ok" : "error");
368
369 /* set auto mode 10hz */
371 if (res != 0)
372 {
373 hdc302x_interface_debug_print("hdc302x: set auto mode failed.\n");
374 (void)hdc302x_deinit(&gs_handle);
375
376 return 1;
377 }
378 hdc302x_interface_debug_print("hdc302x: set auto mode 10hz.\n");
379 res = hdc302x_get_auto_mode(&gs_handle, &auto_mode);
380 if (res != 0)
381 {
382 hdc302x_interface_debug_print("hdc302x: get auto mode failed.\n");
383 (void)hdc302x_deinit(&gs_handle);
384
385 return 1;
386 }
387 hdc302x_interface_debug_print("hdc302x: check auto mode %s.\n", (auto_mode == HDC302X_AUTO_MODE_10_HZ) ? "ok" : "error");
388
389 /* hdc302x_write_set_low_alert/hdc302x_read_set_low_alert test */
390 hdc302x_interface_debug_print("hdc302x: hdc302x_write_set_low_alert/hdc302x_read_set_low_alert test.\n");
391
392 threshold = rand() % 0xFFFFU;
393 res = hdc302x_write_set_low_alert(&gs_handle, threshold);
394 if (res != 0)
395 {
396 hdc302x_interface_debug_print("hdc302x: write set low alert failed.\n");
397 (void)hdc302x_deinit(&gs_handle);
398
399 return 1;
400 }
401 hdc302x_interface_debug_print("hdc302x: write threshold 0x%04X.\n", threshold);
402 res = hdc302x_read_set_low_alert(&gs_handle, &threshold_check);
403 if (res != 0)
404 {
405 hdc302x_interface_debug_print("hdc302x: read set low alert failed.\n");
406 (void)hdc302x_deinit(&gs_handle);
407
408 return 1;
409 }
410 hdc302x_interface_debug_print("hdc302x: check threshold %s.\n", (threshold == threshold_check) ? "ok" : "error");
411
412 /* hdc302x_write_clear_low_alert/hdc302x_read_clear_low_alert test */
413 hdc302x_interface_debug_print("hdc302x: hdc302x_write_clear_low_alert/hdc302x_read_clear_low_alert test.\n");
414
415 threshold = rand() % 0xFFFFU;
416 res = hdc302x_write_clear_low_alert(&gs_handle, threshold);
417 if (res != 0)
418 {
419 hdc302x_interface_debug_print("hdc302x: write clear low alert failed.\n");
420 (void)hdc302x_deinit(&gs_handle);
421
422 return 1;
423 }
424 hdc302x_interface_debug_print("hdc302x: write threshold 0x%04X.\n", threshold);
425 res = hdc302x_read_clear_low_alert(&gs_handle, &threshold_check);
426 if (res != 0)
427 {
428 hdc302x_interface_debug_print("hdc302x: read clear low alert failed.\n");
429 (void)hdc302x_deinit(&gs_handle);
430
431 return 1;
432 }
433 hdc302x_interface_debug_print("hdc302x: check threshold %s.\n", (threshold == threshold_check) ? "ok" : "error");
434
435 /* hdc302x_write_set_high_alert/hdc302x_read_set_high_alert test */
436 hdc302x_interface_debug_print("hdc302x: hdc302x_write_set_high_alert/hdc302x_read_set_high_alert test.\n");
437
438 threshold = rand() % 0xFFFFU;
439 res = hdc302x_write_set_high_alert(&gs_handle, threshold);
440 if (res != 0)
441 {
442 hdc302x_interface_debug_print("hdc302x: write set high alert failed.\n");
443 (void)hdc302x_deinit(&gs_handle);
444
445 return 1;
446 }
447 hdc302x_interface_debug_print("hdc302x: write threshold 0x%04X.\n", threshold);
448 res = hdc302x_read_set_high_alert(&gs_handle, &threshold_check);
449 if (res != 0)
450 {
451 hdc302x_interface_debug_print("hdc302x: read set high alert failed.\n");
452 (void)hdc302x_deinit(&gs_handle);
453
454 return 1;
455 }
456 hdc302x_interface_debug_print("hdc302x: check threshold %s.\n", (threshold == threshold_check) ? "ok" : "error");
457
458 /* hdc302x_write_clear_high_alert/hdc302x_read_clear_high_alert test */
459 hdc302x_interface_debug_print("hdc302x: hdc302x_write_clear_high_alert/hdc302x_read_clear_high_alert test.\n");
460
461 threshold = rand() % 0xFFFFU;
462 res = hdc302x_write_clear_high_alert(&gs_handle, threshold);
463 if (res != 0)
464 {
465 hdc302x_interface_debug_print("hdc302x: write clear high alert failed.\n");
466 (void)hdc302x_deinit(&gs_handle);
467
468 return 1;
469 }
470 hdc302x_interface_debug_print("hdc302x: write threshold 0x%04X.\n", threshold);
471 res = hdc302x_read_clear_high_alert(&gs_handle, &threshold_check);
472 if (res != 0)
473 {
474 hdc302x_interface_debug_print("hdc302x: read clear high alert failed.\n");
475 (void)hdc302x_deinit(&gs_handle);
476
477 return 1;
478 }
479 hdc302x_interface_debug_print("hdc302x: check threshold %s.\n", (threshold == threshold_check) ? "ok" : "error");
480
481 /* hdc302x_set_heater_power/hdc302x_get_heater_power test */
482 hdc302x_interface_debug_print("hdc302x: hdc302x_set_heater_power/hdc302x_get_heater_power test.\n");
483
484 power = rand() % 0x3FFFU;
485 res = hdc302x_set_heater_power(&gs_handle, power);
486 if (res != 0)
487 {
488 hdc302x_interface_debug_print("hdc302x: set heater power failed.\n");
489 (void)hdc302x_deinit(&gs_handle);
490
491 return 1;
492 }
493 hdc302x_interface_debug_print("hdc302x: set heater power 0x%04X.\n", power);
494 res = hdc302x_get_heater_power(&gs_handle, &power_check);
495 if (res != 0)
496 {
497 hdc302x_interface_debug_print("hdc302x: get heater power failed.\n");
498 (void)hdc302x_deinit(&gs_handle);
499
500 return 1;
501 }
502 hdc302x_interface_debug_print("hdc302x: check heater power %s.\n", (power == power_check) ? "ok" : "error");
503
504 /* hdc302x_enable_heater test */
505 hdc302x_interface_debug_print("hdc302x: hdc302x_enable_heater test.\n");
506
507 /* enable heater */
508 res = hdc302x_enable_heater(&gs_handle);
509 if (res != 0)
510 {
511 hdc302x_interface_debug_print("hdc302x: enable heater failed.\n");
512 (void)hdc302x_deinit(&gs_handle);
513
514 return 1;
515 }
516 hdc302x_interface_debug_print("hdc302x: check enable heater %s.\n", (res == 0) ? "ok" : "error");
517
518 /* hdc302x_disable_heater test */
519 hdc302x_interface_debug_print("hdc302x: hdc302x_disable_heater test.\n");
520
521 /* disable heater */
522 res = hdc302x_disable_heater(&gs_handle);
523 if (res != 0)
524 {
525 hdc302x_interface_debug_print("hdc302x: disable heater failed.\n");
526 (void)hdc302x_deinit(&gs_handle);
527
528 return 1;
529 }
530 hdc302x_interface_debug_print("hdc302x: check disable heater %s.\n", (res == 0) ? "ok" : "error");
531
532 /* hdc302x_get_nist_id test */
533 hdc302x_interface_debug_print("hdc302x: hdc302x_get_nist_id test.\n");
534
535 /* get nist id */
536 res = hdc302x_get_nist_id(&gs_handle, id);
537 if (res != 0)
538 {
539 hdc302x_interface_debug_print("hdc302x: get nist id failed.\n");
540 (void)hdc302x_deinit(&gs_handle);
541
542 return 1;
543 }
544 hdc302x_interface_debug_print("hdc302x: nist id is 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X.\n",
545 id[0], id[1], id[2], id[3], id[4], id[5]);
546
547 /* hdc302x_get_status test */
548 hdc302x_interface_debug_print("hdc302x: hdc302x_get_status test.\n");
549
550 /* get status */
551 res = hdc302x_get_status(&gs_handle, &status);
552 if (res != 0)
553 {
554 hdc302x_interface_debug_print("hdc302x: get status failed.\n");
555 (void)hdc302x_deinit(&gs_handle);
556
557 return 1;
558 }
559 hdc302x_interface_debug_print("hdc302x: status is 0x%04X.\n", status);
560
561 /* hdc302x_clear_status test */
562 hdc302x_interface_debug_print("hdc302x: hdc302x_clear_status test.\n");
563
564 /* clear status */
565 res = hdc302x_clear_status(&gs_handle);
566 if (res != 0)
567 {
568 hdc302x_interface_debug_print("hdc302x: clear status failed.\n");
569 (void)hdc302x_deinit(&gs_handle);
570
571 return 1;
572 }
573 hdc302x_interface_debug_print("hdc302x: check clear status %s.\n", (res == 0) ? "ok" : "error");
574
575 /* hdc302x_alert_threshold_convert_to_register/hdc302x_alert_threshold_convert_to_data test */
576 hdc302x_interface_debug_print("hdc302x: hdc302x_alert_threshold_convert_to_register/hdc302x_alert_threshold_convert_to_data test.\n");
577
578 temperature_deg = (float)(rand() % 10000) / 100.0f;
579 humidity_percentage = (float)(rand() % 10000) / 100.0f;
580 res = hdc302x_alert_threshold_convert_to_register(&gs_handle, temperature_deg, humidity_percentage, &reg);
581 if (res != 0)
582 {
583 hdc302x_interface_debug_print("hdc302x: alert threshold convert to register failed.\n");
584 (void)hdc302x_deinit(&gs_handle);
585
586 return 1;
587 }
588 hdc302x_interface_debug_print("hdc302x: set temperature %0.2fC.\n", temperature_deg);
589 hdc302x_interface_debug_print("hdc302x: set humidity %0.2f%%.\n", humidity_percentage);
590 res = hdc302x_alert_threshold_convert_to_data(&gs_handle, reg, &temperature_deg_check, &humidity_percentage_check);
591 if (res != 0)
592 {
593 hdc302x_interface_debug_print("hdc302x: alert threshold convert to data failed.\n");
594 (void)hdc302x_deinit(&gs_handle);
595
596 return 1;
597 }
598 hdc302x_interface_debug_print("hdc302x: check temperature %0.2fC.\n", temperature_deg_check);
599 hdc302x_interface_debug_print("hdc302x: check humidity %0.2f%%.\n", humidity_percentage_check);
600
601 /* hdc302x_offset_convert_to_register/hdc302x_offset_convert_to_data test */
602 hdc302x_interface_debug_print("hdc302x: hdc302x_offset_convert_to_register/hdc302x_offset_convert_to_data test.\n");
603
604 temperature_symbol = ((rand() % 2) != 0) ? 1 : 0;
605 humidity_symbol = ((rand() % 2) != 0) ? 1 : 0;
606 temperature_deg = (float)(rand() % 2000) / 100.0f;
607 humidity_percentage = (float)(rand() % 2000) / 100.0f;
608 res = hdc302x_offset_convert_to_register(&gs_handle, temperature_symbol, temperature_deg,
609 humidity_symbol, humidity_percentage, &reg);
610 if (res != 0)
611 {
612 hdc302x_interface_debug_print("hdc302x: offset convert to register failed.\n");
613 (void)hdc302x_deinit(&gs_handle);
614
615 return 1;
616 }
617 hdc302x_interface_debug_print("hdc302x: set temperature symbol %d.\n", temperature_symbol);
618 hdc302x_interface_debug_print("hdc302x: set temperature %0.2fC.\n", temperature_deg);
619 hdc302x_interface_debug_print("hdc302x: set humidity symbol %d.\n", humidity_symbol);
620 hdc302x_interface_debug_print("hdc302x: set humidity %0.2f%%.\n", humidity_percentage);
621 res = hdc302x_offset_convert_to_data(&gs_handle, reg,
622 &temperature_symbol_check, &temperature_deg_check,
623 &humidity_symbol_check, &humidity_percentage_check);
624 if (res != 0)
625 {
626 hdc302x_interface_debug_print("hdc302x: offset convert to data failed.\n");
627 (void)hdc302x_deinit(&gs_handle);
628
629 return 1;
630 }
631 hdc302x_interface_debug_print("hdc302x: check temperature symbol %d.\n", temperature_symbol_check);
632 hdc302x_interface_debug_print("hdc302x: check temperature %0.2fC.\n", temperature_deg_check);
633 hdc302x_interface_debug_print("hdc302x: check humidity symbol %d.\n", humidity_symbol_check);
634 hdc302x_interface_debug_print("hdc302x: check humidity %0.2f%%.\n", humidity_percentage_check);
635
636 /* hdc302x_nvm_read_temperature_humidity_offset test */
637 hdc302x_interface_debug_print("hdc302x: hdc302x_nvm_read_temperature_humidity_offset test.\n");
638
639 /* nvm read temperature humidity offset */
640 res = hdc302x_nvm_read_temperature_humidity_offset(&gs_handle, &offset);
641 if (res != 0)
642 {
643 hdc302x_interface_debug_print("hdc302x: nvm read temperature humidity offset failed.\n");
644 (void)hdc302x_deinit(&gs_handle);
645
646 return 1;
647 }
648 hdc302x_interface_debug_print("hdc302x: nvm read temperature humidity offset is 0x%04X.\n", offset);
649
650 /* hdc302x_nvm_program_temperature_humidity_offset test */
651 hdc302x_interface_debug_print("hdc302x: hdc302x_nvm_program_temperature_humidity_offset test.\n");
652
653 /* program temperature humidity offset */
654 res = hdc302x_nvm_program_temperature_humidity_offset(&gs_handle, offset);
655 if (res != 0)
656 {
657 hdc302x_interface_debug_print("hdc302x: nvm program temperature humidity offset failed.\n");
658 (void)hdc302x_deinit(&gs_handle);
659
660 return 1;
661 }
662 hdc302x_interface_debug_print("hdc302x: check nvm program temperature humidity offset %s.\n", (res == 0) ? "ok" : "error");
663
664 /* hdc302x_nvm_read_config test */
665 hdc302x_interface_debug_print("hdc302x: hdc302x_nvm_read_config test.\n");
666
667 /* nvm read config */
668 res = hdc302x_nvm_read_config(&gs_handle, &config);
669 if (res != 0)
670 {
671 hdc302x_interface_debug_print("hdc302x: nvm read config failed.\n");
672 (void)hdc302x_deinit(&gs_handle);
673
674 return 1;
675 }
676 hdc302x_interface_debug_print("hdc302x: nvm read config is 0x%04X.\n", config);
677
678 /* hdc302x_nvm_program_config test */
679 hdc302x_interface_debug_print("hdc302x: hdc302x_nvm_program_config test.\n");
680
681 /* nvm program config */
682 res = hdc302x_nvm_program_config(&gs_handle, config);
683 if (res != 0)
684 {
685 hdc302x_interface_debug_print("hdc302x: nvm program config failed.\n");
686 (void)hdc302x_deinit(&gs_handle);
687
688 return 1;
689 }
690 hdc302x_interface_debug_print("hdc302x: check nvm program config %s.\n", (res == 0) ? "ok" : "error");
691
692 /* hdc302x_soft_reset test */
693 hdc302x_interface_debug_print("hdc302x: hdc302x_soft_reset test.\n");
694
695 /* soft reset */
696 res = hdc302x_soft_reset(&gs_handle);
697 if (res != 0)
698 {
699 hdc302x_interface_debug_print("hdc302x: soft reset failed.\n");
700 (void)hdc302x_deinit(&gs_handle);
701
702 return 1;
703 }
704 hdc302x_interface_debug_print("hdc302x: check soft reset %s.\n", (res == 0) ? "ok" : "error");
705
706 /* hdc302x_nvm_program_alert_threshold test */
707 hdc302x_interface_debug_print("hdc302x: hdc302x_nvm_program_alert_threshold test.\n");
708
709 /* nvm program alert threshold */
710 res = hdc302x_nvm_program_alert_threshold(&gs_handle);
711 if (res != 0)
712 {
713 hdc302x_interface_debug_print("hdc302x: nvm program alert threshold failed.\n");
714 (void)hdc302x_deinit(&gs_handle);
715
716 return 1;
717 }
718 hdc302x_interface_debug_print("hdc302x: check nvm program alert threshold %s.\n", (res == 0) ? "ok" : "error");
719
720 /* finish register test */
721 hdc302x_interface_debug_print("hdc302x: finish register test.\n");
722 (void)hdc302x_deinit(&gs_handle);
723
724 return 0;
725}
driver hdc302x register test header file
uint8_t hdc302x_alert_threshold_convert_to_data(hdc302x_handle_t *handle, uint16_t reg, float *temperature_deg, float *humidity_percentage)
convert the alert threshold to the real data
uint8_t hdc302x_get_addr(hdc302x_handle_t *handle, hdc302x_address_t *addr)
get the iic address
uint8_t hdc302x_read_clear_high_alert(hdc302x_handle_t *handle, uint16_t *threshold)
read clear high alert
uint8_t hdc302x_read_set_low_alert(hdc302x_handle_t *handle, uint16_t *threshold)
read set low alert
uint8_t hdc302x_nvm_program_temperature_humidity_offset(hdc302x_handle_t *handle, uint16_t offset)
nvm program temperature humidity offset
uint8_t hdc302x_disable_heater(hdc302x_handle_t *handle)
disable heater
uint8_t hdc302x_set_heater_power(hdc302x_handle_t *handle, uint16_t power)
set heater power
uint8_t hdc302x_nvm_read_temperature_humidity_offset(hdc302x_handle_t *handle, uint16_t *offset)
nvm read temperature humidity offset
uint8_t hdc302x_offset_convert_to_data(hdc302x_handle_t *handle, uint16_t reg, uint8_t *temperature_symbol, float *temperature_deg, uint8_t *humidity_symbol, float *humidity_percentage)
convert the offset to the real data
struct hdc302x_info_s hdc302x_info_t
hdc302x information structure definition
uint8_t hdc302x_enable_heater(hdc302x_handle_t *handle)
enable heater
uint8_t hdc302x_set_addr(hdc302x_handle_t *handle, hdc302x_address_t addr)
set the iic address
uint8_t hdc302x_deinit(hdc302x_handle_t *handle)
close the chip
hdc302x_address_t
hdc302x address enumeration definition
uint8_t hdc302x_offset_convert_to_register(hdc302x_handle_t *handle, uint8_t temperature_symbol, float temperature_deg, uint8_t humidity_symbol, float humidity_percentage, uint16_t *reg)
convert the offset to the register raw data
uint8_t hdc302x_set_low_power_mode(hdc302x_handle_t *handle, hdc302x_low_power_mode_t mode)
set low power mode
uint8_t hdc302x_get_nist_id(hdc302x_handle_t *handle, uint8_t id[6])
get nist id
hdc302x_auto_mode_t
hdc302x auto mode enumeration definition
uint8_t hdc302x_set_auto_mode(hdc302x_handle_t *handle, hdc302x_auto_mode_t mode)
set auto mode
uint8_t hdc302x_alert_threshold_convert_to_register(hdc302x_handle_t *handle, float temperature_deg, float humidity_percentage, uint16_t *reg)
convert the alert threshold to the register raw data
uint8_t hdc302x_get_low_power_mode(hdc302x_handle_t *handle, hdc302x_low_power_mode_t *mode)
get low power mode
uint8_t hdc302x_read_set_high_alert(hdc302x_handle_t *handle, uint16_t *threshold)
read set high alert
uint8_t hdc302x_nvm_read_config(hdc302x_handle_t *handle, uint16_t *config)
nvm read config
uint8_t hdc302x_init(hdc302x_handle_t *handle)
initialize the chip
uint8_t hdc302x_write_clear_low_alert(hdc302x_handle_t *handle, uint16_t threshold)
write clear low alert
uint8_t hdc302x_get_auto_mode(hdc302x_handle_t *handle, hdc302x_auto_mode_t *mode)
get auto mode
hdc302x_low_power_mode_t
hdc302x low power mode enumeration definition
uint8_t hdc302x_clear_status(hdc302x_handle_t *handle)
clear status
uint8_t hdc302x_write_set_low_alert(hdc302x_handle_t *handle, uint16_t threshold)
write set low alert
struct hdc302x_handle_s hdc302x_handle_t
hdc302x handle structure definition
uint8_t hdc302x_read_clear_low_alert(hdc302x_handle_t *handle, uint16_t *threshold)
read clear low alert
uint8_t hdc302x_soft_reset(hdc302x_handle_t *handle)
soft reset
uint8_t hdc302x_nvm_program_alert_threshold(hdc302x_handle_t *handle)
nvm program alert threshold
uint8_t hdc302x_get_status(hdc302x_handle_t *handle, uint16_t *status)
get status
uint8_t hdc302x_get_heater_power(hdc302x_handle_t *handle, uint16_t *power)
get heater power
uint8_t hdc302x_info(hdc302x_info_t *info)
get chip's information
uint8_t hdc302x_write_clear_high_alert(hdc302x_handle_t *handle, uint16_t threshold)
write clear high alert
uint8_t hdc302x_nvm_program_config(hdc302x_handle_t *handle, uint16_t config)
nvm program config
uint8_t hdc302x_write_set_high_alert(hdc302x_handle_t *handle, uint16_t threshold)
write set high alert
@ HDC302X_ADDRESS_00
@ HDC302X_ADDRESS_01
@ HDC302X_ADDRESS_11
@ HDC302X_ADDRESS_10
@ HDC302X_AUTO_MODE_2_HZ
@ HDC302X_AUTO_MODE_10_HZ
@ HDC302X_AUTO_MODE_0P5_HZ
@ HDC302X_AUTO_MODE_1_HZ
@ HDC302X_AUTO_MODE_4_HZ
@ HDC302X_LOW_POWER_MODE_3
@ HDC302X_LOW_POWER_MODE_2
@ HDC302X_LOW_POWER_MODE_0
@ HDC302X_LOW_POWER_MODE_1
uint8_t hdc302x_interface_iic_write_address16(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len)
interface iic bus write address16
void hdc302x_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t hdc302x_interface_iic_init(void)
interface iic bus init
uint8_t hdc302x_interface_iic_read_address16(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len)
interface iic bus read address16
void hdc302x_interface_receive_callback(uint16_t type)
interface receive callback
void hdc302x_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t hdc302x_interface_iic_deinit(void)
interface iic bus deinit
uint8_t hdc302x_register_test(hdc302x_address_t addr_pin)
register test
uint32_t driver_version
char manufacturer_name[32]