Updated config to hold serial number. NOT BACKWARDS COMPATIBLE.
This commit is contained in:
parent
0f1215b350
commit
f7f38a3434
@ -56,6 +56,8 @@ config_read(&config);
|
||||
#define CONFIG_DEFAULT_SCD4x_T_OFFSET 0
|
||||
#define CONFIG_DEFAULT_BAUDRATE_INDEX 0
|
||||
|
||||
#define CONFIG_SERIAL_NUMBER_1_LENGTH 2
|
||||
#define CONFIG_SERIAL_NUMBER_2_LENGTH 2
|
||||
#define CONFIG_MODBUS_ADDR_LENGTH 2
|
||||
#define CONFIG_BAUDRATE_INDEX_LENGTH 2
|
||||
#define CONFIG_LED_ON_LENGTH 2
|
||||
@ -76,7 +78,9 @@ config_read(&config);
|
||||
#define EEPROM_ADDR_START ((uint32_t)0x08080000)
|
||||
#define EEPROM_ADDR_END ((uint32_t)0x080803FF)
|
||||
|
||||
#define CONFIG_EEPROM_ADDR_MODBUS_ADDR EEPROM_ADDR_START
|
||||
#define CONFIG_EEPROM_ADDR_SERIAL_NUMBER_1 (EEPROM_ADDR_START)
|
||||
#define CONFIG_EEPROM_ADDR_SERIAL_NUMBER_2 (CONFIG_EEPROM_ADDR_SERIAL_NUMBER_1 + CONFIG_SERIAL_NUMBER_1_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_MODBUS_ADDR (CONFIG_EEPROM_ADDR_SERIAL_NUMBER_2 + CONFIG_SERIAL_NUMBER_2_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_BAUDRATE_INDEX (CONFIG_EEPROM_ADDR_MODBUS_ADDR + CONFIG_MODBUS_ADDR_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_LED_ON (CONFIG_EEPROM_ADDR_BAUDRATE_INDEX + CONFIG_BAUDRATE_INDEX_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_LED_BRIGHTNESS (CONFIG_EEPROM_ADDR_LED_ON + CONFIG_LED_ON_LENGTH)
|
||||
@ -85,6 +89,7 @@ config_read(&config);
|
||||
#define CONFIG_EEPROM_ADDR_LED_ALERT2 (CONFIG_EEPROM_ADDR_LED_ALERT1 + CONFIG_LED_ALERT1_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_SCD4x_T_OFFSET (CONFIG_EEPROM_ADDR_LED_ALERT2 + CONFIG_LED_ALERT2_LENGTH)
|
||||
|
||||
|
||||
#define CONFIG_EEPROM_ADDR_VENDOR_NAME (CONFIG_EEPROM_ADDR_SCD4x_T_OFFSET + CONFIG_SCD4x_T_OFFSET_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_PRODUCT_CODE (CONFIG_EEPROM_ADDR_VENDOR_NAME + VENDOR_NAME_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_PRODUCT_NAME (CONFIG_EEPROM_ADDR_PRODUCT_CODE + PRODUCT_CODE_LENGTH)
|
||||
@ -133,6 +138,10 @@ typedef struct
|
||||
/* MODBUS CONFIG */
|
||||
uint16_t modbus_addr;
|
||||
uint32_t baudrate_index;
|
||||
|
||||
/* SERIAL NUMBER */
|
||||
uint16_t serial_number_1;
|
||||
uint16_t serial_number_2;
|
||||
} config_t;
|
||||
|
||||
|
||||
|
@ -42,6 +42,8 @@ static int8_t eeprom_program_word(uint32_t addr, uint32_t ee_data);
|
||||
|
||||
int8_t config_read(config_t *config)
|
||||
{
|
||||
config->serial_number_1 = *(uint16_t *) (CONFIG_EEPROM_ADDR_SERIAL_NUMBER_1);
|
||||
config->serial_number_2 = *(uint16_t *) (CONFIG_EEPROM_ADDR_SERIAL_NUMBER_2);
|
||||
config->modbus_addr = *(uint16_t *) (CONFIG_EEPROM_ADDR_MODBUS_ADDR);
|
||||
config->baudrate_index = *(uint16_t *) (CONFIG_EEPROM_ADDR_BAUDRATE_INDEX);
|
||||
config->led_on = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_ON);
|
||||
@ -60,7 +62,9 @@ int8_t config_read(config_t *config)
|
||||
if ((config->modbus_addr == EEPROM_EMPTY_BYTE) ||
|
||||
(config->led_co2_alert_limit1 == EEPROM_EMPTY_BYTE) ||
|
||||
(config->led_co2_alert_limit2 == EEPROM_EMPTY_BYTE) ||
|
||||
(config->led_brightness == EEPROM_EMPTY_BYTE))
|
||||
(config->led_brightness == EEPROM_EMPTY_BYTE) ||
|
||||
(config->serial_number_1 == EEPROM_EMPTY_BYTE) ||
|
||||
(config->serial_number_2 == EEPROM_EMPTY_BYTE))
|
||||
{
|
||||
return CONFIG_ERROR;
|
||||
}
|
||||
@ -77,11 +81,24 @@ int8_t config_write(config_t *config)
|
||||
/* Reset the ERASE and DATA bits in the FLASH_PECR register to disable any residual erase */
|
||||
FLASH->PECR = FLASH->PECR & ~(FLASH_PECR_ERASE | FLASH_PECR_DATA);
|
||||
|
||||
/* Write SERIAL NUMBER 1 */
|
||||
if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_SERIAL_NUMBER_1, config->serial_number_1) != EEPROM_OK)
|
||||
{
|
||||
return EEPROM_WRITE_ERROR;
|
||||
}
|
||||
|
||||
/* Write SERIAL NUMBER 2 */
|
||||
if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_SERIAL_NUMBER_2, config->serial_number_2) != EEPROM_OK)
|
||||
{
|
||||
return EEPROM_WRITE_ERROR;
|
||||
}
|
||||
|
||||
/* Write MODBUS ADDRESS */
|
||||
if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_MODBUS_ADDR, config->modbus_addr) != EEPROM_OK)
|
||||
{
|
||||
return EEPROM_WRITE_ERROR;
|
||||
}
|
||||
|
||||
/* Write BAUDRATE */
|
||||
if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_BAUDRATE_INDEX, config->baudrate_index) != EEPROM_OK)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user