mirror of
https://github.com/vicliu624/trail-mate.git
synced 2026-08-28 13:34:07 +00:00
feat(reticulum): complete messaging, calls, and P4 support
Add official Sideband/LXST messaging and telephony flows, realtime resource ownership, call and ping UI, durable unread state, and bounded Nomad/Micron browsing. Integrate ESP32-P4/C6 gateway transport, TinyUSB CDC, ES8311 audio, shared Codec2 call media, Reticulum defaults, compatibility settings, and conformance coverage.
This commit is contained in:
@@ -326,6 +326,7 @@ if(BUILD_TESTING)
|
||||
add_executable(trailmate_reticulum_supported_subset_vectors_smoke
|
||||
"${TRAIL_MATE_REPO_ROOT}/tests/reticulum_conformance/test_reticulum_supported_subset_vectors.cpp"
|
||||
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/lxmf/lxmf_wire.cpp"
|
||||
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/reticulum/lxst_telephony_wire.cpp"
|
||||
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/reticulum/reticulum_wire.cpp")
|
||||
target_include_directories(trailmate_reticulum_supported_subset_vectors_smoke
|
||||
PRIVATE
|
||||
@@ -562,6 +563,35 @@ if(BUILD_TESTING)
|
||||
add_test(NAME trailmate_runtime_async_smoke
|
||||
COMMAND trailmate_runtime_async_smoke)
|
||||
|
||||
add_executable(trailmate_app_config_defaults_smoke
|
||||
"${TRAIL_MATE_REPO_ROOT}/modules/core_sys/tests/test_app_config_defaults.cpp")
|
||||
target_include_directories(trailmate_app_config_defaults_smoke
|
||||
PRIVATE
|
||||
"${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
|
||||
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
|
||||
target_compile_definitions(trailmate_app_config_defaults_smoke
|
||||
PRIVATE TRAIL_MATE_LORA_TX_POWER_MAX_DBM=22)
|
||||
target_compile_features(trailmate_app_config_defaults_smoke
|
||||
PRIVATE cxx_std_17)
|
||||
add_test(NAME trailmate_app_config_defaults_smoke
|
||||
COMMAND trailmate_app_config_defaults_smoke)
|
||||
|
||||
# MinGW.org's libstdc++ is built without gthreads and does not expose
|
||||
# std::mutex. Linux and modern host toolchains exercise this runtime test.
|
||||
if(NOT MINGW)
|
||||
add_executable(trailmate_reticulum_call_runtime_smoke
|
||||
"${TRAIL_MATE_REPO_ROOT}/modules/core_sys/tests/test_reticulum_call_runtime.cpp"
|
||||
"${TRAIL_MATE_REPO_ROOT}/modules/core_sys/src/platform/ui/reticulum_call_runtime.cpp"
|
||||
"${TRAIL_MATE_REPO_ROOT}/modules/core_sys/src/sys/clock.cpp")
|
||||
target_include_directories(trailmate_reticulum_call_runtime_smoke
|
||||
PRIVATE
|
||||
"${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include")
|
||||
target_compile_features(trailmate_reticulum_call_runtime_smoke
|
||||
PRIVATE cxx_std_17)
|
||||
add_test(NAME trailmate_reticulum_call_runtime_smoke
|
||||
COMMAND trailmate_reticulum_call_runtime_smoke)
|
||||
endif()
|
||||
|
||||
add_executable(trailmate_storage_event_runtime_smoke
|
||||
"${TRAIL_MATE_REPO_ROOT}/modules/core_sys/tests/test_storage_event_runtime.cpp")
|
||||
target_include_directories(trailmate_storage_event_runtime_smoke
|
||||
@@ -645,6 +675,17 @@ if(BUILD_TESTING)
|
||||
add_test(NAME trailmate_network_micron_markup_contract_smoke
|
||||
COMMAND trailmate_network_micron_markup_contract_smoke)
|
||||
|
||||
add_executable(trailmate_network_micron_renderer_fixture_smoke
|
||||
"${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_network_micron_renderer_fixture.cpp"
|
||||
"${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/network/micron_markup_contract.cpp")
|
||||
target_include_directories(trailmate_network_micron_renderer_fixture_smoke
|
||||
PRIVATE
|
||||
"${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include")
|
||||
target_compile_features(trailmate_network_micron_renderer_fixture_smoke
|
||||
PRIVATE cxx_std_17)
|
||||
add_test(NAME trailmate_network_micron_renderer_fixture_smoke
|
||||
COMMAND trailmate_network_micron_renderer_fixture_smoke)
|
||||
|
||||
add_executable(trailmate_pinyin_lookup_smoke
|
||||
"${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_pinyin_lookup.cpp")
|
||||
target_include_directories(trailmate_pinyin_lookup_smoke
|
||||
|
||||
@@ -111,6 +111,48 @@ int main()
|
||||
rtdir::bind_mesh_peer_directory(nullptr);
|
||||
assert(std::strcmp(rtdir::lxmf_addresses_path(), "/mesh/peers.bin") == 0);
|
||||
|
||||
rtdir::AnnounceRecord announce{};
|
||||
announce.valid = true;
|
||||
for (std::size_t index = 0; index < rtdir::kReticulumHashSize; ++index)
|
||||
{
|
||||
announce.destination_hash[index] = static_cast<uint8_t>(0x10U + index);
|
||||
announce.identity_hash[index] = static_cast<uint8_t>(0x30U + index);
|
||||
}
|
||||
announce.aspect = rtdir::AnnounceAspect::LxmfDelivery;
|
||||
announce.source = rtdir::EntrySource::RuntimeRx;
|
||||
announce.first_seen_s = 10;
|
||||
announce.last_seen_s = 20;
|
||||
announce.hops = 2;
|
||||
announce.delivery = true;
|
||||
std::snprintf(announce.display_name,
|
||||
sizeof(announce.display_name),
|
||||
"%s",
|
||||
"first announce");
|
||||
assert(rtdir::record_announce(announce).saved);
|
||||
|
||||
announce.first_seen_s = 30;
|
||||
announce.last_seen_s = 40;
|
||||
announce.hops = 1;
|
||||
std::snprintf(announce.display_name,
|
||||
sizeof(announce.display_name),
|
||||
"%s",
|
||||
"updated announce");
|
||||
assert(rtdir::record_announce(announce).saved);
|
||||
|
||||
rtdir::AnnounceRecord loaded_announces[2] = {};
|
||||
std::size_t loaded_announce_count = 0;
|
||||
const rtdir::Status announce_load_status =
|
||||
rtdir::load_announces(loaded_announces,
|
||||
2,
|
||||
&loaded_announce_count);
|
||||
assert(announce_load_status.loaded);
|
||||
assert(loaded_announce_count == 1);
|
||||
assert(loaded_announces[0].first_seen_s == 10);
|
||||
assert(loaded_announces[0].last_seen_s == 40);
|
||||
assert(loaded_announces[0].hops == 1);
|
||||
assert(std::strcmp(loaded_announces[0].display_name,
|
||||
"updated announce") == 0);
|
||||
|
||||
rtdir::LxmfAddressRecord alpha = make_address("alpha trail", true, true);
|
||||
char alpha_destination[rtpage::kReticulumPageDestinationTextSize] = {};
|
||||
format_hash_hex(alpha.destination_hash,
|
||||
|
||||
Reference in New Issue
Block a user