Commit 47883197 authored by Dimitris Lampridis's avatar Dimitris Lampridis

sw: Added functions for disabling and removing all rules and alarms

parent df19eb9f
......@@ -1069,7 +1069,11 @@ enum wrtd_status wrtd_remove_all_rules(struct wrtd_dev *wrtd)
rule = &wrtd->rules[idx].rule;
if (rule->conf.enabled)
return wrtd_return_error(wrtd, WRTD_ERROR_RULE_ENABLED,
"rule is enabled");
"not all rules are disabled");
}
for (idx = 0; idx < wrtd->nbr_rules; idx++) {
rule = &wrtd->rules[idx].rule;
/* Clear it. */
memset(rule, 0, sizeof(struct wrtd_rule));
......@@ -1078,7 +1082,6 @@ enum wrtd_status wrtd_remove_all_rules(struct wrtd_dev *wrtd)
status = wrtd_write_rule(wrtd, idx);
WRTD_RETURN_IF_ERROR(status);
}
return WRTD_SUCCESS;
......@@ -1094,6 +1097,13 @@ extern enum wrtd_status wrtd_remove_all_alarms(struct wrtd_dev *wrtd)
status = wrtd_fill_alarms(wrtd);
WRTD_RETURN_IF_ERROR(status);
for (idx = 0; idx < wrtd->nbr_alarms; idx++) {
alarm = &wrtd->alarms[idx].alarm;
if (alarm-> enabled)
return wrtd_return_error(wrtd, WRTD_ERROR_ALARM_EXISTS,
"not all alarms are disabled");
}
for (idx = 0; idx < wrtd->nbr_alarms; idx++) {
/* Clear it. */
alarm = &wrtd->alarms[idx].alarm;
......@@ -1102,7 +1112,6 @@ extern enum wrtd_status wrtd_remove_all_alarms(struct wrtd_dev *wrtd)
/* Write-back. */
status = wrtd_write_alarm(wrtd, idx);
WRTD_RETURN_IF_ERROR(status);
}
return WRTD_SUCCESS;
......@@ -1112,22 +1121,24 @@ enum wrtd_status wrtd_disable_all_rules(struct wrtd_dev *wrtd)
{
unsigned idx;
enum wrtd_status status;
// struct wrtd_rule *rule;
struct wrtd_lib_rule *r;
int changed = 0;
status = wrtd_fill_rules(wrtd);
WRTD_RETURN_IF_ERROR(status);
for (idx = 0; idx < wrtd->nbr_rules; idx++) {
r = &wrtd->rules[idx];
if(!wrtd_id_null(r->rule.conf.id))
{
status = wrtd_set_attr_bool(wrtd, r->rule.conf.id , WRTD_ATTR_RULE_ENABLED, 0);
WRTD_RETURN_IF_ERROR(status);
if (r->rule.conf.enabled != 0) {
r->rule.conf.enabled = 0;
changed = 1;
}
}
if (changed) {
status = wrtd_reconfigure(wrtd);
WRTD_RETURN_IF_ERROR(status);
}
return WRTD_SUCCESS;
}
......@@ -1136,18 +1147,22 @@ enum wrtd_status wrtd_disable_all_alarms(struct wrtd_dev *wrtd)
unsigned idx;
enum wrtd_status status;
struct wrtd_alarm *alarm;
int changed = 0;
status = wrtd_fill_alarms(wrtd);
WRTD_RETURN_IF_ERROR(status);
for (idx = 0; idx < wrtd->nbr_alarms; idx++) {
alarm = &wrtd->alarms[idx].alarm;
if(!wrtd_id_null(alarm->event.id))
{
status = wrtd_set_attr_bool(wrtd, alarm->event.id, WRTD_ATTR_ALARM_ENABLED, 0);
WRTD_RETURN_IF_ERROR(status);
if(alarm->enabled != 0) {
alarm->enabled = 0;
changed = 1;
}
}
return WRTD_SUCCESS;
if (changed) {
status = wrtd_reconfigure(wrtd);
WRTD_RETURN_IF_ERROR(status);
}
return WRTD_SUCCESS;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment