add some OTA helpers

This commit is contained in:
Felix Rusu 2021-07-20 13:56:22 -04:00
parent ea8535ffc8
commit b7ee0b32b0
2 changed files with 33 additions and 2 deletions

View File

@ -158,7 +158,7 @@ uint8_t HandleWirelessHEXData(RFM69& radio, uint16_t remoteID, SPIFlash& flash,
{
uint8_t index=3;
tmp = 0;
//read packet SEQ
for (uint8_t i = 4; i<8; i++) //up to 4 characters for seq number
{
@ -416,7 +416,7 @@ uint8_t HandleSerialHEXData(RFM69& radio, uint16_t targetID, uint16_t TIMEOUT, u
}
}
}
//abort FLASH sequence if no valid packet received for a long time
timeoutcheck:
if (millis()-now > TIMEOUT)
@ -547,6 +547,34 @@ void PrintHex83(uint8_t* data, uint8_t length)
Serial.println();
}
//===================================================================================================================
// bufferChecksum() - compute 1 byte checksum on a byte stream
//===================================================================================================================
uint8_t bufferChecksum(uint8_t* buffer, uint8_t length) {
uint8_t checksum=0;
for (uint8_t i=0;i<length;i++)
checksum += buffer[i];
return (checksum^0xFF)+1;
}
//===================================================================================================================
// prepareSendBuffer() - returns the final size of the buf
//===================================================================================================================
uint8_t prepareStoreBuffer(char* hexdata, uint8_t*buf, uint8_t length) {
for (uint8_t i=0; i<length;i++)
buf[i] = BYTEfromHEX(hexdata[i*2], hexdata[i*2+1]);
return length;
}
//===================================================================================================================
// validHexString() - walk a char stream and check all chars are valid ascii HEX chars
//===================================================================================================================
uint8_t validHexString(char* hex, uint16_t expectedByteCount) {
for (uint16_t i=0;i<expectedByteCount*2;i++)
if (hex[i]<48 || (hex[i]>57 && hex[i]< 65) || hex[i]>70) return false;
return true;
}
//===================================================================================================================
// resetUsingWatchdog() - Use watchdog to reset the MCU
//===================================================================================================================

View File

@ -78,5 +78,8 @@ uint8_t sendHEXPacket(RFM69& radio, uint16_t remoteID, uint8_t* sendBuf, uint8_t
uint8_t BYTEfromHEX(char MSB, char LSB);
uint8_t readSerialLine(char* input, char endOfLineChar=10, uint8_t maxLength=115, uint16_t timeout=1000);
void PrintHex83(uint8_t* data, uint8_t length);
uint8_t bufferChecksum(uint8_t* buffer, uint8_t length);
uint8_t prepareStoreBuffer(char* hexdata, uint8_t*buf, uint8_t length);
uint8_t validHexString(char* hex, uint16_t expectedByteCount);
#endif