Make the slave scheduler always jump to the next slave by disallowing slave drivers to lock the scheduler.
This commit is contained in:
@@ -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 setShutdownModeNormalBuffer[] = {LED_DRIVER_REGISTER_SHUTDOWN, SHUTDOWN_MODE_NORMAL};
|
||||||
uint8_t setFrame1Buffer[] = {LED_DRIVER_REGISTER_FRAME, LED_DRIVER_FRAME_1};
|
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 *ledDriverState = ledDriverStates + ledDriverId;
|
||||||
uint8_t ledDriverAddress = ledDriverId ? I2C_ADDRESS_LED_DRIVER_LEFT : I2C_ADDRESS_LED_DRIVER_RIGHT;
|
uint8_t ledDriverAddress = ledDriverId ? I2C_ADDRESS_LED_DRIVER_LEFT : I2C_ADDRESS_LED_DRIVER_RIGHT;
|
||||||
uint8_t *ledControlBuffer = ledDriverId ? ledControlBufferLeft : ledControlBufferRight;
|
uint8_t *ledControlBuffer = ledDriverId ? ledControlBufferLeft : ledControlBufferRight;
|
||||||
@@ -80,7 +80,6 @@ bool BridgeSlaveLedDriverHandler(uint8_t ledDriverId) {
|
|||||||
I2cAsyncWrite(ledDriverAddress, ledsBuffer, BUFFER_SIZE);
|
I2cAsyncWrite(ledDriverAddress, ledsBuffer, BUFFER_SIZE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetLeds(uint8_t ledBrightness)
|
void SetLeds(uint8_t ledBrightness)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
extern bool BridgeSlaveLedDriverHandler(uint8_t ledDriverId);
|
extern void BridgeSlaveLedDriverHandler(uint8_t ledDriverId);
|
||||||
extern void SetLeds(uint8_t ledBrightness);
|
extern void SetLeds(uint8_t ledBrightness);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -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 *uhkModuleInternalState = UhkModuleStates + uhkModuleId;
|
||||||
//uhk_module_state_t *uhkModuleExternalState = uhkModuleExternalStates + uhkModuleId;
|
//uhk_module_state_t *uhkModuleExternalState = uhkModuleExternalStates + uhkModuleId;
|
||||||
@@ -66,6 +66,4 @@ bool BridgeSlaveUhkModuleHandler(uint8_t uhkModuleId)
|
|||||||
currentUhkModuleField = UhkModuleField_SendKeystatesRequestCommand;
|
currentUhkModuleField = UhkModuleField_SendKeystatesRequestCommand;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,6 @@
|
|||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
extern void InitUhkModules();
|
extern void InitUhkModules();
|
||||||
extern bool BridgeSlaveUhkModuleHandler(uint8_t uhkModuleId);
|
extern void BridgeSlaveUhkModuleHandler(uint8_t uhkModuleId);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -23,13 +23,11 @@ static void bridgeProtocolCallback(I2C_Type *base, i2c_master_handle_t *handle,
|
|||||||
}
|
}
|
||||||
uhk_slave_t *bridgeSlave = bridgeSlaves + currentBridgeSlaveId;
|
uhk_slave_t *bridgeSlave = bridgeSlaves + currentBridgeSlaveId;
|
||||||
|
|
||||||
bool isFinished = bridgeSlave->slaveHandler(bridgeSlave->moduleId);
|
bridgeSlave->slaveHandler(bridgeSlave->moduleId);
|
||||||
if (isFinished) {
|
currentBridgeSlaveId++;
|
||||||
currentBridgeSlaveId++;
|
|
||||||
|
|
||||||
if (currentBridgeSlaveId >= (sizeof(bridgeSlaves) / sizeof(uhk_slave_t))) {
|
if (currentBridgeSlaveId >= (sizeof(bridgeSlaves) / sizeof(uhk_slave_t))) {
|
||||||
currentBridgeSlaveId = 0;
|
currentBridgeSlaveId = 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
UhkSlaveType_Touchpad
|
UhkSlaveType_Touchpad
|
||||||
} uhk_slave_type_t;
|
} uhk_slave_type_t;
|
||||||
|
|
||||||
typedef bool (slave_handler_t)(uint8_t);
|
typedef void (slave_handler_t)(uint8_t);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t moduleId; // This is a unique, per-module ID.
|
uint8_t moduleId; // This is a unique, per-module ID.
|
||||||
|
|||||||
Reference in New Issue
Block a user