@sailingnaturali/signalk-dsc 0.3.0 → 0.3.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.
Files changed (3) hide show
  1. package/README.md +30 -0
  2. package/index.js +3 -1
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -154,6 +154,8 @@ SIGNALK_TOKEN=<readwrite-token> npm run clear-dsc -- --category distress
154
154
 
155
155
  `--category all` clears all three. Clearing is a write, so it needs a readwrite token
156
156
  (the same one used to fire a test MOB). A new incoming call still alarms normally.
157
+ This clears the `self`-context alarm; the transient per-caller notification raised under
158
+ the sender's vessel context is not persisted or re-raised, so it is left untouched.
157
159
 
158
160
  ## Limitations
159
161
 
@@ -164,6 +166,34 @@ SIGNALK_TOKEN=<readwrite-token> npm run clear-dsc -- --category distress
164
166
  - A raised distress notification stays active until cleared from the server —
165
167
  deliberate: a received MAYDAY should not silently expire.
166
168
 
169
+ ## Future work
170
+
171
+ This plugin is **receive-only**: it reads, logs, and alarms on DSC calls a radio
172
+ puts on the bus, and never transmits. The obvious next capability is the *write*
173
+ path — initiating a DSC call from SignalK, e.g. relaying a MAYDAY or sending a
174
+ distress/MOB alert *to* the radio to broadcast.
175
+
176
+ The blocker is hardware, not software. Almost no marine VHF exposes an interface
177
+ to be **commanded to transmit** a DSC call:
178
+
179
+ - NMEA 0183 radios take a GPS position *in* and emit received calls *out*, but
180
+ there's no standard sentence to initiate a transmission.
181
+ - On NMEA 2000, PGN 129808 carries received call info; there's no
182
+ widely-implemented PGN to command a transmit. Where "send distress from the
183
+ chartplotter" exists at all, it's proprietary same-vendor MFD↔radio
184
+ integration, not an open standard a third-party plugin can drive.
185
+
186
+ The closest exception we've found is Icom's networked VHFs — the **M510 EVO** and
187
+ **M605** — which expose external/remote DSC initiation, where most radios only
188
+ let you initiate a DSC call on the radio itself. That makes them the realistic
189
+ target for a transmit path.
190
+
191
+ So a SignalK-driven relay is gated on a radio that actually supports external DSC
192
+ transmission — still rare — plus the care that initiating a distress demands (it
193
+ broadcasts on behalf of a real, licensed MMSI). Until such hardware is common
194
+ this stays out of scope and the plugin remains a passive receiver. If you have a
195
+ radio that exposes a transmit interface, open an issue.
196
+
167
197
  ## License
168
198
 
169
199
  MIT
package/index.js CHANGED
@@ -205,7 +205,9 @@ module.exports = function makePlugin(app) {
205
205
  if (event.mmsi && event.mmsi === selfMmsi()) event.self = true;
206
206
 
207
207
  // Re-transmission of the same call (distress alerts auto-repeat until
208
- // acknowledged): bump the stored call, do not re-alarm.
208
+ // acknowledged): bump the stored call, do not re-alarm. This matches on
209
+ // mmsi+category+nature and ignores `clearedAt`, so an operator-cleared call
210
+ // that keeps repeating stays silent — a cleared MAYDAY should not re-nag.
209
211
  const duplicate = store.findRecent(
210
212
  (e) =>
211
213
  e.mmsi === event.mmsi &&
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sailingnaturali/signalk-dsc",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Receive, log, and alert on DSC (VHF digital selective calling) calls — distress, urgency, safety, routine — from NMEA 0183 ($CDDSC/$CDDSE) and NMEA 2000 (PGN 129808).",
5
5
  "main": "index.js",
6
6
  "scripts": {