mirror of
https://github.com/ByteWelder/Tactility.git
synced 2026-02-21 16:05:05 +00:00
Add app path functions to TactilityC
This commit is contained in:
parent
5cc5b50694
commit
f56ed2c581
@ -7,6 +7,7 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef void* AppHandle;
|
typedef void* AppHandle;
|
||||||
|
typedef void* AppPathsHandle;
|
||||||
|
|
||||||
/** @return the bundle that belongs to this application, or null if it wasn't started with parameters. */
|
/** @return the bundle that belongs to this application, or null if it wasn't started with parameters. */
|
||||||
BundleHandle _Nullable tt_app_get_parameters(AppHandle handle);
|
BundleHandle _Nullable tt_app_get_parameters(AppHandle handle);
|
||||||
@ -14,7 +15,7 @@ BundleHandle _Nullable tt_app_get_parameters(AppHandle handle);
|
|||||||
/**
|
/**
|
||||||
* Set the result before closing an app.
|
* Set the result before closing an app.
|
||||||
* The result and bundle are passed along to the app that launched this app, when this app is closed.
|
* The result and bundle are passed along to the app that launched this app, when this app is closed.
|
||||||
* @param[in] handle the app context handle to set the result for
|
* @param[in] handle the app handle to set the result for
|
||||||
* @param[in] result the result state to set
|
* @param[in] result the result state to set
|
||||||
* @param[in] bundle the result bundle to set
|
* @param[in] bundle the result bundle to set
|
||||||
*/
|
*/
|
||||||
@ -23,6 +24,21 @@ void tt_app_set_result(AppHandle handle, AppResult result, BundleHandle _Nullabl
|
|||||||
/** @return true if a result was set for this app context */
|
/** @return true if a result was set for this app context */
|
||||||
bool tt_app_has_result(AppHandle handle);
|
bool tt_app_has_result(AppHandle handle);
|
||||||
|
|
||||||
|
/** Get the path to the data directory of this app.
|
||||||
|
* @param[in] handle the app handle
|
||||||
|
* @param[out] buffer the output buffer (recommended size is 256 bytes)
|
||||||
|
* @param[inout] size used as input for maximum buffer size (including null terminator) and is set with the path string length by this function
|
||||||
|
*/
|
||||||
|
void tt_app_get_data_directory(AppPathsHandle handle, char* buffer, size_t& size);
|
||||||
|
|
||||||
|
/** Get the path to the data directory of this app, with LVGL drive letter prefix applied.
|
||||||
|
* The recommended buffer size is 256 bytes.
|
||||||
|
* @param[in] handle the app handle
|
||||||
|
* @param[out] buffer the output buffer (recommended size is 256 bytes)
|
||||||
|
* @param[inout] size used as input for maximum buffer size (including null terminator) and is set with the path string length by this function
|
||||||
|
*/
|
||||||
|
void tt_app_get_data_directory_lvgl(AppPathsHandle handle, char* buffer, size_t& size);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start an app by id.
|
* Start an app by id.
|
||||||
* @param[in] appId the app manifest id
|
* @param[in] appId the app manifest id
|
||||||
|
|||||||
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
||||||
|
constexpr auto* TAG = "tt_app";
|
||||||
|
|
||||||
#define HANDLE_AS_APP_CONTEXT(handle) ((tt::app::AppContext*)(handle))
|
#define HANDLE_AS_APP_CONTEXT(handle) ((tt::app::AppContext*)(handle))
|
||||||
|
|
||||||
BundleHandle _Nullable tt_app_get_parameters(AppHandle handle) {
|
BundleHandle _Nullable tt_app_get_parameters(AppHandle handle) {
|
||||||
@ -31,4 +33,38 @@ void tt_app_stop() {
|
|||||||
tt::app::stop();
|
tt::app::stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tt_app_get_data_directory(AppPathsHandle handle, char* buffer, size_t& size) {
|
||||||
|
assert(buffer != nullptr);
|
||||||
|
assert(size > 0);
|
||||||
|
auto paths = HANDLE_AS_APP_CONTEXT(handle)->getPaths();
|
||||||
|
auto data_path = paths->getDataDirectory();
|
||||||
|
auto expected_length = data_path.length() + 1;
|
||||||
|
if (size < expected_length) {
|
||||||
|
TT_LOG_E(TAG, "Path buffer not large enough (%d < %d)", size, expected_length);
|
||||||
|
size = 0;
|
||||||
|
buffer[0] = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
strcpy(buffer, data_path.c_str());
|
||||||
|
size = data_path.length();
|
||||||
|
}
|
||||||
|
|
||||||
|
void tt_app_get_data_directory_lvgl(AppPathsHandle handle, char* buffer, size_t& size) {
|
||||||
|
assert(buffer != nullptr);
|
||||||
|
assert(size > 0);
|
||||||
|
auto paths = HANDLE_AS_APP_CONTEXT(handle)->getPaths();
|
||||||
|
auto data_path = paths->getDataDirectoryLvgl();
|
||||||
|
auto expected_length = data_path.length() + 1;
|
||||||
|
if (size < expected_length) {
|
||||||
|
TT_LOG_E(TAG, "Path buffer not large enough (%d < %d)", size, expected_length);
|
||||||
|
size = 0;
|
||||||
|
buffer[0] = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
strcpy(buffer, data_path.c_str());
|
||||||
|
size = data_path.length();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -119,6 +119,8 @@ const esp_elfsym elf_symbols[] {
|
|||||||
ESP_ELFSYM_EXPORT(tt_app_selectiondialog_get_result_index),
|
ESP_ELFSYM_EXPORT(tt_app_selectiondialog_get_result_index),
|
||||||
ESP_ELFSYM_EXPORT(tt_app_alertdialog_start),
|
ESP_ELFSYM_EXPORT(tt_app_alertdialog_start),
|
||||||
ESP_ELFSYM_EXPORT(tt_app_alertdialog_get_result_index),
|
ESP_ELFSYM_EXPORT(tt_app_alertdialog_get_result_index),
|
||||||
|
ESP_ELFSYM_EXPORT(tt_app_get_data_directory),
|
||||||
|
ESP_ELFSYM_EXPORT(tt_app_get_data_directory_lvgl),
|
||||||
ESP_ELFSYM_EXPORT(tt_bundle_alloc),
|
ESP_ELFSYM_EXPORT(tt_bundle_alloc),
|
||||||
ESP_ELFSYM_EXPORT(tt_bundle_free),
|
ESP_ELFSYM_EXPORT(tt_bundle_free),
|
||||||
ESP_ELFSYM_EXPORT(tt_bundle_opt_bool),
|
ESP_ELFSYM_EXPORT(tt_bundle_opt_bool),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user