28 #endif // HAVE_CONFIG_H
38 # include "../contrib/windows.h"
77 for (uiDriver = 0; uiDriver <
sizeof (drivers_callbacks_list) /
sizeof (drivers_callbacks_list[0]); uiDriver++) {
80 if (drivers_callbacks_list[uiDriver].pick_device != NULL) {
81 DBG (
"Autodetecting available devices using %s driver.", drivers_callbacks_list[uiDriver].acDriver);
82 pndd = drivers_callbacks_list[uiDriver].pick_device ();
85 DBG (
"Auto-connecting to %s using %s driver", pndd->
acDevice, drivers_callbacks_list[uiDriver].acDriver);
86 pnd = drivers_callbacks_list[uiDriver].connect (pndd);
88 DBG (
"No device available using %s driver", drivers_callbacks_list[uiDriver].acDriver);
97 if (0 != strcmp (drivers_callbacks_list[uiDriver].acDriver, pndd->
pcDriver)) {
100 pnd = drivers_callbacks_list[uiDriver].connect (pndd);
106 DBG (
"[%s] has been claimed.", pnd->
acName);
108 pnd->
pdc = &(drivers_callbacks_list[uiDriver]);
111 if (!pn53x_init (pnd))
147 DBG (
"No device found using driver: %s", drivers_callbacks_list[uiDriver].acDriver);
165 nfc_initiator_deselect_target (pnd);
183 for (uiDriver = 0; uiDriver <
sizeof (drivers_callbacks_list) /
sizeof (drivers_callbacks_list[0]); uiDriver++) {
184 if (drivers_callbacks_list[uiDriver].pick_device != NULL) {
185 nddRes = drivers_callbacks_list[uiDriver].pick_device ();
208 for (uiDriver = 0; uiDriver <
sizeof (drivers_callbacks_list) /
sizeof (drivers_callbacks_list[0]); uiDriver++) {
209 if (drivers_callbacks_list[uiDriver].list_devices != NULL) {
211 if (drivers_callbacks_list[uiDriver].list_devices
212 (pnddDevices + (*pszDeviceFound), szDevices - (*pszDeviceFound), &szN)) {
213 *pszDeviceFound += szN;
214 DBG (
"%ld device(s) found using %s driver", (
unsigned long) szN, drivers_callbacks_list[uiDriver].acDriver);
217 DBG (
"No listing function avaible for %s driver", drivers_callbacks_list[uiDriver].acDriver);
239 return pn53x_configure (pnd, ndo, bEnable);
261 if (!pn53x_set_reg (pnd, REG_CIU_TX_AUTO, SYMBOL_FORCE_100_ASK, 0x40))
265 if (!pn53x_set_reg (pnd, REG_CIU_CONTROL, SYMBOL_INITIATOR, 0x10))
294 const byte_t * pbtInitData,
const size_t szInitData,
297 byte_t abtInit[MAX_FRAME_LEN];
308 switch (szInitData) {
311 memcpy (abtInit + 1, pbtInitData, 7);
317 memcpy (abtInit + 1, pbtInitData, 3);
319 memcpy (abtInit + 5, pbtInitData + 3, 7);
325 memcpy (abtInit, pbtInitData, szInitData);
332 memcpy (abtInit, pbtInitData, szInitData);
337 return pn53x_initiator_select_passive_target (pnd, nm, abtInit, szInit, pnt);
360 nfc_target_t ant[],
const size_t szTargets,
size_t * pszTargetFound)
363 size_t szTargetFound = 0;
364 byte_t *pbtInitData = NULL;
365 size_t szInitDataLen = 0;
383 case NMT_ISO14443B: {
385 pbtInitData = (byte_t *)
"\x00";
391 pbtInitData = (byte_t *)
"\x00\xff\xff\x01\x00";
401 nfc_initiator_deselect_target (pnd);
403 if (szTargets > szTargetFound) {
404 memcpy (&(ant[szTargetFound]), &nt,
sizeof (
nfc_target_t));
410 if ((nm.nmt == NMT_FELICA) || (nm.nmt == NMT_JEWEL)) {
414 *pszTargetFound = szTargetFound;
435 const byte_t btPollNr,
const byte_t btPeriod,
440 return pn53x_initiator_poll_targets (pnd, pnmModulations, szModulations, btPollNr, btPeriod, pntTargets, pszTargetFound);
466 return pn53x_initiator_select_dep_target (pnd, ndm, nbr, pndiInitiator, pnt);
486 return (pn53x_InDeselect (pnd, 0));
511 return pn53x_initiator_transceive_bytes (pnd, pbtTx, szTx, pbtRx, pszRx);
551 byte_t * pbtRx,
size_t * pszRxBits, byte_t * pbtRxPar)
555 return pn53x_initiator_transceive_bits (pnd, pbtTx, szTxBits, pbtTxPar, pbtRx, pszRxBits, pbtRxPar);
585 return pn53x_target_init (pnd, pnt, pbtRx, pszRx);
604 return pn53x_target_send_bytes (pnd, pbtTx, szTx);
621 return pn53x_target_receive_bytes (pnd, pbtRx, pszRx);
636 return pn53x_target_send_bits (pnd, pbtTx, szTxBits, pbtTxPar);
655 return pn53x_target_receive_bits (pnd, pbtRx, pszRxBits, pbtRxPar);
675 return (snprintf (pcStrErrBuf, szBufLen,
"%s",
nfc_strerror (pnd)) < 0) ? -1 : 0;
684 fprintf (stderr,
"%s: %s\n", pcString,
nfc_strerror (pnd));
709 return PACKAGE_VERSION
" (r" SVN_REVISION
")";
711 return PACKAGE_VERSION;
712 #endif // SVN_REVISION