Kernel and TactilitySDK improvements (#479)

* **New Features**
  * Expanded public device and driver APIs (accessors, sync, lifecycle, binding) and a module construct+start helper.
  * Added kernel symbol registry and new exported symbols (lvgl, C++ nothrow, I2S APIs, additional math funcs).

* **Refactor**
  * Renamed device traversal APIs for consistency (device_for_each*).
  * Moved inline helpers to explicit public declarations.

* **Chores**
  * Replaced several shell release scripts with Python-based SDK release tooling.
* **Style**
  * Header naming consistency fixes.
This commit is contained in:
Ken Van Hoeylandt
2026-02-03 23:24:37 +01:00
committed by GitHub
parent 9cc96fd32b
commit 9a672a30ff
29 changed files with 684 additions and 217 deletions
+2
View File
@@ -1,5 +1,6 @@
#include <private/elf_symbol.h>
#include <cstddef>
#include <new>
#include <symbols/cplusplus.h>
@@ -17,6 +18,7 @@ extern "C" {
const esp_elfsym cplusplus_symbols[] = {
ESP_ELFSYM_EXPORT(_Znwj), // operator new(unsigned int)
ESP_ELFSYM_EXPORT(_ZdlPvj), // operator delete(void*, unsigned int)
{ "_ZSt7nothrow", (void*)&std::nothrow },
// cxx_guards
ESP_ELFSYM_EXPORT(__cxa_pure_virtual), // class-related, see https://arobenko.github.io/bare_metal_cpp/
ESP_ELFSYM_EXPORT(__cxa_guard_acquire),
+1 -1
View File
@@ -9,7 +9,7 @@ using namespace tt::hal;
static Device* find_first_gpio_controller() {
Device* device_result = nullptr;
for_each_device_of_type(&GPIO_CONTROLLER_TYPE, &device_result, [](Device* device, void* context) {
device_for_each_of_type(&GPIO_CONTROLLER_TYPE, &device_result, [](Device* device, void* context) {
if (device_is_ready(device)) {
auto** device_result_ptr = static_cast<Device**>(context);
*device_result_ptr = device;
+33 -1
View File
@@ -51,6 +51,9 @@
#include <Tactility/Tactility.h>
#include <driver/i2s_common.h>
#include <driver/i2s_std.h>
extern "C" {
extern double __floatsidf(int x);
@@ -97,19 +100,32 @@ const esp_elfsym main_symbols[] {
ESP_ELFSYM_EXPORT(ceil),
ESP_ELFSYM_EXPORT(fabs),
ESP_ELFSYM_EXPORT(floor),
ESP_ELFSYM_EXPORT(sinf),
ESP_ELFSYM_EXPORT(cosf),
ESP_ELFSYM_EXPORT(fabsf),
#ifndef _REENT_ONLY
ESP_ELFSYM_EXPORT(acos),
ESP_ELFSYM_EXPORT(acosf),
ESP_ELFSYM_EXPORT(asin),
ESP_ELFSYM_EXPORT(asinf),
ESP_ELFSYM_EXPORT(atan2),
ESP_ELFSYM_EXPORT(cos),
ESP_ELFSYM_EXPORT(atan2f),
ESP_ELFSYM_EXPORT(sinh),
ESP_ELFSYM_EXPORT(sinhf),
ESP_ELFSYM_EXPORT(exp),
ESP_ELFSYM_EXPORT(expf),
ESP_ELFSYM_EXPORT(ldexp),
ESP_ELFSYM_EXPORT(ldexpf),
ESP_ELFSYM_EXPORT(log),
ESP_ELFSYM_EXPORT(logf),
ESP_ELFSYM_EXPORT(log10),
ESP_ELFSYM_EXPORT(log10f),
ESP_ELFSYM_EXPORT(pow),
ESP_ELFSYM_EXPORT(powf),
ESP_ELFSYM_EXPORT(sqrt),
ESP_ELFSYM_EXPORT(sqrtf),
ESP_ELFSYM_EXPORT(fmod),
ESP_ELFSYM_EXPORT(fmodf),
#endif
// sys/errno.h
ESP_ELFSYM_EXPORT(__errno),
@@ -339,6 +355,22 @@ const esp_elfsym main_symbols[] {
ESP_ELFSYM_EXPORT(esp_netif_get_handle_from_ifkey),
// Locale
ESP_ELFSYM_EXPORT(localeconv),
//i2s_common.h
ESP_ELFSYM_EXPORT(i2s_new_channel),
ESP_ELFSYM_EXPORT(i2s_del_channel),
ESP_ELFSYM_EXPORT(i2s_channel_enable),
ESP_ELFSYM_EXPORT(i2s_channel_disable),
ESP_ELFSYM_EXPORT(i2s_channel_write),
ESP_ELFSYM_EXPORT(i2s_channel_get_info),
ESP_ELFSYM_EXPORT(i2s_channel_read),
ESP_ELFSYM_EXPORT(i2s_channel_register_event_callback),
ESP_ELFSYM_EXPORT(i2s_channel_preload_data),
ESP_ELFSYM_EXPORT(i2s_channel_tune_rate),
//i2s_std.h
ESP_ELFSYM_EXPORT(i2s_channel_init_std_mode),
ESP_ELFSYM_EXPORT(i2s_channel_reconfig_std_clock),
ESP_ELFSYM_EXPORT(i2s_channel_reconfig_std_slot),
ESP_ELFSYM_EXPORT(i2s_channel_reconfig_std_gpio),
// delimiter
ESP_ELFSYM_END
};