boolean readRFID() { //if (RFID.available()) RFID.flush(); digitalWrite(RFID_ENABLE, LOW); // Activate the RFID reader for (byte i = 0; i < RFID_LENGTH; i++) rfidCode[i] = 0; if (RFID.available()) { int val = RFID.read(); Serial.print(val); if (val == RFID_START_CHAR) { RFID.readBytes(rfidCode, RFID_LENGTH); Serial.print("RFID Read: "); Serial.println(rfidCode); digitalWrite(RFID_ENABLE, HIGH); // deactivate the RFID reader for a moment so it will not flood RFID.flush(); // clear the buffer delay(1500); // wait for a bit return true; } } return false; }
int LoRaModem::_checkresponse(const char* checkVal, int call_timeout = rx_timeout, int _trim = 0) { modemResp[0] = 0; unsigned long startTime = millis(); int i = 0; while (i < rx_buffer - 1) { if (_trim == 1) { // _LoRaSerial.find("Wait"); // toss the verbosity. } int rxcount = _LoRaSerial.readBytes(&modemResp[i], rx_buffer - i); i += rxcount; modemResp[i] = 0; if (millis() - startTime > call_timeout) { _rspMs.Target(modemResp, i); char result = _rspMs.Match(checkVal, 0); if (result == REGEXP_MATCHED) { //Terminate the string DEBUG_PRINT(modemResp); return 0; } else { DEBUG_PRINT(F("Unexpected or no response")); DEBUG_PRINT(modemResp); return 1; } } } };