Elk Cursor on Target (CoT)-bericht is één XML-document waarvan het hoofdelement, <event>, een typecode, een unieke id, drie UTC-tijdstempels en een <point>-positie draagt; al het andere reist in de open <detail>-container. Eén en dezelfde vorm verplaatst posities, markeringen, chat, routes, tekeningen, alarmen en medische verzoeken tussen ATAK, WinTAK, iTAK en TAK Server. Deze pagina is de kopieerplak-bibliotheek: geannoteerde, syntactisch geldige CoT XML voor de berichten die tactische systemen daadwerkelijk uitwisselen, elk met een notitie over wat de ontvangende TAK-client ermee doet.

Voor de geschiedenis en het ontwerp van het formaat lees je ons overzicht van het Cursor on Target-formaat; voor een veld-voor-veldanalyse de diepe duik in het CoT-schema; dit artikel blijft bewust op het niveau van „laat me de XML zien”. Element- en attribuutnamen hieronder zijn geverifieerd tegen MITRE’s publieke documentatie van het CoT-basisgebeurtenisschema en de CoT-typedefinities die met de TAK-clients zijn gepubliceerd. Roepnamen, UID’s en coördinaten zijn fictief; tijdstempels zijn illustratieve ISO-8601-UTC-waarden.

De anatomie van een CoT-bericht

Een minimaal, geldig CoT-event heeft zeven <event>-attributen nodig, exact één <point> en optioneel een <detail>:

<event version="2.0" uid="ANDROID-9c2f71a4" type="a-f-G-U-C" how="m-g"
       time="2026-10-07T06:12:44.000Z" start="2026-10-07T06:12:44.000Z"
       stale="2026-10-07T06:13:14.000Z">
  <point lat="50.450112" lon="30.523398" hae="152.4" ce="4.5" le="9.0"/>
  <detail>
    <contact callsign="GRIF-2" endpoint="*:-1:stcp"/>
    <__group name="Cyan" role="Team Member"/>
    <status battery="78"/>
    <takv platform="ATAK-CIV" version="5.2.0" device="Samsung SM-G975F" os="34"/>
    <track speed="1.4" course="270.0"/>
    <precisionlocation geopointsrc="GPS" altsrc="GPS"/>
  </detail>
</event>

Wat elk onderdeel stuurt in de ontvangende client:

Anatomie van een Cursor on Target-bericht: links het XML-skelet van een CoT-gebeurtenis met event-attributen (uid, type, how, time, start, stale), het point-element (lat, lon, hae, ce, le) en detail-children (contact, __group, status, takv, track, precisionlocation, remarks, link, usericon, __chat); pijlen rechts verbinden elk onderdeel met wat het aanstuurt in ATAK en TAK Server: het kaartpictogram en de gezindtekleur, afhandeling van verlopen items, positie en nauwkeurigheid, roepnaam, teamkleur en rol, batterij en clientversie, snelheids- en koersvector, en GeoChat-routering.
Elk element van een CoT-gebeurtenis stuurt concreet gedrag aan in ATAK, WinTAK en TAK Server — van het 2525-symbool dat de typecode kiest tot het grijs worden dat de stale-tijdstempel uitlokt.
OnderdeelBetekenisWat ATAK / TAK Server ermee doet
uidIdentiteit van het ding, niet van het berichtDezelfde uid verplaatst de bestaande markering; een nieuwe uid maakt er een aan. Verwijderingen en alarmannuleringen richten zich erop.
typePunt-streep-taxonomie van wat het isKiest het MIL-STD-2525-symbool en de gezindtekleur; stuurt filteren aan de serverkant en federatieregels.
howHoe de positie is verkregenWeegt het rapport in fusie (GPS versus geschat versus doorgestuurd); ATAK toont het in de markeringdetails.
time / start / staleAanmaaktijd en geldigheidsvensterNadat stale verstrijkt, maken clients de markering grijs en verwijderen hem daarna; niemand stuurt een expliciete vervaldatum.
pointlat/lon (decimale graden WGS-84), hae (meter boven de ellipsoïde), ce/le (foutstralen)Plaatst de markering; ce kan een nauwkeurigheidsring tekenen. Onbekende waarden gebruiken de sentinel 9999999.
detailOpen extensiecontainerBekende children (hieronder) stellen roepnaam, teamkleur, batterij en snelheidsvector in; onbekende children worden genegeerd, niet afgewezen.

Drie eigenschappen van <point> laten integratoren voortdurend struikelen. hae is de hoogte boven de WGS-84-ellipsoïde, niet boven gemiddeld zeeniveau. ce en le zijn 1-sigma horizontale en verticale foutgrenzen in meters, verplicht volgens het schema ook wanneer onbekend — de waarde 9999999.0 is de afgesproken sentinel voor „onbekend” en beter dan een zelfverzekerde 0.0. En lat/lon zijn decimale graden met teken, waarbij zes decimalen ongeveer 0,1 m resolutie geven; een MGRS- of UTM-optie bestaat niet in CoT.

CoT-typecodes en how-waarden: een spiekbrief

Het attribuut type is een met streepjes gescheiden pad door een taxonomie waarvan het eerste token zegt wat voor soort gebeurtenis dit is:

Eerste tokenFamilieTypische toepassingen
a-Atomen — echte dingenEenheden, voertuigen, vliegtuigen, gewonden, incidenten
b-Bits — informatieobjectenChat, routes, tekeningen, markeringen, video-aliassen, alarmen
t-Taakstelling / besturingKeepalive-pings, verwijdertaken, data-opvraging
y-AntwoordenBevestigingen, taakstatus

Voor atomen is het tweede token de gezindte en het derde de gevechtsdimensie; de rest daalt af door de functieboom van MIL-STD-2525 in hoofdletters, met kleine letters gereserveerd voor CoT-extensies:

TokenGezindteTokenGevechtsdimensie
pIn behandelingPRuimte
uOnbekendALucht
aVermoedelijk bevriendGLand
fBevriendSZeeoppervlak
nNeutraalUOnder water
sVerdachtXOverig
hVijandelijkdaarna volgen 2525-functie-id’s in hoofdletters (bijv. -U-C gevecht, -E-V-A-T tank)

Omdat de taxonomie prefix-decodeerbaar is, tekent een client die alleen a-h-G begrijpt voor a-h-G-E-V-A-T toch een generiek vijandig landsymbool. Veelvoorkomende strings in echt verkeer: a-f-G-U-C (bevriend land gevecht — het standaardapparaattype van ATAK), a-f-A-M-F-Q / a-f-A-M-H-Q (bevriende drone met vaste vleugel / rotor), a-u-G (onbekend land), b-m-p-s-m (spot map-markering), b-t-f (GeoChat), b-m-r (route), b-r-f-h-c (medisch 9-line-verzoek). Hoe de pictogrammen op symbolen worden afgebeeld staat in symbologie-rendering in TAK en de standaardvergelijking in APP-6 versus MIL-STD-2525.

Het attribuut how legt de herkomst vast, en fusiesystemen wegen er rapporten mee:

howBetekenis
h-eDoor een mens ingevoerde schatting
h-c / h-t / h-pDoor een mens berekend / overgenomen (spraak, papier) / geplakt uit een ander venster
h-g-i-g-oOfficieel „een hoogst twijfelachtige track” — in de praktijk stempelt ATAK de meeste handmatig geplaatste markeringen en GeoChat ermee
m-gMachinegegenereerd uit GPS (verfijningen m-g-d DGPS, m-g-n INS+GPS)
m-i / m-f / m-rGemeten uit beeldmateriaal / gefuseerd uit meerdere bronnen / doorgestuurd via een gateway
m-n / m-s / m-cTraagheidsnavigatie / simulatie / configuratiebestand

Tijdsregels: time, start en stale zijn ISO 8601 UTC en eindigen op Z (fracties van seconden zijn optioneel). time is wanneer de gebeurtenis is geproduceerd; start–stale is het geldigheidsvenster. stale vroeger dan start zetten is MITRE’s oorspronkelijke „track laten vallen”-conventie — al is in TAK-netwerken een expliciete verwijdertaak (hieronder) betrouwbaarder.

Positiemeldingen: bevriende PLI en vijandige/neutrale markeringen

Het voorbeeld bovenaan deze pagina is een eigen positiemelding (PLI): ATAK herhaalt deze elke paar seconden met dezelfde uid, zet stale op ongeveer twee tot vier meldintervallen plus marge, en laat elke andere client de markering opruimen wanneer updates uitblijven. Door sensoren gevoede of door een operator geplaatste markeringen gebruiken dezelfde gebeurtenisvorm met een andere type en een langere stale:

<event version="2.0" uid="E-20261007-0413" type="a-h-G-E-V-A-T" how="h-g-i-g-o"
       time="2026-10-07T06:41:02.000Z" start="2026-10-07T06:41:02.000Z"
       stale="2026-10-07T18:41:02.000Z">
  <point lat="50.412220" lon="30.591054" hae="9999999.0" ce="25.0" le="9999999.0"/>
  <detail>
    <contact callsign="K-41"/>
    <remarks source="BAO.F.ATAK.ANDROID-9c2f71a4">Hull-down at treeline, 2 vehicles</remarks>
    <usericon iconsetpath="COT_MAPPING_2525C/a-h/a-h-G-E-V-A-T"/>
    <link uid="ANDROID-9c2f71a4" type="a-f-G-U-C" relation="p-p"/>
    <archive/>
  </detail>
</event>

Wat de ontvangers doen: de type schildert de rode ruit van de tank; contact/callsign wordt het label; usericon pinnt de exacte pictogramset-invoer (de vorm COT_MAPPING_2525C/<affiliation>/<type> is wat ATAK’s 2525-palet produceert); link relation="p-p" crediteert de producent; <archive/> zegt clients de markering te bewaren in plaats van te laten verlopen met stale. Onbekende contacten gebruiken gewoon a-u-G; het gele vraagteken-pictogram verschijnt zonder verdere wijziging. Voor een gewone gekleurde pin zonder 2525-codering gebruikt ATAK een spot map-markering:

<event version="2.0" uid="9405e320-9356-41c4-8449-f46990aa17f8"
       type="b-m-p-s-m" how="h-g-i-g-o"
       time="2026-10-07T06:55:10.000Z" start="2026-10-07T06:55:10.000Z"
       stale="2026-10-08T06:55:10.000Z">
  <point lat="50.456090" lon="30.563750" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <contact callsign="R 1"/>
    <color argb="-65536"/>
    <usericon iconsetpath="COT_MAPPING_SPOTMAP/b-m-p-s-m/-65536"/>
  </detail>
</event>

Hier wordt het pictogram gekozen door usericon uit het spot map-palet en de ARGB-kleurwaarde (een 32-bits geheel getal met teken, -65536 is dekkend rood) in plaats van door een symbologiecode — handig voor bevriende annotaties die geen 2525-identiteit mogen impliceren.

GeoChat-berichten (b-t-f)

Chat in de TAK-wereld is geen apart protocol: een GeoChat-regel is een CoT-gebeurtenis van type b-t-f waarvan de tekst in <remarks> reist en de adressering in <__chat>/<chatgrp>:

<event version="2.0"
       uid="GeoChat.ANDROID-9c2f71a4.All Chat Rooms.3f8c2b1e-77d3-4c9a-9e21-5b0f6a2d4e88"
       type="b-t-f" how="h-g-i-g-o"
       time="2026-10-07T07:02:31.000Z" start="2026-10-07T07:02:31.000Z"
       stale="2026-10-08T07:02:31.000Z">
  <point lat="0.0" lon="0.0" hae="0.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <__chat id="All Chat Rooms" chatroom="All Chat Rooms" groupOwner="false"
            senderCallsign="GRIF-2"
            messageId="3f8c2b1e-77d3-4c9a-9e21-5b0f6a2d4e88">
      <chatgrp uid0="ANDROID-9c2f71a4" uid1="All Chat Rooms" id="All Chat Rooms"/>
    </__chat>
    <link uid="ANDROID-9c2f71a4" type="a-f-G-U-C" relation="p-p"/>
    <remarks source="BAO.F.ATAK.ANDROID-9c2f71a4"
             time="2026-10-07T07:02:31.000Z">Bearing 085, treeline, over.</remarks>
  </detail>
</event>

Zo lees je het: de uid van de gebeurtenis is conventioneel GeoChat.<sender>.<conversation>.<message-uuid>, wat deduplicatie bij herhaling triviaal maakt; chatgrp/uid0 is de afzender en uid1 de bestemming — de UID van één ontvanger voor een direct bericht, de kamernaam voor broadcast; remarks/@to draagt de ontvanger-UID in directe berichten; stale staat een dag vooruit omdat chat, in tegenstelling tot posities, store-and-forward moet overleven. Bezorg- en leesbevestigingen komen terug als types b-t-f-d en b-t-f-r. De point van de gebeurtenis kan het bericht aan een kaartlocatie verankeren; ATAK stuurt ook de live positie van de afzender door, tenzij de operator die uitschakelt. Het volledige store-and-forward- en bandbreedteplaatje staat in tactische chat en datastrategie in TAK.

Routes, tekeningen en afstands- en peilingslijnen

Een route is één b-m-r-gebeurtenis waarvan de routepunten <link>-children zijn — b-m-p-w voor benoemde routepunten, b-m-p-c voor besturingspunten van vormen — gevolgd door een <link_attr>-stijlblok:

<event version="2.0" uid="9017073e-5658-42e7-baa8-b98f3c9c1622" type="b-m-r" how="h-e"
       time="2026-10-07T07:20:00.000Z" start="2026-10-07T07:20:00.000Z"
       stale="2026-10-08T07:20:00.000Z">
  <point lat="0.0" lon="0.0" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <link uid="f3acf150-d75c-407d-be43-e401ab40fe74" callsign="SP"
          type="b-m-p-w" point="50.443353,-77.054400" remarks="" relation="c"/>
    <link uid="820ebf04-1300-4c3a-a368-d6f1e21a5ddb" callsign=""
          type="b-m-p-c" point="50.436413,-77.045642" remarks="" relation="c"/>
    <link uid="f6926af1-deec-44f4-ae06-46065c829887" callsign="CP1"
          type="b-m-p-w" point="50.446574,-77.040572" remarks="" relation="c"/>
    <link_attr planningmethod="Infil" color="-1" method="Driving" prefix="CP"
               type="Vehicle" stroke="3" direction="Infil" routetype="Primary"
               order="Ascending Check Points"/>
    <strokeColor value="-1"/>
    <strokeWeight value="3.0"/>
    <contact callsign="ROUTE ALFA"/>
    <remarks></remarks>
    <archive/>
    <labels_on value="true"/>
  </detail>
</event>

ATAK rendert de link point-lijst als routegeometrie, promoveert b-m-p-w-items tot routepuntmarkeringen met eigen roepnamen en leest link_attr voor de voortbewegingsmodus (Driving|Walking|Flying|Swimming|Watercraft), richting (Infil|Exfil) en routetype (Primary|Secondary). De eigen point van de gebeurtenis is de 0/0-sentinel — de geometrie leeft volledig in de detail.

Tekeningen volgen hetzelfde „geometrie in de detail”-patroon. Een cirkel is een ellips met gelijke assen binnen een <shape>:

<event version="2.0" uid="6d09b6f6-720a-4eef-a197-183012512316"
       type="u-d-c-c" how="h-e"
       time="2026-10-07T07:35:12.000Z" start="2026-10-07T07:35:12.000Z"
       stale="2026-10-08T07:35:12.000Z">
  <point lat="50.437376" lon="30.572999" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <shape>
      <ellipse major="300.0" minor="300.0" angle="360"/>
      <link uid="6d09b6f6-720a-4eef-a197-183012512316.Style"
            type="b-x-KmlStyle" relation="p-c">
        <Style>
          <LineStyle><color>ffffffff</color><width>4.0</width></LineStyle>
          <PolyStyle><color>96ffffff</color></PolyStyle>
        </Style>
      </link>
    </shape>
    <strokeColor value="-1"/>
    <strokeWeight value="4.0"/>
    <fillColor value="-1761607681"/>
    <contact callsign="PATROL AREA"/>
    <labels_on value="true"/>
  </detail>
</event>

De point is het middelpunt, major/minor zijn meters, en het KML-achtige blok genest onder een link van type b-x-KmlStyle draagt streek en vulling. Een rechthoek laat het shape-element vallen en somt zijn hoeken op als <link point="lat,lon"/>-children van type u-d-r; een vrije handlijn doet hetzelfde met type u-d-f en sluit de polygoon door het eerste punt als laatste te herhalen. Een afstands- en peilingslijn is weer anders: type u-rb-a, de point is het anker en de vector is numeriek:

<event version="2.0" uid="58df2fcd-e33e-414f-a718-b18b50cd3137"
       type="u-rb-a" how="h-e"
       time="2026-10-07T07:44:03.000Z" start="2026-10-07T07:44:03.000Z"
       stale="2026-10-08T07:44:03.000Z">
  <point lat="50.420806" lon="30.554945" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <range value="886.14"/>
    <bearing value="45.6"/>
    <inclination value="0.0"/>
    <rangeUnits value="1"/>
    <bearingUnits value="0"/>
    <northRef value="0"/>
    <strokeColor value="-65536"/>
    <strokeWeight value="3.0"/>
    <contact callsign="R&amp;B 1"/>
  </detail>
</event>

Eenheden worden als kleine gehele getallen gecodeerd: rangeUnits 0=km, 1=meter, 2=mijl, 3=yards, 4=voet, 5=zeemijl; bearingUnits 0=graden, 1=mils, 2=radianen; northRef 0=echt noorden, 1=magnetisch, 2=raster. ATAK herberekent bij import de positie van de pijlpunt uit anker en vector.

Noodalarms en CASEVAC/MEDEVAC-verzoeken

Noodbakens zijn kleine, dringende gebeurtenissen: type b-a-o-tbl voor een algemeen 911-alarm, stale slechts tien seconden vooruit (het baken wordt opnieuw uitgezonden in plaats van te blijven hangen) en een UID-conventie <device-uid>-9-1-1:

<event version="2.0" uid="ANDROID-9c2f71a4-9-1-1" type="b-a-o-tbl" how="h-g-i-g-o"
       time="2026-10-07T08:01:57.000Z" start="2026-10-07T08:01:57.000Z"
       stale="2026-10-07T08:02:07.000Z">
  <point lat="50.448620" lon="30.531104" hae="160.0" ce="8.0" le="12.0"/>
  <detail>
    <link uid="ANDROID-9c2f71a4" type="a-f-G-U-C" relation="p-p"/>
    <contact callsign="GRIF-2-Alert"/>
    <emergency type="911 Alert">GRIF-2</emergency>
  </detail>
</event>

De emergency/@type-strings en hun CoT-types, zoals ATAK ze definieert:

AlarmCoT-typeTrigger in ATAK
911 Alertb-a-o-tblNoodknop, algemeen
Ring The Bellb-a-o-panBewust verzoek om dringende aandacht
In Contactb-a-o-opnTroepen in contact
Geo-fence Breachedb-a-gTrack betreedt of verlaat een bewaakte geofence
Customb-a-o-cDoor plugin gedefinieerd
Cancel Alertb-a-o-canOperator annuleert een actief baken

Bij ontvangst zoeken clients de markering via link/@uid, hijsen ze het alarm met afstand en peiling naar de positie van het slachtoffer en houden ze het baken in leven; TAK Server zendt het periodiek opnieuw uit. Een annulering hergebruikt dezelfde gebeurtenis-uid en klapt de detail om:

<event version="2.0" uid="ANDROID-9c2f71a4-9-1-1" type="b-a-o-can" how="h-g-i-g-o"
       time="2026-10-07T08:07:22.000Z" start="2026-10-07T08:07:22.000Z"
       stale="2026-10-07T08:07:32.000Z">
  <point lat="50.448620" lon="30.531104" hae="160.0" ce="8.0" le="12.0"/>
  <detail>
    <emergency cancel="true">GRIF-2</emergency>
  </detail>
</event>

Het 9-line MEDEVAC/CASEVAC-verzoek is een markering van type b-r-f-h-c waarvan de detail een <_medevac_>-element draagt (let op de underscores) met de negen regels als attributen. Een veilige, breed begrepen deelverzameling:

<event version="2.0" uid="7b1e0c52-2f4d-4f18-9c6e-0d4a2b9f5c31"
       type="b-r-f-h-c" how="h-g-i-g-o"
       time="2026-10-07T08:10:40.000Z" start="2026-10-07T08:10:40.000Z"
       stale="2026-10-07T09:10:40.000Z">
  <point lat="50.448620" lon="30.531104" hae="160.0" ce="8.0" le="12.0"/>
  <detail>
    <contact callsign="GRIF-2"/>
    <_medevac_ casevac="false" title="GRIF-2 9LINE" freq="41.50"
              urgent="1" priority="0" routine="0"
              litter="1" ambulatory="0"
              security="2" hlz_marking="2"
              equipment_none="true">
      <zMistsMap>
        <zMist title="MIST 1" z="Z1" m="GSW"
               i="left thigh" s="HR 110, BP 100/60" t="tourniquet, TXA"/>
      </zMistsMap>
    </_medevac_>
    <remarks>Pickup at gravel yard, wind 310/8</remarks>
  </detail>
</event>

Decodering: patiëntaantallen per prioriteit zitten in urgent/priority/routine; regel 5 in litter/ambulatory; security is een index 0–3 (N geen vijand, P mogelijk, E vijand in het gebied, X escort nodig); hlz_marking indexeert A panelen, B pyro, C rook, D geen, E anders; speciale uitrusting verschijnt als booleaanse vlaggen (hoist, extraction_equipment, ventilator); het klinische MIST-rapport zit genest onder zMistsMap. ATAK rendert uit dit element de volledige 9-line-kaart en de landingszone-tools. De operationele workflow eromheen staat in CASEVAC-coördinatiesoftware.

Sensorgezichtsveld en videolinks

MITRE’s sensorsubschema koppelt een stuurbaar gezichtsveld aan elke markering. Voeg binnen de positiegebeurtenis van het platform zelf — hier een bevriende rotordrone, type a-f-A-M-H-Q — toe:

<event version="2.0" uid="UAV-ZP-07" type="a-f-A-M-H-Q" how="m-g"
       time="2026-10-07T08:22:05.000Z" start="2026-10-07T08:22:05.000Z"
       stale="2026-10-07T08:22:15.000Z">
  <point lat="50.437120" lon="30.552870" hae="820.0" ce="12.0" le="15.0"/>
  <detail>
    <contact callsign="ZP-07" endpoint="*:-1:stcp"/>
    <sensor azimuth="127.0" fov="30.0" vfov="22.0" range="2200.0"
           elevation="-18.0" model="EO/IR turret"/>
    <__video url="rtsp://192.168.4.60:8554/live.sdp"/>
  </detail>
</event>

azimuth is graden vanaf echt noorden, elevation de kanteling (negatief is omlaag), fov/vfov het horizontale en verticale veld in graden, range de schuine afstand in meters — samen laten ze ATAK de sensorkegel op de kaart tekenen. Het <__video>-child bindt de markering aan een stream-URL, zodat openen van de markering de feed opent. Zelfstandige cameraregistraties reizen als eigen gebeurtenissen van type b-i-v met een <ConnectionEntry> met address, port, protocol en verwante tuner-attributen, die de videobeheerder op elke client vullen. Voor de bredere pijplijn — telemetriefrequenties, KLV-metadata, aansturen — zie integratie van droontelemetrie met TAK.

Hier lopen de meeste integratieprogramma’s vast: de radar, de drone-autopilot, de akoestische sensor en de legacy C2-feed beschrijven de wereld elk anders, en elk moet worden vertaald naar geldige CoT — juiste types, eerlijke ce/le, stabiele UID’s, zinnige stale-tijden — anders vult het COP zich met spooktracks. Wij bouwen precies deze CoT-gateways en adapters, plus ATAK- en WinTAK-plugins die het resultaat tonen. Vertel welke feed je op het tactische beeld nodig hebt →

Markeringen verwijderen en keepalive ping/pong

CoT heeft geen ingebouwde verwijdering; TAK legt er een bovenop als een taakgebeurtenis van type t-x-d-d waarvan de <link> het slachtoffer benoemt:

<event version="2.0" uid="6650d1ee-4b17-4d02-8c95-13a1f2e9b0aa"
       type="t-x-d-d" how="h-g-i-g-o"
       time="2026-10-07T08:31:19.000Z" start="2026-10-07T08:31:19.000Z"
       stale="2026-10-07T08:31:29.000Z">
  <point lat="0.0" lon="0.0" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
  <detail>
    <link uid="E-20261007-0413" relation="p-p" type="a-h-G-E-V-A-T"/>
    <__forcedelete/>
  </detail>
</event>

Zonder <__forcedelete/> markeert ATAK het gerefereerde item alleen lokaal als verlopen en verwijdert het volgens de verlopen-iteminstellingen van de gebruiker; mét het element wordt het item direct verwijderd op elke client die de taak ontvangt. De importer vereist dat link/@uid, @relation en @type aanwezig en niet leeg zijn, dus houd alle drie aan. Keepalive is nog kleiner — TAK-clients pingen een server die zo’n 15 seconden stil is gebleven, herhaald elke paar seconden, en behandelen de pong van type t-x-c-t-r als een controlebericht dat nooit de kaart bereikt:

<event version="2.0" uid="ANDROID-9c2f71a4-ping" type="t-x-c-t" how="m-g"
       time="2026-10-07T08:33:50.000Z" start="2026-10-07T08:33:50.000Z"
       stale="2026-10-07T08:34:00.000Z">
  <point lat="0.0" lon="0.0" hae="0.0" ce="9999999.0" le="9999999.0"/>
</event>

Als je een gateway bouwt, spiegel dit gedrag: een <uid>-ping-gebeurtenis op elk interval waarop de verbinding gecontroleerd moet worden, en pongs geruisloos verwerpen.

Geldige CoT genereren: tijdstempels, stale, UID’s, escapen

De terugkerende bugs in CoT-emitters zijn voorspelbaar, en ze zijn allemaal goedkoop te voorkomen:

  • UTC, altijd. Elke tijdstempel eindigt op Z; lokale offsets of een ontbrekende Z verschuiven markeringen uren naar het verleden of de toekomst. Fracties van seconden zijn optioneel en elke precisie is toegestaan.
  • Stale-discipline. Bewegende tracks: twee tot vier meldintervallen plus marge. Statische markeringen: uren tot dagen, met <archive/> als ze moeten blijven. Laat stale nooit op de standaard ver-vooruit in de toekomst staan voor een live track — spookmarkeringen zijn klacht nummer één uit het veld.
  • Stabiele UID’s. Leid de uid af van de entiteit (serienummer, tracknummer, inhoudshash), niet van het bericht. Twee echte tracks die een uid delen klappen samen tot één flikkerende markering.
  • Eerlijke fouten. Als je de hoogte of nauwkeurigheid niet kent, emit 9999999.0, niet 0. Fusie-engines lezen 0 als een claim.
  • Coördinaten. Decimale graden met teken, WGS-84; zes decimalen is ruim voldoende. Afkappen tot vier decimalen (ongeveer 10 m) is een legitieme bandbreedtekeuze die sommige bibliotheken maken — maar doe het consequent.
  • XML-escapen. Escape &, <, > in attribuutwaarden en tekst — roepnamen en opmerkingen bevatten ooit een ampersand. Eén verdwaalde < in een opmerkingenveld vermoordt het hele document in de parser.
  • Valideer eens, vertrouw daarna. Lint de output van je emitter tijdens de ontwikkeling tegen het gepubliceerde CoT-gebeurtenis-XSD. Het XSD vangt geen semantische fouten (stale vóór start, betekenisloze type-staarten), dus voeg die controles toe als assertions in de encoder.

CoT verzenden: mesh-multicast versus TAK Server

Twee transporten dekken vrijwel elke inzet. De serverloze mesh SA multicast elk XML-document als één UDP-datagram naar het standaard TAK-adres 239.2.3.1:6969 (GeoChat gebruikte historisch ook 224.10.10.1:17012); elke client in het segment hoort alles, en er is geen store-and-forward. In het servermodel verbinden clients via TCP met TAK Server — poort 8087 ongecodeerd, 8089 TLS met clientcertificaten — die XML in beide richtingen streamt, gebeurtenissen met groeps- en missiefilters uitvent en de stream per verbinding kan hercoderen naar het compacte TAK-protobuf-formaat. Details van codering en onderhandeling, inclusief wanneer protobuf tooling breekt, staan in TAK-protocol: CoT XML versus protobuf; routering over servergrenzen in TAK Federation Hub-architectuur, en het coalitieplaatje in CoT en NATO-standaarden verbinden.

Een vuistregel beslist tussen beide: zitten de ontvangers op hetzelfde RF-segment en is verlies acceptabel, dan is multicast gratis; zit iemand buiten het segment, in een ander netwerk of heeft hij replay nodig terwijl offline, dan heb je de server nodig — en alles wat een audittrail vereist ook.

Maak van uw sensor- of C2-feed geldige CoT

Wij bouwen CoT-gateways en adapters die radar-, drone-, akoestische en legacy C2-feeds omzetten in schone Cursor on Target-stromen, plus ATAK- en WinTAK-plugins die ze op het tactische beeld tonen.

Integreer uw systeem met TAK → TAKpilot voor CloudTAK →

Opgesteld door het engineeringteam van Corvus Intelligence, dat CoT-gateways, TAK Server-integraties en ATAK/WinTAK-plugins bouwt; elke elementnaam, typecode en gedrag hier is geverifieerd tegen MITRE’s publieke CoT-schema-documentatie en de CoT-definities die met de TAK-clients zijn gepubliceerd. Over Corvus Intelligence →