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;
      }
    }
  }
};