LibDriver MIFARE_ULTRALIGHT
Loading...
Searching...
No Matches
driver_mifare_ultralight_basic.c
Go to the documentation of this file.
1
36
38
39static mifare_ultralight_handle_t gs_handle;
40
46static void s_debug_print(const char *const fmt, ...)
47{
48 (void)fmt;
49
50 return;
51}
52
87
96{
97 uint8_t res;
98
99 /* deinit */
100 res = mifare_ultralight_deinit(&gs_handle);
101 if (res != 0)
102 {
103 return 1;
104 }
105
106 return 0;
107}
108
117{
118 uint8_t res;
119
120 /* halt */
121 res = mifare_ultralight_halt(&gs_handle);
122 if (res != 0)
123 {
124 return 1;
125 }
126
127 return 0;
128}
129
138{
139 uint8_t res;
141
142 /* wake up */
143 res = mifare_ultralight_wake_up(&gs_handle, &type);
144 if (res != 0)
145 {
146 return 1;
147 }
148
149 return 0;
150}
151
162uint8_t mifare_ultralight_basic_search(mifare_ultralight_storage_t *type, uint8_t id[8], int32_t timeout)
163{
164 uint8_t res;
166
167 /* loop */
168 while (1)
169 {
170 /* request */
171 res = mifare_ultralight_request(&gs_handle, &t);
172 if (res == 0)
173 {
174 /* anti collision_cl1 */
175 res = mifare_ultralight_anticollision_cl1(&gs_handle, id);
176 if (res == 0)
177 {
178 /* cl1 */
179 res = mifare_ultralight_select_cl1(&gs_handle, id);
180 if (res == 0)
181 {
182 /* anti collision_cl2 */
183 res = mifare_ultralight_anticollision_cl2(&gs_handle, id + 4);
184 if (res == 0)
185 {
186 /* cl2 */
187 res = mifare_ultralight_select_cl2(&gs_handle, id + 4);
188 if (res == 0)
189 {
190 uint8_t data[4];
191
192 /* read page 0 */
193 res = mifare_ultralight_read_page(&gs_handle, 0x00, data);
194 if (res == 0)
195 {
197
198 /* get the chip version */
199 res = mifare_ultralight_get_version(&gs_handle, &version);
200 if (res == 0)
201 {
202 /* get the type */
203 res = mifare_ultralight_get_storage(&gs_handle, type);
204 if (res == 0)
205 {
206 return 0;
207 }
208 }
209 }
210 }
211 }
212 }
213 }
214 }
215
216 /* delay */
218
219 /* check the timeout */
220 if (timeout < 0)
221 {
222 /* never timeout */
223 continue;
224 }
225 else
226 {
227 /* timeout */
228 if (timeout == 0)
229 {
230 return 1;
231 }
232 else
233 {
234 /* timout-- */
235 timeout--;
236 }
237 }
238 }
239}
240
250uint8_t mifare_ultralight_basic_read(uint8_t page, uint8_t data[4])
251{
252 uint8_t res;
253
254 /* read */
255 res = mifare_ultralight_read_page(&gs_handle, page, data);
256 if (res != 0)
257 {
258 return 1;
259 }
260
261 return 0;
262}
263
273uint8_t mifare_ultralight_basic_read_four_pages(uint8_t start_page, uint8_t data[16])
274{
275 uint8_t res;
276
277 /* read */
278 res = mifare_ultralight_read_four_pages(&gs_handle, start_page, data);
279 if (res != 0)
280 {
281 return 1;
282 }
283
284 return 0;
285}
286
299uint8_t mifare_ultralight_basic_read_pages(uint8_t start_page, uint8_t stop_page, uint8_t *data, uint16_t *len)
300{
301 uint8_t res;
302
303 /* fast read */
304 res = mifare_ultralight_fast_read_page(&gs_handle, start_page, stop_page, data, len);
305 if (res != 0)
306 {
307 return 1;
308 }
309
310 return 0;
311}
312
322uint8_t mifare_ultralight_basic_write(uint8_t page, uint8_t data[4])
323{
324 uint8_t res;
325
326 /* write */
327 res = mifare_ultralight_write_page(&gs_handle, page, data);
328 if (res != 0)
329 {
330 return 1;
331 }
332
333 return 0;
334}
335
344uint8_t mifare_ultralight_basic_write_otp(uint8_t data[4])
345{
346 uint8_t res;
347
348 /* write otp */
349 res = mifare_ultralight_write_otp(&gs_handle, data);
350 if (res != 0)
351 {
352 return 1;
353 }
354
355 return 0;
356}
357
366uint8_t mifare_ultralight_basic_read_otp(uint8_t data[4])
367{
368 uint8_t res;
369
370 /* read otp */
371 res = mifare_ultralight_read_otp(&gs_handle, data);
372 if (res != 0)
373 {
374 return 1;
375 }
376
377 return 0;
378}
379
389{
390 uint8_t res;
391
392 /* get the version */
393 res = mifare_ultralight_get_version(&gs_handle, version);
394 if (res != 0)
395 {
396 return 1;
397 }
398
399 return 0;
400}
401
411uint8_t mifare_ultralight_basic_read_counter(uint8_t addr, uint32_t *cnt)
412{
413 uint8_t res;
414
415 /* read the counter */
416 res = mifare_ultralight_read_counter(&gs_handle, addr, cnt);
417 if (res != 0)
418 {
419 return 1;
420 }
421
422 return 0;
423}
424
434uint8_t mifare_ultralight_basic_increment_counter(uint8_t addr, uint32_t cnt)
435{
436 uint8_t res;
437
438 /* increment the counter */
439 res = mifare_ultralight_increment_counter(&gs_handle, addr, cnt);
440 if (res != 0)
441 {
442 return 1;
443 }
444
445 return 0;
446}
447
457uint8_t mifare_ultralight_basic_check_tearing_event(uint8_t addr, uint8_t *flag)
458{
459 uint8_t res;
460
461 /* check the tearing event */
462 res = mifare_ultralight_check_tearing_event(&gs_handle, addr, flag);
463 if (res != 0)
464 {
465 return 1;
466 }
467
468 return 0;
469}
470
479uint8_t mifare_ultralight_basic_read_signature(uint8_t signature[32])
480{
481 uint8_t res;
482
483 /* read the signature */
484 res = mifare_ultralight_read_signature(&gs_handle, signature);
485 if (res != 0)
486 {
487 return 1;
488 }
489
490 return 0;
491}
492
502{
503 uint8_t res;
504
505 /* get serial number */
506 res = mifare_ultralight_get_serial_number(&gs_handle, number);
507 if (res != 0)
508 {
509 return 1;
510 }
511
512 return 0;
513}
514
524uint8_t mifare_ultralight_basic_set_password_pack(uint8_t pwd[4], uint8_t pack[2])
525{
526 uint8_t res;
527
528 /* set password */
529 res = mifare_ultralight_set_password(&gs_handle, pwd);
530 if (res != 0)
531 {
532 return 1;
533 }
534
535 /* set pack */
536 res = mifare_ultralight_set_pack(&gs_handle, pack);
537 if (res != 0)
538 {
539 return 1;
540 }
541
542 return 0;
543}
544
554uint8_t mifare_ultralight_basic_authenticate(uint8_t pwd[4], uint8_t pack[2])
555{
556 uint8_t res;
557
558 /* authenticate */
559 res = mifare_ultralight_authenticate(&gs_handle, pwd, pack);
560 if (res != 0)
561 {
562 return 1;
563 }
564
565 return 0;
566}
567
576uint8_t mifare_ultralight_basic_set_lock(uint8_t lock[5])
577{
578 uint8_t res;
579
580 /* set lock */
581 res = mifare_ultralight_set_lock(&gs_handle, lock);
582 if (res != 0)
583 {
584 return 1;
585 }
586
587 return 0;
588}
589
599{
600 uint8_t res;
601
602 /* set modulation mode */
603 res = mifare_ultralight_set_modulation_mode(&gs_handle, mode);
604 if (res != 0)
605 {
606 return 1;
607 }
608
609 return 0;
610}
611
621{
622 uint8_t res;
623
624 /* set protect start page */
625 res = mifare_ultralight_set_protect_start_page(&gs_handle, page);
626 if (res != 0)
627 {
628 return 1;
629 }
630
631 return 0;
632}
633
643{
644 uint8_t res;
645
646 /* set authenticate limitation */
647 res = mifare_ultralight_set_authenticate_limitation(&gs_handle, limit);
648 if (res != 0)
649 {
650 return 1;
651 }
652
653 return 0;
654}
655
666{
667 uint8_t res;
668
669 /* set access */
670 res = mifare_ultralight_set_access(&gs_handle, access, enable);
671 if (res != 0)
672 {
673 return 1;
674 }
675
676 return 0;
677}
driver mifare_ultralight basic header file
uint8_t mifare_ultralight_set_pack(mifare_ultralight_handle_t *handle, uint8_t pack[2])
mifare_ultralight set the pack
struct mifare_ultralight_version_s mifare_ultralight_version_t
mifare ultralight version structure definition
mifare_ultralight_storage_t
mifare ultralight storage enumeration definition
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
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
mifare_ultralight_access_t
mifare_ultralight access enumeration definition
uint8_t mifare_ultralight_get_storage(mifare_ultralight_handle_t *handle, mifare_ultralight_storage_t *storage)
get the storage
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_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_request(mifare_ultralight_handle_t *handle, mifare_ultralight_type_t *type)
mifare_ultralight request
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_lock(mifare_ultralight_handle_t *handle, uint8_t lock[5])
mifare_ultralight set the lock
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_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_select_cl2(mifare_ultralight_handle_t *handle, uint8_t id[4])
mifare_ultralight select cl2
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_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
uint8_t mifare_ultralight_basic_check_tearing_event(uint8_t addr, uint8_t *flag)
basic example check the tearing event
uint8_t mifare_ultralight_basic_deinit(void)
basic example deinit
uint8_t mifare_ultralight_basic_set_access(mifare_ultralight_access_t access, mifare_ultralight_bool_t enable)
basic example set access
uint8_t mifare_ultralight_basic_set_authenticate_limitation(uint8_t limit)
basic example set the authenticate limitation
uint8_t mifare_ultralight_basic_wake_up(void)
basic example wake up
#define MIFARE_MIFARE_ULTRALIGHT_DEFAULT_SEARCH_DELAY_MS
mifare_ultralight basic example default definition
uint8_t mifare_ultralight_basic_set_protect_start_page(uint8_t page)
basic example set protect start page
uint8_t mifare_ultralight_basic_get_serial_number(uint8_t number[7])
basic example get serial number
uint8_t mifare_ultralight_basic_init(void)
basic example init
uint8_t mifare_ultralight_basic_get_version(mifare_ultralight_version_t *version)
basic example get version
uint8_t mifare_ultralight_basic_set_modulation_mode(mifare_ultralight_modulation_mode_t mode)
basic example set modulation mode
uint8_t mifare_ultralight_basic_write_otp(uint8_t data[4])
basic example write otp
uint8_t mifare_ultralight_basic_read_counter(uint8_t addr, uint32_t *cnt)
basic example read counter
uint8_t mifare_ultralight_basic_authenticate(uint8_t pwd[4], uint8_t pack[2])
basic example authenticate
uint8_t mifare_ultralight_basic_read(uint8_t page, uint8_t data[4])
basic example read
uint8_t mifare_ultralight_basic_search(mifare_ultralight_storage_t *type, uint8_t id[8], int32_t timeout)
basic example search
uint8_t mifare_ultralight_basic_halt(void)
basic example halt
uint8_t mifare_ultralight_basic_read_signature(uint8_t signature[32])
basic example read signature
uint8_t mifare_ultralight_basic_increment_counter(uint8_t addr, uint32_t cnt)
basic example increment counter
uint8_t mifare_ultralight_basic_read_otp(uint8_t data[4])
basic example read otp
uint8_t mifare_ultralight_basic_set_lock(uint8_t lock[5])
basic example set lock
uint8_t mifare_ultralight_basic_read_pages(uint8_t start_page, uint8_t stop_page, uint8_t *data, uint16_t *len)
basic example read pages
uint8_t mifare_ultralight_basic_write(uint8_t page, uint8_t data[4])
basic example write
uint8_t mifare_ultralight_basic_read_four_pages(uint8_t start_page, uint8_t data[16])
basic example read four pages
uint8_t mifare_ultralight_basic_set_password_pack(uint8_t pwd[4], uint8_t pack[2])
basic example set password and pack
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