aboutsummaryrefslogtreecommitdiff
path: root/lib/pbdrv/pb-write.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pbdrv/pb-write.c')
-rw-r--r--lib/pbdrv/pb-write.c73
1 files changed, 73 insertions, 0 deletions
diff --git a/lib/pbdrv/pb-write.c b/lib/pbdrv/pb-write.c
index 294452e..1a3f24e 100644
--- a/lib/pbdrv/pb-write.c
+++ b/lib/pbdrv/pb-write.c
@@ -21,14 +21,87 @@ static pbdrv_buf_t pbdrv_write_finish(pbdrv_writer_t * writer) {
static void pbdrv_write_msg_header(pbdrv_writer_t * writer, pb_msg_header_t header) {
mpack_write_u8(&writer->writer, header.type);
+ // TODO: if pbdrv is compiled under the pbdrv-mod target, place
+ // PBDRV_MOD_ADDR in this field
mpack_write_u16(&writer->writer, header.sender);
}
+pbdrv_buf_t pbdrv_write_cmd_req_read(pb_cmd_req_read_t data) {
+ data.header.type = PB_CMD_REQ_READ;
+ pbdrv_writer_t writer;
+ pbdrv_write_init(&writer);
+
+ pbdrv_write_msg_header(&writer, data.header);
+ mpack_write_u8(&writer.writer, data.propid);
+
+ return pbdrv_write_finish(&writer);
+}
+
+pbdrv_buf_t pbdrv_write_cmd_res_read(pb_cmd_res_read_t data) {
+ data.header.type = PB_CMD_RES_READ;
+ pbdrv_writer_t writer;
+ pbdrv_write_init(&writer);
+
+ pbdrv_write_msg_header(&writer, data.header);
+ mpack_write_u8(&writer.writer, data.propid);
+ mpack_write_bin(&writer.writer, (char *) data.value, data._value_size);
+
+ return pbdrv_write_finish(&writer);
+}
+
+pbdrv_buf_t pbdrv_write_cmd_req_write(pb_cmd_req_write_t data) {
+ data.header.type = PB_CMD_REQ_WRITE;
+ pbdrv_writer_t writer;
+ pbdrv_write_init(&writer);
+
+ pbdrv_write_msg_header(&writer, data.header);
+ mpack_write_u8(&writer.writer, data.propid);
+ mpack_write_bin(&writer.writer, (char *) data.value, data._value_size);
+
+ return pbdrv_write_finish(&writer);
+}
+
+pbdrv_buf_t pbdrv_write_cmd_req_state(pb_cmd_req_state_t data) {
+ data.header.type = PB_CMD_REQ_STATE;
+ pbdrv_writer_t writer;
+ pbdrv_write_init(&writer);
+
+ pbdrv_write_msg_header(&writer, data.header);
+ mpack_write_u8(&writer.writer, data.state);
+
+ return pbdrv_write_finish(&writer);
+}
+
+pbdrv_buf_t pbdrv_write_cmd_res_state(pb_cmd_res_state_t data) {
+ data.header.type = PB_CMD_RES_STATE;
+ pbdrv_writer_t writer;
+ pbdrv_write_init(&writer);
+
+ pbdrv_write_msg_header(&writer, data.header);
+ mpack_write_u8(&writer.writer, data.state);
+
+ return pbdrv_write_finish(&writer);
+}
+
pbdrv_buf_t pbdrv_write_cmd_req_set_state(pb_cmd_req_set_state_t data) {
+ data.header.type = PB_CMD_REQ_SET_STATE;
pbdrv_writer_t writer;
pbdrv_write_init(&writer);
+
pbdrv_write_msg_header(&writer, data.header);
mpack_write_u8(&writer.writer, data.state);
+
+ return pbdrv_write_finish(&writer);
+}
+
+pbdrv_buf_t pbdrv_write_cmd_magic(pb_cmd_magic_t data) {
+ data.header.type = PB_CMD_MAGIC;
+ pbdrv_writer_t writer;
+ pbdrv_write_init(&writer);
+
+ pbdrv_write_msg_header(&writer, data.header);
+ mpack_write_bin(&writer.writer, data.magic, data._magic_size);
+
return pbdrv_write_finish(&writer);
}