mirror of
https://github.com/markqvist/RNode_Firmware.git
synced 2025-05-05 08:05:18 -04:00
Add firmware hash calculation to RAK4631 + more
This commit is contained in:
parent
7466b675b0
commit
94828d825b
7 changed files with 199 additions and 27 deletions
39
Utilities.h
39
Utilities.h
|
@ -227,7 +227,7 @@ uint8_t boot_vector = 0x00;
|
|||
void led_tx_off() { digitalWrite(pin_led_tx, LOW); }
|
||||
#endif
|
||||
#elif MCU_VARIANT == MCU_NRF52
|
||||
#if BOARD_MODEL == BOARD_RAK4630
|
||||
#if BOARD_MODEL == BOARD_RAK4631
|
||||
void led_rx_on() { digitalWrite(pin_led_rx, HIGH); }
|
||||
void led_rx_off() { digitalWrite(pin_led_rx, LOW); }
|
||||
void led_tx_on() { digitalWrite(pin_led_tx, HIGH); }
|
||||
|
@ -244,7 +244,7 @@ void hard_reset(void) {
|
|||
#elif MCU_VARIANT == MCU_ESP32
|
||||
ESP.restart();
|
||||
#elif MCU_VARIANT == MCU_NRF52
|
||||
// currently not possible to restart on this platform
|
||||
NVIC_SystemReset();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1218,6 +1218,15 @@ void kiss_dump_eeprom() {
|
|||
serial_write(FEND);
|
||||
}
|
||||
|
||||
#if !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
|
||||
void eeprom_flush() {
|
||||
// sync file contents to flash
|
||||
file.close();
|
||||
file.open(EEPROM_FILE, FILE_O_WRITE);
|
||||
written_bytes = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
void eeprom_update(int mapped_addr, uint8_t byte) {
|
||||
#if MCU_VARIANT == MCU_1284P || MCU_VARIANT == MCU_2560
|
||||
EEPROM.update(mapped_addr, byte);
|
||||
|
@ -1227,6 +1236,8 @@ void eeprom_update(int mapped_addr, uint8_t byte) {
|
|||
EEPROM.commit();
|
||||
}
|
||||
#elif !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
|
||||
// todo: clean up this implementation, writing one byte and syncing
|
||||
// each time is really slow, but this is also suboptimal
|
||||
uint8_t read_byte;
|
||||
void* read_byte_ptr = &read_byte;
|
||||
file.seek(mapped_addr);
|
||||
|
@ -1236,8 +1247,15 @@ void eeprom_update(int mapped_addr, uint8_t byte) {
|
|||
file.write(byte);
|
||||
}
|
||||
written_bytes++;
|
||||
|
||||
if ((mapped_addr - eeprom_addr(0)) == ADDR_INFO_LOCK) {
|
||||
#if !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
|
||||
// have to do a flush because we're only writing 1 byte and it syncs after 4
|
||||
eeprom_flush();
|
||||
#endif
|
||||
}
|
||||
|
||||
if (written_bytes >= 8) {
|
||||
if (written_bytes >= 4) {
|
||||
file.close();
|
||||
file.open(EEPROM_FILE, FILE_O_WRITE);
|
||||
written_bytes = 0;
|
||||
|
@ -1245,15 +1263,6 @@ void eeprom_update(int mapped_addr, uint8_t byte) {
|
|||
#endif
|
||||
}
|
||||
|
||||
#if !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
|
||||
void eeprom_flush() {
|
||||
// sync file contents to flash
|
||||
file.close();
|
||||
file.open(EEPROM_FILE, FILE_O_WRITE);
|
||||
written_bytes = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
void eeprom_write(uint8_t addr, uint8_t byte) {
|
||||
if (!eeprom_info_locked() && addr >= 0 && addr < EEPROM_RESERVED) {
|
||||
eeprom_update(eeprom_addr(addr), byte);
|
||||
|
@ -1293,7 +1302,7 @@ bool eeprom_product_valid() {
|
|||
#elif PLATFORM == PLATFORM_ESP32
|
||||
if (rval == PRODUCT_RNODE || rval == BOARD_RNODE_NG_20 || rval == BOARD_RNODE_NG_21 || rval == PRODUCT_HMBRW || rval == PRODUCT_TBEAM || rval == PRODUCT_T32_10 || rval == PRODUCT_T32_20 || rval == PRODUCT_T32_21 || rval == PRODUCT_H32_V2 || rval == PRODUCT_H32_V3) {
|
||||
#elif PLATFORM == PLATFORM_NRF52
|
||||
if (rval == PRODUCT_HMBRW) {
|
||||
if (rval == PRODUCT_RAK4631 || rval == PRODUCT_HMBRW) {
|
||||
#else
|
||||
if (false) {
|
||||
#endif
|
||||
|
@ -1331,8 +1340,8 @@ bool eeprom_model_valid() {
|
|||
if (model == MODEL_C4 || model == MODEL_C9) {
|
||||
#elif BOARD_MODEL == BOARD_HELTEC32_V3
|
||||
if (model == MODEL_C5 || model == MODEL_CA) {
|
||||
#elif BOARD_MODEL == BOARD_RAK4630
|
||||
if (model == MODEL_FF) {
|
||||
#elif BOARD_MODEL == BOARD_RAK4631
|
||||
if (model == MODEL_11 || model == MODEL_12) {
|
||||
#elif BOARD_MODEL == BOARD_HUZZAH32
|
||||
if (model == MODEL_FF) {
|
||||
#elif BOARD_MODEL == BOARD_GENERIC_ESP32
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue