mirror of
https://github.com/ByteWelder/Tactility.git
synced 2026-10-17 02:45:05 +00:00
* **New Features** * Added App Hub browsing with All, Installed, and Updates filters, plus options to install, remove, or update apps. * Added an installation activity indicator in the status bar. * Added a mesh command-line app for checking status and managing mesh settings and channels. * Radio region settings now persist across restarts and are applied to radio devices. * Added audio codec support for the LilyGo T-LoRa Pager. * Settings screens now use icons for selection actions. * **Improvements** * App Hub displays cached catalog results while a refresh is in progress. * System menu close controls receive focus automatically when no pointer is available.
78 lines
2.3 KiB
C++
78 lines
2.3 KiB
C++
// SPDX-License-Identifier: Apache-2.0
|
|
#include <mesh/mesh.h>
|
|
#include <mesh/mesh_service.h>
|
|
#include <mesh/module.h>
|
|
|
|
#include <app/manager.h>
|
|
#include <service/manager.h>
|
|
|
|
#include <tactility/error.h>
|
|
#include <tactility/module.h>
|
|
|
|
extern "C" {
|
|
|
|
static error_t start() {
|
|
error_t error = app_manager_add(&mesh_command_manifest);
|
|
if (error != ERROR_NONE) {
|
|
return error;
|
|
}
|
|
error = service_manager_add(&mesh_service_manifest, mesh_service_should_auto_start());
|
|
if (error != ERROR_NONE) {
|
|
app_manager_remove(mesh_command_manifest.id);
|
|
}
|
|
return error;
|
|
}
|
|
|
|
static error_t stop() {
|
|
error_t error = service_manager_stop(mesh_service_manifest.id);
|
|
if (error != ERROR_NONE && error != ERROR_NOT_FOUND) {
|
|
return error;
|
|
}
|
|
error = service_manager_remove(mesh_service_manifest.id);
|
|
if (error != ERROR_NONE) {
|
|
return error;
|
|
}
|
|
return app_manager_remove(mesh_command_manifest.id);
|
|
}
|
|
|
|
static const ModuleSymbol mesh_module_symbols[] = {
|
|
DEFINE_MODULE_SYMBOL(mesh_set_enabled),
|
|
DEFINE_MODULE_SYMBOL(mesh_is_enabled),
|
|
DEFINE_MODULE_SYMBOL(mesh_get_state),
|
|
DEFINE_MODULE_SYMBOL(mesh_state_to_string),
|
|
DEFINE_MODULE_SYMBOL(mesh_set_node_name),
|
|
DEFINE_MODULE_SYMBOL(mesh_get_node_name),
|
|
DEFINE_MODULE_SYMBOL(mesh_is_available),
|
|
DEFINE_MODULE_SYMBOL(mesh_get_backend_count),
|
|
DEFINE_MODULE_SYMBOL(mesh_get_backend_id),
|
|
DEFINE_MODULE_SYMBOL(mesh_set_backend),
|
|
DEFINE_MODULE_SYMBOL(mesh_get_backend),
|
|
DEFINE_MODULE_SYMBOL(mesh_get_preset_count),
|
|
DEFINE_MODULE_SYMBOL(mesh_get_preset_name),
|
|
DEFINE_MODULE_SYMBOL(mesh_set_preset),
|
|
DEFINE_MODULE_SYMBOL(mesh_get_preset),
|
|
DEFINE_MODULE_SYMBOL(mesh_send_text),
|
|
DEFINE_MODULE_SYMBOL(mesh_cancel),
|
|
DEFINE_MODULE_SYMBOL(mesh_raw_send),
|
|
DEFINE_MODULE_SYMBOL(mesh_message_get),
|
|
DEFINE_MODULE_SYMBOL(mesh_history_get),
|
|
DEFINE_MODULE_SYMBOL(mesh_get_nodes),
|
|
DEFINE_MODULE_SYMBOL(mesh_get_channels),
|
|
DEFINE_MODULE_SYMBOL(mesh_set_channel),
|
|
DEFINE_MODULE_SYMBOL(mesh_event_subscribe),
|
|
DEFINE_MODULE_SYMBOL(mesh_event_unsubscribe),
|
|
DEFINE_MODULE_SYMBOL(mesh_event_poll),
|
|
MODULE_SYMBOL_TERMINATOR
|
|
};
|
|
|
|
Module mesh_module = {
|
|
.name = "mesh",
|
|
.start = start,
|
|
.stop = stop,
|
|
.drivers = nullptr,
|
|
.symbols = mesh_module_symbols,
|
|
.internal = nullptr,
|
|
};
|
|
|
|
}
|