Files
meshtastic_firmware/src/mesh/generated/meshtastic/atak.pb.h
T

1852 lines
96 KiB
C

/* Automatically generated nanopb header */
/* Generated by nanopb-0.4.9.1 */
#ifndef PB_MESHTASTIC_MESHTASTIC_ATAK_PB_H_INCLUDED
#define PB_MESHTASTIC_MESHTASTIC_ATAK_PB_H_INCLUDED
#include <pb.h>
#if PB_PROTO_HEADER_VERSION != 40
#error Regenerate this file with the current version of nanopb generator.
#endif
/* Enum definitions */
typedef enum _meshtastic_Team {
/* Unspecifed */
meshtastic_Team_Unspecifed_Color = 0,
/* White */
meshtastic_Team_White = 1,
/* Yellow */
meshtastic_Team_Yellow = 2,
/* Orange */
meshtastic_Team_Orange = 3,
/* Magenta */
meshtastic_Team_Magenta = 4,
/* Red */
meshtastic_Team_Red = 5,
/* Maroon */
meshtastic_Team_Maroon = 6,
/* Purple */
meshtastic_Team_Purple = 7,
/* Dark Blue */
meshtastic_Team_Dark_Blue = 8,
/* Blue */
meshtastic_Team_Blue = 9,
/* Cyan */
meshtastic_Team_Cyan = 10,
/* Teal */
meshtastic_Team_Teal = 11,
/* Green */
meshtastic_Team_Green = 12,
/* Dark Green */
meshtastic_Team_Dark_Green = 13,
/* Brown */
meshtastic_Team_Brown = 14
} meshtastic_Team;
/* Role of the group member */
typedef enum _meshtastic_MemberRole {
/* Unspecifed */
meshtastic_MemberRole_Unspecifed = 0,
/* Team Member */
meshtastic_MemberRole_TeamMember = 1,
/* Team Lead */
meshtastic_MemberRole_TeamLead = 2,
/* Headquarters */
meshtastic_MemberRole_HQ = 3,
/* Airsoft enthusiast */
meshtastic_MemberRole_Sniper = 4,
/* Medic */
meshtastic_MemberRole_Medic = 5,
/* ForwardObserver */
meshtastic_MemberRole_ForwardObserver = 6,
/* Radio Telephone Operator */
meshtastic_MemberRole_RTO = 7,
/* Doggo */
meshtastic_MemberRole_K9 = 8
} meshtastic_MemberRole;
/* CoT how field values.
Represents how the coordinates were generated. */
typedef enum _meshtastic_CotHow {
/* Unspecified */
meshtastic_CotHow_CotHow_Unspecified = 0,
/* Human entered */
meshtastic_CotHow_CotHow_h_e = 1,
/* Machine generated */
meshtastic_CotHow_CotHow_m_g = 2,
/* Human GPS/INS derived */
meshtastic_CotHow_CotHow_h_g_i_g_o = 3,
/* Machine relayed (imported from another system/gateway) */
meshtastic_CotHow_CotHow_m_r = 4,
/* Machine fused (corroborated from multiple sources) */
meshtastic_CotHow_CotHow_m_f = 5,
/* Machine predicted */
meshtastic_CotHow_CotHow_m_p = 6,
/* Machine simulated */
meshtastic_CotHow_CotHow_m_s = 7
} meshtastic_CotHow;
/* Well-known CoT event types.
When the type is known, use the enum value for efficient encoding.
For unknown types, set cot_type_id to CotType_Other and populate cot_type_str. */
typedef enum _meshtastic_CotType {
/* Unknown or unmapped type, use cot_type_str */
meshtastic_CotType_CotType_Other = 0,
/* a-f-G-U-C: Friendly ground unit combat */
meshtastic_CotType_CotType_a_f_G_U_C = 1,
/* a-f-G-U-C-I: Friendly ground unit combat infantry */
meshtastic_CotType_CotType_a_f_G_U_C_I = 2,
/* a-n-A-C-F: Neutral aircraft civilian fixed-wing */
meshtastic_CotType_CotType_a_n_A_C_F = 3,
/* a-n-A-C-H: Neutral aircraft civilian helicopter */
meshtastic_CotType_CotType_a_n_A_C_H = 4,
/* a-n-A-C: Neutral aircraft civilian */
meshtastic_CotType_CotType_a_n_A_C = 5,
/* a-f-A-M-H: Friendly aircraft military helicopter */
meshtastic_CotType_CotType_a_f_A_M_H = 6,
/* a-f-A-M: Friendly aircraft military */
meshtastic_CotType_CotType_a_f_A_M = 7,
/* a-f-A-M-F-F: Friendly aircraft military fixed-wing fighter */
meshtastic_CotType_CotType_a_f_A_M_F_F = 8,
/* a-f-A-M-H-A: Friendly aircraft military helicopter attack */
meshtastic_CotType_CotType_a_f_A_M_H_A = 9,
/* a-f-A-M-H-U-M: Friendly aircraft military helicopter utility medium */
meshtastic_CotType_CotType_a_f_A_M_H_U_M = 10,
/* a-h-A-M-F-F: Hostile aircraft military fixed-wing fighter */
meshtastic_CotType_CotType_a_h_A_M_F_F = 11,
/* a-h-A-M-H-A: Hostile aircraft military helicopter attack */
meshtastic_CotType_CotType_a_h_A_M_H_A = 12,
/* a-u-A-C: Unknown aircraft civilian */
meshtastic_CotType_CotType_a_u_A_C = 13,
/* t-x-d-d: Tasking delete/disconnect */
meshtastic_CotType_CotType_t_x_d_d = 14,
/* a-f-G-E-S-E: Friendly ground equipment sensor */
meshtastic_CotType_CotType_a_f_G_E_S_E = 15,
/* a-f-G-E-V-C: Friendly ground equipment vehicle */
meshtastic_CotType_CotType_a_f_G_E_V_C = 16,
/* a-f-S: Friendly sea */
meshtastic_CotType_CotType_a_f_S = 17,
/* a-f-A-M-F: Friendly aircraft military fixed-wing */
meshtastic_CotType_CotType_a_f_A_M_F = 18,
/* a-f-A-M-F-C-H: Friendly aircraft military fixed-wing cargo heavy */
meshtastic_CotType_CotType_a_f_A_M_F_C_H = 19,
/* a-f-A-M-F-U-L: Friendly aircraft military fixed-wing utility light */
meshtastic_CotType_CotType_a_f_A_M_F_U_L = 20,
/* a-f-A-M-F-L: Friendly aircraft military fixed-wing liaison */
meshtastic_CotType_CotType_a_f_A_M_F_L = 21,
/* a-f-A-M-F-P: Friendly aircraft military fixed-wing patrol */
meshtastic_CotType_CotType_a_f_A_M_F_P = 22,
/* a-f-A-C-H: Friendly aircraft civilian helicopter */
meshtastic_CotType_CotType_a_f_A_C_H = 23,
/* a-n-A-M-F-Q: Neutral aircraft military fixed-wing drone */
meshtastic_CotType_CotType_a_n_A_M_F_Q = 24,
/* b-t-f: GeoChat message */
meshtastic_CotType_CotType_b_t_f = 25,
/* b-r-f-h-c: CASEVAC/MEDEVAC report */
meshtastic_CotType_CotType_b_r_f_h_c = 26,
/* b-a-o-pan: Ring the bell / alert all */
meshtastic_CotType_CotType_b_a_o_pan = 27,
/* b-a-o-opn: Troops in contact */
meshtastic_CotType_CotType_b_a_o_opn = 28,
/* b-a-o-can: Cancel alert */
meshtastic_CotType_CotType_b_a_o_can = 29,
/* b-a-o-tbl: 911 alert */
meshtastic_CotType_CotType_b_a_o_tbl = 30,
/* b-a-g: Geofence breach alert */
meshtastic_CotType_CotType_b_a_g = 31,
/* a-f-G: Friendly ground (generic) */
meshtastic_CotType_CotType_a_f_G = 32,
/* a-f-G-U: Friendly ground unit (generic) */
meshtastic_CotType_CotType_a_f_G_U = 33,
/* a-h-G: Hostile ground (generic) */
meshtastic_CotType_CotType_a_h_G = 34,
/* a-u-G: Unknown ground (generic) */
meshtastic_CotType_CotType_a_u_G = 35,
/* a-n-G: Neutral ground (generic) */
meshtastic_CotType_CotType_a_n_G = 36,
/* b-m-r: Route */
meshtastic_CotType_CotType_b_m_r = 37,
/* b-m-p-w: Route waypoint */
meshtastic_CotType_CotType_b_m_p_w = 38,
/* b-m-p-s-p-i: Self-position marker */
meshtastic_CotType_CotType_b_m_p_s_p_i = 39,
/* u-d-f: Freeform shape (line/polygon) */
meshtastic_CotType_CotType_u_d_f = 40,
/* u-d-r: Rectangle */
meshtastic_CotType_CotType_u_d_r = 41,
/* u-d-c-c: Circle */
meshtastic_CotType_CotType_u_d_c_c = 42,
/* u-rb-a: Range/bearing line */
meshtastic_CotType_CotType_u_rb_a = 43,
/* a-h-A: Hostile aircraft (generic) */
meshtastic_CotType_CotType_a_h_A = 44,
/* a-u-A: Unknown aircraft (generic) */
meshtastic_CotType_CotType_a_u_A = 45,
/* a-f-A-M-H-Q: Friendly aircraft military helicopter observation */
meshtastic_CotType_CotType_a_f_A_M_H_Q = 46,
/* a-f-A-C-F: Friendly aircraft civilian fixed-wing */
meshtastic_CotType_CotType_a_f_A_C_F = 47,
/* a-f-A-C: Friendly aircraft civilian (generic) */
meshtastic_CotType_CotType_a_f_A_C = 48,
/* a-f-A-C-L: Friendly aircraft civilian lighter-than-air */
meshtastic_CotType_CotType_a_f_A_C_L = 49,
/* a-f-A: Friendly aircraft (generic) */
meshtastic_CotType_CotType_a_f_A = 50,
/* a-f-A-M-H-C: Friendly aircraft military helicopter cargo */
meshtastic_CotType_CotType_a_f_A_M_H_C = 51,
/* a-n-A-M-F-F: Neutral aircraft military fixed-wing fighter */
meshtastic_CotType_CotType_a_n_A_M_F_F = 52,
/* a-u-A-C-F: Unknown aircraft civilian fixed-wing */
meshtastic_CotType_CotType_a_u_A_C_F = 53,
/* a-f-G-U-C-F-T-A: Friendly ground unit combat forces theater aviation */
meshtastic_CotType_CotType_a_f_G_U_C_F_T_A = 54,
/* a-f-G-U-C-V-S: Friendly ground unit combat vehicle support */
meshtastic_CotType_CotType_a_f_G_U_C_V_S = 55,
/* a-f-G-U-C-R-X: Friendly ground unit combat reconnaissance exploitation */
meshtastic_CotType_CotType_a_f_G_U_C_R_X = 56,
/* a-f-G-U-C-I-Z: Friendly ground unit combat infantry mechanized */
meshtastic_CotType_CotType_a_f_G_U_C_I_Z = 57,
/* a-f-G-U-C-E-C-W: Friendly ground unit combat engineer construction wheeled */
meshtastic_CotType_CotType_a_f_G_U_C_E_C_W = 58,
/* a-f-G-U-C-I-L: Friendly ground unit combat infantry light */
meshtastic_CotType_CotType_a_f_G_U_C_I_L = 59,
/* a-f-G-U-C-R-O: Friendly ground unit combat reconnaissance other */
meshtastic_CotType_CotType_a_f_G_U_C_R_O = 60,
/* a-f-G-U-C-R-V: Friendly ground unit combat reconnaissance cavalry */
meshtastic_CotType_CotType_a_f_G_U_C_R_V = 61,
/* a-f-G-U-H: Friendly ground unit headquarters */
meshtastic_CotType_CotType_a_f_G_U_H = 62,
/* a-f-G-U-U-M-S-E: Friendly ground unit support medical surgical evacuation */
meshtastic_CotType_CotType_a_f_G_U_U_M_S_E = 63,
/* a-f-G-U-S-M-C: Friendly ground unit support maintenance collection */
meshtastic_CotType_CotType_a_f_G_U_S_M_C = 64,
/* a-f-G-E-S: Friendly ground equipment sensor (generic) */
meshtastic_CotType_CotType_a_f_G_E_S = 65,
/* a-f-G-E: Friendly ground equipment (generic) */
meshtastic_CotType_CotType_a_f_G_E = 66,
/* a-f-G-E-V-C-U: Friendly ground equipment vehicle utility */
meshtastic_CotType_CotType_a_f_G_E_V_C_U = 67,
/* a-f-G-E-V-C-ps: Friendly ground equipment vehicle public safety */
meshtastic_CotType_CotType_a_f_G_E_V_C_ps = 68,
/* a-u-G-E-V: Unknown ground equipment vehicle */
meshtastic_CotType_CotType_a_u_G_E_V = 69,
/* a-f-S-N-N-R: Friendly sea surface non-naval rescue */
meshtastic_CotType_CotType_a_f_S_N_N_R = 70,
/* a-f-F-B: Friendly force boundary */
meshtastic_CotType_CotType_a_f_F_B = 71,
/* b-m-p-s-p-loc: Self-position location marker */
meshtastic_CotType_CotType_b_m_p_s_p_loc = 72,
/* b-i-v: Imagery/video */
meshtastic_CotType_CotType_b_i_v = 73,
/* b-f-t-r: File transfer request */
meshtastic_CotType_CotType_b_f_t_r = 74,
/* b-f-t-a: File transfer acknowledgment */
meshtastic_CotType_CotType_b_f_t_a = 75,
/* u-d-f-m: Freehand telestration / annotation. Anchor at event point,
geometry carried via DrawnShape.vertices. May be truncated to
MAX_VERTICES by the sender. */
meshtastic_CotType_CotType_u_d_f_m = 76,
/* u-d-p: Closed polygon. Geometry carried via DrawnShape.vertices,
implicitly closed (receiver duplicates first vertex as needed). */
meshtastic_CotType_CotType_u_d_p = 77,
/* b-m-p-s-m: Spot map marker (colored dot at a point of interest). */
meshtastic_CotType_CotType_b_m_p_s_m = 78,
/* b-m-p-c: Checkpoint (intermediate route control point). */
meshtastic_CotType_CotType_b_m_p_c = 79,
/* u-r-b-c-c: Ranging circle (range rings centered on the event point). */
meshtastic_CotType_CotType_u_r_b_c_c = 80,
/* u-r-b-bullseye: Bullseye with configurable range rings and bearing
reference (magnetic / true / grid). */
meshtastic_CotType_CotType_u_r_b_bullseye = 81,
/* a-f-G-E-V-A: Friendly armored vehicle, user-selectable self PLI. */
meshtastic_CotType_CotType_a_f_G_E_V_A = 82,
/* a-n-A: Neutral aircraft (friendly/hostile/unknown already present). */
meshtastic_CotType_CotType_a_n_A = 83,
/* --- 2525 quick-drop: artillery (4) ---------------------------------- */
meshtastic_CotType_CotType_a_u_G_U_C_F = 84,
meshtastic_CotType_CotType_a_n_G_U_C_F = 85,
meshtastic_CotType_CotType_a_h_G_U_C_F = 86,
meshtastic_CotType_CotType_a_f_G_U_C_F = 87,
/* --- 2525 quick-drop: building (4) ----------------------------------- */
meshtastic_CotType_CotType_a_u_G_I = 88,
meshtastic_CotType_CotType_a_n_G_I = 89,
meshtastic_CotType_CotType_a_h_G_I = 90,
meshtastic_CotType_CotType_a_f_G_I = 91,
/* --- 2525 quick-drop: mine (4) --------------------------------------- */
meshtastic_CotType_CotType_a_u_G_E_X_M = 92,
meshtastic_CotType_CotType_a_n_G_E_X_M = 93,
meshtastic_CotType_CotType_a_h_G_E_X_M = 94,
meshtastic_CotType_CotType_a_f_G_E_X_M = 95,
/* --- 2525 quick-drop: ship (3; a-f-S already at 17) ------------------ */
meshtastic_CotType_CotType_a_u_S = 96,
meshtastic_CotType_CotType_a_n_S = 97,
meshtastic_CotType_CotType_a_h_S = 98,
/* --- 2525 quick-drop: sniper (4) ------------------------------------- */
meshtastic_CotType_CotType_a_u_G_U_C_I_d = 99,
meshtastic_CotType_CotType_a_n_G_U_C_I_d = 100,
meshtastic_CotType_CotType_a_h_G_U_C_I_d = 101,
meshtastic_CotType_CotType_a_f_G_U_C_I_d = 102,
/* --- 2525 quick-drop: tank (4) --------------------------------------- */
meshtastic_CotType_CotType_a_u_G_E_V_A_T = 103,
meshtastic_CotType_CotType_a_n_G_E_V_A_T = 104,
meshtastic_CotType_CotType_a_h_G_E_V_A_T = 105,
meshtastic_CotType_CotType_a_f_G_E_V_A_T = 106,
/* --- 2525 quick-drop: troops (3; a-f-G-U-C-I already at 2) ----------- */
meshtastic_CotType_CotType_a_u_G_U_C_I = 107,
meshtastic_CotType_CotType_a_n_G_U_C_I = 108,
meshtastic_CotType_CotType_a_h_G_U_C_I = 109,
/* --- 2525 quick-drop: generic vehicle (3; a-u-G-E-V already at 69) --- */
meshtastic_CotType_CotType_a_n_G_E_V = 110,
meshtastic_CotType_CotType_a_h_G_E_V = 111,
meshtastic_CotType_CotType_a_f_G_E_V = 112,
/* b-m-p-w-GOTO: Go To / bloodhound navigation target. */
meshtastic_CotType_CotType_b_m_p_w_GOTO = 113,
/* b-m-p-c-ip: Initial point (mission planning). */
meshtastic_CotType_CotType_b_m_p_c_ip = 114,
/* b-m-p-c-cp: Contact point (mission planning). */
meshtastic_CotType_CotType_b_m_p_c_cp = 115,
/* b-m-p-s-p-op: Observation post. */
meshtastic_CotType_CotType_b_m_p_s_p_op = 116,
/* u-d-v: 2D vehicle outline drawn on the map. */
meshtastic_CotType_CotType_u_d_v = 117,
/* u-d-v-m: 3D vehicle model reference. */
meshtastic_CotType_CotType_u_d_v_m = 118,
/* u-d-c-e: Non-circular ellipse (circle with distinct major/minor axes). */
meshtastic_CotType_CotType_u_d_c_e = 119,
/* b-i-x-i: Quick Pic geotagged image marker. The image itself does not
ride on LoRa; this event references the image via iconset metadata. */
meshtastic_CotType_CotType_b_i_x_i = 120,
/* b-t-f-d: GeoChat delivered receipt. Carried on the existing `chat`
payload_variant via GeoChat.receipt_for_uid + receipt_type. */
meshtastic_CotType_CotType_b_t_f_d = 121,
/* b-t-f-r: GeoChat read receipt. Same wire slot as b-t-f-d. */
meshtastic_CotType_CotType_b_t_f_r = 122,
/* b-a-o-c: Custom / generic emergency beacon. */
meshtastic_CotType_CotType_b_a_o_c = 123,
/* t-s: Task / engage request. Structured payload carried via the new
TaskRequest typed variant. */
meshtastic_CotType_CotType_t_s = 124
} meshtastic_CotType;
/* Geopoint and altitude source */
typedef enum _meshtastic_GeoPointSource {
/* Unspecified */
meshtastic_GeoPointSource_GeoPointSource_Unspecified = 0,
/* GPS derived */
meshtastic_GeoPointSource_GeoPointSource_GPS = 1,
/* User entered */
meshtastic_GeoPointSource_GeoPointSource_USER = 2,
/* Network/external */
meshtastic_GeoPointSource_GeoPointSource_NETWORK = 3
} meshtastic_GeoPointSource;
/* Receipt discriminator. Set alongside cot_type_id = b-t-f-d (delivered)
or b-t-f-r (read). ReceiptType_None is the default for a normal chat
message (cot_type_id = b-t-f).
Receivers can detect a receipt by checking receipt_type != ReceiptType_None
without re-parsing the envelope cot_type_id. */
typedef enum _meshtastic_GeoChat_ReceiptType {
meshtastic_GeoChat_ReceiptType_ReceiptType_None = 0, /* normal chat message */
meshtastic_GeoChat_ReceiptType_ReceiptType_Delivered = 1, /* b-t-f-d delivered receipt */
meshtastic_GeoChat_ReceiptType_ReceiptType_Read = 2 /* b-t-f-r read receipt */
} meshtastic_GeoChat_ReceiptType;
/* Shape kind discriminator. Drives receiver rendering and also controls
which optional fields below are meaningful. */
typedef enum _meshtastic_DrawnShape_Kind {
/* Unspecified (do not use on the wire) */
meshtastic_DrawnShape_Kind_Kind_Unspecified = 0,
/* u-d-c-c: User-drawn circle (uses major/minor/angle, anchor = event point) */
meshtastic_DrawnShape_Kind_Kind_Circle = 1,
/* u-d-r: User-drawn rectangle (uses vertices = 4 corners) */
meshtastic_DrawnShape_Kind_Kind_Rectangle = 2,
/* u-d-f: User-drawn polyline (uses vertices, not closed) */
meshtastic_DrawnShape_Kind_Kind_Freeform = 3,
/* u-d-f-m: Freehand telestration / annotation (uses vertices, may be truncated) */
meshtastic_DrawnShape_Kind_Kind_Telestration = 4,
/* u-d-p: Closed polygon (uses vertices, implicitly closed) */
meshtastic_DrawnShape_Kind_Kind_Polygon = 5,
/* u-r-b-c-c: Ranging circle (major/minor/angle, stroke + optional fill) */
meshtastic_DrawnShape_Kind_Kind_RangingCircle = 6,
/* u-r-b-bullseye: Bullseye ring with range rings and bearing reference */
meshtastic_DrawnShape_Kind_Kind_Bullseye = 7,
/* u-d-c-e: Ellipse with distinct major/minor axes (same storage as
Kind_Circle — uses major_cm/minor_cm/angle_deg — but receivers
render it as a non-circular ellipse rather than a round circle). */
meshtastic_DrawnShape_Kind_Kind_Ellipse = 8,
/* u-d-v: 2D vehicle outline drawn on the map. Vertices carry the
outline polygon; receivers draw it as a filled polygon. */
meshtastic_DrawnShape_Kind_Kind_Vehicle2D = 9,
/* u-d-v-m: 3D vehicle model reference. Same vertex polygon as
Kind_Vehicle2D; receivers that support 3D rendering extrude it. */
meshtastic_DrawnShape_Kind_Kind_Vehicle3D = 10
} meshtastic_DrawnShape_Kind;
/* Explicit stroke/fill/both discriminator.
ATAK's source XML distinguishes "stroke-only polyline" from "closed shape
with both stroke and fill" by the presence of the <fillColor> element.
Both states can hash to all-zero color fields, so we carry the signal
explicitly. Parser sets this from (sawStrokeColor, sawFillColor) at the
end of parse; builder uses it to decide which of <strokeColor> /
<fillColor> to emit in the reconstructed XML. */
typedef enum _meshtastic_DrawnShape_StyleMode {
/* Unspecified — receiver infers from which color fields are non-zero. */
meshtastic_DrawnShape_StyleMode_StyleMode_Unspecified = 0,
/* Stroke only. No <fillColor> in the source XML. Used for polylines,
ranging lines, bullseye rings. */
meshtastic_DrawnShape_StyleMode_StyleMode_StrokeOnly = 1,
/* Fill only. No <strokeColor> in the source XML. Rare but valid in
ATAK (solid region with no outline). */
meshtastic_DrawnShape_StyleMode_StyleMode_FillOnly = 2,
/* Both stroke and fill present. Closed shapes: circle, rectangle,
polygon, ranging circle. */
meshtastic_DrawnShape_StyleMode_StyleMode_StrokeAndFill = 3
} meshtastic_DrawnShape_StyleMode;
/* Marker kind. Used to pick sensible receiver defaults when the CoT type
alone is ambiguous (e.g. a-u-G could be a 2525 symbol or a custom icon
depending on the iconset path). */
typedef enum _meshtastic_Marker_Kind {
/* Unspecified — fall back to TAKPacketV2.cot_type_id */
meshtastic_Marker_Kind_Kind_Unspecified = 0,
/* b-m-p-s-m: Spot map marker */
meshtastic_Marker_Kind_Kind_Spot = 1,
/* b-m-p-w: Route waypoint */
meshtastic_Marker_Kind_Kind_Waypoint = 2,
/* b-m-p-c: Checkpoint */
meshtastic_Marker_Kind_Kind_Checkpoint = 3,
/* b-m-p-s-p-i / b-m-p-s-p-loc: Self-position marker */
meshtastic_Marker_Kind_Kind_SelfPosition = 4,
/* 2525B/C military symbol (iconsetpath = COT_MAPPING_2525B/...) */
meshtastic_Marker_Kind_Kind_Symbol2525 = 5,
/* COT_MAPPING_SPOTMAP icon (e.g. colored dot) */
meshtastic_Marker_Kind_Kind_SpotMap = 6,
/* Custom icon set (UUID/GroupName/filename.png) */
meshtastic_Marker_Kind_Kind_CustomIcon = 7,
/* b-m-p-w-GOTO: Go To / bloodhound navigation waypoint. */
meshtastic_Marker_Kind_Kind_GoToPoint = 8,
/* b-m-p-c-ip: Initial point (mission planning control point). */
meshtastic_Marker_Kind_Kind_InitialPoint = 9,
/* b-m-p-c-cp: Contact point (mission planning control point). */
meshtastic_Marker_Kind_Kind_ContactPoint = 10,
/* b-m-p-s-p-op: Observation post. */
meshtastic_Marker_Kind_Kind_ObservationPost = 11,
/* b-i-x-i: Quick Pic geotagged image marker. iconset carries the
image reference (local filename or remote URL); the image itself
does not ride on the LoRa wire. */
meshtastic_Marker_Kind_Kind_ImageMarker = 12
} meshtastic_Marker_Kind;
/* Travel method for the route. */
typedef enum _meshtastic_Route_Method {
/* Unspecified / unknown */
meshtastic_Route_Method_Method_Unspecified = 0,
/* Driving / vehicle */
meshtastic_Route_Method_Method_Driving = 1,
/* Walking / foot */
meshtastic_Route_Method_Method_Walking = 2,
/* Flying */
meshtastic_Route_Method_Method_Flying = 3,
/* Swimming (individual) */
meshtastic_Route_Method_Method_Swimming = 4,
/* Watercraft (boat) */
meshtastic_Route_Method_Method_Watercraft = 5
} meshtastic_Route_Method;
/* Route direction (infil = ingress, exfil = egress). */
typedef enum _meshtastic_Route_Direction {
/* Unspecified */
meshtastic_Route_Direction_Direction_Unspecified = 0,
/* Infiltration (ingress) */
meshtastic_Route_Direction_Direction_Infil = 1,
/* Exfiltration (egress) */
meshtastic_Route_Direction_Direction_Exfil = 2
} meshtastic_Route_Direction;
/* Line 3: precedence / urgency. */
typedef enum _meshtastic_CasevacReport_Precedence {
meshtastic_CasevacReport_Precedence_Precedence_Unspecified = 0,
meshtastic_CasevacReport_Precedence_Precedence_Urgent = 1, /* A - immediate, life-threatening */
meshtastic_CasevacReport_Precedence_Precedence_UrgentSurgical = 2, /* B - needs surgery */
meshtastic_CasevacReport_Precedence_Precedence_Priority = 3, /* C - within 4 hours */
meshtastic_CasevacReport_Precedence_Precedence_Routine = 4, /* D - within 24 hours */
meshtastic_CasevacReport_Precedence_Precedence_Convenience = 5 /* E - convenience */
} meshtastic_CasevacReport_Precedence;
/* Line 7: HLZ marking method. */
typedef enum _meshtastic_CasevacReport_HlzMarking {
meshtastic_CasevacReport_HlzMarking_HlzMarking_Unspecified = 0,
meshtastic_CasevacReport_HlzMarking_HlzMarking_Panels = 1,
meshtastic_CasevacReport_HlzMarking_HlzMarking_PyroSignal = 2,
meshtastic_CasevacReport_HlzMarking_HlzMarking_Smoke = 3,
meshtastic_CasevacReport_HlzMarking_HlzMarking_None = 4,
meshtastic_CasevacReport_HlzMarking_HlzMarking_Other = 5
} meshtastic_CasevacReport_HlzMarking;
/* Line 6: security situation at the pickup zone. */
typedef enum _meshtastic_CasevacReport_Security {
meshtastic_CasevacReport_Security_Security_Unspecified = 0,
meshtastic_CasevacReport_Security_Security_NoEnemy = 1, /* N - no enemy activity */
meshtastic_CasevacReport_Security_Security_PossibleEnemy = 2, /* P - possible enemy */
meshtastic_CasevacReport_Security_Security_EnemyInArea = 3, /* E - enemy, approach with caution */
meshtastic_CasevacReport_Security_Security_EnemyInArmedContact = 4 /* X - armed escort required */
} meshtastic_CasevacReport_Security;
typedef enum _meshtastic_EmergencyAlert_Type {
meshtastic_EmergencyAlert_Type_Type_Unspecified = 0,
meshtastic_EmergencyAlert_Type_Type_Alert911 = 1, /* b-a-o-tbl */
meshtastic_EmergencyAlert_Type_Type_RingTheBell = 2, /* b-a-o-pan */
meshtastic_EmergencyAlert_Type_Type_InContact = 3, /* b-a-o-opn */
meshtastic_EmergencyAlert_Type_Type_GeoFenceBreached = 4, /* b-a-g */
meshtastic_EmergencyAlert_Type_Type_Custom = 5, /* b-a-o-c */
meshtastic_EmergencyAlert_Type_Type_Cancel = 6 /* b-a-o-can */
} meshtastic_EmergencyAlert_Type;
typedef enum _meshtastic_TaskRequest_Priority {
meshtastic_TaskRequest_Priority_Priority_Unspecified = 0,
meshtastic_TaskRequest_Priority_Priority_Low = 1,
meshtastic_TaskRequest_Priority_Priority_Normal = 2,
meshtastic_TaskRequest_Priority_Priority_High = 3,
meshtastic_TaskRequest_Priority_Priority_Critical = 4
} meshtastic_TaskRequest_Priority;
typedef enum _meshtastic_TaskRequest_Status {
meshtastic_TaskRequest_Status_Status_Unspecified = 0,
meshtastic_TaskRequest_Status_Status_Pending = 1, /* assigned, not yet acknowledged */
meshtastic_TaskRequest_Status_Status_Acknowledged = 2, /* assignee has seen it */
meshtastic_TaskRequest_Status_Status_InProgress = 3, /* assignee is working it */
meshtastic_TaskRequest_Status_Status_Completed = 4, /* task done */
meshtastic_TaskRequest_Status_Status_Cancelled = 5 /* cancelled before completion */
} meshtastic_TaskRequest_Status;
/* Coarse sensor category, inferred from `model` on parse when the source
XML doesn't label it. Receivers that render differently per sensor
class (thermal overlay vs daylight cone) use this. */
typedef enum _meshtastic_SensorFov_SensorType {
meshtastic_SensorFov_SensorType_SensorType_Unspecified = 0,
meshtastic_SensorFov_SensorType_SensorType_Camera = 1, /* daylight / general optical */
meshtastic_SensorFov_SensorType_SensorType_Thermal = 2, /* FLIR, thermal imager */
meshtastic_SensorFov_SensorType_SensorType_Laser = 3, /* rangefinder, LRF, designator */
meshtastic_SensorFov_SensorType_SensorType_Nvg = 4, /* night vision goggles */
meshtastic_SensorFov_SensorType_SensorType_Rf = 5, /* radio/radar direction-finding */
meshtastic_SensorFov_SensorType_SensorType_Other = 6
} meshtastic_SensorFov_SensorType;
/* Struct definitions */
/* ATAK GeoChat message */
typedef struct _meshtastic_GeoChat {
/* The text message. Empty for receipts. */
char message[200];
/* Uid recipient of the message */
bool has_to;
char to[120];
/* Callsign of the recipient for the message */
bool has_to_callsign;
char to_callsign[120];
/* UID of the chat message this event is acknowledging. Empty for a
normal chat message; set for delivered / read receipts. Paired with
receipt_type so receivers can match the ack back to the original
outbound GeoChat by its event uid. */
char receipt_for_uid[48];
/* Receipt kind discriminator. See ReceiptType doc. Default ReceiptType_None
means this is a regular chat message, not a receipt. */
meshtastic_GeoChat_ReceiptType receipt_type;
} meshtastic_GeoChat;
/* ATAK Group
<__group role='Team Member' name='Cyan'/> */
typedef struct _meshtastic_Group {
/* Role of the group member */
meshtastic_MemberRole role;
/* Team (color)
Default Cyan */
meshtastic_Team team;
} meshtastic_Group;
/* ATAK EUD Status
<status battery='100' /> */
typedef struct _meshtastic_Status {
/* Battery level */
uint8_t battery;
} meshtastic_Status;
/* ATAK Contact
<contact endpoint='0.0.0.0:4242:tcp' phone='+12345678' callsign='FALKE'/> */
typedef struct _meshtastic_Contact {
/* Callsign */
char callsign[120];
/* Device callsign */
char device_callsign[120]; /* IP address of endpoint in integer form (0.0.0.0 default) */
} meshtastic_Contact;
/* Position Location Information from ATAK */
typedef struct _meshtastic_PLI {
/* The new preferred location encoding, multiply by 1e-7 to get degrees
in floating point */
int32_t latitude_i;
/* The new preferred location encoding, multiply by 1e-7 to get degrees
in floating point */
int32_t longitude_i;
/* Altitude (ATAK prefers HAE) */
int32_t altitude;
/* Speed */
uint32_t speed;
/* Course in degrees */
uint16_t course;
} meshtastic_PLI;
typedef PB_BYTES_ARRAY_T(220) meshtastic_TAKPacket_detail_t;
/* Packets for the official ATAK Plugin */
typedef struct _meshtastic_TAKPacket {
/* Are the payloads strings compressed for LoRA transport? */
bool is_compressed;
/* The contact / callsign for ATAK user */
bool has_contact;
meshtastic_Contact contact;
/* The group for ATAK user */
bool has_group;
meshtastic_Group group;
/* The status of the ATAK EUD */
bool has_status;
meshtastic_Status status;
pb_size_t which_payload_variant;
union {
/* TAK position report */
meshtastic_PLI pli;
/* ATAK GeoChat message */
meshtastic_GeoChat chat;
/* Generic CoT detail XML
May be compressed / truncated by the sender (EUD) */
meshtastic_TAKPacket_detail_t detail;
} payload_variant;
} meshtastic_TAKPacket;
/* Aircraft track information from ADS-B or military air tracking.
Covers the majority of observed real-world CoT traffic. */
typedef struct _meshtastic_AircraftTrack {
/* ICAO hex identifier (e.g. "AD237C") */
char icao[8];
/* Aircraft registration (e.g. "N946AK") */
char registration[16];
/* Flight number/callsign (e.g. "ASA864") */
char flight[16];
/* ICAO aircraft type designator (e.g. "B39M") */
char aircraft_type[8];
/* Transponder squawk code (0-7777 octal) */
uint16_t squawk;
/* ADS-B emitter category (e.g. "A3") */
char category[4];
/* Received signal strength * 10 (e.g. -194 for -19.4 dBm) */
int32_t rssi_x10;
/* Whether receiver has GPS fix */
bool gps;
/* CoT host ID for source attribution */
char cot_host_id[64];
} meshtastic_AircraftTrack;
/* Compact geographic vertex used by repeated vertex lists in TAK geometry
payloads. Named with a `Cot` prefix to avoid a namespace collision with
`meshtastic.GeoPoint` in `device_ui.proto`, which is an unrelated zoom/
latitude/longitude type used by the on-device map UI.
Encoded as a signed DELTA from TAKPacketV2.latitude_i / longitude_i (the
enclosing event's anchor point). The absolute coordinate is recovered by
the receiver as `event.latitude_i + vertex.lat_delta_i` (and likewise for
longitude).
Why deltas: a 32-vertex telestration with vertices clustered within a few
hundred meters of the anchor has per-vertex deltas in the ±10^4 range.
Under sint32+zigzag those encode as 2 bytes each (tag+varint), versus the
4 bytes that sfixed32 would always require. At 32 vertices that is ~128
bytes of savings — the difference between fitting under the LoRa MTU or
not. Absolute coordinates (values ~10^9) would cost sint32 varint 5 bytes
per field, which is why TAKPacketV2's top-level latitude_i / longitude_i
stay sfixed32 — only small values win with sint32. */
typedef struct _meshtastic_CotGeoPoint {
/* Latitude delta from TAKPacketV2.latitude_i, in 1e-7 degree units.
Add to the enclosing event's latitude_i to recover the absolute latitude. */
int32_t lat_delta_i;
/* Longitude delta from TAKPacketV2.longitude_i, in 1e-7 degree units. */
int32_t lon_delta_i;
} meshtastic_CotGeoPoint;
/* User-drawn tactical graphic: circle, rectangle, polygon, polyline, freehand
telestration, ranging circle, or bullseye.
Covers CoT types u-d-c-c, u-d-r, u-d-f, u-d-f-m, u-d-p, u-r-b-c-c,
u-r-b-bullseye. The shape's anchor position is carried on
TAKPacketV2.latitude_i/longitude_i; polyline/polygon vertices are in the
`vertices` repeated field as `CotGeoPoint` deltas from that anchor.
Colors use the Team enum as a 14-color palette (see color encoding below)
with a fixed32 exact-ARGB fallback for custom user-picked colors that
don't map to a palette entry. */
typedef struct _meshtastic_DrawnShape {
/* Shape kind (circle, rectangle, freeform, etc.) */
meshtastic_DrawnShape_Kind kind;
/* Explicit stroke/fill/both discriminator. See StyleMode doc. */
meshtastic_DrawnShape_StyleMode style;
/* Ellipse major radius in centimeters. 0 for non-ellipse kinds. */
uint32_t major_cm;
/* Ellipse minor radius in centimeters. 0 for non-ellipse kinds. */
uint32_t minor_cm;
/* Ellipse rotation angle in degrees. Valid values are 0..360 inclusive;
0 and 360 are equivalent rotations. In proto3, an unset uint32 reads
as 0, so senders should emit 0 when the angle is unspecified. */
uint16_t angle_deg;
/* Stroke color as a named palette entry from the Team enum. If
Unspecifed_Color, the exact ARGB is carried in stroke_argb.
Valid only when style is StrokeOnly or StrokeAndFill. */
meshtastic_Team stroke_color;
/* Stroke color as an exact 32-bit ARGB bit pattern. Always populated
on the wire; readers MUST use this value when stroke_color ==
Unspecifed_Color and MAY use it to recover the exact original bytes
even when a palette entry is set. */
uint32_t stroke_argb;
/* Stroke weight in tenths of a unit (e.g. 30 = 3.0). Typical ATAK
range 10..60. */
uint16_t stroke_weight_x10;
/* Fill color as a named palette entry. See stroke_color docs.
Valid only when style is FillOnly or StrokeAndFill. */
meshtastic_Team fill_color;
/* Fill color exact ARGB fallback. See stroke_argb docs. */
uint32_t fill_argb;
/* Whether labels are rendered on this shape. */
bool labels_on;
/* Vertex list for polyline/polygon/rectangle shapes. Capped at 32 by
the nanopb pool; senders MUST truncate longer inputs and set
`truncated = true`. */
pb_size_t vertices_count;
meshtastic_CotGeoPoint vertices[32];
/* True if the sender truncated `vertices` to fit the pool. */
bool truncated; /* --- Bullseye-only fields. All ignored unless kind == Kind_Bullseye. --- */
/* Bullseye distance in meters * 10 (e.g. 3285 = 328.5 m). 0 = unset. */
uint32_t bullseye_distance_dm;
/* Bullseye bearing reference: 0 unset, 1 Magnetic, 2 True, 3 Grid. */
uint8_t bullseye_bearing_ref;
/* Bullseye attribute bit flags:
bit 0: rangeRingVisible
bit 1: hasRangeRings
bit 2: edgeToCenter
bit 3: mils */
uint8_t bullseye_flags;
/* Bullseye reference UID (anchor marker). Empty = anchor is self. */
char bullseye_uid_ref[48];
} meshtastic_DrawnShape;
/* Fixed point of interest: spot marker, waypoint, checkpoint, 2525 symbol,
or custom icon.
Covers CoT types b-m-p-s-m, b-m-p-w, b-m-p-c, b-m-p-s-p-i, b-m-p-s-p-loc,
plus a-u-G / a-f-G / a-h-G / a-n-G with iconset paths. The marker position
is carried on TAKPacketV2.latitude_i/longitude_i; fields below carry only
the marker-specific metadata. */
typedef struct _meshtastic_Marker {
/* Marker kind */
meshtastic_Marker_Kind kind;
/* Marker color as a named palette entry. If Unspecifed_Color, the exact
ARGB is in color_argb. */
meshtastic_Team color;
/* Marker color exact ARGB bit pattern. Always populated on the wire. */
uint32_t color_argb;
/* Status readiness flag (ATAK <status readiness="true"/>). */
bool readiness;
/* Parent link UID (ATAK <link uid=... relation="p-p"/>). Empty = no parent.
For spot/waypoint markers this is typically the producing TAK user's UID. */
char parent_uid[48];
/* Parent CoT type (e.g. "a-f-G-U-C"). Usually the parent TAK user's type. */
char parent_type[24];
/* Parent callsign (e.g. "HOPE"). */
char parent_callsign[24];
/* Iconset path stored verbatim. ATAK emits three flavors:
Kind_Symbol2525 -> "COT_MAPPING_2525B/<cot-type-prefix>/<cot-type>"
Kind_SpotMap -> "COT_MAPPING_SPOTMAP/<cot-type>/<argb>"
Kind_CustomIcon -> "<UUID>/<GroupName>/<filename>.png"
Stored end-to-end without prefix stripping; the ~19 bytes saved by
stripping well-known prefixes are not worth the builder-side bug
surface, and the dict compresses the repetition effectively. */
char iconset[80];
} meshtastic_Marker;
/* Range and bearing measurement line from the event anchor to a target point.
Covers CoT type u-rb-a. The anchor position is on
TAKPacketV2.latitude_i/longitude_i; the target endpoint is carried as a
CotGeoPoint — same delta-from-anchor encoding used by DrawnShape.vertices
so a self-anchored RAB (common case) encodes in zero bytes. */
typedef struct _meshtastic_RangeAndBearing {
/* Target/anchor endpoint (delta-encoded from TAKPacketV2.latitude_i/longitude_i). */
bool has_anchor;
meshtastic_CotGeoPoint anchor;
/* Anchor UID (from <link uid="anchor-1"/>). Empty = free-standing. */
char anchor_uid[48];
/* Range in centimeters (value * 100). Range 0..4294 km. */
uint32_t range_cm;
/* Bearing in degrees * 100 (0..36000). */
uint16_t bearing_cdeg;
/* Stroke color as a Team palette entry. See DrawnShape.stroke_color doc. */
meshtastic_Team stroke_color;
/* Stroke color exact ARGB fallback. */
uint32_t stroke_argb;
/* Stroke weight * 10 (e.g. 30 = 3.0). */
uint16_t stroke_weight_x10;
} meshtastic_RangeAndBearing;
/* Route waypoint or control point. Each link corresponds to one ATAK
<link type=... point=...> entry inside the b-m-r event. */
typedef struct _meshtastic_Route_Link {
/* Waypoint position (delta-encoded from TAKPacketV2.latitude_i/longitude_i). */
bool has_point;
meshtastic_CotGeoPoint point;
/* Optional UID (empty = receiver derives). */
char uid[48];
/* Optional display callsign (e.g. "CP1"). Empty for unnamed control points. */
char callsign[16];
/* Link role: 0 = waypoint (b-m-p-w), 1 = checkpoint (b-m-p-c). */
uint8_t link_type;
} meshtastic_Route_Link;
/* Named route consisting of ordered waypoints and control points.
Covers CoT type b-m-r. The first waypoint's position is on
TAKPacketV2.latitude_i/longitude_i; subsequent waypoints and checkpoints
are in `links`. Link count is capped at 16 by the nanopb pool; senders
MUST truncate longer routes and set `truncated = true`. */
typedef struct _meshtastic_Route {
/* Travel method */
meshtastic_Route_Method method;
/* Direction (infil/exfil) */
meshtastic_Route_Direction direction;
/* Waypoint name prefix (e.g. "CP"). */
char prefix[8];
/* Stroke weight * 10 (e.g. 30 = 3.0). 0 = default. */
uint16_t stroke_weight_x10;
/* Ordered list of route control points. Capped at 16. */
pb_size_t links_count;
meshtastic_Route_Link links[16];
/* True if the sender truncated `links` to fit the pool. */
bool truncated;
} meshtastic_Route;
/* 9-line MEDEVAC request (CoT type b-r-f-h-c).
Mirrors the ATAK MedLine tool's <_medevac_> detail element. Every field
is optional (proto3 default); senders omit lines they don't have. The
envelope (TAKPacketV2.uid, cot_type_id=b-r-f-h-c, latitude_i/longitude_i,
altitude, callsign) carries Line 1 (location) and Line 2 (callsign).
All numeric fields are tight varints so a complete 9-line request fits
in well under 100 bytes of proto on the wire. */
typedef struct _meshtastic_CasevacReport {
/* Line 3: precedence / urgency. */
meshtastic_CasevacReport_Precedence precedence;
/* Line 4: special equipment required, as a bitfield.
bit 0: none
bit 1: hoist
bit 2: extraction equipment
bit 3: ventilator
bit 4: blood */
uint8_t equipment_flags;
/* Line 5: number of litter (stretcher-bound) patients. */
uint8_t litter_patients;
/* Line 5: number of ambulatory (walking-wounded) patients. */
uint8_t ambulatory_patients;
/* Line 6: security situation at the PZ. */
meshtastic_CasevacReport_Security security;
/* Line 7: HLZ marking method. */
meshtastic_CasevacReport_HlzMarking hlz_marking;
/* Line 7 supplementary: short free-text describing the zone marker
(e.g. "Green smoke", "VS-17 panel west"). Capped tight in options. */
char zone_marker[16];
/* --- Line 8: patient nationality counts --- */
uint8_t us_military;
uint8_t us_civilian;
uint8_t non_us_military;
uint8_t non_us_civilian;
uint8_t epw; /* enemy prisoner of war */
uint8_t child;
/* Line 9: terrain and obstacles at the PZ, as a bitfield.
bit 0: slope
bit 1: rough
bit 2: loose
bit 3: trees
bit 4: wires
bit 5: other */
uint8_t terrain_flags;
/* Line 2: radio frequency / callsign metadata (e.g. "38.90 Mhz" or
"Victor 6"). Capped tight in options. */
char frequency[16];
/* Short title / MEDEVAC identifier (e.g. "EAGLE.15.181230"). Usually the
same as the envelope callsign but ATAK sometimes carries a distinct
ops-number here. */
pb_callback_t title;
/* Primary medline free-text — the single most clinically important line
on a MEDLINE form (e.g. "2 urgent litter patients, smoke on approach").
MUST be preserved under MTU pressure as long as any casevac is sent. */
pb_callback_t medline_remarks;
/* Line 3 (newer ATAK format): patient counts by precedence level.
Coexists with the enum-style `precedence` field (tag 1) — older ATAK
emits a single enum, newer ATAK emits these counts, and both can be
set simultaneously. Senders populate whichever style(s) the source
XML had; receivers prefer counts when non-zero. */
uint32_t urgent_count;
uint32_t urgent_surgical_count;
uint32_t priority_count;
uint32_t routine_count;
uint32_t convenience_count;
/* Line 4 supplementary: free-text description of non-standard equipment
(e.g. "Blood warmer"). Pairs with the `equipment_flags` bitfield. */
pb_callback_t equipment_detail;
/* Line 1 override: MGRS grid when distinct from the event anchor point
(e.g. "34T CQ 12345 67890"). Event lat/lon/hae still carries the
numeric location; this field preserves the exact MGRS string the
medic entered. */
pb_callback_t zone_protected_coord;
/* Line 9 supplementary: slope direction (e.g. "N", "NE", "SSW") when
`terrain_flags` bit 0 (slope) is set. */
pb_callback_t terrain_slope_dir;
/* Line 9 supplementary: free-text description of "other" terrain hazards
(e.g. "Loose debris on west edge") when `terrain_flags` bit 5 (other)
is set. Tier-2 strippable under MTU pressure. */
pb_callback_t terrain_other_detail;
/* Line 7 supplementary: how the zone is being marked right now
(e.g. "Orange smoke", "VS-17 panel"). Complements the structured
`hlz_marking` enum with a specific human-readable description. */
pb_callback_t marked_by;
/* Nearby obstacles on the approach (e.g. "Power lines north of HLZ"). */
pb_callback_t obstacles;
/* Wind direction and speed (e.g. "270 at 12 kts"). */
pb_callback_t winds_are_from;
/* Friendly forces posture near the pickup zone
(e.g. "Squad east of HLZ"). */
pb_callback_t friendlies;
/* Known or suspected enemy positions near the pickup zone
(e.g. "Possible enemy on south ridge"). */
pb_callback_t enemy;
/* Free-text description of the HLZ itself
(e.g. "Primary HLZ is soccer field"). */
pb_callback_t hlz_remarks;
/* Per-patient clinical records. Each entry is one patient's ZMIST card
(Zap number / Mechanism / Injuries / Signs / Treatment). Repeatable —
a mass-casualty event can carry 1-6 entries in practice, limited by
the 237 B LoRa MTU. */
pb_callback_t zmist;
} meshtastic_CasevacReport;
/* Per-patient clinical summary record — one entry per patient in a CASEVAC.
Maps directly to ATAK's <zMist> child element inside <zMistsMap>.
All fields are optional free-text; senders populate what they have. */
typedef struct _meshtastic_ZMistEntry {
/* Patient identifier / sequence label (e.g. "ZMIST-1", "ZMIST-2"). */
pb_callback_t title;
/* Zap number — unique patient tracking ID (often a terse code like
"Gunshot" or a serial). */
pb_callback_t z;
/* Mechanism of injury (e.g. "Penetrating trauma", "Blast injury"). */
pb_callback_t m;
/* Injuries observed (e.g. "Left thigh", "Concussion"). */
pb_callback_t i;
/* Signs / vital stats (e.g. "Stable", "Priority", "BP 110/70"). */
pb_callback_t s;
/* Treatment given (e.g. "Tourniquet 1810Z", "O2 administered"). */
pb_callback_t t;
} meshtastic_ZMistEntry;
/* Emergency alert / 911 beacon (CoT types b-a-o-tbl, b-a-o-pan, b-a-o-opn,
b-a-o-can, b-a-o-c, b-a-g).
Small, high-priority structured record. The CoT type string is still set
on cot_type_id so receivers that ignore payload_variant can still display
the alert from the enum alone; the typed fields let modern receivers show
the authoring unit and handle cancel-referencing without XML parsing. */
typedef struct _meshtastic_EmergencyAlert {
/* Alert discriminator. */
meshtastic_EmergencyAlert_Type type;
/* UID of the unit that raised the alert. Often the same as
TAKPacketV2.uid but can be a parent device uid when a tracker raises
an alert on behalf of a dismount. */
char authoring_uid[48];
/* For Type_Cancel: the uid of the alert being cancelled. Empty for
non-cancel alert types. */
char cancel_reference_uid[48];
} meshtastic_EmergencyAlert;
/* Task / engage request (CoT type t-s).
Mirrors ATAK's TaskCotReceiver / CotTaskBuilder workflow. The envelope
carries the task's originating uid (implicit requester), position, and
creation time; the fields below carry structured metadata the raw-detail
fallback currently loses.
Fields are deliberately lean — this variant is closer to the MTU ceiling
than the others, so every string is capped in options. */
typedef struct _meshtastic_TaskRequest {
/* Short tag for the task category (e.g. "engage", "observe", "recon",
"rescue"). Free text on the wire so ATAK-specific task taxonomies
don't need proto coordination; capped tight in options. */
char task_type[12];
/* UID of the target / map item being tasked. */
char target_uid[32];
/* UID of the assigned unit. Empty = unassigned / broadcast task. */
char assignee_uid[32];
meshtastic_TaskRequest_Priority priority;
meshtastic_TaskRequest_Status status;
/* Optional short note (reason, constraints, grid reference). Capped
tight in options to keep the worst-case under the LoRa MTU. */
char note[48];
} meshtastic_TaskRequest;
/* Weather annotation from <environment> CoT detail element.
Attaches to any TAKPacketV2 regardless of payload_variant — an Aircraft,
PLI, or Marker can all carry observed conditions at the emitting station.
ATAK-CIV ships an XSD for <environment> but no dedicated handler, so the
element round-trips through the generic detail pipeline; this message
promotes it to a first-class structured field.
Target wire cost: ~6-8 bytes compressed with a fully populated instance.
Named `TAKEnvironment` (not just `Environment`) because the bare name
collides with `SwiftUI.Environment` — every SwiftUI view in a consuming
iOS app uses the `@Environment` property wrapper, and importing the
generated proto module would make `Environment` ambiguous in every one
of those files. The `TAK` prefix matches the convention used by the
outer `TAKPacketV2` wrapper and is unambiguous across all target
languages (Swift, Kotlin, Python, TypeScript, C#). */
typedef struct _meshtastic_TAKEnvironment {
/* Temperature in deci-degrees Celsius. 225 = 22.5°C.
Range covers -50°C to +50°C (-500 to +500) which spans every realistic
outdoor TAK deployment. sint32 because negative temps are common in
cold-weather ops. */
int32_t temperature_c_x10;
/* Wind direction in whole degrees, 0-359. "Direction FROM" per
meteorological convention (matches CoT / ATAK). */
uint32_t wind_direction_deg;
/* Wind speed in cm/s. Matches the unit of TAKPacketV2.speed for
consistency. 1200 = 12.00 m/s = ~27 mph. */
uint32_t wind_speed_cm_s;
} meshtastic_TAKEnvironment;
/* Sensor field-of-view cone from <sensor> CoT detail element.
Encodes the 8 geometry attributes that ATAK-CIV's SensorDetailHandler
reads from the wire; drops the 9 visual-styling attributes that are
receiver-side render hints (fovAlpha, fovRed/Green/Blue, strokeColor,
strokeWeight, displayMagneticReference, hideFov, fovLabels, rangeLines).
The receiving ATAK client restores those from its own defaults, same as
every other CoT carried over Meshtastic today.
Attaches to any TAKPacketV2 — a PLI with a sensor on the operator's head,
an Aircraft with a FLIR turret, a Marker dropped on a UAV.
Target wire cost: ~7-14 bytes compressed (dominated by model string). */
typedef struct _meshtastic_SensorFov {
meshtastic_SensorFov_SensorType type;
/* Azimuth in whole degrees, 0-359. "Pointing direction" of the cone axis,
measured clockwise from true north. Whole degrees match ATAK-CIV's
SensorDetailHandler default (270°) and save varint bytes over centi-deg. */
uint32_t azimuth_deg;
/* Maximum range of the cone in meters.
Optional — if unset, receivers should use the ATAK-CIV default of 100m. */
bool has_range_m;
uint32_t range_m;
/* Horizontal field of view in whole degrees (cone's angular width).
ATAK-CIV default is 45°. */
uint32_t fov_horizontal_deg;
/* Vertical field of view in whole degrees. ATAK-CIV default is 45°.
Optional — a value of 0 means "not set / use horizontal FOV". */
uint32_t fov_vertical_deg;
/* Elevation angle in whole degrees. Positive = up, negative = down.
Range -90 to +90. sint32 for varint efficiency on small negatives. */
int32_t elevation_deg;
/* Roll (camera tilt) in whole degrees, -180 to +180.
Optional — use 0 if the sensor doesn't track roll. */
int32_t roll_deg;
/* Free-form device model identifier, e.g. "FLIR-Boson-640", "SEEK".
Optional — empty string means "unknown model" (ATAK-CIV default). */
pb_callback_t model;
} meshtastic_SensorFov;
typedef PB_BYTES_ARRAY_T(220) meshtastic_TAKPacketV2_raw_detail_t;
/* ATAK v2 packet with expanded CoT field support and zstd dictionary compression.
Sent on ATAK_PLUGIN_V2 port. The wire payload is:
[1 byte flags][zstd-compressed TAKPacketV2 protobuf]
Flags byte: bits 0-5 = dictionary ID, bits 6-7 = reserved. */
typedef struct _meshtastic_TAKPacketV2 {
/* Well-known CoT event type enum.
Use CotType_Other with cot_type_str for unknown types. */
meshtastic_CotType cot_type_id;
/* How the coordinates were generated */
meshtastic_CotHow how;
/* Callsign */
char callsign[120];
/* Team color assignment */
meshtastic_Team team;
/* Role of the group member */
meshtastic_MemberRole role;
/* Latitude, multiply by 1e-7 to get degrees in floating point */
int32_t latitude_i;
/* Longitude, multiply by 1e-7 to get degrees in floating point */
int32_t longitude_i;
/* Altitude in meters (HAE) */
int32_t altitude;
/* Speed in cm/s */
uint32_t speed;
/* Course in degrees * 100 (0-36000) */
uint16_t course;
/* Battery level 0-100 */
uint8_t battery;
/* Geopoint source */
meshtastic_GeoPointSource geo_src;
/* Altitude source */
meshtastic_GeoPointSource alt_src;
/* Device UID (UUID string or device ID like "ANDROID-xxxx") */
char uid[48];
/* Device callsign */
char device_callsign[120];
/* Stale time as seconds offset from event time */
uint16_t stale_seconds;
/* TAK client version string */
char tak_version[64];
/* TAK device model */
char tak_device[32];
/* TAK platform (ATAK-CIV, WebTAK, etc.) */
char tak_platform[32];
/* TAK OS version */
char tak_os[16];
/* Connection endpoint */
char endpoint[32];
/* Phone number */
char phone[20];
/* CoT event type string, only populated when cot_type_id is CotType_Other */
char cot_type_str[32];
/* Optional remarks / free-text annotation from the <remarks> element.
Populated for non-GeoChat payload types (shapes, markers, routes, etc.)
when the original CoT event carried non-empty remarks text.
GeoChat messages carry their text in GeoChat.message instead.
Empty string (proto3 default) means no remarks were present. */
pb_callback_t remarks;
/* Observed weather conditions (temperature, wind). From <environment>.
Type is `TAKEnvironment`, not `Environment`, to avoid colliding with
SwiftUI's `@Environment` property wrapper in iOS consumers. */
bool has_environment;
meshtastic_TAKEnvironment environment;
/* Sensor field-of-view cone (camera, FLIR, laser, etc.). From <sensor>. */
bool has_sensor_fov;
meshtastic_SensorFov sensor_fov;
pb_size_t which_payload_variant;
union {
/* Position report (true = PLI, no extra fields beyond the common ones above) */
bool pli;
/* ATAK GeoChat message */
meshtastic_GeoChat chat;
/* Aircraft track data (ADS-B, military air) */
meshtastic_AircraftTrack aircraft;
/* Generic CoT detail XML for unmapped types. Kept as a fallback for CoT
types not yet promoted to a typed variant; drawings, markers, ranging
tools, and routes have dedicated variants below and should not land here. */
meshtastic_TAKPacketV2_raw_detail_t raw_detail;
/* User-drawn tactical graphic: circle, rectangle, polygon, polyline,
telestration, ranging circle, or bullseye. See DrawnShape. */
meshtastic_DrawnShape shape;
/* Fixed point of interest: spot marker, waypoint, checkpoint, 2525
symbol, or custom icon. See Marker. */
meshtastic_Marker marker;
/* Range and bearing measurement line. See RangeAndBearing. */
meshtastic_RangeAndBearing rab;
/* Named route with ordered waypoints and control points. See Route. */
meshtastic_Route route;
/* 9-line MEDEVAC request. See CasevacReport. */
meshtastic_CasevacReport casevac;
/* Emergency beacon / 911 alert. See EmergencyAlert. */
meshtastic_EmergencyAlert emergency;
/* Task / engage request. See TaskRequest. */
meshtastic_TaskRequest task;
} payload_variant;
} meshtastic_TAKPacketV2;
#ifdef __cplusplus
extern "C" {
#endif
/* Helper constants for enums */
#define _meshtastic_Team_MIN meshtastic_Team_Unspecifed_Color
#define _meshtastic_Team_MAX meshtastic_Team_Brown
#define _meshtastic_Team_ARRAYSIZE ((meshtastic_Team)(meshtastic_Team_Brown+1))
#define _meshtastic_MemberRole_MIN meshtastic_MemberRole_Unspecifed
#define _meshtastic_MemberRole_MAX meshtastic_MemberRole_K9
#define _meshtastic_MemberRole_ARRAYSIZE ((meshtastic_MemberRole)(meshtastic_MemberRole_K9+1))
#define _meshtastic_CotHow_MIN meshtastic_CotHow_CotHow_Unspecified
#define _meshtastic_CotHow_MAX meshtastic_CotHow_CotHow_m_s
#define _meshtastic_CotHow_ARRAYSIZE ((meshtastic_CotHow)(meshtastic_CotHow_CotHow_m_s+1))
#define _meshtastic_CotType_MIN meshtastic_CotType_CotType_Other
#define _meshtastic_CotType_MAX meshtastic_CotType_CotType_t_s
#define _meshtastic_CotType_ARRAYSIZE ((meshtastic_CotType)(meshtastic_CotType_CotType_t_s+1))
#define _meshtastic_GeoPointSource_MIN meshtastic_GeoPointSource_GeoPointSource_Unspecified
#define _meshtastic_GeoPointSource_MAX meshtastic_GeoPointSource_GeoPointSource_NETWORK
#define _meshtastic_GeoPointSource_ARRAYSIZE ((meshtastic_GeoPointSource)(meshtastic_GeoPointSource_GeoPointSource_NETWORK+1))
#define _meshtastic_GeoChat_ReceiptType_MIN meshtastic_GeoChat_ReceiptType_ReceiptType_None
#define _meshtastic_GeoChat_ReceiptType_MAX meshtastic_GeoChat_ReceiptType_ReceiptType_Read
#define _meshtastic_GeoChat_ReceiptType_ARRAYSIZE ((meshtastic_GeoChat_ReceiptType)(meshtastic_GeoChat_ReceiptType_ReceiptType_Read+1))
#define _meshtastic_DrawnShape_Kind_MIN meshtastic_DrawnShape_Kind_Kind_Unspecified
#define _meshtastic_DrawnShape_Kind_MAX meshtastic_DrawnShape_Kind_Kind_Vehicle3D
#define _meshtastic_DrawnShape_Kind_ARRAYSIZE ((meshtastic_DrawnShape_Kind)(meshtastic_DrawnShape_Kind_Kind_Vehicle3D+1))
#define _meshtastic_DrawnShape_StyleMode_MIN meshtastic_DrawnShape_StyleMode_StyleMode_Unspecified
#define _meshtastic_DrawnShape_StyleMode_MAX meshtastic_DrawnShape_StyleMode_StyleMode_StrokeAndFill
#define _meshtastic_DrawnShape_StyleMode_ARRAYSIZE ((meshtastic_DrawnShape_StyleMode)(meshtastic_DrawnShape_StyleMode_StyleMode_StrokeAndFill+1))
#define _meshtastic_Marker_Kind_MIN meshtastic_Marker_Kind_Kind_Unspecified
#define _meshtastic_Marker_Kind_MAX meshtastic_Marker_Kind_Kind_ImageMarker
#define _meshtastic_Marker_Kind_ARRAYSIZE ((meshtastic_Marker_Kind)(meshtastic_Marker_Kind_Kind_ImageMarker+1))
#define _meshtastic_Route_Method_MIN meshtastic_Route_Method_Method_Unspecified
#define _meshtastic_Route_Method_MAX meshtastic_Route_Method_Method_Watercraft
#define _meshtastic_Route_Method_ARRAYSIZE ((meshtastic_Route_Method)(meshtastic_Route_Method_Method_Watercraft+1))
#define _meshtastic_Route_Direction_MIN meshtastic_Route_Direction_Direction_Unspecified
#define _meshtastic_Route_Direction_MAX meshtastic_Route_Direction_Direction_Exfil
#define _meshtastic_Route_Direction_ARRAYSIZE ((meshtastic_Route_Direction)(meshtastic_Route_Direction_Direction_Exfil+1))
#define _meshtastic_CasevacReport_Precedence_MIN meshtastic_CasevacReport_Precedence_Precedence_Unspecified
#define _meshtastic_CasevacReport_Precedence_MAX meshtastic_CasevacReport_Precedence_Precedence_Convenience
#define _meshtastic_CasevacReport_Precedence_ARRAYSIZE ((meshtastic_CasevacReport_Precedence)(meshtastic_CasevacReport_Precedence_Precedence_Convenience+1))
#define _meshtastic_CasevacReport_HlzMarking_MIN meshtastic_CasevacReport_HlzMarking_HlzMarking_Unspecified
#define _meshtastic_CasevacReport_HlzMarking_MAX meshtastic_CasevacReport_HlzMarking_HlzMarking_Other
#define _meshtastic_CasevacReport_HlzMarking_ARRAYSIZE ((meshtastic_CasevacReport_HlzMarking)(meshtastic_CasevacReport_HlzMarking_HlzMarking_Other+1))
#define _meshtastic_CasevacReport_Security_MIN meshtastic_CasevacReport_Security_Security_Unspecified
#define _meshtastic_CasevacReport_Security_MAX meshtastic_CasevacReport_Security_Security_EnemyInArmedContact
#define _meshtastic_CasevacReport_Security_ARRAYSIZE ((meshtastic_CasevacReport_Security)(meshtastic_CasevacReport_Security_Security_EnemyInArmedContact+1))
#define _meshtastic_EmergencyAlert_Type_MIN meshtastic_EmergencyAlert_Type_Type_Unspecified
#define _meshtastic_EmergencyAlert_Type_MAX meshtastic_EmergencyAlert_Type_Type_Cancel
#define _meshtastic_EmergencyAlert_Type_ARRAYSIZE ((meshtastic_EmergencyAlert_Type)(meshtastic_EmergencyAlert_Type_Type_Cancel+1))
#define _meshtastic_TaskRequest_Priority_MIN meshtastic_TaskRequest_Priority_Priority_Unspecified
#define _meshtastic_TaskRequest_Priority_MAX meshtastic_TaskRequest_Priority_Priority_Critical
#define _meshtastic_TaskRequest_Priority_ARRAYSIZE ((meshtastic_TaskRequest_Priority)(meshtastic_TaskRequest_Priority_Priority_Critical+1))
#define _meshtastic_TaskRequest_Status_MIN meshtastic_TaskRequest_Status_Status_Unspecified
#define _meshtastic_TaskRequest_Status_MAX meshtastic_TaskRequest_Status_Status_Cancelled
#define _meshtastic_TaskRequest_Status_ARRAYSIZE ((meshtastic_TaskRequest_Status)(meshtastic_TaskRequest_Status_Status_Cancelled+1))
#define _meshtastic_SensorFov_SensorType_MIN meshtastic_SensorFov_SensorType_SensorType_Unspecified
#define _meshtastic_SensorFov_SensorType_MAX meshtastic_SensorFov_SensorType_SensorType_Other
#define _meshtastic_SensorFov_SensorType_ARRAYSIZE ((meshtastic_SensorFov_SensorType)(meshtastic_SensorFov_SensorType_SensorType_Other+1))
#define meshtastic_GeoChat_receipt_type_ENUMTYPE meshtastic_GeoChat_ReceiptType
#define meshtastic_Group_role_ENUMTYPE meshtastic_MemberRole
#define meshtastic_Group_team_ENUMTYPE meshtastic_Team
#define meshtastic_DrawnShape_kind_ENUMTYPE meshtastic_DrawnShape_Kind
#define meshtastic_DrawnShape_style_ENUMTYPE meshtastic_DrawnShape_StyleMode
#define meshtastic_DrawnShape_stroke_color_ENUMTYPE meshtastic_Team
#define meshtastic_DrawnShape_fill_color_ENUMTYPE meshtastic_Team
#define meshtastic_Marker_kind_ENUMTYPE meshtastic_Marker_Kind
#define meshtastic_Marker_color_ENUMTYPE meshtastic_Team
#define meshtastic_RangeAndBearing_stroke_color_ENUMTYPE meshtastic_Team
#define meshtastic_Route_method_ENUMTYPE meshtastic_Route_Method
#define meshtastic_Route_direction_ENUMTYPE meshtastic_Route_Direction
#define meshtastic_CasevacReport_precedence_ENUMTYPE meshtastic_CasevacReport_Precedence
#define meshtastic_CasevacReport_security_ENUMTYPE meshtastic_CasevacReport_Security
#define meshtastic_CasevacReport_hlz_marking_ENUMTYPE meshtastic_CasevacReport_HlzMarking
#define meshtastic_EmergencyAlert_type_ENUMTYPE meshtastic_EmergencyAlert_Type
#define meshtastic_TaskRequest_priority_ENUMTYPE meshtastic_TaskRequest_Priority
#define meshtastic_TaskRequest_status_ENUMTYPE meshtastic_TaskRequest_Status
#define meshtastic_SensorFov_type_ENUMTYPE meshtastic_SensorFov_SensorType
#define meshtastic_TAKPacketV2_cot_type_id_ENUMTYPE meshtastic_CotType
#define meshtastic_TAKPacketV2_how_ENUMTYPE meshtastic_CotHow
#define meshtastic_TAKPacketV2_team_ENUMTYPE meshtastic_Team
#define meshtastic_TAKPacketV2_role_ENUMTYPE meshtastic_MemberRole
#define meshtastic_TAKPacketV2_geo_src_ENUMTYPE meshtastic_GeoPointSource
#define meshtastic_TAKPacketV2_alt_src_ENUMTYPE meshtastic_GeoPointSource
/* Initializer values for message structs */
#define meshtastic_TAKPacket_init_default {0, false, meshtastic_Contact_init_default, false, meshtastic_Group_init_default, false, meshtastic_Status_init_default, 0, {meshtastic_PLI_init_default}}
#define meshtastic_GeoChat_init_default {"", false, "", false, "", "", _meshtastic_GeoChat_ReceiptType_MIN}
#define meshtastic_Group_init_default {_meshtastic_MemberRole_MIN, _meshtastic_Team_MIN}
#define meshtastic_Status_init_default {0}
#define meshtastic_Contact_init_default {"", ""}
#define meshtastic_PLI_init_default {0, 0, 0, 0, 0}
#define meshtastic_AircraftTrack_init_default {"", "", "", "", 0, "", 0, 0, ""}
#define meshtastic_CotGeoPoint_init_default {0, 0}
#define meshtastic_DrawnShape_init_default {_meshtastic_DrawnShape_Kind_MIN, _meshtastic_DrawnShape_StyleMode_MIN, 0, 0, 0, _meshtastic_Team_MIN, 0, 0, _meshtastic_Team_MIN, 0, 0, 0, {meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default, meshtastic_CotGeoPoint_init_default}, 0, 0, 0, 0, ""}
#define meshtastic_Marker_init_default {_meshtastic_Marker_Kind_MIN, _meshtastic_Team_MIN, 0, 0, "", "", "", ""}
#define meshtastic_RangeAndBearing_init_default {false, meshtastic_CotGeoPoint_init_default, "", 0, 0, _meshtastic_Team_MIN, 0, 0}
#define meshtastic_Route_init_default {_meshtastic_Route_Method_MIN, _meshtastic_Route_Direction_MIN, "", 0, 0, {meshtastic_Route_Link_init_default, meshtastic_Route_Link_init_default, meshtastic_Route_Link_init_default, meshtastic_Route_Link_init_default, meshtastic_Route_Link_init_default, meshtastic_Route_Link_init_default, meshtastic_Route_Link_init_default, meshtastic_Route_Link_init_default, meshtastic_Route_Link_init_default, meshtastic_Route_Link_init_default, meshtastic_Route_Link_init_default, meshtastic_Route_Link_init_default, meshtastic_Route_Link_init_default, meshtastic_Route_Link_init_default, meshtastic_Route_Link_init_default, meshtastic_Route_Link_init_default}, 0}
#define meshtastic_Route_Link_init_default {false, meshtastic_CotGeoPoint_init_default, "", "", 0}
#define meshtastic_CasevacReport_init_default {_meshtastic_CasevacReport_Precedence_MIN, 0, 0, 0, _meshtastic_CasevacReport_Security_MIN, _meshtastic_CasevacReport_HlzMarking_MIN, "", 0, 0, 0, 0, 0, 0, 0, "", {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, 0, 0, 0, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}}
#define meshtastic_ZMistEntry_init_default {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}}
#define meshtastic_EmergencyAlert_init_default {_meshtastic_EmergencyAlert_Type_MIN, "", ""}
#define meshtastic_TaskRequest_init_default {"", "", "", _meshtastic_TaskRequest_Priority_MIN, _meshtastic_TaskRequest_Status_MIN, ""}
#define meshtastic_TAKEnvironment_init_default {0, 0, 0}
#define meshtastic_SensorFov_init_default {_meshtastic_SensorFov_SensorType_MIN, 0, false, 0, 0, 0, 0, 0, {{NULL}, NULL}}
#define meshtastic_TAKPacketV2_init_default {_meshtastic_CotType_MIN, _meshtastic_CotHow_MIN, "", _meshtastic_Team_MIN, _meshtastic_MemberRole_MIN, 0, 0, 0, 0, 0, 0, _meshtastic_GeoPointSource_MIN, _meshtastic_GeoPointSource_MIN, "", "", 0, "", "", "", "", "", "", "", {{NULL}, NULL}, false, meshtastic_TAKEnvironment_init_default, false, meshtastic_SensorFov_init_default, 0, {0}}
#define meshtastic_TAKPacket_init_zero {0, false, meshtastic_Contact_init_zero, false, meshtastic_Group_init_zero, false, meshtastic_Status_init_zero, 0, {meshtastic_PLI_init_zero}}
#define meshtastic_GeoChat_init_zero {"", false, "", false, "", "", _meshtastic_GeoChat_ReceiptType_MIN}
#define meshtastic_Group_init_zero {_meshtastic_MemberRole_MIN, _meshtastic_Team_MIN}
#define meshtastic_Status_init_zero {0}
#define meshtastic_Contact_init_zero {"", ""}
#define meshtastic_PLI_init_zero {0, 0, 0, 0, 0}
#define meshtastic_AircraftTrack_init_zero {"", "", "", "", 0, "", 0, 0, ""}
#define meshtastic_CotGeoPoint_init_zero {0, 0}
#define meshtastic_DrawnShape_init_zero {_meshtastic_DrawnShape_Kind_MIN, _meshtastic_DrawnShape_StyleMode_MIN, 0, 0, 0, _meshtastic_Team_MIN, 0, 0, _meshtastic_Team_MIN, 0, 0, 0, {meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero, meshtastic_CotGeoPoint_init_zero}, 0, 0, 0, 0, ""}
#define meshtastic_Marker_init_zero {_meshtastic_Marker_Kind_MIN, _meshtastic_Team_MIN, 0, 0, "", "", "", ""}
#define meshtastic_RangeAndBearing_init_zero {false, meshtastic_CotGeoPoint_init_zero, "", 0, 0, _meshtastic_Team_MIN, 0, 0}
#define meshtastic_Route_init_zero {_meshtastic_Route_Method_MIN, _meshtastic_Route_Direction_MIN, "", 0, 0, {meshtastic_Route_Link_init_zero, meshtastic_Route_Link_init_zero, meshtastic_Route_Link_init_zero, meshtastic_Route_Link_init_zero, meshtastic_Route_Link_init_zero, meshtastic_Route_Link_init_zero, meshtastic_Route_Link_init_zero, meshtastic_Route_Link_init_zero, meshtastic_Route_Link_init_zero, meshtastic_Route_Link_init_zero, meshtastic_Route_Link_init_zero, meshtastic_Route_Link_init_zero, meshtastic_Route_Link_init_zero, meshtastic_Route_Link_init_zero, meshtastic_Route_Link_init_zero, meshtastic_Route_Link_init_zero}, 0}
#define meshtastic_Route_Link_init_zero {false, meshtastic_CotGeoPoint_init_zero, "", "", 0}
#define meshtastic_CasevacReport_init_zero {_meshtastic_CasevacReport_Precedence_MIN, 0, 0, 0, _meshtastic_CasevacReport_Security_MIN, _meshtastic_CasevacReport_HlzMarking_MIN, "", 0, 0, 0, 0, 0, 0, 0, "", {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, 0, 0, 0, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}}
#define meshtastic_ZMistEntry_init_zero {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}}
#define meshtastic_EmergencyAlert_init_zero {_meshtastic_EmergencyAlert_Type_MIN, "", ""}
#define meshtastic_TaskRequest_init_zero {"", "", "", _meshtastic_TaskRequest_Priority_MIN, _meshtastic_TaskRequest_Status_MIN, ""}
#define meshtastic_TAKEnvironment_init_zero {0, 0, 0}
#define meshtastic_SensorFov_init_zero {_meshtastic_SensorFov_SensorType_MIN, 0, false, 0, 0, 0, 0, 0, {{NULL}, NULL}}
#define meshtastic_TAKPacketV2_init_zero {_meshtastic_CotType_MIN, _meshtastic_CotHow_MIN, "", _meshtastic_Team_MIN, _meshtastic_MemberRole_MIN, 0, 0, 0, 0, 0, 0, _meshtastic_GeoPointSource_MIN, _meshtastic_GeoPointSource_MIN, "", "", 0, "", "", "", "", "", "", "", {{NULL}, NULL}, false, meshtastic_TAKEnvironment_init_zero, false, meshtastic_SensorFov_init_zero, 0, {0}}
/* Field tags (for use in manual encoding/decoding) */
#define meshtastic_GeoChat_message_tag 1
#define meshtastic_GeoChat_to_tag 2
#define meshtastic_GeoChat_to_callsign_tag 3
#define meshtastic_GeoChat_receipt_for_uid_tag 4
#define meshtastic_GeoChat_receipt_type_tag 5
#define meshtastic_Group_role_tag 1
#define meshtastic_Group_team_tag 2
#define meshtastic_Status_battery_tag 1
#define meshtastic_Contact_callsign_tag 1
#define meshtastic_Contact_device_callsign_tag 2
#define meshtastic_PLI_latitude_i_tag 1
#define meshtastic_PLI_longitude_i_tag 2
#define meshtastic_PLI_altitude_tag 3
#define meshtastic_PLI_speed_tag 4
#define meshtastic_PLI_course_tag 5
#define meshtastic_TAKPacket_is_compressed_tag 1
#define meshtastic_TAKPacket_contact_tag 2
#define meshtastic_TAKPacket_group_tag 3
#define meshtastic_TAKPacket_status_tag 4
#define meshtastic_TAKPacket_pli_tag 5
#define meshtastic_TAKPacket_chat_tag 6
#define meshtastic_TAKPacket_detail_tag 7
#define meshtastic_AircraftTrack_icao_tag 1
#define meshtastic_AircraftTrack_registration_tag 2
#define meshtastic_AircraftTrack_flight_tag 3
#define meshtastic_AircraftTrack_aircraft_type_tag 4
#define meshtastic_AircraftTrack_squawk_tag 5
#define meshtastic_AircraftTrack_category_tag 6
#define meshtastic_AircraftTrack_rssi_x10_tag 7
#define meshtastic_AircraftTrack_gps_tag 8
#define meshtastic_AircraftTrack_cot_host_id_tag 9
#define meshtastic_CotGeoPoint_lat_delta_i_tag 1
#define meshtastic_CotGeoPoint_lon_delta_i_tag 2
#define meshtastic_DrawnShape_kind_tag 1
#define meshtastic_DrawnShape_style_tag 2
#define meshtastic_DrawnShape_major_cm_tag 3
#define meshtastic_DrawnShape_minor_cm_tag 4
#define meshtastic_DrawnShape_angle_deg_tag 5
#define meshtastic_DrawnShape_stroke_color_tag 6
#define meshtastic_DrawnShape_stroke_argb_tag 7
#define meshtastic_DrawnShape_stroke_weight_x10_tag 8
#define meshtastic_DrawnShape_fill_color_tag 9
#define meshtastic_DrawnShape_fill_argb_tag 10
#define meshtastic_DrawnShape_labels_on_tag 11
#define meshtastic_DrawnShape_vertices_tag 12
#define meshtastic_DrawnShape_truncated_tag 13
#define meshtastic_DrawnShape_bullseye_distance_dm_tag 14
#define meshtastic_DrawnShape_bullseye_bearing_ref_tag 15
#define meshtastic_DrawnShape_bullseye_flags_tag 16
#define meshtastic_DrawnShape_bullseye_uid_ref_tag 17
#define meshtastic_Marker_kind_tag 1
#define meshtastic_Marker_color_tag 2
#define meshtastic_Marker_color_argb_tag 3
#define meshtastic_Marker_readiness_tag 4
#define meshtastic_Marker_parent_uid_tag 5
#define meshtastic_Marker_parent_type_tag 6
#define meshtastic_Marker_parent_callsign_tag 7
#define meshtastic_Marker_iconset_tag 8
#define meshtastic_RangeAndBearing_anchor_tag 1
#define meshtastic_RangeAndBearing_anchor_uid_tag 2
#define meshtastic_RangeAndBearing_range_cm_tag 3
#define meshtastic_RangeAndBearing_bearing_cdeg_tag 4
#define meshtastic_RangeAndBearing_stroke_color_tag 5
#define meshtastic_RangeAndBearing_stroke_argb_tag 6
#define meshtastic_RangeAndBearing_stroke_weight_x10_tag 7
#define meshtastic_Route_Link_point_tag 1
#define meshtastic_Route_Link_uid_tag 2
#define meshtastic_Route_Link_callsign_tag 3
#define meshtastic_Route_Link_link_type_tag 4
#define meshtastic_Route_method_tag 1
#define meshtastic_Route_direction_tag 2
#define meshtastic_Route_prefix_tag 3
#define meshtastic_Route_stroke_weight_x10_tag 4
#define meshtastic_Route_links_tag 5
#define meshtastic_Route_truncated_tag 6
#define meshtastic_CasevacReport_precedence_tag 1
#define meshtastic_CasevacReport_equipment_flags_tag 2
#define meshtastic_CasevacReport_litter_patients_tag 3
#define meshtastic_CasevacReport_ambulatory_patients_tag 4
#define meshtastic_CasevacReport_security_tag 5
#define meshtastic_CasevacReport_hlz_marking_tag 6
#define meshtastic_CasevacReport_zone_marker_tag 7
#define meshtastic_CasevacReport_us_military_tag 8
#define meshtastic_CasevacReport_us_civilian_tag 9
#define meshtastic_CasevacReport_non_us_military_tag 10
#define meshtastic_CasevacReport_non_us_civilian_tag 11
#define meshtastic_CasevacReport_epw_tag 12
#define meshtastic_CasevacReport_child_tag 13
#define meshtastic_CasevacReport_terrain_flags_tag 14
#define meshtastic_CasevacReport_frequency_tag 15
#define meshtastic_CasevacReport_title_tag 16
#define meshtastic_CasevacReport_medline_remarks_tag 17
#define meshtastic_CasevacReport_urgent_count_tag 18
#define meshtastic_CasevacReport_urgent_surgical_count_tag 19
#define meshtastic_CasevacReport_priority_count_tag 20
#define meshtastic_CasevacReport_routine_count_tag 21
#define meshtastic_CasevacReport_convenience_count_tag 22
#define meshtastic_CasevacReport_equipment_detail_tag 23
#define meshtastic_CasevacReport_zone_protected_coord_tag 24
#define meshtastic_CasevacReport_terrain_slope_dir_tag 25
#define meshtastic_CasevacReport_terrain_other_detail_tag 26
#define meshtastic_CasevacReport_marked_by_tag 27
#define meshtastic_CasevacReport_obstacles_tag 28
#define meshtastic_CasevacReport_winds_are_from_tag 29
#define meshtastic_CasevacReport_friendlies_tag 30
#define meshtastic_CasevacReport_enemy_tag 31
#define meshtastic_CasevacReport_hlz_remarks_tag 32
#define meshtastic_CasevacReport_zmist_tag 33
#define meshtastic_ZMistEntry_title_tag 1
#define meshtastic_ZMistEntry_z_tag 2
#define meshtastic_ZMistEntry_m_tag 3
#define meshtastic_ZMistEntry_i_tag 4
#define meshtastic_ZMistEntry_s_tag 5
#define meshtastic_ZMistEntry_t_tag 6
#define meshtastic_EmergencyAlert_type_tag 1
#define meshtastic_EmergencyAlert_authoring_uid_tag 2
#define meshtastic_EmergencyAlert_cancel_reference_uid_tag 3
#define meshtastic_TaskRequest_task_type_tag 1
#define meshtastic_TaskRequest_target_uid_tag 2
#define meshtastic_TaskRequest_assignee_uid_tag 3
#define meshtastic_TaskRequest_priority_tag 4
#define meshtastic_TaskRequest_status_tag 5
#define meshtastic_TaskRequest_note_tag 6
#define meshtastic_TAKEnvironment_temperature_c_x10_tag 1
#define meshtastic_TAKEnvironment_wind_direction_deg_tag 2
#define meshtastic_TAKEnvironment_wind_speed_cm_s_tag 3
#define meshtastic_SensorFov_type_tag 1
#define meshtastic_SensorFov_azimuth_deg_tag 2
#define meshtastic_SensorFov_range_m_tag 3
#define meshtastic_SensorFov_fov_horizontal_deg_tag 4
#define meshtastic_SensorFov_fov_vertical_deg_tag 5
#define meshtastic_SensorFov_elevation_deg_tag 6
#define meshtastic_SensorFov_roll_deg_tag 7
#define meshtastic_SensorFov_model_tag 8
#define meshtastic_TAKPacketV2_cot_type_id_tag 1
#define meshtastic_TAKPacketV2_how_tag 2
#define meshtastic_TAKPacketV2_callsign_tag 3
#define meshtastic_TAKPacketV2_team_tag 4
#define meshtastic_TAKPacketV2_role_tag 5
#define meshtastic_TAKPacketV2_latitude_i_tag 6
#define meshtastic_TAKPacketV2_longitude_i_tag 7
#define meshtastic_TAKPacketV2_altitude_tag 8
#define meshtastic_TAKPacketV2_speed_tag 9
#define meshtastic_TAKPacketV2_course_tag 10
#define meshtastic_TAKPacketV2_battery_tag 11
#define meshtastic_TAKPacketV2_geo_src_tag 12
#define meshtastic_TAKPacketV2_alt_src_tag 13
#define meshtastic_TAKPacketV2_uid_tag 14
#define meshtastic_TAKPacketV2_device_callsign_tag 15
#define meshtastic_TAKPacketV2_stale_seconds_tag 16
#define meshtastic_TAKPacketV2_tak_version_tag 17
#define meshtastic_TAKPacketV2_tak_device_tag 18
#define meshtastic_TAKPacketV2_tak_platform_tag 19
#define meshtastic_TAKPacketV2_tak_os_tag 20
#define meshtastic_TAKPacketV2_endpoint_tag 21
#define meshtastic_TAKPacketV2_phone_tag 22
#define meshtastic_TAKPacketV2_cot_type_str_tag 23
#define meshtastic_TAKPacketV2_remarks_tag 24
#define meshtastic_TAKPacketV2_environment_tag 25
#define meshtastic_TAKPacketV2_sensor_fov_tag 26
#define meshtastic_TAKPacketV2_pli_tag 30
#define meshtastic_TAKPacketV2_chat_tag 31
#define meshtastic_TAKPacketV2_aircraft_tag 32
#define meshtastic_TAKPacketV2_raw_detail_tag 33
#define meshtastic_TAKPacketV2_shape_tag 34
#define meshtastic_TAKPacketV2_marker_tag 35
#define meshtastic_TAKPacketV2_rab_tag 36
#define meshtastic_TAKPacketV2_route_tag 37
#define meshtastic_TAKPacketV2_casevac_tag 38
#define meshtastic_TAKPacketV2_emergency_tag 39
#define meshtastic_TAKPacketV2_task_tag 40
/* Struct field encoding specification for nanopb */
#define meshtastic_TAKPacket_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, BOOL, is_compressed, 1) \
X(a, STATIC, OPTIONAL, MESSAGE, contact, 2) \
X(a, STATIC, OPTIONAL, MESSAGE, group, 3) \
X(a, STATIC, OPTIONAL, MESSAGE, status, 4) \
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,pli,payload_variant.pli), 5) \
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,chat,payload_variant.chat), 6) \
X(a, STATIC, ONEOF, BYTES, (payload_variant,detail,payload_variant.detail), 7)
#define meshtastic_TAKPacket_CALLBACK NULL
#define meshtastic_TAKPacket_DEFAULT NULL
#define meshtastic_TAKPacket_contact_MSGTYPE meshtastic_Contact
#define meshtastic_TAKPacket_group_MSGTYPE meshtastic_Group
#define meshtastic_TAKPacket_status_MSGTYPE meshtastic_Status
#define meshtastic_TAKPacket_payload_variant_pli_MSGTYPE meshtastic_PLI
#define meshtastic_TAKPacket_payload_variant_chat_MSGTYPE meshtastic_GeoChat
#define meshtastic_GeoChat_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, STRING, message, 1) \
X(a, STATIC, OPTIONAL, STRING, to, 2) \
X(a, STATIC, OPTIONAL, STRING, to_callsign, 3) \
X(a, STATIC, SINGULAR, STRING, receipt_for_uid, 4) \
X(a, STATIC, SINGULAR, UENUM, receipt_type, 5)
#define meshtastic_GeoChat_CALLBACK NULL
#define meshtastic_GeoChat_DEFAULT NULL
#define meshtastic_Group_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UENUM, role, 1) \
X(a, STATIC, SINGULAR, UENUM, team, 2)
#define meshtastic_Group_CALLBACK NULL
#define meshtastic_Group_DEFAULT NULL
#define meshtastic_Status_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UINT32, battery, 1)
#define meshtastic_Status_CALLBACK NULL
#define meshtastic_Status_DEFAULT NULL
#define meshtastic_Contact_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, STRING, callsign, 1) \
X(a, STATIC, SINGULAR, STRING, device_callsign, 2)
#define meshtastic_Contact_CALLBACK NULL
#define meshtastic_Contact_DEFAULT NULL
#define meshtastic_PLI_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, SFIXED32, latitude_i, 1) \
X(a, STATIC, SINGULAR, SFIXED32, longitude_i, 2) \
X(a, STATIC, SINGULAR, INT32, altitude, 3) \
X(a, STATIC, SINGULAR, UINT32, speed, 4) \
X(a, STATIC, SINGULAR, UINT32, course, 5)
#define meshtastic_PLI_CALLBACK NULL
#define meshtastic_PLI_DEFAULT NULL
#define meshtastic_AircraftTrack_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, STRING, icao, 1) \
X(a, STATIC, SINGULAR, STRING, registration, 2) \
X(a, STATIC, SINGULAR, STRING, flight, 3) \
X(a, STATIC, SINGULAR, STRING, aircraft_type, 4) \
X(a, STATIC, SINGULAR, UINT32, squawk, 5) \
X(a, STATIC, SINGULAR, STRING, category, 6) \
X(a, STATIC, SINGULAR, SINT32, rssi_x10, 7) \
X(a, STATIC, SINGULAR, BOOL, gps, 8) \
X(a, STATIC, SINGULAR, STRING, cot_host_id, 9)
#define meshtastic_AircraftTrack_CALLBACK NULL
#define meshtastic_AircraftTrack_DEFAULT NULL
#define meshtastic_CotGeoPoint_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, SINT32, lat_delta_i, 1) \
X(a, STATIC, SINGULAR, SINT32, lon_delta_i, 2)
#define meshtastic_CotGeoPoint_CALLBACK NULL
#define meshtastic_CotGeoPoint_DEFAULT NULL
#define meshtastic_DrawnShape_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UENUM, kind, 1) \
X(a, STATIC, SINGULAR, UENUM, style, 2) \
X(a, STATIC, SINGULAR, UINT32, major_cm, 3) \
X(a, STATIC, SINGULAR, UINT32, minor_cm, 4) \
X(a, STATIC, SINGULAR, UINT32, angle_deg, 5) \
X(a, STATIC, SINGULAR, UENUM, stroke_color, 6) \
X(a, STATIC, SINGULAR, FIXED32, stroke_argb, 7) \
X(a, STATIC, SINGULAR, UINT32, stroke_weight_x10, 8) \
X(a, STATIC, SINGULAR, UENUM, fill_color, 9) \
X(a, STATIC, SINGULAR, FIXED32, fill_argb, 10) \
X(a, STATIC, SINGULAR, BOOL, labels_on, 11) \
X(a, STATIC, REPEATED, MESSAGE, vertices, 12) \
X(a, STATIC, SINGULAR, BOOL, truncated, 13) \
X(a, STATIC, SINGULAR, UINT32, bullseye_distance_dm, 14) \
X(a, STATIC, SINGULAR, UINT32, bullseye_bearing_ref, 15) \
X(a, STATIC, SINGULAR, UINT32, bullseye_flags, 16) \
X(a, STATIC, SINGULAR, STRING, bullseye_uid_ref, 17)
#define meshtastic_DrawnShape_CALLBACK NULL
#define meshtastic_DrawnShape_DEFAULT NULL
#define meshtastic_DrawnShape_vertices_MSGTYPE meshtastic_CotGeoPoint
#define meshtastic_Marker_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UENUM, kind, 1) \
X(a, STATIC, SINGULAR, UENUM, color, 2) \
X(a, STATIC, SINGULAR, FIXED32, color_argb, 3) \
X(a, STATIC, SINGULAR, BOOL, readiness, 4) \
X(a, STATIC, SINGULAR, STRING, parent_uid, 5) \
X(a, STATIC, SINGULAR, STRING, parent_type, 6) \
X(a, STATIC, SINGULAR, STRING, parent_callsign, 7) \
X(a, STATIC, SINGULAR, STRING, iconset, 8)
#define meshtastic_Marker_CALLBACK NULL
#define meshtastic_Marker_DEFAULT NULL
#define meshtastic_RangeAndBearing_FIELDLIST(X, a) \
X(a, STATIC, OPTIONAL, MESSAGE, anchor, 1) \
X(a, STATIC, SINGULAR, STRING, anchor_uid, 2) \
X(a, STATIC, SINGULAR, UINT32, range_cm, 3) \
X(a, STATIC, SINGULAR, UINT32, bearing_cdeg, 4) \
X(a, STATIC, SINGULAR, UENUM, stroke_color, 5) \
X(a, STATIC, SINGULAR, FIXED32, stroke_argb, 6) \
X(a, STATIC, SINGULAR, UINT32, stroke_weight_x10, 7)
#define meshtastic_RangeAndBearing_CALLBACK NULL
#define meshtastic_RangeAndBearing_DEFAULT NULL
#define meshtastic_RangeAndBearing_anchor_MSGTYPE meshtastic_CotGeoPoint
#define meshtastic_Route_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UENUM, method, 1) \
X(a, STATIC, SINGULAR, UENUM, direction, 2) \
X(a, STATIC, SINGULAR, STRING, prefix, 3) \
X(a, STATIC, SINGULAR, UINT32, stroke_weight_x10, 4) \
X(a, STATIC, REPEATED, MESSAGE, links, 5) \
X(a, STATIC, SINGULAR, BOOL, truncated, 6)
#define meshtastic_Route_CALLBACK NULL
#define meshtastic_Route_DEFAULT NULL
#define meshtastic_Route_links_MSGTYPE meshtastic_Route_Link
#define meshtastic_Route_Link_FIELDLIST(X, a) \
X(a, STATIC, OPTIONAL, MESSAGE, point, 1) \
X(a, STATIC, SINGULAR, STRING, uid, 2) \
X(a, STATIC, SINGULAR, STRING, callsign, 3) \
X(a, STATIC, SINGULAR, UINT32, link_type, 4)
#define meshtastic_Route_Link_CALLBACK NULL
#define meshtastic_Route_Link_DEFAULT NULL
#define meshtastic_Route_Link_point_MSGTYPE meshtastic_CotGeoPoint
#define meshtastic_CasevacReport_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UENUM, precedence, 1) \
X(a, STATIC, SINGULAR, UINT32, equipment_flags, 2) \
X(a, STATIC, SINGULAR, UINT32, litter_patients, 3) \
X(a, STATIC, SINGULAR, UINT32, ambulatory_patients, 4) \
X(a, STATIC, SINGULAR, UENUM, security, 5) \
X(a, STATIC, SINGULAR, UENUM, hlz_marking, 6) \
X(a, STATIC, SINGULAR, STRING, zone_marker, 7) \
X(a, STATIC, SINGULAR, UINT32, us_military, 8) \
X(a, STATIC, SINGULAR, UINT32, us_civilian, 9) \
X(a, STATIC, SINGULAR, UINT32, non_us_military, 10) \
X(a, STATIC, SINGULAR, UINT32, non_us_civilian, 11) \
X(a, STATIC, SINGULAR, UINT32, epw, 12) \
X(a, STATIC, SINGULAR, UINT32, child, 13) \
X(a, STATIC, SINGULAR, UINT32, terrain_flags, 14) \
X(a, STATIC, SINGULAR, STRING, frequency, 15) \
X(a, CALLBACK, SINGULAR, STRING, title, 16) \
X(a, CALLBACK, SINGULAR, STRING, medline_remarks, 17) \
X(a, STATIC, SINGULAR, UINT32, urgent_count, 18) \
X(a, STATIC, SINGULAR, UINT32, urgent_surgical_count, 19) \
X(a, STATIC, SINGULAR, UINT32, priority_count, 20) \
X(a, STATIC, SINGULAR, UINT32, routine_count, 21) \
X(a, STATIC, SINGULAR, UINT32, convenience_count, 22) \
X(a, CALLBACK, SINGULAR, STRING, equipment_detail, 23) \
X(a, CALLBACK, SINGULAR, STRING, zone_protected_coord, 24) \
X(a, CALLBACK, SINGULAR, STRING, terrain_slope_dir, 25) \
X(a, CALLBACK, SINGULAR, STRING, terrain_other_detail, 26) \
X(a, CALLBACK, SINGULAR, STRING, marked_by, 27) \
X(a, CALLBACK, SINGULAR, STRING, obstacles, 28) \
X(a, CALLBACK, SINGULAR, STRING, winds_are_from, 29) \
X(a, CALLBACK, SINGULAR, STRING, friendlies, 30) \
X(a, CALLBACK, SINGULAR, STRING, enemy, 31) \
X(a, CALLBACK, SINGULAR, STRING, hlz_remarks, 32) \
X(a, CALLBACK, REPEATED, MESSAGE, zmist, 33)
#define meshtastic_CasevacReport_CALLBACK pb_default_field_callback
#define meshtastic_CasevacReport_DEFAULT NULL
#define meshtastic_CasevacReport_zmist_MSGTYPE meshtastic_ZMistEntry
#define meshtastic_ZMistEntry_FIELDLIST(X, a) \
X(a, CALLBACK, SINGULAR, STRING, title, 1) \
X(a, CALLBACK, SINGULAR, STRING, z, 2) \
X(a, CALLBACK, SINGULAR, STRING, m, 3) \
X(a, CALLBACK, SINGULAR, STRING, i, 4) \
X(a, CALLBACK, SINGULAR, STRING, s, 5) \
X(a, CALLBACK, SINGULAR, STRING, t, 6)
#define meshtastic_ZMistEntry_CALLBACK pb_default_field_callback
#define meshtastic_ZMistEntry_DEFAULT NULL
#define meshtastic_EmergencyAlert_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UENUM, type, 1) \
X(a, STATIC, SINGULAR, STRING, authoring_uid, 2) \
X(a, STATIC, SINGULAR, STRING, cancel_reference_uid, 3)
#define meshtastic_EmergencyAlert_CALLBACK NULL
#define meshtastic_EmergencyAlert_DEFAULT NULL
#define meshtastic_TaskRequest_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, STRING, task_type, 1) \
X(a, STATIC, SINGULAR, STRING, target_uid, 2) \
X(a, STATIC, SINGULAR, STRING, assignee_uid, 3) \
X(a, STATIC, SINGULAR, UENUM, priority, 4) \
X(a, STATIC, SINGULAR, UENUM, status, 5) \
X(a, STATIC, SINGULAR, STRING, note, 6)
#define meshtastic_TaskRequest_CALLBACK NULL
#define meshtastic_TaskRequest_DEFAULT NULL
#define meshtastic_TAKEnvironment_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, SINT32, temperature_c_x10, 1) \
X(a, STATIC, SINGULAR, UINT32, wind_direction_deg, 2) \
X(a, STATIC, SINGULAR, UINT32, wind_speed_cm_s, 3)
#define meshtastic_TAKEnvironment_CALLBACK NULL
#define meshtastic_TAKEnvironment_DEFAULT NULL
#define meshtastic_SensorFov_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UENUM, type, 1) \
X(a, STATIC, SINGULAR, UINT32, azimuth_deg, 2) \
X(a, STATIC, OPTIONAL, UINT32, range_m, 3) \
X(a, STATIC, SINGULAR, UINT32, fov_horizontal_deg, 4) \
X(a, STATIC, SINGULAR, UINT32, fov_vertical_deg, 5) \
X(a, STATIC, SINGULAR, SINT32, elevation_deg, 6) \
X(a, STATIC, SINGULAR, SINT32, roll_deg, 7) \
X(a, CALLBACK, SINGULAR, STRING, model, 8)
#define meshtastic_SensorFov_CALLBACK pb_default_field_callback
#define meshtastic_SensorFov_DEFAULT NULL
#define meshtastic_TAKPacketV2_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UENUM, cot_type_id, 1) \
X(a, STATIC, SINGULAR, UENUM, how, 2) \
X(a, STATIC, SINGULAR, STRING, callsign, 3) \
X(a, STATIC, SINGULAR, UENUM, team, 4) \
X(a, STATIC, SINGULAR, UENUM, role, 5) \
X(a, STATIC, SINGULAR, SFIXED32, latitude_i, 6) \
X(a, STATIC, SINGULAR, SFIXED32, longitude_i, 7) \
X(a, STATIC, SINGULAR, SINT32, altitude, 8) \
X(a, STATIC, SINGULAR, UINT32, speed, 9) \
X(a, STATIC, SINGULAR, UINT32, course, 10) \
X(a, STATIC, SINGULAR, UINT32, battery, 11) \
X(a, STATIC, SINGULAR, UENUM, geo_src, 12) \
X(a, STATIC, SINGULAR, UENUM, alt_src, 13) \
X(a, STATIC, SINGULAR, STRING, uid, 14) \
X(a, STATIC, SINGULAR, STRING, device_callsign, 15) \
X(a, STATIC, SINGULAR, UINT32, stale_seconds, 16) \
X(a, STATIC, SINGULAR, STRING, tak_version, 17) \
X(a, STATIC, SINGULAR, STRING, tak_device, 18) \
X(a, STATIC, SINGULAR, STRING, tak_platform, 19) \
X(a, STATIC, SINGULAR, STRING, tak_os, 20) \
X(a, STATIC, SINGULAR, STRING, endpoint, 21) \
X(a, STATIC, SINGULAR, STRING, phone, 22) \
X(a, STATIC, SINGULAR, STRING, cot_type_str, 23) \
X(a, CALLBACK, SINGULAR, STRING, remarks, 24) \
X(a, STATIC, OPTIONAL, MESSAGE, environment, 25) \
X(a, STATIC, OPTIONAL, MESSAGE, sensor_fov, 26) \
X(a, STATIC, ONEOF, BOOL, (payload_variant,pli,payload_variant.pli), 30) \
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,chat,payload_variant.chat), 31) \
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,aircraft,payload_variant.aircraft), 32) \
X(a, STATIC, ONEOF, BYTES, (payload_variant,raw_detail,payload_variant.raw_detail), 33) \
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,shape,payload_variant.shape), 34) \
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,marker,payload_variant.marker), 35) \
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,rab,payload_variant.rab), 36) \
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,route,payload_variant.route), 37) \
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,casevac,payload_variant.casevac), 38) \
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,emergency,payload_variant.emergency), 39) \
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,task,payload_variant.task), 40)
#define meshtastic_TAKPacketV2_CALLBACK pb_default_field_callback
#define meshtastic_TAKPacketV2_DEFAULT NULL
#define meshtastic_TAKPacketV2_environment_MSGTYPE meshtastic_TAKEnvironment
#define meshtastic_TAKPacketV2_sensor_fov_MSGTYPE meshtastic_SensorFov
#define meshtastic_TAKPacketV2_payload_variant_chat_MSGTYPE meshtastic_GeoChat
#define meshtastic_TAKPacketV2_payload_variant_aircraft_MSGTYPE meshtastic_AircraftTrack
#define meshtastic_TAKPacketV2_payload_variant_shape_MSGTYPE meshtastic_DrawnShape
#define meshtastic_TAKPacketV2_payload_variant_marker_MSGTYPE meshtastic_Marker
#define meshtastic_TAKPacketV2_payload_variant_rab_MSGTYPE meshtastic_RangeAndBearing
#define meshtastic_TAKPacketV2_payload_variant_route_MSGTYPE meshtastic_Route
#define meshtastic_TAKPacketV2_payload_variant_casevac_MSGTYPE meshtastic_CasevacReport
#define meshtastic_TAKPacketV2_payload_variant_emergency_MSGTYPE meshtastic_EmergencyAlert
#define meshtastic_TAKPacketV2_payload_variant_task_MSGTYPE meshtastic_TaskRequest
extern const pb_msgdesc_t meshtastic_TAKPacket_msg;
extern const pb_msgdesc_t meshtastic_GeoChat_msg;
extern const pb_msgdesc_t meshtastic_Group_msg;
extern const pb_msgdesc_t meshtastic_Status_msg;
extern const pb_msgdesc_t meshtastic_Contact_msg;
extern const pb_msgdesc_t meshtastic_PLI_msg;
extern const pb_msgdesc_t meshtastic_AircraftTrack_msg;
extern const pb_msgdesc_t meshtastic_CotGeoPoint_msg;
extern const pb_msgdesc_t meshtastic_DrawnShape_msg;
extern const pb_msgdesc_t meshtastic_Marker_msg;
extern const pb_msgdesc_t meshtastic_RangeAndBearing_msg;
extern const pb_msgdesc_t meshtastic_Route_msg;
extern const pb_msgdesc_t meshtastic_Route_Link_msg;
extern const pb_msgdesc_t meshtastic_CasevacReport_msg;
extern const pb_msgdesc_t meshtastic_ZMistEntry_msg;
extern const pb_msgdesc_t meshtastic_EmergencyAlert_msg;
extern const pb_msgdesc_t meshtastic_TaskRequest_msg;
extern const pb_msgdesc_t meshtastic_TAKEnvironment_msg;
extern const pb_msgdesc_t meshtastic_SensorFov_msg;
extern const pb_msgdesc_t meshtastic_TAKPacketV2_msg;
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
#define meshtastic_TAKPacket_fields &meshtastic_TAKPacket_msg
#define meshtastic_GeoChat_fields &meshtastic_GeoChat_msg
#define meshtastic_Group_fields &meshtastic_Group_msg
#define meshtastic_Status_fields &meshtastic_Status_msg
#define meshtastic_Contact_fields &meshtastic_Contact_msg
#define meshtastic_PLI_fields &meshtastic_PLI_msg
#define meshtastic_AircraftTrack_fields &meshtastic_AircraftTrack_msg
#define meshtastic_CotGeoPoint_fields &meshtastic_CotGeoPoint_msg
#define meshtastic_DrawnShape_fields &meshtastic_DrawnShape_msg
#define meshtastic_Marker_fields &meshtastic_Marker_msg
#define meshtastic_RangeAndBearing_fields &meshtastic_RangeAndBearing_msg
#define meshtastic_Route_fields &meshtastic_Route_msg
#define meshtastic_Route_Link_fields &meshtastic_Route_Link_msg
#define meshtastic_CasevacReport_fields &meshtastic_CasevacReport_msg
#define meshtastic_ZMistEntry_fields &meshtastic_ZMistEntry_msg
#define meshtastic_EmergencyAlert_fields &meshtastic_EmergencyAlert_msg
#define meshtastic_TaskRequest_fields &meshtastic_TaskRequest_msg
#define meshtastic_TAKEnvironment_fields &meshtastic_TAKEnvironment_msg
#define meshtastic_SensorFov_fields &meshtastic_SensorFov_msg
#define meshtastic_TAKPacketV2_fields &meshtastic_TAKPacketV2_msg
/* Maximum encoded size of messages (where known) */
/* meshtastic_CasevacReport_size depends on runtime parameters */
/* meshtastic_ZMistEntry_size depends on runtime parameters */
/* meshtastic_SensorFov_size depends on runtime parameters */
/* meshtastic_TAKPacketV2_size depends on runtime parameters */
#define MESHTASTIC_MESHTASTIC_ATAK_PB_H_MAX_SIZE meshtastic_Route_size
#define meshtastic_AircraftTrack_size 134
#define meshtastic_Contact_size 242
#define meshtastic_CotGeoPoint_size 12
#define meshtastic_DrawnShape_size 553
#define meshtastic_EmergencyAlert_size 100
#define meshtastic_GeoChat_size 495
#define meshtastic_Group_size 4
#define meshtastic_Marker_size 191
#define meshtastic_PLI_size 31
#define meshtastic_RangeAndBearing_size 84
#define meshtastic_Route_Link_size 83
#define meshtastic_Route_size 1379
#define meshtastic_Status_size 3
#define meshtastic_TAKEnvironment_size 18
#define meshtastic_TAKPacket_size 756
#define meshtastic_TaskRequest_size 132
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif