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:
committed by
GitHub
parent
d3556fb536
commit
19b11eb9a8
@@ -13,6 +13,9 @@
|
||||
#endif
|
||||
|
||||
#define DEFINE_MODULE_SYMBOL(symbol) { #symbol, (void*)&symbol }
|
||||
/** For an overloaded symbol (e.g. libc++/libstdc++'s float/double/long double math overloads),
|
||||
* where a bare `&symbol` is ambiguous - `type` picks the overload to take the address of. */
|
||||
#define DEFINE_MODULE_SYMBOL_SIGNATURE(symbol, type) { #symbol, (void*)(type)&symbol }
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
@@ -125,7 +125,7 @@ static error_t stop(Device* device) {
|
||||
|
||||
// endregion
|
||||
|
||||
extern Module root_module;
|
||||
extern Module kernel_module;
|
||||
|
||||
Driver gpio_backlight_driver = {
|
||||
.name = "gpio_backlight",
|
||||
@@ -134,7 +134,7 @@ Driver gpio_backlight_driver = {
|
||||
.stop_device = stop,
|
||||
.api = &GPIO_BACKLIGHT_API,
|
||||
.device_type = &BACKLIGHT_TYPE,
|
||||
.owner = &root_module,
|
||||
.owner = &kernel_module,
|
||||
.internal = nullptr
|
||||
};
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ static error_t stop(Device* device) {
|
||||
return ERROR_NONE;
|
||||
}
|
||||
|
||||
extern Module root_module;
|
||||
extern Module kernel_module;
|
||||
|
||||
Driver gpio_hog_driver = {
|
||||
.name = "gpio_hog",
|
||||
@@ -66,6 +66,6 @@ Driver gpio_hog_driver = {
|
||||
.stop_device = stop,
|
||||
.api = nullptr,
|
||||
.device_type = &GPIO_HOG_TYPE,
|
||||
.owner = &root_module,
|
||||
.owner = &kernel_module,
|
||||
.internal = nullptr
|
||||
};
|
||||
|
||||
@@ -126,7 +126,7 @@ static error_t stop(Device* device) {
|
||||
|
||||
// endregion
|
||||
|
||||
extern Module root_module;
|
||||
extern Module kernel_module;
|
||||
|
||||
Driver pwm_backlight_driver = {
|
||||
.name = "pwm_backlight",
|
||||
@@ -135,7 +135,7 @@ Driver pwm_backlight_driver = {
|
||||
.stop_device = stop,
|
||||
.api = &PWM_BACKLIGHT_API,
|
||||
.device_type = &BACKLIGHT_TYPE,
|
||||
.owner = &root_module,
|
||||
.owner = &kernel_module,
|
||||
.internal = nullptr
|
||||
};
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ static error_t stop(Device* device) {
|
||||
|
||||
// endregion
|
||||
|
||||
extern Module root_module;
|
||||
extern Module kernel_module;
|
||||
|
||||
Driver rgb_led_gpio_driver = {
|
||||
.name = "rgb_led_gpio",
|
||||
@@ -155,7 +155,7 @@ Driver rgb_led_gpio_driver = {
|
||||
.stop_device = stop,
|
||||
.api = &RGB_LED_GPIO_API,
|
||||
.device_type = &RGB_LED_TYPE,
|
||||
.owner = &root_module,
|
||||
.owner = &kernel_module,
|
||||
.internal = nullptr
|
||||
};
|
||||
|
||||
|
||||
@@ -141,7 +141,7 @@ static error_t stop(Device* device) {
|
||||
|
||||
// endregion
|
||||
|
||||
extern Module root_module;
|
||||
extern Module kernel_module;
|
||||
|
||||
Driver rgb_led_pwm_driver = {
|
||||
.name = "rgb_led_pwm",
|
||||
@@ -150,7 +150,7 @@ Driver rgb_led_pwm_driver = {
|
||||
.stop_device = stop,
|
||||
.api = &RGB_LED_PWM_API,
|
||||
.device_type = &RGB_LED_TYPE,
|
||||
.owner = &root_module,
|
||||
.owner = &kernel_module,
|
||||
.internal = nullptr
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -570,5 +570,5 @@ const struct ModuleSymbol KERNEL_SYMBOLS[] = {
|
||||
DEFINE_MODULE_SYMBOL(properties_file_set),
|
||||
DEFINE_MODULE_SYMBOL(properties_file_for_each),
|
||||
// terminator
|
||||
MODULE_SYMBOL_TERMINATOR
|
||||
MODULE_SYMBOL_TERMINATOR,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user