hamlib 0.4.3 → 0.4.4
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 +6 -3
- package/index.d.ts +15 -3
- package/lib/index.js +9 -3
- package/lib/index.mjs +3 -3
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/libhamlib.4.dylib +0 -0
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x64/libhamlib.4.dylib +0 -0
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-arm64/libhamlib.so +0 -0
- package/prebuilds/linux-arm64/libhamlib.so.4 +0 -0
- package/prebuilds/linux-arm64/libhamlib.so.4.0.7 +0 -0
- package/prebuilds/linux-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/libhamlib.so +0 -0
- package/prebuilds/linux-x64/libhamlib.so.4 +0 -0
- package/prebuilds/linux-x64/libhamlib.so.4.0.7 +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/prebuilds/win32-x64/hamlib_shim.dll +0 -0
- package/prebuilds/win32-x64/node.napi.node +0 -0
- package/src/hamlib.cpp +21 -9
- package/src/shim/hamlib_shim.h +1 -0
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ For faster installation or offline environments, you can manually install precom
|
|
|
40
40
|
## Quick Start
|
|
41
41
|
|
|
42
42
|
```javascript
|
|
43
|
-
const { HamLib, Rotator } = require('hamlib');
|
|
43
|
+
const { HamLib, Rotator, PASSBAND } = require('hamlib');
|
|
44
44
|
|
|
45
45
|
async function main() {
|
|
46
46
|
// Create rig instance (model 1035 = FT-991A)
|
|
@@ -50,7 +50,7 @@ async function main() {
|
|
|
50
50
|
|
|
51
51
|
// Basic operations
|
|
52
52
|
await rig.setFrequency(144390000); // 144.39 MHz
|
|
53
|
-
await rig.setMode('FM');
|
|
53
|
+
await rig.setMode('FM', 'nochange');
|
|
54
54
|
|
|
55
55
|
const freq = await rig.getFrequency();
|
|
56
56
|
const mode = await rig.getMode();
|
|
@@ -116,6 +116,9 @@ const freq = await rig.getFrequency();
|
|
|
116
116
|
|
|
117
117
|
// Mode
|
|
118
118
|
await rig.setMode('USB');
|
|
119
|
+
await rig.setMode('USB', 'nochange');
|
|
120
|
+
await rig.setMode('USB', PASSBAND.NOCHANGE);
|
|
121
|
+
await rig.setMode('USB', rig.getPassbandNormal('USB'));
|
|
119
122
|
const mode = await rig.getMode();
|
|
120
123
|
|
|
121
124
|
// VFO
|
|
@@ -360,7 +363,7 @@ async function repeaterOperation() {
|
|
|
360
363
|
|
|
361
364
|
// Set up for 2m repeater
|
|
362
365
|
await rig.setFrequency(145500000); // 145.500 MHz
|
|
363
|
-
await rig.setMode('FM');
|
|
366
|
+
await rig.setMode('FM', 'nochange');
|
|
364
367
|
await rig.setRepeaterShift('MINUS'); // Negative offset
|
|
365
368
|
await rig.setRepeaterOffset(600000); // 600 kHz offset
|
|
366
369
|
await rig.setTuningStep(12500); // 12.5 kHz steps
|
package/index.d.ts
CHANGED
|
@@ -147,6 +147,13 @@ type VFO =
|
|
|
147
147
|
*/
|
|
148
148
|
type RadioMode = 'USB' | 'LSB' | 'FM' | 'PKTFM' | 'AM' | 'CW' | 'RTTY' | 'DIG' | string;
|
|
149
149
|
|
|
150
|
+
type PassbandSelector = 'narrow' | 'wide' | 'normal' | 'nochange' | number;
|
|
151
|
+
|
|
152
|
+
interface PassbandConstants {
|
|
153
|
+
NORMAL: 0;
|
|
154
|
+
NOCHANGE: -1;
|
|
155
|
+
}
|
|
156
|
+
|
|
150
157
|
/**
|
|
151
158
|
* Frequency range information
|
|
152
159
|
*/
|
|
@@ -604,14 +611,16 @@ declare class HamLib extends EventEmitter {
|
|
|
604
611
|
/**
|
|
605
612
|
* Set radio mode
|
|
606
613
|
* @param mode Radio mode (such as 'USB', 'LSB', 'FM', 'PKTFM')
|
|
607
|
-
* @param bandwidth Optional bandwidth
|
|
614
|
+
* @param bandwidth Optional bandwidth selector ('narrow', 'wide', 'normal', 'nochange') or width in Hz
|
|
608
615
|
* @param vfo Optional VFO to set mode on ('VFOA' or 'VFOB'). If not specified, uses current VFO
|
|
609
616
|
* @example
|
|
610
617
|
* await rig.setMode('USB');
|
|
611
618
|
* await rig.setMode('FM', 'narrow');
|
|
619
|
+
* await rig.setMode('USB', 'nochange');
|
|
620
|
+
* await rig.setMode('USB', PASSBAND.NOCHANGE);
|
|
612
621
|
* await rig.setMode('USB', 'wide', 'VFOA');
|
|
613
622
|
*/
|
|
614
|
-
setMode(mode: RadioMode, bandwidth?:
|
|
623
|
+
setMode(mode: RadioMode, bandwidth?: PassbandSelector, vfo?: VFO): Promise<number>;
|
|
615
624
|
|
|
616
625
|
/**
|
|
617
626
|
* Set PTT (Push-to-Talk) status
|
|
@@ -1711,8 +1720,11 @@ interface VfoInfo {
|
|
|
1711
1720
|
declare const nodeHamlib: {
|
|
1712
1721
|
HamLib: typeof HamLib;
|
|
1713
1722
|
Rotator: typeof Rotator;
|
|
1723
|
+
PASSBAND: PassbandConstants;
|
|
1714
1724
|
};
|
|
1715
1725
|
|
|
1726
|
+
declare const PASSBAND: PassbandConstants;
|
|
1727
|
+
|
|
1716
1728
|
// Export types for use elsewhere
|
|
1717
1729
|
export { ConnectionInfo, ModeInfo, SupportedRigInfo, SupportedRotatorInfo, AntennaInfo, RotatorConnectionInfo,
|
|
1718
1730
|
RotatorPosition, RotatorStatus, RotatorDirection, RotatorResetType, RotatorCaps, VFO, RadioMode, MemoryChannelData,
|
|
@@ -1722,7 +1734,7 @@ export { ConnectionInfo, ModeInfo, SupportedRigInfo, SupportedRotatorInfo, Anten
|
|
|
1722
1734
|
HamlibConfigFieldType, HamlibConfigFieldDescriptor, HamlibPortType, HamlibPortCaps,
|
|
1723
1735
|
SpectrumScopeInfo, SpectrumModeInfo, SpectrumAverageModeInfo, SpectrumLine,
|
|
1724
1736
|
SpectrumCapabilities, SpectrumSupportSummary, SpectrumConfig, SpectrumDisplayState,
|
|
1725
|
-
ClockInfo, VfoInfo, HamLib, Rotator };
|
|
1737
|
+
ClockInfo, VfoInfo, PassbandSelector, PassbandConstants, HamLib, Rotator, PASSBAND };
|
|
1726
1738
|
|
|
1727
1739
|
// Support both CommonJS and ES module exports
|
|
1728
1740
|
// @ts-ignore
|
package/lib/index.js
CHANGED
|
@@ -4,6 +4,11 @@ const nodeGypBuild = require('node-gyp-build');
|
|
|
4
4
|
// Ensure loader resolves from package root (contains prebuilds/ and build/)
|
|
5
5
|
const nativeModule = nodeGypBuild(path.join(__dirname, '..'));
|
|
6
6
|
|
|
7
|
+
const PASSBAND = Object.freeze({
|
|
8
|
+
NORMAL: 0,
|
|
9
|
+
NOCHANGE: -1,
|
|
10
|
+
});
|
|
11
|
+
|
|
7
12
|
/**
|
|
8
13
|
* HamLib class for controlling amateur radio devices
|
|
9
14
|
*
|
|
@@ -110,7 +115,7 @@ class HamLib extends EventEmitter {
|
|
|
110
115
|
/**
|
|
111
116
|
* Set radio mode
|
|
112
117
|
* @param {string} mode - Radio mode ('USB', 'LSB', 'FM', 'PKTFM', etc.)
|
|
113
|
-
* @param {string} [bandwidth] - Optional bandwidth ('narrow', 'wide')
|
|
118
|
+
* @param {string|number} [bandwidth] - Optional bandwidth selector ('narrow', 'wide', 'normal', 'nochange') or width in Hz
|
|
114
119
|
* @param {string} [vfo] - Optional VFO ('VFOA' or 'VFOB')
|
|
115
120
|
*/
|
|
116
121
|
async setMode(mode, bandwidth, vfo) {
|
|
@@ -1549,7 +1554,8 @@ class Rotator extends EventEmitter {
|
|
|
1549
1554
|
}
|
|
1550
1555
|
|
|
1551
1556
|
// Export for CommonJS
|
|
1552
|
-
module.exports = { HamLib, Rotator };
|
|
1557
|
+
module.exports = { HamLib, Rotator, PASSBAND };
|
|
1553
1558
|
module.exports.HamLib = HamLib;
|
|
1554
1559
|
module.exports.Rotator = Rotator;
|
|
1555
|
-
module.exports.
|
|
1560
|
+
module.exports.PASSBAND = PASSBAND;
|
|
1561
|
+
module.exports.default = { HamLib, Rotator, PASSBAND };
|
package/lib/index.mjs
CHANGED
|
@@ -7,8 +7,8 @@ const __dirname = path.dirname(__filename);
|
|
|
7
7
|
const require = createRequire(import.meta.url);
|
|
8
8
|
|
|
9
9
|
// Import the CommonJS module
|
|
10
|
-
const { HamLib, Rotator } = require('./index.js');
|
|
10
|
+
const { HamLib, Rotator, PASSBAND } = require('./index.js');
|
|
11
11
|
|
|
12
12
|
// Export for ES modules
|
|
13
|
-
export { HamLib, Rotator };
|
|
14
|
-
export default { HamLib, Rotator };
|
|
13
|
+
export { HamLib, Rotator, PASSBAND };
|
|
14
|
+
export default { HamLib, Rotator, PASSBAND };
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/src/hamlib.cpp
CHANGED
|
@@ -2567,16 +2567,28 @@ Napi::Value NodeHamLib::SetMode(const Napi::CallbackInfo & info) {
|
|
|
2567
2567
|
int vfo = SHIM_RIG_VFO_CURR;
|
|
2568
2568
|
|
|
2569
2569
|
// Parse parameters: setMode(mode) or setMode(mode, bandwidth) or setMode(mode, bandwidth, vfo)
|
|
2570
|
-
if (info.Length() >= 2
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2570
|
+
if (info.Length() >= 2) {
|
|
2571
|
+
if (info[1].IsNumber()) {
|
|
2572
|
+
bandwidth = info[1].As<Napi::Number>().Int32Value();
|
|
2573
|
+
} else if (info[1].IsString()) {
|
|
2574
|
+
std::string bandstr = info[1].As<Napi::String>().Utf8Value();
|
|
2575
|
+
if (bandstr == "narrow") {
|
|
2576
|
+
bandwidth = shim_rig_passband_narrow(my_rig, mode);
|
|
2577
|
+
} else if (bandstr == "wide") {
|
|
2578
|
+
bandwidth = shim_rig_passband_wide(my_rig, mode);
|
|
2579
|
+
} else if (bandstr == "normal") {
|
|
2580
|
+
bandwidth = SHIM_RIG_PASSBAND_NORMAL;
|
|
2581
|
+
} else if (bandstr == "nochange") {
|
|
2582
|
+
bandwidth = SHIM_RIG_PASSBAND_NOCHANGE;
|
|
2583
|
+
} else {
|
|
2584
|
+
// If second parameter is not a known passband selector, treat it as VFO
|
|
2585
|
+
vfo = parseVfoParameter(info, 1, SHIM_RIG_VFO_CURR);
|
|
2586
|
+
RETURN_NULL_IF_INVALID_VFO(vfo);
|
|
2587
|
+
}
|
|
2576
2588
|
} else {
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2589
|
+
Napi::TypeError::New(env, "Bandwidth must be a string selector or numeric passband width")
|
|
2590
|
+
.ThrowAsJavaScriptException();
|
|
2591
|
+
return env.Null();
|
|
2580
2592
|
}
|
|
2581
2593
|
}
|
|
2582
2594
|
|
package/src/shim/hamlib_shim.h
CHANGED