From d6b2c19f2a1e5a11da34bdb611b0001cf1d3f9d2 Mon Sep 17 00:00:00 2001 From: Felix Rusu Date: Tue, 4 Aug 2020 18:42:09 -0400 Subject: [PATCH] flash fail fix + boolean HandleHandshakeACK() --- RFM69_OTA.cpp | 7 ++++--- RFM69_OTA.h | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/RFM69_OTA.cpp b/RFM69_OTA.cpp index a82679e..6143887 100644 --- a/RFM69_OTA.cpp +++ b/RFM69_OTA.cpp @@ -76,7 +76,7 @@ void CheckForWirelessHEX(RFM69& radio, SPIFlash& flash, uint8_t DEBUG, uint8_t L //=================================================================================================================== // HandleHandshakeACK() - checks there is a FLASH chip and sends an ACK for the OTA request handshake //=================================================================================================================== -void HandleHandshakeACK(RFM69& radio, SPIFlash& flash, uint8_t flashCheck) { +uint8_t HandleHandshakeACK(RFM69& radio, SPIFlash& flash, uint8_t flashCheck) { if (flashCheck) { uint16_t deviceID=0; @@ -91,10 +91,11 @@ void HandleHandshakeACK(RFM69& radio, SPIFlash& flash, uint8_t flashCheck) { if (deviceID==0) { radio.sendACK("FLX?NOK:NOFLASH",15); //NO FLASH CHIP FOUND, ABORTING Serial.println(F("FAIL:NO FLASH MEM")); - return; + return false; } } radio.sendACK("FLX?OK",6); //ACK the HANDSHAKE + return true; } @@ -104,7 +105,7 @@ void HandleHandshakeACK(RFM69& radio, SPIFlash& flash, uint8_t flashCheck) { //=================================================================================================================== #ifdef SHIFTCHANNEL uint8_t HandleWirelessHEXDataWrapper(RFM69& radio, uint16_t remoteID, SPIFlash& flash, uint8_t DEBUG, uint8_t LEDpin) { - HandleHandshakeACK(radio, flash); + if (!HandleHandshakeACK(radio, flash)) return false; if (DEBUG) { Serial.println(F("FLX?OK (ACK sent)")); Serial.print(F("Shifting channel to ")); Serial.println(radio.getFrequency() + SHIFTCHANNEL);} radio.setFrequency(radio.getFrequency() + SHIFTCHANNEL); //shift center freq by SHIFTCHANNEL amount uint8_t result = HandleWirelessHEXData(radio, remoteID, flash, DEBUG, LEDpin); diff --git a/RFM69_OTA.h b/RFM69_OTA.h index 4855d78..6310030 100644 --- a/RFM69_OTA.h +++ b/RFM69_OTA.h @@ -59,7 +59,7 @@ //functions used in the REMOTE node void CheckForWirelessHEX(RFM69& radio, SPIFlash& flash, uint8_t DEBUG=false, uint8_t LEDpin=LED); -void HandleHandshakeACK(RFM69& radio, SPIFlash& flash, uint8_t flashCheck=true); +uint8_t HandleHandshakeACK(RFM69& radio, SPIFlash& flash, uint8_t flashCheck=true); void resetUsingWatchdog(uint8_t DEBUG=false); uint8_t HandleWirelessHEXData(RFM69& radio, uint16_t remoteID, SPIFlash& flash, uint8_t DEBUG=false, uint8_t LEDpin=LED);