Deleted redundant switch case (MODBUS write single and multiple register)
This commit is contained in:
parent
e2f8ab3405
commit
692cad0bc8
@ -291,27 +291,29 @@ int main(void)
|
|||||||
/* TODO: Process data and light a desired color of LED */
|
/* TODO: Process data and light a desired color of LED */
|
||||||
/* TODO: Add hystheresis */
|
/* TODO: Add hystheresis */
|
||||||
|
|
||||||
if (CO2 <= sensor_config.led_co2_alert_limit1)
|
if (sensor_config.led_on) {
|
||||||
{
|
if (CO2 <= sensor_config.led_co2_alert_limit1) {
|
||||||
/* CO2 is OK -> GREEN */
|
/* CO2 is OK -> GREEN */
|
||||||
|
LL_GPIO_SetOutputPin(LED_R_GPIO_Port, LED_R_Pin);
|
||||||
|
LL_GPIO_ResetOutputPin(LED_G_GPIO_Port, LED_G_Pin);
|
||||||
|
LL_GPIO_SetOutputPin(LED_B_GPIO_Port, LED_B_Pin);
|
||||||
|
|
||||||
|
} else if ((sensor_config.led_co2_alert_limit1 < CO2) && (CO2 <= sensor_config.led_co2_alert_limit2)) {
|
||||||
|
/* CO2 is NOT OK -> YELLOW */
|
||||||
|
LL_GPIO_ResetOutputPin(LED_R_GPIO_Port, LED_R_Pin);
|
||||||
|
LL_GPIO_ResetOutputPin(LED_G_GPIO_Port, LED_G_Pin);
|
||||||
|
LL_GPIO_SetOutputPin(LED_B_GPIO_Port, LED_B_Pin);
|
||||||
|
|
||||||
|
} else if (sensor_config.led_co2_alert_limit2 < CO2) {
|
||||||
|
/* CO2 is CRITICAL -> RED */
|
||||||
|
LL_GPIO_ResetOutputPin(LED_R_GPIO_Port, LED_R_Pin);
|
||||||
|
LL_GPIO_SetOutputPin(LED_G_GPIO_Port, LED_G_Pin);
|
||||||
|
LL_GPIO_SetOutputPin(LED_B_GPIO_Port, LED_B_Pin);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
LL_GPIO_SetOutputPin(LED_R_GPIO_Port, LED_R_Pin);
|
LL_GPIO_SetOutputPin(LED_R_GPIO_Port, LED_R_Pin);
|
||||||
LL_GPIO_ResetOutputPin(LED_G_GPIO_Port, LED_G_Pin);
|
|
||||||
LL_GPIO_SetOutputPin(LED_B_GPIO_Port, LED_B_Pin);
|
|
||||||
|
|
||||||
} else if ((sensor_config.led_co2_alert_limit1 < CO2) && (CO2 <= sensor_config.led_co2_alert_limit2))
|
|
||||||
{
|
|
||||||
/* CO2 is NOT OK -> YELLOW */
|
|
||||||
LL_GPIO_ResetOutputPin(LED_R_GPIO_Port, LED_R_Pin);
|
|
||||||
LL_GPIO_ResetOutputPin(LED_G_GPIO_Port, LED_G_Pin);
|
|
||||||
LL_GPIO_SetOutputPin(LED_B_GPIO_Port, LED_B_Pin);
|
|
||||||
|
|
||||||
} else if (sensor_config.led_co2_alert_limit2 < CO2)
|
|
||||||
{
|
|
||||||
/* CO2 is CRITICAL -> RED */
|
|
||||||
LL_GPIO_ResetOutputPin(LED_R_GPIO_Port, LED_R_Pin);
|
|
||||||
LL_GPIO_SetOutputPin(LED_G_GPIO_Port, LED_G_Pin);
|
LL_GPIO_SetOutputPin(LED_G_GPIO_Port, LED_G_Pin);
|
||||||
LL_GPIO_SetOutputPin(LED_B_GPIO_Port, LED_B_Pin);
|
LL_GPIO_SetOutputPin(LED_B_GPIO_Port, LED_B_Pin);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reset the TIM21 Elapsed Period Flag */
|
/* Reset the TIM21 Elapsed Period Flag */
|
||||||
@ -685,73 +687,37 @@ int8_t modbus_slave_callback(modbus_transaction_t *transaction)
|
|||||||
}
|
}
|
||||||
return MODBUS_OK;
|
return MODBUS_OK;
|
||||||
case MODBUS_WRITE_SINGLE_REGISTER:
|
case MODBUS_WRITE_SINGLE_REGISTER:
|
||||||
switch (register_number)
|
transaction->register_count = 1;
|
||||||
{
|
|
||||||
case REGISTER_NUM_LED_ON:
|
|
||||||
sensor_config.led_on = (uint8_t) transaction->holding_registers[0];
|
|
||||||
break;
|
|
||||||
case REGISTER_NUM_LED_BRIGHTNESS:
|
|
||||||
sensor_config.led_brightness = (uint16_t) transaction->holding_registers[0];
|
|
||||||
break;
|
|
||||||
case REGISTER_NUM_LED_SMOOTH:
|
|
||||||
sensor_config.led_smooth = (uint16_t) transaction->holding_registers[0];
|
|
||||||
break;
|
|
||||||
case REGISTER_NUM_CO2_ALERT_LIMIT1:
|
|
||||||
sensor_config.led_co2_alert_limit1 = (uint16_t) transaction->holding_registers[0];
|
|
||||||
break;
|
|
||||||
case REGISTER_NUM_CO2_ALERT_LIMIT2:
|
|
||||||
sensor_config.led_co2_alert_limit2 = (uint16_t) transaction->holding_registers[0];
|
|
||||||
break;
|
|
||||||
case REGISTER_NUM_SCD4x_T_OFFSET:
|
|
||||||
sensor_config.scd4x_t_offset = (int16_t) transaction->holding_registers[0];
|
|
||||||
break;
|
|
||||||
case REGISTER_NUM_MODBUS_ADDR:
|
|
||||||
sensor_config.modbus_addr = (uint16_t) transaction->holding_registers[0];
|
|
||||||
break;
|
|
||||||
case REGISTER_NUM_BAUDRATE:
|
|
||||||
if (transaction->holding_registers[0] < config_baudrates_length)
|
|
||||||
{
|
|
||||||
sensor_config.baudrate_index = (uint16_t) (transaction->holding_registers[0]);
|
|
||||||
baudrate_changed = 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
/* TODO: Set modbus address on change */
|
|
||||||
/* TODO: Set UART baudrate on change */
|
|
||||||
sensor_config_pending_write = 1;
|
|
||||||
return MODBUS_OK;
|
|
||||||
case MODBUS_WRITE_MULTIPLE_REGISTERS:
|
case MODBUS_WRITE_MULTIPLE_REGISTERS:
|
||||||
for (int i = 0; i < transaction->register_count; i++, register_number++)
|
for (int i = 0; i < transaction->register_count; i++, register_number++)
|
||||||
{
|
{
|
||||||
switch (register_number)
|
switch (register_number)
|
||||||
{
|
{
|
||||||
case REGISTER_NUM_LED_ON:
|
case REGISTER_NUM_LED_ON:
|
||||||
sensor_config.led_on = (uint8_t) transaction->holding_registers[i];
|
sensor_config.led_on = (uint8_t) transaction->holding_registers[0];
|
||||||
break;
|
break;
|
||||||
case REGISTER_NUM_LED_BRIGHTNESS:
|
case REGISTER_NUM_LED_BRIGHTNESS:
|
||||||
sensor_config.led_brightness = (uint16_t) transaction->holding_registers[i];
|
sensor_config.led_brightness = (uint16_t) transaction->holding_registers[0];
|
||||||
break;
|
break;
|
||||||
case REGISTER_NUM_LED_SMOOTH:
|
case REGISTER_NUM_LED_SMOOTH:
|
||||||
sensor_config.led_smooth = (uint16_t) transaction->holding_registers[i];
|
sensor_config.led_smooth = (uint16_t) transaction->holding_registers[0];
|
||||||
break;
|
break;
|
||||||
case REGISTER_NUM_CO2_ALERT_LIMIT1:
|
case REGISTER_NUM_CO2_ALERT_LIMIT1:
|
||||||
sensor_config.led_co2_alert_limit1 = (uint16_t) transaction->holding_registers[i];
|
sensor_config.led_co2_alert_limit1 = (uint16_t) transaction->holding_registers[0];
|
||||||
break;
|
break;
|
||||||
case REGISTER_NUM_CO2_ALERT_LIMIT2:
|
case REGISTER_NUM_CO2_ALERT_LIMIT2:
|
||||||
sensor_config.led_co2_alert_limit2 = (uint16_t) transaction->holding_registers[i];
|
sensor_config.led_co2_alert_limit2 = (uint16_t) transaction->holding_registers[0];
|
||||||
break;
|
break;
|
||||||
case REGISTER_NUM_SCD4x_T_OFFSET:
|
case REGISTER_NUM_SCD4x_T_OFFSET:
|
||||||
sensor_config.scd4x_t_offset = (int16_t) transaction->holding_registers[i];
|
sensor_config.scd4x_t_offset = (int16_t) transaction->holding_registers[0];
|
||||||
break;
|
break;
|
||||||
case REGISTER_NUM_MODBUS_ADDR:
|
case REGISTER_NUM_MODBUS_ADDR:
|
||||||
sensor_config.modbus_addr = (uint16_t) transaction->holding_registers[i];
|
sensor_config.modbus_addr = (uint16_t) transaction->holding_registers[0];
|
||||||
break;
|
break;
|
||||||
case REGISTER_NUM_BAUDRATE:
|
case REGISTER_NUM_BAUDRATE:
|
||||||
if (transaction->holding_registers[0] < config_baudrates_length)
|
if (transaction->holding_registers[0] < config_baudrates_length)
|
||||||
{
|
{
|
||||||
sensor_config.baudrate_index = (uint16_t) (transaction->holding_registers[i]);
|
sensor_config.baudrate_index = (uint16_t) (transaction->holding_registers[0]);
|
||||||
baudrate_changed = 1;
|
baudrate_changed = 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -761,7 +727,7 @@ int8_t modbus_slave_callback(modbus_transaction_t *transaction)
|
|||||||
}
|
}
|
||||||
/* TODO: Set modbus address on change */
|
/* TODO: Set modbus address on change */
|
||||||
/* TODO: Set UART baudrate on change */
|
/* TODO: Set UART baudrate on change */
|
||||||
config_write(&sensor_config);
|
sensor_config_pending_write = 1;
|
||||||
return MODBUS_OK;
|
return MODBUS_OK;
|
||||||
default:
|
default:
|
||||||
return MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED;
|
return MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED;
|
||||||
|
Loading…
Reference in New Issue
Block a user