From add3fb13ef0a3597b2c266cbe6a01953c13e3294 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Tue, 12 Jun 2018 12:41:38 +0200 Subject: [PATCH] Fix module id returned to be 0 when saved to eeprom (#170) Also fix that stm32 id is always either 0 or stm32 id --- Multiprotocol/Multiprotocol.ino | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Multiprotocol/Multiprotocol.ino b/Multiprotocol/Multiprotocol.ino index d01379f..21b7750 100644 --- a/Multiprotocol/Multiprotocol.ino +++ b/Multiprotocol/Multiprotocol.ino @@ -1565,20 +1565,25 @@ static uint32_t random_id(uint16_t address, uint8_t create_new) id|=eeprom_read_byte((EE_ADDR)address+i-1); } if(id!=0x2AD141A7) //ID with seed=0 - return id; + { + debugln("Read ID from EEPROM"); + return id; + } } // Generate a random ID #if defined STM32_BOARD #define STM32_UUID ((uint32_t *)0x1FFFF7E8) - if (!create_new) + if (!create_new) { id = STM32_UUID[0] ^ STM32_UUID[1] ^ STM32_UUID[2]; - #else - id = random(0xfefefefe) + ((uint32_t)random(0xfefefefe) << 16); + debugln("Generated ID from STM32 UUID"); + + } else #endif + id = random(0xfefefefe) + ((uint32_t)random(0xfefefefe) << 16); + for(uint8_t i=0;i<4;i++) { - eeprom_write_byte((EE_ADDR)address+i,id); - id>>=8; + eeprom_write_byte((EE_ADDR)address+i,id >> (i*8)); } eeprom_write_byte((EE_ADDR)(address+10),0xf0);//write bind flag in eeprom. return id;