LibDriver OPT300X
Loading...
Searching...
No Matches
driver_opt300x_register_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static opt300x_handle_t gs_handle;
41
52{
53 uint8_t res;
54 uint16_t reg;
55 uint16_t limit;
56 uint16_t limit_check;
57 float nw_cm2;
58 float nw_cm2_check;
59 float lux;
60 float lux_check;
61 opt300x_t type_check;
62 opt300x_info_t info;
63 opt300x_address_t addr_pin;
64 opt300x_bool_t enable;
65 opt3002_range_t opt3002_range;
66 opt3005_range_t opt3005_range;
67 opt300x_range_t range;
71
72 /* link interface function */
81
82 /* get chip information */
83 res = opt300x_info(&info);
84 if (res != 0)
85 {
86 opt300x_interface_debug_print("opt300x: get info failed.\n");
87
88 return 1;
89 }
90 else
91 {
92 /* print chip information */
93 opt300x_interface_debug_print("opt300x: chip is %s.\n", info.chip_name);
94 opt300x_interface_debug_print("opt300x: manufacturer is %s.\n", info.manufacturer_name);
95 opt300x_interface_debug_print("opt300x: interface is %s.\n", info.interface);
96 opt300x_interface_debug_print("opt300x: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
97 opt300x_interface_debug_print("opt300x: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
98 opt300x_interface_debug_print("opt300x: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
99 opt300x_interface_debug_print("opt300x: max current is %0.2fmA.\n", info.max_current_ma);
100 opt300x_interface_debug_print("opt300x: max temperature is %0.1fC.\n", info.temperature_max);
101 opt300x_interface_debug_print("opt300x: min temperature is %0.1fC.\n", info.temperature_min);
102 }
103
104 /* start register test */
105 opt300x_interface_debug_print("opt300x: start register test.\n");
106
107 /* opt300x_set_type/opt300x_get_type test */
108 opt300x_interface_debug_print("opt300x: opt300x_set_type/opt300x_get_type test.\n");
109
110 /* opt3001 */
111 res = opt300x_set_type(&gs_handle, OPT3001);
112 if (res != 0)
113 {
114 opt300x_interface_debug_print("opt300x: set type failed.\n");
115
116 return 1;
117 }
118 opt300x_interface_debug_print("opt300x: set type opt3001.\n");
119 res = opt300x_get_type(&gs_handle, &type_check);
120 if (res != 0)
121 {
122 opt300x_interface_debug_print("opt300x: get type failed.\n");
123
124 return 1;
125 }
126 opt300x_interface_debug_print("opt300x: check type %s.\n", type_check == OPT3001 ? "ok" : "error");
127
128 /* opt3002 */
129 res = opt300x_set_type(&gs_handle, OPT3002);
130 if (res != 0)
131 {
132 opt300x_interface_debug_print("opt300x: set type failed.\n");
133
134 return 1;
135 }
136 opt300x_interface_debug_print("opt300x: set type opt3002.\n");
137 res = opt300x_get_type(&gs_handle, &type_check);
138 if (res != 0)
139 {
140 opt300x_interface_debug_print("opt300x: get type failed.\n");
141
142 return 1;
143 }
144 opt300x_interface_debug_print("opt300x: check type %s.\n", type_check == OPT3002 ? "ok" : "error");
145
146 /* opt3004 */
147 res = opt300x_set_type(&gs_handle, OPT3004);
148 if (res != 0)
149 {
150 opt300x_interface_debug_print("opt300x: set type failed.\n");
151
152 return 1;
153 }
154 opt300x_interface_debug_print("opt300x: set type opt3004.\n");
155 res = opt300x_get_type(&gs_handle, &type_check);
156 if (res != 0)
157 {
158 opt300x_interface_debug_print("opt300x: get type failed.\n");
159
160 return 1;
161 }
162 opt300x_interface_debug_print("opt300x: check type %s.\n", type_check == OPT3004 ? "ok" : "error");
163
164 /* opt3005 */
165 res = opt300x_set_type(&gs_handle, OPT3005);
166 if (res != 0)
167 {
168 opt300x_interface_debug_print("opt300x: set type failed.\n");
169
170 return 1;
171 }
172 opt300x_interface_debug_print("opt300x: set type opt3005.\n");
173 res = opt300x_get_type(&gs_handle, &type_check);
174 if (res != 0)
175 {
176 opt300x_interface_debug_print("opt300x: get type failed.\n");
177
178 return 1;
179 }
180 opt300x_interface_debug_print("opt300x: check type %s.\n", type_check == OPT3005 ? "ok" : "error");
181
182 /* opt3006 */
183 res = opt300x_set_type(&gs_handle, OPT3006);
184 if (res != 0)
185 {
186 opt300x_interface_debug_print("opt300x: set type failed.\n");
187
188 return 1;
189 }
190 opt300x_interface_debug_print("opt300x: set type opt3006.\n");
191 res = opt300x_get_type(&gs_handle, &type_check);
192 if (res != 0)
193 {
194 opt300x_interface_debug_print("opt300x: get type failed.\n");
195
196 return 1;
197 }
198 opt300x_interface_debug_print("opt300x: check type %s.\n", type_check == OPT3006 ? "ok" : "error");
199
200 /* opt3007 */
201 res = opt300x_set_type(&gs_handle, OPT3007);
202 if (res != 0)
203 {
204 opt300x_interface_debug_print("opt300x: set type failed.\n");
205
206 return 1;
207 }
208 opt300x_interface_debug_print("opt300x: set type opt3007.\n");
209 res = opt300x_get_type(&gs_handle, &type_check);
210 if (res != 0)
211 {
212 opt300x_interface_debug_print("opt300x: get type failed.\n");
213
214 return 1;
215 }
216 opt300x_interface_debug_print("opt300x: check type %s.\n", type_check == OPT3007 ? "ok" : "error");
217
218 /* opt300x_set_addr_pin/opt300x_get_addr_pin test */
219 opt300x_interface_debug_print("opt300x: opt300x_set_addr_pin/opt300x_get_addr_pin test.\n");
220
221 /* set ADDRESS_GND */
222 res = opt300x_set_addr_pin(&gs_handle, OPT300X_ADDRESS_GND);
223 if (res != 0)
224 {
225 opt300x_interface_debug_print("opt300x: set addr pin failed.\n");
226
227 return 1;
228 }
229 opt300x_interface_debug_print("opt300x: set addr pin ADDRESS_GND.\n");
230 res = opt300x_get_addr_pin(&gs_handle, &addr_pin);
231 if (res != 0)
232 {
233 opt300x_interface_debug_print("opt300x: get addr pin failed.\n");
234
235 return 1;
236 }
237 opt300x_interface_debug_print("opt300x: check addr pin %s.\n", addr_pin == OPT300X_ADDRESS_GND ? "ok" : "error");
238
239 /* set OPT300X_ADDRESS_VCC */
240 res = opt300x_set_addr_pin(&gs_handle, OPT300X_ADDRESS_VCC);
241 if (res != 0)
242 {
243 opt300x_interface_debug_print("opt300x: set addr pin failed.\n");
244
245 return 1;
246 }
247 opt300x_interface_debug_print("opt300x: set addr pin ADDRESS_VCC.\n");
248 res = opt300x_get_addr_pin(&gs_handle, &addr_pin);
249 if (res != 0)
250 {
251 opt300x_interface_debug_print("opt300x: get addr pin failed.\n");
252
253 return 1;
254 }
255 opt300x_interface_debug_print("opt300x: check addr pin %s.\n", addr_pin == OPT300X_ADDRESS_VCC ? "ok" : "error");
256
257 /* set OPT300X_ADDRESS_SDA */
258 res = opt300x_set_addr_pin(&gs_handle, OPT300X_ADDRESS_SDA);
259 if (res != 0)
260 {
261 opt300x_interface_debug_print("opt300x: set addr pin failed.\n");
262
263 return 1;
264 }
265 opt300x_interface_debug_print("opt300x: set addr pin ADDRESS_SDA.\n");
266 res = opt300x_get_addr_pin(&gs_handle, &addr_pin);
267 if (res != 0)
268 {
269 opt300x_interface_debug_print("opt300x: get addr pin failed.\n");
270
271 return 1;
272 }
273 opt300x_interface_debug_print("opt300x: check addr pin %s.\n", addr_pin == OPT300X_ADDRESS_SDA ? "ok" : "error");
274
275 /* set OPT300X_ADDRESS_SCL */
276 res = opt300x_set_addr_pin(&gs_handle, OPT300X_ADDRESS_SCL);
277 if (res != 0)
278 {
279 opt300x_interface_debug_print("opt300x: set addr pin failed.\n");
280
281 return 1;
282 }
283 opt300x_interface_debug_print("opt300x: set addr pin ADDRESS_SCL.\n");
284 res = opt300x_get_addr_pin(&gs_handle, &addr_pin);
285 if (res != 0)
286 {
287 opt300x_interface_debug_print("opt300x: get addr pin failed.\n");
288
289 return 1;
290 }
291 opt300x_interface_debug_print("opt300x: check addr pin %s.\n", addr_pin == OPT300X_ADDRESS_SCL ? "ok" : "error");
292
293 /* set chip type */
294 res = opt300x_set_type(&gs_handle, type);
295 if (res != 0)
296 {
297 opt300x_interface_debug_print("opt300x: set type failed.\n");
298
299 return 1;
300 }
301
302 /* set address pin */
303 res = opt300x_set_addr_pin(&gs_handle, addr);
304 if (res != 0)
305 {
306 opt300x_interface_debug_print("opt300x: set addr pin failed.\n");
307
308 return 1;
309 }
310
311 /* init */
312 res = opt300x_init(&gs_handle);
313 if (res != 0)
314 {
315 opt300x_interface_debug_print("opt300x: init failed.\n");
316
317 return 1;
318 }
319
320 /* opt300x_set_low_limit/opt300x_get_low_limit test */
321 opt300x_interface_debug_print("opt300x: opt300x_set_low_limit/opt300x_get_low_limit test.\n");
322
323 /* set low limit */
324 limit = rand() % 0xFFFFU;
325 res = opt300x_set_low_limit(&gs_handle, limit);
326 if (res != 0)
327 {
328 opt300x_interface_debug_print("opt300x: set low limit failed.\n");
329 (void)opt300x_deinit(&gs_handle);
330
331 return 1;
332 }
333 opt300x_interface_debug_print("opt300x: set low limit %d.\n", limit);
334 res = opt300x_get_low_limit(&gs_handle, &limit_check);
335 if (res != 0)
336 {
337 opt300x_interface_debug_print("opt300x: get low limit failed.\n");
338 (void)opt300x_deinit(&gs_handle);
339
340 return 1;
341 }
342 opt300x_interface_debug_print("opt300x: check low limit %s.\n", limit == limit_check ? "ok" : "error");
343
344 /* opt300x_set_high_limit/opt300x_get_high_limit test */
345 opt300x_interface_debug_print("opt300x: opt300x_set_high_limit/opt300x_get_high_limit test.\n");
346
347 /* set high limit */
348 limit = rand() % 0xFFFFU;
349 res = opt300x_set_high_limit(&gs_handle, limit);
350 if (res != 0)
351 {
352 opt300x_interface_debug_print("opt300x: set high limit failed.\n");
353 (void)opt300x_deinit(&gs_handle);
354
355 return 1;
356 }
357 opt300x_interface_debug_print("opt300x: set high limit %d.\n", limit);
358 res = opt300x_get_high_limit(&gs_handle, &limit_check);
359 if (res != 0)
360 {
361 opt300x_interface_debug_print("opt300x: get high limit failed.\n");
362 (void)opt300x_deinit(&gs_handle);
363
364 return 1;
365 }
366 opt300x_interface_debug_print("opt300x: check high limit %s.\n", limit == limit_check ? "ok" : "error");
367
368 if (type == OPT3002)
369 {
370 /* opt3002_set_range/opt3002_get_range test */
371 opt300x_interface_debug_print("opt3002: opt3002_set_range/opt3002_get_range test.\n");
372
373 /* set range 4914 nW/cm2 */
375 if (res != 0)
376 {
377 opt300x_interface_debug_print("opt3002: set range failed.\n");
378 (void)opt300x_deinit(&gs_handle);
379
380 return 1;
381 }
382 opt300x_interface_debug_print("opt3002: set range 4914 nW/cm2.\n");
383 res = opt3002_get_range(&gs_handle, &opt3002_range);
384 if (res != 0)
385 {
386 opt300x_interface_debug_print("opt3002: get range failed.\n");
387 (void)opt300x_deinit(&gs_handle);
388
389 return 1;
390 }
391 opt300x_interface_debug_print("opt3002: check range %s.\n", opt3002_range == OPT3002_RANGE_4914_NW_CM2 ? "ok" : "error");
392
393 /* set range 9828 nW/cm2 */
395 if (res != 0)
396 {
397 opt300x_interface_debug_print("opt3002: set range failed.\n");
398 (void)opt300x_deinit(&gs_handle);
399
400 return 1;
401 }
402 opt300x_interface_debug_print("opt3002: set range 9828 nW/cm2.\n");
403 res = opt3002_get_range(&gs_handle, &opt3002_range);
404 if (res != 0)
405 {
406 opt300x_interface_debug_print("opt3002: get range failed.\n");
407 (void)opt300x_deinit(&gs_handle);
408
409 return 1;
410 }
411 opt300x_interface_debug_print("opt3002: check range %s.\n", opt3002_range == OPT3002_RANGE_9828_NW_CM2 ? "ok" : "error");
412
413 /* set range 19656 nW/cm2 */
415 if (res != 0)
416 {
417 opt300x_interface_debug_print("opt3002: set range failed.\n");
418 (void)opt300x_deinit(&gs_handle);
419
420 return 1;
421 }
422 opt300x_interface_debug_print("opt3002: set range 19656 nW/cm2.\n");
423 res = opt3002_get_range(&gs_handle, &opt3002_range);
424 if (res != 0)
425 {
426 opt300x_interface_debug_print("opt3002: get range failed.\n");
427 (void)opt300x_deinit(&gs_handle);
428
429 return 1;
430 }
431 opt300x_interface_debug_print("opt3002: check range %s.\n", opt3002_range == OPT3002_RANGE_19656_NW_CM2 ? "ok" : "error");
432
433 /* set range 39312 nW/cm2 */
435 if (res != 0)
436 {
437 opt300x_interface_debug_print("opt3002: set range failed.\n");
438 (void)opt300x_deinit(&gs_handle);
439
440 return 1;
441 }
442 opt300x_interface_debug_print("opt3002: set range 39312 nW/cm2.\n");
443 res = opt3002_get_range(&gs_handle, &opt3002_range);
444 if (res != 0)
445 {
446 opt300x_interface_debug_print("opt3002: get range failed.\n");
447 (void)opt300x_deinit(&gs_handle);
448
449 return 1;
450 }
451 opt300x_interface_debug_print("opt3002: check range %s.\n", opt3002_range == OPT3002_RANGE_39312_NW_CM2 ? "ok" : "error");
452
453 /* set range 78624 nW/cm2 */
455 if (res != 0)
456 {
457 opt300x_interface_debug_print("opt3002: set range failed.\n");
458 (void)opt300x_deinit(&gs_handle);
459
460 return 1;
461 }
462 opt300x_interface_debug_print("opt3002: set range 78624 nW/cm2.\n");
463 res = opt3002_get_range(&gs_handle, &opt3002_range);
464 if (res != 0)
465 {
466 opt300x_interface_debug_print("opt3002: get range failed.\n");
467 (void)opt300x_deinit(&gs_handle);
468
469 return 1;
470 }
471 opt300x_interface_debug_print("opt3002: check range %s.\n", opt3002_range == OPT3002_RANGE_78624_NW_CM2 ? "ok" : "error");
472
473 /* set range 157248 nW/cm2 */
475 if (res != 0)
476 {
477 opt300x_interface_debug_print("opt3002: set range failed.\n");
478 (void)opt300x_deinit(&gs_handle);
479
480 return 1;
481 }
482 opt300x_interface_debug_print("opt3002: set range 157248 nW/cm2.\n");
483 res = opt3002_get_range(&gs_handle, &opt3002_range);
484 if (res != 0)
485 {
486 opt300x_interface_debug_print("opt3002: get range failed.\n");
487 (void)opt300x_deinit(&gs_handle);
488
489 return 1;
490 }
491 opt300x_interface_debug_print("opt3002: check range %s.\n", opt3002_range == OPT3002_RANGE_157248_NW_CM2 ? "ok" : "error");
492
493 /* set range 314496 nW/cm2 */
495 if (res != 0)
496 {
497 opt300x_interface_debug_print("opt3002: set range failed.\n");
498 (void)opt300x_deinit(&gs_handle);
499
500 return 1;
501 }
502 opt300x_interface_debug_print("opt3002: set range 314496 nW/cm2.\n");
503 res = opt3002_get_range(&gs_handle, &opt3002_range);
504 if (res != 0)
505 {
506 opt300x_interface_debug_print("opt3002: get range failed.\n");
507 (void)opt300x_deinit(&gs_handle);
508
509 return 1;
510 }
511 opt300x_interface_debug_print("opt3002: check range %s.\n", opt3002_range == OPT3002_RANGE_314496_NW_CM2 ? "ok" : "error");
512
513 /* set range 628992 nW/cm2 */
515 if (res != 0)
516 {
517 opt300x_interface_debug_print("opt3002: set range failed.\n");
518 (void)opt300x_deinit(&gs_handle);
519
520 return 1;
521 }
522 opt300x_interface_debug_print("opt3002: set range 628992 nW/cm2.\n");
523 res = opt3002_get_range(&gs_handle, &opt3002_range);
524 if (res != 0)
525 {
526 opt300x_interface_debug_print("opt3002: get range failed.\n");
527 (void)opt300x_deinit(&gs_handle);
528
529 return 1;
530 }
531 opt300x_interface_debug_print("opt3002: check range %s.\n", opt3002_range == OPT3002_RANGE_628992_NW_CM2 ? "ok" : "error");
532
533 /* set range 1257984 nW/cm2 */
535 if (res != 0)
536 {
537 opt300x_interface_debug_print("opt3002: set range failed.\n");
538 (void)opt300x_deinit(&gs_handle);
539
540 return 1;
541 }
542 opt300x_interface_debug_print("opt3002: set range 1257984 nW/cm2.\n");
543 res = opt3002_get_range(&gs_handle, &opt3002_range);
544 if (res != 0)
545 {
546 opt300x_interface_debug_print("opt3002: get range failed.\n");
547 (void)opt300x_deinit(&gs_handle);
548
549 return 1;
550 }
551 opt300x_interface_debug_print("opt3002: check range %s.\n", opt3002_range == OPT3002_RANGE_1257984_NW_CM2 ? "ok" : "error");
552
553 /* set range 2515968 nW/cm2 */
555 if (res != 0)
556 {
557 opt300x_interface_debug_print("opt3002: set range failed.\n");
558 (void)opt300x_deinit(&gs_handle);
559
560 return 1;
561 }
562 opt300x_interface_debug_print("opt3002: set range 2515968 nW/cm2.\n");
563 res = opt3002_get_range(&gs_handle, &opt3002_range);
564 if (res != 0)
565 {
566 opt300x_interface_debug_print("opt3002: get range failed.\n");
567 (void)opt300x_deinit(&gs_handle);
568
569 return 1;
570 }
571 opt300x_interface_debug_print("opt3002: check range %s.\n", opt3002_range == OPT3002_RANGE_2515968_NW_CM2 ? "ok" : "error");
572
573 /* set range 5031936 nW/cm2 */
575 if (res != 0)
576 {
577 opt300x_interface_debug_print("opt3002: set range failed.\n");
578 (void)opt300x_deinit(&gs_handle);
579
580 return 1;
581 }
582 opt300x_interface_debug_print("opt3002: set range 5031936 nW/cm2.\n");
583 res = opt3002_get_range(&gs_handle, &opt3002_range);
584 if (res != 0)
585 {
586 opt300x_interface_debug_print("opt3002: get range failed.\n");
587 (void)opt300x_deinit(&gs_handle);
588
589 return 1;
590 }
591 opt300x_interface_debug_print("opt3002: check range %s.\n", opt3002_range == OPT3002_RANGE_5031936_NW_CM2 ? "ok" : "error");
592
593 /* set range 10063872 nW/cm2 */
595 if (res != 0)
596 {
597 opt300x_interface_debug_print("opt3002: set range failed.\n");
598 (void)opt300x_deinit(&gs_handle);
599
600 return 1;
601 }
602 opt300x_interface_debug_print("opt3002: set range 10063872 nW/cm2.\n");
603 res = opt3002_get_range(&gs_handle, &opt3002_range);
604 if (res != 0)
605 {
606 opt300x_interface_debug_print("opt3002: get range failed.\n");
607 (void)opt300x_deinit(&gs_handle);
608
609 return 1;
610 }
611 opt300x_interface_debug_print("opt3002: check range %s.\n", opt3002_range == OPT3002_RANGE_10063872_NW_CM2 ? "ok" : "error");
612
613 /* set range auto range nW/cm2 */
614 res = opt3002_set_range(&gs_handle, OPT3002_RANGE_AUTO);
615 if (res != 0)
616 {
617 opt300x_interface_debug_print("opt3002: set range failed.\n");
618 (void)opt300x_deinit(&gs_handle);
619
620 return 1;
621 }
622 opt300x_interface_debug_print("opt3002: set range auto range nW/cm2.\n");
623 res = opt3002_get_range(&gs_handle, &opt3002_range);
624 if (res != 0)
625 {
626 opt300x_interface_debug_print("opt3002: get range failed.\n");
627 (void)opt300x_deinit(&gs_handle);
628
629 return 1;
630 }
631 opt300x_interface_debug_print("opt3002: check range %s.\n", opt3002_range == OPT3002_RANGE_AUTO ? "ok" : "error");
632 }
633 else if (type == OPT3005)
634 {
635 /* opt3005_set_range/opt3005_get_range test */
636 opt300x_interface_debug_print("opt3005: opt3005_set_range/opt3005_get_range test.\n");
637
638 /* set range 81.90 lux */
640 if (res != 0)
641 {
642 opt300x_interface_debug_print("opt3005: set range failed.\n");
643 (void)opt300x_deinit(&gs_handle);
644
645 return 1;
646 }
647 opt300x_interface_debug_print("opt3005: set range 81.90 lux.\n");
648 res = opt3005_get_range(&gs_handle, &opt3005_range);
649 if (res != 0)
650 {
651 opt300x_interface_debug_print("opt3005: get range failed.\n");
652 (void)opt300x_deinit(&gs_handle);
653
654 return 1;
655 }
656 opt300x_interface_debug_print("opt3005: check range %s.\n", opt3005_range == OPT3005_RANGE_81P90_LUX ? "ok" : "error");
657
658 /* set range 163.80 lux */
660 if (res != 0)
661 {
662 opt300x_interface_debug_print("opt3005: set range failed.\n");
663 (void)opt300x_deinit(&gs_handle);
664
665 return 1;
666 }
667 opt300x_interface_debug_print("opt3005: set range 163.80 lux.\n");
668 res = opt3005_get_range(&gs_handle, &opt3005_range);
669 if (res != 0)
670 {
671 opt300x_interface_debug_print("opt3005: get range failed.\n");
672 (void)opt300x_deinit(&gs_handle);
673
674 return 1;
675 }
676 opt300x_interface_debug_print("opt3005: check range %s.\n", opt3005_range == OPT3005_RANGE_163P80_LUX ? "ok" : "error");
677
678 /* set range 327.60 lux */
680 if (res != 0)
681 {
682 opt300x_interface_debug_print("opt3005: set range failed.\n");
683 (void)opt300x_deinit(&gs_handle);
684
685 return 1;
686 }
687 opt300x_interface_debug_print("opt3005: set range 327.60 lux.\n");
688 res = opt3005_get_range(&gs_handle, &opt3005_range);
689 if (res != 0)
690 {
691 opt300x_interface_debug_print("opt3005: get range failed.\n");
692 (void)opt300x_deinit(&gs_handle);
693
694 return 1;
695 }
696 opt300x_interface_debug_print("opt3005: check range %s.\n", opt3005_range == OPT3005_RANGE_327P60_LUX ? "ok" : "error");
697
698 /* set range 655.20 lux */
700 if (res != 0)
701 {
702 opt300x_interface_debug_print("opt3005: set range failed.\n");
703 (void)opt300x_deinit(&gs_handle);
704
705 return 1;
706 }
707 opt300x_interface_debug_print("opt3005: set range 655.20 lux.\n");
708 res = opt3005_get_range(&gs_handle, &opt3005_range);
709 if (res != 0)
710 {
711 opt300x_interface_debug_print("opt3005: get range failed.\n");
712 (void)opt300x_deinit(&gs_handle);
713
714 return 1;
715 }
716 opt300x_interface_debug_print("opt3005: check range %s.\n", opt3005_range == OPT3005_RANGE_655P20_LUX ? "ok" : "error");
717
718 /* set range 1310.40 lux */
720 if (res != 0)
721 {
722 opt300x_interface_debug_print("opt3005: set range failed.\n");
723 (void)opt300x_deinit(&gs_handle);
724
725 return 1;
726 }
727 opt300x_interface_debug_print("opt3005: set range 1310.40 lux.\n");
728 res = opt3005_get_range(&gs_handle, &opt3005_range);
729 if (res != 0)
730 {
731 opt300x_interface_debug_print("opt3005: get range failed.\n");
732 (void)opt300x_deinit(&gs_handle);
733
734 return 1;
735 }
736 opt300x_interface_debug_print("opt3005: check range %s.\n", opt3005_range == OPT3005_RANGE_1310P40_LUX ? "ok" : "error");
737
738 /* set range 2620.80 lux */
740 if (res != 0)
741 {
742 opt300x_interface_debug_print("opt3005: set range failed.\n");
743 (void)opt300x_deinit(&gs_handle);
744
745 return 1;
746 }
747 opt300x_interface_debug_print("opt3005: set range 2620.80 lux.\n");
748 res = opt3005_get_range(&gs_handle, &opt3005_range);
749 if (res != 0)
750 {
751 opt300x_interface_debug_print("opt3005: get range failed.\n");
752 (void)opt300x_deinit(&gs_handle);
753
754 return 1;
755 }
756 opt300x_interface_debug_print("opt3005: check range %s.\n", opt3005_range == OPT3005_RANGE_2620P80_LUX ? "ok" : "error");
757
758 /* set range 5241.60 lux */
760 if (res != 0)
761 {
762 opt300x_interface_debug_print("opt3005: set range failed.\n");
763 (void)opt300x_deinit(&gs_handle);
764
765 return 1;
766 }
767 opt300x_interface_debug_print("opt3005: set range 5241.60 lux.\n");
768 res = opt3005_get_range(&gs_handle, &opt3005_range);
769 if (res != 0)
770 {
771 opt300x_interface_debug_print("opt3005: get range failed.\n");
772 (void)opt300x_deinit(&gs_handle);
773
774 return 1;
775 }
776 opt300x_interface_debug_print("opt3005: check range %s.\n", opt3005_range == OPT3005_RANGE_5241P60_LUX ? "ok" : "error");
777
778 /* set range 10483.20 lux */
780 if (res != 0)
781 {
782 opt300x_interface_debug_print("opt3005: set range failed.\n");
783 (void)opt300x_deinit(&gs_handle);
784
785 return 1;
786 }
787 opt300x_interface_debug_print("opt3005: set range 10483.20 lux.\n");
788 res = opt3005_get_range(&gs_handle, &opt3005_range);
789 if (res != 0)
790 {
791 opt300x_interface_debug_print("opt3005: get range failed.\n");
792 (void)opt300x_deinit(&gs_handle);
793
794 return 1;
795 }
796 opt300x_interface_debug_print("opt3005: check range %s.\n", opt3005_range == OPT3005_RANGE_10483P20_LUX ? "ok" : "error");
797
798 /* set range 20966.40 lux */
800 if (res != 0)
801 {
802 opt300x_interface_debug_print("opt3005: set range failed.\n");
803 (void)opt300x_deinit(&gs_handle);
804
805 return 1;
806 }
807 opt300x_interface_debug_print("opt3005: set range 20966.40 lux.\n");
808 res = opt3005_get_range(&gs_handle, &opt3005_range);
809 if (res != 0)
810 {
811 opt300x_interface_debug_print("opt3005: get range failed.\n");
812 (void)opt300x_deinit(&gs_handle);
813
814 return 1;
815 }
816 opt300x_interface_debug_print("opt3005: check range %s.\n", opt3005_range == OPT3005_RANGE_20966P40_LUX ? "ok" : "error");
817
818 /* set range 41932.80 lux */
820 if (res != 0)
821 {
822 opt300x_interface_debug_print("opt3005: set range failed.\n");
823 (void)opt300x_deinit(&gs_handle);
824
825 return 1;
826 }
827 opt300x_interface_debug_print("opt3005: set range 41932.80 lux.\n");
828 res = opt3005_get_range(&gs_handle, &opt3005_range);
829 if (res != 0)
830 {
831 opt300x_interface_debug_print("opt3005: get range failed.\n");
832 (void)opt300x_deinit(&gs_handle);
833
834 return 1;
835 }
836 opt300x_interface_debug_print("opt3005: check range %s.\n", opt3005_range == OPT3005_RANGE_41932P80_LUX ? "ok" : "error");
837
838 /* set range 83865.60 lux */
840 if (res != 0)
841 {
842 opt300x_interface_debug_print("opt3005: set range failed.\n");
843 (void)opt300x_deinit(&gs_handle);
844
845 return 1;
846 }
847 opt300x_interface_debug_print("opt3005: set range 83865.60 lux.\n");
848 res = opt3005_get_range(&gs_handle, &opt3005_range);
849 if (res != 0)
850 {
851 opt300x_interface_debug_print("opt3005: get range failed.\n");
852 (void)opt300x_deinit(&gs_handle);
853
854 return 1;
855 }
856 opt300x_interface_debug_print("opt3005: check range %s.\n", opt3005_range == OPT3005_RANGE_83865P60_LUX ? "ok" : "error");
857
858 /* set range 167731.20 lux */
860 if (res != 0)
861 {
862 opt300x_interface_debug_print("opt3005: set range failed.\n");
863 (void)opt300x_deinit(&gs_handle);
864
865 return 1;
866 }
867 opt300x_interface_debug_print("opt3005: set range 167731.20 lux.\n");
868 res = opt3005_get_range(&gs_handle, &opt3005_range);
869 if (res != 0)
870 {
871 opt300x_interface_debug_print("opt3005: get range failed.\n");
872 (void)opt300x_deinit(&gs_handle);
873
874 return 1;
875 }
876 opt300x_interface_debug_print("opt3005: check range %s.\n", opt3005_range == OPT3005_RANGE_167731P20_LUX ? "ok" : "error");
877
878 /* set range auto range lux */
879 res = opt3005_set_range(&gs_handle, OPT3005_RANGE_AUTO);
880 if (res != 0)
881 {
882 opt300x_interface_debug_print("opt3005: set range failed.\n");
883 (void)opt300x_deinit(&gs_handle);
884
885 return 1;
886 }
887 opt300x_interface_debug_print("opt3005: set range auto range lux.\n");
888 res = opt3005_get_range(&gs_handle, &opt3005_range);
889 if (res != 0)
890 {
891 opt300x_interface_debug_print("opt3005: get range failed.\n");
892 (void)opt300x_deinit(&gs_handle);
893
894 return 1;
895 }
896 opt300x_interface_debug_print("opt3005: check range %s.\n", opt3005_range == OPT3005_RANGE_AUTO ? "ok" : "error");
897 }
898 else
899 {
900 /* opt300x_set_range/opt300x_get_range test */
901 opt300x_interface_debug_print("opt300x: opt300x_set_range/opt300x_get_range test.\n");
902
903 /* set range 40.95 lux */
905 if (res != 0)
906 {
907 opt300x_interface_debug_print("opt300x: set range failed.\n");
908 (void)opt300x_deinit(&gs_handle);
909
910 return 1;
911 }
912 opt300x_interface_debug_print("opt300x: set range 40.95 lux.\n");
913 res = opt300x_get_range(&gs_handle, &range);
914 if (res != 0)
915 {
916 opt300x_interface_debug_print("opt300x: get range failed.\n");
917 (void)opt300x_deinit(&gs_handle);
918
919 return 1;
920 }
921 opt300x_interface_debug_print("opt300x: check range %s.\n", range == OPT300X_RANGE_40P95_LUX ? "ok" : "error");
922
923 /* set range 81.90 lux */
925 if (res != 0)
926 {
927 opt300x_interface_debug_print("opt300x: set range failed.\n");
928 (void)opt300x_deinit(&gs_handle);
929
930 return 1;
931 }
932 opt300x_interface_debug_print("opt300x: set range 81.90 lux.\n");
933 res = opt300x_get_range(&gs_handle, &range);
934 if (res != 0)
935 {
936 opt300x_interface_debug_print("opt300x: get range failed.\n");
937 (void)opt300x_deinit(&gs_handle);
938
939 return 1;
940 }
941 opt300x_interface_debug_print("opt300x: check range %s.\n", range == OPT300X_RANGE_81P90_LUX ? "ok" : "error");
942
943 /* set range 163.80 lux */
945 if (res != 0)
946 {
947 opt300x_interface_debug_print("opt300x: set range failed.\n");
948 (void)opt300x_deinit(&gs_handle);
949
950 return 1;
951 }
952 opt300x_interface_debug_print("opt300x: set range 163.80 lux.\n");
953 res = opt300x_get_range(&gs_handle, &range);
954 if (res != 0)
955 {
956 opt300x_interface_debug_print("opt300x: get range failed.\n");
957 (void)opt300x_deinit(&gs_handle);
958
959 return 1;
960 }
961 opt300x_interface_debug_print("opt300x: check range %s.\n", range == OPT300X_RANGE_163P80_LUX ? "ok" : "error");
962
963 /* set range 327.60 lux */
965 if (res != 0)
966 {
967 opt300x_interface_debug_print("opt300x: set range failed.\n");
968 (void)opt300x_deinit(&gs_handle);
969
970 return 1;
971 }
972 opt300x_interface_debug_print("opt300x: set range 327.60 lux.\n");
973 res = opt300x_get_range(&gs_handle, &range);
974 if (res != 0)
975 {
976 opt300x_interface_debug_print("opt300x: get range failed.\n");
977 (void)opt300x_deinit(&gs_handle);
978
979 return 1;
980 }
981 opt300x_interface_debug_print("opt300x: check range %s.\n", range == OPT300X_RANGE_327P60_LUX ? "ok" : "error");
982
983 /* set range 655.20 lux */
985 if (res != 0)
986 {
987 opt300x_interface_debug_print("opt300x: set range failed.\n");
988 (void)opt300x_deinit(&gs_handle);
989
990 return 1;
991 }
992 opt300x_interface_debug_print("opt300x: set range 655.20 lux.\n");
993 res = opt300x_get_range(&gs_handle, &range);
994 if (res != 0)
995 {
996 opt300x_interface_debug_print("opt300x: get range failed.\n");
997 (void)opt300x_deinit(&gs_handle);
998
999 return 1;
1000 }
1001 opt300x_interface_debug_print("opt300x: check range %s.\n", range == OPT300X_RANGE_655P20_LUX ? "ok" : "error");
1002
1003 /* set range 1310.40 lux */
1005 if (res != 0)
1006 {
1007 opt300x_interface_debug_print("opt300x: set range failed.\n");
1008 (void)opt300x_deinit(&gs_handle);
1009
1010 return 1;
1011 }
1012 opt300x_interface_debug_print("opt300x: set range 1310.40 lux.\n");
1013 res = opt300x_get_range(&gs_handle, &range);
1014 if (res != 0)
1015 {
1016 opt300x_interface_debug_print("opt300x: get range failed.\n");
1017 (void)opt300x_deinit(&gs_handle);
1018
1019 return 1;
1020 }
1021 opt300x_interface_debug_print("opt300x: check range %s.\n", range == OPT300X_RANGE_1310P40_LUX ? "ok" : "error");
1022
1023 /* set range 2620.80 lux */
1025 if (res != 0)
1026 {
1027 opt300x_interface_debug_print("opt300x: set range failed.\n");
1028 (void)opt300x_deinit(&gs_handle);
1029
1030 return 1;
1031 }
1032 opt300x_interface_debug_print("opt300x: set range 2620.80 lux.\n");
1033 res = opt300x_get_range(&gs_handle, &range);
1034 if (res != 0)
1035 {
1036 opt300x_interface_debug_print("opt300x: get range failed.\n");
1037 (void)opt300x_deinit(&gs_handle);
1038
1039 return 1;
1040 }
1041 opt300x_interface_debug_print("opt300x: check range %s.\n", range == OPT300X_RANGE_2620P80_LUX ? "ok" : "error");
1042
1043 /* set range 5241.60 lux */
1045 if (res != 0)
1046 {
1047 opt300x_interface_debug_print("opt300x: set range failed.\n");
1048 (void)opt300x_deinit(&gs_handle);
1049
1050 return 1;
1051 }
1052 opt300x_interface_debug_print("opt300x: set range 5241.60 lux.\n");
1053 res = opt300x_get_range(&gs_handle, &range);
1054 if (res != 0)
1055 {
1056 opt300x_interface_debug_print("opt300x: get range failed.\n");
1057 (void)opt300x_deinit(&gs_handle);
1058
1059 return 1;
1060 }
1061 opt300x_interface_debug_print("opt300x: check range %s.\n", range == OPT300X_RANGE_5241P60_LUX ? "ok" : "error");
1062
1063 /* set range 10483.20 lux */
1065 if (res != 0)
1066 {
1067 opt300x_interface_debug_print("opt300x: set range failed.\n");
1068 (void)opt300x_deinit(&gs_handle);
1069
1070 return 1;
1071 }
1072 opt300x_interface_debug_print("opt300x: set range 10483.20 lux.\n");
1073 res = opt300x_get_range(&gs_handle, &range);
1074 if (res != 0)
1075 {
1076 opt300x_interface_debug_print("opt300x: get range failed.\n");
1077 (void)opt300x_deinit(&gs_handle);
1078
1079 return 1;
1080 }
1081 opt300x_interface_debug_print("opt300x: check range %s.\n", range == OPT300X_RANGE_10483P20_LUX ? "ok" : "error");
1082
1083 /* set range 20966.40 lux */
1085 if (res != 0)
1086 {
1087 opt300x_interface_debug_print("opt300x: set range failed.\n");
1088 (void)opt300x_deinit(&gs_handle);
1089
1090 return 1;
1091 }
1092 opt300x_interface_debug_print("opt300x: set range 20966.40 lux.\n");
1093 res = opt300x_get_range(&gs_handle, &range);
1094 if (res != 0)
1095 {
1096 opt300x_interface_debug_print("opt300x: get range failed.\n");
1097 (void)opt300x_deinit(&gs_handle);
1098
1099 return 1;
1100 }
1101 opt300x_interface_debug_print("opt300x: check range %s.\n", range == OPT300X_RANGE_20966P40_LUX ? "ok" : "error");
1102
1103 /* set range 41932.80 lux */
1105 if (res != 0)
1106 {
1107 opt300x_interface_debug_print("opt300x: set range failed.\n");
1108 (void)opt300x_deinit(&gs_handle);
1109
1110 return 1;
1111 }
1112 opt300x_interface_debug_print("opt300x: set range 41932.80 lux.\n");
1113 res = opt300x_get_range(&gs_handle, &range);
1114 if (res != 0)
1115 {
1116 opt300x_interface_debug_print("opt300x: get range failed.\n");
1117 (void)opt300x_deinit(&gs_handle);
1118
1119 return 1;
1120 }
1121 opt300x_interface_debug_print("opt300x: check range %s.\n", range == OPT300X_RANGE_41932P80_LUX ? "ok" : "error");
1122
1123 /* set range 83865.60 lux */
1125 if (res != 0)
1126 {
1127 opt300x_interface_debug_print("opt300x: set range failed.\n");
1128 (void)opt300x_deinit(&gs_handle);
1129
1130 return 1;
1131 }
1132 opt300x_interface_debug_print("opt300x: set range 83865.60 lux.\n");
1133 res = opt300x_get_range(&gs_handle, &range);
1134 if (res != 0)
1135 {
1136 opt300x_interface_debug_print("opt300x: get range failed.\n");
1137 (void)opt300x_deinit(&gs_handle);
1138
1139 return 1;
1140 }
1141 opt300x_interface_debug_print("opt300x: check range %s.\n", range == OPT300X_RANGE_83865P60_LUX ? "ok" : "error");
1142
1143 /* set range auto range lux */
1144 res = opt300x_set_range(&gs_handle, OPT300X_RANGE_AUTO);
1145 if (res != 0)
1146 {
1147 opt300x_interface_debug_print("opt300x: set range failed.\n");
1148 (void)opt300x_deinit(&gs_handle);
1149
1150 return 1;
1151 }
1152 opt300x_interface_debug_print("opt300x: set range auto range lux.\n");
1153 res = opt300x_get_range(&gs_handle, &range);
1154 if (res != 0)
1155 {
1156 opt300x_interface_debug_print("opt300x: get range failed.\n");
1157 (void)opt300x_deinit(&gs_handle);
1158
1159 return 1;
1160 }
1161 opt300x_interface_debug_print("opt300x: check range %s.\n", range == OPT300X_RANGE_AUTO ? "ok" : "error");
1162 }
1163
1164 /* opt300x_set_conversion_time/opt300x_get_conversion_time test */
1165 opt300x_interface_debug_print("opt300x: opt300x_set_conversion_time/opt300x_get_conversion_time test.\n");
1166
1167 /* 100ms */
1169 if (res != 0)
1170 {
1171 opt300x_interface_debug_print("opt300x: set conversion time failed.\n");
1172 (void)opt300x_deinit(&gs_handle);
1173
1174 return 1;
1175 }
1176 opt300x_interface_debug_print("opt300x: set conversion time 100ms.\n");
1177 res = opt300x_get_conversion_time(&gs_handle, &t);
1178 if (res != 0)
1179 {
1180 opt300x_interface_debug_print("opt300x: get conversion time failed.\n");
1181 (void)opt300x_deinit(&gs_handle);
1182
1183 return 1;
1184 }
1185 opt300x_interface_debug_print("opt300x: check conversion time %s.\n", t == OPT300X_CONVERSION_TIME_100_MS ? "ok" : "error");
1186
1187 /* 800ms */
1189 if (res != 0)
1190 {
1191 opt300x_interface_debug_print("opt300x: set conversion time failed.\n");
1192 (void)opt300x_deinit(&gs_handle);
1193
1194 return 1;
1195 }
1196 opt300x_interface_debug_print("opt300x: set conversion time 800ms.\n");
1197 res = opt300x_get_conversion_time(&gs_handle, &t);
1198 if (res != 0)
1199 {
1200 opt300x_interface_debug_print("opt300x: get conversion time failed.\n");
1201 (void)opt300x_deinit(&gs_handle);
1202
1203 return 1;
1204 }
1205 opt300x_interface_debug_print("opt300x: check conversion time %s.\n", t == OPT300X_CONVERSION_TIME_800_MS ? "ok" : "error");
1206
1207 /* opt300x_set_interrupt_latch/opt300x_get_interrupt_latch test */
1208 opt300x_interface_debug_print("opt300x: opt300x_set_interrupt_latch/opt300x_get_interrupt_latch test.\n");
1209
1210 /* enable interrupt latch */
1212 if (res != 0)
1213 {
1214 opt300x_interface_debug_print("opt300x: set interrupt latch failed.\n");
1215 (void)opt300x_deinit(&gs_handle);
1216
1217 return 1;
1218 }
1219 opt300x_interface_debug_print("opt300x: enable interrupt latch.\n");
1220 res = opt300x_get_interrupt_latch(&gs_handle, &enable);
1221 if (res != 0)
1222 {
1223 opt300x_interface_debug_print("opt300x: get interrupt latch failed.\n");
1224 (void)opt300x_deinit(&gs_handle);
1225
1226 return 1;
1227 }
1228 opt300x_interface_debug_print("opt300x: check interrupt latch %s.\n", enable == OPT300X_BOOL_TRUE ? "ok" : "error");
1229
1230 /* disable interrupt latch */
1232 if (res != 0)
1233 {
1234 opt300x_interface_debug_print("opt300x: set interrupt latch failed.\n");
1235 (void)opt300x_deinit(&gs_handle);
1236
1237 return 1;
1238 }
1239 opt300x_interface_debug_print("opt300x: disable interrupt latch.\n");
1240 res = opt300x_get_interrupt_latch(&gs_handle, &enable);
1241 if (res != 0)
1242 {
1243 opt300x_interface_debug_print("opt300x: get interrupt latch failed.\n");
1244 (void)opt300x_deinit(&gs_handle);
1245
1246 return 1;
1247 }
1248 opt300x_interface_debug_print("opt300x: check interrupt latch %s.\n", enable == OPT300X_BOOL_FALSE ? "ok" : "error");
1249
1250 /* opt300x_set_interrupt_latch/opt300x_get_interrupt_latch test */
1251 opt300x_interface_debug_print("opt300x: opt300x_set_interrupt_latch/opt300x_get_interrupt_latch test.\n");
1252
1253 /* set interrupt pin polarity low */
1255 if (res != 0)
1256 {
1257 opt300x_interface_debug_print("opt300x: set interrupt pin polarity failed.\n");
1258 (void)opt300x_deinit(&gs_handle);
1259
1260 return 1;
1261 }
1262 opt300x_interface_debug_print("opt300x: set interrupt pin polarity low.\n");
1263 res = opt300x_get_interrupt_pin_polarity(&gs_handle, &polarity);
1264 if (res != 0)
1265 {
1266 opt300x_interface_debug_print("opt300x: get interrupt pin polarity failed.\n");
1267 (void)opt300x_deinit(&gs_handle);
1268
1269 return 1;
1270 }
1271 opt300x_interface_debug_print("opt300x: check interrupt pin polarity %s.\n", polarity == OPT300X_INTERRUPT_POLARITY_LOW ? "ok" : "error");
1272
1273 /* set interrupt pin polarity high */
1275 if (res != 0)
1276 {
1277 opt300x_interface_debug_print("opt300x: set interrupt pin polarity failed.\n");
1278 (void)opt300x_deinit(&gs_handle);
1279
1280 return 1;
1281 }
1282 opt300x_interface_debug_print("opt300x: set interrupt pin polarity high.\n");
1283 res = opt300x_get_interrupt_pin_polarity(&gs_handle, &polarity);
1284 if (res != 0)
1285 {
1286 opt300x_interface_debug_print("opt300x: get interrupt pin polarity failed.\n");
1287 (void)opt300x_deinit(&gs_handle);
1288
1289 return 1;
1290 }
1291 opt300x_interface_debug_print("opt300x: check interrupt pin polarity %s.\n", polarity == OPT300X_INTERRUPT_POLARITY_HIGH ? "ok" : "error");
1292
1293 /* opt300x_set_mask_exponent/opt300x_get_mask_exponent test */
1294 opt300x_interface_debug_print("opt300x: opt300x_set_mask_exponent/opt300x_get_mask_exponent test.\n");
1295
1296 /* enable mask exponent */
1298 if (res != 0)
1299 {
1300 opt300x_interface_debug_print("opt300x: set mask exponent failed.\n");
1301 (void)opt300x_deinit(&gs_handle);
1302
1303 return 1;
1304 }
1305 opt300x_interface_debug_print("opt300x: enable mask exponent.\n");
1306 res = opt300x_get_mask_exponent(&gs_handle, &enable);
1307 if (res != 0)
1308 {
1309 opt300x_interface_debug_print("opt300x: get mask exponent failed.\n");
1310 (void)opt300x_deinit(&gs_handle);
1311
1312 return 1;
1313 }
1314 opt300x_interface_debug_print("opt300x: check mask exponent %s.\n", enable == OPT300X_BOOL_TRUE ? "ok" : "error");
1315
1316 /* disable mask exponent */
1318 if (res != 0)
1319 {
1320 opt300x_interface_debug_print("opt300x: set mask exponent failed.\n");
1321 (void)opt300x_deinit(&gs_handle);
1322
1323 return 1;
1324 }
1325 opt300x_interface_debug_print("opt300x: disable mask exponent.\n");
1326 res = opt300x_get_mask_exponent(&gs_handle, &enable);
1327 if (res != 0)
1328 {
1329 opt300x_interface_debug_print("opt300x: get mask exponent failed.\n");
1330 (void)opt300x_deinit(&gs_handle);
1331
1332 return 1;
1333 }
1334 opt300x_interface_debug_print("opt300x: check mask exponent %s.\n", enable == OPT300X_BOOL_FALSE ? "ok" : "error");
1335
1336 /* opt300x_set_fault_count/opt300x_get_fault_count test */
1337 opt300x_interface_debug_print("opt300x: opt300x_set_fault_count/opt300x_get_fault_count test.\n");
1338
1339 /* set fault count one */
1341 if (res != 0)
1342 {
1343 opt300x_interface_debug_print("opt300x: set fault count failed.\n");
1344 (void)opt300x_deinit(&gs_handle);
1345
1346 return 1;
1347 }
1348 opt300x_interface_debug_print("opt300x: set fault count one.\n");
1349 res = opt300x_get_fault_count(&gs_handle, &count);
1350 if (res != 0)
1351 {
1352 opt300x_interface_debug_print("opt300x: get fault count failed.\n");
1353 (void)opt300x_deinit(&gs_handle);
1354
1355 return 1;
1356 }
1357 opt300x_interface_debug_print("opt300x: check fault count %s.\n", count == OPT300X_FAULT_COUNT_ONE ? "ok" : "error");
1358
1359 /* set fault count two */
1361 if (res != 0)
1362 {
1363 opt300x_interface_debug_print("opt300x: set fault count failed.\n");
1364 (void)opt300x_deinit(&gs_handle);
1365
1366 return 1;
1367 }
1368 opt300x_interface_debug_print("opt300x: set fault count two.\n");
1369 res = opt300x_get_fault_count(&gs_handle, &count);
1370 if (res != 0)
1371 {
1372 opt300x_interface_debug_print("opt300x: get fault count failed.\n");
1373 (void)opt300x_deinit(&gs_handle);
1374
1375 return 1;
1376 }
1377 opt300x_interface_debug_print("opt300x: check fault count %s.\n", count == OPT300X_FAULT_COUNT_TWO ? "ok" : "error");
1378
1379 /* set fault count four */
1381 if (res != 0)
1382 {
1383 opt300x_interface_debug_print("opt300x: set fault count failed.\n");
1384 (void)opt300x_deinit(&gs_handle);
1385
1386 return 1;
1387 }
1388 opt300x_interface_debug_print("opt300x: set fault count four.\n");
1389 res = opt300x_get_fault_count(&gs_handle, &count);
1390 if (res != 0)
1391 {
1392 opt300x_interface_debug_print("opt300x: get fault count failed.\n");
1393 (void)opt300x_deinit(&gs_handle);
1394
1395 return 1;
1396 }
1397 opt300x_interface_debug_print("opt300x: check fault count %s.\n", count == OPT300X_FAULT_COUNT_FOUR ? "ok" : "error");
1398
1399 /* set fault count eight */
1401 if (res != 0)
1402 {
1403 opt300x_interface_debug_print("opt300x: set fault count failed.\n");
1404 (void)opt300x_deinit(&gs_handle);
1405
1406 return 1;
1407 }
1408 opt300x_interface_debug_print("opt300x: set fault count eight.\n");
1409 res = opt300x_get_fault_count(&gs_handle, &count);
1410 if (res != 0)
1411 {
1412 opt300x_interface_debug_print("opt300x: get fault count failed.\n");
1413 (void)opt300x_deinit(&gs_handle);
1414
1415 return 1;
1416 }
1417 opt300x_interface_debug_print("opt300x: check fault count %s.\n", count == OPT300X_FAULT_COUNT_EIGHT ? "ok" : "error");
1418
1419 if (type == OPT3002)
1420 {
1421 /* opt300x_set_fault_count/opt300x_get_fault_count test */
1422 opt300x_interface_debug_print("opt300x: opt300x_set_fault_count/opt300x_get_fault_count test.\n");
1423
1424 nw_cm2 = (float)(rand() % 10000) / 10.0f;
1425 res = opt3002_limit_convert_to_register(&gs_handle, nw_cm2, &reg);
1426 if (res != 0)
1427 {
1428 opt300x_interface_debug_print("opt300x: limit convert to register failed.\n");
1429 (void)opt300x_deinit(&gs_handle);
1430
1431 return 1;
1432 }
1433 opt300x_interface_debug_print("opt300x: set nW/cm2 %0.2f.\n", nw_cm2);
1434 res = opt3002_limit_convert_to_data(&gs_handle, reg, &nw_cm2_check);
1435 if (res != 0)
1436 {
1437 opt300x_interface_debug_print("opt300x: limit convert to data failed.\n");
1438 (void)opt300x_deinit(&gs_handle);
1439
1440 return 1;
1441 }
1442 opt300x_interface_debug_print("opt300x: check nW/cm2 %0.2f.\n", nw_cm2_check);
1443 }
1444 else
1445 {
1446 /* opt300x_limit_convert_to_register/opt300x_limit_convert_to_data test */
1447 opt300x_interface_debug_print("opt300x: opt300x_limit_convert_to_register/opt300x_limit_convert_to_data test.\n");
1448
1449 lux = (float)(rand() % 10000) / 10.0f;
1450 res = opt300x_limit_convert_to_register(&gs_handle, lux, &reg);
1451 if (res != 0)
1452 {
1453 opt300x_interface_debug_print("opt300x: limit convert to register failed.\n");
1454 (void)opt300x_deinit(&gs_handle);
1455
1456 return 1;
1457 }
1458 opt300x_interface_debug_print("opt300x: set lux %0.2f.\n", lux);
1459 res = opt300x_limit_convert_to_data(&gs_handle, reg, &lux_check);
1460 if (res != 0)
1461 {
1462 opt300x_interface_debug_print("opt300x: limit convert to data failed.\n");
1463 (void)opt300x_deinit(&gs_handle);
1464
1465 return 1;
1466 }
1467 opt300x_interface_debug_print("opt300x: check lux %0.2f.\n", lux_check);
1468 }
1469
1470 /* finish register test */
1471 opt300x_interface_debug_print("opt300x: finish register test.\n");
1472 (void)opt300x_deinit(&gs_handle);
1473
1474 return 0;
1475}
driver opt300x register test header file
uint8_t opt300x_get_range(opt300x_handle_t *handle, opt300x_range_t *range)
get range
uint8_t opt300x_set_fault_count(opt300x_handle_t *handle, opt300x_fault_count_t count)
set fault count
uint8_t opt300x_info(opt300x_info_t *info)
get chip's information
uint8_t opt300x_get_low_limit(opt300x_handle_t *handle, uint16_t *limit)
get low limit
uint8_t opt300x_get_high_limit(opt300x_handle_t *handle, uint16_t *limit)
get high limit
uint8_t opt3005_set_range(opt300x_handle_t *handle, opt3005_range_t range)
set range
uint8_t opt300x_set_type(opt300x_handle_t *handle, opt300x_t type)
set the chip type
uint8_t opt300x_set_mask_exponent(opt300x_handle_t *handle, opt300x_bool_t enable)
enable or disable mask exponent
opt300x_address_t
opt300x address enumeration definition
uint8_t opt300x_set_high_limit(opt300x_handle_t *handle, uint16_t limit)
set high limit
opt300x_bool_t
opt300x bool enumeration definition
uint8_t opt300x_get_interrupt_pin_polarity(opt300x_handle_t *handle, opt300x_interrupt_polarity_t *polarity)
get interrupt pin polarity
opt3005_range_t
opt3005 range enumeration definition
uint8_t opt300x_get_conversion_time(opt300x_handle_t *handle, opt300x_conversion_time_t *t)
get conversion time
opt300x_range_t
opt300x range enumeration definition
uint8_t opt300x_set_low_limit(opt300x_handle_t *handle, uint16_t limit)
set low limit
struct opt300x_info_s opt300x_info_t
opt300x information structure definition
uint8_t opt300x_limit_convert_to_register(opt300x_handle_t *handle, float lux, uint16_t *reg)
convert the limit threshold to the register raw data
uint8_t opt3005_get_range(opt300x_handle_t *handle, opt3005_range_t *range)
get range
opt300x_t
opt300x type enumeration definition
uint8_t opt3002_get_range(opt300x_handle_t *handle, opt3002_range_t *range)
get range
uint8_t opt300x_set_interrupt_pin_polarity(opt300x_handle_t *handle, opt300x_interrupt_polarity_t polarity)
set interrupt pin polarity
uint8_t opt300x_get_type(opt300x_handle_t *handle, opt300x_t *type)
get the iic chip type
uint8_t opt3002_limit_convert_to_register(opt300x_handle_t *handle, float nw_cm2, uint16_t *reg)
convert the limit threshold to the register raw data
uint8_t opt300x_set_conversion_time(opt300x_handle_t *handle, opt300x_conversion_time_t t)
set conversion time
uint8_t opt300x_get_addr_pin(opt300x_handle_t *handle, opt300x_address_t *addr_pin)
get the iic address pin
uint8_t opt300x_get_interrupt_latch(opt300x_handle_t *handle, opt300x_bool_t *enable)
get interrupt latch status
uint8_t opt3002_limit_convert_to_data(opt300x_handle_t *handle, uint16_t reg, float *nw_cm2)
convert the register raw data to the limit threshold
uint8_t opt300x_set_interrupt_latch(opt300x_handle_t *handle, opt300x_bool_t enable)
enable or disable interrupt latch
uint8_t opt300x_set_range(opt300x_handle_t *handle, opt300x_range_t range)
set range
uint8_t opt300x_deinit(opt300x_handle_t *handle)
close the chip
opt300x_conversion_time_t
opt300x conversion time enumeration definition
uint8_t opt300x_get_fault_count(opt300x_handle_t *handle, opt300x_fault_count_t *count)
get fault count
uint8_t opt300x_limit_convert_to_data(opt300x_handle_t *handle, uint16_t reg, float *lux)
convert the register raw data to the limit threshold
opt3002_range_t
opt3002 range enumeration definition
uint8_t opt300x_set_addr_pin(opt300x_handle_t *handle, opt300x_address_t addr_pin)
set the iic address pin
uint8_t opt300x_init(opt300x_handle_t *handle)
initialize the chip
opt300x_interrupt_polarity_t
opt300x interrupt polarity enumeration definition
uint8_t opt3002_set_range(opt300x_handle_t *handle, opt3002_range_t range)
set range
opt300x_fault_count_t
opt300x fault count enumeration definition
struct opt300x_handle_s opt300x_handle_t
opt300x handle structure definition
uint8_t opt300x_get_mask_exponent(opt300x_handle_t *handle, opt300x_bool_t *enable)
get mask exponent status
@ OPT300X_ADDRESS_SCL
@ OPT300X_ADDRESS_VCC
@ OPT300X_ADDRESS_SDA
@ OPT300X_ADDRESS_GND
@ OPT300X_BOOL_FALSE
@ OPT300X_BOOL_TRUE
@ OPT3005_RANGE_5241P60_LUX
@ OPT3005_RANGE_AUTO
@ OPT3005_RANGE_167731P20_LUX
@ OPT3005_RANGE_2620P80_LUX
@ OPT3005_RANGE_81P90_LUX
@ OPT3005_RANGE_655P20_LUX
@ OPT3005_RANGE_41932P80_LUX
@ OPT3005_RANGE_327P60_LUX
@ OPT3005_RANGE_20966P40_LUX
@ OPT3005_RANGE_163P80_LUX
@ OPT3005_RANGE_83865P60_LUX
@ OPT3005_RANGE_10483P20_LUX
@ OPT3005_RANGE_1310P40_LUX
@ OPT300X_RANGE_1310P40_LUX
@ OPT300X_RANGE_10483P20_LUX
@ OPT300X_RANGE_83865P60_LUX
@ OPT300X_RANGE_5241P60_LUX
@ OPT300X_RANGE_81P90_LUX
@ OPT300X_RANGE_40P95_LUX
@ OPT300X_RANGE_20966P40_LUX
@ OPT300X_RANGE_41932P80_LUX
@ OPT300X_RANGE_163P80_LUX
@ OPT300X_RANGE_327P60_LUX
@ OPT300X_RANGE_AUTO
@ OPT300X_RANGE_655P20_LUX
@ OPT300X_RANGE_2620P80_LUX
@ OPT3002
@ OPT3005
@ OPT3006
@ OPT3004
@ OPT3007
@ OPT3001
@ OPT300X_CONVERSION_TIME_800_MS
@ OPT300X_CONVERSION_TIME_100_MS
@ OPT3002_RANGE_19656_NW_CM2
@ OPT3002_RANGE_9828_NW_CM2
@ OPT3002_RANGE_78624_NW_CM2
@ OPT3002_RANGE_39312_NW_CM2
@ OPT3002_RANGE_AUTO
@ OPT3002_RANGE_1257984_NW_CM2
@ OPT3002_RANGE_157248_NW_CM2
@ OPT3002_RANGE_10063872_NW_CM2
@ OPT3002_RANGE_2515968_NW_CM2
@ OPT3002_RANGE_314496_NW_CM2
@ OPT3002_RANGE_4914_NW_CM2
@ OPT3002_RANGE_5031936_NW_CM2
@ OPT3002_RANGE_628992_NW_CM2
@ OPT300X_INTERRUPT_POLARITY_LOW
@ OPT300X_INTERRUPT_POLARITY_HIGH
@ OPT300X_FAULT_COUNT_EIGHT
@ OPT300X_FAULT_COUNT_ONE
@ OPT300X_FAULT_COUNT_TWO
@ OPT300X_FAULT_COUNT_FOUR
void opt300x_interface_delay_ms(uint32_t ms)
interface delay ms
void opt300x_interface_receive_callback(uint8_t type)
interface receive callback
void opt300x_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t opt300x_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
uint8_t opt300x_interface_iic_init(void)
interface iic bus init
uint8_t opt300x_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t opt300x_interface_iic_deinit(void)
interface iic bus deinit
uint8_t opt300x_register_test(opt300x_t type, opt300x_address_t addr)
register test
uint32_t driver_version
char manufacturer_name[32]