syntax = "proto3"; package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "ATAKProtos"; option java_package = "com.geeksville.mesh"; option swift_prefix = ""; /* * Packets for the official ATAK Plugin */ message TAKPacket { /* * Are the payloads strings compressed for LoRA transport? */ bool is_compressed = 1; /* * The contact / callsign for ATAK user */ Contact contact = 2; /* * The group for ATAK user */ Group group = 3; /* * The status of the ATAK EUD */ Status status = 4; /* * The payload of the packet */ oneof payload_variant { /* * TAK position report */ PLI pli = 5; /* * ATAK GeoChat message */ GeoChat chat = 6; } } /* * ATAK GeoChat message */ message GeoChat { /* * The text message */ string message = 1; /* * Uid recipient of the message */ optional string to = 2; /* * Callsign of the recipient for the message */ optional string to_callsign = 3; } /* * ATAK Group * <__group role='Team Member' name='Cyan'/> */ message Group { /* * Role of the group member */ MemberRole role = 1; /* * Team (color) * Default Cyan */ Team team = 2; } enum Team { /* * Unspecifed */ Unspecifed_Color = 0; /* * White */ White = 1; /* * Yellow */ Yellow = 2; /* * Orange */ Orange = 3; /* * Magenta */ Magenta = 4; /* * Red */ Red = 5; /* * Maroon */ Maroon = 6; /* * Purple */ Purple = 7; /* * Dark Blue */ Dark_Blue = 8; /* * Blue */ Blue = 9; /* * Cyan */ Cyan = 10; /* * Teal */ Teal = 11; /* * Green */ Green = 12; /* * Dark Green */ Dark_Green = 13; /* * Brown */ Brown = 14; } /* * Role of the group member */ enum MemberRole { /* * Unspecifed */ Unspecifed = 0; /* * Team Member */ TeamMember = 1; /* * Team Lead */ TeamLead = 2; /* * Headquarters */ HQ = 3; /* * Airsoft enthusiast */ Sniper = 4; /* * Medic */ Medic = 5; /* * ForwardObserver */ ForwardObserver = 6; /* * Radio Telephone Operator */ RTO = 7; /* * Doggo */ K9 = 8; } /* * ATAK EUD Status * */ message Status { /* * Battery level */ uint32 battery = 1; } /* * ATAK Contact * */ message Contact { /* * Callsign */ string callsign = 1; /* * Device callsign */ string device_callsign = 2; /* * IP address of endpoint in integer form (0.0.0.0 default) */ // fixed32 enpoint_address = 3; /* * Port of endpoint (4242 default) */ // uint32 endpoint_port = 4; /* * Phone represented as integer * Terrible practice, but we really need the wire savings */ // uint32 phone = 4; } /* * Position Location Information from ATAK */ message PLI { /* * The new preferred location encoding, multiply by 1e-7 to get degrees * in floating point */ sfixed32 latitude_i = 1; /* * The new preferred location encoding, multiply by 1e-7 to get degrees * in floating point */ sfixed32 longitude_i = 2; /* * Altitude (ATAK prefers HAE) */ int32 altitude = 3; /* * Speed */ uint32 speed = 4; /* * Course in degrees */ uint32 course = 5; }