example: Jewel support in nfc-list and nfc-poll. (Many thanks to Phil)

This commit is contained in:
Romuald Conty 2010-09-28 15:31:31 +00:00
parent cab6d19c5a
commit 8672c809bd
4 changed files with 50 additions and 12 deletions

View file

@ -181,16 +181,15 @@ main (int argc, const char *argv[])
}
}
/*
// List Jewel targets
if (nfc_initiator_list_passive_targets(pnd, NM_JEWEL_106, anti, MAX_TARGET_COUNT, &szTargetFound )) {
size_t n;
printf("%d Jewel passive target(s) was found%s\n", (int)szTargetFound, (szTargetFound==0)?".\n":":"); for(n=0; n<szTargetFound; n++) {
printf("Jewel support is missing in libnfc, feel free to contribute.\n");
printf("%d Jewel passive target(s) was found%s\n", (int)szTargetFound, (szTargetFound==0)?".\n":":");
for(n=0; n<szTargetFound; n++) {
print_nfc_jewel_info (anti[n].nji);
printf("\n");
}
}
*/
nfc_disconnect (pnd);
}

View file

@ -72,8 +72,8 @@ main (int argc, const char *argv[])
const byte_t btPollNr = 20;
const byte_t btPeriod = 2;
const nfc_target_type_t nttArray[4] = {NTT_GENERIC_PASSIVE_106, NTT_GENERIC_PASSIVE_212, NTT_GENERIC_PASSIVE_424, NTT_ISO14443B_106};
const size_t szTargetTypes = 4;
const nfc_target_type_t nttArray[5] = {NTT_GENERIC_PASSIVE_106, NTT_GENERIC_PASSIVE_212, NTT_GENERIC_PASSIVE_424, NTT_ISO14443B_106, NTT_JEWEL_106};
const size_t szTargetTypes = 5;
nfc_target_t antTargets[2];
size_t szTargetFound;
@ -120,20 +120,50 @@ main (int argc, const char *argv[])
uint8_t n;
printf ("%ld target(s) have been found.\n", (unsigned long) szTargetFound);
for (n = 0; n < szTargetFound; n++) {
printf ("T%d: targetType=%02x, ", n + 1, antTargets[n].ntt);
printf ("targetData:\n");
printf ("T%d: targetType=%02x ", n + 1, antTargets[n].ntt);
switch(antTargets[n].ntt) {
case NTT_JEWEL_106:
printf ("(Innovision Jewel tag), targetData:\n");
print_nfc_jewel_info (antTargets[n].nti.nji);
break;
case NTT_MIFARE:
case NTT_ISO14443A_106:
printf ("(Mifare card), targetData:\n");
print_nfc_iso14443a_info (antTargets[n].nti.nai);
break;
case NTT_FELICA_212:
case NTT_FELICA_424:
printf ("(FeliCa 212 kbps card), targetData:\n");
print_nfc_felica_info (antTargets[n].nti.nfi);
break;
case NTT_FELICA_424:
printf ("(FeliCa 212 kbps card), targetData:\n");
print_nfc_felica_info (antTargets[n].nti.nfi);
break;
case NTT_ISO14443A_106:
printf ("(Passive 106 kbps ISO/IEC 14443-4A card), targetData:\n");
print_nfc_iso14443a_info (antTargets[n].nti.nai);
break;
case NTT_ISO14443B_TCL_106:
printf ("(Passive 106 kbps ISO/IEC 14443-4B card), targetData:\n");
print_nfc_iso14443b_info (antTargets[n].nti.nbi);
break;
case NTT_DEP_PASSIVE_106:
printf ("(DEP passive 106 kbps)\n");
break;
case NTT_DEP_PASSIVE_212:
printf ("(DEP passive 212 kbps)\n");
break;
case NTT_DEP_PASSIVE_424:
printf ("(DEP passive 424 kbps)\n");
break;
case NTT_DEP_ACTIVE_106:
printf ("(DEP active 106 kbps)\n");
break;
case NTT_DEP_ACTIVE_212:
printf ("(DEP active 212 kbps)\n");
break;
case NTT_DEP_ACTIVE_424:
printf ("(DEP active 424 kbps)\n");
break;
};
}
} else {

View file

@ -132,6 +132,15 @@ print_nfc_felica_info (const nfc_felica_info_t nfi)
print_hex (nfi.abtPad, 8);
}
void
print_nfc_jewel_info (const nfc_jewel_info_t nji)
{
printf (" JEWELID: ");
print_hex (nji.btId, 4);
printf (" SENS_RES: ");
print_hex (nji.btSensRes, 2);
}
#define PI_ISO14443_4_SUPPORTED 0x01
#define PI_NAD_SUPPORTED 0x01
#define PI_CID_SUPPORTED 0x02

View file

@ -414,8 +414,8 @@ nfc_initiator_list_passive_targets (nfc_device_t * pnd, const nfc_modulation_t n
break;
}
szTargetFound++;
// deselect has no effect on FeliCa cards so we'll stop after one...
if (nmInitModulation == NM_FELICA_212 || nmInitModulation == NM_FELICA_424) {
// deselect has no effect on FeliCa and Jewel cards so we'll stop after one...
if (nmInitModulation == NM_FELICA_212 || nmInitModulation == NM_FELICA_424 || nmInitModulation == NM_JEWEL_106) {
break;
}
}