Add slave_driver_initializer_t, slaveDriverInitializers, and initialize slaves in a more organized fashion.
This commit is contained in:
@@ -54,6 +54,10 @@ 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};
|
||||
|
||||
void InitLedSlaveDriver() {
|
||||
SetLeds(0xff);
|
||||
}
|
||||
|
||||
void UhkSlaveLedDriverHandler(uint8_t ledDriverId) {
|
||||
uint8_t *ledDriverState = ledDriverStates + ledDriverId;
|
||||
uint8_t ledDriverAddress = ledDriverId ? I2C_ADDRESS_LED_DRIVER_LEFT : I2C_ADDRESS_LED_DRIVER_RIGHT;
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
|
||||
// Functions:
|
||||
|
||||
extern void InitLedSlaveDriver();
|
||||
extern void UhkSlaveLedDriverHandler(uint8_t ledDriverId);
|
||||
extern void SetLeds(uint8_t ledBrightness);
|
||||
|
||||
|
||||
@@ -10,6 +10,11 @@
|
||||
|
||||
uint8_t currentBridgeSlaveId = 0;
|
||||
|
||||
slave_driver_initializer_t slaveDriverInitializers[] = {
|
||||
InitUhkModules,
|
||||
InitLedSlaveDriver,
|
||||
};
|
||||
|
||||
uhk_slave_t slaves[] = {
|
||||
{ .slaveHandler = UhkSlaveUhkModuleHandler, .moduleId = 0 },
|
||||
{ .slaveHandler = UhkSlaveLedDriverHandler, .moduleId = 0 },
|
||||
@@ -31,10 +36,16 @@ 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]();
|
||||
}
|
||||
}
|
||||
|
||||
void InitSlaveScheduler()
|
||||
{
|
||||
InitUhkModules();
|
||||
SetLeds(0xff);
|
||||
initSlaveDrivers();
|
||||
I2C_MasterTransferCreateHandle(I2C_MAIN_BUS_BASEADDR, &I2cMasterHandle, bridgeProtocolCallback, NULL);
|
||||
|
||||
// Kickstart the scheduler by triggering the first callback.
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
} uhk_slave_type_t;
|
||||
|
||||
typedef void (slave_handler_t)(uint8_t);
|
||||
typedef void (*slave_driver_initializer_t)();
|
||||
|
||||
typedef struct {
|
||||
uint8_t moduleId; // This is a unique, per-module ID.
|
||||
|
||||
Reference in New Issue
Block a user