This repository has been archived on 2023-10-10. You can view files and clone it, but cannot push or open issues/pull-requests.
hackfridge/terminal/main.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
}
}
}