Skip to content

Commit 44d13df

Browse files
Updated the Times to parse ISO 8601 and convert to Unix for CoT Protobuf message
1 parent ccc7875 commit 44d13df

3 files changed

Lines changed: 38 additions & 18 deletions

File tree

TAK Server Plugin/Plugin/src/takserver-sender-plugin-mcs/src/main/java/tak/server/plugins/dto/EventDto.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ public class EventDto {
1010
private String _type = "";
1111

1212
@SerializedName("time")
13-
private Long _time = -1L;
13+
private String _time = "";
1414

1515
@SerializedName("start")
16-
private Long _start = -1L;
16+
private String _start = "";
1717

1818
@SerializedName("stale")
19-
private Long _stale = -1L;
19+
private String _stale = "";
2020

2121
@SerializedName("how")
2222
private String _how = "";
@@ -42,27 +42,27 @@ public void setType(String type) {
4242
_type = type;
4343
}
4444

45-
public Long getTime() {
45+
public String getTime() {
4646
return _time;
4747
}
4848

49-
public void setTime(Long time) {
49+
public void setTime(String time) {
5050
_time = time;
5151
}
5252

53-
public Long getStart() {
53+
public String getStart() {
5454
return _start;
5555
}
5656

57-
public void setStart(Long start) {
57+
public void setStart(String start) {
5858
_start = start;
5959
}
6060

61-
public Long getStale() {
61+
public String getStale() {
6262
return _stale;
6363
}
6464

65-
public void setStale(Long stale) {
65+
public void setStale(String stale) {
6666
_stale = stale;
6767
}
6868

TAK Server Plugin/Plugin/src/takserver-sender-plugin-mcs/src/main/java/tak/server/plugins/utilities/McsCoTConverter.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package tak.server.plugins.utilities;
22

33
import java.util.List;
4+
import java.time.Instant;
45

56
import com.google.gson.Gson;
67
import com.google.gson.JsonElement;
@@ -17,15 +18,19 @@
1718

1819
import org.json.JSONObject;
1920
import org.json.XML;
21+
import org.slf4j.Logger;
22+
import org.slf4j.LoggerFactory;
2023

2124
public class McsCoTConverter {
2225

26+
private static final Logger _logger = LoggerFactory.getLogger(McsCoTConverter.class);
27+
2328
public static Message convertToMessage(EventDto event, PluginConfiguration configuration) {
2429
Message.Builder messageBuilder = MessageOuterClass.Message.newBuilder();
2530
TakMessage.Builder payloadBuilder = messageBuilder.getPayloadBuilder();
2631
CotEvent.Builder cotEventBuilder = payloadBuilder.getCotEventBuilder();
2732
DetailOuterClass.Detail.Builder detailBuilder = cotEventBuilder.getDetailBuilder();
28-
33+
2934
@SuppressWarnings("unchecked")
3035
List<String> callsigns = (List<String>) configuration.getProperty("callsigns");
3136

@@ -35,9 +40,10 @@ public static Message convertToMessage(EventDto event, PluginConfiguration confi
3540
cotEventBuilder.setUid(event.getUid());
3641
cotEventBuilder.setType(event.getType());
3742
cotEventBuilder.setHow(event.getHow());
38-
cotEventBuilder.setSendTime(event.getTime());
39-
cotEventBuilder.setStartTime(event.getStart());
40-
cotEventBuilder.setStaleTime(event.getStale());
43+
44+
cotEventBuilder.setSendTime(convertTime(event.getTime()));
45+
cotEventBuilder.setStartTime(convertTime(event.getStart()));
46+
cotEventBuilder.setStaleTime(convertTime(event.getStale()));
4147
cotEventBuilder.setLat(event.getPoint().getLat());
4248
cotEventBuilder.setLon(event.getPoint().getLon());
4349
cotEventBuilder.setHae(event.getPoint().getHae());
@@ -77,4 +83,18 @@ public static EventDto convertToEvent(String json, PluginConfiguration configura
7783

7884
return event;
7985
}
86+
87+
private static Long convertTime(String time) {
88+
// CoT Protobuf uses "timeMs" units, which is number of milliseconds since
89+
// 1970-01-01 00:00:00 UTC
90+
Long timeMs = 0L;
91+
try {
92+
Instant instant = Instant.parse( time );
93+
timeMs = instant.toEpochMilli() ;
94+
} catch (Exception e) {
95+
_logger.error("Error parsing time", e);
96+
}
97+
98+
return timeMs;
99+
}
80100
}

TAK Server Plugin/RabbitMQ Client/Program.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,11 @@ private static string MassageMessage(string message)
8181
jObject["point"]["lat"] = newLat;
8282
jObject["point"]["lon"] = newLon;
8383

84-
var currentUnixTimeMs = DateTimeOffset.Now.ToUnixTimeMilliseconds();
85-
var staleUnixTimeMs = DateTimeOffset.Now.AddMinutes(10).ToUnixTimeMilliseconds();
86-
jObject["time"] = currentUnixTimeMs;
87-
jObject["start"] = currentUnixTimeMs;
88-
jObject["stale"] = staleUnixTimeMs;
84+
var currentIsoTime = DateTime.UtcNow.ToString("o");
85+
var staleIsoTime = DateTimeOffset.UtcNow.AddMinutes(10).ToString("o");
86+
jObject["time"] = currentIsoTime;
87+
jObject["start"] = currentIsoTime;
88+
jObject["stale"] = staleIsoTime;
8989

9090
return jObject.ToString(Formatting.None);
9191
}

0 commit comments

Comments
 (0)