From daaab079120a5d15d265fc16105a38312ec3ceaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20=C5=BDaitl=C3=ADk?= Date: Sat, 2 Oct 2021 12:33:57 +0200 Subject: [PATCH] Added LED brightnes placeholder. Set the default value when the timer settings will be known. --- README.md | 11 ++++++----- fw/Core/Inc/config.h | 6 +++++- fw/Core/Src/config.c | 7 +++++++ fw/Core/Src/main.c | 12 +++++++----- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index e92b855..b5fbb3c 100644 --- a/README.md +++ b/README.md @@ -17,11 +17,12 @@ |Value|Register| |---|---| |LED ON | 40001| -|LED SMOOTH | 40002| -|CO2 ALERT LIMIT1 | 40003| -|CO2 ALERT LIMIT2 | 40004| -|SCD4x T OFFSET | 40005| -|MODBUS ADDR | 40006| +|LED BRIGHTNESS | 40002| +|LED SMOOTH | 40003| +|CO2 ALERT LIMIT1 | 40004| +|CO2 ALERT LIMIT2 | 40005| +|SCD4x T OFFSET | 40006| +|MODBUS ADDR | 40007| ### Device Information Registers diff --git a/fw/Core/Inc/config.h b/fw/Core/Inc/config.h index f5a0df1..8040bd7 100644 --- a/fw/Core/Inc/config.h +++ b/fw/Core/Inc/config.h @@ -49,6 +49,7 @@ config_read(&config); * Device configuration data can be accessed using config_t struct. */ #define CONFIG_DEFAULT_LED_ON 1 +#define CONFIG_DEFAULT_LED_BRIGHTNESS 100 /* TODO: set according to the timers when this will be implemented */ #define CONFIG_DEFAULT_LED_ALERT1_LIMIT 1500 #define CONFIG_DEFAULT_LED_ALERT2_LIMIT 3000 #define CONFIG_DEFAULT_LED_SMOOTH 0 @@ -56,6 +57,7 @@ config_read(&config); #define MODBUS_ADDR_LENGTH 2 #define CONFIG_LED_ON_LENGTH 2 +#define CONFIG_LED_BRIGHTNESS_LENGTH 2 #define CONFIG_LED_SMOOTH_LENGTH 2 #define CONFIG_LED_ALERT1_LENGTH 2 #define CONFIG_LED_ALERT2_LENGTH 2 @@ -74,7 +76,8 @@ config_read(&config); #define CONFIG_EEPROM_ADDR_MODBUS_ADDR (EEPROM_ADDR_START) #define CONFIG_EEPROM_ADDR_LED_ON (CONFIG_EEPROM_ADDR_MODBUS_ADDR + MODBUS_ADDR_LENGTH) -#define CONFIG_EEPROM_ADDR_LED_SMOOTH (CONFIG_EEPROM_ADDR_LED_ON + CONFIG_LED_ON_LENGTH) +#define CONFIG_EEPROM_ADDR_LED_BRIGHTNESS (CONFIG_EEPROM_ADDR_LED_ON + CONFIG_LED_ON_LENGTH) +#define CONFIG_EEPROM_ADDR_LED_SMOOTH (CONFIG_EEPROM_ADDR_LED_BRIGHTNESS + CONFIG_LED_BRIGHTNESS_LENGTH) #define CONFIG_EEPROM_ADDR_LED_ALERT1 (CONFIG_EEPROM_ADDR_LED_SMOOTH + CONFIG_LED_SMOOTH_LENGTH) #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) @@ -105,6 +108,7 @@ typedef struct { /* LED CONFIG */ uint8_t led_on; + uint16_t led_brightness; uint8_t led_smooth; uint16_t led_co2_alert_limit1; uint16_t led_co2_alert_limit2; diff --git a/fw/Core/Src/config.c b/fw/Core/Src/config.c index cc6f01c..8236b0f 100644 --- a/fw/Core/Src/config.c +++ b/fw/Core/Src/config.c @@ -22,6 +22,7 @@ int8_t config_read(config_t *config) { config->modbus_addr = *(uint16_t *) (CONFIG_EEPROM_ADDR_MODBUS_ADDR); config->led_on = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_ON); + config->led_brightness = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_BRIGHTNESS); config->led_smooth = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_SMOOTH); config->led_co2_alert_limit1 = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_ALERT1); config->led_co2_alert_limit2 = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_ALERT2); @@ -59,6 +60,12 @@ int8_t config_write(config_t *config) return EEPROM_WRITE_ERROR; } + /* Write LED BRIGHTNESS */ + if (eeprom_program_word(CONFIG_EEPROM_ADDR_LED_BRIGHTNESS, config->led_brightness) != EEPROM_OK) + { + return EEPROM_WRITE_ERROR; + } + /* Write LED SMOOTH */ if (eeprom_program_byte(CONFIG_EEPROM_ADDR_LED_SMOOTH, config->led_smooth) != EEPROM_OK) { diff --git a/fw/Core/Src/main.c b/fw/Core/Src/main.c index 2566675..09577ac 100644 --- a/fw/Core/Src/main.c +++ b/fw/Core/Src/main.c @@ -81,11 +81,12 @@ enum { enum { REGISTER_NUM_LED_ON = 40001, - REGISTER_NUM_LED_SMOOTH = 40002, - REGISTER_NUM_CO2_ALERT_LIMIT1 = 40003, - REGISTER_NUM_CO2_ALERT_LIMIT2 = 40004, - REGISTER_NUM_SCD4x_T_OFFSET = 40005, - REGISTER_NUM_MODBUS_ADDR = 40006, + REGISTER_NUM_LED_BRIGHTNESS = 40002, + REGISTER_NUM_LED_SMOOTH = 40003, + REGISTER_NUM_CO2_ALERT_LIMIT1 = 40004, + REGISTER_NUM_CO2_ALERT_LIMIT2 = 40005, + REGISTER_NUM_SCD4x_T_OFFSET = 40006, + REGISTER_NUM_MODBUS_ADDR = 40007, } config_registers_numbers; enum { @@ -286,6 +287,7 @@ int main(void) sensor_config.led_co2_alert_limit1 = CONFIG_DEFAULT_LED_ALERT1_LIMIT; sensor_config.led_co2_alert_limit2 = CONFIG_DEFAULT_LED_ALERT2_LIMIT; sensor_config.led_on = CONFIG_DEFAULT_LED_ON; + sensor_config.led_brightness = CONFIG_DEFAULT_LED_BRIGHTNESS; sensor_config.led_smooth = CONFIG_DEFAULT_LED_SMOOTH; sensor_config.scd4x_t_offset = CONFIG_DEFAULT_SCD4x_T_OFFSET; }