add: pulse endpoint

This commit is contained in:
Tobias Reisinger 2020-06-27 18:31:36 +02:00
parent c41dd7e9fa
commit fb66480873
9 changed files with 135 additions and 3 deletions

View file

@ -139,3 +139,47 @@ command_send(controller_t *controller, int command_code, char *payload, uint32_t
close(fd_controller);
return 0;
}
int
command_pulse(relay_t *relay, uint8_t duration)
{
controller_t *controller = controller_get_by_id(relay->controller_id);
if(!controller)
{
LOG_ERROR("couldn't find controller\n");
return 1;
}
char* payload;
size_t payload_size;
mpack_writer_t writer;
mpack_writer_init_growable(&writer, &payload, &payload_size);
// 3 = code, relay num, relay name, schedules(array)
mpack_start_map(&writer, 3);
mpack_write_uint(&writer, COMMAND_MAPPING_CODE);
mpack_write_u8(&writer, COMMAND_CODE_PULSE);
mpack_write_uint(&writer, COMMAND_MAPPING_RELAY_NUM);
mpack_write_u8(&writer, relay->number);
mpack_write_uint(&writer, COMMAND_MAPPING_PULSE_DURATION);
mpack_write_u8(&writer, duration);
mpack_finish_map(&writer);
// finish writing
if (mpack_writer_destroy(&writer) != mpack_ok)
{
LOG_ERROR("an error occurred encoding the data");
controller_free(controller);
return 1;
}
int result = command_send(controller, COMMAND_CODE_PULSE, payload, payload_size);
controller_free(controller);
free(payload);
return result;
}