This commit is contained in:
Ken Van Hoeylandt 2026-07-23 00:42:49 +02:00
parent 9b020ffb36
commit 74bcd979c5
64 changed files with 71 additions and 85 deletions

View File

@ -7,7 +7,7 @@ extern Driver papers3_power_driver;
extern Driver papers3_power_supply_driver; extern Driver papers3_power_supply_driver;
extern Driver papers3_display_driver; extern Driver papers3_display_driver;
static const Driver* papers3_drivers[] = { static Driver* const papers3_drivers[] = {
&papers3_display_driver, &papers3_display_driver,
&papers3_power_driver, &papers3_power_driver,
&papers3_power_supply_driver, &papers3_power_supply_driver,

View File

@ -79,7 +79,7 @@ static error_t stop() {
return ERROR_NONE; return ERROR_NONE;
} }
static const Driver* tab5_drivers[] = { static Driver* const tab5_drivers[] = {
&tab5_keyboard_driver, &tab5_keyboard_driver,
&tab5_power_control_driver, &tab5_power_control_driver,
nullptr nullptr
@ -89,7 +89,7 @@ Module m5stack_tab5_module = {
.name = "m5stack-tab5", .name = "m5stack-tab5",
.start = start, .start = start,
.stop = stop, .stop = stop,
.drivers = const_cast<const Driver**>(tab5_drivers) .drivers = tab5_drivers
}; };
} }

View File

@ -47,7 +47,7 @@ static error_t stop() {
return ERROR_NONE; return ERROR_NONE;
} }
static const Driver* unphone_drivers[] = { static Driver* const unphone_drivers[] = {
&unphone_nav_buttons_driver, &unphone_nav_buttons_driver,
&unphone_power_switch_driver, &unphone_power_switch_driver,
nullptr nullptr

View File

@ -8,7 +8,7 @@ extern Driver aw88298_driver;
extern const ModuleSymbol aw88298_module_symbols[]; extern const ModuleSymbol aw88298_module_symbols[];
static const Driver* aw88298_drivers[] = { static Driver* const aw88298_drivers[] = {
&aw88298_driver, &aw88298_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver aw9523b_driver; extern Driver aw9523b_driver;
static const Driver* aw9523b_drivers[] = { static Driver* const aw9523b_drivers[] = {
&aw9523b_driver, &aw9523b_driver,
nullptr nullptr
}; };

View File

@ -9,7 +9,7 @@ extern Driver axp192_driver;
extern Driver axp192_power_supply_driver; extern Driver axp192_power_supply_driver;
extern Driver axp192_backlight_driver; extern Driver axp192_backlight_driver;
static const Driver* axp192_drivers[] = { static Driver* const axp192_drivers[] = {
&axp192_driver, &axp192_driver,
&axp192_power_supply_driver, &axp192_power_supply_driver,
&axp192_backlight_driver, &axp192_backlight_driver,

View File

@ -9,7 +9,7 @@ extern Driver axp2101_driver;
extern Driver axp2101_power_supply_driver; extern Driver axp2101_power_supply_driver;
extern Driver axp2101_backlight_driver; extern Driver axp2101_backlight_driver;
static const Driver* axp2101_drivers[] = { static Driver* const axp2101_drivers[] = {
&axp2101_driver, &axp2101_driver,
&axp2101_power_supply_driver, &axp2101_power_supply_driver,
&axp2101_backlight_driver, &axp2101_backlight_driver,

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver axs5106_driver; extern Driver axs5106_driver;
static const Driver* axs5106_drivers[] = { static Driver* const axs5106_drivers[] = {
&axs5106_driver, &axs5106_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver bm8563_driver; extern Driver bm8563_driver;
static const Driver* bm8563_drivers[] = { static Driver* const bm8563_drivers[] = {
&bm8563_driver, &bm8563_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver bmi270_driver; extern Driver bmi270_driver;
static const Driver* bmi270_drivers[] = { static Driver* const bmi270_drivers[] = {
&bmi270_driver, &bmi270_driver,
nullptr nullptr
}; };

View File

@ -7,7 +7,7 @@ extern "C" {
extern Driver bq24295_driver; extern Driver bq24295_driver;
extern Driver bq24295_power_supply_driver; extern Driver bq24295_power_supply_driver;
static const Driver* bq24295_drivers[] = { static Driver* const bq24295_drivers[] = {
&bq24295_driver, &bq24295_driver,
&bq24295_power_supply_driver, &bq24295_power_supply_driver,
nullptr nullptr

View File

@ -7,7 +7,7 @@ extern "C" {
extern Driver bq25896_driver; extern Driver bq25896_driver;
extern Driver bq25896_power_supply_driver; extern Driver bq25896_power_supply_driver;
static const Driver* bq25896_drivers[] = { static Driver* const bq25896_drivers[] = {
&bq25896_driver, &bq25896_driver,
&bq25896_power_supply_driver, &bq25896_power_supply_driver,
nullptr nullptr

View File

@ -7,7 +7,7 @@ extern "C" {
extern Driver bq27220_driver; extern Driver bq27220_driver;
extern Driver bq27220_power_supply_driver; extern Driver bq27220_power_supply_driver;
static const Driver* bq27220_drivers[] = { static Driver* const bq27220_drivers[] = {
&bq27220_driver, &bq27220_driver,
&bq27220_power_supply_driver, &bq27220_power_supply_driver,
nullptr nullptr

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver button_control_driver; extern Driver button_control_driver;
static const Driver* button_control_drivers[] = { static Driver* const button_control_drivers[] = {
&button_control_driver, &button_control_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver ch422g_driver; extern Driver ch422g_driver;
static const Driver* ch422g_drivers[] = { static Driver* const ch422g_drivers[] = {
&ch422g_driver, &ch422g_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver cst328_driver; extern Driver cst328_driver;
static const Driver* cst328_drivers[] = { static Driver* const cst328_drivers[] = {
&cst328_driver, &cst328_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver cst66xx_driver; extern Driver cst66xx_driver;
static const Driver* cst66xx_drivers[] = { static Driver* const cst66xx_drivers[] = {
&cst66xx_driver, &cst66xx_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver cst816s_driver; extern Driver cst816s_driver;
static const Driver* cst816s_drivers[] = { static Driver* const cst816s_drivers[] = {
&cst816s_driver, &cst816s_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver cst816t_driver; extern Driver cst816t_driver;
static const Driver* cst816t_drivers[] = { static Driver* const cst816t_drivers[] = {
&cst816t_driver, &cst816t_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver drv2605_driver; extern Driver drv2605_driver;
static const Driver* drv2605_drivers[] = { static Driver* const drv2605_drivers[] = {
&drv2605_driver, &drv2605_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver dummy_i2s_amp_driver; extern Driver dummy_i2s_amp_driver;
static const Driver* dummy_drivers[] = { static Driver* const dummy_drivers[] = {
&dummy_i2s_amp_driver, &dummy_i2s_amp_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver es7210_driver; extern Driver es7210_driver;
static const Driver* es7210_drivers[] = { static Driver* const es7210_drivers[] = {
&es7210_driver, &es7210_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver es8311_driver; extern Driver es8311_driver;
static const Driver* es8311_drivers[] = { static Driver* const es8311_drivers[] = {
&es8311_driver, &es8311_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver es8388_driver; extern Driver es8388_driver;
static const Driver* es8388_drivers[] = { static Driver* const es8388_drivers[] = {
&es8388_driver, &es8388_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver ft5x06_driver; extern Driver ft5x06_driver;
static const Driver* ft5x06_drivers[] = { static Driver* const ft5x06_drivers[] = {
&ft5x06_driver, &ft5x06_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver ft6x36_driver; extern Driver ft6x36_driver;
static const Driver* ft6x36_drivers[] = { static Driver* const ft6x36_drivers[] = {
&ft6x36_driver, &ft6x36_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver gc9a01_driver; extern Driver gc9a01_driver;
static const Driver* gc9a01_drivers[] = { static Driver* const gc9a01_drivers[] = {
&gc9a01_driver, &gc9a01_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver gt911_driver; extern Driver gt911_driver;
static const Driver* gt911_drivers[] = { static Driver* const gt911_drivers[] = {
&gt911_driver, &gt911_driver,
nullptr nullptr
}; };

View File

@ -4,7 +4,7 @@
extern Driver hx8357_driver; extern Driver hx8357_driver;
static const Driver* hx8357_drivers[] = { static Driver* const hx8357_drivers[] = {
&hx8357_driver, &hx8357_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver ili9341_driver; extern Driver ili9341_driver;
static const Driver* ili9341_drivers[] = { static Driver* const ili9341_drivers[] = {
&ili9341_driver, &ili9341_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver ili9488_driver; extern Driver ili9488_driver;
static const Driver* ili9488_drivers[] = { static Driver* const ili9488_drivers[] = {
&ili9488_driver, &ili9488_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver ili9881c_driver; extern Driver ili9881c_driver;
static const Driver* ili9881c_drivers[] = { static Driver* const ili9881c_drivers[] = {
&ili9881c_driver, &ili9881c_driver,
nullptr nullptr
}; };

View File

@ -7,7 +7,7 @@ extern "C" {
extern Driver ina226_driver; extern Driver ina226_driver;
extern Driver ina226_power_supply_driver; extern Driver ina226_power_supply_driver;
static const Driver* ina226_drivers[] = { static Driver* const ina226_drivers[] = {
&ina226_driver, &ina226_driver,
&ina226_power_supply_driver, &ina226_power_supply_driver,
nullptr nullptr

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver jd9165_driver; extern Driver jd9165_driver;
static const Driver* jd9165_drivers[] = { static Driver* const jd9165_drivers[] = {
&jd9165_driver, &jd9165_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver jd9853_driver; extern Driver jd9853_driver;
static const Driver* jd9853_drivers[] = { static Driver* const jd9853_drivers[] = {
&jd9853_driver, &jd9853_driver,
nullptr nullptr
}; };

View File

@ -9,7 +9,7 @@ extern Driver tdeck_keyboard_backlight_driver;
extern Driver tdeck_trackball_driver; extern Driver tdeck_trackball_driver;
extern Driver tpager_encoder_driver; extern Driver tpager_encoder_driver;
static const Driver* lilygo_drivers[] = { static Driver* const lilygo_drivers[] = {
&tdeck_keyboard_driver, &tdeck_keyboard_driver,
&tdeck_keyboard_backlight_driver, &tdeck_keyboard_backlight_driver,
&tdeck_trackball_driver, &tdeck_trackball_driver,

View File

@ -7,7 +7,7 @@ extern "C" {
extern Driver m5pm1_driver; extern Driver m5pm1_driver;
extern Driver m5pm1_power_supply_driver; extern Driver m5pm1_power_supply_driver;
static const Driver* m5pm1_drivers[] = { static Driver* const m5pm1_drivers[] = {
&m5pm1_driver, &m5pm1_driver,
&m5pm1_power_supply_driver, &m5pm1_power_supply_driver,
nullptr nullptr

View File

@ -7,7 +7,7 @@ extern "C" {
extern Driver cardputer_keyboard_driver; extern Driver cardputer_keyboard_driver;
extern Driver cardputer_adv_keyboard_driver; extern Driver cardputer_adv_keyboard_driver;
static const Driver* m5stack_drivers[] = { static Driver* const m5stack_drivers[] = {
&cardputer_keyboard_driver, &cardputer_keyboard_driver,
&cardputer_adv_keyboard_driver, &cardputer_adv_keyboard_driver,
nullptr nullptr

View File

@ -6,25 +6,11 @@ extern "C" {
extern Driver mpu6886_driver; extern Driver mpu6886_driver;
static const Driver* mpu6886_drivers[] = { static Driver* const mpu6886_drivers[] = {
&mpu6886_driver, &mpu6886_driver,
nullptr nullptr
}; };
static error_t start() {
/* We crash when construct fails, because if a single driver fails to construct,
* there is no guarantee that the previously constructed drivers can be destroyed */
check(driver_construct_add(&mpu6886_driver) == ERROR_NONE);
return ERROR_NONE;
}
static error_t stop() {
/* We crash when destruct fails, because if a single driver fails to destruct,
* there is no guarantee that the previously destroyed drivers can be recovered */
check(driver_remove_destruct(&mpu6886_driver) == ERROR_NONE);
return ERROR_NONE;
}
extern const ModuleSymbol mpu6886_module_symbols[]; extern const ModuleSymbol mpu6886_module_symbols[];
Module mpu6886_module = { Module mpu6886_module = {

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver pdm_mic_driver; extern Driver pdm_mic_driver;
static const Driver* pdm_mic_drivers[] = { static Driver* const pdm_mic_drivers[] = {
&pdm_mic_driver, &pdm_mic_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver pi4ioe5v6408_driver; extern Driver pi4ioe5v6408_driver;
static const Driver* pi4ioe5v6408_drivers[] = { static Driver* const pi4ioe5v6408_drivers[] = {
&pi4ioe5v6408_driver, &pi4ioe5v6408_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver py32ioexpander_driver; extern Driver py32ioexpander_driver;
static const Driver* py32ioexpander_drivers[] = { static Driver* const py32ioexpander_drivers[] = {
&py32ioexpander_driver, &py32ioexpander_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver qmi8658_driver; extern Driver qmi8658_driver;
static const Driver* qmi8658_drivers[] = { static Driver* const qmi8658_drivers[] = {
&qmi8658_driver, &qmi8658_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver rgb_display_driver; extern Driver rgb_display_driver;
static const Driver* rgbd_display_drivers[] = { static Driver* const rgbd_display_drivers[] = {
&rgb_display_driver, &rgb_display_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver rx8130ce_driver; extern Driver rx8130ce_driver;
static const Driver* rx8130ce_drivers[] = { static Driver* const rx8130ce_drivers[] = {
&rx8130ce_driver, &rx8130ce_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver sc2356_driver; extern Driver sc2356_driver;
static const Driver* sc2356_drivers[] = { static Driver* const sc2356_drivers[] = {
&sc2356_driver, &sc2356_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver ssd1306_driver; extern Driver ssd1306_driver;
static const Driver* ssd1306_drivers[] = { static Driver* const ssd1306_drivers[] = {
&ssd1306_driver, &ssd1306_driver,
nullptr nullptr
}; };

View File

@ -7,7 +7,7 @@ extern "C" {
extern Driver st7123_driver; extern Driver st7123_driver;
extern Driver st7123_touch_driver; extern Driver st7123_touch_driver;
static const Driver* st7123_drivers[] = { static Driver* const st7123_drivers[] = {
&st7123_driver, &st7123_driver,
&st7123_touch_driver, &st7123_touch_driver,
nullptr nullptr

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver st7701_driver; extern Driver st7701_driver;
static const Driver* st7701_drivers[] = { static Driver* const st7701_drivers[] = {
&st7701_driver, &st7701_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver st7735_driver; extern Driver st7735_driver;
static const Driver* st7735_drivers[] = { static Driver* const st7735_drivers[] = {
&st7735_driver, &st7735_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver st7789_i8080_driver; extern Driver st7789_i8080_driver;
static const Driver* st7789_i8080_drivers[] = { static Driver* const st7789_i8080_drivers[] = {
&st7789_i8080_driver, &st7789_i8080_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver st7789_driver; extern Driver st7789_driver;
static const Driver* st7789_drivers[] = { static Driver* const st7789_drivers[] = {
&st7789_driver, &st7789_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver st7796_i8080_driver; extern Driver st7796_i8080_driver;
static const Driver* st7796_i8080_drivers[] = { static Driver* const st7796_i8080_drivers[] = {
&st7796_i8080_driver, &st7796_i8080_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver st7796_driver; extern Driver st7796_driver;
static const Driver* st7796_drivers[] = { static Driver* const st7796_drivers[] = {
&st7796_driver, &st7796_driver,
nullptr nullptr
}; };

View File

@ -7,7 +7,7 @@ extern "C" {
extern Driver sy6970_driver; extern Driver sy6970_driver;
extern Driver sy6970_power_supply_driver; extern Driver sy6970_power_supply_driver;
static const Driver* sy6970_drivers[] = { static Driver* const sy6970_drivers[] = {
&sy6970_driver, &sy6970_driver,
&sy6970_power_supply_driver, &sy6970_power_supply_driver,
nullptr nullptr

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver tca8418_driver; extern Driver tca8418_driver;
static const Driver* tca8418_drivers[] = { static Driver* const tca8418_drivers[] = {
&tca8418_driver, &tca8418_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver tca9534_driver; extern Driver tca9534_driver;
static const Driver* tca9534_drivers[] = { static Driver* const tca9534_drivers[] = {
&tca9534_driver, &tca9534_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver tca95xx_driver; extern Driver tca95xx_driver;
static const Driver* tca95xx_drivers[] = { static Driver* const tca95xx_drivers[] = {
&tca95xx_driver, &tca95xx_driver,
nullptr nullptr
}; };

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver xl9555_driver; extern Driver xl9555_driver;
static const Driver* xl9555_drivers[] = { static Driver* const xl9555_drivers[] = {
&xl9555_driver, &xl9555_driver,
nullptr nullptr
}; };

View File

@ -7,7 +7,7 @@ extern "C" {
extern Driver xpt2046_driver; extern Driver xpt2046_driver;
extern Driver xpt2046_power_supply_driver; extern Driver xpt2046_power_supply_driver;
static const Driver* xpt2046_drivers[] = { static Driver* const xpt2046_drivers[] = {
&xpt2046_driver, &xpt2046_driver,
&xpt2046_power_supply_driver, &xpt2046_power_supply_driver,
nullptr nullptr

View File

@ -7,7 +7,7 @@ extern "C" {
extern Driver xpt2046_softspi_driver; extern Driver xpt2046_softspi_driver;
extern Driver xpt2046_softspi_power_supply_driver; extern Driver xpt2046_softspi_power_supply_driver;
static const Driver* xpt2046_softspi_drivers[] = { static Driver* const xpt2046_softspi_drivers[] = {
&xpt2046_softspi_driver, &xpt2046_softspi_driver,
&xpt2046_softspi_power_supply_driver, &xpt2046_softspi_power_supply_driver,
nullptr nullptr

View File

@ -6,7 +6,7 @@ extern "C" {
extern Driver hal_device_driver; extern Driver hal_device_driver;
static const Driver* hal_device_drivers[] = { static Driver* const hal_device_drivers[] = {
&hal_device_driver, &hal_device_driver,
nullptr nullptr
}; };

View File

@ -57,7 +57,7 @@ struct Module {
* When the module is started, these drivers are constructed and added to the module. * When the module is started, these drivers are constructed and added to the module.
* When the module is stopped, these drivers are removed from the module and destroyed. * When the module is stopped, these drivers are removed from the module and destroyed.
*/ */
const struct Driver** drivers; struct Driver* const* drivers;
/** /**
* A list of symbols exported by the module. * A list of symbols exported by the module.
* Should be terminated by MODULE_SYMBOL_TERMINATOR. * Should be terminated by MODULE_SYMBOL_TERMINATOR.

View File

@ -70,7 +70,7 @@ error_t module_start(Module* module) {
auto* driver_location = module->drivers; auto* driver_location = module->drivers;
while (*driver_location != nullptr) { while (*driver_location != nullptr) {
auto driver = *driver_location; auto driver = *driver_location;
driver_construct_add(driver); check(driver_construct_add(driver) == ERROR_NONE);
driver_location++; driver_location++;
} }
} }
@ -92,11 +92,12 @@ error_t module_stop(Module* module) {
if (!internal->started) return ERROR_NONE; if (!internal->started) return ERROR_NONE;
if (module->drivers != nullptr) { if (module->drivers != nullptr) {
auto* driver_location = module->drivers; size_t count = 0;
while (*driver_location != nullptr) { while (module->drivers[count] != nullptr) {
auto driver = *driver_location; count++;
driver_remove_destruct(driver); }
driver_location++; for (size_t i = count; i-- > 0;) {
check(driver_remove_destruct(module->drivers[i]) == ERROR_NONE);
} }
} }
@ -105,7 +106,6 @@ error_t module_stop(Module* module) {
if (error != ERROR_NONE) { if (error != ERROR_NONE) {
return error; return error;
} }
} }
internal->started = false; internal->started = false;