nfc_initiator_init returns now error code and nfc_initiator_list_passive_targets returns now the number of targets found or error code.

This commit is contained in:
Audrey Diacre 2011-12-15 11:46:14 +00:00
parent a615d969fd
commit 98355d36a7
11 changed files with 91 additions and 94 deletions

View file

@ -81,7 +81,7 @@ main (int argc, const char *argv[])
signal (SIGINT, stop_dep_communication); signal (SIGINT, stop_dep_communication);
if (!nfc_initiator_init (pnd)) { if (nfc_initiator_init (pnd) < 0) {
nfc_perror(pnd, "nfc_initiator_init"); nfc_perror(pnd, "nfc_initiator_init");
return EXIT_FAILURE; return EXIT_FAILURE;
} }

View file

@ -71,9 +71,9 @@ extern "C" {
NFC_EXPORT bool nfc_idle (nfc_device *pnd); NFC_EXPORT bool nfc_idle (nfc_device *pnd);
/* NFC initiator: act as "reader" */ /* NFC initiator: act as "reader" */
NFC_EXPORT bool nfc_initiator_init (nfc_device *pnd); NFC_EXPORT int nfc_initiator_init (nfc_device *pnd);
NFC_EXPORT bool nfc_initiator_select_passive_target (nfc_device *pnd, const nfc_modulation nm, const uint8_t *pbtInitData, const size_t szInitData, nfc_target *pnt); NFC_EXPORT bool nfc_initiator_select_passive_target (nfc_device *pnd, const nfc_modulation nm, const uint8_t *pbtInitData, const size_t szInitData, nfc_target *pnt);
NFC_EXPORT bool nfc_initiator_list_passive_targets (nfc_device *pnd, const nfc_modulation nm, nfc_target ant[], const size_t szTargets, size_t *pszTargetFound); NFC_EXPORT int nfc_initiator_list_passive_targets (nfc_device *pnd, const nfc_modulation nm, nfc_target ant[], const size_t szTargets);
NFC_EXPORT bool nfc_initiator_poll_target (nfc_device *pnd, const nfc_modulation *pnmTargetTypes, const size_t szTargetTypes, const uint8_t uiPollNr, const uint8_t uiPeriod, nfc_target *pnt); NFC_EXPORT bool nfc_initiator_poll_target (nfc_device *pnd, const nfc_modulation *pnmTargetTypes, const size_t szTargetTypes, const uint8_t uiPollNr, const uint8_t uiPeriod, nfc_target *pnt);
NFC_EXPORT bool nfc_initiator_select_dep_target (nfc_device *pnd, const nfc_dep_mode ndm, const nfc_baud_rate nbr, const nfc_dep_info *pndiInitiator, nfc_target *pnt, const int timeout); NFC_EXPORT bool nfc_initiator_select_dep_target (nfc_device *pnd, const nfc_dep_mode ndm, const nfc_baud_rate nbr, const nfc_dep_info *pndiInitiator, nfc_target *pnt, const int timeout);
NFC_EXPORT bool nfc_initiator_deselect_target (nfc_device *pnd); NFC_EXPORT bool nfc_initiator_deselect_target (nfc_device *pnd);

View file

@ -878,17 +878,17 @@ pn53x_check_communication (nfc_device *pnd)
return ((sizeof(abtExpectedRx) == szRx) && (0 == memcmp (abtRx, abtExpectedRx, sizeof(abtExpectedRx)))); return ((sizeof(abtExpectedRx) == szRx) && (0 == memcmp (abtRx, abtExpectedRx, sizeof(abtExpectedRx))));
} }
bool int
pn53x_initiator_init (nfc_device *pnd) pn53x_initiator_init (nfc_device *pnd)
{ {
pn53x_reset_settings(pnd); pn53x_reset_settings(pnd);
// Configure the PN53X to be an Initiator or Reader/Writer // Configure the PN53X to be an Initiator or Reader/Writer
if (!pn53x_write_register (pnd, PN53X_REG_CIU_Control, SYMBOL_INITIATOR, 0x10)) if (!pn53x_write_register (pnd, PN53X_REG_CIU_Control, SYMBOL_INITIATOR, 0x10))
return false; return NFC_DEVICE_ERROR;
CHIP_DATA (pnd)->operating_mode = INITIATOR; CHIP_DATA (pnd)->operating_mode = INITIATOR;
return true; return NFC_SUCCESS;
} }
bool bool

View file

@ -283,7 +283,7 @@ bool pn53x_check_communication (nfc_device *pnd);
bool pn53x_idle (nfc_device *pnd); bool pn53x_idle (nfc_device *pnd);
// NFC device as Initiator functions // NFC device as Initiator functions
bool pn53x_initiator_init (nfc_device *pnd); int pn53x_initiator_init (nfc_device *pnd);
bool pn53x_initiator_select_passive_target (nfc_device *pnd, bool pn53x_initiator_select_passive_target (nfc_device *pnd,
const nfc_modulation nm, const nfc_modulation nm,
const uint8_t *pbtInitData, const size_t szInitData, const uint8_t *pbtInitData, const size_t szInitData,

View file

@ -131,7 +131,7 @@ struct nfc_driver_t {
void (*disconnect) (nfc_device *pnd); void (*disconnect) (nfc_device *pnd);
const char *(*strerror) (const nfc_device *pnd); const char *(*strerror) (const nfc_device *pnd);
bool (*initiator_init) (nfc_device *pnd); int (*initiator_init) (nfc_device *pnd);
bool (*initiator_select_passive_target) (nfc_device *pnd, const nfc_modulation nm, const uint8_t * pbtInitData, const size_t szInitData, nfc_target * pnt); bool (*initiator_select_passive_target) (nfc_device *pnd, const nfc_modulation nm, const uint8_t * pbtInitData, const size_t szInitData, nfc_target * pnt);
bool (*initiator_poll_target) (nfc_device *pnd, const nfc_modulation * pnmModulations, const size_t szModulations, const uint8_t uiPollNr, const uint8_t btPeriod, nfc_target * pnt); bool (*initiator_poll_target) (nfc_device *pnd, const nfc_modulation * pnmModulations, const size_t szModulations, const uint8_t uiPollNr, const uint8_t btPeriod, nfc_target * pnt);
bool (*initiator_select_dep_target) (nfc_device *pnd, const nfc_dep_mode ndm, const nfc_baud_rate nbr, const nfc_dep_info * pndiInitiator, nfc_target * pnt, const int timeout); bool (*initiator_select_dep_target) (nfc_device *pnd, const nfc_dep_mode ndm, const nfc_baud_rate nbr, const nfc_dep_info * pndiInitiator, nfc_target * pnt, const int timeout);

View file

@ -241,7 +241,7 @@ nfc_device_set_property_bool (nfc_device *pnd, const nfc_property property, cons
/** /**
* @brief Initialize NFC device as initiator (reader) * @brief Initialize NFC device as initiator (reader)
* @return Returns \c true if action was successfully performed; otherwise returns \c false. * @return Returns 0 on success, otherwise returns libnfc's error code (negative value)
* @param pnd \a nfc_device struct pointer that represent currently used device * @param pnd \a nfc_device struct pointer that represent currently used device
* *
* The NFC device is configured to function as RFID reader. * The NFC device is configured to function as RFID reader.
@ -259,44 +259,45 @@ nfc_device_set_property_bool (nfc_device *pnd, const nfc_property property, cons
* - Let the device try forever to find a target (NP_INFINITE_SELECT = true) * - Let the device try forever to find a target (NP_INFINITE_SELECT = true)
* - RF field is shortly dropped (if it was enabled) then activated again * - RF field is shortly dropped (if it was enabled) then activated again
*/ */
bool int
nfc_initiator_init (nfc_device *pnd) nfc_initiator_init (nfc_device *pnd)
{ {
int res = 0;
// Drop the field for a while // Drop the field for a while
if (nfc_device_set_property_bool (pnd, NP_ACTIVATE_FIELD, false) < 0) if ((res = nfc_device_set_property_bool (pnd, NP_ACTIVATE_FIELD, false)) < 0)
return false; return res;
// Enable field so more power consuming cards can power themselves up // Enable field so more power consuming cards can power themselves up
if (nfc_device_set_property_bool (pnd, NP_ACTIVATE_FIELD, true) < 0) if ((res = nfc_device_set_property_bool (pnd, NP_ACTIVATE_FIELD, true)) < 0)
return false; return res;
// Let the device try forever to find a target/tag // Let the device try forever to find a target/tag
if (nfc_device_set_property_bool (pnd, NP_INFINITE_SELECT, true) < 0) if ((res = nfc_device_set_property_bool (pnd, NP_INFINITE_SELECT, true)) < 0)
return false; return res;
// Activate auto ISO14443-4 switching by default // Activate auto ISO14443-4 switching by default
if (nfc_device_set_property_bool (pnd, NP_AUTO_ISO14443_4, true) < 0) if ((res = nfc_device_set_property_bool (pnd, NP_AUTO_ISO14443_4, true)) < 0)
return false; return res;
// Force 14443-A mode // Force 14443-A mode
if (nfc_device_set_property_bool (pnd, NP_FORCE_ISO14443_A, true) < 0) if ((res = nfc_device_set_property_bool (pnd, NP_FORCE_ISO14443_A, true)) < 0)
return false; return res;
// Force speed at 106kbps // Force speed at 106kbps
if (nfc_device_set_property_bool (pnd, NP_FORCE_SPEED_106, true) < 0) if ((res = nfc_device_set_property_bool (pnd, NP_FORCE_SPEED_106, true)) < 0)
return false; return res;
// Disallow invalid frame // Disallow invalid frame
if (nfc_device_set_property_bool (pnd, NP_ACCEPT_INVALID_FRAMES, false) < 0) if ((res = nfc_device_set_property_bool (pnd, NP_ACCEPT_INVALID_FRAMES, false)) < 0)
return false; return res;
// Disallow multiple frames // Disallow multiple frames
if (nfc_device_set_property_bool (pnd, NP_ACCEPT_MULTIPLE_FRAMES, false) < 0) if ((res = nfc_device_set_property_bool (pnd, NP_ACCEPT_MULTIPLE_FRAMES, false)) < 0)
return false; return res;
// Make sure we reset the CRC and parity to chip handling. // Make sure we reset the CRC and parity to chip handling.
if (nfc_device_set_property_bool (pnd, NP_HANDLE_CRC, true) < 0) if ((res = nfc_device_set_property_bool (pnd, NP_HANDLE_CRC, true)) < 0)
return false; return res;
if (nfc_device_set_property_bool (pnd, NP_HANDLE_PARITY, true) < 0) if ((res = nfc_device_set_property_bool (pnd, NP_HANDLE_PARITY, true)) < 0)
return false; return res;
// Activate "easy framing" feature by default // Activate "easy framing" feature by default
if (nfc_device_set_property_bool (pnd, NP_EASY_FRAMING, true) < 0) if ((res = nfc_device_set_property_bool (pnd, NP_EASY_FRAMING, true)) < 0)
return false; return res;
// Deactivate the CRYPTO1 cipher, it may could cause problems when still active // Deactivate the CRYPTO1 cipher, it may could cause problems when still active
if (nfc_device_set_property_bool (pnd, NP_ACTIVATE_CRYPTO1, false) < 0) if ((res = nfc_device_set_property_bool (pnd, NP_ACTIVATE_CRYPTO1, false)) < 0)
return false; return res;
HAL (initiator_init, pnd); HAL (initiator_init, pnd);
} }
@ -346,13 +347,12 @@ nfc_initiator_select_passive_target (nfc_device *pnd,
/** /**
* @brief List passive or emulated tags * @brief List passive or emulated tags
* @return Returns \c true if action was successfully performed; otherwise returns \c false. * @return Returns the number of targets found on success, otherwise returns libnfc's error code (negative value)
* *
* @param pnd \a nfc_device struct pointer that represent currently used device * @param pnd \a nfc_device struct pointer that represent currently used device
* @param nm desired modulation * @param nm desired modulation
* @param[out] ant array of \a nfc_target that will be filled with targets info * @param[out] ant array of \a nfc_target that will be filled with targets info
* @param szTargets size of \a ant (will be the max targets listed) * @param szTargets size of \a ant (will be the max targets listed)
* @param[out] pszTargetFound pointer where target found counter will be stored
* *
* The NFC device will try to find the available passive tags. Some NFC devices * The NFC device will try to find the available passive tags. Some NFC devices
* are capable to emulate passive tags. The standards (ISO18092 and ECMA-340) * are capable to emulate passive tags. The standards (ISO18092 and ECMA-340)
@ -361,21 +361,22 @@ nfc_initiator_select_passive_target (nfc_device *pnd,
* with, therefore the initial modulation and speed (106, 212 or 424 kbps) * with, therefore the initial modulation and speed (106, 212 or 424 kbps)
* should be supplied. * should be supplied.
*/ */
bool int
nfc_initiator_list_passive_targets (nfc_device *pnd, nfc_initiator_list_passive_targets (nfc_device *pnd,
const nfc_modulation nm, const nfc_modulation nm,
nfc_target ant[], const size_t szTargets, size_t *pszTargetFound) nfc_target ant[], const size_t szTargets)
{ {
nfc_target nt; nfc_target nt;
size_t szTargetFound = 0; size_t szTargetFound = 0;
uint8_t *pbtInitData = NULL; uint8_t *pbtInitData = NULL;
size_t szInitDataLen = 0; size_t szInitDataLen = 0;
int res = 0;
pnd->iLastError = 0; pnd->iLastError = 0;
// Let the reader only try once to find a tag // Let the reader only try once to find a tag
if (nfc_device_set_property_bool (pnd, NP_INFINITE_SELECT, false) < 0) { if ((res = nfc_device_set_property_bool (pnd, NP_INFINITE_SELECT, false)) < 0) {
return false; return res;
} }
prepare_initiator_data (nm, &pbtInitData, &szInitDataLen); prepare_initiator_data (nm, &pbtInitData, &szInitDataLen);
@ -404,9 +405,7 @@ nfc_initiator_list_passive_targets (nfc_device *pnd,
break; break;
} }
} }
*pszTargetFound = szTargetFound; return szTargetFound;
return true;
} }
/** /**

View file

@ -15,8 +15,8 @@ test_access_storm (void)
{ {
int n = NTESTS; int n = NTESTS;
nfc_connstring connstrings[MAX_DEVICE_COUNT]; nfc_connstring connstrings[MAX_DEVICE_COUNT];
size_t device_count, ref_device_count, target_count; size_t device_count, ref_device_count;
bool res; int res = 0;
nfc_list_devices (connstrings, MAX_DEVICE_COUNT, &ref_device_count); nfc_list_devices (connstrings, MAX_DEVICE_COUNT, &ref_device_count);
if (!ref_device_count) if (!ref_device_count)
@ -36,14 +36,14 @@ test_access_storm (void)
cut_assert_not_null (device, cut_message ("nfc_connect")); cut_assert_not_null (device, cut_message ("nfc_connect"));
res = nfc_initiator_init(device); res = nfc_initiator_init(device);
cut_assert_true (res, cut_message ("nfc_initiator_init")); cut_assert_equal_int (0, res, cut_message ("nfc_initiator_init"));
const nfc_modulation nm = { const nfc_modulation nm = {
.nmt = NMT_ISO14443A, .nmt = NMT_ISO14443A,
.nbr = NBR_106, .nbr = NBR_106,
}; };
res = nfc_initiator_list_passive_targets(device, nm, ant, MAX_TARGET_COUNT, &target_count); res = nfc_initiator_list_passive_targets(device, nm, ant, MAX_TARGET_COUNT);
cut_assert_true (res, cut_message ("nfc_initiator_list_passive_targets")); cut_assert_operator_int (res, >=, 0, cut_message ("nfc_initiator_list_passive_targets"));
nfc_disconnect (device); nfc_disconnect (device);
} }

View file

@ -117,7 +117,7 @@ initiator_thread (void *arg)
sleep (1); sleep (1);
printf ("=========== INITIATOR %s =========\n", nfc_device_name (device)); printf ("=========== INITIATOR %s =========\n", nfc_device_name (device));
bool res = nfc_initiator_init (device); bool res = nfc_initiator_init (device);
cut_assert_true (res, cut_message ("Can't initialize NFC device as initiator: %s", nfc_strerror (device))); cut_assert_equal_int (0, res, cut_message ("Can't initialize NFC device as initiator: %s", nfc_strerror (device)));
if (!res) { thread_res = -1; return (void*) thread_res; } if (!res) { thread_res = -1; return (void*) thread_res; }
nfc_target nt; nfc_target nt;

View file

@ -150,7 +150,7 @@ initiator_thread (void *arg)
printf ("=========== INITIATOR %s =========\n", nfc_device_name (device)); printf ("=========== INITIATOR %s =========\n", nfc_device_name (device));
bool res = nfc_initiator_init (device); bool res = nfc_initiator_init (device);
cut_assert_true (res, cut_message ("Can't initialize NFC device as initiator: %s", nfc_strerror (device))); cut_assert_equal_int (0, res, cut_message ("Can't initialize NFC device as initiator: %s", nfc_strerror (device)));
if (!res) { thread_res = -1; return (void*) thread_res; } if (!res) { thread_res = -1; return (void*) thread_res; }
nfc_target nt; nfc_target nt;

View file

@ -64,9 +64,9 @@ main (int argc, const char *argv[])
{ {
(void) argc; (void) argc;
const char *acLibnfcVersion; const char *acLibnfcVersion;
size_t szTargetFound;
size_t i; size_t i;
bool verbose = false; bool verbose = false;
int res = 0;
// Display libnfc version // Display libnfc version
acLibnfcVersion = nfc_version (); acLibnfcVersion = nfc_version ();
@ -124,12 +124,12 @@ main (int argc, const char *argv[])
nm.nmt = NMT_ISO14443A; nm.nmt = NMT_ISO14443A;
nm.nbr = NBR_106; nm.nbr = NBR_106;
// List ISO14443A targets // List ISO14443A targets
if (nfc_initiator_list_passive_targets (pnd, nm, ant, MAX_TARGET_COUNT, &szTargetFound)) { if ((res = nfc_initiator_list_passive_targets (pnd, nm, ant, MAX_TARGET_COUNT)) >= 0) {
size_t n; int n;
if (verbose || (szTargetFound > 0)) { if (verbose) {
printf ("%d ISO14443A passive target(s) found%s\n", (int) szTargetFound, (szTargetFound == 0) ? ".\n" : ":"); printf ("%d ISO14443A passive target(s) found%s\n", res, (res == 0) ? ".\n" : ":");
} }
for (n = 0; n < szTargetFound; n++) { for (n = 0; n < res; n++) {
print_nfc_iso14443a_info (ant[n].nti.nai, verbose); print_nfc_iso14443a_info (ant[n].nti.nai, verbose);
printf ("\n"); printf ("\n");
} }
@ -138,26 +138,24 @@ main (int argc, const char *argv[])
nm.nmt = NMT_FELICA; nm.nmt = NMT_FELICA;
nm.nbr = NBR_212; nm.nbr = NBR_212;
// List Felica tags // List Felica tags
if (nfc_initiator_list_passive_targets (pnd, nm, ant, MAX_TARGET_COUNT, &szTargetFound)) { if (nfc_initiator_list_passive_targets (pnd, nm, ant, MAX_TARGET_COUNT) >= 0) {
size_t n; int n;
if (verbose || (szTargetFound > 0)) { if (verbose) {
printf ("%d Felica (212 kbps) passive target(s) found%s\n", (int) szTargetFound, printf ("%d Felica (212 kbps) passive target(s) found%s\n", res, (res == 0) ? ".\n" : ":");
(szTargetFound == 0) ? ".\n" : ":");
} }
for (n = 0; n < szTargetFound; n++) { for (n = 0; n < res; n++) {
print_nfc_felica_info (ant[n].nti.nfi, verbose); print_nfc_felica_info (ant[n].nti.nfi, verbose);
printf ("\n"); printf ("\n");
} }
} }
nm.nbr = NBR_424; nm.nbr = NBR_424;
if (nfc_initiator_list_passive_targets (pnd, nm, ant, MAX_TARGET_COUNT, &szTargetFound)) { if (nfc_initiator_list_passive_targets (pnd, nm, ant, MAX_TARGET_COUNT) >= 0) {
size_t n; int n;
if (verbose || (szTargetFound > 0)) { if (verbose) {
printf ("%d Felica (424 kbps) passive target(s) found%s\n", (int) szTargetFound, printf ("%d Felica (424 kbps) passive target(s) found%s\n", res, (res == 0) ? ".\n" : ":");
(szTargetFound == 0) ? ".\n" : ":");
} }
for (n = 0; n < szTargetFound; n++) { for (n = 0; n < res; n++) {
print_nfc_felica_info (ant[n].nti.nfi, verbose); print_nfc_felica_info (ant[n].nti.nfi, verbose);
printf ("\n"); printf ("\n");
} }
@ -166,12 +164,12 @@ main (int argc, const char *argv[])
nm.nmt = NMT_ISO14443B; nm.nmt = NMT_ISO14443B;
nm.nbr = NBR_106; nm.nbr = NBR_106;
// List ISO14443B targets // List ISO14443B targets
if (nfc_initiator_list_passive_targets (pnd, nm, ant, MAX_TARGET_COUNT, &szTargetFound)) { if (nfc_initiator_list_passive_targets (pnd, nm, ant, MAX_TARGET_COUNT) >= 0) {
size_t n; int n;
if (verbose || (szTargetFound > 0)) { if (verbose) {
printf ("%d ISO14443B passive target(s) found%s\n", (int) szTargetFound, (szTargetFound == 0) ? ".\n" : ":"); printf ("%d ISO14443B passive target(s) found%s\n", res, (res == 0) ? ".\n" : ":");
} }
for (n = 0; n < szTargetFound; n++) { for (n = 0; n < res; n++) {
print_nfc_iso14443b_info (ant[n].nti.nbi, verbose); print_nfc_iso14443b_info (ant[n].nti.nbi, verbose);
printf ("\n"); printf ("\n");
} }
@ -180,12 +178,12 @@ main (int argc, const char *argv[])
nm.nmt = NMT_ISO14443BI; nm.nmt = NMT_ISO14443BI;
nm.nbr = NBR_106; nm.nbr = NBR_106;
// List ISO14443B' targets // List ISO14443B' targets
if (nfc_initiator_list_passive_targets (pnd, nm, ant, MAX_TARGET_COUNT, &szTargetFound)) { if (nfc_initiator_list_passive_targets (pnd, nm, ant, MAX_TARGET_COUNT) >= 0) {
size_t n; int n;
if (verbose || (szTargetFound > 0)) { if (verbose) {
printf ("%d ISO14443B' passive target(s) found%s\n", (int) szTargetFound, (szTargetFound == 0) ? ".\n" : ":"); printf ("%d ISO14443B' passive target(s) found%s\n", res, (res == 0) ? ".\n" : ":");
} }
for (n = 0; n < szTargetFound; n++) { for (n = 0; n < res; n++) {
print_nfc_iso14443bi_info (ant[n].nti.nii, verbose); print_nfc_iso14443bi_info (ant[n].nti.nii, verbose);
printf ("\n"); printf ("\n");
} }
@ -194,12 +192,12 @@ main (int argc, const char *argv[])
nm.nmt = NMT_ISO14443B2SR; nm.nmt = NMT_ISO14443B2SR;
nm.nbr = NBR_106; nm.nbr = NBR_106;
// List ISO14443B-2 ST SRx family targets // List ISO14443B-2 ST SRx family targets
if (nfc_initiator_list_passive_targets (pnd, nm, ant, MAX_TARGET_COUNT, &szTargetFound)) { if (nfc_initiator_list_passive_targets (pnd, nm, ant, MAX_TARGET_COUNT) >= 0) {
size_t n; int n;
if (verbose || (szTargetFound > 0)) { if (verbose) {
printf ("%d ISO14443B-2 ST SRx passive target(s) found%s\n", (int) szTargetFound, (szTargetFound == 0) ? ".\n" : ":"); printf ("%d ISO14443B-2 ST SRx passive target(s) found%s\n", res, (res == 0) ? ".\n" : ":");
} }
for (n = 0; n < szTargetFound; n++) { for (n = 0; n < res; n++) {
print_nfc_iso14443b2sr_info (ant[n].nti.nsi, verbose); print_nfc_iso14443b2sr_info (ant[n].nti.nsi, verbose);
printf ("\n"); printf ("\n");
} }
@ -208,12 +206,12 @@ main (int argc, const char *argv[])
nm.nmt = NMT_ISO14443B2CT; nm.nmt = NMT_ISO14443B2CT;
nm.nbr = NBR_106; nm.nbr = NBR_106;
// List ISO14443B-2 ASK CTx family targets // List ISO14443B-2 ASK CTx family targets
if (nfc_initiator_list_passive_targets (pnd, nm, ant, MAX_TARGET_COUNT, &szTargetFound)) { if (nfc_initiator_list_passive_targets (pnd, nm, ant, MAX_TARGET_COUNT) >= 0) {
size_t n; int n;
if (verbose || (szTargetFound > 0)) { if (verbose) {
printf ("%d ISO14443B-2 ASK CTx passive target(s) found%s\n", (int) szTargetFound, (szTargetFound == 0) ? ".\n" : ":"); printf ("%d ISO14443B-2 ASK CTx passive target(s) found%s\n", res, (res == 0) ? ".\n" : ":");
} }
for (n = 0; n < szTargetFound; n++) { for (n = 0; n < res; n++) {
print_nfc_iso14443b2ct_info (ant[n].nti.nci, verbose); print_nfc_iso14443b2ct_info (ant[n].nti.nci, verbose);
printf ("\n"); printf ("\n");
} }
@ -222,12 +220,12 @@ main (int argc, const char *argv[])
nm.nmt = NMT_JEWEL; nm.nmt = NMT_JEWEL;
nm.nbr = NBR_106; nm.nbr = NBR_106;
// List Jewel targets // List Jewel targets
if (nfc_initiator_list_passive_targets(pnd, nm, ant, MAX_TARGET_COUNT, &szTargetFound )) { if (nfc_initiator_list_passive_targets(pnd, nm, ant, MAX_TARGET_COUNT) >= 0) {
size_t n; int n;
if (verbose || (szTargetFound > 0)) { if (verbose) {
printf("%d Jewel passive target(s) found%s\n", (int)szTargetFound, (szTargetFound==0)?".\n":":"); printf("%d Jewel passive target(s) found%s\n", res, (res == 0)?".\n":":");
} }
for(n=0; n<szTargetFound; n++) { for(n = 0; n < res; n++) {
print_nfc_jewel_info (ant[n].nti.nji, verbose); print_nfc_jewel_info (ant[n].nti.nji, verbose);
printf("\n"); printf("\n");
} }

View file

@ -229,7 +229,7 @@ main (int argc, char *argv[])
printf ("Connected to the NFC reader device: %s\n", pndInitiator->acName); printf ("Connected to the NFC reader device: %s\n", pndInitiator->acName);
if (!nfc_initiator_init (pndInitiator)) { if (nfc_initiator_init (pndInitiator) < 0) {
printf ("Error: fail initializing initiator\n"); printf ("Error: fail initializing initiator\n");
nfc_disconnect (pndInitiator); nfc_disconnect (pndInitiator);
exit (EXIT_FAILURE); exit (EXIT_FAILURE);