From 87161b5b7bf0fca45274bb89647d0aca22013769 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sat, 2 Oct 2010 23:35:24 +0000 Subject: [PATCH] Examples: pn53x-tamashell TODO: readline detection via autoconf --- examples/Makefile.am | 10 ++- examples/pn53x-tamashell.c | 130 +++++++++++++++++++++++++++++++++++++ 2 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 examples/pn53x-tamashell.c diff --git a/examples/Makefile.am b/examples/Makefile.am index 8b22ad1..35c4e5a 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -10,7 +10,8 @@ bin_PROGRAMS = \ nfc-sam \ nfcip-initiator \ nfcip-target \ - pn53x-diagnose + pn53x-diagnose \ + pn53x-tamashell # set the include path found by configure INCLUDES= $(all_includes) $(LIBNFC_CFLAGS) @@ -62,6 +63,13 @@ pn53x_diagnose_SOURCES = pn53x-diagnose.c pn53x_diagnose_LDADD = $(top_builddir)/libnfc/libnfc.la \ libnfcutils.la +pn53x_tamashell_SOURCES = pn53x-tamashell.c +pn53x_tamashell_LDADD = $(top_builddir)/libnfc/libnfc.la \ + libnfcutils.la +# Should be guarded by test on availability of readline +#pn53x_tamashell_CFLAGS = -DHAVE_READLINE +#pn53x_tamashell_LDFLAGS = -lreadline + nfc_sam_SOURCES = nfc-sam.c nfc_sam_LDADD = $(top_builddir)/libnfc/libnfc.la \ libnfcutils.la diff --git a/examples/pn53x-tamashell.c b/examples/pn53x-tamashell.c new file mode 100644 index 0000000..4c91dd2 --- /dev/null +++ b/examples/pn53x-tamashell.c @@ -0,0 +1,130 @@ +/* + +Public platform independent Near Field Communication (NFC) library +Copyright (C) 2010, Yobibe + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +*/ + +#include +#include +#include +#include +#include +#if defined(HAVE_READLINE) +# include +# include +#else + extern FILE* stdin; +#endif //HAVE_READLINE +#include +#include + +#include "nfc-utils.h" + +#define MAX_FRAME_LEN 264 + +int main(int argc, const char* argv[]) +{ + nfc_device_t* pnd; + byte_t abtRx[MAX_FRAME_LEN]; + byte_t abtTx[MAX_FRAME_LEN] = { 0xD4 }; + size_t szRxLen; + size_t szTxLen; + + nfc_device_desc_t device_desc; + // Try to open the NFC reader + pnd = nfc_connect(NULL); + + if (pnd == NULL) { + ERR ("%s", "Unable to connect to NFC device."); + return EXIT_FAILURE; + } + + printf ("Connected to NFC reader: %s\n", pnd->acName); + + nfc_initiator_init(pnd); + + char * cmd; + char * prompt="> "; + while(1) { + bool result; + int offset=0; +#if defined(HAVE_READLINE) + cmd=readline(prompt); + // NULL if ctrl-d + if (cmd==NULL) { + printf("Bye!\n"); + break; + } + add_history(cmd); +#else + cmd = malloc(1024); + printf("%s", prompt); + fflush(0); + int s = read(0, cmd, 1024); + if (s == 0) { + printf("Bye!\n"); + free(cmd); + break; + } +#endif //HAVE_READLINE + if (cmd[0]=='q') { + printf("Bye!\n"); + free(cmd); + break; + } + szTxLen = 0; + for(int i = 0; i