signalk-aiscast 0.2.0 → 0.3.0
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/CHANGELOG.md +9 -4
- package/README.md +28 -14
- package/dist/buddies.d.ts +16 -0
- package/dist/buddies.js +59 -0
- package/dist/buddies.js.map +1 -0
- package/dist/downlink.d.ts +7 -0
- package/dist/downlink.js +70 -14
- package/dist/downlink.js.map +1 -1
- package/dist/index.js +21 -5
- package/dist/index.js.map +1 -1
- package/dist/n2k.js +4 -1
- package/dist/n2k.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.0
|
|
4
|
+
|
|
5
|
+
- Buddy boats: vessels on [signalk-buddylist-plugin](https://github.com/sbender9/signalk-buddylist-plugin)'s list are followed on aiscast wherever they are, far beyond VHF range, in every receive mode. The buddylist plugin keeps raising its buddy flag and proximity alerts, so Freeboard-SK's buddy icon and phone notifications work at any distance. The status line shows how many buddies have been heard from.
|
|
6
|
+
- Own-ship reports from NMEA 2000 are recognized by the boat's MMSI, not only by the transceiver-information field. A transmitting transponder (like the B&G V60-B) stamps its own position "Channel A/B VDL transmission", which previously published as `!AIVDM` and left the plugin unaware a transponder was present. Those reports now publish as `!AIVDO`, pause self-reported position synthesis while transponder data flows, and follow the *Share my own ship's AIS transponder data* setting.
|
|
7
|
+
|
|
3
8
|
## 0.2.0
|
|
4
9
|
|
|
5
|
-
- New Share setting: *Fallback to self-reported AIS position*. When an AIS transponder is not available, the plugin builds class B position and static reports from Signal K (like `@signalk/aisreporter`)
|
|
10
|
+
- New Share setting: *Fallback to self-reported AIS position*. When an AIS transponder is not available, the plugin builds class B position and static reports from Signal K (like `@signalk/aisreporter`). It publishes them as `!AIVDO` tagged `s:self`, so a boat with only a GPS appears on aiscast as self-reported. Synthesis pauses while the plugin hears a real `!AIVDO`. The setting is checked by default when you save the config form, and configs saved before this setting existed stay off until you save them again. The checkbox is disabled until an MMSI is set in Vessel settings.
|
|
6
11
|
- Each Share setting explains itself below its label, and Receive mode renders as radio buttons instead of a dropdown.
|
|
7
12
|
|
|
8
13
|
## 0.1.4
|
|
9
14
|
|
|
10
|
-
- Personal tokens minted by aiscast no longer expire
|
|
15
|
+
- Personal tokens minted by aiscast no longer expire. The plugin keeps a cached token with no expiry instead of minting a new one every start.
|
|
11
16
|
- The npm package includes this changelog.
|
|
12
17
|
|
|
13
18
|
## 0.1.3
|
|
14
19
|
|
|
15
|
-
- Fixes the plugin never connecting on high-latency links (Starlink in remote regions, satellite, some cellular)
|
|
20
|
+
- Fixes the plugin never connecting on high-latency links (Starlink in remote regions, satellite, some cellular). Node abandoned the IPv4 connection after 250 ms and then used an unroutable IPv6 address. Each attempt now gets 3 s.
|
|
16
21
|
- The debug log shows the real reason a socket failed (for example `socket error: ETIMEDOUT (connect ETIMEDOUT 2.29.0.215:443; …)`) instead of an empty `socket error:` line.
|
|
17
22
|
|
|
18
23
|
## 0.1.2
|
|
@@ -21,7 +26,7 @@
|
|
|
21
26
|
|
|
22
27
|
## 0.1.1
|
|
23
28
|
|
|
24
|
-
- Retries token minting with backoff (1 to 30 min) instead of waiting six hours after a failed start
|
|
29
|
+
- Retries token minting with backoff (1 to 30 min) instead of waiting six hours after a failed start. A Pi that boots before its network is ready now starts sharing as soon as it can.
|
|
25
30
|
- Token errors include the underlying cause (DNS, TLS, connection refused).
|
|
26
31
|
|
|
27
32
|
## 0.1.0
|
package/README.md
CHANGED
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Signal K plugin for [aiscast](https://github.com/openwatersio/aiscast), the open AIS network from [Open Waters](https://openwaters.io). It does two things over one connection:
|
|
4
4
|
|
|
5
|
-
- **Share**: every AIS sentence your receiver hears (`!AIVDM` on NMEA 0183, or NMEA 2000 AIS PGNs re-encoded as sentences)
|
|
6
|
-
- **Receive**: when the boat hears no AIS of its own (no receiver, receiver off, server running ashore), the plugin subscribes to aiscast around your position
|
|
5
|
+
- **Share**: the plugin sends every AIS sentence your receiver hears to aiscast as it arrives (`!AIVDM` on NMEA 0183, or NMEA 2000 AIS PGNs re-encoded as sentences), so the places only boats can hear get coverage. The plugin also shares your own transponder's position (`!AIVDO`). When an AIS transponder is not available, the plugin builds class B reports from the Signal K position and marks them self-reported. Each part has its own checkbox.
|
|
6
|
+
- **Receive**: when the boat hears no AIS of its own (no receiver, receiver off, server running ashore), the plugin subscribes to aiscast around your position. It injects the traffic as Signal K targets with `$source` `signalk-aiscast.net`, so Freeboard and friends show them. `Always` mode also adds traffic beyond VHF range, and locally heard targets win.
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
It also follows your buddy boats worldwide: see [Buddy boats](#buddy-boats).
|
|
9
|
+
|
|
10
|
+
No account. On first start the plugin generates an Ed25519 keypair in its data directory and requests its own access token from aiscast, sent as an `Authorization: Bearer` header. aiscast credits receptions to that key. Paste an operator-issued token into the config to publish as a named station with higher limits.
|
|
9
11
|
|
|
10
12
|
## Install
|
|
11
13
|
|
|
@@ -16,24 +18,36 @@ Signal K App Store → `signalk-aiscast`, or `npm install signalk-aiscast` in `~
|
|
|
16
18
|
| Setting | Default | Meaning |
|
|
17
19
|
|---|---|---|
|
|
18
20
|
| Share → AIS targets I receive | on | publish AIS heard by the receiver (NMEA 0183 `!AIVDM`, NMEA 2000 AIS) |
|
|
19
|
-
| Share → My own ship's AIS transponder data | on | forward what the transponder broadcasts (`!AIVDO`)
|
|
20
|
-
| Share → Fallback to self-reported AIS position | on | when an AIS transponder is not available, build class B reports from Signal K: position every 60 s while moving, static data every 6 min, tagged `s:self
|
|
21
|
-
| Receive → Show traffic from aiscast | auto | `Off`, `Auto` (only while nothing is heard locally for 90 s), `Always` (also beyond local VHF range
|
|
21
|
+
| Share → My own ship's AIS transponder data | on | forward what the transponder broadcasts (`!AIVDO`). Your position becomes public open data on aiscast, and the transponder already broadcasts it on VHF |
|
|
22
|
+
| Share → Fallback to self-reported AIS position | on | when an AIS transponder is not available, build class B reports from Signal K: position every 60 s while moving, static data every 6 min, tagged `s:self`. Synthesis pauses for 5 min after any real `!AIVDO`. The setting stays disabled until an MMSI is set in Vessel settings |
|
|
23
|
+
| Receive → Show traffic from aiscast | auto | `Off`, `Auto` (only while nothing is heard locally for 90 s), `Always` (also beyond local VHF range, and local reception wins per target) |
|
|
22
24
|
| Receive → Radius | 50 nm | subscription box around the vessel (5–200) |
|
|
23
25
|
| Advanced → Server | `https://ais.openwaters.io` | aiscast base URL |
|
|
24
|
-
| Advanced → Access token | empty | optional operator-issued token
|
|
26
|
+
| Advanced → Access token | empty | optional operator-issued token. Empty = self-minted personal token |
|
|
27
|
+
|
|
28
|
+
## Buddy boats
|
|
29
|
+
|
|
30
|
+
Install [signalk-buddylist-plugin](https://github.com/sbender9/signalk-buddylist-plugin) alongside and the vessels on its buddy list stay on your chart wherever they are, far beyond VHF range. The buddylist plugin owns the list and the alerts; this plugin only supplies the positions, from aiscast, by subscribing to the buddies' MMSIs alongside the radius.
|
|
31
|
+
|
|
32
|
+
- Add a buddy in Freeboard-SK (tap a vessel → "Is Buddy"), through the buddylist plugin's config, or `POST /signalk/v2/api/resources/buddies` with `{"urn": "urn:mrn:imo:mmsi:<mmsi>", "name": "Selkie"}`. The plugin picks up changes within a minute.
|
|
33
|
+
- Buddies are followed in every receive mode, including `Off`: the whole point is traffic beyond local reception. Local reception still wins per target in `Always` mode.
|
|
34
|
+
- The buddylist plugin raises `vessels.<urn>.buddy` and its `notifications.buddy.<urn>` proximity alert the moment positions arrive, so Freeboard's buddy icon, the buddies-only filter, and phone alerts via signalk-push-notifications all work at any distance.
|
|
35
|
+
- The status line shows `buddies 2/3`: how many of the listed buddies aiscast has heard from in the last 10 minutes.
|
|
36
|
+
- A buddy only appears when some station or satellite feed hears them. Coastal coverage is good; mid-ocean gaps are real.
|
|
37
|
+
|
|
38
|
+
Without the buddylist plugin installed, there are no buddies and nothing changes.
|
|
25
39
|
|
|
26
40
|
## Behaviour worth knowing
|
|
27
41
|
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
- Injected targets come through the server's own AIS parser, so they are shaped exactly like VHF-received ones
|
|
31
|
-
- NMEA 2000 AIS needs nothing extra
|
|
32
|
-
- The self-reported position fallback
|
|
42
|
+
- The plugin sends sentences as received, each stamped with a NMEA TAG block that carries the receive time. Anything unacknowledged, or heard while offline, waits in `<data dir>/queue/` (cap 100 MB) and replays oldest-first on reconnect. aiscast archives replayed sentences older than a minute and keeps them off the live map.
|
|
43
|
+
- The plugin reconnects with jittered backoff (5 s → 5 min, and 30 min after a refusal) and a 60 s silence watchdog. The status line in Plugin Config shows the key prefix, send rate, queue depth, targets, and link state.
|
|
44
|
+
- Injected targets come through the server's own AIS parser, so they are shaped exactly like VHF-received ones. The server's *Maximum age of inactive vessels* setting expires them. The plugin never injects your own vessel or echoes of your own receptions, and it never publishes payloads from aiscast back to aiscast.
|
|
45
|
+
- NMEA 2000 AIS needs nothing extra. The plugin re-encodes PGNs 129038/129039/129041/129794/129809/129810 to `!AIVDM` (own ship to `!AIVDO`) and tags them `s:n2k`, since N2K carries decoded fields rather than the VHF bits. The plugin works without `signalk-n2kais-to-nmea0183` and ignores its output.
|
|
46
|
+
- The self-reported position fallback does for aiscast what `@signalk/aisreporter` does for MarineTraffic. Position comes from `navigation.position`, with SOG, COG, and heading (true, or magnetic plus variation) when present, and the AIS "not available" values when absent. Name, callsign, ship type, and dimensions come from `name`, `communication.callsignVhf`, `design.aisShipType`, `design.length`/`design.beam`, and `sensors.gps.fromBow`/`fromCenter`. aiscast marks these events `synthesized: true`, keeps them out of its AISHub feed, and shows them apart from VHF receptions. The plugin sends nothing without a fix, while the GPS sits at Null Island, or while the position stays unchanged.
|
|
33
47
|
|
|
34
48
|
## Data and licensing
|
|
35
49
|
|
|
36
|
-
|
|
50
|
+
aiscast publishes what you share under its open data terms: the [contributor agreement](https://github.com/openwatersio/aiscast/blob/main/docs/contributor-agreement.md), summarized in the [aiscast README](https://github.com/openwatersio/aiscast#readme). The plugin shares only AIS sentences and, if you enable it, your own position. That position comes from the transponder, or the plugin builds it from Signal K when an AIS transponder is not available. Removal requests and the privacy policy are on the aiscast site.
|
|
37
51
|
|
|
38
52
|
## Development
|
|
39
53
|
|
|
@@ -43,4 +57,4 @@ npm test # vitest against a fake aiscast server
|
|
|
43
57
|
npm run build # dist/
|
|
44
58
|
```
|
|
45
59
|
|
|
46
|
-
|
|
60
|
+
The repo's `release.yml` releases to npm when someone creates a GitHub release tagged `signalk-plugin-v*`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const BUDDYLIST_OPTIONS = "signalk-buddylist-plugin.json";
|
|
2
|
+
export declare class Buddies {
|
|
3
|
+
private readonly file;
|
|
4
|
+
private readonly selfMmsi;
|
|
5
|
+
private readonly onChange;
|
|
6
|
+
private readonly pollMs;
|
|
7
|
+
private timer;
|
|
8
|
+
private stopped;
|
|
9
|
+
private last;
|
|
10
|
+
mmsis: number[];
|
|
11
|
+
constructor(file: string, // <config>/plugin-config-data/signalk-buddylist-plugin.json
|
|
12
|
+
selfMmsi: string | null, onChange: (mmsis: number[]) => void, pollMs?: number);
|
|
13
|
+
start(): void;
|
|
14
|
+
stop(): void;
|
|
15
|
+
private poll;
|
|
16
|
+
}
|
package/dist/buddies.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
export const BUDDYLIST_OPTIONS = "signalk-buddylist-plugin.json";
|
|
3
|
+
// The buddy list belongs to signalk-buddylist-plugin (Freeboard-SK's "Is Buddy" button writes to it, and it
|
|
4
|
+
// raises the vessels.<urn>.buddy flag and proximity notifications once positions arrive). This watches its
|
|
5
|
+
// saved options for MMSIs to follow on aiscast. No file, plugin disabled, or no buddies all mean an empty list.
|
|
6
|
+
export class Buddies {
|
|
7
|
+
file;
|
|
8
|
+
selfMmsi;
|
|
9
|
+
onChange;
|
|
10
|
+
pollMs;
|
|
11
|
+
timer = null;
|
|
12
|
+
stopped = false;
|
|
13
|
+
last = ""; // matches the empty list, so a missing file never reports a change
|
|
14
|
+
mmsis = [];
|
|
15
|
+
constructor(file, // <config>/plugin-config-data/signalk-buddylist-plugin.json
|
|
16
|
+
selfMmsi, onChange, pollMs = 60_000) {
|
|
17
|
+
this.file = file;
|
|
18
|
+
this.selfMmsi = selfMmsi;
|
|
19
|
+
this.onChange = onChange;
|
|
20
|
+
this.pollMs = pollMs;
|
|
21
|
+
}
|
|
22
|
+
start() {
|
|
23
|
+
void this.poll();
|
|
24
|
+
this.timer = setInterval(() => void this.poll(), this.pollMs);
|
|
25
|
+
}
|
|
26
|
+
stop() {
|
|
27
|
+
this.stopped = true;
|
|
28
|
+
if (this.timer)
|
|
29
|
+
clearInterval(this.timer);
|
|
30
|
+
this.timer = null;
|
|
31
|
+
}
|
|
32
|
+
async poll() {
|
|
33
|
+
let mmsis = [];
|
|
34
|
+
try {
|
|
35
|
+
const opts = JSON.parse(await readFile(this.file, "utf8"));
|
|
36
|
+
if (opts.enabled !== false) {
|
|
37
|
+
mmsis = (opts.configuration?.buddies ?? [])
|
|
38
|
+
// only real MMSIs reach the subscription; a malformed one would refuse the whole frame
|
|
39
|
+
.map((b) => /^urn:mrn:imo:mmsi:(\d{9})$/.exec(b.urn ?? "")?.[1])
|
|
40
|
+
.filter((m) => m != null && m !== this.selfMmsi)
|
|
41
|
+
.map(Number);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
// Missing file means the buddylist plugin is not installed or never configured: an empty list.
|
|
46
|
+
// Anything else (EACCES, EMFILE, a torn read) is transient: keep the last list and try again later.
|
|
47
|
+
if (err.code !== "ENOENT")
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
mmsis = [...new Set(mmsis)].sort((a, b) => a - b);
|
|
51
|
+
const key = mmsis.join();
|
|
52
|
+
if (this.stopped || key === this.last)
|
|
53
|
+
return;
|
|
54
|
+
this.last = key;
|
|
55
|
+
this.mmsis = mmsis;
|
|
56
|
+
this.onChange(mmsis);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=buddies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buddies.js","sourceRoot":"","sources":["../src/buddies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,+BAA+B,CAAC;AAEjE,4GAA4G;AAC5G,2GAA2G;AAC3G,gHAAgH;AAChH,MAAM,OAAO,OAAO;IAOC;IACA;IACA;IACA;IATX,KAAK,GAA0B,IAAI,CAAC;IACpC,OAAO,GAAG,KAAK,CAAC;IAChB,IAAI,GAAG,EAAE,CAAC,CAAC,mEAAmE;IACtF,KAAK,GAAa,EAAE,CAAC;IAErB,YACmB,IAAY,EAAE,4DAA4D;IAC1E,QAAuB,EACvB,QAAmC,EACnC,SAAS,MAAM;QAHf,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAAe;QACvB,aAAQ,GAAR,QAAQ,CAA2B;QACnC,WAAM,GAAN,MAAM,CAAS;IAC/B,CAAC;IAEJ,KAAK;QACH,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,KAAK;YAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAGxD,CAAC;YACF,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC3B,KAAK,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,IAAI,EAAE,CAAC;oBACzC,uFAAuF;qBACtF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;qBAC/D,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC;qBAC5D,GAAG,CAAC,MAAM,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,+FAA+F;YAC/F,oGAAoG;YACpG,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO;QAC/D,CAAC;QACD,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI;YAAE,OAAO;QAC9C,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF"}
|
package/dist/downlink.d.ts
CHANGED
|
@@ -29,12 +29,19 @@ export declare class Downlink {
|
|
|
29
29
|
private subscribed;
|
|
30
30
|
private timer;
|
|
31
31
|
private targets;
|
|
32
|
+
private buddies;
|
|
33
|
+
private sentMmsi;
|
|
34
|
+
private mmsiCap;
|
|
35
|
+
private lastFrame;
|
|
36
|
+
private refusedFrame;
|
|
32
37
|
private selfMmsi;
|
|
33
38
|
stats: DownlinkStats;
|
|
34
39
|
constructor(app: ServerAPI, link: Link, opts: DownlinkOptions, log?: (msg: string) => void);
|
|
35
40
|
start(): void;
|
|
36
41
|
stop(): void;
|
|
37
42
|
localHeard(now?: number): void;
|
|
43
|
+
setBuddies(mmsis: number[]): void;
|
|
44
|
+
buddiesSeen(now?: number): number;
|
|
38
45
|
private wanted;
|
|
39
46
|
tick(now?: number): void;
|
|
40
47
|
private onFrame;
|
package/dist/downlink.js
CHANGED
|
@@ -18,6 +18,11 @@ export class Downlink {
|
|
|
18
18
|
subscribed = false;
|
|
19
19
|
timer = null;
|
|
20
20
|
targets = new Map();
|
|
21
|
+
buddies = [];
|
|
22
|
+
sentMmsi = "";
|
|
23
|
+
mmsiCap = Infinity; // from the welcome frame's limits; the server refuses a too-long list as a whole frame
|
|
24
|
+
lastFrame = ""; // last subscribe frame sent, to avoid re-sending one the server refused
|
|
25
|
+
refusedFrame = "";
|
|
21
26
|
selfMmsi;
|
|
22
27
|
stats = { targets: 0, events: 0, subscribed: false };
|
|
23
28
|
constructor(app, link, opts, log = () => { }) {
|
|
@@ -31,6 +36,7 @@ export class Downlink {
|
|
|
31
36
|
start() {
|
|
32
37
|
this.link.on("open", () => {
|
|
33
38
|
this.subscribed = false;
|
|
39
|
+
this.refusedFrame = "";
|
|
34
40
|
this.tick();
|
|
35
41
|
});
|
|
36
42
|
this.link.on("close", () => {
|
|
@@ -38,8 +44,12 @@ export class Downlink {
|
|
|
38
44
|
this.stats.subscribed = false;
|
|
39
45
|
});
|
|
40
46
|
this.link.on("error", (message) => {
|
|
41
|
-
|
|
42
|
-
|
|
47
|
+
// aiscast refuses a subscribe frame as a unit and keeps the old subscription (none). Remember the
|
|
48
|
+
// refused frame so the 10 s tick does not resend it verbatim; any change to it is tried again.
|
|
49
|
+
if (/bbox|mmsi/i.test(message)) {
|
|
50
|
+
this.subscribed = this.stats.subscribed = false;
|
|
51
|
+
this.refusedFrame = this.lastFrame;
|
|
52
|
+
}
|
|
43
53
|
});
|
|
44
54
|
this.link.on("frame", (f) => this.onFrame(f));
|
|
45
55
|
this.timer = setInterval(() => this.tick(), 10_000);
|
|
@@ -56,6 +66,22 @@ export class Downlink {
|
|
|
56
66
|
if (this.subscribed && this.opts.mode === "auto")
|
|
57
67
|
this.tick(now);
|
|
58
68
|
}
|
|
69
|
+
// Buddy MMSIs to follow wherever they are, independent of the receive mode: the point is traffic
|
|
70
|
+
// beyond local reception, so the list keeps the subscription alive even when the radius half is quiet.
|
|
71
|
+
setBuddies(mmsis) {
|
|
72
|
+
this.buddies = mmsis;
|
|
73
|
+
this.tick();
|
|
74
|
+
}
|
|
75
|
+
// How many buddies have been heard from recently.
|
|
76
|
+
buddiesSeen(now = Date.now()) {
|
|
77
|
+
let n = 0;
|
|
78
|
+
for (const m of this.buddies) {
|
|
79
|
+
const at = this.targets.get(`vessels.urn:mrn:imo:mmsi:${m}`);
|
|
80
|
+
if (at != null && now - at < TARGET_TTL)
|
|
81
|
+
n++;
|
|
82
|
+
}
|
|
83
|
+
return n;
|
|
84
|
+
}
|
|
59
85
|
wanted(now) {
|
|
60
86
|
switch (this.opts.mode) {
|
|
61
87
|
case "off":
|
|
@@ -69,32 +95,62 @@ export class Downlink {
|
|
|
69
95
|
tick(now = Date.now()) {
|
|
70
96
|
if (!this.link.open)
|
|
71
97
|
return;
|
|
72
|
-
|
|
98
|
+
const wantBox = this.wanted(now);
|
|
99
|
+
const pos = wantBox ? ownPosition(this.app) : null;
|
|
100
|
+
// Never subscribe a box without a fix: an empty bbox is the whole world. While the fix is gone, the
|
|
101
|
+
// last box stands in so a GPS dropout does not tear down the subscription.
|
|
102
|
+
const box = pos ? { lat: pos.latitude, lon: pos.longitude, radiusNm: this.opts.radiusNm } : wantBox ? this.box : null;
|
|
103
|
+
// Over the cap, the server would refuse the whole frame, bbox included: follow what fits instead.
|
|
104
|
+
const mmsi = this.buddies.length > this.mmsiCap ? this.buddies.slice(0, this.mmsiCap) : this.buddies;
|
|
105
|
+
if (!box && mmsi.length === 0) {
|
|
73
106
|
if (this.subscribed && this.link.send({ type: "unsubscribe" })) {
|
|
74
107
|
this.subscribed = false;
|
|
75
108
|
this.stats.subscribed = false;
|
|
109
|
+
this.box = null;
|
|
110
|
+
this.sentMmsi = "";
|
|
76
111
|
this.log("unsubscribed");
|
|
77
112
|
}
|
|
78
113
|
return;
|
|
79
114
|
}
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
: true;
|
|
87
|
-
if (this.subscribed && !moved)
|
|
115
|
+
const boxChanged = box !== this.box &&
|
|
116
|
+
(!box ||
|
|
117
|
+
!this.box ||
|
|
118
|
+
distanceNm(box.lat, box.lon, this.box.lat, this.box.lon) > this.box.radiusNm * RESUBSCRIBE_FRACTION ||
|
|
119
|
+
this.box.radiusNm !== box.radiusNm);
|
|
120
|
+
if (this.subscribed && !boxChanged && mmsi.join() === this.sentMmsi)
|
|
88
121
|
return;
|
|
89
|
-
|
|
90
|
-
|
|
122
|
+
// snapshot: the server replays its cache for the new coverage, so targets appear at connect
|
|
123
|
+
// instead of one by one as they next transmit (a moored class B is minutes between reports).
|
|
124
|
+
const frame = { type: "subscribe", snapshot: true };
|
|
125
|
+
if (box)
|
|
126
|
+
frame.bbox = [bbox(box)];
|
|
127
|
+
if (mmsi.length > 0)
|
|
128
|
+
frame.mmsi = mmsi;
|
|
129
|
+
const encoded = JSON.stringify(frame);
|
|
130
|
+
if (encoded === this.refusedFrame)
|
|
131
|
+
return;
|
|
132
|
+
this.lastFrame = encoded;
|
|
133
|
+
if (this.link.send(frame)) {
|
|
91
134
|
this.box = box;
|
|
135
|
+
this.sentMmsi = mmsi.join();
|
|
92
136
|
this.subscribed = true;
|
|
93
137
|
this.stats.subscribed = true;
|
|
94
|
-
|
|
138
|
+
const parts = [
|
|
139
|
+
box && `${box.radiusNm} nm around ${box.lat.toFixed(3)},${box.lon.toFixed(3)}`,
|
|
140
|
+
mmsi.length > 0 && `${mmsi.length} buddies`,
|
|
141
|
+
];
|
|
142
|
+
this.log(`subscribed ${parts.filter(Boolean).join(" + ")}`);
|
|
95
143
|
}
|
|
96
144
|
}
|
|
97
145
|
onFrame(f) {
|
|
146
|
+
if (f.type === "welcome") {
|
|
147
|
+
const cap = f.limits?.mmsis;
|
|
148
|
+
if (typeof cap === "number" && cap !== this.mmsiCap) {
|
|
149
|
+
this.mmsiCap = cap;
|
|
150
|
+
this.tick(); // a tighter cap trims the list; a looser one restores it
|
|
151
|
+
}
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
98
154
|
if (f.type !== "event")
|
|
99
155
|
return;
|
|
100
156
|
const ev = f;
|
package/dist/downlink.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downlink.js","sourceRoot":"","sources":["../src/downlink.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"downlink.js","sourceRoot":"","sources":["../src/downlink.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { Buddies, BUDDYLIST_OPTIONS } from "./buddies.js";
|
|
1
3
|
import { Downlink } from "./downlink.js";
|
|
2
4
|
import { forgetToken, loadIdentity, loadToken, } from "./identity.js";
|
|
3
5
|
import { Link } from "./link.js";
|
|
@@ -21,6 +23,7 @@ export default function (app) {
|
|
|
21
23
|
description: "Show nearby traffic without an AIS receiver and share your AIS data with the world.",
|
|
22
24
|
schema: {
|
|
23
25
|
type: "object",
|
|
26
|
+
description: "By enabling this plugin, you agree to the Open Waters AIS Contributor Agreement (https://github.com/openwatersio/aiscast/blob/main/docs/contributor-agreement.md): the AIS data you share is dedicated to the public domain.",
|
|
24
27
|
properties: {
|
|
25
28
|
share: {
|
|
26
29
|
type: "object",
|
|
@@ -188,6 +191,9 @@ export default function (app) {
|
|
|
188
191
|
selfSource,
|
|
189
192
|
onReceived: (s) => up.noteReceived(s),
|
|
190
193
|
}, log);
|
|
194
|
+
// The data dir is <config>/plugin-config-data/<id>; the buddylist plugin's options file is a sibling.
|
|
195
|
+
const selfMmsi = app.getSelfPath("mmsi");
|
|
196
|
+
const buddies = new Buddies(join(dir, "..", BUDDYLIST_OPTIONS), selfMmsi == null ? null : String(selfMmsi), (mmsis) => down.setBuddies(mmsis));
|
|
191
197
|
const canShare = () => token !== null && !publishRefused && (shareTargets || shareOwn || sharePosition);
|
|
192
198
|
up.enabled = canShare();
|
|
193
199
|
l.on("open", () => {
|
|
@@ -220,6 +226,9 @@ export default function (app) {
|
|
|
220
226
|
else if (/bbox/.test(message)) {
|
|
221
227
|
reportError(`aiscast refused the subscription: ${message} (reduce the radius)`);
|
|
222
228
|
}
|
|
229
|
+
else if (/mmsi/.test(message)) {
|
|
230
|
+
reportError(`aiscast refused the buddy list: ${message} (trim the buddy list)`);
|
|
231
|
+
}
|
|
223
232
|
else {
|
|
224
233
|
log(`aiscast: ${message}`);
|
|
225
234
|
}
|
|
@@ -230,6 +239,7 @@ export default function (app) {
|
|
|
230
239
|
return;
|
|
231
240
|
}
|
|
232
241
|
down.start();
|
|
242
|
+
buddies.start();
|
|
233
243
|
l.start();
|
|
234
244
|
if (sharePosition)
|
|
235
245
|
own.start();
|
|
@@ -268,6 +278,8 @@ export default function (app) {
|
|
|
268
278
|
refreshToken()
|
|
269
279
|
.catch((err) => log(`token refresh: ${describe(err)}`))
|
|
270
280
|
.then(() => {
|
|
281
|
+
if (!live())
|
|
282
|
+
return; // stop() landed mid-refresh; do not resurrect the timer
|
|
271
283
|
up.enabled = canShare();
|
|
272
284
|
if (token?.token !== before)
|
|
273
285
|
l.reconnect();
|
|
@@ -295,17 +307,20 @@ export default function (app) {
|
|
|
295
307
|
const upText = up.enabled
|
|
296
308
|
? `↑ ${perMin}/min (queue ${up.stats.queued})`
|
|
297
309
|
: "↑ off";
|
|
298
|
-
const downText =
|
|
299
|
-
?
|
|
300
|
-
:
|
|
301
|
-
?
|
|
310
|
+
const downText = down.stats.subscribed
|
|
311
|
+
? `↓ ${down.stats.targets} targets`
|
|
312
|
+
: mode === "off"
|
|
313
|
+
? "↓ off"
|
|
302
314
|
: "↓ idle";
|
|
315
|
+
const buddyText = buddies.mmsis.length > 0
|
|
316
|
+
? ` buddies ${down.buddiesSeen()}/${buddies.mmsis.length}`
|
|
317
|
+
: "";
|
|
303
318
|
const linkText = l.open
|
|
304
319
|
? "connected"
|
|
305
320
|
: l.lastRefusal
|
|
306
321
|
? `refused: ${l.lastRefusal}`
|
|
307
322
|
: "reconnecting";
|
|
308
|
-
app.setPluginStatus(`key ${key}… ${upText} ${downText} ${linkText}`);
|
|
323
|
+
app.setPluginStatus(`key ${key}… ${upText} ${downText}${buddyText} ${linkText}`);
|
|
309
324
|
}, STATUS_EVERY),
|
|
310
325
|
];
|
|
311
326
|
teardown = async () => {
|
|
@@ -316,6 +331,7 @@ export default function (app) {
|
|
|
316
331
|
events.removeListener("nmea0183", onNmea);
|
|
317
332
|
events.removeListener("N2KAnalyzerOut", onN2k);
|
|
318
333
|
own.stop();
|
|
334
|
+
buddies.stop();
|
|
319
335
|
down.stop();
|
|
320
336
|
await up.stop();
|
|
321
337
|
l.stop();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAoB,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,YAAY,EACZ,SAAS,GAEV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,MAAM,SAAS,GAAG,iBAAiB,CAAC;AAC3C,MAAM,cAAc,GAAG,2BAA2B,CAAC;AACnD,MAAM,YAAY,GAAG,KAAK,CAAC;AAC3B,MAAM,iBAAiB,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,+CAA+C;AACvF,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,iFAAiF;AACjH,MAAM,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC;AAWpC,MAAM,CAAC,OAAO,WAAW,GAAc;IACrC,MAAM,MAAM,GAAG,GAA8B,CAAC;IAC9C,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,yEAAyE;IAC7F,IAAI,QAAQ,GAAiC,IAAI,CAAC;IAElD,MAAM,MAAM,GAAW;QACrB,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,WAAW,EACT,qFAAqF;QACvF,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,OAAO;oBACd,UAAU,EAAE;wBACV,OAAO,EAAE;4BACP,IAAI,EAAE,SAAS;4BACf,KAAK,EAAE,6BAA6B;4BACpC,OAAO,EAAE,IAAI;yBACd;wBACD,OAAO,EAAE;4BACP,IAAI,EAAE,SAAS;4BACf,KAAK,EAAE,0CAA0C;4BACjD,OAAO,EAAE,IAAI;yBACd;wBACD,QAAQ,EAAE;4BACR,IAAI,EAAE,SAAS;4BACf,KAAK,EAAE,wCAAwC;4BAC/C,OAAO,EAAE,IAAI;yBACd;qBACF;iBACF;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,SAAS;oBAChB,UAAU,EAAE;wBACV,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,2BAA2B;4BAClC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;4BAC/B,SAAS,EAAE;gCACT,KAAK;gCACL,yCAAyC;gCACzC,0CAA0C;6BAC3C;4BACD,OAAO,EAAE,MAAM;yBAChB;wBACD,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,2CAA2C;4BAClD,OAAO,EAAE,EAAE;4BACX,OAAO,EAAE,CAAC;4BACV,OAAO,EAAE,GAAG;yBACb;qBACF;iBACF;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,UAAU;oBACjB,UAAU,EAAE;wBACV,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,QAAQ;4BACf,OAAO,EAAE,cAAc;yBACxB;wBACD,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,yBAAyB;4BAChC,WAAW,EACT,0LAA0L;yBAC7L;qBACF;iBACF;aACF;SACF;QACD,qEAAqE;QACrE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;YACf,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC;YAC5C,KAAK,EAAE;gBACL,sFAAsF;gBACtF,OAAO,EAAE;oBACP,SAAS,EACP,qEAAqE;iBACxE;gBACD,OAAO,EAAE;oBACP,SAAS,EACP,2EAA2E;iBAC9E;gBACD,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;oBAC/B,CAAC,CAAC;wBACE,SAAS,EACP,mHAAmH;qBACtH;oBACH,CAAC,CAAC;wBACE,aAAa,EAAE,IAAI;wBACnB,SAAS,EAAE,mCAAmC;qBAC/C;aACN;YACD,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;YAC3C,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;SACjD,CAAC;QAEF,KAAK,CAAC,MAAc;YAClB,MAAM,GAAG,GAAG,EAAE,UAAU,CAAC;YACzB,UAAU,CAAC,MAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9C,GAAG,CAAC,cAAc,CAAC,iBAAkB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,IAAI;YACR,UAAU,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,QAAQ,CAAC;YACnB,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,CAAC;KACF,CAAC;IAEF,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,GAAW;QACnD,MAAM,MAAM,GAAG,CACb,MAAM,CAAC,QAAQ,EAAE,MAAM;YACvB,MAAM,CAAC,MAAM;YACb,cAAc,CACf,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACtB,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC;QAC/C,uGAAuG;QACvG,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,KAAK,CAAC;QACtD,IAAI,aAAa,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;QACzI,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5E,MAAM,GAAG,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,KAAK,UAAU,CAAC;QAEtC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO;QACpB,IAAI,KAAK,GAAiB,IAAI,CAAC;QAC/B,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,0FAA0F;QAClH,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE;YAClC,UAAU,GAAG,IAAI,CAAC;YAClB,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,GAAG,EAAE;YACtB,IAAI,CAAC,UAAU;gBAAE,OAAO;YACxB,UAAU,GAAG,KAAK,CAAC;YACnB,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,wDAAwD;QACnF,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,cAAc,QAAQ,CAAC,MAAM,EAAE,CAAC;QACnD,MAAM,YAAY,GAAG,KAAK,IAAmB,EAAE;YAC7C,IAAI,eAAe,EAAE,CAAC;gBACpB,KAAK,GAAG;oBACN,KAAK,EAAE,eAAe;oBACtB,GAAG,EAAE,QAAQ;oBACb,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,MAAM;iBACP,CAAC;gBACF,OAAO;YACT,CAAC;YACD,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtD,UAAU,EAAE,CAAC;YACf,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,GAAG,IAAI,CAAC;gBACb,WAAW,CACT,aAAa,QAAQ,CAAC,GAAG,CAAC,gDAAgD,CAC3E,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QACF,MAAM,YAAY,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO;QAEpB,4EAA4E;QAC5E,MAAM,CAAC,GAAG,IAAI,IAAI,CAChB,GAAG,EAAE,CAAC,GAAG,MAAM,YAAY,EAC3B,GAA2B,EAAE,CAC3B,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EACzD,GAAG,CACJ,CAAC;QACF,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,IAAI,QAAQ,CACvB,GAAG,EACH,CAAC,EACD;YACE,IAAI;YACJ,QAAQ;YACR,MAAM,EAAE,GAAG,SAAS,MAAM;YAC1B,UAAU;YACV,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;SACtC,EACD,GAAG,CACJ,CAAC;QACF,MAAM,QAAQ,GAAG,GAAG,EAAE,CACpB,KAAK,KAAK,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,IAAI,QAAQ,IAAI,aAAa,CAAC,CAAC;QACnF,EAAE,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC;QAExB,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YAChB,IAAI,cAAc;gBAAE,UAAU,EAAE,CAAC;YACjC,cAAc,GAAG,KAAK,CAAC;YACvB,EAAE,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;YACxB,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvD,WAAW,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAC;gBACrD,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,OAAO,GAAG,KAAK,EAAE,KAAK,CAAC;oBAC7B,wFAAwF;oBACxF,WAAW,CAAC,GAAG,CAAC;yBACb,IAAI,CAAC,YAAY,CAAC;yBAClB,IAAI,CAAC,GAAG,EAAE;wBACT,EAAE,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC;wBACxB,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO;4BAAE,CAAC,CAAC,SAAS,EAAE,CAAC;oBACtD,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAmB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;iBAAM,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,cAAc,GAAG,IAAI,CAAC;gBACtB,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC;gBACnB,WAAW,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,WAAW,CACT,qCAAqC,OAAO,sBAAsB,CACnE,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,CAAC,CAAC,KAAK,EAAE,CAAC;QACV,IAAI,aAAa;YAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QAE/B,MAAM,UAAU,GAAG,CAAC,QAAiB,EAAE,MAAe,EAAE,EAAE;YACxD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAAE,OAAO;YAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,KAAK;gBAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;gBACrB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;gBAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACtE,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,CAAC,QAAiB,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,CAAC,GAAY,EAAE,EAAE;YAC7B,MAAM,CAAC,GAAG,GAEG,CAAC;YACd,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;gBAAE,OAAO;YAC5C,IAAI,CAAC;gBACH,UAAU,CACR,aAAa,CACX,GAAG,EACH,CAAsD,CACvD,EACD,KAAK,CACN,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAEnC,8EAA8E;QAC9E,IAAI,UAAU,GAA0B,IAAI,CAAC;QAC7C,IAAI,UAAU,GAAG,eAAe,CAAC;QACjC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,EAAE;YAC3C,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC3B,MAAM,MAAM,GAAG,KAAK,EAAE,KAAK,CAAC;gBAC5B,YAAY,EAAE;qBACX,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;qBACtD,IAAI,CAAC,GAAG,EAAE;oBACT,EAAE,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC;oBACxB,IAAI,KAAK,EAAE,KAAK,KAAK,MAAM;wBAAE,CAAC,CAAC,SAAS,EAAE,CAAC;oBAC3C,IAAI,KAAK,EAAE,CAAC;wBACV,UAAU,GAAG,eAAe,CAAC;wBAC7B,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;oBACxC,CAAC;yBAAM,CAAC;wBACN,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;wBACvD,kBAAkB,CAAC,UAAU,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC,CAAC,CAAC;YACP,CAAC,EAAE,KAAK,CAAC,CAAC;QACZ,CAAC,CAAC;QACF,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAEhE,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG;YACb,WAAW,CAAC,GAAG,EAAE;gBACf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,CACvD,CAAC;gBACF,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;gBACzB,MAAM,GAAG,GAAG,CAAC;gBACb,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO;oBACvB,CAAC,CAAC,KAAK,MAAM,eAAe,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG;oBAC9C,CAAC,CAAC,OAAO,CAAC;gBACZ,MAAM,QAAQ,GACZ,IAAI,KAAK,KAAK;oBACZ,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU;wBACrB,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,UAAU;wBACnC,CAAC,CAAC,QAAQ,CAAC;gBACjB,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI;oBACrB,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,CAAC,CAAC,WAAW;wBACb,CAAC,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;wBAC7B,CAAC,CAAC,cAAc,CAAC;gBACrB,GAAG,CAAC,eAAe,CAAC,OAAO,GAAG,MAAM,MAAM,KAAK,QAAQ,KAAK,QAAQ,EAAE,CAAC,CAAC;YAC1E,CAAC,EAAE,YAAY,CAAC;SACjB,CAAC;QAEF,QAAQ,GAAG,KAAK,IAAI,EAAE;YACpB,KAAK,MAAM,CAAC,IAAI,MAAM;gBAAE,aAAa,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,UAAU;gBAAE,YAAY,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC1C,MAAM,CAAC,cAAc,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YAC/C,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,CAAC,CAAC;QACF,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,QAAQ,CAAC;YACnB,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM,CAAC,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kGAAkG;AAClG,SAAS,QAAQ,CAAC,GAAY;IAC5B,MAAM,CAAC,GAAG,GAGT,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC;IAChD,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACxE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/n2k.js
CHANGED
|
@@ -8,7 +8,10 @@ export function n2kToSentence(app, msg) {
|
|
|
8
8
|
return null;
|
|
9
9
|
const pgn = convertNamesToCamel(app, msg);
|
|
10
10
|
const f = pgn.fields ?? {};
|
|
11
|
-
|
|
11
|
+
// A transmitting transponder stamps its own position "Channel A/B VDL transmission", not
|
|
12
|
+
// "Own information not broadcast" (that's silent/receive-only mode), so match by MMSI too.
|
|
13
|
+
const own = f.aisTransceiverInformation === AisTransceiver.OwnInformationNotBroadcast ||
|
|
14
|
+
(f.userId !== undefined && f.userId === Number(app.getSelfPath("mmsi")));
|
|
12
15
|
let enc = null;
|
|
13
16
|
switch (msg.pgn) {
|
|
14
17
|
case 129038: // class A position
|
package/dist/n2k.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"n2k.js","sourceRoot":"","sources":["../src/n2k.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,KAAK,GACN,MAAM,kBAAkB,CAAC;AAC1B,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC,wCAAwC;AAEzE,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAMlF,gHAAgH;AAChH,MAAM,UAAU,aAAa,CAAC,GAAc,EAAE,GAAqC;IACjF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,GAAG,GAAG,mBAAmB,CAAC,GAAG,EAAE,GAAY,CAAuB,CAAC;IACzE,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;IAC3B,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"n2k.js","sourceRoot":"","sources":["../src/n2k.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED