From 107a771a4cd2976ec854588d338f1d0a8be93995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Fri, 5 May 2017 02:06:13 +0200 Subject: [PATCH] Add slave_driver_initializer_t, slaveDriverInitializers, and initialize slaves in a more organized fashion. --- right/src/slave_drivers/slave_driver_led_driver.c | 4 ++++ right/src/slave_drivers/slave_driver_led_driver.h | 1 + right/src/slave_scheduler.c | 15 +++++++++++++-- right/src/slave_scheduler.h | 1 + 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/right/src/slave_drivers/slave_driver_led_driver.c b/right/src/slave_drivers/slave_driver_led_driver.c index 50e1605..f49f681 100644 --- a/right/src/slave_drivers/slave_driver_led_driver.c +++ b/right/src/slave_drivers/slave_driver_led_driver.c @@ -54,6 +54,10 @@ uint8_t setFunctionFrameBuffer[] = {LED_DRIVER_REGISTER_FRAME, LED_DRIVER_FRAME_ uint8_t setShutdownModeNormalBuffer[] = {LED_DRIVER_REGISTER_SHUTDOWN, SHUTDOWN_MODE_NORMAL}; uint8_t setFrame1Buffer[] = {LED_DRIVER_REGISTER_FRAME, LED_DRIVER_FRAME_1}; +void InitLedSlaveDriver() { + SetLeds(0xff); +} + void UhkSlaveLedDriverHandler(uint8_t ledDriverId) { uint8_t *ledDriverState = ledDriverStates + ledDriverId; uint8_t ledDriverAddress = ledDriverId ? I2C_ADDRESS_LED_DRIVER_LEFT : I2C_ADDRESS_LED_DRIVER_RIGHT; diff --git a/right/src/slave_drivers/slave_driver_led_driver.h b/right/src/slave_drivers/slave_driver_led_driver.h index 0121b5e..969a12a 100644 --- a/right/src/slave_drivers/slave_driver_led_driver.h +++ b/right/src/slave_drivers/slave_driver_led_driver.h @@ -17,6 +17,7 @@ // Functions: + extern void InitLedSlaveDriver(); extern void UhkSlaveLedDriverHandler(uint8_t ledDriverId); extern void SetLeds(uint8_t ledBrightness); diff --git a/right/src/slave_scheduler.c b/right/src/slave_scheduler.c index a612b72..06d715d 100644 --- a/right/src/slave_scheduler.c +++ b/right/src/slave_scheduler.c @@ -10,6 +10,11 @@ uint8_t currentBridgeSlaveId = 0; +slave_driver_initializer_t slaveDriverInitializers[] = { + InitUhkModules, + InitLedSlaveDriver, +}; + uhk_slave_t slaves[] = { { .slaveHandler = UhkSlaveUhkModuleHandler, .moduleId = 0 }, { .slaveHandler = UhkSlaveLedDriverHandler, .moduleId = 0 }, @@ -31,10 +36,16 @@ static void bridgeProtocolCallback(I2C_Type *base, i2c_master_handle_t *handle, } } +static void initSlaveDrivers() +{ + for (uint8_t i=0; i