Remove TactilityC and Firmware subprojects (#638)

- Removed TactilityC, moved its symbols to existing modules and several new ones (pthread-module, c-symbols-module, cpp-symbols-module, posix-symbols-module, freertos-module).
- Removed Firmware subproject and moved main() into Tactility subproject.
- Strengthened application archive, path, version, stack-size, and device validation.
- Moved symbol resolution for elf_loader to app-esp32-module.
- Improved `struct Module` declarations and made module and symbol definitions in modules more consistent.
- Removed old http download code from Tactility subproject.
- Rename app-module's source files for consistency.
- Add missing pthread symbols.
- Kernel module symbols are now resolvable on all platforms.
This commit is contained in:
Ken Van Hoeylandt
2026-08-29 21:06:43 +02:00
committed by GitHub
parent d3556fb536
commit 19b11eb9a8
99 changed files with 2678 additions and 2092 deletions
+30 -28
View File
@@ -11,42 +11,44 @@ extern "C" {
extern const ModuleSymbol KERNEL_SYMBOLS[];
static error_t start() {
extern Driver root_driver;
if (driver_construct_add(&root_driver) != ERROR_NONE) return ERROR_RESOURCE;
extern Driver battery_sense_driver;
if (driver_construct_add(&battery_sense_driver) != ERROR_NONE) return ERROR_RESOURCE;
extern Driver battery_sense_power_supply_driver;
if (driver_construct_add(&battery_sense_power_supply_driver) != ERROR_NONE) return ERROR_RESOURCE;
extern Driver gpio_hog_driver;
if (driver_construct_add(&gpio_hog_driver) != ERROR_NONE) return ERROR_RESOURCE;
extern Driver pwm_backlight_driver;
if (driver_construct_add(&pwm_backlight_driver) != ERROR_NONE) return ERROR_RESOURCE;
extern Driver gpio_backlight_driver;
if (driver_construct_add(&gpio_backlight_driver) != ERROR_NONE) return ERROR_RESOURCE;
extern Driver rgb_led_gpio_driver;
if (driver_construct_add(&rgb_led_gpio_driver) != ERROR_NONE) return ERROR_RESOURCE;
extern Driver rgb_led_pwm_driver;
if (driver_construct_add(&rgb_led_pwm_driver) != ERROR_NONE) return ERROR_RESOURCE;
return ERROR_NONE;
}
extern Driver root_driver;
extern Driver battery_sense_driver;
extern Driver battery_sense_power_supply_driver;
extern Driver gpio_hog_driver;
extern Driver pwm_backlight_driver;
extern Driver gpio_backlight_driver;
extern Driver rgb_led_gpio_driver;
extern Driver rgb_led_pwm_driver;
static error_t stop() {
return ERROR_NONE;
}
/**
* @warning Because the drivers have no owning module, they cannot be unbound.
* This is fine for now because we never unload the kernel once it's loaded.
*/
static Driver* const KERNEL_DRIVERS[] = {
&root_driver,
&battery_sense_driver,
&battery_sense_power_supply_driver,
&gpio_hog_driver,
&pwm_backlight_driver,
&gpio_backlight_driver,
&rgb_led_gpio_driver,
&rgb_led_pwm_driver,
nullptr,
};
Module root_module = {
Module kernel_module = {
.name = "kernel",
.start = start,
.stop = stop,
.symbols = (const struct ModuleSymbol*)KERNEL_SYMBOLS,
.internal = nullptr
.start = nullptr,
.stop = nullptr,
.drivers = KERNEL_DRIVERS,
.symbols = static_cast<const struct ModuleSymbol*>(KERNEL_SYMBOLS),
.internal = nullptr,
};
error_t kernel_init(Module* const dts_modules[], const DtsDevice dts_devices[]) {
LOG_I(TAG, "init");
if (module_construct_add_start(&root_module) != ERROR_NONE) {
if (module_construct_add_start(&kernel_module) != ERROR_NONE) {
LOG_E(TAG, "root module init failed");
return ERROR_RESOURCE;
}