ngx-kel-agent 0.4.9 → 0.5.2

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.
@@ -1,237 +1,162 @@
1
+ import { Subject, BehaviorSubject, ReplaySubject } from 'rxjs';
1
2
  import * as i0 from '@angular/core';
2
3
  import { Injectable } from '@angular/core';
3
- import { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';
4
4
  import { debounceTime, retryWhen, tap, delay } from 'rxjs/operators';
5
5
  import { webSocket } from 'rxjs/webSocket';
6
6
 
7
- class AgentService {
7
+ class AgentMessageService {
8
8
  constructor() {
9
- /** Whether we're connected to the agent. */
10
- this.connectedState$ = new BehaviorSubject(false);
11
- /* WSJT-X */
9
+ this.rxMessage$ = new Subject();
10
+ this.txMessage$ = new Subject();
11
+ }
12
+ }
13
+ AgentMessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AgentMessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
14
+ AgentMessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AgentMessageService, providedIn: 'root' });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AgentMessageService, decorators: [{
16
+ type: Injectable,
17
+ args: [{
18
+ providedIn: 'root',
19
+ }]
20
+ }], ctorParameters: function () { return []; } });
21
+
22
+ class WsjtxService {
23
+ constructor(messages) {
24
+ this.messages = messages;
12
25
  /** Whether we're getting any messages from WSJT-X. */
13
- this.wsjtxState$ = new BehaviorSubject(false);
26
+ this.connected$ = new BehaviorSubject(false);
14
27
  /** Subject for listening to WSJT-X "Heartbeat" messages. */
15
- this.wsjtxHeartbeat$ = new ReplaySubject(1);
28
+ this.heartbeat$ = new ReplaySubject(1);
16
29
  /** Subject for listening to WSJT-X "Status" messages. */
17
- this.wsjtxStatus$ = new ReplaySubject(1);
30
+ this.status$ = new ReplaySubject(1);
18
31
  /** Subject for listening to WSJT-X "Decode" messages. */
19
- this.wsjtxDecode$ = new Subject();
32
+ this.decode$ = new Subject();
20
33
  /** Subject for listening to WSJT-X "Clear" messages. */
21
- this.wsjtxClear$ = new Subject();
34
+ this.clear$ = new Subject();
22
35
  /** Subject for listening to WSJT-X "QsoLogged" messages. */
23
- this.wsjtxQsoLogged$ = new Subject();
36
+ this.qsoLogged$ = new Subject();
24
37
  /** Subject for listening to WSJT-X "Close" messages. */
25
- this.wsjtxClose$ = new Subject();
38
+ this.close$ = new Subject();
26
39
  /** Subject for listening to WSJT-X "WsprDecode" messages. */
27
- this.wsjtxWsprDecode$ = new Subject();
40
+ this.wsprDecode$ = new Subject();
28
41
  /** Subject for listening to WSJT-X "LoggedAdif" messages. */
29
- this.wsjtxLoggedAdif$ = new Subject();
30
- /* Hamlib */
31
- /** Whether we're getting any messages from Hamlib. */
32
- this.hamlibState$ = new BehaviorSubject(false);
33
- /** Subject for listening to Hamlib "RigState" messages. */
34
- this.hamlibRigState$ = new BehaviorSubject(null);
35
- this.defaultAgentHost = 'localhost';
36
- this.defaultAgentPort = 8081;
37
- this.localStorageHostKey = 'agent-host';
38
- this.localStoragePortKey = 'agent-port';
39
- this.agentHost = this.defaultAgentHost;
40
- this.agentPort = this.defaultAgentPort;
41
- this.agentWebSocketSubject = null;
42
- this.agentWebsocketSubscription = null;
42
+ this.loggedAdif$ = new Subject();
43
43
  this.wsjtxId = 'WSJT-X';
44
+ this.setupBehaviors();
44
45
  }
45
- init() {
46
- this.agentHost = this.getHost();
47
- this.agentPort = this.getPort();
48
- this.setupWsjtxBehaviors();
49
- this.setupHamlibBehaviors();
50
- this.connect();
51
- }
52
- setupWsjtxBehaviors() {
46
+ setupBehaviors() {
47
+ this.messages.rxMessage$.subscribe((msg) => this.handleMessage(msg));
53
48
  // if we haven't heard from WSJT-X in 15 seconds, consider it "down"
54
- this.wsjtxState$
49
+ this.connected$
55
50
  .pipe(debounceTime(15000))
56
- .subscribe(() => this.wsjtxState$.next(false));
51
+ .subscribe(() => this.connected$.next(false));
57
52
  // When WSJT-X announces it's closing, set it to "down" immediately
58
- this.wsjtxClose$.subscribe(() => {
59
- this.wsjtxState$.next(false);
53
+ this.close$.subscribe(() => {
54
+ this.connected$.next(false);
60
55
  });
61
56
  // When WSJT-X goes down, clear its persistent message subjects
62
- this.wsjtxState$.subscribe((isUp) => {
63
- if (!isUp) {
64
- this.wsjtxHeartbeat$.next(null);
65
- this.wsjtxStatus$.next(null);
66
- }
67
- });
68
- }
69
- setupHamlibBehaviors() {
70
- // if we haven't heard from Hamlib in 15 seconds, consider it down
71
- this.hamlibState$.pipe(debounceTime(15000)).subscribe(() => {
72
- this.hamlibState$.next(false);
73
- });
74
- // When Hamlib goes down, clear its persistent message subjects
75
- this.hamlibState$.subscribe((isUp) => {
57
+ this.connected$.subscribe((isUp) => {
76
58
  if (!isUp) {
77
- this.hamlibRigState$.next(null);
59
+ this.heartbeat$.next(null);
60
+ this.status$.next(null);
78
61
  }
79
62
  });
80
63
  }
81
- /** Connect (or reconnect) the websocket to the kel-agent server. */
82
- connect() {
83
- if (this.agentWebsocketSubscription) {
84
- this.agentWebsocketSubscription.unsubscribe();
85
- }
86
- this.agentHost = this.getHost();
87
- this.agentPort = this.getPort();
88
- const protocol = this.agentHost === 'localhost' ? 'ws://' : 'wss://';
89
- this.agentWebSocketSubject = webSocket({
90
- url: protocol + this.agentHost + ':' + this.agentPort + '/websocket',
91
- });
92
- this.connectedState$.next(true);
93
- this.agentWebsocketSubscription = this.agentWebSocketSubject
94
- .pipe(retryWhen((errors) =>
95
- // retry the websocket connection after 10 seconds
96
- errors.pipe(tap(() => this.connectedState$.next(false)), delay(10000))))
97
- .subscribe({
98
- next: (msg) => {
99
- this.connectedState$.next(true);
100
- this.handleMessage(msg);
101
- },
102
- error: () => this.connectedState$.next(false),
103
- complete: () => this.connectedState$.next(false),
104
- });
105
- }
106
64
  handleMessage(msg) {
107
- if (msg.wsjtx != null && msg.wsjtx.type != null) {
108
- this.wsjtxState$.next(true);
109
- this.wsjtxId = msg.wsjtx.payload.id;
110
- switch (msg.wsjtx.type) {
111
- case 'HeartbeatMessage':
112
- this.wsjtxHeartbeat$.next(msg.wsjtx.payload);
113
- return;
114
- case 'StatusMessage':
115
- this.wsjtxStatus$.next(msg.wsjtx.payload);
116
- return;
117
- case 'DecodeMessage':
118
- this.wsjtxDecode$.next(msg.wsjtx.payload);
119
- return;
120
- case 'ClearMessage':
121
- this.wsjtxClear$.next(msg.wsjtx.payload);
122
- return;
123
- case 'QsoLoggedMessage':
124
- this.wsjtxQsoLogged$.next(msg.wsjtx.payload);
125
- return;
126
- case 'CloseMessage':
127
- this.wsjtxClose$.next(msg.wsjtx.payload);
128
- return;
129
- case 'WSPRDecodeMessage':
130
- this.wsjtxWsprDecode$.next(msg.wsjtx.payload);
131
- return;
132
- case 'LoggedAdifMessage':
133
- this.wsjtxLoggedAdif$.next(msg.wsjtx.payload);
134
- return;
135
- }
65
+ if (!msg.wsjtx) {
66
+ return;
136
67
  }
137
- if (msg.hamlib !== null) {
138
- this.hamlibState$.next(true);
139
- switch (msg.hamlib.type) {
140
- case 'RigState':
141
- this.hamlibRigState$.next(msg.hamlib.payload);
142
- return;
143
- }
68
+ this.connected$.next(true);
69
+ this.wsjtxId = msg.wsjtx.payload.id;
70
+ switch (msg.wsjtx.type) {
71
+ case 'HeartbeatMessage':
72
+ this.heartbeat$.next(msg.wsjtx.payload);
73
+ return;
74
+ case 'StatusMessage':
75
+ this.status$.next(msg.wsjtx.payload);
76
+ return;
77
+ case 'DecodeMessage':
78
+ this.decode$.next(msg.wsjtx.payload);
79
+ return;
80
+ case 'ClearMessage':
81
+ this.clear$.next(msg.wsjtx.payload);
82
+ return;
83
+ case 'QsoLoggedMessage':
84
+ this.qsoLogged$.next(msg.wsjtx.payload);
85
+ return;
86
+ case 'CloseMessage':
87
+ this.close$.next(msg.wsjtx.payload);
88
+ return;
89
+ case 'WSPRDecodeMessage':
90
+ this.wsprDecode$.next(msg.wsjtx.payload);
91
+ return;
92
+ case 'LoggedAdifMessage':
93
+ this.loggedAdif$.next(msg.wsjtx.payload);
94
+ return;
144
95
  }
145
96
  }
146
- /** Get the currently configured kel-agent host. */
147
- getHost() {
148
- return localStorage.getItem(this.localStorageHostKey) || this.defaultAgentHost;
149
- }
150
- /** Get the currently configured kel-agent port. */
151
- getPort() {
152
- let portStr = localStorage.getItem(this.localStoragePortKey);
153
- if (portStr == null) {
154
- return this.defaultAgentPort;
155
- }
156
- let portNum = parseInt(portStr, 10);
157
- if (isNaN(portNum)) {
158
- return this.defaultAgentPort;
159
- }
160
- return portNum;
161
- }
162
- /** Set the kel-agent host. */
163
- setHost(host) {
164
- localStorage.setItem(this.localStorageHostKey, host);
165
- this.connect();
166
- }
167
- /** Set the kel-agent port. */
168
- setPort(port) {
169
- localStorage.setItem(this.localStoragePortKey, String(port));
170
- this.connect();
171
- }
172
97
  /** Send a command to WSJT-X to clear the Band Activity window. */
173
- sendWsjtxClearBandActivity() {
98
+ clearBandActivity() {
174
99
  const wsMsg = {
175
100
  wsjtx: {
176
101
  type: 'ClearMessage',
177
102
  payload: { id: this.wsjtxId, window: 0 },
178
103
  },
179
104
  };
180
- this.agentWebSocketSubject?.next(wsMsg);
105
+ this.messages.txMessage$.next(wsMsg);
181
106
  }
182
107
  /** Send a command to WSJT-X to clear the Rx Frequency window. */
183
- sendWsjtxClearRxFreqWindow() {
108
+ clearRxFreqWindow() {
184
109
  const wsMsg = {
185
110
  wsjtx: {
186
111
  type: 'ClearMessage',
187
112
  payload: { id: this.wsjtxId, window: 1 },
188
113
  },
189
114
  };
190
- this.agentWebSocketSubject?.next(wsMsg);
115
+ this.messages.txMessage$.next(wsMsg);
191
116
  }
192
117
  /** Send a command to WSJT-X to clear the Band Activity and Rx Frequency windows. */
193
- sendWsjtxClearAll() {
118
+ clearAll() {
194
119
  const wsMsg = {
195
120
  wsjtx: {
196
121
  type: 'ClearMessage',
197
122
  payload: { id: this.wsjtxId, window: 2 },
198
123
  },
199
124
  };
200
- this.agentWebSocketSubject?.next(wsMsg);
125
+ this.messages.txMessage$.next(wsMsg);
201
126
  }
202
127
  /** Send a command to WSJT-X to replay messages. Useful for a fresh client that wants to hear
203
128
  * previous WSJT-X decodes. */
204
- sendWsjtxReplay() {
129
+ replay() {
205
130
  const wsMsg = {
206
131
  wsjtx: {
207
132
  type: 'ReplayMessage',
208
133
  payload: { id: this.wsjtxId },
209
134
  },
210
135
  };
211
- this.agentWebSocketSubject?.next(wsMsg);
136
+ this.messages.txMessage$.next(wsMsg);
212
137
  }
213
138
  /** Send a command to WSJT-X to halt any transmissions immediately. */
214
- sendWsjtxHaltTxNow() {
139
+ haltTxNow() {
215
140
  const wsMsg = {
216
141
  wsjtx: {
217
142
  type: 'HaltTxMessage',
218
143
  payload: { id: this.wsjtxId, autoTxOnly: false },
219
144
  },
220
145
  };
221
- this.agentWebSocketSubject?.next(wsMsg);
146
+ this.messages.txMessage$.next(wsMsg);
222
147
  }
223
148
  /** Send a command to WSJT-X to stop auto-transmitting after finishing the current round. */
224
- sendWsjtxHaltTxAfterCurrent() {
149
+ haltTxAfterCurrent() {
225
150
  const wsMsg = {
226
151
  wsjtx: {
227
152
  type: 'HaltTxMessage',
228
153
  payload: { id: this.wsjtxId, autoTxOnly: true },
229
154
  },
230
155
  };
231
- this.agentWebSocketSubject?.next(wsMsg);
156
+ this.messages.txMessage$.next(wsMsg);
232
157
  }
233
158
  /** Send a command to WSJT-X to reply to the given decode. The message must include CQ or QRZ. */
234
- sendWsjtxReply(decode) {
159
+ reply(decode) {
235
160
  const wsMsg = {
236
161
  wsjtx: {
237
162
  type: 'ReplyMessage',
@@ -247,7 +172,69 @@ class AgentService {
247
172
  },
248
173
  },
249
174
  };
250
- this.agentWebSocketSubject?.next(wsMsg);
175
+ this.messages.txMessage$.next(wsMsg);
176
+ }
177
+ /** Send a command to WSJT-X to reply to the given decode. The message must include CQ or QRZ. */
178
+ highlightCallsign(highlightMsg) {
179
+ highlightMsg.id = this.wsjtxId;
180
+ const wsMsg = {
181
+ wsjtx: {
182
+ type: 'HighlightCallsignMessage',
183
+ payload: highlightMsg,
184
+ },
185
+ };
186
+ this.messages.txMessage$.next(wsMsg);
187
+ }
188
+ /**
189
+ * Send a command to WSJT-X to transmit the given free text. If the text is too long to be
190
+ * encoded in a single message, it may be silently truncated. */
191
+ sendFreeText(freeText) {
192
+ freeText.id = this.wsjtxId;
193
+ const wsMsg = {
194
+ wsjtx: {
195
+ type: 'FreeTextMessage',
196
+ payload: freeText,
197
+ },
198
+ };
199
+ this.messages.txMessage$.next(wsMsg);
200
+ }
201
+ /** Send a command to WSJT-X to set the local station's Maidenhead grid. This is temporary,
202
+ * lasting only as long as WSJT-X is running. */
203
+ setLocation(grid) {
204
+ const wsMsg = {
205
+ wsjtx: {
206
+ type: 'LocationMessage',
207
+ payload: {
208
+ id: this.wsjtxId,
209
+ location: grid,
210
+ },
211
+ },
212
+ };
213
+ this.messages.txMessage$.next(wsMsg);
214
+ }
215
+ /** Send a command to WSJT-X to switch to the named configuration. */
216
+ switchConfiguration(configName) {
217
+ const wsMsg = {
218
+ wsjtx: {
219
+ type: 'SwitchConfigurationMessage',
220
+ payload: {
221
+ id: this.wsjtxId,
222
+ configurationName: configName,
223
+ },
224
+ },
225
+ };
226
+ this.messages.txMessage$.next(wsMsg);
227
+ }
228
+ /** Send a command to WSJT-X to set the given configuration parameters. */
229
+ configure(config) {
230
+ config.id = this.wsjtxId;
231
+ const wsMsg = {
232
+ wsjtx: {
233
+ type: 'ConfigureMessage',
234
+ payload: config,
235
+ },
236
+ };
237
+ this.messages.txMessage$.next(wsMsg);
251
238
  }
252
239
  /** Given a decode message, format a string the same way as displayed in the WSJT-X Band
253
240
  * Activity/Rx Frequency windows. */
@@ -265,22 +252,237 @@ class AgentService {
265
252
  .padStart(4)} ${msg.deltaFrequency.toString().padStart(4)} ~ ${msg.message}`;
266
253
  }
267
254
  }
268
- AgentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AgentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
255
+ WsjtxService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: WsjtxService, deps: [{ token: AgentMessageService }], target: i0.ɵɵFactoryTarget.Injectable });
256
+ WsjtxService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: WsjtxService, providedIn: 'root' });
257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: WsjtxService, decorators: [{
258
+ type: Injectable,
259
+ args: [{
260
+ providedIn: 'root',
261
+ }]
262
+ }], ctorParameters: function () { return [{ type: AgentMessageService }]; } });
263
+
264
+ class HamlibService {
265
+ constructor(messages) {
266
+ this.messages = messages;
267
+ /** Whether we're getting any messages from Hamlib. */
268
+ this.connected$ = new BehaviorSubject(false);
269
+ /** Subject for listening to Hamlib "RigState" messages. */
270
+ this.rigState$ = new BehaviorSubject(null);
271
+ this.setupBehaviors();
272
+ }
273
+ setupBehaviors() {
274
+ this.messages.rxMessage$.subscribe((msg) => this.handleMessage(msg));
275
+ // if we haven't heard from Hamlib in 15 seconds, consider it down
276
+ this.connected$.pipe(debounceTime(15000)).subscribe(() => {
277
+ this.connected$.next(false);
278
+ });
279
+ // When Hamlib goes down, clear its persistent message subjects
280
+ this.connected$.subscribe((isUp) => {
281
+ if (!isUp) {
282
+ this.rigState$.next(null);
283
+ }
284
+ });
285
+ }
286
+ handleMessage(msg) {
287
+ if (!msg.hamlib) {
288
+ return;
289
+ }
290
+ this.connected$.next(true);
291
+ switch (msg.hamlib.type) {
292
+ case 'RigState':
293
+ this.rigState$.next(msg.hamlib.payload);
294
+ return;
295
+ }
296
+ }
297
+ }
298
+ HamlibService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: HamlibService, deps: [{ token: AgentMessageService }], target: i0.ɵɵFactoryTarget.Injectable });
299
+ HamlibService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: HamlibService, providedIn: 'root' });
300
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: HamlibService, decorators: [{
301
+ type: Injectable,
302
+ args: [{
303
+ providedIn: 'root',
304
+ }]
305
+ }], ctorParameters: function () { return [{ type: AgentMessageService }]; } });
306
+
307
+ class AgentService {
308
+ constructor(messages, hamlibService, wsjtxService) {
309
+ this.messages = messages;
310
+ this.hamlibService = hamlibService;
311
+ this.wsjtxService = wsjtxService;
312
+ /** Whether we're connected to the agent. */
313
+ this.connectedState$ = new BehaviorSubject(false);
314
+ this.defaultAgentHost = 'localhost';
315
+ this.defaultAgentPort = 8081;
316
+ this.localStorageHostKey = 'agent-host';
317
+ this.localStoragePortKey = 'agent-port';
318
+ this.agentHost = this.defaultAgentHost;
319
+ this.agentPort = this.defaultAgentPort;
320
+ this.agentWebSocketSubject = null;
321
+ this.agentWebsocketSubscription = null;
322
+ this.hamlibState$ = this.hamlibService.connected$;
323
+ this.hamlibRigState$ = this.hamlibService.rigState$;
324
+ this.wsjtxState$ = this.wsjtxService.connected$;
325
+ this.wsjtxHeartbeat$ = this.wsjtxService.heartbeat$;
326
+ this.wsjtxStatus$ = this.wsjtxService.status$;
327
+ this.wsjtxDecode$ = this.wsjtxService.decode$;
328
+ this.wsjtxClear$ = this.wsjtxService.clear$;
329
+ this.wsjtxQsoLogged$ = this.wsjtxService.qsoLogged$;
330
+ this.wsjtxClose$ = this.wsjtxService.close$;
331
+ this.wsjtxWsprDecode$ = this.wsjtxService.wsprDecode$;
332
+ this.wsjtxLoggedAdif$ = this.wsjtxService.loggedAdif$;
333
+ }
334
+ init() {
335
+ this.messages.txMessage$.subscribe((msg) => this.send(msg));
336
+ this.agentHost = this.getHost();
337
+ this.agentPort = this.getPort();
338
+ this.connect();
339
+ }
340
+ /** Connect (or reconnect) the websocket to the kel-agent server. */
341
+ connect() {
342
+ if (this.agentWebsocketSubscription) {
343
+ this.agentWebsocketSubscription.unsubscribe();
344
+ }
345
+ this.agentHost = this.getHost();
346
+ this.agentPort = this.getPort();
347
+ const protocol = this.agentHost === 'localhost' ? 'ws://' : 'wss://';
348
+ this.agentWebSocketSubject = webSocket({
349
+ url: protocol + this.agentHost + ':' + this.agentPort + '/websocket',
350
+ });
351
+ this.connectedState$.next(true);
352
+ this.agentWebsocketSubscription = this.agentWebSocketSubject
353
+ .pipe(retryWhen((errors) =>
354
+ // retry the websocket connection after 10 seconds
355
+ errors.pipe(tap(() => this.connectedState$.next(false)), delay(10000))))
356
+ .subscribe({
357
+ next: (msg) => {
358
+ this.connectedState$.next(true);
359
+ this.messages.rxMessage$.next(msg);
360
+ },
361
+ error: () => this.connectedState$.next(false),
362
+ complete: () => this.connectedState$.next(false),
363
+ });
364
+ }
365
+ /** Get the currently configured kel-agent host. */
366
+ getHost() {
367
+ return (localStorage.getItem(this.localStorageHostKey) || this.defaultAgentHost);
368
+ }
369
+ /** Get the currently configured kel-agent port. */
370
+ getPort() {
371
+ let portStr = localStorage.getItem(this.localStoragePortKey);
372
+ if (portStr == null) {
373
+ return this.defaultAgentPort;
374
+ }
375
+ let portNum = parseInt(portStr, 10);
376
+ if (isNaN(portNum)) {
377
+ return this.defaultAgentPort;
378
+ }
379
+ return portNum;
380
+ }
381
+ /** Set the kel-agent host. */
382
+ setHost(host) {
383
+ localStorage.setItem(this.localStorageHostKey, host);
384
+ this.connect();
385
+ }
386
+ /** Set the kel-agent port. */
387
+ setPort(port) {
388
+ localStorage.setItem(this.localStoragePortKey, String(port));
389
+ this.connect();
390
+ }
391
+ send(wsMsg) {
392
+ this.agentWebSocketSubject?.next(wsMsg);
393
+ }
394
+ /**
395
+ * Send a command to WSJT-X to clear the Band Activity window.
396
+ *
397
+ * @deprecated Use {@link WsjtxService.clearBandActivity} instead.
398
+ */
399
+ sendWsjtxClearBandActivity() {
400
+ this.wsjtxService.clearBandActivity();
401
+ }
402
+ /**
403
+ * Send a command to WSJT-X to clear the Rx Frequency window.
404
+ *
405
+ * @deprecated Use {@link WsjtxService.clearRxFreqWindow} instead.
406
+ */
407
+ sendWsjtxClearRxFreqWindow() {
408
+ this.wsjtxService.clearRxFreqWindow();
409
+ }
410
+ /**
411
+ * Send a command to WSJT-X to clear the Band Activity and Rx Frequency windows.
412
+ *
413
+ * @deprecated Use {@link WsjtxService.clearAll} instead.
414
+ */
415
+ sendWsjtxClearAll() {
416
+ this.wsjtxService.clearAll();
417
+ }
418
+ /**
419
+ * Send a command to WSJT-X to replay messages. Useful for a fresh client that wants to hear
420
+ * previous WSJT-X decodes.
421
+ *
422
+ * @deprecated Use {@link WsjtxService.replay} instead.
423
+ */
424
+ sendWsjtxReplay() {
425
+ this.wsjtxService.replay();
426
+ }
427
+ /**
428
+ * Send a command to WSJT-X to halt any transmissions immediately.
429
+ *
430
+ * @deprecated Use {@link WsjtxService.haltTxNow} instead.
431
+ */
432
+ sendWsjtxHaltTxNow() {
433
+ this.wsjtxService.haltTxNow();
434
+ }
435
+ /** Send a command to WSJT-X to stop auto-transmitting after finishing the current round.
436
+ *
437
+ * @deprecated Use {@link WsjtxService.haltTxAfterCurrent} instead.
438
+ */
439
+ sendWsjtxHaltTxAfterCurrent() {
440
+ this.wsjtxService.haltTxAfterCurrent();
441
+ }
442
+ /**
443
+ * Send a command to WSJT-X to reply to the given decode. The message must include CQ or QRZ.
444
+ *
445
+ * @deprecated Use {@link WsjtxService.reply} instead.
446
+ */
447
+ sendWsjtxReply(decode) {
448
+ this.wsjtxService.reply(decode);
449
+ }
450
+ /**
451
+ * Send a command to WSJT-X to reply to the given decode. The message must include CQ or QRZ.
452
+ *
453
+ * @deprecated Use {@link WsjtxService.highlightCallsign} instead.
454
+ */
455
+ sendWsjtxHighlightCallsign(highlightMsg) {
456
+ this.wsjtxService.highlightCallsign(highlightMsg);
457
+ }
458
+ /**
459
+ * Given a decode message, format a string the same way as displayed in the WSJT-X Band
460
+ * Activity/Rx Frequency windows.
461
+ *
462
+ * @deprecated Use {@link WsjtxService.formatDecode} instead.
463
+ */
464
+ static formatDecode(msg) {
465
+ return WsjtxService.formatDecode(msg);
466
+ }
467
+ }
468
+ AgentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AgentService, deps: [{ token: AgentMessageService }, { token: HamlibService }, { token: WsjtxService }], target: i0.ɵɵFactoryTarget.Injectable });
269
469
  AgentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AgentService, providedIn: 'root' });
270
470
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AgentService, decorators: [{
271
471
  type: Injectable,
272
472
  args: [{
273
- providedIn: 'root'
473
+ providedIn: 'root',
274
474
  }]
275
- }], ctorParameters: function () { return []; } });
475
+ }], ctorParameters: function () { return [{ type: AgentMessageService }, { type: HamlibService }, { type: WsjtxService }]; } });
276
476
 
277
477
  /*
278
478
  * Public API Surface of ngx-kel-agent
279
479
  */
480
+ // export * from './lib/ngx-kel-agent.component';
481
+ // export * from './lib/ngx-kel-agent.module';
280
482
 
281
483
  /**
282
484
  * Generated bundle index. Do not edit.
283
485
  */
284
486
 
285
- export { AgentService };
487
+ export { AgentMessageService, AgentService, HamlibService, WsjtxService };
286
488
  //# sourceMappingURL=ngx-kel-agent.mjs.map