HAL_ChibiOS: implement I2C bus masks

This commit is contained in:
Andrew Tridgell 2018-06-21 13:09:15 +10:00 committed by Randy Mackay
parent 44685bbb7b
commit 98f241c7e4
2 changed files with 41 additions and 0 deletions

View File

@ -326,4 +326,30 @@ I2CDeviceManager::get_device(uint8_t bus, uint8_t address,
return dev;
}
/*
get mask of bus numbers for all configured I2C buses
*/
uint32_t I2CDeviceManager::get_bus_mask(void) const
{
return (1U << ARRAY_SIZE_SIMPLE(I2CD)) - 1;
}
/*
get mask of bus numbers for all configured internal I2C buses
*/
uint32_t I2CDeviceManager::get_bus_mask_internal(void) const
{
// assume first bus is internal
return 1U;
}
/*
get mask of bus numbers for all configured external I2C buses
*/
uint32_t I2CDeviceManager::get_bus_mask_external(void) const
{
// assume first bus is internal
return get_bus_mask() & 0xFE;
}
#endif // HAL_USE_I2C

View File

@ -127,6 +127,21 @@ public:
uint32_t bus_clock=400000,
bool use_smbus = false,
uint32_t timeout_ms=4) override;
/*
get mask of bus numbers for all configured I2C buses
*/
uint32_t get_bus_mask(void) const override;
/*
get mask of bus numbers for all configured external I2C buses
*/
uint32_t get_bus_mask_external(void) const override;
/*
get mask of bus numbers for all configured internal I2C buses
*/
uint32_t get_bus_mask_internal(void) const override;
};
}