LibDriver MIFARE_ULTRALIGHT
Loading...
Searching...
No Matches
driver_mifare_ultralight_card_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static mifare_ultralight_handle_t gs_handle;
41
50{
51 uint8_t res;
52 uint8_t p;
53 uint8_t limit_check;
54 uint32_t i;
55 uint32_t cnt;
56 uint8_t id[4];
57 uint8_t number[7];
58 uint8_t signature[32];
59 uint8_t data[16];
60 uint8_t data_check[16];
61 uint8_t page[32];
62 uint8_t pack[2];
63 uint8_t pwd[4];
64 uint8_t lock[5];
65 uint8_t lock_check[5];
66 uint16_t len;
67 uint8_t flag;
68 uint8_t identifier;
74
75 /* link functions */
82
83 /* get information */
84 res = mifare_ultralight_info(&info);
85 if (res != 0)
86 {
87 mifare_ultralight_interface_debug_print("mifare_ultralight: get info failed.\n");
88
89 return 1;
90 }
91 else
92 {
93 /* print chip info */
94 mifare_ultralight_interface_debug_print("mifare_ultralight: chip is %s.\n", info.chip_name);
95 mifare_ultralight_interface_debug_print("mifare_ultralight: manufacturer is %s.\n", info.manufacturer_name);
96 mifare_ultralight_interface_debug_print("mifare_ultralight: interface is %s.\n", info.interface);
97 mifare_ultralight_interface_debug_print("mifare_ultralight: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
98 mifare_ultralight_interface_debug_print("mifare_ultralight: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
99 mifare_ultralight_interface_debug_print("mifare_ultralight: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
100 mifare_ultralight_interface_debug_print("mifare_ultralight: max current is %0.2fmA.\n", info.max_current_ma);
101 mifare_ultralight_interface_debug_print("mifare_ultralight: max temperature is %0.1fC.\n", info.temperature_max);
102 mifare_ultralight_interface_debug_print("mifare_ultralight: min temperature is %0.1fC.\n", info.temperature_min);
103 }
104
105 /* start register test */
106 mifare_ultralight_interface_debug_print("mifare_ultralight: start card test.\n");
107
108 /* init */
109 res = mifare_ultralight_init(&gs_handle);
110 if (res != 0)
111 {
112 mifare_ultralight_interface_debug_print("mifare_ultralight: init failed.\n");
113
114 return 1;
115 }
116
117 /* wake up */
118 res = mifare_ultralight_wake_up(&gs_handle, &type);
119 if (res != 0)
120 {
121 mifare_ultralight_interface_debug_print("mifare_ultralight: wake up failed.\n");
122 (void)mifare_ultralight_deinit(&gs_handle);
123
124 return 1;
125 }
127 {
128 mifare_ultralight_interface_debug_print("mifare_ultralight: find ultralight card.\n");
129 }
130 else
131 {
132 mifare_ultralight_interface_debug_print("mifare_ultralight: invalid type.\n");
133 (void)mifare_ultralight_deinit(&gs_handle);
134
135 return 1;
136 }
137
138 /* anti collision cl1 */
139 res = mifare_ultralight_anticollision_cl1(&gs_handle, id);
140 if (res != 0)
141 {
142 mifare_ultralight_interface_debug_print("mifare_ultralight: anti collision cl1 failed.\n");
143 (void)mifare_ultralight_deinit(&gs_handle);
144
145 return 1;
146 }
147
148 /* select cl1 */
149 res = mifare_ultralight_select_cl1(&gs_handle, id);
150 if (res != 0)
151 {
152 mifare_ultralight_interface_debug_print("mifare_ultralight: select cl1 failed.\n");
153 (void)mifare_ultralight_deinit(&gs_handle);
154
155 return 1;
156 }
157 mifare_ultralight_interface_debug_print("mifare_ultralight: id1 is 0x%02X 0x%02X 0x%02X 0x%02X.\n", id[0], id[1], id[2], id[3]);
158
159 /* anti collision cl2 */
160 res = mifare_ultralight_anticollision_cl2(&gs_handle, id);
161 if (res != 0)
162 {
163 mifare_ultralight_interface_debug_print("mifare_ultralight: anti collision cl2 failed.\n");
164 (void)mifare_ultralight_deinit(&gs_handle);
165
166 return 1;
167 }
168
169 /* anti collision cl2 */
170 res = mifare_ultralight_anticollision_cl2(&gs_handle, id);
171 if (res != 0)
172 {
173 mifare_ultralight_interface_debug_print("mifare_ultralight: anti collision cl2 failed.\n");
174 (void)mifare_ultralight_deinit(&gs_handle);
175
176 return 1;
177 }
178 mifare_ultralight_interface_debug_print("mifare_ultralight: id2 is 0x%02X 0x%02X 0x%02X 0x%02X.\n", id[0], id[1], id[2], id[3]);
179
180 /* get serial number */
181 res = mifare_ultralight_get_serial_number(&gs_handle, number);
182 if (res != 0)
183 {
184 mifare_ultralight_interface_debug_print("mifare_ultralight: get serial number failed.\n");
185 (void)mifare_ultralight_deinit(&gs_handle);
186
187 return 1;
188 }
189 mifare_ultralight_interface_debug_print("mifare_ultralight: serial number is ");
190 for (i = 0; i < 7; i++)
191 {
192 mifare_ultralight_interface_debug_print("0x%02X ", number[i]);
193 }
195
196 /* read signature */
197 res = mifare_ultralight_read_signature(&gs_handle, signature);
198 if (res != 0)
199 {
200 mifare_ultralight_interface_debug_print("mifare_ultralight: read signature failed.\n");
201 (void)mifare_ultralight_deinit(&gs_handle);
202
203 return 1;
204 }
205 mifare_ultralight_interface_debug_print("mifare_ultralight: signature is ");
206 for (i = 0; i < 32; i++)
207 {
208 mifare_ultralight_interface_debug_print("0x%02X ", signature[i]);
209 }
211
212 mifare_ultralight_interface_debug_print("mifare_ultralight: read four pages from page 0.\n");
213
214 /* read four pages */
215 res = mifare_ultralight_read_four_pages(&gs_handle, 0x00, data_check);
216 if (res != 0)
217 {
218 mifare_ultralight_interface_debug_print("mifare_ultralight: read four pages failed.\n");
219 (void)mifare_ultralight_deinit(&gs_handle);
220
221 return 1;
222 }
223 for (i = 0; i < 16; i++)
224 {
225 mifare_ultralight_interface_debug_print("0x%02X ", data_check[i]);
226 }
228
229 mifare_ultralight_interface_debug_print("mifare_ultralight: read page 3.\n");
230
231 /* read page */
232 res = mifare_ultralight_read_page(&gs_handle, 0x3, data_check);
233 if (res != 0)
234 {
235 mifare_ultralight_interface_debug_print("mifare_ultralight: read page failed.\n");
236 (void)mifare_ultralight_deinit(&gs_handle);
237
238 return 1;
239 }
240 for (i = 0; i < 4; i++)
241 {
242 mifare_ultralight_interface_debug_print("0x%02X ", data_check[i]);
243 }
245
246 mifare_ultralight_interface_debug_print("mifare_ultralight: fast read page from page 0 - page 5.\n");
247
248 /* fast read page */
249 len = 32;
250 res = mifare_ultralight_fast_read_page(&gs_handle, 0x00, 0x5, page, &len);
251 if (res != 0)
252 {
253 mifare_ultralight_interface_debug_print("mifare_ultralight: fast read page failed.\n");
254 (void)mifare_ultralight_deinit(&gs_handle);
255
256 return 1;
257 }
258 for (i = 0; i < 32; i++)
259 {
260 mifare_ultralight_interface_debug_print("0x%02X ", page[i]);
261 }
263
264 mifare_ultralight_interface_debug_print("mifare_ultralight: compatibility write page 16.\n");
265 for (i = 0; i < 4; i++)
266 {
267 data[i] = rand() % 256;
268 }
269 res = mifare_ultralight_compatibility_write_page(&gs_handle, 8, data);
270 if (res != 0)
271 {
272 mifare_ultralight_interface_debug_print("mifare_ultralight: compatibility write page failed.\n");
273 (void)mifare_ultralight_deinit(&gs_handle);
274
275 return 1;
276 }
277 res = mifare_ultralight_read_page(&gs_handle, 8, data_check);
278 if (res != 0)
279 {
280 mifare_ultralight_interface_debug_print("mifare_ultralight: read page failed.\n");
281 (void)mifare_ultralight_deinit(&gs_handle);
282
283 return 1;
284 }
285 mifare_ultralight_interface_debug_print("mifare_ultralight: check page %s.\n", memcmp(data, data_check, 4) == 0 ? "ok" : "error");
286
287 mifare_ultralight_interface_debug_print("mifare_ultralight: write page 17.\n");
288 for (i = 0; i < 4; i++)
289 {
290 data[i] = rand() % 256;
291 }
292 res = mifare_ultralight_write_page(&gs_handle, 9, data);
293 if (res != 0)
294 {
295 mifare_ultralight_interface_debug_print("mifare_ultralight: write page failed.\n");
296 (void)mifare_ultralight_deinit(&gs_handle);
297
298 return 1;
299 }
300 res = mifare_ultralight_read_page(&gs_handle, 9, data_check);
301 if (res != 0)
302 {
303 mifare_ultralight_interface_debug_print("mifare_ultralight: read page failed.\n");
304 (void)mifare_ultralight_deinit(&gs_handle);
305
306 return 1;
307 }
308 mifare_ultralight_interface_debug_print("mifare_ultralight: check page %s.\n", memcmp(data, data_check, 4) == 0 ? "ok" : "error");
309
310 /* get version */
311 res = mifare_ultralight_get_version(&gs_handle, &version);
312 if (res != 0)
313 {
314 mifare_ultralight_interface_debug_print("mifare_ultralight: get version failed.\n");
315 (void)mifare_ultralight_deinit(&gs_handle);
316
317 return 1;
318 }
319 mifare_ultralight_interface_debug_print("mifare_ultralight: fixed_header is 0x%02X\n", version.fixed_header);
320 mifare_ultralight_interface_debug_print("mifare_ultralight: vendor_id is 0x%02X\n", version.vendor_id);
321 mifare_ultralight_interface_debug_print("mifare_ultralight: product_type is 0x%02X\n", version.product_type);
322 mifare_ultralight_interface_debug_print("mifare_ultralight: product_subtype is 0x%02X\n", version.product_subtype);
323 mifare_ultralight_interface_debug_print("mifare_ultralight: major_product_version is 0x%02X\n", version.major_product_version);
324 mifare_ultralight_interface_debug_print("mifare_ultralight: minor_product_version is 0x%02X\n", version.minor_product_version);
325 mifare_ultralight_interface_debug_print("mifare_ultralight: storage_size is 0x%02X\n", version.storage_size);
326 mifare_ultralight_interface_debug_print("mifare_ultralight: protocol_type is 0x%02X\n", version.protocol_type);
327
328 /* check the password */
329 pwd[0] = 0xFF;
330 pwd[1] = 0xFF;
331 pwd[2] = 0xFF;
332 pwd[3] = 0xFF;
333 pack[0] = 0x00;
334 pack[1] = 0x00;
335 res = mifare_ultralight_set_password(&gs_handle, pwd);
336 if (res != 0)
337 {
338 mifare_ultralight_interface_debug_print("mifare_ultralight: set password failed.\n");
339 (void)mifare_ultralight_deinit(&gs_handle);
340
341 return 1;
342 }
343 res = mifare_ultralight_set_pack(&gs_handle, pack);
344 if (res != 0)
345 {
346 mifare_ultralight_interface_debug_print("mifare_ultralight: set pack failed.\n");
347 (void)mifare_ultralight_deinit(&gs_handle);
348
349 return 1;
350 }
351 mifare_ultralight_interface_debug_print("mifare_ultralight: authenticate.\n");
352 res = mifare_ultralight_authenticate(&gs_handle, pwd, pack);
353 if (res != 0)
354 {
355 mifare_ultralight_interface_debug_print("mifare_ultralight: authenticate failed.\n");
356 (void)mifare_ultralight_deinit(&gs_handle);
357
358 return 1;
359 }
360
361 /* set lock */
362 lock[0] = 0x00;
363 lock[1] = 0x00;
364 lock[2] = 0x00;
365 lock[3] = 0x00;
366 lock[4] = 0x00;
367
368 /* set the lock */
369 res = mifare_ultralight_set_lock(&gs_handle, lock);
370 if (res != 0)
371 {
372 mifare_ultralight_interface_debug_print("mifare_ultralight: set lock failed.\n");
373 (void)mifare_ultralight_deinit(&gs_handle);
374
375 return 1;
376 }
377 mifare_ultralight_interface_debug_print("mifare_ultralight: set lock 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n",
378 lock[0], lock[1], lock[2], lock[3], lock[4]);
379 res = mifare_ultralight_get_lock(&gs_handle, lock_check);
380 if (res != 0)
381 {
382 mifare_ultralight_interface_debug_print("mifare_ultralight: get lock failed.\n");
383 (void)mifare_ultralight_deinit(&gs_handle);
384
385 return 1;
386 }
387 mifare_ultralight_interface_debug_print("mifare_ultralight: set lock 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n",
388 lock_check[0], lock_check[1], lock_check[2], lock_check[3], lock_check[4]);
389
390 /* set normal mode */
392 if (res != 0)
393 {
394 mifare_ultralight_interface_debug_print("mifare_ultralight: set modulation mode failed.\n");
395 (void)mifare_ultralight_deinit(&gs_handle);
396
397 return 1;
398 }
399 mifare_ultralight_interface_debug_print("mifare_ultralight: set normal mode.\n");
400 res = mifare_ultralight_get_modulation_mode(&gs_handle, &mode);
401 if (res != 0)
402 {
403 mifare_ultralight_interface_debug_print("mifare_ultralight: get modulation mode failed.\n");
404 (void)mifare_ultralight_deinit(&gs_handle);
405
406 return 1;
407 }
408 mifare_ultralight_interface_debug_print("mifare_ultralight: check modulation mode %s.\n", mode == MIFARE_ULTRALIGHT_MODULATION_MODE_NORMAL ? "ok" : "error");
409
410 /* set strong mode */
412 if (res != 0)
413 {
414 mifare_ultralight_interface_debug_print("mifare_ultralight: set modulation mode failed.\n");
415 (void)mifare_ultralight_deinit(&gs_handle);
416
417 return 1;
418 }
419 mifare_ultralight_interface_debug_print("mifare_ultralight: set strong mode.\n");
420 res = mifare_ultralight_get_modulation_mode(&gs_handle, &mode);
421 if (res != 0)
422 {
423 mifare_ultralight_interface_debug_print("mifare_ultralight: get modulation mode failed.\n");
424 (void)mifare_ultralight_deinit(&gs_handle);
425
426 return 1;
427 }
428 mifare_ultralight_interface_debug_print("mifare_ultralight: check modulation mode %s.\n", mode == MIFARE_ULTRALIGHT_MODULATION_MODE_STRONG ? "ok" : "error");
429
430 /* set protect start page */
431 res = mifare_ultralight_set_protect_start_page(&gs_handle, 0xFF);
432 if (res != 0)
433 {
434 mifare_ultralight_interface_debug_print("mifare_ultralight: set protect start page failed.\n");
435 (void)mifare_ultralight_deinit(&gs_handle);
436
437 return 1;
438 }
439 mifare_ultralight_interface_debug_print("mifare_ultralight: set protect start page 0xFF.\n");
440 res = mifare_ultralight_get_protect_start_page(&gs_handle, &p);
441 if (res != 0)
442 {
443 mifare_ultralight_interface_debug_print("mifare_ultralight: get protect start page failed.\n");
444 (void)mifare_ultralight_deinit(&gs_handle);
445
446 return 1;
447 }
448 mifare_ultralight_interface_debug_print("mifare_ultralight: check protect start page %s.\n", p == 0xFF ? "ok" : "error");
449
450 /* read access protection */
452 if (res != 0)
453 {
454 mifare_ultralight_interface_debug_print("mifare_ultralight: set access failed.\n");
455 (void)mifare_ultralight_deinit(&gs_handle);
456
457 return 1;
458 }
459 mifare_ultralight_interface_debug_print("mifare_ultralight: read access protection disable.\n");
461 if (res != 0)
462 {
463 mifare_ultralight_interface_debug_print("mifare_ultralight: get access failed.\n");
464 (void)mifare_ultralight_deinit(&gs_handle);
465
466 return 1;
467 }
468 mifare_ultralight_interface_debug_print("mifare_ultralight: check read access protection %s.\n", enable == MIFARE_ULTRALIGHT_BOOL_FALSE ? "ok" : "error");
469
470 /* user configuration protection */
472 if (res != 0)
473 {
474 mifare_ultralight_interface_debug_print("mifare_ultralight: set access failed.\n");
475 (void)mifare_ultralight_deinit(&gs_handle);
476
477 return 1;
478 }
479 mifare_ultralight_interface_debug_print("mifare_ultralight: user configuration protection disable.\n");
481 if (res != 0)
482 {
483 mifare_ultralight_interface_debug_print("mifare_ultralight: get access failed.\n");
484 (void)mifare_ultralight_deinit(&gs_handle);
485
486 return 1;
487 }
488 mifare_ultralight_interface_debug_print("mifare_ultralight: check user configuration protection %s.\n", enable == MIFARE_ULTRALIGHT_BOOL_FALSE ? "ok" : "error");
489
490 /* set authenticate limitation */
492 if (res != 0)
493 {
494 mifare_ultralight_interface_debug_print("mifare_ultralight: set authenticate limitation failed.\n");
495 (void)mifare_ultralight_deinit(&gs_handle);
496
497 return 1;
498 }
499 mifare_ultralight_interface_debug_print("mifare_ultralight: set authenticate limitation 7.\n");
500 res = mifare_ultralight_get_authenticate_limitation(&gs_handle, &limit_check);
501 if (res != 0)
502 {
503 mifare_ultralight_interface_debug_print("mifare_ultralight: get authenticate limitation failed.\n");
504 (void)mifare_ultralight_deinit(&gs_handle);
505
506 return 1;
507 }
508 mifare_ultralight_interface_debug_print("mifare_ultralight: check authenticate limitation %s.\n", limit_check == 7 ? "ok" : "error");
509
510 /* set virtual card type identifier */
512 if (res != 0)
513 {
514 mifare_ultralight_interface_debug_print("mifare_ultralight: set virtual card type identifier failed.\n");
515 (void)mifare_ultralight_deinit(&gs_handle);
516
517 return 1;
518 }
519 mifare_ultralight_interface_debug_print("mifare_ultralight: set virtual card type identifier 5.\n");
520 res = mifare_ultralight_get_virtual_card_type_identifier(&gs_handle, &identifier);
521 if (res != 0)
522 {
523 mifare_ultralight_interface_debug_print("mifare_ultralight: get virtual card type identifier failed.\n");
524 (void)mifare_ultralight_deinit(&gs_handle);
525
526 return 1;
527 }
528 mifare_ultralight_interface_debug_print("mifare_ultralight: check virtual card type identifier %s.\n", identifier == 5 ? "ok" : "error");
529
530 data[0] = 0x00;
531 data[1] = 0x00;
532 data[2] = 0x00;
533 data[3] = 0x00;
534 res = mifare_ultralight_write_otp(&gs_handle, data);
535 if (res != 0)
536 {
537 mifare_ultralight_interface_debug_print("mifare_ultralight: write otp failed.\n");
538 (void)mifare_ultralight_deinit(&gs_handle);
539
540 return 1;
541 }
542 mifare_ultralight_interface_debug_print("mifare_ultralight: write otp 0x%02X 0x%02X 0x%02X 0x%02X.\n", data[0], data[1], data[2], data[3]);
543 res = mifare_ultralight_read_otp(&gs_handle, data_check);
544 if (res != 0)
545 {
546 mifare_ultralight_interface_debug_print("mifare_ultralight: read otp failed.\n");
547 (void)mifare_ultralight_deinit(&gs_handle);
548
549 return 1;
550 }
551 mifare_ultralight_interface_debug_print("mifare_ultralight: check opt %s.\n", (memcmp(data, data_check, 4) == 0) ? "ok" : "error");
552
553 /* increment counter */
554 res = mifare_ultralight_increment_counter(&gs_handle, 0x00, 1);
555 if (res != 0)
556 {
557 mifare_ultralight_interface_debug_print("mifare_ultralight: increment counter failed.\n");
558 (void)mifare_ultralight_deinit(&gs_handle);
559
560 return 1;
561 }
562 mifare_ultralight_interface_debug_print("mifare_ultralight: increment counter 1.\n");
563
564 /* read counter */
565 res = mifare_ultralight_read_counter(&gs_handle, 0x00, &cnt);
566 if (res != 0)
567 {
568 mifare_ultralight_interface_debug_print("mifare_ultralight: read counter failed.\n");
569 (void)mifare_ultralight_deinit(&gs_handle);
570
571 return 1;
572 }
573 mifare_ultralight_interface_debug_print("mifare_ultralight: read counter %d.\n", cnt);
574
575 /* check_tearing_event */
576 res = mifare_ultralight_check_tearing_event(&gs_handle, 0x00, &flag);
577 if (res != 0)
578 {
579 mifare_ultralight_interface_debug_print("mifare_ultralight: check tearing event failed.\n");
580 (void)mifare_ultralight_deinit(&gs_handle);
581
582 return 1;
583 }
584 mifare_ultralight_interface_debug_print("mifare_ultralight: check tearing event flag 0x%02X.\n", flag);
585
586 /* halt */
587 res = mifare_ultralight_halt(&gs_handle);
588 if (res != 0)
589 {
590 mifare_ultralight_interface_debug_print("mifare_ultralight: halt failed.\n");
591 (void)mifare_ultralight_deinit(&gs_handle);
592
593 return 1;
594 }
595
596 /* finish register */
597 mifare_ultralight_interface_debug_print("mifare_ultralight: finish card test.\n");
598 (void)mifare_ultralight_deinit(&gs_handle);
599
600 return 0;
601}
driver mifare_ultralight card test header file
uint8_t mifare_ultralight_set_pack(mifare_ultralight_handle_t *handle, uint8_t pack[2])
mifare_ultralight set the pack
uint8_t mifare_ultralight_get_lock(mifare_ultralight_handle_t *handle, uint8_t lock[5])
mifare_ultralight get the lock
struct mifare_ultralight_version_s mifare_ultralight_version_t
mifare ultralight version structure definition
uint8_t mifare_ultralight_get_virtual_card_type_identifier(mifare_ultralight_handle_t *handle, uint8_t *identifier)
mifare_ultralight get the virtual card type identifier
uint8_t mifare_ultralight_select_cl1(mifare_ultralight_handle_t *handle, uint8_t id[4])
mifare_ultralight select cl1
uint8_t mifare_ultralight_write_otp(mifare_ultralight_handle_t *handle, uint8_t data[4])
mifare_ultralight write otp page
uint8_t mifare_ultralight_halt(mifare_ultralight_handle_t *handle)
mifare_ultralight halt
struct mifare_ultralight_info_s mifare_ultralight_info_t
mifare ultralight information structure definition
uint8_t mifare_ultralight_get_serial_number(mifare_ultralight_handle_t *handle, uint8_t number[7])
mifare_ultralight get the serial number
uint8_t mifare_ultralight_set_access(mifare_ultralight_handle_t *handle, mifare_ultralight_access_t access, mifare_ultralight_bool_t enable)
mifare_ultralight enable or disable access
uint8_t mifare_ultralight_anticollision_cl1(mifare_ultralight_handle_t *handle, uint8_t id[4])
mifare_ultralight anti collision cl1
uint8_t mifare_ultralight_fast_read_page(mifare_ultralight_handle_t *handle, uint8_t start_page, uint8_t stop_page, uint8_t *data, uint16_t *len)
mifare_ultralight fast read page
mifare_ultralight_type_t
mifare ultralight type enumeration definition
uint8_t mifare_ultralight_set_modulation_mode(mifare_ultralight_handle_t *handle, mifare_ultralight_modulation_mode_t mode)
mifare_ultralight set the modulation mode
uint8_t mifare_ultralight_set_password(mifare_ultralight_handle_t *handle, uint8_t pwd[4])
mifare_ultralight set the password
uint8_t mifare_ultralight_init(mifare_ultralight_handle_t *handle)
initialize the chip
uint8_t mifare_ultralight_set_protect_start_page(mifare_ultralight_handle_t *handle, uint8_t page)
mifare_ultralight set the start page of protection
uint8_t mifare_ultralight_get_access(mifare_ultralight_handle_t *handle, mifare_ultralight_access_t access, mifare_ultralight_bool_t *enable)
mifare_ultralight get the access status
uint8_t mifare_ultralight_read_otp(mifare_ultralight_handle_t *handle, uint8_t data[4])
mifare_ultralight read otp page
uint8_t mifare_ultralight_read_signature(mifare_ultralight_handle_t *handle, uint8_t signature[32])
mifare_ultralight read the signature
mifare_ultralight_modulation_mode_t
mifare ultralight modulation mode enumeration definition
uint8_t mifare_ultralight_get_protect_start_page(mifare_ultralight_handle_t *handle, uint8_t *page)
mifare_ultralight get the start page of protection
uint8_t mifare_ultralight_authenticate(mifare_ultralight_handle_t *handle, uint8_t pwd[4], uint8_t pack[2])
mifare_ultralight authenticate
uint8_t mifare_ultralight_set_authenticate_limitation(mifare_ultralight_handle_t *handle, uint8_t limit)
mifare_ultralight set the authenticate limitation
uint8_t mifare_ultralight_deinit(mifare_ultralight_handle_t *handle)
close the chip
uint8_t mifare_ultralight_increment_counter(mifare_ultralight_handle_t *handle, uint8_t addr, uint32_t cnt)
mifare_ultralight increment the counter
mifare_ultralight_bool_t
mifare ultralight bool enumeration definition
uint8_t mifare_ultralight_wake_up(mifare_ultralight_handle_t *handle, mifare_ultralight_type_t *type)
mifare_ultralight wake up
uint8_t mifare_ultralight_set_virtual_card_type_identifier(mifare_ultralight_handle_t *handle, uint8_t identifier)
mifare_ultralight set the virtual card type identifier
uint8_t mifare_ultralight_get_modulation_mode(mifare_ultralight_handle_t *handle, mifare_ultralight_modulation_mode_t *mode)
mifare_ultralight get the modulation mode
uint8_t mifare_ultralight_set_lock(mifare_ultralight_handle_t *handle, uint8_t lock[5])
mifare_ultralight set the lock
uint8_t mifare_ultralight_info(mifare_ultralight_info_t *info)
get chip information
uint8_t mifare_ultralight_read_page(mifare_ultralight_handle_t *handle, uint8_t page, uint8_t data[4])
mifare_ultralight read page
uint8_t mifare_ultralight_check_tearing_event(mifare_ultralight_handle_t *handle, uint8_t addr, uint8_t *flag)
mifare_ultralight check the tearing event
uint8_t mifare_ultralight_get_authenticate_limitation(mifare_ultralight_handle_t *handle, uint8_t *limit)
mifare_ultralight get the authenticate limitation
uint8_t mifare_ultralight_anticollision_cl2(mifare_ultralight_handle_t *handle, uint8_t id[4])
mifare_ultralight anti collision cl2
struct mifare_ultralight_handle_s mifare_ultralight_handle_t
mifare ultralight handle structure definition
uint8_t mifare_ultralight_read_counter(mifare_ultralight_handle_t *handle, uint8_t addr, uint32_t *cnt)
mifare_ultralight read the counter
uint8_t mifare_ultralight_read_four_pages(mifare_ultralight_handle_t *handle, uint8_t start_page, uint8_t data[16])
mifare_ultralight read four pages
uint8_t mifare_ultralight_compatibility_write_page(mifare_ultralight_handle_t *handle, uint8_t page, uint8_t data[4])
mifare_ultralight compatibility write page
uint8_t mifare_ultralight_write_page(mifare_ultralight_handle_t *handle, uint8_t page, uint8_t data[4])
mifare_ultralight write page
uint8_t mifare_ultralight_get_version(mifare_ultralight_handle_t *handle, mifare_ultralight_version_t *version)
mifare_ultralight get the version
@ MIFARE_ULTRALIGHT_TYPE_ULTRALIGHT
@ MIFARE_ULTRALIGHT_ACCESS_READ_PROTECTION
@ MIFARE_ULTRALIGHT_ACCESS_USER_CONF_PROTECTION
@ MIFARE_ULTRALIGHT_MODULATION_MODE_NORMAL
@ MIFARE_ULTRALIGHT_MODULATION_MODE_STRONG
@ MIFARE_ULTRALIGHT_BOOL_FALSE
void mifare_ultralight_interface_debug_print(const char *const fmt,...)
interface print format data
void mifare_ultralight_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t mifare_ultralight_interface_contactless_init(void)
interface contactless init
uint8_t mifare_ultralight_interface_contactless_deinit(void)
interface contactless deinit
uint8_t mifare_ultralight_interface_contactless_transceiver(uint8_t *in_buf, uint8_t in_len, uint8_t *out_buf, uint8_t *out_len)
interface contactless transceiver
uint8_t mifare_ultralight_card_test(void)
card test