From 7092e1acf9ea7d9eb062d3d3e3ccd75a93d6b5bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Thu, 3 Aug 2017 01:22:45 +0200 Subject: [PATCH] Update the isConnected status of the correct slaves. --- right/src/slave_scheduler.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/right/src/slave_scheduler.c b/right/src/slave_scheduler.c index a160cf6..eb51032 100644 --- a/right/src/slave_scheduler.c +++ b/right/src/slave_scheduler.c @@ -8,6 +8,7 @@ #include "i2c_addresses.h" #include "test_states.h" +uint8_t previousSlaveId = 0; uint8_t currentSlaveId = 0; uhk_slave_t Slaves[] = { @@ -24,14 +25,19 @@ static void bridgeProtocolCallback(I2C_Type *base, i2c_master_handle_t *handle, if (TestStates.disableI2c) { return; } - uhk_slave_t *slave = Slaves + currentSlaveId; - slave->isConnected = status == kStatus_Success; - if (!slave->isConnected) { - slave->initializer(slave->perDriverId); + uhk_slave_t *previousSlave = Slaves + previousSlaveId; + uhk_slave_t *currentSlave = Slaves + currentSlaveId; + + previousSlave->isConnected = status == kStatus_Success; + + if (!currentSlave->isConnected) { + currentSlave->initializer(currentSlave->perDriverId); } - slave->updater(slave->perDriverId); + currentSlave->updater(currentSlave->perDriverId); + + previousSlaveId = currentSlaveId; currentSlaveId++; if (currentSlaveId >= (sizeof(Slaves) / sizeof(uhk_slave_t))) {