LibDriver MAX44009
Loading...
Searching...
No Matches
driver_max44009_register_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static max44009_handle_t gs_handle;
41
51{
52 uint8_t res;
53 uint8_t threshold;
54 uint8_t threshold_check;
55 uint8_t tim;
56 uint8_t tim_check;
57 uint8_t reg;
58 float lux;
59 float lux_check;
60 float ms;
61 float ms_check;
62 max44009_bool_t enable;
64 max44009_info_t info;
65
66 /* link interface function */
74
75 /* get information */
76 res = max44009_info(&info);
77 if (res != 0)
78 {
79 max44009_interface_debug_print("max44009: get info failed.\n");
80
81 return 1;
82 }
83 else
84 {
85 /* print chip info */
86 max44009_interface_debug_print("max44009: chip is %s.\n", info.chip_name);
87 max44009_interface_debug_print("max44009: manufacturer is %s.\n", info.manufacturer_name);
88 max44009_interface_debug_print("max44009: interface is %s.\n", info.interface);
89 max44009_interface_debug_print("max44009: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
90 max44009_interface_debug_print("max44009: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
91 max44009_interface_debug_print("max44009: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
92 max44009_interface_debug_print("max44009: max current is %0.3fmA.\n", info.max_current_ma);
93 max44009_interface_debug_print("max44009: max temperature is %0.1fC.\n", info.temperature_max);
94 max44009_interface_debug_print("max44009: min temperature is %0.1fC.\n", info.temperature_min);
95 }
96
97 /* start register test */
98 max44009_interface_debug_print("max44009: start register test.\n");
99
100 /* set addr pin */
101 res = max44009_set_addr_pin(&gs_handle, addr);
102 if (res != 0)
103 {
104 max44009_interface_debug_print("max44009: set addr pin test.\n");
105
106 return 1;
107 }
108
109 /* init */
110 res = max44009_init(&gs_handle);
111 if (res != 0)
112 {
113 max44009_interface_debug_print("max44009: init failed.\n");
114
115 return 1;
116 }
117
118 /* max44009_set_interrupt/max44009_get_interrupt test */
119 max44009_interface_debug_print("max44009: max44009_set_interrupt/max44009_get_interrupt test.\n");
120
121 /* enable */
123 if (res != 0)
124 {
125 max44009_interface_debug_print("max44009: set interrupt failed.\n");
126 (void)max44009_deinit(&gs_handle);
127
128 return 1;
129 }
130 max44009_interface_debug_print("max44009: set interrupt enable.\n");
131 res = max44009_get_interrupt(&gs_handle, &enable);
132 if (res != 0)
133 {
134 max44009_interface_debug_print("max44009: get interrupt failed.\n");
135 (void)max44009_deinit(&gs_handle);
136
137 return 1;
138 }
139 max44009_interface_debug_print("max44009: check interrupt %s.\n", (enable == MAX44009_BOOL_TRUE) ? "ok" : "error");
140
141 /* disable */
143 if (res != 0)
144 {
145 max44009_interface_debug_print("max44009: set interrupt failed.\n");
146 (void)max44009_deinit(&gs_handle);
147
148 return 1;
149 }
150 max44009_interface_debug_print("max44009: set interrupt disable.\n");
151 res = max44009_get_interrupt(&gs_handle, &enable);
152 if (res != 0)
153 {
154 max44009_interface_debug_print("max44009: get interrupt failed.\n");
155 (void)max44009_deinit(&gs_handle);
156
157 return 1;
158 }
159 max44009_interface_debug_print("max44009: check interrupt %s.\n", (enable == MAX44009_BOOL_FALSE) ? "ok" : "error");
160
161 /* max44009_set_continuous_mode/max44009_get_continuous_mode test */
162 max44009_interface_debug_print("max44009: max44009_set_continuous_mode/max44009_get_continuous_mode test.\n");
163
164 /* enable continuous mode */
166 if (res != 0)
167 {
168 max44009_interface_debug_print("max44009: set continuous mode failed.\n");
169 (void)max44009_deinit(&gs_handle);
170
171 return 1;
172 }
173 max44009_interface_debug_print("max44009: enable continuous mode.\n");
174 res = max44009_get_continuous_mode(&gs_handle, &enable);
175 if (res != 0)
176 {
177 max44009_interface_debug_print("max44009: get continuous mode failed.\n");
178 (void)max44009_deinit(&gs_handle);
179
180 return 1;
181 }
182 max44009_interface_debug_print("max44009: check continuous mode %s.\n", (enable == MAX44009_BOOL_TRUE) ? "ok" : "error");
183
184 /* disable continuous mode */
186 if (res != 0)
187 {
188 max44009_interface_debug_print("max44009: set continuous mode failed.\n");
189 (void)max44009_deinit(&gs_handle);
190
191 return 1;
192 }
193 max44009_interface_debug_print("max44009: disable continuous mode.\n");
194 res = max44009_get_continuous_mode(&gs_handle, &enable);
195 if (res != 0)
196 {
197 max44009_interface_debug_print("max44009: get continuous mode failed.\n");
198 (void)max44009_deinit(&gs_handle);
199
200 return 1;
201 }
202 max44009_interface_debug_print("max44009: check continuous mode %s.\n", (enable == MAX44009_BOOL_FALSE) ? "ok" : "error");
203
204 /* max44009_set_auto_range/max44009_get_auto_range test */
205 max44009_interface_debug_print("max44009: max44009_set_auto_range/max44009_get_auto_range test.\n");
206
207 /* enable auto range */
209 if (res != 0)
210 {
211 max44009_interface_debug_print("max44009: set auto range failed.\n");
212 (void)max44009_deinit(&gs_handle);
213
214 return 1;
215 }
216 max44009_interface_debug_print("max44009: enable auto range.\n");
217 res = max44009_get_auto_range(&gs_handle, &enable);
218 if (res != 0)
219 {
220 max44009_interface_debug_print("max44009: get auto range failed.\n");
221 (void)max44009_deinit(&gs_handle);
222
223 return 1;
224 }
225 max44009_interface_debug_print("max44009: check auto range %s.\n", (enable == MAX44009_BOOL_TRUE) ? "ok" : "error");
226
227 /* disable auto range */
229 if (res != 0)
230 {
231 max44009_interface_debug_print("max44009: set auto range failed.\n");
232 (void)max44009_deinit(&gs_handle);
233
234 return 1;
235 }
236 max44009_interface_debug_print("max44009: disable auto range.\n");
237 res = max44009_get_auto_range(&gs_handle, &enable);
238 if (res != 0)
239 {
240 max44009_interface_debug_print("max44009: get auto range failed.\n");
241 (void)max44009_deinit(&gs_handle);
242
243 return 1;
244 }
245 max44009_interface_debug_print("max44009: check auto range %s.\n", (enable == MAX44009_BOOL_FALSE) ? "ok" : "error");
246
247 /* max44009_set_current_div_8/max44009_get_current_div_8 test */
248 max44009_interface_debug_print("max44009: max44009_set_current_div_8/max44009_get_current_div_8 test.\n");
249
250 /* enable current div 8 */
252 if (res != 0)
253 {
254 max44009_interface_debug_print("max44009: set current div 8 failed.\n");
255 (void)max44009_deinit(&gs_handle);
256
257 return 1;
258 }
259 max44009_interface_debug_print("max44009: enable current div 8.\n");
260 res = max44009_get_current_div_8(&gs_handle, &enable);
261 if (res != 0)
262 {
263 max44009_interface_debug_print("max44009: get current div 8 failed.\n");
264 (void)max44009_deinit(&gs_handle);
265
266 return 1;
267 }
268 max44009_interface_debug_print("max44009: check current div 8 %s.\n", (enable == MAX44009_BOOL_TRUE) ? "ok" : "error");
269
270 /* disable current div 8 */
272 if (res != 0)
273 {
274 max44009_interface_debug_print("max44009: set current div 8 failed.\n");
275 (void)max44009_deinit(&gs_handle);
276
277 return 1;
278 }
279 max44009_interface_debug_print("max44009: disable current div 8.\n");
280 res = max44009_get_current_div_8(&gs_handle, &enable);
281 if (res != 0)
282 {
283 max44009_interface_debug_print("max44009: get current div 8 failed.\n");
284 (void)max44009_deinit(&gs_handle);
285
286 return 1;
287 }
288 max44009_interface_debug_print("max44009: check current div 8 %s.\n", (enable == MAX44009_BOOL_FALSE) ? "ok" : "error");
289
290 /* max44009_set_integration_time/max44009_get_integration_time test */
291 max44009_interface_debug_print("max44009: max44009_set_integration_time/max44009_get_integration_time test.\n");
292
293 /* set integration time 800ms */
295 if (res != 0)
296 {
297 max44009_interface_debug_print("max44009: set integration time failed.\n");
298 (void)max44009_deinit(&gs_handle);
299
300 return 1;
301 }
302 max44009_interface_debug_print("max44009: set integration time 800ms.\n");
303 res = max44009_get_integration_time(&gs_handle, &t);
304 if (res != 0)
305 {
306 max44009_interface_debug_print("max44009: get integration time failed.\n");
307 (void)max44009_deinit(&gs_handle);
308
309 return 1;
310 }
311 max44009_interface_debug_print("max44009: check integration time %s.\n", (t == MAX44009_INTEGRATION_TIME_800MS) ? "ok" : "error");
312
313 /* set integration time 400ms */
315 if (res != 0)
316 {
317 max44009_interface_debug_print("max44009: set integration time failed.\n");
318 (void)max44009_deinit(&gs_handle);
319
320 return 1;
321 }
322 max44009_interface_debug_print("max44009: set integration time 400ms.\n");
323 res = max44009_get_integration_time(&gs_handle, &t);
324 if (res != 0)
325 {
326 max44009_interface_debug_print("max44009: get integration time failed.\n");
327 (void)max44009_deinit(&gs_handle);
328
329 return 1;
330 }
331 max44009_interface_debug_print("max44009: check integration time %s.\n", (t == MAX44009_INTEGRATION_TIME_400MS) ? "ok" : "error");
332
333 /* set integration time 200ms */
335 if (res != 0)
336 {
337 max44009_interface_debug_print("max44009: set integration time failed.\n");
338 (void)max44009_deinit(&gs_handle);
339
340 return 1;
341 }
342 max44009_interface_debug_print("max44009: set integration time 200ms.\n");
343 res = max44009_get_integration_time(&gs_handle, &t);
344 if (res != 0)
345 {
346 max44009_interface_debug_print("max44009: get integration time failed.\n");
347 (void)max44009_deinit(&gs_handle);
348
349 return 1;
350 }
351 max44009_interface_debug_print("max44009: check integration time %s.\n", (t == MAX44009_INTEGRATION_TIME_200MS) ? "ok" : "error");
352
353 /* set integration time 100ms */
355 if (res != 0)
356 {
357 max44009_interface_debug_print("max44009: set integration time failed.\n");
358 (void)max44009_deinit(&gs_handle);
359
360 return 1;
361 }
362 max44009_interface_debug_print("max44009: set integration time 100ms.\n");
363 res = max44009_get_integration_time(&gs_handle, &t);
364 if (res != 0)
365 {
366 max44009_interface_debug_print("max44009: get integration time failed.\n");
367 (void)max44009_deinit(&gs_handle);
368
369 return 1;
370 }
371 max44009_interface_debug_print("max44009: check integration time %s.\n", (t == MAX44009_INTEGRATION_TIME_100MS) ? "ok" : "error");
372
373 /* set integration time 50ms */
375 if (res != 0)
376 {
377 max44009_interface_debug_print("max44009: set integration time failed.\n");
378 (void)max44009_deinit(&gs_handle);
379
380 return 1;
381 }
382 max44009_interface_debug_print("max44009: set integration time 50ms.\n");
383 res = max44009_get_integration_time(&gs_handle, &t);
384 if (res != 0)
385 {
386 max44009_interface_debug_print("max44009: get integration time failed.\n");
387 (void)max44009_deinit(&gs_handle);
388
389 return 1;
390 }
391 max44009_interface_debug_print("max44009: check integration time %s.\n", (t == MAX44009_INTEGRATION_TIME_50MS) ? "ok" : "error");
392
393 /* set integration time 25ms */
395 if (res != 0)
396 {
397 max44009_interface_debug_print("max44009: set integration time failed.\n");
398 (void)max44009_deinit(&gs_handle);
399
400 return 1;
401 }
402 max44009_interface_debug_print("max44009: set integration time 25ms.\n");
403 res = max44009_get_integration_time(&gs_handle, &t);
404 if (res != 0)
405 {
406 max44009_interface_debug_print("max44009: get integration time failed.\n");
407 (void)max44009_deinit(&gs_handle);
408
409 return 1;
410 }
411 max44009_interface_debug_print("max44009: check integration time %s.\n", (t == MAX44009_INTEGRATION_TIME_25MS) ? "ok" : "error");
412
413 /* set integration time 12.5ms */
415 if (res != 0)
416 {
417 max44009_interface_debug_print("max44009: set integration time failed.\n");
418 (void)max44009_deinit(&gs_handle);
419
420 return 1;
421 }
422 max44009_interface_debug_print("max44009: set integration time 12.5ms.\n");
423 res = max44009_get_integration_time(&gs_handle, &t);
424 if (res != 0)
425 {
426 max44009_interface_debug_print("max44009: get integration time failed.\n");
427 (void)max44009_deinit(&gs_handle);
428
429 return 1;
430 }
431 max44009_interface_debug_print("max44009: check integration time %s.\n", (t == MAX44009_INTEGRATION_TIME_12P5MS) ? "ok" : "error");
432
433 /* set integration time 6.25ms */
435 if (res != 0)
436 {
437 max44009_interface_debug_print("max44009: set integration time failed.\n");
438 (void)max44009_deinit(&gs_handle);
439
440 return 1;
441 }
442 max44009_interface_debug_print("max44009: set integration time 6.25ms.\n");
443 res = max44009_get_integration_time(&gs_handle, &t);
444 if (res != 0)
445 {
446 max44009_interface_debug_print("max44009: get integration time failed.\n");
447 (void)max44009_deinit(&gs_handle);
448
449 return 1;
450 }
451 max44009_interface_debug_print("max44009: check integration time %s.\n", (t == MAX44009_INTEGRATION_TIME_6P25MS) ? "ok" : "error");
452
453 /* max44009_set_interrupt_high_threshold/max44009_get_interrupt_high_threshold test */
454 max44009_interface_debug_print("max44009: max44009_set_interrupt_high_threshold/max44009_get_interrupt_high_threshold test.\n");
455
456 threshold = rand() % 0xFFFFU;
457 res = max44009_set_interrupt_high_threshold(&gs_handle, threshold);
458 if (res != 0)
459 {
460 max44009_interface_debug_print("max44009: set interrupt high threshold failed.\n");
461 (void)max44009_deinit(&gs_handle);
462
463 return 1;
464 }
465 max44009_interface_debug_print("max44009: set interrupt high threshold 0x%02X.\n", threshold);
466 res = max44009_get_interrupt_high_threshold(&gs_handle, &threshold_check);
467 if (res != 0)
468 {
469 max44009_interface_debug_print("max44009: get interrupt high threshold failed.\n");
470 (void)max44009_deinit(&gs_handle);
471
472 return 1;
473 }
474 max44009_interface_debug_print("max44009: check interrupt high threshold %s.\n", (threshold == threshold_check) ? "ok" : "error");
475
476 /* max44009_set_interrupt_low_threshold/max44009_get_interrupt_low_threshold test */
477 max44009_interface_debug_print("max44009: max44009_set_interrupt_low_threshold/max44009_get_interrupt_low_threshold test.\n");
478
479 threshold = rand() % 0xFFU;
480 res = max44009_set_interrupt_low_threshold(&gs_handle, threshold);
481 if (res != 0)
482 {
483 max44009_interface_debug_print("max44009: set interrupt low threshold failed.\n");
484 (void)max44009_deinit(&gs_handle);
485
486 return 1;
487 }
488 max44009_interface_debug_print("max44009: set interrupt low threshold 0x%02X.\n", threshold);
489 res = max44009_get_interrupt_low_threshold(&gs_handle, &threshold_check);
490 if (res != 0)
491 {
492 max44009_interface_debug_print("max44009: get interrupt low threshold failed.\n");
493 (void)max44009_deinit(&gs_handle);
494
495 return 1;
496 }
497 max44009_interface_debug_print("max44009: check interrupt low threshold %s.\n", (threshold == threshold_check) ? "ok" : "error");
498
499 /* max44009_set_interrupt_low_threshold/max44009_get_interrupt_low_threshold test */
500 max44009_interface_debug_print("max44009: max44009_set_interrupt_low_threshold/max44009_get_interrupt_low_threshold test.\n");
501
502 tim = rand() % 0xFFU;
503 res = max44009_set_threshold_timer(&gs_handle, tim);
504 if (res != 0)
505 {
506 max44009_interface_debug_print("max44009: set threshold timer failed.\n");
507 (void)max44009_deinit(&gs_handle);
508
509 return 1;
510 }
511 max44009_interface_debug_print("max44009: set threshold timer 0x%02X.\n", tim);
512 res = max44009_get_threshold_timer(&gs_handle, &tim_check);
513 if (res != 0)
514 {
515 max44009_interface_debug_print("max44009: get threshold timer failed.\n");
516 (void)max44009_deinit(&gs_handle);
517
518 return 1;
519 }
520 max44009_interface_debug_print("max44009: check threshold timer %s.\n", (tim == tim_check) ? "ok" : "error");
521
522 /* max44009_get_interrupt_status test */
523 max44009_interface_debug_print("max44009: max44009_get_interrupt_status test.\n");
524
525 /* get interrupt status */
526 res = max44009_get_interrupt_status(&gs_handle, &enable);
527 if (res != 0)
528 {
529 max44009_interface_debug_print("max44009: get interrupt status failed.\n");
530 (void)max44009_deinit(&gs_handle);
531
532 return 1;
533 }
534 max44009_interface_debug_print("max44009: interrupt status is %s.\n", (enable == MAX44009_BOOL_TRUE) ? "true" : "false");
535
536 /* max44009_threshold_convert_to_register/max44009_threshold_convert_to_data test */
537 max44009_interface_debug_print("max44009: max44009_threshold_convert_to_register/max44009_threshold_convert_to_data test.\n");
538
539 lux = (float)(rand() % 10000) / 10.0f;
540 res = max44009_threshold_convert_to_register(&gs_handle, lux, &reg);
541 if (res != 0)
542 {
543 max44009_interface_debug_print("max44009: threshold convert to register failed.\n");
544 (void)max44009_deinit(&gs_handle);
545
546 return 1;
547 }
548 max44009_interface_debug_print("max44009: set threshold %0.1f.\n", lux);
549 res = max44009_threshold_convert_to_data(&gs_handle, reg, &lux_check);
550 if (res != 0)
551 {
552 max44009_interface_debug_print("max44009: threshold convert to data failed.\n");
553 (void)max44009_deinit(&gs_handle);
554
555 return 1;
556 }
557 max44009_interface_debug_print("max44009: check threshold %0.1f.\n", lux_check);
558
559 /* max44009_timer_convert_to_register/max44009_timer_convert_to_data test */
560 max44009_interface_debug_print("max44009: max44009_timer_convert_to_register/max44009_timer_convert_to_data test.\n");
561
562 ms = (float)(rand() % 10000);
563 res = max44009_timer_convert_to_register(&gs_handle, ms, &reg);
564 if (res != 0)
565 {
566 max44009_interface_debug_print("max44009: timer convert to register failed.\n");
567 (void)max44009_deinit(&gs_handle);
568
569 return 1;
570 }
571 max44009_interface_debug_print("max44009: set timer %0.0fms.\n", ms);
572 res = max44009_timer_convert_to_data(&gs_handle, reg, &ms_check);
573 if (res != 0)
574 {
575 max44009_interface_debug_print("max44009: timer convert to data failed.\n");
576 (void)max44009_deinit(&gs_handle);
577
578 return 1;
579 }
580 max44009_interface_debug_print("max44009: check timer %0.0f.\n", ms_check);
581
582 /* finish register test */
583 max44009_interface_debug_print("max44009: finish register test.\n");
584 (void)max44009_deinit(&gs_handle);
585
586 return 0;
587}
driver max44009 register test header file
uint8_t max44009_get_current_div_8(max44009_handle_t *handle, max44009_bool_t *enable)
get current div 8
uint8_t max44009_set_integration_time(max44009_handle_t *handle, max44009_integration_time_t t)
set integration time
uint8_t max44009_get_interrupt(max44009_handle_t *handle, max44009_bool_t *enable)
get interrupt status
max44009_integration_time_t
max44009 integration time enumeration definition
uint8_t max44009_timer_convert_to_data(max44009_handle_t *handle, uint8_t reg, float *ms)
convert the register raw data to timer
uint8_t max44009_set_current_div_8(max44009_handle_t *handle, max44009_bool_t enable)
enable or disable current div 8
uint8_t max44009_get_interrupt_status(max44009_handle_t *handle, max44009_bool_t *enable)
get interrupt status
uint8_t max44009_set_interrupt_high_threshold(max44009_handle_t *handle, uint8_t threshold)
set interrupt high threshold
uint8_t max44009_get_interrupt_high_threshold(max44009_handle_t *handle, uint8_t *threshold)
get interrupt high threshold
struct max44009_handle_s max44009_handle_t
max44009 handle structure definition
uint8_t max44009_threshold_convert_to_register(max44009_handle_t *handle, float lux, uint8_t *reg)
convert the threshold to the register raw data
uint8_t max44009_get_auto_range(max44009_handle_t *handle, max44009_bool_t *enable)
get auto range
uint8_t max44009_set_addr_pin(max44009_handle_t *handle, max44009_address_t addr_pin)
set the address pin
uint8_t max44009_get_threshold_timer(max44009_handle_t *handle, uint8_t *t)
get threshold timer
uint8_t max44009_set_interrupt_low_threshold(max44009_handle_t *handle, uint8_t threshold)
set interrupt low threshold
uint8_t max44009_info(max44009_info_t *info)
get chip's information
struct max44009_info_s max44009_info_t
max44009 information structure definition
uint8_t max44009_set_continuous_mode(max44009_handle_t *handle, max44009_bool_t enable)
enable or disable continuous mode
uint8_t max44009_get_continuous_mode(max44009_handle_t *handle, max44009_bool_t *enable)
get continuous mode stauts
max44009_address_t
max44009 address enumeration definition
uint8_t max44009_threshold_convert_to_data(max44009_handle_t *handle, uint8_t reg, float *lux)
convert the register raw data to the threshold
uint8_t max44009_set_interrupt(max44009_handle_t *handle, max44009_bool_t enable)
enable or disable interrupt
uint8_t max44009_get_integration_time(max44009_handle_t *handle, max44009_integration_time_t *t)
get integration time
uint8_t max44009_deinit(max44009_handle_t *handle)
close the chip
uint8_t max44009_init(max44009_handle_t *handle)
initialize the chip
uint8_t max44009_get_interrupt_low_threshold(max44009_handle_t *handle, uint8_t *threshold)
get interrupt low threshold
uint8_t max44009_set_auto_range(max44009_handle_t *handle, max44009_bool_t enable)
enable or disable auto range
uint8_t max44009_set_threshold_timer(max44009_handle_t *handle, uint8_t t)
set threshold timer
max44009_bool_t
max44009 bool enumeration definition
uint8_t max44009_timer_convert_to_register(max44009_handle_t *handle, float ms, uint8_t *reg)
convert the timer to the register raw data
@ MAX44009_INTEGRATION_TIME_400MS
@ MAX44009_INTEGRATION_TIME_12P5MS
@ MAX44009_INTEGRATION_TIME_200MS
@ MAX44009_INTEGRATION_TIME_100MS
@ MAX44009_INTEGRATION_TIME_800MS
@ MAX44009_INTEGRATION_TIME_6P25MS
@ MAX44009_INTEGRATION_TIME_50MS
@ MAX44009_INTEGRATION_TIME_25MS
@ MAX44009_BOOL_TRUE
@ MAX44009_BOOL_FALSE
void max44009_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t max44009_interface_iic_init(void)
interface iic bus init
uint8_t max44009_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t max44009_interface_iic_deinit(void)
interface iic bus deinit
uint8_t max44009_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
void max44009_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t max44009_register_test(max44009_address_t addr)
register test
char manufacturer_name[32]