gpiocmds: Add update_digital_out command

Add a command that can immediately set the value of a digital output
pin created with config_digital_out.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2018-06-27 11:54:45 -04:00
parent 7aec52dfb3
commit 06ef60011e
1 changed files with 15 additions and 0 deletions

View File

@ -68,6 +68,21 @@ command_schedule_digital_out(uint32_t *args)
DECL_COMMAND(command_schedule_digital_out,
"schedule_digital_out oid=%c clock=%u value=%c");
void
command_update_digital_out(uint32_t *args)
{
struct digital_out_s *d = oid_lookup(args[0], command_config_digital_out);
sched_del_timer(&d->timer);
uint8_t value = args[1];
gpio_out_write(d->pin, value);
if (value != d->default_value && d->max_duration) {
d->timer.waketime = timer_read_time() + d->max_duration;
d->timer.func = digital_end_event;
sched_add_timer(&d->timer);
}
}
DECL_COMMAND(command_update_digital_out, "update_digital_out oid=%c value=%c");
void
digital_out_shutdown(void)
{