Skip to content

Commit 0e5eab1

Browse files
authored
Takv2 geometry and other structures (#891)
1 parent a4c649b commit 0e5eab1

2 files changed

Lines changed: 981 additions & 3 deletions

File tree

meshtastic/atak.options

Lines changed: 82 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,85 @@
2626
*AircraftTrack.aircraft_type max_size:8
2727
*AircraftTrack.squawk int_size:16
2828
*AircraftTrack.category max_size:4
29-
*AircraftTrack.cot_host_id max_size:64
29+
*AircraftTrack.cot_host_id max_size:64
30+
31+
# --- Typed geometry payloads (v2 protocol extension) ---
32+
#
33+
# CotGeoPoint: sint32 deltas from the enclosing event's latitude_i/longitude_i.
34+
# For nearby vertices (telestrations, small rectangles) the varint+zigzag
35+
# encoding is 2-3 bytes per field, cutting telestration vertex data in half
36+
# versus sfixed32. int_size:32 keeps the C type a plain int32.
37+
# Named with a `Cot` prefix to avoid a collision with `meshtastic.GeoPoint`
38+
# in device_ui.proto, which is an unrelated zoom/latitude/longitude type.
39+
*CotGeoPoint.lat_delta_i int_size:32
40+
*CotGeoPoint.lon_delta_i int_size:32
41+
#
42+
# DrawnShape pool sizing. `kind` and `style` are varint enums (no int_size
43+
# needed). stroke_color / fill_color are Team enum, also varint. stroke_argb
44+
# / fill_argb are fixed32 (always 4 bytes on the wire). Vertex pool is 32
45+
# entries x ~12B each ~= 384B worst case. Telestrations beyond 32 vertices
46+
# MUST be pre-truncated by the sender with `truncated = true`.
47+
*DrawnShape.vertices max_count:32
48+
*DrawnShape.major_cm int_size:32
49+
*DrawnShape.minor_cm int_size:32
50+
*DrawnShape.angle_deg int_size:16
51+
*DrawnShape.stroke_weight_x10 int_size:16
52+
*DrawnShape.bullseye_distance_dm int_size:32
53+
*DrawnShape.bullseye_bearing_ref int_size:8
54+
*DrawnShape.bullseye_flags int_size:8
55+
*DrawnShape.bullseye_uid_ref max_size:48
56+
57+
# Marker pool sizing. Strings bounded tight to keep fixed pool small on
58+
# ESP32 nanopb. parent_uid matches existing TAKPacketV2.uid cap (48).
59+
# iconset fits "f7f71666-8b28-4b57-9fbb-e38e61d33b79/Google/hiker.png"
60+
# (~52 chars) with slack.
61+
*Marker.parent_uid max_size:48
62+
*Marker.parent_type max_size:24
63+
*Marker.parent_callsign max_size:24
64+
*Marker.iconset max_size:80
65+
66+
# RangeAndBearing pool sizing.
67+
*RangeAndBearing.anchor_uid max_size:48
68+
*RangeAndBearing.range_cm int_size:32
69+
*RangeAndBearing.bearing_cdeg int_size:16
70+
*RangeAndBearing.stroke_weight_x10 int_size:16
71+
72+
# Route pool sizing. 16 links x ~24B each ~= 384B worst case. prefix is
73+
# ATAK's short waypoint name prefix ("CP", "RP", etc.) — 8 chars is plenty.
74+
*Route.links max_count:16
75+
*Route.prefix max_size:8
76+
*Route.stroke_weight_x10 int_size:16
77+
*Route.Link.uid max_size:48
78+
*Route.Link.callsign max_size:16
79+
*Route.Link.link_type int_size:8
80+
81+
# GeoChat receipt extension. receipt_for_uid matches TAKPacketV2.uid caps.
82+
*GeoChat.receipt_for_uid max_size:48
83+
84+
# CasevacReport pool sizing. All numeric fields are small (0..255 for
85+
# patient counts, 1 byte for flags bitfields); strings are short.
86+
*CasevacReport.equipment_flags int_size:8
87+
*CasevacReport.terrain_flags int_size:8
88+
*CasevacReport.litter_patients int_size:8
89+
*CasevacReport.ambulatory_patients int_size:8
90+
*CasevacReport.us_military int_size:8
91+
*CasevacReport.us_civilian int_size:8
92+
*CasevacReport.non_us_military int_size:8
93+
*CasevacReport.non_us_civilian int_size:8
94+
*CasevacReport.epw int_size:8
95+
*CasevacReport.child int_size:8
96+
*CasevacReport.zone_marker max_size:16
97+
*CasevacReport.frequency max_size:16
98+
99+
# EmergencyAlert pool sizing. UIDs match TAKPacketV2.uid caps (48).
100+
*EmergencyAlert.authoring_uid max_size:48
101+
*EmergencyAlert.cancel_reference_uid max_size:48
102+
103+
# TaskRequest pool sizing. All four strings are capped tight so the
104+
# worst-case wire size stays under the LoRa MTU with headroom. task_type
105+
# is a short category tag; target_uid/assignee_uid match TAKPacketV2.uid
106+
# conventions; note is the one user-entered field.
107+
*TaskRequest.task_type max_size:12
108+
*TaskRequest.target_uid max_size:32
109+
*TaskRequest.assignee_uid max_size:32
110+
*TaskRequest.note max_size:48

0 commit comments

Comments
 (0)