44 #endif // HAVE_CONFIG_H
53 #include "libnfc/chips/pn53x.h"
55 #define MAX_DEVICE_COUNT 16
58 main(
int argc,
const char *argv[])
62 const char *acLibnfcVersion;
65 uint8_t abtRx[PN53x_EXTENDED_FRAME__DATA_MAX_LEN];
66 size_t szRx =
sizeof(abtRx);
67 const uint8_t pncmd_diagnose_communication_line_test[] = { Diagnose, 0x00, 0x06,
'l',
'i',
'b',
'n',
'f',
'c' };
68 const uint8_t pncmd_diagnose_rom_test[] = { Diagnose, 0x01 };
69 const uint8_t pncmd_diagnose_ram_test[] = { Diagnose, 0x02 };
72 printf(
"Usage: %s", argv[0]);
78 if (context == NULL) {
79 ERR(
"Unable to init libnfc (malloc)");
85 printf(
"%s uses libnfc %s\n", argv[0], acLibnfcVersion);
91 printf(
"No NFC device found.\n");
94 for (i = 0; i < szFound; i++) {
96 pnd =
nfc_open(context, connstrings[i]);
99 ERR(
"%s",
"Unable to open NFC device.");
106 res = pn53x_transceive(pnd, pncmd_diagnose_communication_line_test,
sizeof(pncmd_diagnose_communication_line_test), abtRx, szRx, 0);
110 result = (memcmp(pncmd_diagnose_communication_line_test + 1, abtRx,
sizeof(pncmd_diagnose_communication_line_test) - 1) == 0) ||
111 (memcmp(pncmd_diagnose_communication_line_test + 2, abtRx,
sizeof(pncmd_diagnose_communication_line_test) - 2) == 0);
112 printf(
" Communication line test: %s\n", result ?
"OK" :
"Failed");
114 nfc_perror(pnd,
"pn53x_transceive: cannot diagnose communication line");
117 res = pn53x_transceive(pnd, pncmd_diagnose_rom_test,
sizeof(pncmd_diagnose_rom_test), abtRx, szRx, 0);
120 result = ((szRx == 1) && (abtRx[0] == 0x00));
121 printf(
" ROM test: %s\n", result ?
"OK" :
"Failed");
123 nfc_perror(pnd,
"pn53x_transceive: cannot diagnose ROM");
126 res = pn53x_transceive(pnd, pncmd_diagnose_ram_test,
sizeof(pncmd_diagnose_ram_test), abtRx, szRx, 0);
129 result = ((szRx == 1) && (abtRx[0] == 0x00));
130 printf(
" RAM test: %s\n", result ?
"OK" :
"Failed");
132 nfc_perror(pnd,
"pn53x_transceive: cannot diagnose RAM");