Add slave driver initializers to the slaves array.
This commit is contained in:
@@ -56,7 +56,7 @@ uint8_t setShutdownModeNormalBuffer[] = {LED_DRIVER_REGISTER_SHUTDOWN, SHUTDOWN_
|
||||
uint8_t setFrame1Buffer[] = {LED_DRIVER_REGISTER_FRAME, LED_DRIVER_FRAME_1};
|
||||
uint8_t updatePwmRegistersBuffer[PWM_REGISTER_BUFFER_LENGTH];
|
||||
|
||||
void LedSlaveDriver_Init() {
|
||||
void LedSlaveDriver_Init(uint8_t ledDriverId) {
|
||||
ledDriverStates[LedDriverId_Left].setupLedControlRegistersCommand[7] |= 0b00000010; // Enable the LED of the ISO key.
|
||||
SetLeds(0xff);
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
// Functions:
|
||||
|
||||
extern void LedSlaveDriver_Init();
|
||||
extern void LedSlaveDriver_Init(uint8_t ledDriverId);
|
||||
extern void LedSlaveDriver_Update(uint8_t ledDriverId);
|
||||
extern void SetLeds(uint8_t ledBrightness);
|
||||
|
||||
|
||||
@@ -13,13 +13,11 @@ uhk_module_phase_t uhkModulePhase = UhkModulePhase_SendKeystatesRequestCommand;
|
||||
uint8_t txBuffer[2];
|
||||
uint8_t rxBuffer[KEY_STATE_BUFFER_SIZE];
|
||||
|
||||
void UhkModuleSlaveDriver_Init()
|
||||
void UhkModuleSlaveDriver_Init(uint8_t uhkModuleId)
|
||||
{
|
||||
for (uint8_t moduleId=0; moduleId<UHK_MODULE_MAX_COUNT; moduleId++) {
|
||||
uhk_module_state_t* uhkModuleState = UhkModuleStates + moduleId;
|
||||
uhkModuleState->isTestLedOn = true;
|
||||
uhkModuleState->ledPwmBrightness = 0x64;
|
||||
}
|
||||
uhk_module_state_t* uhkModuleState = UhkModuleStates + uhkModuleId;
|
||||
uhkModuleState->isTestLedOn = true;
|
||||
uhkModuleState->ledPwmBrightness = 0x64;
|
||||
}
|
||||
|
||||
void UhkModuleSlaveDriver_Update(uint8_t uhkModuleId)
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
// Functions:
|
||||
|
||||
extern void UhkModuleSlaveDriver_Init();
|
||||
extern void UhkModuleSlaveDriver_Init(uint8_t uhkModuleId);
|
||||
extern void UhkModuleSlaveDriver_Update(uint8_t uhkModuleId);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -10,15 +10,10 @@
|
||||
|
||||
uint8_t currentSlaveId = 0;
|
||||
|
||||
slave_driver_initializer_t slaveDriverInitializers[] = {
|
||||
UhkModuleSlaveDriver_Init,
|
||||
LedSlaveDriver_Init,
|
||||
};
|
||||
|
||||
uhk_slave_t slaves[] = {
|
||||
{ .updater = UhkModuleSlaveDriver_Update, .perDriverId = 0 },
|
||||
{ .updater = LedSlaveDriver_Update, .perDriverId = 0 },
|
||||
{ .updater = LedSlaveDriver_Update, .perDriverId = 1 },
|
||||
{ .initializer = UhkModuleSlaveDriver_Init, .updater = UhkModuleSlaveDriver_Update, .perDriverId = 0 },
|
||||
{ .initializer = LedSlaveDriver_Init, .updater = LedSlaveDriver_Update, .perDriverId = 0 },
|
||||
{ .initializer = LedSlaveDriver_Init, .updater = LedSlaveDriver_Update, .perDriverId = 1 },
|
||||
};
|
||||
|
||||
static void bridgeProtocolCallback(I2C_Type *base, i2c_master_handle_t *handle, status_t status, void *userData)
|
||||
@@ -38,8 +33,8 @@ static void bridgeProtocolCallback(I2C_Type *base, i2c_master_handle_t *handle,
|
||||
|
||||
static void initSlaveDrivers()
|
||||
{
|
||||
for (uint8_t i=0; i<sizeof(slaveDriverInitializers) / sizeof(slave_driver_initializer_t); i++) {
|
||||
slaveDriverInitializers[i]();
|
||||
for (uint8_t i=0; i<sizeof(slaves) / sizeof(uhk_slave_t); i++) {
|
||||
slaves[i].initializer(slaves[i].perDriverId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,11 +13,12 @@
|
||||
UhkSlaveType_Touchpad
|
||||
} uhk_slave_type_t;
|
||||
|
||||
typedef void (slave_initializer_t)(uint8_t);
|
||||
typedef void (slave_updater_t)(uint8_t);
|
||||
typedef void (*slave_driver_initializer_t)();
|
||||
|
||||
typedef struct {
|
||||
uint8_t perDriverId; // Identifies the slave instance on a per-driver basis
|
||||
slave_initializer_t *initializer;
|
||||
slave_updater_t *updater;
|
||||
bool isConnected;
|
||||
} uhk_slave_t;
|
||||
|
||||
Reference in New Issue
Block a user