@rise-maritime/keelson-js 0.6.0-alpha.245.dev.1 → 0.6.0-alpha.275.dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +83 -0
- package/dist/index.js +23 -1
- package/dist/index.test.js +31 -0
- package/dist/interfaces/AlarmAck.d.ts +2 -2
- package/dist/interfaces/AlarmAck.js +2 -2
- package/dist/interfaces/ContainerControl.d.ts +239 -0
- package/dist/interfaces/ContainerControl.js +1053 -0
- package/dist/interfaces/ContainerHost.d.ts +403 -0
- package/dist/interfaces/ContainerHost.js +1230 -0
- package/dist/interfaces/ErrorResponse.d.ts +7 -2
- package/dist/interfaces/ErrorResponse.js +12 -2
- package/dist/interfaces/Route.d.ts +138 -6
- package/dist/interfaces/Route.js +306 -4
- package/dist/interfaces/RoutePlanner.d.ts +19 -1
- package/dist/interfaces/RoutePlanner.js +23 -1
- package/dist/interfaces/ScenarioControl.d.ts +132 -3
- package/dist/interfaces/ScenarioControl.js +439 -37
- package/dist/interfaces/VehicleNavigation.d.ts +55 -0
- package/dist/interfaces/VehicleNavigation.js +233 -1
- package/dist/interfaces/serviceRegistry.d.ts +84 -0
- package/dist/interfaces/serviceRegistry.js +4 -0
- package/dist/interfaces.json +2 -0
- package/dist/payloads/AdviceDisposition.d.ts +55 -0
- package/dist/payloads/AdviceDisposition.js +242 -0
- package/dist/payloads/ChecklistHandover.d.ts +522 -0
- package/dist/payloads/ChecklistHandover.js +1735 -0
- package/dist/payloads/ContainerHost.d.ts +407 -0
- package/dist/payloads/ContainerHost.js +1245 -0
- package/dist/payloads/Encounter.d.ts +104 -0
- package/dist/payloads/Encounter.js +573 -0
- package/dist/payloads/NavigationAdvice.d.ts +94 -0
- package/dist/payloads/NavigationAdvice.js +596 -0
- package/dist/payloads/NavigationState.d.ts +90 -0
- package/dist/payloads/NavigationState.js +377 -0
- package/dist/payloads/Route.d.ts +139 -6
- package/dist/payloads/Route.js +315 -4
- package/dist/payloads/RouteExecution.d.ts +7 -0
- package/dist/payloads/ScenarioEvent.d.ts +14 -0
- package/dist/payloads/ScenarioEvent.js +16 -0
- package/dist/payloads/index.d.ts +1 -1
- package/dist/payloads/index.js +2 -2
- package/dist/payloads/index.keelson.d.ts +10 -4
- package/dist/payloads/index.keelson.js +10 -4
- package/dist/qos.json +6 -0
- package/dist/subjects.json +20 -1
- package/package.json +1 -1
package/dist/payloads/Route.js
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
// protoc v6.30.2
|
|
6
6
|
// source: Route.proto
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.
|
|
9
|
-
exports.RouteStatusUpdate = exports.RouteSignature = exports.RouteSignatures = exports.RouteIssue = exports.RouteChallenge = void 0;
|
|
8
|
+
exports.Leg = exports.Waypoint = exports.DefaultWaypoint = exports.Waypoints = exports.RouteInfo = exports.Route = exports.Extensions_Entry_AttributesEntry = exports.Extensions_Entry = exports.Extensions = exports.CircleGeometry = exports.RouteRef = exports.schedule_OriginToJSON = exports.schedule_OriginFromJSON = exports.Schedule_Origin = exports.actionPointRequiredActionToJSON = exports.actionPointRequiredActionFromJSON = exports.ActionPointRequiredAction = exports.envelopeBoundToJSON = exports.envelopeBoundFromJSON = exports.EnvelopeBound = exports.routeStatusToJSON = exports.routeStatusFromJSON = exports.RouteStatus = exports.routeTopologyToJSON = exports.routeTopologyFromJSON = exports.RouteTopology = exports.xtdCorridorModeToJSON = exports.xtdCorridorModeFromJSON = exports.XtdCorridorMode = exports.geometryTypeToJSON = exports.geometryTypeFromJSON = exports.GeometryType = exports.colregTrafficIntensityToJSON = exports.colregTrafficIntensityFromJSON = exports.ColregTrafficIntensity = exports.colregSituationToJSON = exports.colregSituationFromJSON = exports.ColregSituation = exports.hazardZoneTypeToJSON = exports.hazardZoneTypeFromJSON = exports.HazardZoneType = exports.routeChallengeTypeToJSON = exports.routeChallengeTypeFromJSON = exports.RouteChallengeType = exports.operationalContextToJSON = exports.operationalContextFromJSON = exports.OperationalContext = exports.autonomyLevelToJSON = exports.autonomyLevelFromJSON = exports.AutonomyLevel = void 0;
|
|
9
|
+
exports.RouteStatusUpdate = exports.RouteSignature = exports.RouteSignatures = exports.RouteIssue = exports.RouteChallenge = exports.HazardZone = exports.ActionPoint = exports.ActionPoints = exports.ScheduleElement = exports.Schedule = exports.Schedules = exports.XtdBoundaryPoint = void 0;
|
|
10
10
|
/* eslint-disable */
|
|
11
11
|
const wire_1 = require("@bufbuild/protobuf/wire");
|
|
12
12
|
const Coordinate_1 = require("./Coordinate");
|
|
@@ -267,14 +267,25 @@ function hazardZoneTypeToJSON(object) {
|
|
|
267
267
|
}
|
|
268
268
|
}
|
|
269
269
|
exports.hazardZoneTypeToJSON = hazardZoneTypeToJSON;
|
|
270
|
-
/**
|
|
270
|
+
/**
|
|
271
|
+
* COLREG encounter situation, from own ship's side. One vocabulary for the plan and the live
|
|
272
|
+
* picture: a Route leg is annotated with 1-4 only; Encounter.situation may also carry 5-6, which
|
|
273
|
+
* describe a live target and never a planned leg.
|
|
274
|
+
*/
|
|
271
275
|
var ColregSituation;
|
|
272
276
|
(function (ColregSituation) {
|
|
273
277
|
ColregSituation[ColregSituation["COLREG_SITUATION_UNSPECIFIED"] = 0] = "COLREG_SITUATION_UNSPECIFIED";
|
|
278
|
+
/** COLREG_SITUATION_OVERTAKING - own ship is overtaking */
|
|
274
279
|
ColregSituation[ColregSituation["COLREG_SITUATION_OVERTAKING"] = 1] = "COLREG_SITUATION_OVERTAKING";
|
|
280
|
+
/** COLREG_SITUATION_CROSSING_STBD - target crossing from own starboard */
|
|
275
281
|
ColregSituation[ColregSituation["COLREG_SITUATION_CROSSING_STBD"] = 2] = "COLREG_SITUATION_CROSSING_STBD";
|
|
282
|
+
/** COLREG_SITUATION_CROSSING_PORT - target crossing from own port */
|
|
276
283
|
ColregSituation[ColregSituation["COLREG_SITUATION_CROSSING_PORT"] = 3] = "COLREG_SITUATION_CROSSING_PORT";
|
|
277
284
|
ColregSituation[ColregSituation["COLREG_SITUATION_HEAD_ON"] = 4] = "COLREG_SITUATION_HEAD_ON";
|
|
285
|
+
/** COLREG_SITUATION_OVERTAKEN - target is overtaking own ship (Encounter only) */
|
|
286
|
+
ColregSituation[ColregSituation["COLREG_SITUATION_OVERTAKEN"] = 5] = "COLREG_SITUATION_OVERTAKEN";
|
|
287
|
+
/** COLREG_SITUATION_NONE - target not under way, or restricted visibility (Encounter only) */
|
|
288
|
+
ColregSituation[ColregSituation["COLREG_SITUATION_NONE"] = 6] = "COLREG_SITUATION_NONE";
|
|
278
289
|
ColregSituation[ColregSituation["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
|
|
279
290
|
})(ColregSituation || (exports.ColregSituation = ColregSituation = {}));
|
|
280
291
|
function colregSituationFromJSON(object) {
|
|
@@ -294,6 +305,12 @@ function colregSituationFromJSON(object) {
|
|
|
294
305
|
case 4:
|
|
295
306
|
case "COLREG_SITUATION_HEAD_ON":
|
|
296
307
|
return ColregSituation.COLREG_SITUATION_HEAD_ON;
|
|
308
|
+
case 5:
|
|
309
|
+
case "COLREG_SITUATION_OVERTAKEN":
|
|
310
|
+
return ColregSituation.COLREG_SITUATION_OVERTAKEN;
|
|
311
|
+
case 6:
|
|
312
|
+
case "COLREG_SITUATION_NONE":
|
|
313
|
+
return ColregSituation.COLREG_SITUATION_NONE;
|
|
297
314
|
case -1:
|
|
298
315
|
case "UNRECOGNIZED":
|
|
299
316
|
default:
|
|
@@ -313,6 +330,10 @@ function colregSituationToJSON(object) {
|
|
|
313
330
|
return "COLREG_SITUATION_CROSSING_PORT";
|
|
314
331
|
case ColregSituation.COLREG_SITUATION_HEAD_ON:
|
|
315
332
|
return "COLREG_SITUATION_HEAD_ON";
|
|
333
|
+
case ColregSituation.COLREG_SITUATION_OVERTAKEN:
|
|
334
|
+
return "COLREG_SITUATION_OVERTAKEN";
|
|
335
|
+
case ColregSituation.COLREG_SITUATION_NONE:
|
|
336
|
+
return "COLREG_SITUATION_NONE";
|
|
316
337
|
case ColregSituation.UNRECOGNIZED:
|
|
317
338
|
default:
|
|
318
339
|
return "UNRECOGNIZED";
|
|
@@ -411,6 +432,120 @@ function geometryTypeToJSON(object) {
|
|
|
411
432
|
}
|
|
412
433
|
}
|
|
413
434
|
exports.geometryTypeToJSON = geometryTypeToJSON;
|
|
435
|
+
/**
|
|
436
|
+
* How a leg's XTD corridor boundary is defined. UNSPECIFIED MUST be read as
|
|
437
|
+
* OFFSET: every leg published before this field existed is a constant-offset
|
|
438
|
+
* corridor, and reading it any other way would change routes nobody edited.
|
|
439
|
+
*/
|
|
440
|
+
var XtdCorridorMode;
|
|
441
|
+
(function (XtdCorridorMode) {
|
|
442
|
+
XtdCorridorMode[XtdCorridorMode["XTD_CORRIDOR_MODE_UNSPECIFIED"] = 0] = "XTD_CORRIDOR_MODE_UNSPECIFIED";
|
|
443
|
+
/** XTD_CORRIDOR_MODE_OFFSET - Parallel lines at xtd_port_m / xtd_starboard_m either side of track. */
|
|
444
|
+
XtdCorridorMode[XtdCorridorMode["XTD_CORRIDOR_MODE_OFFSET"] = 1] = "XTD_CORRIDOR_MODE_OFFSET";
|
|
445
|
+
/**
|
|
446
|
+
* XTD_CORRIDOR_MODE_POLYLINE - A boundary drawn by the planner (Leg.xtd_port_boundary /
|
|
447
|
+
* xtd_starboard_boundary), e.g. a corridor that narrows past a shoal.
|
|
448
|
+
* xtd_port_m / xtd_starboard_m still carry a nominal limit for a monitor
|
|
449
|
+
* that does not evaluate polylines. That fallback is NOT conservative when
|
|
450
|
+
* the drawn corridor is narrower than the nominal one, which is why such a
|
|
451
|
+
* monitor SHOULD report the leg as monitored at reduced fidelity.
|
|
452
|
+
*/
|
|
453
|
+
XtdCorridorMode[XtdCorridorMode["XTD_CORRIDOR_MODE_POLYLINE"] = 2] = "XTD_CORRIDOR_MODE_POLYLINE";
|
|
454
|
+
XtdCorridorMode[XtdCorridorMode["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
|
|
455
|
+
})(XtdCorridorMode || (exports.XtdCorridorMode = XtdCorridorMode = {}));
|
|
456
|
+
function xtdCorridorModeFromJSON(object) {
|
|
457
|
+
switch (object) {
|
|
458
|
+
case 0:
|
|
459
|
+
case "XTD_CORRIDOR_MODE_UNSPECIFIED":
|
|
460
|
+
return XtdCorridorMode.XTD_CORRIDOR_MODE_UNSPECIFIED;
|
|
461
|
+
case 1:
|
|
462
|
+
case "XTD_CORRIDOR_MODE_OFFSET":
|
|
463
|
+
return XtdCorridorMode.XTD_CORRIDOR_MODE_OFFSET;
|
|
464
|
+
case 2:
|
|
465
|
+
case "XTD_CORRIDOR_MODE_POLYLINE":
|
|
466
|
+
return XtdCorridorMode.XTD_CORRIDOR_MODE_POLYLINE;
|
|
467
|
+
case -1:
|
|
468
|
+
case "UNRECOGNIZED":
|
|
469
|
+
default:
|
|
470
|
+
return XtdCorridorMode.UNRECOGNIZED;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
exports.xtdCorridorModeFromJSON = xtdCorridorModeFromJSON;
|
|
474
|
+
function xtdCorridorModeToJSON(object) {
|
|
475
|
+
switch (object) {
|
|
476
|
+
case XtdCorridorMode.XTD_CORRIDOR_MODE_UNSPECIFIED:
|
|
477
|
+
return "XTD_CORRIDOR_MODE_UNSPECIFIED";
|
|
478
|
+
case XtdCorridorMode.XTD_CORRIDOR_MODE_OFFSET:
|
|
479
|
+
return "XTD_CORRIDOR_MODE_OFFSET";
|
|
480
|
+
case XtdCorridorMode.XTD_CORRIDOR_MODE_POLYLINE:
|
|
481
|
+
return "XTD_CORRIDOR_MODE_POLYLINE";
|
|
482
|
+
case XtdCorridorMode.UNRECOGNIZED:
|
|
483
|
+
default:
|
|
484
|
+
return "UNRECOGNIZED";
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
exports.xtdCorridorModeToJSON = xtdCorridorModeToJSON;
|
|
488
|
+
/**
|
|
489
|
+
* Whether a route's waypoint list closes back on itself. RTZ 1.2 has no such
|
|
490
|
+
* concept, so producers either repeated the first waypoint (breaking id
|
|
491
|
+
* uniqueness) or left closing to consumer convention (silently wrong the first
|
|
492
|
+
* time a consumer chooses not to loop). This field makes the author say.
|
|
493
|
+
*
|
|
494
|
+
* An enum rather than a bool, like every other classification in this file:
|
|
495
|
+
* OPEN says closure was considered and declined, and there is room for a
|
|
496
|
+
* third topology (out-and-back). UNSPECIFIED MUST be read as OPEN; that is
|
|
497
|
+
* the fail-safe direction, since sailing a point-to-point route as a circuit
|
|
498
|
+
* takes the vessel over unplanned water. Terminal behaviour (stop, hold, go
|
|
499
|
+
* round again) is execution policy and belongs on keelson.Voyage, not here.
|
|
500
|
+
* See protocol-specification.md §6.2.1.
|
|
501
|
+
*/
|
|
502
|
+
var RouteTopology;
|
|
503
|
+
(function (RouteTopology) {
|
|
504
|
+
RouteTopology[RouteTopology["ROUTE_TOPOLOGY_UNSPECIFIED"] = 0] = "ROUTE_TOPOLOGY_UNSPECIFIED";
|
|
505
|
+
/**
|
|
506
|
+
* ROUTE_TOPOLOGY_OPEN - Runs from the first waypoint to the last and ends there. The last
|
|
507
|
+
* waypoint has no outgoing leg.
|
|
508
|
+
*/
|
|
509
|
+
RouteTopology[RouteTopology["ROUTE_TOPOLOGY_OPEN"] = 1] = "ROUTE_TOPOLOGY_OPEN";
|
|
510
|
+
/**
|
|
511
|
+
* ROUTE_TOPOLOGY_CLOSED - A circuit: the last waypoint's outgoing leg terminates at the first
|
|
512
|
+
* waypoint, which is NOT repeated at the end of the list.
|
|
513
|
+
*/
|
|
514
|
+
RouteTopology[RouteTopology["ROUTE_TOPOLOGY_CLOSED"] = 2] = "ROUTE_TOPOLOGY_CLOSED";
|
|
515
|
+
RouteTopology[RouteTopology["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
|
|
516
|
+
})(RouteTopology || (exports.RouteTopology = RouteTopology = {}));
|
|
517
|
+
function routeTopologyFromJSON(object) {
|
|
518
|
+
switch (object) {
|
|
519
|
+
case 0:
|
|
520
|
+
case "ROUTE_TOPOLOGY_UNSPECIFIED":
|
|
521
|
+
return RouteTopology.ROUTE_TOPOLOGY_UNSPECIFIED;
|
|
522
|
+
case 1:
|
|
523
|
+
case "ROUTE_TOPOLOGY_OPEN":
|
|
524
|
+
return RouteTopology.ROUTE_TOPOLOGY_OPEN;
|
|
525
|
+
case 2:
|
|
526
|
+
case "ROUTE_TOPOLOGY_CLOSED":
|
|
527
|
+
return RouteTopology.ROUTE_TOPOLOGY_CLOSED;
|
|
528
|
+
case -1:
|
|
529
|
+
case "UNRECOGNIZED":
|
|
530
|
+
default:
|
|
531
|
+
return RouteTopology.UNRECOGNIZED;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
exports.routeTopologyFromJSON = routeTopologyFromJSON;
|
|
535
|
+
function routeTopologyToJSON(object) {
|
|
536
|
+
switch (object) {
|
|
537
|
+
case RouteTopology.ROUTE_TOPOLOGY_UNSPECIFIED:
|
|
538
|
+
return "ROUTE_TOPOLOGY_UNSPECIFIED";
|
|
539
|
+
case RouteTopology.ROUTE_TOPOLOGY_OPEN:
|
|
540
|
+
return "ROUTE_TOPOLOGY_OPEN";
|
|
541
|
+
case RouteTopology.ROUTE_TOPOLOGY_CLOSED:
|
|
542
|
+
return "ROUTE_TOPOLOGY_CLOSED";
|
|
543
|
+
case RouteTopology.UNRECOGNIZED:
|
|
544
|
+
default:
|
|
545
|
+
return "UNRECOGNIZED";
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
exports.routeTopologyToJSON = routeTopologyToJSON;
|
|
414
549
|
/**
|
|
415
550
|
* Lifecycle status for the route artifact (authoring + quality).
|
|
416
551
|
* Execution-side state (vessel sailing, paused, completed) lives on
|
|
@@ -1730,7 +1865,7 @@ exports.RouteInfo = {
|
|
|
1730
1865
|
};
|
|
1731
1866
|
typeRegistry_1.messageTypeRegistry.set(exports.RouteInfo.$type, exports.RouteInfo);
|
|
1732
1867
|
function createBaseWaypoints() {
|
|
1733
|
-
return { $type: "keelson.Waypoints", defaults: undefined, waypoint: [], extensions: undefined };
|
|
1868
|
+
return { $type: "keelson.Waypoints", defaults: undefined, waypoint: [], topology: 0, extensions: undefined };
|
|
1734
1869
|
}
|
|
1735
1870
|
exports.Waypoints = {
|
|
1736
1871
|
$type: "keelson.Waypoints",
|
|
@@ -1741,6 +1876,9 @@ exports.Waypoints = {
|
|
|
1741
1876
|
for (const v of message.waypoint) {
|
|
1742
1877
|
exports.Waypoint.encode(v, writer.uint32(18).fork()).join();
|
|
1743
1878
|
}
|
|
1879
|
+
if (message.topology !== 0) {
|
|
1880
|
+
writer.uint32(24).int32(message.topology);
|
|
1881
|
+
}
|
|
1744
1882
|
if (message.extensions !== undefined) {
|
|
1745
1883
|
exports.Extensions.encode(message.extensions, writer.uint32(794).fork()).join();
|
|
1746
1884
|
}
|
|
@@ -1767,6 +1905,13 @@ exports.Waypoints = {
|
|
|
1767
1905
|
message.waypoint.push(exports.Waypoint.decode(reader, reader.uint32()));
|
|
1768
1906
|
continue;
|
|
1769
1907
|
}
|
|
1908
|
+
case 3: {
|
|
1909
|
+
if (tag !== 24) {
|
|
1910
|
+
break;
|
|
1911
|
+
}
|
|
1912
|
+
message.topology = reader.int32();
|
|
1913
|
+
continue;
|
|
1914
|
+
}
|
|
1770
1915
|
case 99: {
|
|
1771
1916
|
if (tag !== 794) {
|
|
1772
1917
|
break;
|
|
@@ -1787,6 +1932,7 @@ exports.Waypoints = {
|
|
|
1787
1932
|
$type: exports.Waypoints.$type,
|
|
1788
1933
|
defaults: isSet(object.defaults) ? exports.DefaultWaypoint.fromJSON(object.defaults) : undefined,
|
|
1789
1934
|
waypoint: globalThis.Array.isArray(object?.waypoint) ? object.waypoint.map((e) => exports.Waypoint.fromJSON(e)) : [],
|
|
1935
|
+
topology: isSet(object.topology) ? routeTopologyFromJSON(object.topology) : 0,
|
|
1790
1936
|
extensions: isSet(object.extensions) ? exports.Extensions.fromJSON(object.extensions) : undefined,
|
|
1791
1937
|
};
|
|
1792
1938
|
},
|
|
@@ -1798,6 +1944,9 @@ exports.Waypoints = {
|
|
|
1798
1944
|
if (message.waypoint?.length) {
|
|
1799
1945
|
obj.waypoint = message.waypoint.map((e) => exports.Waypoint.toJSON(e));
|
|
1800
1946
|
}
|
|
1947
|
+
if (message.topology !== 0) {
|
|
1948
|
+
obj.topology = routeTopologyToJSON(message.topology);
|
|
1949
|
+
}
|
|
1801
1950
|
if (message.extensions !== undefined) {
|
|
1802
1951
|
obj.extensions = exports.Extensions.toJSON(message.extensions);
|
|
1803
1952
|
}
|
|
@@ -1812,6 +1961,7 @@ exports.Waypoints = {
|
|
|
1812
1961
|
? exports.DefaultWaypoint.fromPartial(object.defaults)
|
|
1813
1962
|
: undefined;
|
|
1814
1963
|
message.waypoint = object.waypoint?.map((e) => exports.Waypoint.fromPartial(e)) || [];
|
|
1964
|
+
message.topology = object.topology ?? 0;
|
|
1815
1965
|
message.extensions = (object.extensions !== undefined && object.extensions !== null)
|
|
1816
1966
|
? exports.Extensions.fromPartial(object.extensions)
|
|
1817
1967
|
: undefined;
|
|
@@ -2167,6 +2317,9 @@ function createBaseLeg() {
|
|
|
2167
2317
|
xtdStarboardM: undefined,
|
|
2168
2318
|
xtdMonitoringPortM: undefined,
|
|
2169
2319
|
xtdMonitoringStarboardM: undefined,
|
|
2320
|
+
xtdCorridorMode: 0,
|
|
2321
|
+
xtdPortBoundary: [],
|
|
2322
|
+
xtdStarboardBoundary: [],
|
|
2170
2323
|
safetyContourM: undefined,
|
|
2171
2324
|
safetyDepthM: undefined,
|
|
2172
2325
|
ukcStaticM: undefined,
|
|
@@ -2205,6 +2358,15 @@ exports.Leg = {
|
|
|
2205
2358
|
if (message.xtdMonitoringStarboardM !== undefined) {
|
|
2206
2359
|
writer.uint32(37).float(message.xtdMonitoringStarboardM);
|
|
2207
2360
|
}
|
|
2361
|
+
if (message.xtdCorridorMode !== 0) {
|
|
2362
|
+
writer.uint32(40).int32(message.xtdCorridorMode);
|
|
2363
|
+
}
|
|
2364
|
+
for (const v of message.xtdPortBoundary) {
|
|
2365
|
+
exports.XtdBoundaryPoint.encode(v, writer.uint32(50).fork()).join();
|
|
2366
|
+
}
|
|
2367
|
+
for (const v of message.xtdStarboardBoundary) {
|
|
2368
|
+
exports.XtdBoundaryPoint.encode(v, writer.uint32(58).fork()).join();
|
|
2369
|
+
}
|
|
2208
2370
|
if (message.safetyContourM !== undefined) {
|
|
2209
2371
|
writer.uint32(85).float(message.safetyContourM);
|
|
2210
2372
|
}
|
|
@@ -2305,6 +2467,27 @@ exports.Leg = {
|
|
|
2305
2467
|
message.xtdMonitoringStarboardM = reader.float();
|
|
2306
2468
|
continue;
|
|
2307
2469
|
}
|
|
2470
|
+
case 5: {
|
|
2471
|
+
if (tag !== 40) {
|
|
2472
|
+
break;
|
|
2473
|
+
}
|
|
2474
|
+
message.xtdCorridorMode = reader.int32();
|
|
2475
|
+
continue;
|
|
2476
|
+
}
|
|
2477
|
+
case 6: {
|
|
2478
|
+
if (tag !== 50) {
|
|
2479
|
+
break;
|
|
2480
|
+
}
|
|
2481
|
+
message.xtdPortBoundary.push(exports.XtdBoundaryPoint.decode(reader, reader.uint32()));
|
|
2482
|
+
continue;
|
|
2483
|
+
}
|
|
2484
|
+
case 7: {
|
|
2485
|
+
if (tag !== 58) {
|
|
2486
|
+
break;
|
|
2487
|
+
}
|
|
2488
|
+
message.xtdStarboardBoundary.push(exports.XtdBoundaryPoint.decode(reader, reader.uint32()));
|
|
2489
|
+
continue;
|
|
2490
|
+
}
|
|
2308
2491
|
case 10: {
|
|
2309
2492
|
if (tag !== 85) {
|
|
2310
2493
|
break;
|
|
@@ -2469,6 +2652,13 @@ exports.Leg = {
|
|
|
2469
2652
|
xtdMonitoringStarboardM: isSet(object.xtdMonitoringStarboardM)
|
|
2470
2653
|
? globalThis.Number(object.xtdMonitoringStarboardM)
|
|
2471
2654
|
: undefined,
|
|
2655
|
+
xtdCorridorMode: isSet(object.xtdCorridorMode) ? xtdCorridorModeFromJSON(object.xtdCorridorMode) : 0,
|
|
2656
|
+
xtdPortBoundary: globalThis.Array.isArray(object?.xtdPortBoundary)
|
|
2657
|
+
? object.xtdPortBoundary.map((e) => exports.XtdBoundaryPoint.fromJSON(e))
|
|
2658
|
+
: [],
|
|
2659
|
+
xtdStarboardBoundary: globalThis.Array.isArray(object?.xtdStarboardBoundary)
|
|
2660
|
+
? object.xtdStarboardBoundary.map((e) => exports.XtdBoundaryPoint.fromJSON(e))
|
|
2661
|
+
: [],
|
|
2472
2662
|
safetyContourM: isSet(object.safetyContourM) ? globalThis.Number(object.safetyContourM) : undefined,
|
|
2473
2663
|
safetyDepthM: isSet(object.safetyDepthM) ? globalThis.Number(object.safetyDepthM) : undefined,
|
|
2474
2664
|
ukcStaticM: isSet(object.ukcStaticM) ? globalThis.Number(object.ukcStaticM) : undefined,
|
|
@@ -2508,6 +2698,15 @@ exports.Leg = {
|
|
|
2508
2698
|
if (message.xtdMonitoringStarboardM !== undefined) {
|
|
2509
2699
|
obj.xtdMonitoringStarboardM = message.xtdMonitoringStarboardM;
|
|
2510
2700
|
}
|
|
2701
|
+
if (message.xtdCorridorMode !== 0) {
|
|
2702
|
+
obj.xtdCorridorMode = xtdCorridorModeToJSON(message.xtdCorridorMode);
|
|
2703
|
+
}
|
|
2704
|
+
if (message.xtdPortBoundary?.length) {
|
|
2705
|
+
obj.xtdPortBoundary = message.xtdPortBoundary.map((e) => exports.XtdBoundaryPoint.toJSON(e));
|
|
2706
|
+
}
|
|
2707
|
+
if (message.xtdStarboardBoundary?.length) {
|
|
2708
|
+
obj.xtdStarboardBoundary = message.xtdStarboardBoundary.map((e) => exports.XtdBoundaryPoint.toJSON(e));
|
|
2709
|
+
}
|
|
2511
2710
|
if (message.safetyContourM !== undefined) {
|
|
2512
2711
|
obj.safetyContourM = message.safetyContourM;
|
|
2513
2712
|
}
|
|
@@ -2582,6 +2781,9 @@ exports.Leg = {
|
|
|
2582
2781
|
message.xtdStarboardM = object.xtdStarboardM ?? undefined;
|
|
2583
2782
|
message.xtdMonitoringPortM = object.xtdMonitoringPortM ?? undefined;
|
|
2584
2783
|
message.xtdMonitoringStarboardM = object.xtdMonitoringStarboardM ?? undefined;
|
|
2784
|
+
message.xtdCorridorMode = object.xtdCorridorMode ?? 0;
|
|
2785
|
+
message.xtdPortBoundary = object.xtdPortBoundary?.map((e) => exports.XtdBoundaryPoint.fromPartial(e)) || [];
|
|
2786
|
+
message.xtdStarboardBoundary = object.xtdStarboardBoundary?.map((e) => exports.XtdBoundaryPoint.fromPartial(e)) || [];
|
|
2585
2787
|
message.safetyContourM = object.safetyContourM ?? undefined;
|
|
2586
2788
|
message.safetyDepthM = object.safetyDepthM ?? undefined;
|
|
2587
2789
|
message.ukcStaticM = object.ukcStaticM ?? undefined;
|
|
@@ -2609,6 +2811,115 @@ exports.Leg = {
|
|
|
2609
2811
|
},
|
|
2610
2812
|
};
|
|
2611
2813
|
typeRegistry_1.messageTypeRegistry.set(exports.Leg.$type, exports.Leg);
|
|
2814
|
+
function createBaseXtdBoundaryPoint() {
|
|
2815
|
+
return {
|
|
2816
|
+
$type: "keelson.XtdBoundaryPoint",
|
|
2817
|
+
position: undefined,
|
|
2818
|
+
alongTrackFraction: undefined,
|
|
2819
|
+
offsetM: undefined,
|
|
2820
|
+
inTurn: false,
|
|
2821
|
+
};
|
|
2822
|
+
}
|
|
2823
|
+
exports.XtdBoundaryPoint = {
|
|
2824
|
+
$type: "keelson.XtdBoundaryPoint",
|
|
2825
|
+
encode(message, writer = new wire_1.BinaryWriter()) {
|
|
2826
|
+
if (message.position !== undefined) {
|
|
2827
|
+
Coordinate_1.Coordinate.encode(message.position, writer.uint32(10).fork()).join();
|
|
2828
|
+
}
|
|
2829
|
+
if (message.alongTrackFraction !== undefined) {
|
|
2830
|
+
writer.uint32(17).double(message.alongTrackFraction);
|
|
2831
|
+
}
|
|
2832
|
+
if (message.offsetM !== undefined) {
|
|
2833
|
+
writer.uint32(29).float(message.offsetM);
|
|
2834
|
+
}
|
|
2835
|
+
if (message.inTurn !== false) {
|
|
2836
|
+
writer.uint32(32).bool(message.inTurn);
|
|
2837
|
+
}
|
|
2838
|
+
return writer;
|
|
2839
|
+
},
|
|
2840
|
+
decode(input, length) {
|
|
2841
|
+
const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
|
|
2842
|
+
let end = length === undefined ? reader.len : reader.pos + length;
|
|
2843
|
+
const message = createBaseXtdBoundaryPoint();
|
|
2844
|
+
while (reader.pos < end) {
|
|
2845
|
+
const tag = reader.uint32();
|
|
2846
|
+
switch (tag >>> 3) {
|
|
2847
|
+
case 1: {
|
|
2848
|
+
if (tag !== 10) {
|
|
2849
|
+
break;
|
|
2850
|
+
}
|
|
2851
|
+
message.position = Coordinate_1.Coordinate.decode(reader, reader.uint32());
|
|
2852
|
+
continue;
|
|
2853
|
+
}
|
|
2854
|
+
case 2: {
|
|
2855
|
+
if (tag !== 17) {
|
|
2856
|
+
break;
|
|
2857
|
+
}
|
|
2858
|
+
message.alongTrackFraction = reader.double();
|
|
2859
|
+
continue;
|
|
2860
|
+
}
|
|
2861
|
+
case 3: {
|
|
2862
|
+
if (tag !== 29) {
|
|
2863
|
+
break;
|
|
2864
|
+
}
|
|
2865
|
+
message.offsetM = reader.float();
|
|
2866
|
+
continue;
|
|
2867
|
+
}
|
|
2868
|
+
case 4: {
|
|
2869
|
+
if (tag !== 32) {
|
|
2870
|
+
break;
|
|
2871
|
+
}
|
|
2872
|
+
message.inTurn = reader.bool();
|
|
2873
|
+
continue;
|
|
2874
|
+
}
|
|
2875
|
+
}
|
|
2876
|
+
if ((tag & 7) === 4 || tag === 0) {
|
|
2877
|
+
break;
|
|
2878
|
+
}
|
|
2879
|
+
reader.skip(tag & 7);
|
|
2880
|
+
}
|
|
2881
|
+
return message;
|
|
2882
|
+
},
|
|
2883
|
+
fromJSON(object) {
|
|
2884
|
+
return {
|
|
2885
|
+
$type: exports.XtdBoundaryPoint.$type,
|
|
2886
|
+
position: isSet(object.position) ? Coordinate_1.Coordinate.fromJSON(object.position) : undefined,
|
|
2887
|
+
alongTrackFraction: isSet(object.alongTrackFraction) ? globalThis.Number(object.alongTrackFraction) : undefined,
|
|
2888
|
+
offsetM: isSet(object.offsetM) ? globalThis.Number(object.offsetM) : undefined,
|
|
2889
|
+
inTurn: isSet(object.inTurn) ? globalThis.Boolean(object.inTurn) : false,
|
|
2890
|
+
};
|
|
2891
|
+
},
|
|
2892
|
+
toJSON(message) {
|
|
2893
|
+
const obj = {};
|
|
2894
|
+
if (message.position !== undefined) {
|
|
2895
|
+
obj.position = Coordinate_1.Coordinate.toJSON(message.position);
|
|
2896
|
+
}
|
|
2897
|
+
if (message.alongTrackFraction !== undefined) {
|
|
2898
|
+
obj.alongTrackFraction = message.alongTrackFraction;
|
|
2899
|
+
}
|
|
2900
|
+
if (message.offsetM !== undefined) {
|
|
2901
|
+
obj.offsetM = message.offsetM;
|
|
2902
|
+
}
|
|
2903
|
+
if (message.inTurn !== false) {
|
|
2904
|
+
obj.inTurn = message.inTurn;
|
|
2905
|
+
}
|
|
2906
|
+
return obj;
|
|
2907
|
+
},
|
|
2908
|
+
create(base) {
|
|
2909
|
+
return exports.XtdBoundaryPoint.fromPartial(base ?? {});
|
|
2910
|
+
},
|
|
2911
|
+
fromPartial(object) {
|
|
2912
|
+
const message = createBaseXtdBoundaryPoint();
|
|
2913
|
+
message.position = (object.position !== undefined && object.position !== null)
|
|
2914
|
+
? Coordinate_1.Coordinate.fromPartial(object.position)
|
|
2915
|
+
: undefined;
|
|
2916
|
+
message.alongTrackFraction = object.alongTrackFraction ?? undefined;
|
|
2917
|
+
message.offsetM = object.offsetM ?? undefined;
|
|
2918
|
+
message.inTurn = object.inTurn ?? false;
|
|
2919
|
+
return message;
|
|
2920
|
+
},
|
|
2921
|
+
};
|
|
2922
|
+
typeRegistry_1.messageTypeRegistry.set(exports.XtdBoundaryPoint.$type, exports.XtdBoundaryPoint);
|
|
2612
2923
|
function createBaseSchedules() {
|
|
2613
2924
|
return { $type: "keelson.Schedules", schedule: [], extensions: undefined };
|
|
2614
2925
|
}
|
|
@@ -11,6 +11,13 @@ export interface RouteExecution {
|
|
|
11
11
|
/**
|
|
12
12
|
* Stable id of the next waypoint to be reached. Unset before departure and
|
|
13
13
|
* after final arrival.
|
|
14
|
+
*
|
|
15
|
+
* On the closing leg of a route whose Waypoints.topology is CLOSED this
|
|
16
|
+
* wraps: `current_leg_from_waypoint_id` is the last waypoint and this is the
|
|
17
|
+
* FIRST. A consumer MUST NOT derive "next" by incrementing a position in the
|
|
18
|
+
* waypoint list — on a closed route that runs off the end. The distance and
|
|
19
|
+
* bearing fields below are defined against this id and so follow it round
|
|
20
|
+
* the corner unchanged, which is the payoff of the id-not-index rule above.
|
|
14
21
|
*/
|
|
15
22
|
nextWaypointId?: string | undefined;
|
|
16
23
|
/** Great-circle distance to the next waypoint (metres). */
|
|
@@ -35,6 +35,20 @@ export interface ScenarioEvent {
|
|
|
35
35
|
*/
|
|
36
36
|
runId: string;
|
|
37
37
|
tick: number;
|
|
38
|
+
/**
|
|
39
|
+
* Which scenario was loaded, spelled as ScenarioStatus spells it.
|
|
40
|
+
*
|
|
41
|
+
* run_id above says *which run*; this says *what was being run*, and the two
|
|
42
|
+
* are not recoverable from each other. A reader holding only events has to
|
|
43
|
+
* join them against a ScenarioStatus to learn what the exercise was — which
|
|
44
|
+
* is a join, not a lookup, and one that stops being cheap the moment a
|
|
45
|
+
* recording holds more than one run.
|
|
46
|
+
*
|
|
47
|
+
* Optional in practice: an authority that publishes ScenarioStatus on the
|
|
48
|
+
* same run may leave it empty and lose nothing. It is here so an events-only
|
|
49
|
+
* consumer is not the one paying for that choice.
|
|
50
|
+
*/
|
|
51
|
+
scenarioId: string;
|
|
38
52
|
/**
|
|
39
53
|
* What was done. A free string rather than an enum, deliberately: the
|
|
40
54
|
* vocabulary belongs to the scenario format, not to keelson, and a fixed
|
|
@@ -16,6 +16,7 @@ function createBaseScenarioEvent() {
|
|
|
16
16
|
timestamp: undefined,
|
|
17
17
|
runId: "",
|
|
18
18
|
tick: 0,
|
|
19
|
+
scenarioId: "",
|
|
19
20
|
action: "",
|
|
20
21
|
entityId: "",
|
|
21
22
|
parameters: {},
|
|
@@ -34,6 +35,9 @@ exports.ScenarioEvent = {
|
|
|
34
35
|
if (message.tick !== 0) {
|
|
35
36
|
writer.uint32(24).uint64(message.tick);
|
|
36
37
|
}
|
|
38
|
+
if (message.scenarioId !== "") {
|
|
39
|
+
writer.uint32(66).string(message.scenarioId);
|
|
40
|
+
}
|
|
37
41
|
if (message.action !== "") {
|
|
38
42
|
writer.uint32(34).string(message.action);
|
|
39
43
|
}
|
|
@@ -76,6 +80,13 @@ exports.ScenarioEvent = {
|
|
|
76
80
|
message.tick = longToNumber(reader.uint64());
|
|
77
81
|
continue;
|
|
78
82
|
}
|
|
83
|
+
case 8: {
|
|
84
|
+
if (tag !== 66) {
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
message.scenarioId = reader.string();
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
79
90
|
case 4: {
|
|
80
91
|
if (tag !== 34) {
|
|
81
92
|
break;
|
|
@@ -121,6 +132,7 @@ exports.ScenarioEvent = {
|
|
|
121
132
|
timestamp: isSet(object.timestamp) ? fromJsonTimestamp(object.timestamp) : undefined,
|
|
122
133
|
runId: isSet(object.runId) ? globalThis.String(object.runId) : "",
|
|
123
134
|
tick: isSet(object.tick) ? globalThis.Number(object.tick) : 0,
|
|
135
|
+
scenarioId: isSet(object.scenarioId) ? globalThis.String(object.scenarioId) : "",
|
|
124
136
|
action: isSet(object.action) ? globalThis.String(object.action) : "",
|
|
125
137
|
entityId: isSet(object.entityId) ? globalThis.String(object.entityId) : "",
|
|
126
138
|
parameters: isObject(object.parameters)
|
|
@@ -143,6 +155,9 @@ exports.ScenarioEvent = {
|
|
|
143
155
|
if (message.tick !== 0) {
|
|
144
156
|
obj.tick = Math.round(message.tick);
|
|
145
157
|
}
|
|
158
|
+
if (message.scenarioId !== "") {
|
|
159
|
+
obj.scenarioId = message.scenarioId;
|
|
160
|
+
}
|
|
146
161
|
if (message.action !== "") {
|
|
147
162
|
obj.action = message.action;
|
|
148
163
|
}
|
|
@@ -171,6 +186,7 @@ exports.ScenarioEvent = {
|
|
|
171
186
|
message.timestamp = object.timestamp ?? undefined;
|
|
172
187
|
message.runId = object.runId ?? "";
|
|
173
188
|
message.tick = object.tick ?? 0;
|
|
189
|
+
message.scenarioId = object.scenarioId ?? "";
|
|
174
190
|
message.action = object.action ?? "";
|
|
175
191
|
message.entityId = object.entityId ?? "";
|
|
176
192
|
message.parameters = Object.entries(object.parameters ?? {}).reduce((acc, [key, value]) => {
|
package/dist/payloads/index.d.ts
CHANGED
package/dist/payloads/index.js
CHANGED
|
@@ -27,8 +27,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
27
27
|
return result;
|
|
28
28
|
};
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.
|
|
30
|
+
exports.foxglove = exports.keelson = exports.google = void 0;
|
|
31
31
|
/* eslint-disable */
|
|
32
32
|
exports.google = __importStar(require("./index.google"));
|
|
33
|
-
exports.foxglove = __importStar(require("./index.foxglove"));
|
|
34
33
|
exports.keelson = __importStar(require("./index.keelson"));
|
|
34
|
+
exports.foxglove = __importStar(require("./index.foxglove"));
|
|
@@ -1,23 +1,29 @@
|
|
|
1
|
+
export * from "./AdviceDisposition";
|
|
1
2
|
export * from "./Audio";
|
|
2
3
|
export * from "./Severity";
|
|
3
4
|
export * from "./Alarm";
|
|
4
5
|
export * from "./ChecklistEvidence";
|
|
5
6
|
export * from "./ChecklistEvent";
|
|
6
|
-
export * from "./ChecklistPresence";
|
|
7
7
|
export * from "./ChecklistProcedure";
|
|
8
8
|
export * from "./ChecklistState";
|
|
9
|
-
export * from "./CommandAuthority";
|
|
10
9
|
export * from "./Coordinate";
|
|
10
|
+
export * from "./OperationalAuthority";
|
|
11
|
+
export * from "./ChecklistHandover";
|
|
12
|
+
export * from "./ChecklistPresence";
|
|
13
|
+
export * from "./CommandAuthority";
|
|
14
|
+
export * from "./ContainerHost";
|
|
11
15
|
export * from "./Decomposed3DVector";
|
|
12
|
-
export * from "./EntityHealth";
|
|
13
16
|
export * from "./Route";
|
|
17
|
+
export * from "./Encounter";
|
|
18
|
+
export * from "./EntityHealth";
|
|
14
19
|
export * from "./EnvelopeExceedance";
|
|
15
20
|
export * from "./FlagCode";
|
|
16
21
|
export * from "./Geojson";
|
|
17
22
|
export * from "./LocationFixQuality";
|
|
18
23
|
export * from "./Mission";
|
|
24
|
+
export * from "./NavigationAdvice";
|
|
25
|
+
export * from "./NavigationState";
|
|
19
26
|
export * from "./NetworkStatus";
|
|
20
|
-
export * from "./OperationalAuthority";
|
|
21
27
|
export * from "./Primitives";
|
|
22
28
|
export * from "./ROCStatus";
|
|
23
29
|
export * from "./RadarReading";
|
|
@@ -19,26 +19,32 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
19
19
|
};
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
21
|
/* eslint-disable */
|
|
22
|
+
__exportStar(require("./AdviceDisposition"), exports);
|
|
22
23
|
__exportStar(require("./Audio"), exports);
|
|
23
24
|
__exportStar(require("./Severity"), exports);
|
|
24
25
|
__exportStar(require("./Alarm"), exports);
|
|
25
26
|
__exportStar(require("./ChecklistEvidence"), exports);
|
|
26
27
|
__exportStar(require("./ChecklistEvent"), exports);
|
|
27
|
-
__exportStar(require("./ChecklistPresence"), exports);
|
|
28
28
|
__exportStar(require("./ChecklistProcedure"), exports);
|
|
29
29
|
__exportStar(require("./ChecklistState"), exports);
|
|
30
|
-
__exportStar(require("./CommandAuthority"), exports);
|
|
31
30
|
__exportStar(require("./Coordinate"), exports);
|
|
31
|
+
__exportStar(require("./OperationalAuthority"), exports);
|
|
32
|
+
__exportStar(require("./ChecklistHandover"), exports);
|
|
33
|
+
__exportStar(require("./ChecklistPresence"), exports);
|
|
34
|
+
__exportStar(require("./CommandAuthority"), exports);
|
|
35
|
+
__exportStar(require("./ContainerHost"), exports);
|
|
32
36
|
__exportStar(require("./Decomposed3DVector"), exports);
|
|
33
|
-
__exportStar(require("./EntityHealth"), exports);
|
|
34
37
|
__exportStar(require("./Route"), exports);
|
|
38
|
+
__exportStar(require("./Encounter"), exports);
|
|
39
|
+
__exportStar(require("./EntityHealth"), exports);
|
|
35
40
|
__exportStar(require("./EnvelopeExceedance"), exports);
|
|
36
41
|
__exportStar(require("./FlagCode"), exports);
|
|
37
42
|
__exportStar(require("./Geojson"), exports);
|
|
38
43
|
__exportStar(require("./LocationFixQuality"), exports);
|
|
39
44
|
__exportStar(require("./Mission"), exports);
|
|
45
|
+
__exportStar(require("./NavigationAdvice"), exports);
|
|
46
|
+
__exportStar(require("./NavigationState"), exports);
|
|
40
47
|
__exportStar(require("./NetworkStatus"), exports);
|
|
41
|
-
__exportStar(require("./OperationalAuthority"), exports);
|
|
42
48
|
__exportStar(require("./Primitives"), exports);
|
|
43
49
|
__exportStar(require("./ROCStatus"), exports);
|
|
44
50
|
__exportStar(require("./RadarReading"), exports);
|
package/dist/qos.json
CHANGED
|
@@ -83,12 +83,18 @@
|
|
|
83
83
|
"depth_below_transducer_m": "elevated",
|
|
84
84
|
"depth_below_keel_m": "elevated",
|
|
85
85
|
"depth_below_surface_m": "elevated",
|
|
86
|
+
"water_level_above_chart_datum_m": "elevated",
|
|
86
87
|
"envelope_exceedance": "elevated",
|
|
87
88
|
"route_status": "elevated",
|
|
88
89
|
"route_execution": "elevated",
|
|
90
|
+
"navigation_state": "elevated",
|
|
91
|
+
"encounter": "elevated",
|
|
92
|
+
"navigation_advice": "elevated",
|
|
93
|
+
"advice_disposition": "elevated",
|
|
89
94
|
"route_edit_authority": "elevated",
|
|
90
95
|
"route_edit_request": "elevated",
|
|
91
96
|
"checklist_event": "elevated",
|
|
97
|
+
"checklist_handover": "elevated",
|
|
92
98
|
"raw": "background",
|
|
93
99
|
"raw_json": "background",
|
|
94
100
|
"raw_nmea0183": "background",
|