From 7be20e34c295f0cca27d3d81c5630eea673c92dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Thu, 1 Jun 2017 01:32:57 +0200 Subject: [PATCH] Reinitialize slaves after reconnecting them. --- right/src/slave_drivers/slave_driver_led_driver.c | 3 +++ right/src/slave_scheduler.c | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/right/src/slave_drivers/slave_driver_led_driver.c b/right/src/slave_drivers/slave_driver_led_driver.c index 3bddf43..65c183a 100644 --- a/right/src/slave_drivers/slave_driver_led_driver.c +++ b/right/src/slave_drivers/slave_driver_led_driver.c @@ -57,6 +57,9 @@ uint8_t setFrame1Buffer[] = {LED_DRIVER_REGISTER_FRAME, LED_DRIVER_FRAME_1}; uint8_t updatePwmRegistersBuffer[PWM_REGISTER_BUFFER_LENGTH]; void LedSlaveDriver_Init(uint8_t ledDriverId) { + led_driver_state_t *currentLedDriverState = ledDriverStates + ledDriverId; + currentLedDriverState->phase = LedDriverPhase_SetFunctionFrame; + currentLedDriverState->ledIndex = 0; ledDriverStates[LedDriverId_Left].setupLedControlRegistersCommand[7] |= 0b00000010; // Enable the LED of the ISO key. SetLeds(0xff); } diff --git a/right/src/slave_scheduler.c b/right/src/slave_scheduler.c index a4aab63..27ebc1e 100644 --- a/right/src/slave_scheduler.c +++ b/right/src/slave_scheduler.c @@ -23,6 +23,10 @@ static void bridgeProtocolCallback(I2C_Type *base, i2c_master_handle_t *handle, } uhk_slave_t *slave = slaves + currentSlaveId; + if (status != kStatus_Success) { + slave->initializer(slave->perDriverId); + } + slave->updater(slave->perDriverId); currentSlaveId++;