LibDriver TSL2561
Loading...
Searching...
No Matches
driver_tsl2561_register_test.c
Go to the documentation of this file.
1
37
39#include <stdlib.h>
40
41static tsl2561_handle_t gs_handle;
42
52{
53 uint8_t res;
54 uint16_t ch0, ch0_check;
55 tsl2561_info_t info;
56 tsl2561_address_t addr_pin;
57 tsl2561_gain_t gain;
60 tsl2561_bool_t enable;
61
62 /* link interface function */
70
71 /* get chip information */
72 res = tsl2561_info(&info);
73 if (res != 0)
74 {
75 tsl2561_interface_debug_print("tsl2561: get info failed.\n");
76
77 return 1;
78 }
79 else
80 {
81 /* print chip information */
82 tsl2561_interface_debug_print("tsl2561: chip is %s.\n", info.chip_name);
83 tsl2561_interface_debug_print("tsl2561: manufacturer is %s.\n", info.manufacturer_name);
84 tsl2561_interface_debug_print("tsl2561: interface is %s.\n", info.interface);
85 tsl2561_interface_debug_print("tsl2561: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
86 tsl2561_interface_debug_print("tsl2561: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
87 tsl2561_interface_debug_print("tsl2561: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
88 tsl2561_interface_debug_print("tsl2561: max current is %0.2fmA.\n", info.max_current_ma);
89 tsl2561_interface_debug_print("tsl2561: max temperature is %0.1fC.\n", info.temperature_max);
90 tsl2561_interface_debug_print("tsl2561: min temperature is %0.1fC.\n", info.temperature_min);
91 }
92
93 /* start register test */
94 tsl2561_interface_debug_print("tsl2561: start register test.\n");
95
96 /* tsl2561_set_addr_pin/tsl2561_get_addr_pin test */
97 tsl2561_interface_debug_print("tsl2561: tsl2561_set_addr_pin/tsl2561_get_addr_pin test.\n");
98
99 /* set ADDRESS_GND */
100 res = tsl2561_set_addr_pin(&gs_handle, TSL2561_ADDRESS_GND);
101 if (res != 0)
102 {
103 tsl2561_interface_debug_print("tsl2561: set addr pin failed.\n");
104
105 return 1;
106 }
107 tsl2561_interface_debug_print("tsl2561: set addr pin ADDRESS_GND.\n");
108 res = tsl2561_get_addr_pin(&gs_handle, &addr_pin);
109 if (res != 0)
110 {
111 tsl2561_interface_debug_print("tsl2561: get addr pin failed.\n");
112
113 return 1;
114 }
115 tsl2561_interface_debug_print("tsl2561: check addr pin %s.\n", addr_pin == TSL2561_ADDRESS_GND ? "ok" : "error");
116
117 /* set ADDRESS_FLOAT */
119 if (res != 0)
120 {
121 tsl2561_interface_debug_print("tsl2561: set addr pin failed.\n");
122
123 return 1;
124 }
125 tsl2561_interface_debug_print("tsl2561: set addr pin ADDRESS_FLOAT.\n");
126 res = tsl2561_get_addr_pin(&gs_handle, &addr_pin);
127 if (res != 0)
128 {
129 tsl2561_interface_debug_print("tsl2561: get addr pin failed.\n");
130
131 return 1;
132 }
133 tsl2561_interface_debug_print("tsl2561: check addr pin %s.\n", addr_pin == TSL2561_ADDRESS_FLOAT ? "ok" : "error");
134
135 /* set ADDRESS_VCC */
136 res = tsl2561_set_addr_pin(&gs_handle, TSL2561_ADDRESS_VCC);
137 if (res != 0)
138 {
139 tsl2561_interface_debug_print("tsl2561: set addr pin failed.\n");
140
141 return 1;
142 }
143 tsl2561_interface_debug_print("tsl2561: set addr pin ADDRESS_VCC.\n");
144 res = tsl2561_get_addr_pin(&gs_handle, &addr_pin);
145 if (res != 0)
146 {
147 tsl2561_interface_debug_print("tsl2561: get addr pin failed.\n");
148
149 return 1;
150 }
151 tsl2561_interface_debug_print("tsl2561: check addr pin %s.\n", addr_pin == TSL2561_ADDRESS_VCC ? "ok" : "error");
152
153 /* set iic address */
154 res = tsl2561_set_addr_pin(&gs_handle, addr);
155 if (res != 0)
156 {
157 tsl2561_interface_debug_print("tsl2561: set addr pin failed.\n");
158
159 return 1;
160 }
161
162 /* tsl2561 init */
163 res = tsl2561_init(&gs_handle);
164 if (res != 0)
165 {
166 tsl2561_interface_debug_print("tsl2561: init failed.\n");
167
168 return 1;
169 }
170
171 /* tsl2561_power_down test */
172 tsl2561_interface_debug_print("tsl2561: tsl2561_power_down test.\n");
173 res = tsl2561_power_down(&gs_handle);
174 if (res != 0)
175 {
176 tsl2561_interface_debug_print("tsl2561: set power down failed.\n");
177 (void)tsl2561_deinit(&gs_handle);
178
179 return 1;
180 }
181 tsl2561_interface_debug_print("tsl2561: check power down %s.\n", res == 0 ? "ok" : "error");
182
183 /* tsl2561_wake_up test */
184 tsl2561_interface_debug_print("tsl2561: tsl2561_wake_up test.\n");
185 res = tsl2561_wake_up(&gs_handle);
186 if (res != 0)
187 {
188 tsl2561_interface_debug_print("tsl2561: set wake up failed.\n");
189 (void)tsl2561_deinit(&gs_handle);
190
191 return 1;
192 }
193 tsl2561_interface_debug_print("tsl2561: check wake up %s.\n", res == 0 ? "ok" : "error");
194
195 /* tsl2561_set_interrupt/tsl2561_get_interrupt test */
196 tsl2561_interface_debug_print("tsl2561: tsl2561_set_interrupt/tsl2561_get_interrupt test.\n");
197
198 /* enable interrupt */
199 res = tsl2561_set_interrupt(&gs_handle, TSL2561_BOOL_TRUE);
200 if (res != 0)
201 {
202 tsl2561_interface_debug_print("tsl2561: set interrupt failed.\n");
203 (void)tsl2561_deinit(&gs_handle);
204
205 return 1;
206 }
207 res = tsl2561_get_interrupt(&gs_handle, &enable);
208 if (res != 0)
209 {
210 tsl2561_interface_debug_print("tsl2561: get interrupt failed.\n");
211 (void)tsl2561_deinit(&gs_handle);
212
213 return 1;
214 }
215 tsl2561_interface_debug_print("tsl2561: check interrupt %s.\n", enable == TSL2561_BOOL_TRUE ? "ok" : "error");
216
217 /* disable interrupt */
218 res = tsl2561_set_interrupt(&gs_handle, TSL2561_BOOL_FALSE);
219 if (res != 0)
220 {
221 tsl2561_interface_debug_print("tsl2561: set interrupt failed.\n");
222 (void)tsl2561_deinit(&gs_handle);
223
224 return 1;
225 }
226 res = tsl2561_get_interrupt(&gs_handle, &enable);
227 if (res != 0)
228 {
229 tsl2561_interface_debug_print("tsl2561: get interrupt failed.\n");
230 (void)tsl2561_deinit(&gs_handle);
231
232 return 1;
233 }
234 tsl2561_interface_debug_print("tsl2561: check interrupt %s.\n", enable == TSL2561_BOOL_FALSE ? "ok" : "error");
235
236 /* tsl2561_set_gain/tsl2561_get_gain test */
237 tsl2561_interface_debug_print("tsl2561: tsl2561_set_gain/tsl2561_get_gain test.\n");
238
239 /* set gain 1 */
240 res = tsl2561_set_gain(&gs_handle, TSL2561_GAIN_1);
241 if (res != 0)
242 {
243 tsl2561_interface_debug_print("tsl2561: set gain failed.\n");
244 (void)tsl2561_deinit(&gs_handle);
245
246 return 1;
247 }
248 tsl2561_interface_debug_print("tsl2561: set gain 1.\n");
249 res = tsl2561_get_gain(&gs_handle, &gain);
250 if (res != 0)
251 {
252 tsl2561_interface_debug_print("tsl2561: get gain failed.\n");
253 (void)tsl2561_deinit(&gs_handle);
254
255 return 1;
256 }
257 tsl2561_interface_debug_print("tsl2561: check gain %s.\n", gain == TSL2561_GAIN_1 ? "ok" : "error");
258
259 /* set gain 16 */
260 res = tsl2561_set_gain(&gs_handle, TSL2561_GAIN_16);
261 if (res != 0)
262 {
263 tsl2561_interface_debug_print("tsl2561: set gain failed.\n");
264 (void)tsl2561_deinit(&gs_handle);
265
266 return 1;
267 }
268 tsl2561_interface_debug_print("tsl2561: set gain 16.\n");
269 res = tsl2561_get_gain(&gs_handle, &gain);
270 if (res != 0)
271 {
272 tsl2561_interface_debug_print("tsl2561: get gain failed.\n");
273 (void)tsl2561_deinit(&gs_handle);
274
275 return 1;
276 }
277 tsl2561_interface_debug_print("tsl2561: check gain %s.\n", gain == TSL2561_GAIN_16 ? "ok" : "error");
278
279 /* tsl2561_set_integration_time/tsl2561_get_integration_time test */
280 tsl2561_interface_debug_print("tsl2561: tsl2561_set_integration_time/tsl2561_get_integration_time test.\n");
281
282 /* set integration time 13 ms */
284 if (res != 0)
285 {
286 tsl2561_interface_debug_print("tsl2561: set integration time failed.\n");
287 (void)tsl2561_deinit(&gs_handle);
288
289 return 1;
290 }
291 tsl2561_interface_debug_print("tsl2561: set integration time 13 ms.\n");
292 res = tsl2561_get_integration_time(&gs_handle, &t);
293 if (res != 0)
294 {
295 tsl2561_interface_debug_print("tsl2561: get integration time failed.\n");
296 (void)tsl2561_deinit(&gs_handle);
297
298 return 1;
299 }
300 tsl2561_interface_debug_print("tsl2561: check gain %s.\n", t == TSL2561_INTEGRATION_TIME_13MS ? "ok" : "error");
301
302 /* set integration time 101 ms */
304 if (res != 0)
305 {
306 tsl2561_interface_debug_print("tsl2561: set integration time failed.\n");
307 (void)tsl2561_deinit(&gs_handle);
308
309 return 1;
310 }
311 tsl2561_interface_debug_print("tsl2561: set integration time 101 ms.\n");
312 res = tsl2561_get_integration_time(&gs_handle, &t);
313 if (res != 0)
314 {
315 tsl2561_interface_debug_print("tsl2561: get integration time failed.\n");
316 (void)tsl2561_deinit(&gs_handle);
317
318 return 1;
319 }
320 tsl2561_interface_debug_print("tsl2561: check gain %s.\n", t == TSL2561_INTEGRATION_TIME_101MS ? "ok" : "error");
321
322 /* set integration time 402 ms */
324 if (res != 0)
325 {
326 tsl2561_interface_debug_print("tsl2561: set integration time failed.\n");
327 (void)tsl2561_deinit(&gs_handle);
328
329 return 1;
330 }
331 tsl2561_interface_debug_print("tsl2561: set integration time 402 ms.\n");
332 res = tsl2561_get_integration_time(&gs_handle, &t);
333 if (res != 0)
334 {
335 tsl2561_interface_debug_print("tsl2561: get integration time failed.\n");
336 (void)tsl2561_deinit(&gs_handle);
337
338 return 1;
339 }
340 tsl2561_interface_debug_print("tsl2561: check gain %s.\n", t == TSL2561_INTEGRATION_TIME_402MS ? "ok" : "error");
341
342 /* tsl2561_set_interrupt_mode/tsl2561_get_interrupt_mode test */
343 tsl2561_interface_debug_print("tsl2561: tsl2561_set_interrupt_mode/tsl2561_get_interrupt_mode test.\n");
344
345 /* set interrupt mode every adc cycle */
347 if (res != 0)
348 {
349 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
350 (void)tsl2561_deinit(&gs_handle);
351
352 return 1;
353 }
354 tsl2561_interface_debug_print("tsl2561: set interrupt mode every adc cycle.\n");
355 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
356 if (res != 0)
357 {
358 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
359 (void)tsl2561_deinit(&gs_handle);
360
361 return 1;
362 }
363 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_EVERY_ADC_CYCLE ? "ok" : "error");
364
365 /* set interrupt mode any value out of threshold range */
367 if (res != 0)
368 {
369 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
370 (void)tsl2561_deinit(&gs_handle);
371
372 return 1;
373 }
374 tsl2561_interface_debug_print("tsl2561: set interrupt mode any value out of threshold range.\n");
375 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
376 if (res != 0)
377 {
378 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
379 (void)tsl2561_deinit(&gs_handle);
380
381 return 1;
382 }
383 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_ANY_VALUE_OUT_OF_THRESHOLD_RANGE ? "ok" : "error");
384
385 /* set interrupt mode 2 integration time out of range */
387 if (res != 0)
388 {
389 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
390 (void)tsl2561_deinit(&gs_handle);
391
392 return 1;
393 }
394 tsl2561_interface_debug_print("tsl2561: set interrupt mode 2 integration time out of range.\n");
395 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
396 if (res != 0)
397 {
398 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
399 (void)tsl2561_deinit(&gs_handle);
400
401 return 1;
402 }
403 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_2_INTEGRATION_TIME_OUT_OF_RANGE ? "ok" : "error");
404
405 /* set interrupt mode 3 integration time out of range */
407 if (res != 0)
408 {
409 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
410 (void)tsl2561_deinit(&gs_handle);
411
412 return 1;
413 }
414 tsl2561_interface_debug_print("tsl2561: set interrupt mode 3 integration time out of range.\n");
415 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
416 if (res != 0)
417 {
418 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
419 (void)tsl2561_deinit(&gs_handle);
420
421 return 1;
422 }
423 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_3_INTEGRATION_TIME_OUT_OF_RANGE ? "ok" : "error");
424
425 /* set interrupt mode 4 integration time out of range */
427 if (res != 0)
428 {
429 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
430 (void)tsl2561_deinit(&gs_handle);
431
432 return 1;
433 }
434 tsl2561_interface_debug_print("tsl2561: set interrupt mode 4 integration time out of range.\n");
435 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
436 if (res != 0)
437 {
438 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
439 (void)tsl2561_deinit(&gs_handle);
440
441 return 1;
442 }
443 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_4_INTEGRATION_TIME_OUT_OF_RANGE ? "ok" : "error");
444
445 /* set interrupt mode 5 integration time out of range */
447 if (res != 0)
448 {
449 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
450 (void)tsl2561_deinit(&gs_handle);
451
452 return 1;
453 }
454 tsl2561_interface_debug_print("tsl2561: set interrupt mode 5 integration time out of range.\n");
455 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
456 if (res != 0)
457 {
458 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
459 (void)tsl2561_deinit(&gs_handle);
460
461 return 1;
462 }
463 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_5_INTEGRATION_TIME_OUT_OF_RANGE ? "ok" : "error");
464
465 /* set interrupt mode 6 integration time out of range */
467 if (res != 0)
468 {
469 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
470 (void)tsl2561_deinit(&gs_handle);
471
472 return 1;
473 }
474 tsl2561_interface_debug_print("tsl2561: set interrupt mode 6 integration time out of range.\n");
475 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
476 if (res != 0)
477 {
478 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
479 (void)tsl2561_deinit(&gs_handle);
480
481 return 1;
482 }
483 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_6_INTEGRATION_TIME_OUT_OF_RANGE ? "ok" : "error");
484
485 /* set interrupt mode 7 integration time out of range */
487 if (res != 0)
488 {
489 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
490 (void)tsl2561_deinit(&gs_handle);
491
492 return 1;
493 }
494 tsl2561_interface_debug_print("tsl2561: set interrupt mode 7 integration time out of range.\n");
495 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
496 if (res != 0)
497 {
498 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
499 (void)tsl2561_deinit(&gs_handle);
500
501 return 1;
502 }
503 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_7_INTEGRATION_TIME_OUT_OF_RANGE ? "ok" : "error");
504
505 /* set interrupt mode 8 integration time out of range */
507 if (res != 0)
508 {
509 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
510 (void)tsl2561_deinit(&gs_handle);
511
512 return 1;
513 }
514 tsl2561_interface_debug_print("tsl2561: set interrupt mode 8 integration time out of range.\n");
515 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
516 if (res != 0)
517 {
518 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
519 (void)tsl2561_deinit(&gs_handle);
520
521 return 1;
522 }
523 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_8_INTEGRATION_TIME_OUT_OF_RANGE ? "ok" : "error");
524
525 /* set interrupt mode 9 integration time out of range */
527 if (res != 0)
528 {
529 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
530 (void)tsl2561_deinit(&gs_handle);
531
532 return 1;
533 }
534 tsl2561_interface_debug_print("tsl2561: set interrupt mode 9 integration time out of range.\n");
535 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
536 if (res != 0)
537 {
538 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
539 (void)tsl2561_deinit(&gs_handle);
540
541 return 1;
542 }
543 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_9_INTEGRATION_TIME_OUT_OF_RANGE ? "ok" : "error");
544
545 /* set interrupt mode 10 integration time out of range */
547 if (res != 0)
548 {
549 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
550 (void)tsl2561_deinit(&gs_handle);
551
552 return 1;
553 }
554 tsl2561_interface_debug_print("tsl2561: set interrupt mode 10 integration time out of range.\n");
555 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
556 if (res != 0)
557 {
558 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
559 (void)tsl2561_deinit(&gs_handle);
560
561 return 1;
562 }
563 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_10_INTEGRATION_TIME_OUT_OF_RANGE ? "ok" : "error");
564
565 /* set interrupt mode 11 integration time out of range */
567 if (res != 0)
568 {
569 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
570 (void)tsl2561_deinit(&gs_handle);
571
572 return 1;
573 }
574 tsl2561_interface_debug_print("tsl2561: set interrupt mode 11 integration time out of range.\n");
575 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
576 if (res != 0)
577 {
578 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
579 (void)tsl2561_deinit(&gs_handle);
580
581 return 1;
582 }
583 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_11_INTEGRATION_TIME_OUT_OF_RANGE ? "ok" : "error");
584
585 /* set interrupt mode 12 integration time out of range */
587 if (res != 0)
588 {
589 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
590 (void)tsl2561_deinit(&gs_handle);
591
592 return 1;
593 }
594 tsl2561_interface_debug_print("tsl2561: set interrupt mode 12 integration time out of range.\n");
595 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
596 if (res != 0)
597 {
598 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
599 (void)tsl2561_deinit(&gs_handle);
600
601 return 1;
602 }
603 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_12_INTEGRATION_TIME_OUT_OF_RANGE ? "ok" : "error");
604
605 /* set interrupt mode 13 integration time out of range */
607 if (res != 0)
608 {
609 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
610 (void)tsl2561_deinit(&gs_handle);
611
612 return 1;
613 }
614 tsl2561_interface_debug_print("tsl2561: set interrupt mode 13 integration time out of range.\n");
615 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
616 if (res != 0)
617 {
618 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
619 (void)tsl2561_deinit(&gs_handle);
620
621 return 1;
622 }
623 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_13_INTEGRATION_TIME_OUT_OF_RANGE ? "ok" : "error");
624
625 /* set interrupt mode 14 integration time out of range */
627 if (res != 0)
628 {
629 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
630 (void)tsl2561_deinit(&gs_handle);
631
632 return 1;
633 }
634 tsl2561_interface_debug_print("tsl2561: set interrupt mode 14 integration time out of range.\n");
635 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
636 if (res != 0)
637 {
638 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
639 (void)tsl2561_deinit(&gs_handle);
640
641 return 1;
642 }
643 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_14_INTEGRATION_TIME_OUT_OF_RANGE ? "ok" : "error");
644
645 /* set interrupt mode 15 integration time out of range */
647 if (res != 0)
648 {
649 tsl2561_interface_debug_print("tsl2561: set interrupt mode failed.\n");
650 (void)tsl2561_deinit(&gs_handle);
651
652 return 1;
653 }
654 tsl2561_interface_debug_print("tsl2561: set interrupt mode 15 integration time out of range.\n");
655 res = tsl2561_get_interrupt_mode(&gs_handle, &mode);
656 if (res != 0)
657 {
658 tsl2561_interface_debug_print("tsl2561: get interrupt mode failed.\n");
659 (void)tsl2561_deinit(&gs_handle);
660
661 return 1;
662 }
663 tsl2561_interface_debug_print("tsl2561: check interrupt mode %s.\n", mode == TSL2561_INTERRUPT_MODE_15_INTEGRATION_TIME_OUT_OF_RANGE ? "ok" : "error");
664
665 /* tsl2561_set_interrupt_high_threshold/tsl2561_get_interrupt_high_threshold test */
666 tsl2561_interface_debug_print("tsl2561: tsl2561_set_interrupt_high_threshold/tsl2561_get_interrupt_high_threshold test.\n");
667 ch0 = rand()%65536;
668 res = tsl2561_set_interrupt_high_threshold(&gs_handle, ch0);
669 if (res != 0)
670 {
671 tsl2561_interface_debug_print("tsl2561: set interrupt high threshold failed.\n");
672 (void)tsl2561_deinit(&gs_handle);
673
674 return 1;
675 }
676 tsl2561_interface_debug_print("tsl2561: set interrupt high threshold %d.\n", ch0);
677 res = tsl2561_get_interrupt_high_threshold(&gs_handle, (uint16_t *)&ch0_check);
678 if (res != 0)
679 {
680 tsl2561_interface_debug_print("tsl2561: get interrupt high threshold failed.\n");
681 (void)tsl2561_deinit(&gs_handle);
682
683 return 1;
684 }
685 tsl2561_interface_debug_print("tsl2561: check interrupt high threshold %s.\n", ch0 == ch0_check ? "ok" : "error");
686
687 /* tsl2561_set_interrupt_low_threshold/tsl2561_get_interrupt_low_threshold test */
688 tsl2561_interface_debug_print("tsl2561: tsl2561_set_interrupt_low_threshold/tsl2561_get_interrupt_low_threshold test.\n");
689 ch0 = rand()%65536;
690 res = tsl2561_set_interrupt_low_threshold(&gs_handle, ch0);
691 if (res != 0)
692 {
693 tsl2561_interface_debug_print("tsl2561: set interrupt low threshold failed.\n");
694 (void)tsl2561_deinit(&gs_handle);
695
696 return 1;
697 }
698 tsl2561_interface_debug_print("tsl2561: set interrupt low threshold %d.\n", ch0);
699 res = tsl2561_get_interrupt_low_threshold(&gs_handle, (uint16_t *)&ch0_check);
700 if (res != 0)
701 {
702 tsl2561_interface_debug_print("tsl2561: get interrupt low threshold failed.\n");
703 (void)tsl2561_deinit(&gs_handle);
704
705 return 1;
706 }
707 tsl2561_interface_debug_print("tsl2561: check interrupt low threshold %s.\n", ch0 == ch0_check ? "ok" : "error");
708
709 /* finished register test */
710 tsl2561_interface_debug_print("tsl2561: finished register test.\n");
711 (void)tsl2561_deinit(&gs_handle);
712
713 return 0;
714}
driver tsl2561 register test header file
uint8_t tsl2561_deinit(tsl2561_handle_t *handle)
close the chip
uint8_t tsl2561_power_down(tsl2561_handle_t *handle)
power down the chip
uint8_t tsl2561_get_integration_time(tsl2561_handle_t *handle, tsl2561_integration_time_t *t)
get the integration time
uint8_t tsl2561_set_addr_pin(tsl2561_handle_t *handle, tsl2561_address_t addr_pin)
set the iic address pin
uint8_t tsl2561_init(tsl2561_handle_t *handle)
initialize the chip
tsl2561_bool_t
tsl2561 bool enumeration definition
uint8_t tsl2561_get_addr_pin(tsl2561_handle_t *handle, tsl2561_address_t *addr_pin)
get the iic address pin
uint8_t tsl2561_info(tsl2561_info_t *info)
get chip's information
tsl2561_address_t
tsl2561 address enumeration definition
uint8_t tsl2561_set_gain(tsl2561_handle_t *handle, tsl2561_gain_t gain)
set the adc gain
struct tsl2561_handle_s tsl2561_handle_t
tsl2561 handle structure definition
uint8_t tsl2561_get_gain(tsl2561_handle_t *handle, tsl2561_gain_t *gain)
get the adc gain
uint8_t tsl2561_set_integration_time(tsl2561_handle_t *handle, tsl2561_integration_time_t t)
set the integration time
tsl2561_gain_t
tsl2561 gain enumeration definition
struct tsl2561_info_s tsl2561_info_t
tsl2561 information structure definition
tsl2561_integration_time_t
tsl2561 integration time enumeration definition
uint8_t tsl2561_wake_up(tsl2561_handle_t *handle)
wake up the chip
@ TSL2561_BOOL_TRUE
@ TSL2561_BOOL_FALSE
@ TSL2561_ADDRESS_VCC
@ TSL2561_ADDRESS_FLOAT
@ TSL2561_ADDRESS_GND
@ TSL2561_GAIN_16
@ TSL2561_GAIN_1
@ TSL2561_INTEGRATION_TIME_402MS
@ TSL2561_INTEGRATION_TIME_101MS
@ TSL2561_INTEGRATION_TIME_13MS
uint8_t tsl2561_interface_iic_init(void)
interface iic bus init
uint8_t tsl2561_interface_iic_deinit(void)
interface iic bus deinit
void tsl2561_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t tsl2561_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
uint8_t tsl2561_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
void tsl2561_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t tsl2561_set_interrupt_mode(tsl2561_handle_t *handle, tsl2561_interrupt_mode_t mode)
set the interrupt mode
uint8_t tsl2561_set_interrupt_low_threshold(tsl2561_handle_t *handle, uint16_t ch0_raw)
set the interrupt low threshold
uint8_t tsl2561_set_interrupt_high_threshold(tsl2561_handle_t *handle, uint16_t ch0_raw)
set the interrupt high threshold
tsl2561_interrupt_mode_t
tsl2561 interrupt mode enumeration definition
uint8_t tsl2561_get_interrupt_low_threshold(tsl2561_handle_t *handle, uint16_t *ch0_raw)
get the interrupt low threshold
uint8_t tsl2561_get_interrupt(tsl2561_handle_t *handle, tsl2561_bool_t *enable)
get the chip interrupt
uint8_t tsl2561_set_interrupt(tsl2561_handle_t *handle, tsl2561_bool_t enable)
enable or disable the chip interrupt
uint8_t tsl2561_get_interrupt_mode(tsl2561_handle_t *handle, tsl2561_interrupt_mode_t *mode)
get the interrupt mode
uint8_t tsl2561_get_interrupt_high_threshold(tsl2561_handle_t *handle, uint16_t *ch0_raw)
get the interrupt high threshold
@ TSL2561_INTERRUPT_MODE_EVERY_ADC_CYCLE
@ TSL2561_INTERRUPT_MODE_11_INTEGRATION_TIME_OUT_OF_RANGE
@ TSL2561_INTERRUPT_MODE_9_INTEGRATION_TIME_OUT_OF_RANGE
@ TSL2561_INTERRUPT_MODE_3_INTEGRATION_TIME_OUT_OF_RANGE
@ TSL2561_INTERRUPT_MODE_10_INTEGRATION_TIME_OUT_OF_RANGE
@ TSL2561_INTERRUPT_MODE_2_INTEGRATION_TIME_OUT_OF_RANGE
@ TSL2561_INTERRUPT_MODE_13_INTEGRATION_TIME_OUT_OF_RANGE
@ TSL2561_INTERRUPT_MODE_12_INTEGRATION_TIME_OUT_OF_RANGE
@ TSL2561_INTERRUPT_MODE_6_INTEGRATION_TIME_OUT_OF_RANGE
@ TSL2561_INTERRUPT_MODE_7_INTEGRATION_TIME_OUT_OF_RANGE
@ TSL2561_INTERRUPT_MODE_14_INTEGRATION_TIME_OUT_OF_RANGE
@ TSL2561_INTERRUPT_MODE_ANY_VALUE_OUT_OF_THRESHOLD_RANGE
@ TSL2561_INTERRUPT_MODE_4_INTEGRATION_TIME_OUT_OF_RANGE
@ TSL2561_INTERRUPT_MODE_8_INTEGRATION_TIME_OUT_OF_RANGE
@ TSL2561_INTERRUPT_MODE_15_INTEGRATION_TIME_OUT_OF_RANGE
@ TSL2561_INTERRUPT_MODE_5_INTEGRATION_TIME_OUT_OF_RANGE
uint8_t tsl2561_register_test(tsl2561_address_t addr)
register test
uint32_t driver_version
char manufacturer_name[32]