From b21cd8b4933fd61cd54d18046fda337bb0972f31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Fri, 5 May 2017 01:08:39 +0200 Subject: [PATCH] Make the slave scheduler always jump to the next slave by disallowing slave drivers to lock the scheduler. --- right/src/slave_drivers/slave_driver_led_driver.c | 3 +-- right/src/slave_drivers/slave_driver_led_driver.h | 2 +- right/src/slave_drivers/slave_driver_uhk_module.c | 4 +--- right/src/slave_drivers/slave_driver_uhk_module.h | 2 +- right/src/slave_scheduler.c | 10 ++++------ right/src/slave_scheduler.h | 2 +- 6 files changed, 9 insertions(+), 14 deletions(-) diff --git a/right/src/slave_drivers/slave_driver_led_driver.c b/right/src/slave_drivers/slave_driver_led_driver.c index 0c0ad85..87262c0 100644 --- a/right/src/slave_drivers/slave_driver_led_driver.c +++ b/right/src/slave_drivers/slave_driver_led_driver.c @@ -54,7 +54,7 @@ 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}; -bool BridgeSlaveLedDriverHandler(uint8_t ledDriverId) { +void BridgeSlaveLedDriverHandler(uint8_t ledDriverId) { uint8_t *ledDriverState = ledDriverStates + ledDriverId; uint8_t ledDriverAddress = ledDriverId ? I2C_ADDRESS_LED_DRIVER_LEFT : I2C_ADDRESS_LED_DRIVER_RIGHT; uint8_t *ledControlBuffer = ledDriverId ? ledControlBufferLeft : ledControlBufferRight; @@ -80,7 +80,6 @@ bool BridgeSlaveLedDriverHandler(uint8_t ledDriverId) { I2cAsyncWrite(ledDriverAddress, ledsBuffer, BUFFER_SIZE); break; } - return true; } void SetLeds(uint8_t ledBrightness) diff --git a/right/src/slave_drivers/slave_driver_led_driver.h b/right/src/slave_drivers/slave_driver_led_driver.h index 23fa230..05a2b67 100644 --- a/right/src/slave_drivers/slave_driver_led_driver.h +++ b/right/src/slave_drivers/slave_driver_led_driver.h @@ -17,7 +17,7 @@ // Functions: - extern bool BridgeSlaveLedDriverHandler(uint8_t ledDriverId); + extern void BridgeSlaveLedDriverHandler(uint8_t ledDriverId); extern void SetLeds(uint8_t ledBrightness); #endif diff --git a/right/src/slave_drivers/slave_driver_uhk_module.c b/right/src/slave_drivers/slave_driver_uhk_module.c index eade2d7..a5be85e 100644 --- a/right/src/slave_drivers/slave_driver_uhk_module.c +++ b/right/src/slave_drivers/slave_driver_uhk_module.c @@ -20,7 +20,7 @@ void InitUhkModules() } } -bool BridgeSlaveUhkModuleHandler(uint8_t uhkModuleId) +void BridgeSlaveUhkModuleHandler(uint8_t uhkModuleId) { uhk_module_state_t *uhkModuleInternalState = UhkModuleStates + uhkModuleId; //uhk_module_state_t *uhkModuleExternalState = uhkModuleExternalStates + uhkModuleId; @@ -66,6 +66,4 @@ bool BridgeSlaveUhkModuleHandler(uint8_t uhkModuleId) currentUhkModuleField = UhkModuleField_SendKeystatesRequestCommand; break; } - - return true; } diff --git a/right/src/slave_drivers/slave_driver_uhk_module.h b/right/src/slave_drivers/slave_driver_uhk_module.h index 5fce1dd..22d274a 100644 --- a/right/src/slave_drivers/slave_driver_uhk_module.h +++ b/right/src/slave_drivers/slave_driver_uhk_module.h @@ -33,6 +33,6 @@ // Functions: extern void InitUhkModules(); - extern bool BridgeSlaveUhkModuleHandler(uint8_t uhkModuleId); + extern void BridgeSlaveUhkModuleHandler(uint8_t uhkModuleId); #endif diff --git a/right/src/slave_scheduler.c b/right/src/slave_scheduler.c index c637453..817f5a0 100644 --- a/right/src/slave_scheduler.c +++ b/right/src/slave_scheduler.c @@ -23,13 +23,11 @@ static void bridgeProtocolCallback(I2C_Type *base, i2c_master_handle_t *handle, } uhk_slave_t *bridgeSlave = bridgeSlaves + currentBridgeSlaveId; - bool isFinished = bridgeSlave->slaveHandler(bridgeSlave->moduleId); - if (isFinished) { - currentBridgeSlaveId++; + bridgeSlave->slaveHandler(bridgeSlave->moduleId); + currentBridgeSlaveId++; - if (currentBridgeSlaveId >= (sizeof(bridgeSlaves) / sizeof(uhk_slave_t))) { - currentBridgeSlaveId = 0; - } + if (currentBridgeSlaveId >= (sizeof(bridgeSlaves) / sizeof(uhk_slave_t))) { + currentBridgeSlaveId = 0; } } diff --git a/right/src/slave_scheduler.h b/right/src/slave_scheduler.h index 7b0e4b8..443fd4f 100644 --- a/right/src/slave_scheduler.h +++ b/right/src/slave_scheduler.h @@ -13,7 +13,7 @@ UhkSlaveType_Touchpad } uhk_slave_type_t; - typedef bool (slave_handler_t)(uint8_t); + typedef void (slave_handler_t)(uint8_t); typedef struct { uint8_t moduleId; // This is a unique, per-module ID.