}
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));
}
#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
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();
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) {
// 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
}
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() {