diff --git a/firmware/firmware.ino b/firmware/firmware.ino index ac2b66a..8112c1a 100644 --- a/firmware/firmware.ino +++ b/firmware/firmware.ino @@ -18,6 +18,8 @@ char cardBuffer[CARD_BUFFER_LENGTH]; #define CARD_DATA_LENGTH 10 #define CARD_CHECK_LENGTH 2 +#define CARD_HEAD_BYTE 0x2 +#define CARD_TAIL_BYTE 0x3 typedef struct __attribute__((packed)) cardData { char head; char data[CARD_DATA_LENGTH]; @@ -48,6 +50,7 @@ typedef struct __attribute__((packed)) cardData { #define LED_ERROR_BLINK_TIME 50 #define EEPROM_SIZE 4095 +#define EEPROM_END_MARKER '$' enum wifiStates { @@ -117,7 +120,7 @@ void tickerLoop() if (readChar == -1) { break; - } else if (readChar == 0x2) { + } else if (readChar == CARD_HEAD_BYTE) { bufPos = 0; } @@ -127,7 +130,7 @@ void tickerLoop() cardBuffer[bufPos++] = readChar; - if (readChar == 0x3 && bufPos == CARD_BUFFER_LENGTH) { + if (readChar == CARD_TAIL_BYTE && bufPos == CARD_BUFFER_LENGTH) { if (lockState == LOCK_OFF && LEDState == LED_OFF) checkCard(); break; } @@ -177,7 +180,10 @@ void checkCard() { cardData_t *cardData = (cardData_t *) cardBuffer; - if (cardData->head == 0x2 && cardData->tail == 0x3 && checksum(cardData)) { + if (cardData->head == CARD_HEAD_BYTE && + cardData->tail == CARD_TAIL_BYTE && + checksum(cardData)) { + String cardStr = String(); String authorizedCards = String(); @@ -188,7 +194,7 @@ void checkCard() for (uint16_t i = 0; i < EEPROM_SIZE; i++) { char tmp = EEPROM.read(i); authorizedCards += tmp; - if (tmp == '$') break; + if (tmp == EEPROM_END_MARKER) break; } if (LOGGING) Serial.println("[INFO] Good scan from card: " + cardStr); @@ -457,7 +463,7 @@ void getCards() if (cardHTTPCode == HTTP_CODE_OK) { if (LOGGING) Serial.print("[INFO] Resource found, parsing response: "); String cardPayload = cardHTTP.getString(); - cardPayload += "$"; // Mark the end + cardPayload += String(EEPROM_END_MARKER); if (LOGGING) Serial.println(cardPayload); noInterrupts(); // commit() disables interrupts, but we want an atomic EEPROM buffer write