icom-wlan-node 0.6.0 → 0.6.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,4 +1,4 @@
1
- import type { IcomModelId } from '../types';
1
+ import type { IcomAudioIfSource, IcomFunctionName, IcomLevelName, IcomModelId, IcomParameterName, IcomVfoName, IcomVfoOperation } from '../types';
2
2
  export interface CalibrationPoint {
3
3
  raw: number;
4
4
  value: number;
@@ -8,8 +8,9 @@ export interface IcomExtParam {
8
8
  subcmd: number;
9
9
  subext: number[];
10
10
  dataBytes: number;
11
- dataType: 'level' | 'bool' | 'int';
11
+ dataType: 'level' | 'bool' | 'int' | 'time';
12
12
  }
13
+ export type IcomExtParamTable = Partial<Record<IcomFunctionName | IcomLevelName | IcomParameterName, IcomExtParam>>;
13
14
  export interface IcomProfile {
14
15
  modelId: IcomModelId;
15
16
  profileName: string;
@@ -29,6 +30,19 @@ export interface IcomProfile {
29
30
  lowHz: number;
30
31
  highHz: number;
31
32
  }>;
33
+ functions: IcomFunctionName[];
34
+ levels: IcomLevelName[];
35
+ parameters: IcomParameterName[];
36
+ tuningSteps: Array<{
37
+ hz: number;
38
+ code: number;
39
+ }>;
40
+ vfoOps: IcomVfoOperation[];
41
+ vfos: IcomVfoName[];
42
+ repeater: boolean;
43
+ tone: boolean;
44
+ spectrumAdvanced: Array<'dataOutput' | 'hold' | 'speed' | 'ref' | 'avg' | 'vbw' | 'rbw' | 'duringTx' | 'centerType'>;
45
+ audioIfSources: IcomAudioIfSource[];
32
46
  calibrations: {
33
47
  sMeterModel: string;
34
48
  swr: CalibrationPoint[];
@@ -42,6 +56,7 @@ export interface IcomProfile {
42
56
  usbAfLevel?: IcomExtParam;
43
57
  afIfWlan?: IcomExtParam;
44
58
  };
59
+ extParamSpecs: IcomExtParamTable;
45
60
  vendorExtensions: {
46
61
  connectorWlanLevel?: IcomExtParam;
47
62
  connectorDataMode?: {
@@ -97,6 +97,69 @@ const IC705_CURRENT = [
97
97
  { raw: 0, value: 0 },
98
98
  { raw: 241, value: 4 },
99
99
  ];
100
+ const COMMON_FUNCTIONS = [
101
+ 'NB', 'NR', 'COMP', 'VOX', 'TONE', 'TSQL', 'SBKIN', 'FBKIN',
102
+ 'MON', 'ANF', 'MN', 'LOCK', 'RIT', 'XIT', 'TUNER', 'SCOPE',
103
+ 'SPECTRUM', 'SPECTRUM_HOLD', 'TRANSCEIVE', 'OVF_STATUS',
104
+ ];
105
+ const COMMON_LEVELS = [
106
+ 'AF', 'RF', 'SQL', 'IF', 'NR', 'NB', 'PBT_IN', 'PBT_OUT',
107
+ 'CWPITCH', 'RFPOWER', 'MICGAIN', 'KEYSPD', 'NOTCHF_RAW', 'COMP',
108
+ 'BKINDL', 'VOXGAIN', 'ANTIVOX', 'MONITOR_GAIN', 'AGC', 'AGC_TIME',
109
+ ];
110
+ const COMMON_PARAMETERS = ['ANN', 'BEEP', 'BACKLIGHT', 'SCREENSAVER', 'TIME', 'KEYERTYPE', 'AFIF'];
111
+ const SAFE_FUNCTIONS = ['NB', 'NR', 'COMP', 'VOX', 'MON', 'ANF', 'MN', 'LOCK', 'RIT', 'XIT', 'TUNER', 'SCOPE', 'SPECTRUM', 'SPECTRUM_HOLD', 'OVF_STATUS'];
112
+ const SAFE_LEVELS = ['AF', 'RF', 'SQL', 'NR', 'NB', 'RFPOWER', 'MICGAIN', 'COMP', 'BKINDL', 'MONITOR_GAIN'];
113
+ const DEFAULT_VFOS = ['A', 'B', 'CURR', 'TX'];
114
+ const TARGETABLE_VFOS = ['A', 'B', 'MAIN', 'SUB', 'MAIN_A', 'MAIN_B', 'SUB_A', 'SUB_B', 'MEM', 'CURR', 'TX'];
115
+ const COMMON_VFO_OPS = ['copy', 'exchange', 'from-vfo', 'to-vfo', 'memory-clear', 'tune'];
116
+ const IC905_VFO_OPS = ['copy', 'from-vfo', 'to-vfo', 'memory-clear', 'tune'];
117
+ const SPECTRUM_ADVANCED = ['dataOutput', 'hold', 'speed', 'ref', 'avg', 'vbw', 'rbw', 'duringTx', 'centerType'];
118
+ const TS_IC756PRO = [
119
+ { hz: 10, code: 0x00 },
120
+ { hz: 100, code: 0x01 },
121
+ { hz: 1000, code: 0x02 },
122
+ { hz: 5000, code: 0x03 },
123
+ { hz: 9000, code: 0x04 },
124
+ { hz: 10000, code: 0x05 },
125
+ { hz: 12500, code: 0x06 },
126
+ { hz: 20000, code: 0x07 },
127
+ { hz: 25000, code: 0x08 },
128
+ ];
129
+ const TS_IC7300 = [
130
+ { hz: 1, code: 0x00 },
131
+ ...TS_IC756PRO.slice(1),
132
+ ];
133
+ const TS_IC705 = [
134
+ { hz: 10, code: 0x00 },
135
+ { hz: 100, code: 0x01 },
136
+ { hz: 500, code: 0x02 },
137
+ { hz: 1000, code: 0x03 },
138
+ { hz: 5000, code: 0x04 },
139
+ { hz: 6250, code: 0x05 },
140
+ { hz: 8330, code: 0x06 },
141
+ { hz: 9000, code: 0x07 },
142
+ { hz: 10000, code: 0x08 },
143
+ { hz: 12500, code: 0x09 },
144
+ { hz: 20000, code: 0x10 },
145
+ { hz: 25000, code: 0x11 },
146
+ { hz: 50000, code: 0x12 },
147
+ { hz: 100000, code: 0x13 },
148
+ ];
149
+ const TS_IC9700 = [
150
+ { hz: 10, code: 0x00 },
151
+ { hz: 100, code: 0x01 },
152
+ { hz: 500, code: 0x02 },
153
+ { hz: 1000, code: 0x03 },
154
+ { hz: 5000, code: 0x04 },
155
+ { hz: 6250, code: 0x05 },
156
+ { hz: 10000, code: 0x06 },
157
+ { hz: 12500, code: 0x07 },
158
+ { hz: 20000, code: 0x08 },
159
+ { hz: 25000, code: 0x09 },
160
+ { hz: 50000, code: 0x10 },
161
+ { hz: 100000, code: 0x11 },
162
+ ];
100
163
  function baseProfile(overrides) {
101
164
  return {
102
165
  supportsX25X26: true,
@@ -109,6 +172,16 @@ function baseProfile(overrides) {
109
172
  scopeSingleFrameDataLength: 50,
110
173
  scopeEdgeSlots: [1, 2, 3, 4],
111
174
  scopeRanges: HF_SCOPE_RANGES_13,
175
+ functions: SAFE_FUNCTIONS,
176
+ levels: SAFE_LEVELS,
177
+ parameters: [],
178
+ tuningSteps: TS_IC705,
179
+ vfoOps: COMMON_VFO_OPS,
180
+ vfos: DEFAULT_VFOS,
181
+ repeater: false,
182
+ tone: false,
183
+ spectrumAdvanced: ['dataOutput', 'hold', 'speed', 'ref', 'vbw', 'duringTx', 'centerType'],
184
+ audioIfSources: ['default'],
112
185
  calibrations: {
113
186
  sMeterModel: 'IC-705',
114
187
  swr: DEFAULT_SWR,
@@ -119,6 +192,7 @@ function baseProfile(overrides) {
119
192
  current: DEFAULT_CURRENT,
120
193
  },
121
194
  extParams: {},
195
+ extParamSpecs: {},
122
196
  vendorExtensions: {},
123
197
  ...overrides,
124
198
  };
@@ -127,6 +201,66 @@ const ic705Ext = {
127
201
  usbAfLevel: { command: 0x1a, subcmd: 0x05, subext: [0x01, 0x13], dataBytes: 2, dataType: 'level' },
128
202
  afIfWlan: { command: 0x1a, subcmd: 0x05, subext: [0x01, 0x14], dataBytes: 1, dataType: 'bool' },
129
203
  };
204
+ const ext = (subext, dataBytes, dataType) => ({
205
+ command: 0x1a,
206
+ subcmd: 0x05,
207
+ subext,
208
+ dataBytes,
209
+ dataType,
210
+ });
211
+ const IC7300_EXT_SPECS = {
212
+ BEEP: ext([0x00, 0x23], 1, 'bool'),
213
+ BACKLIGHT: ext([0x00, 0x81], 2, 'level'),
214
+ SCREENSAVER: ext([0x00, 0x89], 1, 'int'),
215
+ TIME: ext([0x00, 0x95], 2, 'time'),
216
+ AFIF: ext([0x00, 0x59], 1, 'bool'),
217
+ VOXDELAY: ext([0x01, 0x59], 1, 'int'),
218
+ TRANSCEIVE: ext([0x00, 0x71], 1, 'bool'),
219
+ SPECTRUM_AVG: ext([0x01, 0x02], 1, 'int'),
220
+ AGC_TIME: { command: 0x1a, subcmd: 0x04, subext: [], dataBytes: 1, dataType: 'int' },
221
+ KEYERTYPE: ext([0x01, 0x64], 1, 'int'),
222
+ };
223
+ const IC705_EXT_SPECS = {
224
+ BEEP: ext([0x00, 0x31], 1, 'bool'),
225
+ BACKLIGHT: ext([0x01, 0x36], 2, 'level'),
226
+ SCREENSAVER: ext([0x01, 0x38], 1, 'int'),
227
+ TIME: ext([0x01, 0x66], 2, 'time'),
228
+ AFIF: ext([0x01, 0x09], 1, 'bool'),
229
+ AFIF_WLAN: ext([0x01, 0x14], 1, 'bool'),
230
+ VOXDELAY: ext([0x03, 0x59], 1, 'int'),
231
+ TRANSCEIVE: ext([0x01, 0x31], 1, 'bool'),
232
+ SPECTRUM_AVG: ext([0x01, 0x78], 1, 'int'),
233
+ AGC_TIME: { command: 0x1a, subcmd: 0x04, subext: [], dataBytes: 1, dataType: 'int' },
234
+ KEYERTYPE: ext([0x02, 0x55], 1, 'int'),
235
+ };
236
+ const IC9700_EXT_SPECS = {
237
+ BEEP: ext([0x00, 0x29], 1, 'bool'),
238
+ BACKLIGHT: ext([0x01, 0x52], 2, 'level'),
239
+ SCREENSAVER: ext([0x01, 0x67], 1, 'int'),
240
+ TIME: ext([0x01, 0x80], 2, 'time'),
241
+ AFIF: ext([0x01, 0x05], 1, 'bool'),
242
+ AFIF_ACC: ext([0x01, 0x00], 1, 'bool'),
243
+ AFIF_LAN: ext([0x01, 0x10], 1, 'bool'),
244
+ VOXDELAY: ext([0x03, 0x30], 1, 'int'),
245
+ TRANSCEIVE: ext([0x01, 0x27], 1, 'bool'),
246
+ SPECTRUM_AVG: ext([0x01, 0x92], 1, 'int'),
247
+ AGC_TIME: { command: 0x1a, subcmd: 0x04, subext: [], dataBytes: 1, dataType: 'int' },
248
+ KEYERTYPE: ext([0x02, 0x27], 1, 'int'),
249
+ };
250
+ const IC7610_EXT_SPECS = {
251
+ BEEP: ext([0x00, 0x24], 1, 'bool'),
252
+ BACKLIGHT: ext([0x01, 0x41], 2, 'level'),
253
+ TIME: ext([0x01, 0x59], 2, 'time'),
254
+ VOXDELAY: ext([0x02, 0x92], 1, 'int'),
255
+ TRANSCEIVE: ext([0x01, 0x12], 1, 'bool'),
256
+ SPECTRUM_AVG: ext([0x01, 0x70], 1, 'int'),
257
+ AGC_TIME: { command: 0x1a, subcmd: 0x04, subext: [], dataBytes: 1, dataType: 'int' },
258
+ KEYERTYPE: ext([0x02, 0x31], 1, 'int'),
259
+ };
260
+ const IC7760_EXT_SPECS = {
261
+ VOXDELAY: ext([0x01, 0x82], 1, 'int'),
262
+ AGC_TIME: { command: 0x1a, subcmd: 0x04, subext: [], dataBytes: 1, dataType: 'int' },
263
+ };
130
264
  const ic705Vendor = {
131
265
  connectorWlanLevel: { command: 0x1a, subcmd: 0x05, subext: [0x01, 0x17], dataBytes: 2, dataType: 'level' },
132
266
  connectorDataMode: { command: 0x1a, subcmd: 0x05, subext: [0x01, 0x19] },
@@ -138,6 +272,8 @@ exports.ICOM_PROFILES = {
138
272
  defaultCivAddress: 0xa4,
139
273
  aliases: ['generic', 'icom'],
140
274
  scopeRanges: HF_VHF_UHF_SCOPE_RANGES_17,
275
+ functions: SAFE_FUNCTIONS,
276
+ levels: SAFE_LEVELS,
141
277
  }),
142
278
  'IC-705': baseProfile({
143
279
  modelId: 'IC-705',
@@ -145,6 +281,16 @@ exports.ICOM_PROFILES = {
145
281
  defaultCivAddress: 0xa4,
146
282
  aliases: ['IC-705', 'IC705'],
147
283
  scopeRanges: HF_VHF_UHF_SCOPE_RANGES_17,
284
+ functions: COMMON_FUNCTIONS,
285
+ levels: [...COMMON_LEVELS, 'SPECTRUM_AVG'],
286
+ parameters: [...COMMON_PARAMETERS, 'AFIF_WLAN'],
287
+ tuningSteps: TS_IC705,
288
+ vfoOps: COMMON_VFO_OPS,
289
+ vfos: DEFAULT_VFOS,
290
+ repeater: true,
291
+ tone: true,
292
+ spectrumAdvanced: ['dataOutput', 'hold', 'speed', 'ref', 'avg', 'vbw', 'duringTx', 'centerType'],
293
+ audioIfSources: ['default', 'wlan'],
148
294
  calibrations: {
149
295
  sMeterModel: 'IC-705',
150
296
  swr: DEFAULT_SWR,
@@ -155,6 +301,7 @@ exports.ICOM_PROFILES = {
155
301
  current: IC705_CURRENT,
156
302
  },
157
303
  extParams: ic705Ext,
304
+ extParamSpecs: IC705_EXT_SPECS,
158
305
  vendorExtensions: ic705Vendor,
159
306
  }),
160
307
  'IC-905': baseProfile({
@@ -164,6 +311,16 @@ exports.ICOM_PROFILES = {
164
311
  aliases: ['IC-905', 'IC905'],
165
312
  frequencyBcdBytes: (freqHz) => freqHz > 5.85e9 ? 6 : 5,
166
313
  scopeRanges: HF_VHF_UHF_SCOPE_RANGES_17,
314
+ functions: COMMON_FUNCTIONS,
315
+ levels: [...COMMON_LEVELS, 'SPECTRUM_AVG'],
316
+ parameters: [...COMMON_PARAMETERS, 'AFIF_WLAN'],
317
+ tuningSteps: TS_IC705,
318
+ vfoOps: IC905_VFO_OPS,
319
+ vfos: DEFAULT_VFOS,
320
+ repeater: true,
321
+ tone: true,
322
+ spectrumAdvanced: ['dataOutput', 'hold', 'speed', 'ref', 'avg', 'vbw', 'duringTx', 'centerType'],
323
+ audioIfSources: ['default', 'wlan'],
167
324
  calibrations: {
168
325
  sMeterModel: 'IC-705',
169
326
  swr: DEFAULT_SWR,
@@ -174,6 +331,7 @@ exports.ICOM_PROFILES = {
174
331
  current: DEFAULT_CURRENT,
175
332
  },
176
333
  extParams: ic705Ext,
334
+ extParamSpecs: IC705_EXT_SPECS,
177
335
  vendorExtensions: ic705Vendor,
178
336
  }),
179
337
  'IC-7300': baseProfile({
@@ -182,9 +340,25 @@ exports.ICOM_PROFILES = {
182
340
  defaultCivAddress: 0x94,
183
341
  aliases: ['IC-7300', 'IC7300'],
184
342
  scopeRanges: HF_SCOPE_RANGES_13,
343
+ functions: COMMON_FUNCTIONS,
344
+ levels: [...COMMON_LEVELS, 'DRIVE_GAIN', 'DIGI_SEL_LEVEL', 'SPECTRUM_AVG'],
345
+ parameters: COMMON_PARAMETERS,
346
+ tuningSteps: TS_IC7300,
347
+ vfoOps: COMMON_VFO_OPS,
348
+ vfos: DEFAULT_VFOS,
349
+ repeater: false,
350
+ tone: true,
351
+ spectrumAdvanced: ['dataOutput', 'hold', 'speed', 'ref', 'avg', 'vbw', 'duringTx', 'centerType'],
352
+ audioIfSources: ['default'],
185
353
  extParams: {
186
354
  usbAfLevel: { command: 0x1a, subcmd: 0x05, subext: [0x00, 0x60], dataBytes: 2, dataType: 'level' },
187
355
  },
356
+ extParamSpecs: {
357
+ ...IC7300_EXT_SPECS,
358
+ DRIVE_GAIN: { command: 0x14, subcmd: 0x14, subext: [], dataBytes: 2, dataType: 'level' },
359
+ DIGI_SEL: { command: 0x16, subcmd: 0x4e, subext: [], dataBytes: 1, dataType: 'bool' },
360
+ DIGI_SEL_LEVEL: { command: 0x14, subcmd: 0x13, subext: [], dataBytes: 2, dataType: 'level' },
361
+ },
188
362
  }),
189
363
  'IC-9700': baseProfile({
190
364
  modelId: 'IC-9700',
@@ -192,9 +366,20 @@ exports.ICOM_PROFILES = {
192
366
  defaultCivAddress: 0xa2,
193
367
  aliases: ['IC-9700', 'IC9700'],
194
368
  scopeRanges: IC9700_SCOPE_RANGES,
369
+ functions: [...COMMON_FUNCTIONS, 'SATMODE', 'DUAL_WATCH', 'AFC'],
370
+ levels: [...COMMON_LEVELS, 'SPECTRUM_AVG'],
371
+ parameters: [...COMMON_PARAMETERS, 'AFIF_LAN', 'AFIF_ACC'],
372
+ tuningSteps: TS_IC9700,
373
+ vfoOps: ['copy', 'exchange', 'from-vfo', 'to-vfo', 'memory-clear'],
374
+ vfos: TARGETABLE_VFOS,
375
+ repeater: true,
376
+ tone: true,
377
+ spectrumAdvanced: ['dataOutput', 'hold', 'speed', 'ref', 'avg', 'vbw', 'duringTx', 'centerType'],
378
+ audioIfSources: ['default', 'lan', 'acc'],
195
379
  extParams: {
196
380
  usbAfLevel: { command: 0x1a, subcmd: 0x05, subext: [0x01, 0x06], dataBytes: 2, dataType: 'level' },
197
381
  },
382
+ extParamSpecs: IC9700_EXT_SPECS,
198
383
  }),
199
384
  'IC-7610': baseProfile({
200
385
  modelId: 'IC-7610',
@@ -203,9 +388,29 @@ exports.ICOM_PROFILES = {
203
388
  aliases: ['IC-7610', 'IC7610'],
204
389
  scopeLineLength: 689,
205
390
  scopeRanges: IC7610_SCOPE_RANGES,
391
+ functions: [...COMMON_FUNCTIONS, 'APF', 'DUAL_WATCH', 'DIGI_SEL', 'IPP', 'TX_INHIBIT', 'DPP', 'ICPW2'],
392
+ levels: [...COMMON_LEVELS, 'APF', 'BALANCE', 'DRIVE_GAIN', 'DIGI_SEL_LEVEL', 'SPECTRUM_AVG'],
393
+ parameters: ['BEEP', 'BACKLIGHT', 'TIME', 'KEYERTYPE'],
394
+ tuningSteps: TS_IC756PRO,
395
+ vfoOps: COMMON_VFO_OPS,
396
+ vfos: TARGETABLE_VFOS,
397
+ repeater: false,
398
+ tone: true,
399
+ spectrumAdvanced: SPECTRUM_ADVANCED,
400
+ audioIfSources: ['default'],
206
401
  extParams: {
207
402
  usbAfLevel: { command: 0x1a, subcmd: 0x05, subext: [0x00, 0x82], dataBytes: 2, dataType: 'level' },
208
403
  },
404
+ extParamSpecs: {
405
+ ...IC7610_EXT_SPECS,
406
+ DRIVE_GAIN: { command: 0x14, subcmd: 0x14, subext: [], dataBytes: 2, dataType: 'level' },
407
+ DIGI_SEL: { command: 0x16, subcmd: 0x4e, subext: [], dataBytes: 1, dataType: 'bool' },
408
+ DIGI_SEL_LEVEL: { command: 0x14, subcmd: 0x13, subext: [], dataBytes: 2, dataType: 'level' },
409
+ IPP: { command: 0x16, subcmd: 0x65, subext: [], dataBytes: 1, dataType: 'bool' },
410
+ TX_INHIBIT: { command: 0x16, subcmd: 0x66, subext: [], dataBytes: 1, dataType: 'bool' },
411
+ DPP: { command: 0x16, subcmd: 0x67, subext: [], dataBytes: 1, dataType: 'bool' },
412
+ ICPW2: ext([0x03, 0x10], 1, 'bool'),
413
+ },
209
414
  }),
210
415
  'IC-7760': baseProfile({
211
416
  modelId: 'IC-7760',
@@ -213,6 +418,21 @@ exports.ICOM_PROFILES = {
213
418
  defaultCivAddress: 0xb2,
214
419
  aliases: ['IC-7760', 'IC7760'],
215
420
  scopeRanges: HF_SCOPE_RANGES_13,
421
+ functions: ['NB', 'NR', 'COMP', 'VOX', 'TONE', 'TSQL', 'SBKIN', 'FBKIN', 'MON', 'ANF', 'MN', 'VSC', 'LOCK', 'RIT', 'XIT', 'TUNER', 'APF', 'DIGI_SEL'],
422
+ levels: [...COMMON_LEVELS, 'APF', 'BALANCE', 'DRIVE_GAIN', 'DIGI_SEL_LEVEL'],
423
+ parameters: ['ANN', 'BACKLIGHT'],
424
+ tuningSteps: TS_IC756PRO,
425
+ vfoOps: COMMON_VFO_OPS,
426
+ vfos: DEFAULT_VFOS,
427
+ repeater: false,
428
+ tone: true,
429
+ spectrumAdvanced: [],
430
+ extParamSpecs: {
431
+ ...IC7760_EXT_SPECS,
432
+ DRIVE_GAIN: { command: 0x14, subcmd: 0x14, subext: [], dataBytes: 2, dataType: 'level' },
433
+ DIGI_SEL: { command: 0x16, subcmd: 0x4e, subext: [], dataBytes: 1, dataType: 'bool' },
434
+ DIGI_SEL_LEVEL: { command: 0x14, subcmd: 0x13, subext: [], dataBytes: 2, dataType: 'level' },
435
+ },
216
436
  }),
217
437
  };
218
438
  function interpolateCalibration(raw, points) {
@@ -30,6 +30,26 @@ export declare const IcomRigCommands: {
30
30
  getCurrent(ctrAddr: number, rigAddr: number): Buffer;
31
31
  get0x14Level(ctrAddr: number, rigAddr: number, subcmd: number): Buffer;
32
32
  set0x14Level(ctrAddr: number, rigAddr: number, subcmd: number, bcdHi: number, bcdLo: number): Buffer;
33
+ readCommand(ctrAddr: number, rigAddr: number, cmd: number, subcmd?: number | number[], payload?: number[] | Buffer): Buffer;
34
+ writeCommand(ctrAddr: number, rigAddr: number, cmd: number, subcmd: number | number[] | undefined, payload?: number[] | Buffer): Buffer;
35
+ readFunction(ctrAddr: number, rigAddr: number, subcmd: number, payload?: number[] | Buffer): Buffer;
36
+ setFunction(ctrAddr: number, rigAddr: number, subcmd: number, value: number, payloadPrefix?: number[]): Buffer;
37
+ readExtParam(ctrAddr: number, rigAddr: number, command: number, subcmd: number, subext?: number[]): Buffer;
38
+ writeExtParam(ctrAddr: number, rigAddr: number, command: number, subcmd: number, subext?: number[], payload?: number[] | Buffer): Buffer;
39
+ readRitOffset(ctrAddr: number, rigAddr: number): Buffer;
40
+ setRitOffset(ctrAddr: number, rigAddr: number, payload: number[] | Buffer): Buffer;
41
+ readRitEnabled(ctrAddr: number, rigAddr: number): Buffer;
42
+ setRitEnabled(ctrAddr: number, rigAddr: number, enabled: boolean): Buffer;
43
+ readXitEnabled(ctrAddr: number, rigAddr: number): Buffer;
44
+ setXitEnabled(ctrAddr: number, rigAddr: number, enabled: boolean): Buffer;
45
+ readSplit(ctrAddr: number, rigAddr: number): Buffer;
46
+ setSplit(ctrAddr: number, rigAddr: number, enabled: boolean): Buffer;
47
+ readTuningStep(ctrAddr: number, rigAddr: number): Buffer;
48
+ setTuningStep(ctrAddr: number, rigAddr: number, code: number): Buffer;
49
+ readRepeaterShift(ctrAddr: number, rigAddr: number): Buffer;
50
+ setRepeaterShift(ctrAddr: number, rigAddr: number, code: number): Buffer;
51
+ readTone(ctrAddr: number, rigAddr: number, subcmd: number): Buffer;
52
+ setTone(ctrAddr: number, rigAddr: number, subcmd: number, toneTenthHz: number): Buffer;
33
53
  getTunerStatus(ctrAddr: number, rigAddr: number): Buffer;
34
54
  setTunerEnabled(ctrAddr: number, rigAddr: number, on: boolean): Buffer;
35
55
  startManualTune(ctrAddr: number, rigAddr: number): Buffer;
@@ -104,6 +104,66 @@ exports.IcomRigCommands = {
104
104
  set0x14Level(ctrAddr, rigAddr, subcmd, bcdHi, bcdLo) {
105
105
  return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_CTL_LVL, subcmd, payload: [bcdHi, bcdLo] });
106
106
  },
107
+ readCommand(ctrAddr, rigAddr, cmd, subcmd, payload) {
108
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd, subcmd, payload });
109
+ },
110
+ writeCommand(ctrAddr, rigAddr, cmd, subcmd, payload) {
111
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd, subcmd, payload });
112
+ },
113
+ readFunction(ctrAddr, rigAddr, subcmd, payload) {
114
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_CTL_FUNC, subcmd, payload });
115
+ },
116
+ setFunction(ctrAddr, rigAddr, subcmd, value, payloadPrefix = []) {
117
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_CTL_FUNC, subcmd, payload: [...payloadPrefix, value & 0xff] });
118
+ },
119
+ readExtParam(ctrAddr, rigAddr, command, subcmd, subext = []) {
120
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: command, subcmd, payload: subext });
121
+ },
122
+ writeExtParam(ctrAddr, rigAddr, command, subcmd, subext = [], payload = []) {
123
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: command, subcmd, payload: [...subext, ...Array.from(payload)] });
124
+ },
125
+ readRitOffset(ctrAddr, rigAddr) {
126
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_CTL_RIT, subcmd: IcomCivSpec_1.CIV.S_RIT_FREQ });
127
+ },
128
+ setRitOffset(ctrAddr, rigAddr, payload) {
129
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_CTL_RIT, subcmd: IcomCivSpec_1.CIV.S_RIT_FREQ, payload });
130
+ },
131
+ readRitEnabled(ctrAddr, rigAddr) {
132
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_CTL_RIT, subcmd: IcomCivSpec_1.CIV.S_RIT });
133
+ },
134
+ setRitEnabled(ctrAddr, rigAddr, enabled) {
135
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_CTL_RIT, subcmd: IcomCivSpec_1.CIV.S_RIT, payload: [enabled ? 1 : 0] });
136
+ },
137
+ readXitEnabled(ctrAddr, rigAddr) {
138
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_CTL_RIT, subcmd: IcomCivSpec_1.CIV.S_XIT });
139
+ },
140
+ setXitEnabled(ctrAddr, rigAddr, enabled) {
141
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_CTL_RIT, subcmd: IcomCivSpec_1.CIV.S_XIT, payload: [enabled ? 1 : 0] });
142
+ },
143
+ readSplit(ctrAddr, rigAddr) {
144
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_CTL_SPLT });
145
+ },
146
+ setSplit(ctrAddr, rigAddr, enabled) {
147
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_CTL_SPLT, subcmd: enabled ? IcomCivSpec_1.CIV.S_SPLT_ON : IcomCivSpec_1.CIV.S_SPLT_OFF });
148
+ },
149
+ readTuningStep(ctrAddr, rigAddr) {
150
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_SET_TS });
151
+ },
152
+ setTuningStep(ctrAddr, rigAddr, code) {
153
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_SET_TS, subcmd: code });
154
+ },
155
+ readRepeaterShift(ctrAddr, rigAddr) {
156
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_CTL_SPLT });
157
+ },
158
+ setRepeaterShift(ctrAddr, rigAddr, code) {
159
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_CTL_SPLT, subcmd: code });
160
+ },
161
+ readTone(ctrAddr, rigAddr, subcmd) {
162
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_SET_TONE, subcmd });
163
+ },
164
+ setTone(ctrAddr, rigAddr, subcmd, toneTenthHz) {
165
+ return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_SET_TONE, subcmd, payload: (0, IcomCivFrame_1.encodeBcdBE)(toneTenthHz, 3) });
166
+ },
107
167
  getTunerStatus(ctrAddr, rigAddr) {
108
168
  return (0, IcomCivFrame_1.buildCivFrame)({ rigAddr, ctrlAddr: ctrAddr, cmd: IcomCivSpec_1.CIV.C_CTL_PTT, subcmd: IcomCivSpec_1.CIV.S_ANT_TUN });
109
169
  },
package/dist/types.d.ts CHANGED
@@ -9,6 +9,15 @@ export interface IcomCredentials {
9
9
  password: string;
10
10
  }
11
11
  export type IcomModelId = 'IC-705' | 'IC-905' | 'IC-7300' | 'IC-9700' | 'IC-7610' | 'IC-7760' | 'generic-modern-icom';
12
+ export type IcomFunctionName = 'NB' | 'NR' | 'COMP' | 'VOX' | 'TONE' | 'TSQL' | 'SBKIN' | 'FBKIN' | 'MON' | 'ANF' | 'MN' | 'LOCK' | 'RIT' | 'XIT' | 'TUNER' | 'APF' | 'AFC' | 'VSC' | 'DUAL_WATCH' | 'SATMODE' | 'SCOPE' | 'SPECTRUM' | 'SPECTRUM_HOLD' | 'TRANSCEIVE' | 'OVF_STATUS' | 'DIGI_SEL' | 'IPP' | 'TX_INHIBIT' | 'DPP' | 'ICPW2';
13
+ export type IcomLevelName = 'AF' | 'RF' | 'SQL' | 'IF' | 'APF' | 'NR' | 'NB' | 'PBT_IN' | 'PBT_OUT' | 'CWPITCH' | 'RFPOWER' | 'MICGAIN' | 'KEYSPD' | 'NOTCHF_RAW' | 'COMP' | 'BKINDL' | 'BALANCE' | 'VOXGAIN' | 'ANTIVOX' | 'VOXDELAY' | 'MONITOR_GAIN' | 'DRIVE_GAIN' | 'DIGI_SEL_LEVEL' | 'AGC' | 'AGC_TIME' | 'SPECTRUM_AVG';
14
+ export type IcomParameterName = 'ANN' | 'BEEP' | 'BACKLIGHT' | 'SCREENSAVER' | 'TIME' | 'KEYERTYPE' | 'AFIF' | 'AFIF_WLAN' | 'AFIF_LAN' | 'AFIF_ACC';
15
+ export type IcomVfoName = 'A' | 'B' | 'MAIN' | 'SUB' | 'MAIN_A' | 'MAIN_B' | 'SUB_A' | 'SUB_B' | 'MEM' | 'CURR' | 'TX';
16
+ export type IcomVfoOperation = 'copy' | 'exchange' | 'from-vfo' | 'to-vfo' | 'memory-clear' | 'tune';
17
+ export type IcomRepeaterShift = 'none' | 'minus' | 'plus';
18
+ export type IcomSpectrumSpeed = 'slow' | 'mid' | 'fast';
19
+ export type IcomSpectrumCenterType = 'filter-center' | 'carrier-point-center' | 'carrier-point-center-abs';
20
+ export type IcomAudioIfSource = 'default' | 'wlan' | 'lan' | 'acc';
12
21
  export interface IcomRigOptions extends IcomCredentials {
13
22
  control: UdpAddress;
14
23
  /** Radio model profile. Defaults to auto-detection from rig name or CI-V address. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "icom-wlan-node",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "description": "Icom WLAN (CI‑V, audio) protocol implementation for Node.js/TypeScript.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",