90 lines
2.3 KiB
C
90 lines
2.3 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <openssl/ssl.h>
|
|
|
|
#include "nfc.h"
|
|
#include "barcode.h"
|
|
#include "ldap.h"
|
|
#include "tts.h"
|
|
#include "config.h"
|
|
#include "network.h"
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
SSL_library_init();
|
|
|
|
if (nfc_initialize())
|
|
{
|
|
printf("NFC initialization failed\n");
|
|
tts_speak("Nie można było zainicjalizować czytnika mifare.\n");
|
|
return 1;
|
|
}
|
|
printf("NFC initialization successful\n");
|
|
|
|
if (barcode_initialize(BARCODE_PORT))
|
|
{
|
|
printf("Barcode initialization failed\n");
|
|
tts_speak("Nie można było zainicjalizować czytnika kodów kreskowych.\n");
|
|
return 1;
|
|
}
|
|
printf("Barcode initialization successful\n");
|
|
|
|
tts_speak_cached("Refryżyrator gotowy do pracy.");
|
|
|
|
char MifareID[128];
|
|
char Barcode[14];
|
|
while (1)
|
|
{
|
|
int NFCResult = nfc_read(MifareID);
|
|
|
|
if (NFCResult == 0)
|
|
{
|
|
char DN[256];
|
|
int DNLength = 256;
|
|
int LDAPResult = ldap_dn_by_mifare(MifareID, DN, &DNLength);
|
|
|
|
if (LDAPResult > 0)
|
|
{
|
|
if (LDAPResult == NO_SUCH_CARD)
|
|
{
|
|
tts_speak_cached("Nieznana karta.");
|
|
printf("NFC: Unknown card.\n");
|
|
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
tts_speak_cached("Błąd eldapa.");
|
|
printf("LDAP: Unknown error %i\n", LDAPResult);
|
|
continue;
|
|
}
|
|
}
|
|
printf("LDAP DN: %s\n", DN);
|
|
char UID[128];
|
|
ldap_uid_from_dn(DN, UID);
|
|
printf("LDAP uid: %s\n", UID);
|
|
|
|
tts_speak_cached("Zeskanuj produkt.\n");
|
|
|
|
int BarcodeResult = barcode_read(Barcode);
|
|
if (BarcodeResult == 0)
|
|
{
|
|
tts_speak_cached("Bip, bip!");
|
|
printf("Scanned barcode %s\n", Barcode);
|
|
send_purchase(MAINFRAME_HOST, MAINFRAME_PORT, Barcode, UID);
|
|
}
|
|
else
|
|
{
|
|
printf("Barcode error %i\n", BarcodeResult);
|
|
// Do error handling here
|
|
}
|
|
}
|
|
else if (NFCResult != NFC_TIMEOUT)
|
|
{
|
|
printf("NFC error %i\n", NFCResult);
|
|
// Do error handling here
|
|
}
|
|
}
|
|
}
|
|
|