icom-wlan-node 0.6.1 → 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.
- package/README.md +32 -0
- package/dist/rig/IcomCivSpec.d.ts +83 -0
- package/dist/rig/IcomCivSpec.js +83 -0
- package/dist/rig/IcomControl.d.ts +147 -1
- package/dist/rig/IcomControl.js +661 -0
- package/dist/rig/IcomProfiles.d.ts +17 -2
- package/dist/rig/IcomProfiles.js +220 -0
- package/dist/rig/IcomRigCommands.d.ts +20 -0
- package/dist/rig/IcomRigCommands.js +60 -0
- package/dist/types.d.ts +9 -0
- package/package.json +1 -1
|
@@ -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?: {
|
package/dist/rig/IcomProfiles.js
CHANGED
|
@@ -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. */
|