Replace "type" with "slaveHandler" callback inside bridge_slave_t.
This commit is contained in:
@@ -9,11 +9,6 @@
|
||||
uint8_t ledsBuffer[BUFFER_SIZE] = {FRAME_REGISTER_PWM_FIRST};
|
||||
uint8_t currentBridgeSlaveId = 0;
|
||||
|
||||
bridge_slave_t bridgeSlaves[] = {
|
||||
{ .moduleId = 0, .type = BridgeSlaveType_UhkModule },
|
||||
{ .moduleId = 0, .type = BridgeSlaveType_LedDriver },
|
||||
};
|
||||
|
||||
bool BridgeSlaveLedDriverHandler(uint8_t ledDriverId) {
|
||||
I2cAsyncWrite(I2C_ADDRESS_LED_DRIVER_LEFT, ledsBuffer, BUFFER_SIZE);
|
||||
return true;
|
||||
@@ -24,16 +19,17 @@ bool BridgeSlaveUhkModuleHandler(uint8_t uhkModuleId) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bridge_slave_t bridgeSlaves[] = {
|
||||
{ .slaveHandler = BridgeSlaveUhkModuleHandler, .moduleId = 0 },
|
||||
{ .slaveHandler = BridgeSlaveLedDriverHandler, .moduleId = 0 },
|
||||
};
|
||||
|
||||
static void bridgeProtocolCallback(I2C_Type *base, i2c_master_handle_t *handle, status_t status, void *userData)
|
||||
{
|
||||
bridge_slave_t *bridgeSlave = bridgeSlaves + currentBridgeSlaveId;
|
||||
SetLeds(0xff);
|
||||
|
||||
if (bridgeSlave->type == BridgeSlaveType_UhkModule) {
|
||||
BridgeSlaveUhkModuleHandler(bridgeSlave->moduleId);
|
||||
} else if (bridgeSlave->type == BridgeSlaveType_LedDriver) {
|
||||
BridgeSlaveLedDriverHandler(bridgeSlave->moduleId);
|
||||
}
|
||||
bridgeSlave->slaveHandler(bridgeSlave->moduleId);
|
||||
|
||||
if (++currentBridgeSlaveId >= (sizeof(bridgeSlaves) / sizeof(bridge_slave_t))) {
|
||||
currentBridgeSlaveId = 0;
|
||||
|
||||
@@ -13,9 +13,11 @@
|
||||
BridgeSlaveType_Touchpad
|
||||
} bridge_slave_type_t;
|
||||
|
||||
typedef bool (slave_handler_t)(uint8_t);
|
||||
|
||||
typedef struct {
|
||||
uint8_t moduleId; // This is a unique, per-module ID.
|
||||
bridge_slave_type_t type;
|
||||
slave_handler_t *slaveHandler;
|
||||
bool isConnected;
|
||||
} bridge_slave_t;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user