Add slave driver initializers to the slaves array.

This commit is contained in:
László Monda
2017-06-01 01:21:04 +02:00
parent 4ef45e2e3c
commit 909c6196b2
6 changed files with 14 additions and 20 deletions

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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)

View File

@@ -35,7 +35,7 @@
// Functions:
extern void UhkModuleSlaveDriver_Init();
extern void UhkModuleSlaveDriver_Init(uint8_t uhkModuleId);
extern void UhkModuleSlaveDriver_Update(uint8_t uhkModuleId);
#endif

View File

@@ -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);
}
}

View File

@@ -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;