Add upper boundary checks for tilt sensitivity settings
The tilt sensitivity values were passed to the NVS module without the boundaries being checked, even though the maximum percent value is 100. This commit fixes this issue. Also test cases are added to cover the upper boundary checks for the tilt sensitivity settings. Fixes #1086
This commit is contained in:
@@ -39,6 +39,7 @@ static const char *TAG = "RELAY_CHN_TILT";
|
||||
* 100 / (RELAY_CHN_TILT_RUN_MAX_MS - RELAY_CHN_TILT_RUN_MIN_MS) )
|
||||
/**@}*/
|
||||
|
||||
#define ADJUST_TILT_SENS_BOUNDARIES(sens) if (sens > 100) sens = 100
|
||||
|
||||
/// @brief Tilt steps.
|
||||
typedef enum {
|
||||
@@ -316,6 +317,7 @@ static void relay_chn_tilt_compute_set_sensitivity(relay_chn_tilt_ctl_t *tilt_ct
|
||||
void relay_chn_tilt_set_sensitivity(uint8_t chn_id, uint8_t sensitivity)
|
||||
{
|
||||
if (relay_chn_is_channel_id_valid(chn_id)) {
|
||||
ADJUST_TILT_SENS_BOUNDARIES(sensitivity);
|
||||
relay_chn_tilt_compute_set_sensitivity(&tilt_ctls[chn_id], sensitivity);
|
||||
|
||||
#if CONFIG_RELAY_CHN_ENABLE_NVS
|
||||
@@ -334,6 +336,7 @@ esp_err_t relay_chn_tilt_set_sensitivity_all(uint8_t *sensitivities)
|
||||
ESP_LOGW(TAG, "set_sensitivity_all: Run limits have been set until channel %d since sensitivities[%d] is NULL", i, i);
|
||||
break;
|
||||
}
|
||||
ADJUST_TILT_SENS_BOUNDARIES(*src_sensitivity);
|
||||
relay_chn_tilt_compute_set_sensitivity(&tilt_ctls[i], *src_sensitivity);
|
||||
#if CONFIG_RELAY_CHN_ENABLE_NVS
|
||||
relay_chn_nvs_set_tilt_sensitivity(i, *src_sensitivity);
|
||||
@@ -345,6 +348,7 @@ esp_err_t relay_chn_tilt_set_sensitivity_all(uint8_t *sensitivities)
|
||||
void relay_chn_tilt_set_sensitivity_all_with(uint8_t sensitivity)
|
||||
{
|
||||
for (int i = 0; i < CONFIG_RELAY_CHN_COUNT; i++) {
|
||||
ADJUST_TILT_SENS_BOUNDARIES(sensitivity);
|
||||
relay_chn_tilt_compute_set_sensitivity(&tilt_ctls[i], sensitivity);
|
||||
#if CONFIG_RELAY_CHN_ENABLE_NVS
|
||||
relay_chn_nvs_set_tilt_sensitivity(i, sensitivity);
|
||||
@@ -377,6 +381,7 @@ esp_err_t relay_chn_tilt_get_sensitivity_all(uint8_t *sensitivities)
|
||||
|
||||
void relay_chn_tilt_set_sensitivity(uint8_t sensitivity)
|
||||
{
|
||||
ADJUST_TILT_SENS_BOUNDARIES(sensitivity);
|
||||
relay_chn_tilt_compute_set_sensitivity(&tilt_ctl, sensitivity);
|
||||
|
||||
#if CONFIG_RELAY_CHN_ENABLE_NVS
|
||||
|
||||
Reference in New Issue
Block a user