mirror of
https://github.com/vicliu624/trail-mate.git
synced 2026-08-06 18:59:43 +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:
@@ -18,7 +18,7 @@ void apply_reply_label(lv_obj_t* label);
|
||||
|
||||
// message row + bubble
|
||||
void apply_message_row(lv_obj_t* row);
|
||||
void apply_bubble(lv_obj_t* bubble, bool is_self);
|
||||
void apply_bubble(lv_obj_t* bubble, bool is_self, bool source_unverified = false);
|
||||
void apply_bubble_text(lv_obj_t* label);
|
||||
void apply_bubble_time(lv_obj_t* label);
|
||||
void apply_bubble_status(lv_obj_t* label);
|
||||
|
||||
@@ -7,6 +7,7 @@ namespace ui::screens::network::micron
|
||||
{
|
||||
|
||||
constexpr std::size_t kMaxAnchorNameBytes = 48;
|
||||
constexpr std::size_t kMaxLinkTargetBytes = 160;
|
||||
constexpr std::size_t kMaxTableCells = 6;
|
||||
|
||||
enum class Align : std::uint8_t
|
||||
@@ -47,9 +48,28 @@ struct LinkFields
|
||||
char anchor[kMaxAnchorNameBytes] = {};
|
||||
};
|
||||
|
||||
struct ColorToken
|
||||
{
|
||||
bool valid = false;
|
||||
std::uint32_t rgb = 0;
|
||||
std::size_t consumed = 0;
|
||||
};
|
||||
|
||||
struct PartialReference
|
||||
{
|
||||
bool valid = false;
|
||||
bool has_display_hint = false;
|
||||
std::uint16_t display_hint = 0;
|
||||
LinkTargetKind target_kind = LinkTargetKind::Unknown;
|
||||
char target[kMaxLinkTargetBytes] = {};
|
||||
};
|
||||
|
||||
bool anchor_name_char(char ch);
|
||||
void slug_from_text(const char* text, char* out, std::size_t out_len);
|
||||
|
||||
bool parse_color_text(const char* text, std::size_t len, std::uint32_t* out);
|
||||
ColorToken parse_color_token(const char* line, std::size_t len, std::size_t index);
|
||||
|
||||
TableOpenOptions parse_table_opening_tag(const char* line);
|
||||
std::size_t parse_table_cells(const char* row_text,
|
||||
Span* cells,
|
||||
@@ -64,7 +84,9 @@ bool append_anchor_to_target(const char* target,
|
||||
char* out,
|
||||
std::size_t out_len);
|
||||
LinkTargetKind classify_link_target(const char* target);
|
||||
const char* link_target_kind_label(LinkTargetKind kind);
|
||||
|
||||
bool extract_partial_url(const char* line, char* out, std::size_t out_len);
|
||||
PartialReference parse_partial_reference(const char* line);
|
||||
|
||||
} // namespace ui::screens::network::micron
|
||||
|
||||
@@ -78,6 +78,8 @@ enum class SettingId : std::uint16_t
|
||||
RtWifiPort,
|
||||
RtWifiAuto,
|
||||
RtAnonymousPeer,
|
||||
RtCallWire,
|
||||
RtLocationRequests,
|
||||
NetUsePreset,
|
||||
NetPreset,
|
||||
NetBw,
|
||||
@@ -252,6 +254,8 @@ struct SettingsData
|
||||
bool rt_wifi_gateway_enabled = true;
|
||||
bool rt_wifi_auto_connect = true;
|
||||
bool rt_anonymous_peer = false;
|
||||
int rt_call_wire = 0;
|
||||
bool rt_location_requests = false;
|
||||
char rt_display_name[32] = "--";
|
||||
char rt_identity_hash[36] = "--";
|
||||
char rt_lxmf_address[36] = "--";
|
||||
|
||||
@@ -12,6 +12,7 @@ enum class Slot : std::uint8_t
|
||||
I18nFontLoad,
|
||||
RouteImage,
|
||||
SettingsAction,
|
||||
ReticulumPing,
|
||||
Count,
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
#include "chat/domain/reticulum_identity.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
namespace ui::widgets::reticulum_ping
|
||||
{
|
||||
|
||||
void show_loading(
|
||||
const std::uint8_t destination_hash[::chat::kReticulumPeerHashSize],
|
||||
const char* display_name);
|
||||
void show_send_failure(const char* detail);
|
||||
void show_delivered(
|
||||
const std::uint8_t destination_hash[::chat::kReticulumPeerHashSize],
|
||||
std::uint32_t latency_ms,
|
||||
std::uint8_t hops);
|
||||
void show_timeout(
|
||||
const std::uint8_t destination_hash[::chat::kReticulumPeerHashSize],
|
||||
std::uint32_t elapsed_ms);
|
||||
void dismiss();
|
||||
bool active_for(
|
||||
const std::uint8_t destination_hash[::chat::kReticulumPeerHashSize]);
|
||||
|
||||
} // namespace ui::widgets::reticulum_ping
|
||||
Reference in New Issue
Block a user