aboutsummaryrefslogtreecommitdiff
path: root/lib/pbdrv/pb-send.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pbdrv/pb-send.c')
-rw-r--r--lib/pbdrv/pb-send.c120
1 files changed, 120 insertions, 0 deletions
diff --git a/lib/pbdrv/pb-send.c b/lib/pbdrv/pb-send.c
new file mode 100644
index 0000000..66c43c1
--- /dev/null
+++ b/lib/pbdrv/pb-send.c
@@ -0,0 +1,120 @@
+#include "pb-send.h"
+#include "pb-mod.h"
+#include "pb-msg.h"
+
+__weak void pb_send_reply(pb_msg_t * msg, pb_buf_t * reply) {
+ return pb_i2c_send(msg->sender, (uint8_t *) reply->data, reply->size);
+}
+
+pb_buf_t pb_send_read_req(uint8_t propid) {
+ pb_cmd_prop_t cmd = {
+ .propid = propid,
+ .value = NULL,
+ ._value_size = 0,
+ };
+ pb_msg_t msg = {
+ .type = PB_CMD_PROP,
+ .action = PB_ACTION_REQ,
+ .sender = PB_MOD_ADDR,
+ .cmd = &cmd,
+ };
+ return pb_msg_write(&msg);
+}
+
+pb_buf_t pb_send_read_res(uint8_t propid, uint8_t * value, size_t size) {
+ pb_cmd_prop_t cmd = {
+ .propid = propid,
+ .value = value,
+ ._value_size = size,
+ };
+ pb_msg_t msg = {
+ .type = PB_CMD_PROP,
+ .action = PB_ACTION_RES,
+ .sender = PB_MOD_ADDR,
+ .cmd = &cmd,
+ };
+ return pb_msg_write(&msg);
+}
+
+pb_buf_t pb_send_write_req(uint8_t propid, uint8_t * value, size_t size) {
+ pb_cmd_prop_t cmd = {
+ .propid = propid,
+ .value = value,
+ ._value_size = size,
+ };
+ pb_msg_t msg = {
+ .type = PB_CMD_PROP,
+ .action = PB_ACTION_REQ,
+ .sender = PB_MOD_ADDR,
+ .cmd = &cmd,
+ };
+ return pb_msg_write(&msg);
+}
+
+pb_buf_t pb_send_state_req() {
+ pb_cmd_state_t cmd = {
+ .state = pb_hook_mod_state_read(),
+ };
+ pb_msg_t msg = {
+ .type = PB_CMD_STATE,
+ .action = PB_ACTION_REQ,
+ .sender = PB_MOD_ADDR,
+ .cmd = &cmd,
+ };
+ return pb_msg_write(&msg);
+}
+
+pb_buf_t pb_send_state_res(pb_global_state_t state) {
+ pb_cmd_state_t cmd = {
+ .state = state,
+ };
+ pb_msg_t msg = {
+ .type = PB_CMD_STATE,
+ .action = PB_ACTION_RES,
+ .sender = PB_MOD_ADDR,
+ .cmd = &cmd,
+ };
+ return pb_msg_write(&msg);
+}
+
+pb_buf_t pb_send_state_set(pb_global_state_t state) {
+ pb_cmd_state_t cmd = {
+ .state = state,
+ };
+ pb_msg_t msg = {
+ .type = PB_CMD_STATE,
+ .action = PB_ACTION_SET,
+ .sender = PB_MOD_ADDR,
+ .cmd = &cmd,
+ };
+ return pb_msg_write(&msg);
+}
+
+pb_buf_t pb_send_magic_req() {
+ pb_cmd_magic_t cmd = {
+ .magic = (char *) &pb_cmd_magic_req[0],
+ ._magic_size = sizeof(pb_cmd_magic_req),
+ };
+ pb_msg_t msg = {
+ .type = PB_CMD_MAGIC,
+ .action = PB_ACTION_REQ,
+ .sender = PB_MOD_ADDR,
+ .cmd = &cmd,
+ };
+ return pb_msg_write(&msg);
+}
+
+pb_buf_t pb_send_magic_res() {
+ pb_cmd_magic_t cmd = {
+ .magic = (char *) &pb_cmd_magic_res[0],
+ ._magic_size = sizeof(pb_cmd_magic_res),
+ };
+ pb_msg_t msg = {
+ .type = PB_CMD_MAGIC,
+ .action = PB_ACTION_RES,
+ .sender = PB_MOD_ADDR,
+ .cmd = &cmd,
+ };
+ return pb_msg_write(&msg);
+}
+