aboutsummaryrefslogtreecommitdiff
path: root/lib/pbdrv/pb-mod.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pbdrv/pb-mod.c')
-rw-r--r--lib/pbdrv/pb-mod.c36
1 files changed, 22 insertions, 14 deletions
diff --git a/lib/pbdrv/pb-mod.c b/lib/pbdrv/pb-mod.c
index 740f2a5..c27194e 100644
--- a/lib/pbdrv/pb-mod.c
+++ b/lib/pbdrv/pb-mod.c
@@ -1,26 +1,34 @@
+#include "pb-buf.h"
+#include "pb-msg.h"
#include "pb-types.h"
-#include "pb.h"
+#include "pb-mod.h"
+#include "pb-route.h"
//! fallback module name
-__weak const char * PBDRV_MOD_NAME = "???";
+__weak const char * PB_MOD_NAME = "???";
//! [private] placeholder global state variable
static pb_global_state_t _global_state = PB_GS_NOINIT;
-//! [private] main controller global state
-static pb_global_state_t _main_state = PB_GS_NOINIT;
+__weak pb_global_state_t pb_hook_mod_state_read() {
+ return _global_state;
+}
-// __weak enum pb_state pbdrv_hook_mod_state_read() {
-// return _global_state;
-// }
+__weak void pb_hook_mod_state_write(pb_global_state_t state) {
+ _global_state = state;
+}
-// __weak void pbdrv_hook_mod_state_write(enum pb_state state) {
-// _global_state = state;
-// }
+__weak void pb_i2c_recv(const uint8_t * data, size_t sz) {
+ pb_buf_t buf = {
+ .data = (char *) data,
+ .size = sz,
+ };
+ pb_msg_t * msg = pb_msg_read(&buf);
+ if (msg == NULL) return; // invalid message
+ if (msg->cmd == NULL) return; // invalid message
+
+ pb_route_msg(msg);
-__weak void pbdrv_i2c_recv(const uint8_t * buf, size_t sz) {
- return;
+ pb_msg_free(msg);
}
-
-__weak void pbdrv_hook_main_state_update(pb_global_state_t state) { }