diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 48d33923..0f665e7b 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -7,6 +7,7 @@ import "meshtastic/config.proto"; import "meshtastic/connection_status.proto"; import "meshtastic/mesh.proto"; import "meshtastic/module_config.proto"; +import "meshtastic/device_ui.proto"; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; @@ -76,6 +77,11 @@ message AdminMessage { * */ SESSIONKEY_CONFIG = 8; + + /* + * device-ui config + */ + DEVICEUI_CONFIG = 9; } /* @@ -329,6 +335,21 @@ message AdminMessage { */ fixed32 set_time_only = 43; + /* + * Tell the node to send the stored ui data. + */ + bool get_ui_config_request = 44; + + /* + * Reply stored device ui data. + */ + DeviceUIConfig get_ui_config_response = 45; + + /* + * Tell the node to store UI data persistently. + */ + DeviceUIConfig store_ui_config = 46; + /* * Begins an edit transaction for config, module config, owner, and channel settings changes * This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings) diff --git a/meshtastic/device_ui.options b/meshtastic/device_ui.options new file mode 100644 index 00000000..64ca59c3 --- /dev/null +++ b/meshtastic/device_ui.options @@ -0,0 +1,5 @@ +*DeviceUIConfig.screen_brightness int_size:8 +*DeviceUIConfig.screen_timeout int_size:16 +*NodeFilter.node_name max_size:16 +*NodeFilter.hops_away int_size:8 +*NodeHighlight.node_name max_size:16 diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto new file mode 100644 index 00000000..82474b68 --- /dev/null +++ b/meshtastic/device_ui.proto @@ -0,0 +1,167 @@ +syntax = "proto3"; + +package meshtastic; + +option csharp_namespace = "Meshtastic.Protobufs"; +option go_package = "github.com/meshtastic/go/generated"; +option java_outer_classname = "LocalOnlyProtos"; +option java_package = "com.geeksville.mesh"; +option swift_prefix = ""; + +/* + * Protobuf structures for device-ui persistency + */ + +message DeviceUIConfig { + /* + * TFT display brightness 1..255 + */ + uint32 screen_brightness = 1; + + /* + * Screen timeout 0..900 + */ + uint32 screen_timeout = 2; + + /* + * Screen lock enabled + */ + bool screen_lock = 3; + + /* + * Color theme + */ + Theme theme = 4; + + /* + * Audible message alert enabled + */ + bool alert_enabled = 5; + + /* + * Localization + */ + Language language = 6; + + /* + * Node list filter + */ + NodeFilter node_filter = 7; + + /* + * Node list highlightening + */ + NodeHighlight node_highlight = 8; +} + + +message NodeFilter { + /* + * Filter unknown nodes + */ + bool unknown_switch = 1; + + /* + * Filter offline nodes + */ + bool offline_switch = 2; + + /* + * Filter nodes w/o public key + */ + bool public_key_switch = 3; + + /* + * Filter based on hops away + */ + int32 hops_away = 4; + + /* + * Filter nodes w/o position + */ + bool position_switch = 5; + + /* + * Filter nodes by matching name string + */ + string node_name = 6; + +} + +message NodeHighlight { + /* + * Hightlight nodes w/ active chat + */ + bool chat_switch = 1; + + /* + * Highlight nodes w/ position + */ + bool position_switch = 2; + + /* + * Highlight nodes w/ telemetry data + */ + bool telemetry_switch = 3; + + /* + * Highlight nodes w/ iaq data + */ + bool iaq_switch = 4; + + /* + * Highlight nodes by matching name string + */ + string node_name = 5; + +} + +enum Theme { + /* + * Dark + */ + DARK = 0; + /* + * Light + */ + LIGHT = 1; + /* + * Red + */ + RED = 2; +} + +/* + * Localization + */ +enum Language { + /* + * English + */ + ENGLISH = 0; + + /* + * French + */ + FRENCH = 1; + + /* + * German + */ + GERMAN = 2; + + /* + * Italian + */ + ITALIAN = 3; + + /* + * Portuguese + */ + PORTUGUESE = 4; + + /* + * Spanish + */ + SPANISH = 5; +} \ No newline at end of file diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 6b9be53a..172f286f 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -8,6 +8,7 @@ import "meshtastic/module_config.proto"; import "meshtastic/portnums.proto"; import "meshtastic/telemetry.proto"; import "meshtastic/xmodem.proto"; +import "meshtastic/device_ui.proto"; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; @@ -1640,6 +1641,11 @@ message FromRadio { * Notification message to the client */ ClientNotification clientNotification = 16; + + /* + * Persistent data for device-ui + */ + DeviceUIConfig deviceuiConfig = 17; } }