@@ -522,7 +522,7 @@ boolean MySensor::process() {
522
522
#ifdef MY_OTA_FIRMWARE_FEATURE
523
523
unsigned long enter = hw_millis ();
524
524
if (fwUpdateOngoing && (enter - fwLastRequestTime > MY_OTA_RETRY_DELAY)) {
525
- if (fwRetry == 0 ) {
525
+ if (! fwRetry) {
526
526
debug (PSTR (" fw upd fail\n " ));
527
527
// Give up. We have requested MY_OTA_RETRY times without any packet in return.
528
528
fwUpdateOngoing = false ;
@@ -746,38 +746,38 @@ boolean MySensor::process() {
746
746
return false ;
747
747
} else debug (PSTR (" fw update skipped\n " ));
748
748
} else if (type == ST_FIRMWARE_RESPONSE) {
749
- // Save block to flash
750
- debug (PSTR (" fw block %d\n " ), fwBlock);
751
- // extract FW block
752
- ReplyFWBlock *firmwareResponse = (ReplyFWBlock *)msg.data ;
753
- // write to flash
754
- flash.writeBytes ( ((fwBlock - 1 ) * FIRMWARE_BLOCK_SIZE) + FIRMWARE_START_OFFSET, firmwareResponse->data , FIRMWARE_BLOCK_SIZE);
755
- // wait until flash written
756
- while ( flash.busy () );
757
- fwBlock--;
758
- if (!fwBlock) {
759
- // We're finished! Do a checksum and reboot.
760
- if (isValidFirmware ()) {
761
- debug (PSTR (" fw checksum ok\n " ));
762
- // All seems ok, write size and signature to flash (DualOptiboot will pick this up and flash it)
763
- flash.writeBytes (0 , " FLXIMG:" , 7 );
764
- // FW size in flash
765
- uint16_t fwsize = FIRMWARE_BLOCK_SIZE * fc.blocks ;
766
- flash.writeByte (7 , fwsize >> 8 );
767
- flash.writeByte (8 , fwsize);
768
- // end of header
769
- flash.writeByte (9 , ' :' );
770
- // Write the new firmware config to eeprom
771
- hw_writeConfigBlock ((void *)&fc, (void *)EEPROM_FIRMWARE_TYPE_ADDRESS, sizeof (NodeFirmwareConfig));
772
- hw_reboot ();
773
- } else {
774
- debug (PSTR (" fw checksum fail\n " ));
749
+ if (fwUpdateOngoing) {
750
+ // Save block to flash
751
+ debug (PSTR (" fw block %d\n " ), fwBlock);
752
+ // extract FW block
753
+ ReplyFWBlock *firmwareResponse = (ReplyFWBlock *)msg.data ;
754
+ // write to flash
755
+ flash.writeBytes ( ((fwBlock - 1 ) * FIRMWARE_BLOCK_SIZE) + FIRMWARE_START_OFFSET, firmwareResponse->data , FIRMWARE_BLOCK_SIZE);
756
+ // wait until flash written
757
+ while ( flash.busy () );
758
+ fwBlock--;
759
+ if (!fwBlock) {
760
+ // We're finished! Do a checksum and reboot.
775
761
fwUpdateOngoing = false ;
776
- }
762
+ if (isValidFirmware ()) {
763
+ debug (PSTR (" fw checksum ok\n " ));
764
+ // All seems ok, write size and signature to flash (DualOptiboot will pick this up and flash it)
765
+ uint16_t fwsize = FIRMWARE_BLOCK_SIZE * fc.blocks ;
766
+ uint8_t OTAbuffer[10 ] = {' F' ,' L' ,' X' ,' I' ,' M' ,' G' ,' :' ,(fwsize >> 8 ),fwsize,' :' };
767
+ flash.writeBytes (0 , OTAbuffer, 10 );
768
+ // Write the new firmware config to eeprom
769
+ hw_writeConfigBlock ((void *)&fc, (void *)EEPROM_FIRMWARE_TYPE_ADDRESS, sizeof (NodeFirmwareConfig));
770
+ hw_reboot ();
771
+ } else {
772
+ debug (PSTR (" fw checksum fail\n " ));
773
+ }
774
+ }
775
+ // reset flags
776
+ fwRetry = MY_OTA_RETRY+1 ;
777
+ fwLastRequestTime = 0 ;
778
+ } else {
779
+ debug (PSTR (" No fw update ongoing\n " ));
777
780
}
778
- // reset flags
779
- fwRetry = MY_OTA_RETRY+1 ;
780
- fwLastRequestTime = 0 ;
781
781
return false ;
782
782
}
783
783
0 commit comments