aboutsummaryrefslogtreecommitdiff
path: root/main/i2c.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/i2c.c')
-rw-r--r--main/i2c.c13
1 files changed, 10 insertions, 3 deletions
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);
}