From 36d5feaf2fabc086aec2ee854a1722ade620ace7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergiusz=20Baza=C5=84ski?= Date: Tue, 1 May 2012 06:43:16 +0000 Subject: [PATCH] Refucktoring nfc_poll -> nfc_read. --- terminal/main.c | 11 ++++++++++- terminal/nfc.c | 19 ++++++++++++------- terminal/nfc.h | 6 +++++- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/terminal/main.c b/terminal/main.c index d92f984..a47132e 100644 --- a/terminal/main.c +++ b/terminal/main.c @@ -11,9 +11,18 @@ int main(int argc, char **argv) tts_speak("Refryżyrator gotowy do pracy."); + char UID[128]; while (1) { - nfc_poll(); + int NFCResult = nfc_read(UID); + if (NFCResult == 0) + { + // Do barcode stuff here + } + else if (NFCResult != NFC_TIMEOUT) + { + // Do error handling here + } } } diff --git a/terminal/nfc.c b/terminal/nfc.c index 27f6574..d35fe6f 100644 --- a/terminal/nfc.c +++ b/terminal/nfc.c @@ -10,6 +10,10 @@ #include "ldap.h" #include "base64.h" +#define E_BAD_CARD 1 +#define E_NO_SUCH_USER 2 +#define E_FUCKUP 3 + static nfc_device_t *g_NFCDevice = NULL; const nfc_modulation_t g_NFCModulations[5] = { @@ -21,7 +25,7 @@ const nfc_modulation_t g_NFCModulations[5] = { }; const size_t g_NFCModulationCount = 5; -void nfc_poll(void) +int nfc_read(char *UIDOut) { nfc_target_t Target; bool Result = nfc_initiator_poll_target(g_NFCDevice, g_NFCModulations, g_NFCModulationCount, 20, 2, &Target); @@ -29,10 +33,10 @@ void nfc_poll(void) if (Result) { if (Target.nm.nmt != NMT_ISO14443A) - return; + return E_BAD_CARD; if (Target.nti.nai.szUidLen != 4) - return; + return E_BAD_CARD; printf("Scanned Mifare %x.\n", *(int *)Target.nti.nai.abtUid); @@ -48,18 +52,19 @@ void nfc_poll(void) if (LDAPResult == NO_SUCH_CARD) { tts_speak("Nieznana karta."); - sleep(5); - return; + return E_NO_SUCH_USER; } else { tts_speak("Nieznany błąd przy połączeniu z eldapem."); - sleep(10); - return; + return E_FUCKUP; } } printf("This appears to be %s.\n", DN); + strncpy(UIDOut, 128, DN); + return 0; } + return 1; } int nfc_initialize(void) diff --git a/terminal/nfc.h b/terminal/nfc.h index 9af96fe..d19cea7 100644 --- a/terminal/nfc.h +++ b/terminal/nfc.h @@ -1,7 +1,11 @@ #ifndef __NFC_H__ #define __NFC_H__ +#define NFC_BAD_CARD 1 +#define NFC_NO_SUCH_USER 2 +#define NFC_FUCKUP 3 + int nfc_initialize(void); -void nfc_poll(void); +int nfc_read(char *UIDOut); #endif