]> git.tnoah.ca Git - lora-radio.git/commitdiff
Added firmware hash readout
authorMark Qvist <mark@unsigned.io>
Tue, 1 Nov 2022 21:21:07 +0000 (22:21 +0100)
committerMark Qvist <mark@unsigned.io>
Tue, 1 Nov 2022 21:21:07 +0000 (22:21 +0100)
Device.h
Framing.h
Power.h
RNode_Firmware.ino
Utilities.h

index 612e96453e7a85fa05b61c2d916513db40e1b904..f62ffc8876f5865f7a1de9277245b6b66b38798e 100644 (file)
--- a/Device.h
+++ b/Device.h
@@ -76,7 +76,6 @@ void device_load_signature() {
 }
 
 void device_load_firmware_hash() {
-  Serial.println("Loading hash from EEPROM");
   for (uint8_t i = 0; i < DEV_HASH_LEN; i++) {
     dev_firmware_hash_target[i] = EEPROM.read(dev_fwhash_addr(i));
   }
index b8a8a1dcefa5d564d5ef7896b160abe79b96e048..649bb1fa3a0e17f0229439f7a2ef01bcb708be6f 100644 (file)
--- a/Framing.h
+++ b/Framing.h
@@ -46,6 +46,7 @@
        #define CMD_DEV_HASH    0x56
        #define CMD_DEV_SIG     0x57
        #define CMD_FW_HASH     0x58
+       #define CMD_HASHES      0x60
        #define CMD_UNLOCK_ROM  0x59
        #define ROM_UNLOCK_BYTE 0xF8
        #define CMD_RESET       0x55
diff --git a/Power.h b/Power.h
index 7aa24bca98be95cb636a92c4038272b016415c9b..0677b476de05ee69cc200d52c0546cc4a543ad8c 100644 (file)
--- a/Power.h
+++ b/Power.h
@@ -45,7 +45,6 @@ void measure_battery() {
     battery_voltage         = PMU.getBattVoltage()/1000.0;
     battery_percent         = PMU.getBattPercentage()*1.0;
     battery_installed       = PMU.isBatteryConnect();
-    // auxillary_temperature   = PMU.getTemp();
     external_power          = PMU.isVBUSPlug();
     float ext_voltage       = PMU.getVbusVoltage()/1000.0;
     float ext_current       = PMU.getVbusCurrent();
index f608859d4a68b8ff595a16a194c625c4af5d3318..0a441ba4aca9e12405df61a77deaeb4657c048fe 100644 (file)
@@ -697,6 +697,18 @@ void serialCallback(uint8_t sbyte) {
             device_save_signature();
           }
       #endif
+    } else if (command == CMD_HASHES) {
+      #if MCU_VARIANT == MCU_ESP32
+        if (sbyte == 0x01) {
+          kiss_indicate_target_fw_hash();
+        } else if (sbyte == 0x02) {
+          kiss_indicate_fw_hash();
+        } else if (sbyte == 0x03) {
+          kiss_indicate_bootloader_hash();
+        } else if (sbyte == 0x04) {
+          kiss_indicate_partition_table_hash();
+        }
+      #endif
     } else if (command == CMD_FW_HASH) {
       #if MCU_VARIANT == MCU_ESP32
         if (sbyte == FESC) {
index 3b10b779f8f7e050cf658ca82c64a7c210e49b3d..49f89a1b995aef70f12372de54983a1d22894ac5 100644 (file)
@@ -43,7 +43,7 @@ uint8_t boot_vector = 0x00;
        // TODO: Get ESP32 boot flags
 #endif
 
-#if BOARD_MODEL == BOARD_RNODE_NG_20
+#if BOARD_MODEL == BOARD_RNODE_NG_20 || BOARD_RNODE_NG_21
        #include <Adafruit_NeoPixel.h>
        #define NP_PIN 4
        #define NUMPIXELS 1
@@ -635,6 +635,46 @@ void kiss_indicate_fbstate() {
          }
          serial_write(FEND);
        }
+
+       void kiss_indicate_target_fw_hash() {
+         serial_write(FEND);
+         serial_write(CMD_DEV_HASH);
+         for (int i = 0; i < DEV_HASH_LEN; i++) {
+           uint8_t byte = dev_firmware_hash_target[i];
+                       escaped_serial_write(byte);
+         }
+         serial_write(FEND);
+       }
+
+       void kiss_indicate_fw_hash() {
+         serial_write(FEND);
+         serial_write(CMD_DEV_HASH);
+         for (int i = 0; i < DEV_HASH_LEN; i++) {
+           uint8_t byte = dev_firmware_hash[i];
+                       escaped_serial_write(byte);
+         }
+         serial_write(FEND);
+       }
+
+       void kiss_indicate_bootloader_hash() {
+         serial_write(FEND);
+         serial_write(CMD_DEV_HASH);
+         for (int i = 0; i < DEV_HASH_LEN; i++) {
+           uint8_t byte = dev_bootloader_hash[i];
+                       escaped_serial_write(byte);
+         }
+         serial_write(FEND);
+       }
+
+       void kiss_indicate_partition_table_hash() {
+         serial_write(FEND);
+         serial_write(CMD_DEV_HASH);
+         for (int i = 0; i < DEV_HASH_LEN; i++) {
+           uint8_t byte = dev_partition_table_hash[i];
+                       escaped_serial_write(byte);
+         }
+         serial_write(FEND);
+       }
 #endif
 
 void kiss_indicate_fb() {