From f3e72c6e339eedc4ffac3a2f32cf6cbae7305ff0 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Tue, 25 Jun 2024 13:44:32 +0200 Subject: pbdrv mod main stuff (???) --- lib/pbdrv/mod/main.h | 13 ------------- lib/pbdrv/mod/main/pb-mod-main.h | 13 +++++++++++++ lib/pbdrv/pb-types.h | 6 ------ main/i2c.c | 13 ++++++++++--- 4 files changed, 23 insertions(+), 22 deletions(-) delete mode 100644 lib/pbdrv/mod/main.h create mode 100644 lib/pbdrv/mod/main/pb-mod-main.h diff --git a/lib/pbdrv/mod/main.h b/lib/pbdrv/mod/main.h deleted file mode 100644 index ec48acd..0000000 --- a/lib/pbdrv/mod/main.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include "../pb-types.h" - -typedef struct { - const i2c_addr_t mod_addr; - const pb_global_state_t mod_state; -} pb_mod_main_mod_t; - -enum { - PB_MOD_MAIN_ADDR_MODS = 0x01, //!< connected puzzle modules -}; - diff --git a/lib/pbdrv/mod/main/pb-mod-main.h b/lib/pbdrv/mod/main/pb-mod-main.h new file mode 100644 index 0000000..9c69c1d --- /dev/null +++ b/lib/pbdrv/mod/main/pb-mod-main.h @@ -0,0 +1,13 @@ +#pragma once + +#include "../../pb-types.h" + +typedef struct { + i2c_addr_t mod_addr; + pb_global_state_t mod_state; +} pb_mod_main_prop_mod_t; + +enum { + PB_MOD_MAIN_PROP_MODS = 0x00, //!< structured list of connected puzzle modules +}; + diff --git a/lib/pbdrv/pb-types.h b/lib/pbdrv/pb-types.h index 44b590b..ef3df54 100644 --- a/lib/pbdrv/pb-types.h +++ b/lib/pbdrv/pb-types.h @@ -131,12 +131,6 @@ typedef struct { pb_global_state_t state; //!< global state } pb_cmd_state_t; -//! PB_MOD_STATE data -typedef struct { - i2c_addr_t sender; //!< i2c address of sender - pb_global_state_t state; //!< global state -} pb_puzzle_module_t; - //! \ref PB_CMD_MAGIC data typedef struct { char * magic; //!< magic value diff --git a/main/i2c.c b/main/i2c.c index 3dfa7cb..19027b3 100644 --- a/main/i2c.c +++ b/main/i2c.c @@ -12,8 +12,13 @@ #include "pb-buf.h" #include "pb-send.h" +typedef struct { + i2c_addr_t sender; //!< I2C address of sender + pb_global_state_t state; //!< global state +} puzzle_module_t; + static pb_global_state_t _global_state = PB_GS_IDLE; -pb_puzzle_module_t modules[CFG_PB_MOD_MAX]; +puzzle_module_t modules[CFG_PB_MOD_MAX]; // stolen from lib/pico-sdk/src/rp2_common/hardware_i2c/i2c.c #define i2c_reserved_addr(addr) (((addr) & 0x78) == 0 || ((addr) & 0x78) == 0x78) size_t modules_size = 0; @@ -100,8 +105,10 @@ void bus_task() { */ void pb_route_cmd_magic_res(pb_msg_t * msg) { if (modules_size == CFG_PB_MOD_MAX) return; - pb_puzzle_module_t tmp_module = {msg->sender, PB_GS_NOINIT}; - modules[modules_size++] = tmp_module; + modules[modules_size++] = (puzzle_module_t) { + .sender = msg->sender, + .state = PB_GS_NOINIT, + }; printf("i2c: registered puzzle module w/ address 0x%02x\n", msg->sender); } -- cgit v1.2.3