From f6f0970d21df5ac5a4b321239ab52cb46cbce0cd Mon Sep 17 00:00:00 2001 From: liamcottle Date: Wed, 17 Jul 2024 17:12:06 +1200 Subject: [PATCH] update mesh.proto to add new hardware models --- src/protos/meshtastic/mesh.proto | 215 +++++++++++++++++++++++++++++-- 1 file changed, 201 insertions(+), 14 deletions(-) diff --git a/src/protos/meshtastic/mesh.proto b/src/protos/meshtastic/mesh.proto index 76aa01b..5c4e878 100644 --- a/src/protos/meshtastic/mesh.proto +++ b/src/protos/meshtastic/mesh.proto @@ -319,6 +319,26 @@ enum HardwareModel { */ LORA_TYPE = 19; + /* + * wiphone https://www.wiphone.io/ + */ + WIPHONE = 20; + + /* + * WIO Tracker WM1110 family from Seeed Studio. Includes wio-1110-tracker and wio-1110-sdk + */ + WIO_WM1110 = 21; + + /* + * RAK2560 Solar base station based on RAK4630 + */ + RAK2560 = 22; + + /* + * Heltec HRU-3601: https://heltec.org/project/hru-3601/ + */ + HELTEC_HRU_3601 = 23; + /* * B&Q Consulting Station Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:station */ @@ -340,8 +360,8 @@ enum HardwareModel { SENSELORA_S3 = 28; /* - * Canary Radio Company - CanaryOne: https://canaryradio.io/products/canaryone - */ + * Canary Radio Company - CanaryOne: https://canaryradio.io/products/canaryone + */ CANARYONE = 29; /* @@ -456,13 +476,13 @@ enum HardwareModel { * LilyGo T-Watch S3 with ESP32-S3 CPU and IPS display */ T_WATCH_S3 = 51; - + /* * Bobricius Picomputer with ESP32-S3 CPU, Keyboard and IPS display */ PICOMPUTER_S3 = 52; - - /* + + /* * Heltec HT-CT62 with ESP32-C3 CPU and SX1262 LoRa */ HELTEC_HT62 = 53; @@ -481,7 +501,7 @@ enum HardwareModel { * CircuitMess Chatter 2 LLCC68 Lora Module and ESP32 Wroom * Lora module can be swapped out for a Heltec RA-62 which is "almost" pin compatible * with one cut and one jumper Meshtastic works - */ + */ CHATTER_2 = 56; /* @@ -498,7 +518,67 @@ enum HardwareModel { * Older "V1.0" Variant */ HELTEC_WIRELESS_TRACKER_V1_0 = 58; - + + /* + * unPhone with ESP32-S3, TFT touchscreen, LSM6DS3TR-C accelerometer and gyroscope + */ + UNPHONE = 59; + + /* + * Teledatics TD-LORAC NRF52840 based M.2 LoRA module + * Compatible with the TD-WRLS development board + */ + TD_LORAC = 60; + + /* + * CDEBYTE EoRa-S3 board using their own MM modules, clone of LILYGO T3S3 + */ + CDEBYTE_EORA_S3 = 61; + + /* + * TWC_MESH_V4 + * Adafruit NRF52840 feather express with SX1262, SSD1306 OLED and NEO6M GPS + */ + TWC_MESH_V4 = 62; + + /* + * NRF52_PROMICRO_DIY + * Promicro NRF52840 with SX1262/LLCC68, SSD1306 OLED and NEO6M GPS + */ + NRF52_PROMICRO_DIY = 63; + + /* + * RadioMaster 900 Bandit Nano, https://www.radiomasterrc.com/products/bandit-nano-expresslrs-rf-module + * ESP32-D0WDQ6 With SX1276/SKY66122, SSD1306 OLED and No GPS + */ + RADIOMASTER_900_BANDIT_NANO = 64; + + /* + * Heltec Capsule Sensor V3 with ESP32-S3 CPU, Portable LoRa device that can replace GNSS modules or sensors + */ + HELTEC_CAPSULE_SENSOR_V3 = 65; + + /* + * Heltec Vision Master T190 with ESP32-S3 CPU, and a 1.90 inch TFT display + */ + HELTEC_VISION_MASTER_T190 = 66; + + /* + * Heltec Vision Master E213 with ESP32-S3 CPU, and a 2.13 inch E-Ink display + */ + HELTEC_VISION_MASTER_E213 = 67; + + /* + * Heltec Vision Master E290 with ESP32-S3 CPU, and a 2.9 inch E-Ink display + */ + HELTEC_VISION_MASTER_E290 = 68; + + /* + * Heltec Mesh Node T114 board with nRF52840 CPU, and a 1.14 inch TFT display, Ultimate low-power design, + * specifically adapted for the Meshtatic project + */ + HELTEC_MESH_NODE_T114 = 69; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. @@ -784,7 +864,7 @@ message Waypoint { /* * This message will be proxied over the PhoneAPI for the client to deliver to the MQTT server */ - message MqttClientProxyMessage { +message MqttClientProxyMessage { /* * The MQTT topic this message will be sent /received on */ @@ -1010,10 +1090,10 @@ message MeshPacket { */ bool via_mqtt = 14; - /* - * Hop limit with which the original packet started. Sent via LoRa using three bits in the unencrypted header. + /* + * Hop limit with which the original packet started. Sent via LoRa using three bits in the unencrypted header. * When receiving a packet, the difference between hop_start and hop_limit gives how many hops it traveled. - */ + */ uint32 hop_start = 15; } @@ -1126,6 +1206,12 @@ message NodeInfo { * Number of hops away from us this node is (0 if adjacent) */ uint32 hops_away = 9; + + /* + * True if node is in our favorites list + * Persists between NodeDB internal clean ups + */ + bool is_favorite = 10; } /* @@ -1394,9 +1480,29 @@ message FromRadio { * MQTT Client Proxy Message (device sending to client / phone for publishing to MQTT) */ MqttClientProxyMessage mqttClientProxyMessage = 14; + + /* + * File system manifest messages + */ + FileInfo fileInfo = 15; } } +/* + * Individual File info for the device + */ +message FileInfo { + /* + * The fully qualified path of the file + */ + string file_name = 1; + + /* + * The size of the file in bytes + */ + uint32 size_bytes = 2; +} + /* * Packets/commands to the radio will be written (reliably) to the toRadio characteristic. * Once the write completes the phone can assume it is handled. @@ -1440,6 +1546,11 @@ message ToRadio { * MQTT Client Proxy Message (for client / phone subscribed to MQTT sending to device) */ MqttClientProxyMessage mqttClientProxyMessage = 6; + + /* + * Heartbeat message (used to keep the device connection awake on serial) + */ + Heartbeat heartbeat = 7; } } @@ -1496,9 +1607,9 @@ message Neighbor { float snr = 2; /* - * Reception time (in secs since 1970) of last message that was last sent by this ID. - * Note: this is for local storage only and will not be sent out over the mesh. - */ + * Reception time (in secs since 1970) of last message that was last sent by this ID. + * Note: this is for local storage only and will not be sent out over the mesh. + */ fixed32 last_rx_time = 3; /* @@ -1561,4 +1672,80 @@ message DeviceMetadata { * Has Remote Hardware enabled */ bool hasRemoteHardware = 10; +} + +/* + * A heartbeat message is sent to the node from the client to keep the connection alive. + * This is currently only needed to keep serial connections alive, but can be used by any PhoneAPI. + */ +message Heartbeat {} + +/* + * RemoteHardwarePins associated with a node + */ +message NodeRemoteHardwarePin { + /* + * The node_num exposing the available gpio pin + */ + uint32 node_num = 1; + + /* + * The the available gpio pin for usage with RemoteHardware module + */ + RemoteHardwarePin pin = 2; +} + +message ChunkedPayload { + /* + * The ID of the entire payload + */ + uint32 payload_id = 1; + + /* + * The total number of chunks in the payload + */ + uint32 chunk_count = 2; + + /* + * The current chunk index in the total + */ + uint32 chunk_index = 3; + + /* + * The binary data of the current chunk + */ + bytes payload_chunk = 4; +} + +/* + * Wrapper message for broken repeated oneof support + */ +message resend_chunks { + repeated uint32 chunks = 1; +} + +/* + * Responses to a ChunkedPayload request + */ +message ChunkedPayloadResponse { + /* + * The ID of the entire payload + */ + uint32 payload_id = 1; + + oneof payload_variant { + /* + * Request to transfer chunked payload + */ + bool request_transfer = 2; + + /* + * Accept the transfer chunked payload + */ + bool accept_transfer = 3; + /* + * Request missing indexes in the chunked payload + */ + resend_chunks resend_chunks = 4; + } } \ No newline at end of file