@jtarrio/webrtlsdr 0.0.2 → 0.1.0
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 +25 -7
- package/dist/demod/demodulator.d.ts +1 -1
- package/dist/demod/demodulator.d.ts.map +1 -1
- package/dist/demod/demodulator.js.map +1 -1
- package/dist/demod/{scheme.d.ts → modes.d.ts} +29 -10
- package/dist/demod/modes.d.ts.map +1 -0
- package/dist/demod/modes.js +141 -0
- package/dist/demod/modes.js.map +1 -0
- package/dist/demod/sample-counter.d.ts +8 -3
- package/dist/demod/sample-counter.d.ts.map +1 -1
- package/dist/demod/sample-counter.js +23 -5
- package/dist/demod/sample-counter.js.map +1 -1
- package/dist/demod/scheme-am.d.ts +1 -1
- package/dist/demod/scheme-am.d.ts.map +1 -1
- package/dist/demod/scheme-cw.d.ts +1 -1
- package/dist/demod/scheme-cw.d.ts.map +1 -1
- package/dist/demod/scheme-nbfm.d.ts +1 -1
- package/dist/demod/scheme-nbfm.d.ts.map +1 -1
- package/dist/demod/scheme-ssb.d.ts +1 -1
- package/dist/demod/scheme-ssb.d.ts.map +1 -1
- package/dist/demod/scheme-wbfm.d.ts +1 -1
- package/dist/demod/scheme-wbfm.d.ts.map +1 -1
- package/dist/demod/spectrum.d.ts +6 -0
- package/dist/demod/spectrum.d.ts.map +1 -1
- package/dist/demod/spectrum.js +6 -0
- package/dist/demod/spectrum.js.map +1 -1
- package/dist/radio/sample_receiver.d.ts +4 -0
- package/dist/radio/sample_receiver.d.ts.map +1 -1
- package/dist/radio/sample_receiver.js +4 -0
- package/dist/radio/sample_receiver.js.map +1 -1
- package/dist/radio.d.ts +2 -0
- package/dist/radio.d.ts.map +1 -0
- package/dist/radio.js +2 -0
- package/dist/radio.js.map +1 -0
- package/dist/rtlsdr.d.ts +3 -0
- package/dist/rtlsdr.d.ts.map +1 -0
- package/dist/rtlsdr.js +3 -0
- package/dist/rtlsdr.js.map +1 -0
- package/package.json +2 -2
- package/dist/demod/scheme.d.ts.map +0 -1
- package/dist/demod/scheme.js +0 -96
- package/dist/demod/scheme.js.map +0 -1
package/README.md
CHANGED
|
@@ -30,29 +30,44 @@ I want to write a comprehensive set of documentation, but in the meantime, here
|
|
|
30
30
|
> - You must connect to the RTL-SDR device in response to a user gesture (a click or tap, generally.) You cannot, for example, connect to it automatically on opening a webpage or after a timeout.
|
|
31
31
|
> - Your web page must be served through a secure context. That means a HTTPS connection or a connection to `localhost`.
|
|
32
32
|
|
|
33
|
+
> [!NOTE]
|
|
34
|
+
> This is a new library and the API is still being refined. For `0.x.y` versions, the `x` component will be incremented when there are incompatible API changes.
|
|
35
|
+
|
|
33
36
|
### High-level access to RTL-SDR (demodulate and play through the computer's speakers)
|
|
34
37
|
|
|
38
|
+
This program is a complete stereo FM radio receiver tuned for 88.5 MHz.
|
|
39
|
+
|
|
35
40
|
```typescript
|
|
36
41
|
import { Demodulator } from "@jtarrio/webrtlsdr/demod/demodulator";
|
|
37
|
-
import { getMode } from "@jtarrio/webrtlsdr/demod/
|
|
38
|
-
import { Radio } from "@jtarrio/webrtlsdr/radio
|
|
39
|
-
import { RTL2832U_Provider } from "@jtarrio/webrtlsdr/rtlsdr
|
|
42
|
+
import { getMode } from "@jtarrio/webrtlsdr/demod/modes";
|
|
43
|
+
import { Radio } from "@jtarrio/webrtlsdr/radio";
|
|
44
|
+
import { RTL2832U_Provider } from "@jtarrio/webrtlsdr/rtlsdr";
|
|
40
45
|
|
|
41
46
|
const sampleRate = 1024000;
|
|
42
47
|
let demodulator = new Demodulator(sampleRate);
|
|
43
|
-
let radio = new Radio(new RTL2832U_Provider(),
|
|
48
|
+
let radio = new Radio(new RTL2832U_Provider(), demodulator, sampleRate);
|
|
44
49
|
|
|
45
50
|
radio.setFrequency(88500000);
|
|
46
51
|
demodulator.setVolume(1);
|
|
47
52
|
demodulator.setMode(getMode("WBFM"));
|
|
48
53
|
|
|
49
|
-
|
|
50
|
-
getElementById("
|
|
54
|
+
document
|
|
55
|
+
.getElementById("playButton")
|
|
56
|
+
.addEventListener("click", () => radio.start());
|
|
57
|
+
document
|
|
58
|
+
.getElementById("stopButton")
|
|
59
|
+
.addEventListener("click", () => radio.stop());
|
|
51
60
|
```
|
|
52
61
|
|
|
62
|
+
You can also see a full example at [`examples/highlevel`](examples/highlevel/script.js).
|
|
63
|
+
|
|
53
64
|
### Low-level access (read samples straight from the stick)
|
|
54
65
|
|
|
66
|
+
This program connects to the RTL-SDR stick, tunes to 88.5 MHz, reads 65536 samples, and closes the connection.
|
|
67
|
+
|
|
55
68
|
```typescript
|
|
69
|
+
import { RTL2832U_Provider } from "@jtarrio/webrtlsdr/rtlsdr";
|
|
70
|
+
|
|
56
71
|
let provider = new RTL2832U_Provider();
|
|
57
72
|
let device = await provider.get();
|
|
58
73
|
await device.setSampleRate(1024000);
|
|
@@ -60,10 +75,13 @@ await device.setCenterFrequency(88500000);
|
|
|
60
75
|
await device.setGain(null);
|
|
61
76
|
await device.resetBuffer();
|
|
62
77
|
let samples = await device.readSamples(65536);
|
|
78
|
+
await device.close();
|
|
63
79
|
```
|
|
64
80
|
|
|
81
|
+
You can also see a full example at [`examples/lowlevel`](examples/lowlevel/script.js).
|
|
82
|
+
|
|
65
83
|
## Acknowledgements
|
|
66
84
|
|
|
67
|
-
This is a spinoff of https://github.com/jtarrio/radioreceiver, which is, in turn, a fork of https://github.com/google/radioreceiver. I am the original author, but I was employed by Google at the time.
|
|
85
|
+
This is a spinoff of https://github.com/jtarrio/radioreceiver, which is, in turn, a fork of https://github.com/google/radioreceiver. (I am the original author, but I was employed by Google at the time.)
|
|
68
86
|
|
|
69
87
|
Kudos and thanks to the [RTL-SDR project](http://sdr.osmocom.org/trac/wiki/rtl-sdr) for figuring out the magic numbers needed to drive the USB tuner.
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* 'demodulator' event containing the new value. This makes it easy
|
|
10
10
|
* to observe the demodulator's state.
|
|
11
11
|
*/
|
|
12
|
-
import { Mode } from "./
|
|
12
|
+
import { Mode } from "./modes";
|
|
13
13
|
import { SampleReceiver } from "../radio/sample_receiver";
|
|
14
14
|
/** The demodulator class. */
|
|
15
15
|
export declare class Demodulator extends EventTarget implements SampleReceiver {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demodulator.d.ts","sourceRoot":"","sources":["../../src/demod/demodulator.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;GAUG;AAEH,OAAO,EAAoB,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"demodulator.d.ts","sourceRoot":"","sources":["../../src/demod/demodulator.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;GAUG;AAEH,OAAO,EAAoB,IAAI,EAAE,MAAM,SAAS,CAAC;AAOjD,OAAO,EAAwB,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEhF,6BAA6B;AAC7B,qBAAa,WAAY,SAAQ,WAAY,YAAW,cAAc;IACxD,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAUlC,+BAA+B;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,6DAA6D;IAC7D,OAAO,CAAC,cAAc,CAAiB;IACvC,kDAAkD;IAClD,OAAO,CAAC,IAAI,CAAO;IACnB,6BAA6B;IAC7B,OAAO,CAAC,MAAM,CAAmB;IACjC,+CAA+C;IAC/C,OAAO,CAAC,eAAe,CAAS;IAChC,iDAAiD;IACjD,OAAO,CAAC,YAAY,CAAU;IAC9B,2CAA2C;IAC3C,OAAO,CAAC,kBAAkB,CAAC,CAAY;IAEvC,yCAAyC;IACzC,OAAO,CAAC,IAAI,EAAE,IAAI;IAKlB,iDAAiD;IACjD,OAAO,IAAI,IAAI;IAIf,oCAAoC;IACpC,kBAAkB,CAAC,MAAM,EAAE,MAAM;IAIjC,4CAA4C;IAC5C,kBAAkB;IAIlB,2FAA2F;IAC3F,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAI1D,gDAAgD;IAChD,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,8CAA8C;IAC9C,SAAS;IAIT,kFAAkF;IAClF,OAAO,CAAC,SAAS;IAqBjB,+BAA+B;IAC/B,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKvC,8BAA8B;IAC9B,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAmBzE,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc;IAI7C,gBAAgB,CACd,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI,EAC/C,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,GACtD,IAAI;IACP,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,GAAG,IAAI,EACnD,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,GACtD,IAAI;CAYR;AAED,qBAAa,iBAAkB,SAAQ,WAAW,CAAC,OAAO,CAAC;gBAC7C,MAAM,EAAE,OAAO;CAG5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demodulator.js","sourceRoot":"","sources":["../../src/demod/demodulator.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAejC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAkB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"demodulator.js","sourceRoot":"","sources":["../../src/demod/demodulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,13 +66,32 @@ export type Scheme = Mode["scheme"];
|
|
|
66
66
|
export declare function getSchemes(): Array<Scheme>;
|
|
67
67
|
/** Returns the default mode for the given scheme. */
|
|
68
68
|
export declare function getMode(scheme: Scheme): Mode;
|
|
69
|
-
|
|
70
|
-
export declare function
|
|
71
|
-
export declare function
|
|
72
|
-
|
|
73
|
-
export declare
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
69
|
+
/** Returns accessors for the mode's or scheme's parameters. */
|
|
70
|
+
export declare function getParameters(mode: Mode): ModeParameters;
|
|
71
|
+
export declare function getParameters(scheme: Scheme): SchemeParameters;
|
|
72
|
+
/** A class to inspect and modify a mode's parameters. */
|
|
73
|
+
export declare class ModeParameters {
|
|
74
|
+
mode: Mode;
|
|
75
|
+
constructor(mode: Mode);
|
|
76
|
+
hasStereo(): boolean;
|
|
77
|
+
getStereo(): boolean;
|
|
78
|
+
setStereo(stereo: boolean): ModeParameters;
|
|
79
|
+
hasBandwidth(): boolean;
|
|
80
|
+
getBandwidth(): number;
|
|
81
|
+
setBandwidth(bandwidth: number): ModeParameters;
|
|
82
|
+
hasSquelch(): boolean;
|
|
83
|
+
getSquelch(): number;
|
|
84
|
+
setSquelch(squelch: number): ModeParameters;
|
|
85
|
+
}
|
|
86
|
+
/** A class to inspect a scheme's parameters. */
|
|
87
|
+
export declare class SchemeParameters {
|
|
88
|
+
scheme: Scheme;
|
|
89
|
+
constructor(scheme: Scheme);
|
|
90
|
+
hasStereo(): boolean;
|
|
91
|
+
setStereo(stereo: boolean): ModeParameters;
|
|
92
|
+
hasBandwidth(): boolean;
|
|
93
|
+
setBandwidth(bandwidth: number): ModeParameters;
|
|
94
|
+
hasSquelch(): boolean;
|
|
95
|
+
setSquelch(squelch: number): ModeParameters;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=modes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modes.d.ts","sourceRoot":"","sources":["../../src/demod/modes.ts"],"names":[],"mappings":"AAcA,8DAA8D;AAC9D,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,OAAO,IAAI,IAAI,CAAC;IAChB,0DAA0D;IAC1D,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B;;;;;;OAMG;IACH,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAAC;CAC/E;AAED,0BAA0B;AAC1B,MAAM,MAAM,WAAW,GAAG;IACxB,oBAAoB;IACpB,IAAI,EAAE,YAAY,CAAC;IACnB,qBAAqB;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,+BAA+B;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,6BAA6B;AAC7B,MAAM,MAAM,IAAI;AACd,qCAAqC;AACnC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE;AACrC,uCAAuC;GACrC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AACnD,4BAA4B;GAC1B;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AACtD,iCAAiC;GAC/B;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AACvD,iCAAiC;GAC/B;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AACvD,uBAAuB;GACrB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,oDAAoD;AACpD,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEpC,yCAAyC;AACzC,wBAAgB,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,CAE1C;AAED,qDAAqD;AACrD,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAe5C;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,CAAC;AAC1D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC;AAQhE,yDAAyD;AACzD,qBAAa,cAAc;IACN,IAAI,EAAE,IAAI;gBAAV,IAAI,EAAE,IAAI;IAE7B,SAAS,IAAI,OAAO;IAIpB,SAAS,IAAI,OAAO;IAIpB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc;IAM1C,YAAY,IAAI,OAAO;IAIvB,YAAY,IAAI,MAAM;IAWtB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAiC/C,UAAU,IAAI,OAAO;IAIrB,UAAU,IAAI,MAAM;IAKpB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;CAK5C;AAED,gDAAgD;AAChD,qBAAa,gBAAgB;IACR,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;IAEjC,SAAS,IAAI,OAAO;IAIpB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc;IAI1C,YAAY,IAAI,OAAO;IAIvB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAI/C,UAAU,IAAI,OAAO;IAIrB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;CAG5C"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
// Copyright 2024 Jacobo Tarrio Barreiro. All rights reserved.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
/** Returns the list of known schemes. */
|
|
15
|
+
export function getSchemes() {
|
|
16
|
+
return ["WBFM", "NBFM", "AM", "USB", "LSB", "CW"];
|
|
17
|
+
}
|
|
18
|
+
/** Returns the default mode for the given scheme. */
|
|
19
|
+
export function getMode(scheme) {
|
|
20
|
+
switch (scheme) {
|
|
21
|
+
case "WBFM":
|
|
22
|
+
return { scheme: "WBFM", stereo: true };
|
|
23
|
+
case "NBFM":
|
|
24
|
+
return { scheme: "NBFM", maxF: 5000, squelch: 0 };
|
|
25
|
+
case "AM":
|
|
26
|
+
return { scheme: "AM", bandwidth: 15000, squelch: 0 };
|
|
27
|
+
case "USB":
|
|
28
|
+
return { scheme: "USB", bandwidth: 2800, squelch: 0 };
|
|
29
|
+
case "LSB":
|
|
30
|
+
return { scheme: "LSB", bandwidth: 2800, squelch: 0 };
|
|
31
|
+
case "CW":
|
|
32
|
+
return { scheme: "CW", bandwidth: 50 };
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export function getParameters(mode) {
|
|
36
|
+
if (typeof mode === "string")
|
|
37
|
+
return new SchemeParameters(mode);
|
|
38
|
+
return new ModeParameters(mode);
|
|
39
|
+
}
|
|
40
|
+
/** A class to inspect and modify a mode's parameters. */
|
|
41
|
+
export class ModeParameters {
|
|
42
|
+
mode;
|
|
43
|
+
constructor(mode) {
|
|
44
|
+
this.mode = mode;
|
|
45
|
+
}
|
|
46
|
+
hasStereo() {
|
|
47
|
+
return this.mode.scheme == "WBFM";
|
|
48
|
+
}
|
|
49
|
+
getStereo() {
|
|
50
|
+
return this.mode.scheme == "WBFM" && this.mode.stereo;
|
|
51
|
+
}
|
|
52
|
+
setStereo(stereo) {
|
|
53
|
+
if (this.mode.scheme == "WBFM")
|
|
54
|
+
this.mode = { ...this.mode, stereo: stereo };
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
hasBandwidth() {
|
|
58
|
+
return this.mode.scheme != "WBFM";
|
|
59
|
+
}
|
|
60
|
+
getBandwidth() {
|
|
61
|
+
switch (this.mode.scheme) {
|
|
62
|
+
case "WBFM":
|
|
63
|
+
return 150000;
|
|
64
|
+
case "NBFM":
|
|
65
|
+
return 2 * this.mode.maxF;
|
|
66
|
+
default:
|
|
67
|
+
return this.mode.bandwidth;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
setBandwidth(bandwidth) {
|
|
71
|
+
switch (this.mode.scheme) {
|
|
72
|
+
case "WBFM":
|
|
73
|
+
break;
|
|
74
|
+
case "NBFM":
|
|
75
|
+
this.mode = {
|
|
76
|
+
...this.mode,
|
|
77
|
+
maxF: Math.max(125, Math.min(bandwidth / 2, 15000)),
|
|
78
|
+
};
|
|
79
|
+
break;
|
|
80
|
+
case "AM":
|
|
81
|
+
this.mode = {
|
|
82
|
+
...this.mode,
|
|
83
|
+
bandwidth: Math.max(250, Math.min(bandwidth, 30000)),
|
|
84
|
+
};
|
|
85
|
+
break;
|
|
86
|
+
case "USB":
|
|
87
|
+
case "LSB":
|
|
88
|
+
this.mode = {
|
|
89
|
+
...this.mode,
|
|
90
|
+
bandwidth: Math.max(10, Math.min(bandwidth, 15000)),
|
|
91
|
+
};
|
|
92
|
+
break;
|
|
93
|
+
case "CW":
|
|
94
|
+
this.mode = {
|
|
95
|
+
...this.mode,
|
|
96
|
+
bandwidth: Math.max(5, Math.min(bandwidth, 1000)),
|
|
97
|
+
};
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
return this;
|
|
101
|
+
}
|
|
102
|
+
hasSquelch() {
|
|
103
|
+
return this.mode.scheme != "WBFM" && this.mode.scheme != "CW";
|
|
104
|
+
}
|
|
105
|
+
getSquelch() {
|
|
106
|
+
if (this.mode.scheme == "WBFM" || this.mode.scheme == "CW")
|
|
107
|
+
return 0;
|
|
108
|
+
return this.mode.squelch;
|
|
109
|
+
}
|
|
110
|
+
setSquelch(squelch) {
|
|
111
|
+
if (this.mode.scheme != "WBFM" && this.mode.scheme != "CW")
|
|
112
|
+
this.mode = { ...this.mode, squelch: Math.max(0, Math.min(squelch, 6)) };
|
|
113
|
+
return this;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/** A class to inspect a scheme's parameters. */
|
|
117
|
+
export class SchemeParameters {
|
|
118
|
+
scheme;
|
|
119
|
+
constructor(scheme) {
|
|
120
|
+
this.scheme = scheme;
|
|
121
|
+
}
|
|
122
|
+
hasStereo() {
|
|
123
|
+
return this.scheme == "WBFM";
|
|
124
|
+
}
|
|
125
|
+
setStereo(stereo) {
|
|
126
|
+
return getParameters(getMode(this.scheme)).setStereo(stereo);
|
|
127
|
+
}
|
|
128
|
+
hasBandwidth() {
|
|
129
|
+
return this.scheme != "WBFM";
|
|
130
|
+
}
|
|
131
|
+
setBandwidth(bandwidth) {
|
|
132
|
+
return getParameters(getMode(this.scheme)).setBandwidth(bandwidth);
|
|
133
|
+
}
|
|
134
|
+
hasSquelch() {
|
|
135
|
+
return this.scheme != "WBFM" && this.scheme != "CW";
|
|
136
|
+
}
|
|
137
|
+
setSquelch(squelch) {
|
|
138
|
+
return getParameters(getMode(this.scheme)).setSquelch(squelch);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=modes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modes.js","sourceRoot":"","sources":["../../src/demod/modes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { SampleReceiver } from "../radio/sample_receiver";
|
|
2
|
-
|
|
3
|
-
constructor();
|
|
4
|
-
}
|
|
2
|
+
/** A SampleReceiver that counts received samples to send a `sample-click` event periodically. */
|
|
5
3
|
export declare class SampleCounter extends EventTarget implements SampleReceiver {
|
|
6
4
|
private sampleRate;
|
|
7
5
|
private clicksPerSecond?;
|
|
6
|
+
/**
|
|
7
|
+
* @param sampleRate The initial sample rate.
|
|
8
|
+
* @param clicksPerSecond The number of events per second.
|
|
9
|
+
*/
|
|
8
10
|
constructor(sampleRate: number, clicksPerSecond?: number | undefined);
|
|
9
11
|
private samplesPerClick?;
|
|
10
12
|
private countedSamples;
|
|
@@ -15,4 +17,7 @@ export declare class SampleCounter extends EventTarget implements SampleReceiver
|
|
|
15
17
|
addEventListener(type: "sample-click", callback: (e: SampleClickEvent) => void | null, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
16
18
|
addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
17
19
|
}
|
|
20
|
+
export declare class SampleClickEvent extends Event {
|
|
21
|
+
constructor();
|
|
22
|
+
}
|
|
18
23
|
//# sourceMappingURL=sample-counter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sample-counter.d.ts","sourceRoot":"","sources":["../../src/demod/sample-counter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sample-counter.d.ts","sourceRoot":"","sources":["../../src/demod/sample-counter.ts"],"names":[],"mappings":"AAcA,OAAO,EAAwB,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEhF,iGAAiG;AACjG,qBAAa,aAAc,SAAQ,WAAY,YAAW,cAAc;IAK1D,OAAO,CAAC,UAAU;IAAU,OAAO,CAAC,eAAe,CAAC;IAJhE;;;OAGG;gBACiB,UAAU,EAAE,MAAM,EAAU,eAAe,CAAC,EAAE,MAAM,YAAA;IAMxE,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,kBAAkB;IAM1B,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKvC,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI;IAWtD,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc;IAI7C,gBAAgB,CACd,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI,EAC9C,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,GACtD,IAAI;IACP,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,GAAG,IAAI,EACnD,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,GACtD,IAAI;CAYR;AAED,qBAAa,gBAAiB,SAAQ,KAAK;;CAI1C"}
|
|
@@ -1,12 +1,25 @@
|
|
|
1
|
+
// Copyright 2024 Jacobo Tarrio Barreiro. All rights reserved.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
1
14
|
import { concatenateReceivers } from "../radio/sample_receiver";
|
|
2
|
-
|
|
3
|
-
constructor() {
|
|
4
|
-
super("sample-click");
|
|
5
|
-
}
|
|
6
|
-
}
|
|
15
|
+
/** A SampleReceiver that counts received samples to send a `sample-click` event periodically. */
|
|
7
16
|
export class SampleCounter extends EventTarget {
|
|
8
17
|
sampleRate;
|
|
9
18
|
clicksPerSecond;
|
|
19
|
+
/**
|
|
20
|
+
* @param sampleRate The initial sample rate.
|
|
21
|
+
* @param clicksPerSecond The number of events per second.
|
|
22
|
+
*/
|
|
10
23
|
constructor(sampleRate, clicksPerSecond) {
|
|
11
24
|
super();
|
|
12
25
|
this.sampleRate = sampleRate;
|
|
@@ -40,4 +53,9 @@ export class SampleCounter extends EventTarget {
|
|
|
40
53
|
super.addEventListener(type, callback, options);
|
|
41
54
|
}
|
|
42
55
|
}
|
|
56
|
+
export class SampleClickEvent extends Event {
|
|
57
|
+
constructor() {
|
|
58
|
+
super("sample-click");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
43
61
|
//# sourceMappingURL=sample-counter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sample-counter.js","sourceRoot":"","sources":["../../src/demod/sample-counter.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"sample-counter.js","sourceRoot":"","sources":["../../src/demod/sample-counter.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,oBAAoB,EAAkB,MAAM,0BAA0B,CAAC;AAEhF,iGAAiG;AACjG,MAAM,OAAO,aAAc,SAAQ,WAAW;IAKxB;IAA4B;IAJhD;;;OAGG;IACH,YAAoB,UAAkB,EAAU,eAAwB;QACtE,KAAK,EAAE,CAAC;QADU,eAAU,GAAV,UAAU,CAAQ;QAAU,oBAAe,GAAf,eAAe,CAAS;QAEtE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACjD,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC1B,CAAC;IAEO,eAAe,CAAU;IACzB,cAAc,CAAS;IAEvB,kBAAkB;QACxB,OAAO,IAAI,CAAC,eAAe,KAAK,SAAS;YACvC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;IACzD,CAAC;IAED,aAAa,CAAC,UAAkB;QAC9B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACnD,CAAC;IAED,cAAc,CAAC,CAAe,EAAE,CAAe;QAC7C,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,MAAM,CAAC;QAChC,IACE,IAAI,CAAC,eAAe,KAAK,SAAS;YAClC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc;YAE1C,OAAO;QACT,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,IAAoB;QAC1B,OAAO,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAYD,gBAAgB,CACd,IAAY,EACZ,QAAa,EACb,OAAuD;QAEvD,KAAK,CAAC,gBAAgB,CACpB,IAAI,EACJ,QAAqD,EACrD,OAAO,CACR,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC;QACE,KAAK,CAAC,cAAc,CAAC,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheme-am.d.ts","sourceRoot":"","sources":["../../src/demod/scheme-am.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"scheme-am.d.ts","sourceRoot":"","sources":["../../src/demod/scheme-am.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE9D,qDAAqD;AACrD,qBAAa,QAAS,YAAW,gBAAgB;IAQ7C,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IARd;;;;OAIG;gBAED,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,GAAG;QAAE,MAAM,EAAE,IAAI,CAAA;KAAE;IAUvC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,WAAW,CAAgB;IAEnC,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG;QAAE,MAAM,EAAE,IAAI,CAAA;KAAE;IAOrC;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAef"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheme-cw.d.ts","sourceRoot":"","sources":["../../src/demod/scheme-cw.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"scheme-cw.d.ts","sourceRoot":"","sources":["../../src/demod/scheme-cw.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAK9D,iDAAiD;AACjD,qBAAa,QAAS,YAAW,gBAAgB;IAG7C,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;gBAFZ,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,GAAG;QAAE,MAAM,EAAE,IAAI,CAAA;KAAE;IAWvC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,GAAG,CAAM;IAEjB,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG;QAAE,MAAM,EAAE,IAAI,CAAA;KAAE;IAOrC,8DAA8D;IAC9D,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAgBf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheme-nbfm.d.ts","sourceRoot":"","sources":["../../src/demod/scheme-nbfm.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"scheme-nbfm.d.ts","sourceRoot":"","sources":["../../src/demod/scheme-nbfm.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE9D,+CAA+C;AAC/C,qBAAa,UAAW,YAAW,gBAAgB;IAQ/C,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IARd;;;;OAIG;gBAED,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IAUzC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,WAAW,CAAgB;IAEnC,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IAQvC;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAef"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Demodulated, Mode, ModulationScheme } from "./
|
|
1
|
+
import { Demodulated, Mode, ModulationScheme } from "./modes";
|
|
2
2
|
/** A demodulator for single-sideband modulated signals. */
|
|
3
3
|
export declare class SchemeSSB implements ModulationScheme {
|
|
4
4
|
private outRate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheme-ssb.d.ts","sourceRoot":"","sources":["../../src/demod/scheme-ssb.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"scheme-ssb.d.ts","sourceRoot":"","sources":["../../src/demod/scheme-ssb.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE9D,2DAA2D;AAC3D,qBAAa,SAAU,YAAW,gBAAgB;IAS9C,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,GAAG;QAAE,MAAM,EAAE,KAAK,GAAG,KAAK,CAAA;KAAE;IAYhD,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,GAAG,CAAM;IAEjB,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG;QAAE,MAAM,EAAE,KAAK,GAAG,KAAK,CAAA;KAAE;IAM9C;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAgBf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheme-wbfm.d.ts","sourceRoot":"","sources":["../../src/demod/scheme-wbfm.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"scheme-wbfm.d.ts","sourceRoot":"","sources":["../../src/demod/scheme-wbfm.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE9D,6CAA6C;AAC7C,qBAAa,UAAW,YAAW,gBAAgB;IAS/C,OAAO,CAAC,IAAI;IARd;;;;OAIG;gBAED,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACP,IAAI,EAAE,IAAI,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IAqBzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAC,CAAqB;IACzC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,WAAW,CAAe;IAElC,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IAIvC;;;;;;;OAOG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAmCf"}
|
package/dist/demod/spectrum.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SampleReceiver } from "../radio/sample_receiver";
|
|
2
|
+
/** A sample receiver that computes the received signal's spectrum. */
|
|
2
3
|
export declare class Spectrum implements SampleReceiver {
|
|
3
4
|
constructor(fftSize?: number);
|
|
4
5
|
private I;
|
|
@@ -13,6 +14,11 @@ export declare class Spectrum implements SampleReceiver {
|
|
|
13
14
|
receiveSamples(I: Float32Array, Q: Float32Array, frequency: number): void;
|
|
14
15
|
andThen(next: SampleReceiver): SampleReceiver;
|
|
15
16
|
frequency(): number | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Populates the given array with the spectrum of the latest received signals.
|
|
19
|
+
* For best results, the array should have at least `size` entries; if it's smaller,
|
|
20
|
+
* it will be filled with whatever fits.
|
|
21
|
+
*/
|
|
16
22
|
getSpectrum(spectrum: Float32Array): void;
|
|
17
23
|
}
|
|
18
24
|
//# sourceMappingURL=spectrum.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spectrum.d.ts","sourceRoot":"","sources":["../../src/demod/spectrum.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAwB,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEhF,qBAAa,QAAS,YAAW,cAAc;gBACjC,OAAO,CAAC,EAAE,MAAM;IAc5B,OAAO,CAAC,CAAC,CAAoB;IAC7B,OAAO,CAAC,CAAC,CAAoB;IAC7B,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,KAAK,CAAU;IAEvB,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAKvB;IAED,IAAI,IAAI,IAPU,MAAM,CASvB;IAED,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAE9B,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAOzE,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc;IAI7C,SAAS,IAAI,MAAM,GAAG,SAAS;IAI/B,WAAW,CAAC,QAAQ,EAAE,YAAY;CAanC"}
|
|
1
|
+
{"version":3,"file":"spectrum.d.ts","sourceRoot":"","sources":["../../src/demod/spectrum.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAwB,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEhF,sEAAsE;AACtE,qBAAa,QAAS,YAAW,cAAc;gBACjC,OAAO,CAAC,EAAE,MAAM;IAc5B,OAAO,CAAC,CAAC,CAAoB;IAC7B,OAAO,CAAC,CAAC,CAAoB;IAC7B,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,KAAK,CAAU;IAEvB,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAKvB;IAED,IAAI,IAAI,IAPU,MAAM,CASvB;IAED,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAE9B,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAOzE,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc;IAI7C,SAAS,IAAI,MAAM,GAAG,SAAS;IAI/B;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY;CAanC"}
|
package/dist/demod/spectrum.js
CHANGED
|
@@ -16,6 +16,7 @@ import { Float32RingBuffer } from "../dsp/buffers";
|
|
|
16
16
|
import { makeBlackmanWindow } from "../dsp/coefficients";
|
|
17
17
|
import { FFT } from "../dsp/fft";
|
|
18
18
|
import { concatenateReceivers } from "../radio/sample_receiver";
|
|
19
|
+
/** A sample receiver that computes the received signal's spectrum. */
|
|
19
20
|
export class Spectrum {
|
|
20
21
|
constructor(fftSize) {
|
|
21
22
|
if (fftSize === undefined) {
|
|
@@ -59,6 +60,11 @@ export class Spectrum {
|
|
|
59
60
|
frequency() {
|
|
60
61
|
return this.lastFrequency;
|
|
61
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Populates the given array with the spectrum of the latest received signals.
|
|
65
|
+
* For best results, the array should have at least `size` entries; if it's smaller,
|
|
66
|
+
* it will be filled with whatever fits.
|
|
67
|
+
*/
|
|
62
68
|
getSpectrum(spectrum) {
|
|
63
69
|
if (this.dirty) {
|
|
64
70
|
let fft = this.fft.transformCircularBuffers(this.I, this.Q);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spectrum.js","sourceRoot":"","sources":["../../src/demod/spectrum.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spectrum.js","sourceRoot":"","sources":["../../src/demod/spectrum.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,gCAAgC;AAEhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAkB,MAAM,0BAA0B,CAAC;AAEhF,sEAAsE;AACtE,MAAM,OAAO,QAAQ;IACnB,YAAY,OAAgB;QAC1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,CAAC,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAEO,CAAC,CAAoB;IACrB,CAAC,CAAoB;IACrB,aAAa,CAAqB;IAClC,GAAG,CAAM;IACT,UAAU,CAAe;IACzB,KAAK,CAAU;IAEvB,IAAI,IAAI,CAAC,OAAe;QACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,CAAS,IAAS,CAAC;IAEjC,cAAc,CAAC,CAAe,EAAE,CAAe,EAAE,SAAiB;QAChE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,IAAoB;QAC1B,OAAO,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,QAAsB;QAChC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBAChB,EAAE;wBACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,CAAC;CACF"}
|
|
@@ -7,5 +7,9 @@ export interface SampleReceiver {
|
|
|
7
7
|
/** Sets a sample receiver to be executed right after this one. */
|
|
8
8
|
andThen(next: SampleReceiver): SampleReceiver;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* A function that returns a sample receiver that executes the given receivers in sequence.
|
|
12
|
+
* Use it in your implementation of SampleReceiver.andThen.
|
|
13
|
+
*/
|
|
10
14
|
export declare function concatenateReceivers(prev: SampleReceiver, next: SampleReceiver): SampleReceiver;
|
|
11
15
|
//# sourceMappingURL=sample_receiver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sample_receiver.d.ts","sourceRoot":"","sources":["../../src/radio/sample_receiver.ts"],"names":[],"mappings":"AAcA,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAExC,mDAAmD;IACnD,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1E,kEAAkE;IAClE,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC;CAC/C;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,cAAc,GACnB,cAAc,CAahB"}
|
|
1
|
+
{"version":3,"file":"sample_receiver.d.ts","sourceRoot":"","sources":["../../src/radio/sample_receiver.ts"],"names":[],"mappings":"AAcA,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAExC,mDAAmD;IACnD,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1E,kEAAkE;IAClE,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC;CAC/C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,cAAc,GACnB,cAAc,CAahB"}
|
|
@@ -11,6 +11,10 @@
|
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
|
+
/**
|
|
15
|
+
* A function that returns a sample receiver that executes the given receivers in sequence.
|
|
16
|
+
* Use it in your implementation of SampleReceiver.andThen.
|
|
17
|
+
*/
|
|
14
18
|
export function concatenateReceivers(prev, next) {
|
|
15
19
|
let list = [];
|
|
16
20
|
if (prev instanceof ReceiverSequence) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sample_receiver.js","sourceRoot":"","sources":["../../src/radio/sample_receiver.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAcjC,MAAM,UAAU,oBAAoB,CAClC,IAAoB,EACpB,IAAoB;IAEpB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,IAAI,YAAY,gBAAgB,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,IAAI,YAAY,gBAAgB,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,gBAAgB;IACD;IAAnB,YAAmB,SAA2B;QAA3B,cAAS,GAAT,SAAS,CAAkB;IAAG,CAAC;IAElD,aAAa,CAAC,UAAkB;QAC9B,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,cAAc,CAAC,CAAe,EAAE,CAAe,EAAE,SAAiB;QAChE,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAoB;QAC1B,OAAO,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"sample_receiver.js","sourceRoot":"","sources":["../../src/radio/sample_receiver.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAcjC;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAoB,EACpB,IAAoB;IAEpB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,IAAI,YAAY,gBAAgB,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,IAAI,YAAY,gBAAgB,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,gBAAgB;IACD;IAAnB,YAAmB,SAA2B;QAA3B,cAAS,GAAT,SAAS,CAAkB;IAAG,CAAC;IAElD,aAAa,CAAC,UAAkB;QAC9B,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,cAAc,CAAC,CAAe,EAAE,CAAe,EAAE,SAAiB;QAChE,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAoB;QAC1B,OAAO,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF"}
|
package/dist/radio.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../src/radio.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
package/dist/radio.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio.js","sourceRoot":"","sources":["../src/radio.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
package/dist/rtlsdr.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rtlsdr.d.ts","sourceRoot":"","sources":["../src/rtlsdr.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|
package/dist/rtlsdr.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rtlsdr.js","sourceRoot":"","sources":["../src/rtlsdr.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jtarrio/webrtlsdr",
|
|
3
3
|
"description": "Access RTL-SDR devices and receive and demodulate radio signals from your web application",
|
|
4
|
-
"version": "0.0
|
|
4
|
+
"version": "0.1.0",
|
|
5
5
|
"author": "Jacobo Tarrio <jtarrio@gmail.com>",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
"files": ["./dist"],
|
|
15
15
|
"scripts": {
|
|
16
|
-
"build": "tsc"
|
|
16
|
+
"build": "rm -fR dist/ && tsc"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"typescript": "^5.6.3"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scheme.d.ts","sourceRoot":"","sources":["../../src/demod/scheme.ts"],"names":[],"mappings":"AAcA,8DAA8D;AAC9D,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,OAAO,IAAI,IAAI,CAAC;IAChB,0DAA0D;IAC1D,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B;;;;;;OAMG;IACH,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAAC;CAC/E;AAED,0BAA0B;AAC1B,MAAM,MAAM,WAAW,GAAG;IACxB,oBAAoB;IACpB,IAAI,EAAE,YAAY,CAAC;IACnB,qBAAqB;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,+BAA+B;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,6BAA6B;AAC7B,MAAM,MAAM,IAAI;AACd,qCAAqC;AACnC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE;AACrC,uCAAuC;GACrC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AACnD,4BAA4B;GAC1B;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AACtD,iCAAiC;GAC/B;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AACvD,iCAAiC;GAC/B;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AACvD,uBAAuB;GACrB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,oDAAoD;AACpD,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEpC,yCAAyC;AACzC,wBAAgB,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,CAE1C;AAED,qDAAqD;AACrD,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAe5C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,WAE5C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,WAEnC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAI5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,WAE/C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,UAStC;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAoBjE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,WAG7C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAG7C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAK7D"}
|
package/dist/demod/scheme.js
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
// Copyright 2024 Jacobo Tarrio Barreiro. All rights reserved.
|
|
2
|
-
//
|
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
// you may not use this file except in compliance with the License.
|
|
5
|
-
// You may obtain a copy of the License at
|
|
6
|
-
//
|
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
//
|
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
// See the License for the specific language governing permissions and
|
|
13
|
-
// limitations under the License.
|
|
14
|
-
/** Returns the list of known schemes. */
|
|
15
|
-
export function getSchemes() {
|
|
16
|
-
return ["WBFM", "NBFM", "AM", "USB", "LSB", "CW"];
|
|
17
|
-
}
|
|
18
|
-
/** Returns the default mode for the given scheme. */
|
|
19
|
-
export function getMode(scheme) {
|
|
20
|
-
switch (scheme) {
|
|
21
|
-
case "WBFM":
|
|
22
|
-
return { scheme: "WBFM", stereo: true };
|
|
23
|
-
case "NBFM":
|
|
24
|
-
return { scheme: "NBFM", maxF: 5000, squelch: 0 };
|
|
25
|
-
case "AM":
|
|
26
|
-
return { scheme: "AM", bandwidth: 15000, squelch: 0 };
|
|
27
|
-
case "USB":
|
|
28
|
-
return { scheme: "USB", bandwidth: 2800, squelch: 0 };
|
|
29
|
-
case "LSB":
|
|
30
|
-
return { scheme: "LSB", bandwidth: 2800, squelch: 0 };
|
|
31
|
-
case "CW":
|
|
32
|
-
return { scheme: "CW", bandwidth: 50 };
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
export function hasStereo(mode) {
|
|
36
|
-
return (typeof mode === "string" ? mode : mode.scheme) == "WBFM";
|
|
37
|
-
}
|
|
38
|
-
export function getStereo(mode) {
|
|
39
|
-
return mode.scheme == "WBFM" && mode.stereo;
|
|
40
|
-
}
|
|
41
|
-
export function withStereo(stereo, mode) {
|
|
42
|
-
mode = { ...mode };
|
|
43
|
-
if (mode.scheme == "WBFM")
|
|
44
|
-
mode.stereo = stereo;
|
|
45
|
-
return mode;
|
|
46
|
-
}
|
|
47
|
-
export function hasBandwidth(mode) {
|
|
48
|
-
return (typeof mode === "string" ? mode : mode.scheme) != "WBFM";
|
|
49
|
-
}
|
|
50
|
-
export function getBandwidth(mode) {
|
|
51
|
-
switch (mode.scheme) {
|
|
52
|
-
case "WBFM":
|
|
53
|
-
return 150000;
|
|
54
|
-
case "NBFM":
|
|
55
|
-
return mode.maxF * 2;
|
|
56
|
-
default:
|
|
57
|
-
return mode.bandwidth;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
export function withBandwidth(bandwidth, mode) {
|
|
61
|
-
mode = { ...mode };
|
|
62
|
-
switch (mode.scheme) {
|
|
63
|
-
case "WBFM":
|
|
64
|
-
break;
|
|
65
|
-
case "NBFM":
|
|
66
|
-
mode.maxF = Math.max(125, Math.min(bandwidth / 2, 15000));
|
|
67
|
-
break;
|
|
68
|
-
case "AM":
|
|
69
|
-
mode.bandwidth = Math.max(250, Math.min(bandwidth, 30000));
|
|
70
|
-
break;
|
|
71
|
-
case "USB":
|
|
72
|
-
case "LSB":
|
|
73
|
-
mode.bandwidth = Math.max(10, Math.min(bandwidth, 15000));
|
|
74
|
-
break;
|
|
75
|
-
case "CW":
|
|
76
|
-
mode.bandwidth = Math.max(5, Math.min(bandwidth, 1000));
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
return mode;
|
|
80
|
-
}
|
|
81
|
-
export function hasSquelch(mode) {
|
|
82
|
-
const scheme = typeof mode === "string" ? mode : mode.scheme;
|
|
83
|
-
return scheme != "WBFM" && scheme != "CW";
|
|
84
|
-
}
|
|
85
|
-
export function getSquelch(mode) {
|
|
86
|
-
if (mode.scheme == "WBFM" || mode.scheme == "CW")
|
|
87
|
-
return 0;
|
|
88
|
-
return mode.squelch;
|
|
89
|
-
}
|
|
90
|
-
export function withSquelch(squelch, mode) {
|
|
91
|
-
mode = { ...mode };
|
|
92
|
-
if (mode.scheme != "WBFM" && mode.scheme != "CW")
|
|
93
|
-
mode.squelch = Math.max(0, Math.min(squelch, 6));
|
|
94
|
-
return mode;
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=scheme.js.map
|
package/dist/demod/scheme.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scheme.js","sourceRoot":"","sources":["../../src/demod/scheme.ts"],"names":[],"mappings":"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"}
|