Commit df19eb9f authored by Milosz Malczak's avatar Milosz Malczak Committed by Dimitris Lampridis

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

parent a2915aa4
......@@ -7,6 +7,7 @@
#include "libwrtd.h"
#include "libwrtd-private.h"
#define WRTD_DEFAULT_TIMEOUT 1000
static void init (void)
......@@ -747,6 +748,9 @@ enum wrtd_status wrtd_remove_alarm(struct wrtd_dev *wrtd,
return WRTD_SUCCESS;
}
enum wrtd_status wrtd_id_copy_buf(struct wrtd_dev *wrtd,
char *dst, int32_t buf_size, const char *id)
{
......@@ -1051,3 +1055,99 @@ enum wrtd_status wrtd_remove_rule(struct wrtd_dev *wrtd,
return WRTD_SUCCESS;
}
enum wrtd_status wrtd_remove_all_rules(struct wrtd_dev *wrtd)
{
enum wrtd_status status;
unsigned idx;
struct wrtd_rule *rule;
status = wrtd_fill_rules(wrtd);
WRTD_RETURN_IF_ERROR(status);
for (idx = 0; idx < wrtd->nbr_rules; idx++) {
rule = &wrtd->rules[idx].rule;
if (rule->conf.enabled)
return wrtd_return_error(wrtd, WRTD_ERROR_RULE_ENABLED,
"rule is enabled");
/* Clear it. */
memset(rule, 0, sizeof(struct wrtd_rule));
/* Write-back. */
status = wrtd_write_rule(wrtd, idx);
WRTD_RETURN_IF_ERROR(status);
}
return WRTD_SUCCESS;
}
extern enum wrtd_status wrtd_remove_all_alarms(struct wrtd_dev *wrtd)
{
enum wrtd_status status;
unsigned idx;
struct wrtd_alarm *alarm;
status = wrtd_fill_alarms(wrtd);
WRTD_RETURN_IF_ERROR(status);
for (idx = 0; idx < wrtd->nbr_alarms; idx++) {
/* Clear it. */
alarm = &wrtd->alarms[idx].alarm;
memset(alarm, 0, sizeof(struct wrtd_alarm));
/* Write-back. */
status = wrtd_write_alarm(wrtd, idx);
WRTD_RETURN_IF_ERROR(status);
}
return WRTD_SUCCESS;
}
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;
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);
}
}
return WRTD_SUCCESS;
}
enum wrtd_status wrtd_disable_all_alarms(struct wrtd_dev *wrtd)
{
unsigned idx;
enum wrtd_status status;
struct wrtd_alarm *alarm;
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);
}
}
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