add: pulse endpoint
This commit is contained in:
parent
c41dd7e9fa
commit
fb66480873
9 changed files with 135 additions and 3 deletions
src
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue