Add slave_driver_initializer_t, slaveDriverInitializers, and initialize slaves in a more organized fashion.

This commit is contained in:
László Monda
2017-05-05 02:06:13 +02:00
parent 5371a3c17f
commit 107a771a4c
4 changed files with 19 additions and 2 deletions

View File

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