@jtarrio/signals 0.9.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/LICENSE +203 -0
- package/README.md +54 -0
- package/dist/demod/demod-am.d.ts +55 -0
- package/dist/demod/demod-am.d.ts.map +1 -0
- package/dist/demod/demod-am.js +118 -0
- package/dist/demod/demod-am.js.map +1 -0
- package/dist/demod/demod-cw.d.ts +49 -0
- package/dist/demod/demod-cw.d.ts.map +1 -0
- package/dist/demod/demod-cw.js +106 -0
- package/dist/demod/demod-cw.js.map +1 -0
- package/dist/demod/demod-nbfm.d.ts +55 -0
- package/dist/demod/demod-nbfm.d.ts.map +1 -0
- package/dist/demod/demod-nbfm.js +119 -0
- package/dist/demod/demod-nbfm.js.map +1 -0
- package/dist/demod/demod-ssb.d.ts +56 -0
- package/dist/demod/demod-ssb.d.ts.map +1 -0
- package/dist/demod/demod-ssb.js +118 -0
- package/dist/demod/demod-ssb.js.map +1 -0
- package/dist/demod/demod-wbfm.d.ts +114 -0
- package/dist/demod/demod-wbfm.d.ts.map +1 -0
- package/dist/demod/demod-wbfm.js +226 -0
- package/dist/demod/demod-wbfm.js.map +1 -0
- package/dist/demod/demodulator.d.ts +3 -0
- package/dist/demod/demodulator.d.ts.map +1 -0
- package/dist/demod/demodulator.js +28 -0
- package/dist/demod/demodulator.js.map +1 -0
- package/dist/demod/empty-demodulator.d.ts +78 -0
- package/dist/demod/empty-demodulator.d.ts.map +1 -0
- package/dist/demod/empty-demodulator.js +148 -0
- package/dist/demod/empty-demodulator.js.map +1 -0
- package/dist/demod/modes.d.ts +113 -0
- package/dist/demod/modes.d.ts.map +1 -0
- package/dist/demod/modes.js +107 -0
- package/dist/demod/modes.js.map +1 -0
- package/dist/demod/player.d.ts +19 -0
- package/dist/demod/player.d.ts.map +1 -0
- package/dist/demod/player.js +15 -0
- package/dist/demod/player.js.map +1 -0
- package/dist/demod/sample-counter.d.ts +22 -0
- package/dist/demod/sample-counter.d.ts.map +1 -0
- package/dist/demod/sample-counter.js +57 -0
- package/dist/demod/sample-counter.js.map +1 -0
- package/dist/demod/spectrum.d.ts +23 -0
- package/dist/demod/spectrum.d.ts.map +1 -0
- package/dist/demod/spectrum.js +76 -0
- package/dist/demod/spectrum.js.map +1 -0
- package/dist/dsp/buffers.d.ts +127 -0
- package/dist/dsp/buffers.d.ts.map +1 -0
- package/dist/dsp/buffers.js +171 -0
- package/dist/dsp/buffers.js.map +1 -0
- package/dist/dsp/coefficients.d.ts +23 -0
- package/dist/dsp/coefficients.d.ts.map +1 -0
- package/dist/dsp/coefficients.js +81 -0
- package/dist/dsp/coefficients.js.map +1 -0
- package/dist/dsp/converters.d.ts +15 -0
- package/dist/dsp/converters.d.ts.map +1 -0
- package/dist/dsp/converters.js +43 -0
- package/dist/dsp/converters.js.map +1 -0
- package/dist/dsp/demodulators.d.ts +68 -0
- package/dist/dsp/demodulators.d.ts.map +1 -0
- package/dist/dsp/demodulators.js +149 -0
- package/dist/dsp/demodulators.js.map +1 -0
- package/dist/dsp/fft.d.ts +54 -0
- package/dist/dsp/fft.d.ts.map +1 -0
- package/dist/dsp/fft.js +175 -0
- package/dist/dsp/fft.js.map +1 -0
- package/dist/dsp/filters.d.ts +197 -0
- package/dist/dsp/filters.d.ts.map +1 -0
- package/dist/dsp/filters.js +486 -0
- package/dist/dsp/filters.js.map +1 -0
- package/dist/dsp/math.d.ts +10 -0
- package/dist/dsp/math.d.ts.map +1 -0
- package/dist/dsp/math.js +55 -0
- package/dist/dsp/math.js.map +1 -0
- package/dist/dsp/power.d.ts +2 -0
- package/dist/dsp/power.d.ts.map +1 -0
- package/dist/dsp/power.js +23 -0
- package/dist/dsp/power.js.map +1 -0
- package/dist/dsp/resamplers.d.ts +45 -0
- package/dist/dsp/resamplers.d.ts.map +1 -0
- package/dist/dsp/resamplers.js +85 -0
- package/dist/dsp/resamplers.js.map +1 -0
- package/dist/errors.d.ts +15 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +33 -0
- package/dist/errors.js.map +1 -0
- package/dist/players/audioplayer.d.ts +25 -0
- package/dist/players/audioplayer.d.ts.map +1 -0
- package/dist/players/audioplayer.js +68 -0
- package/dist/players/audioplayer.js.map +1 -0
- package/dist/radio/msgqueue.d.ts +32 -0
- package/dist/radio/msgqueue.d.ts.map +1 -0
- package/dist/radio/msgqueue.js +62 -0
- package/dist/radio/msgqueue.js.map +1 -0
- package/dist/radio/radio.d.ts +107 -0
- package/dist/radio/radio.d.ts.map +1 -0
- package/dist/radio/radio.js +279 -0
- package/dist/radio/radio.js.map +1 -0
- package/dist/radio/sample_receiver.d.ts +17 -0
- package/dist/radio/sample_receiver.d.ts.map +1 -0
- package/dist/radio/sample_receiver.js +52 -0
- package/dist/radio/sample_receiver.js.map +1 -0
- package/dist/radio/signal_source.d.ts +53 -0
- package/dist/radio/signal_source.d.ts.map +1 -0
- package/dist/radio/signal_source.js +15 -0
- package/dist/radio/signal_source.js.map +1 -0
- package/dist/radio.d.ts +4 -0
- package/dist/radio.d.ts.map +1 -0
- package/dist/radio.js +4 -0
- package/dist/radio.js.map +1 -0
- package/dist/sources/generators.d.ts +41 -0
- package/dist/sources/generators.d.ts.map +1 -0
- package/dist/sources/generators.js +238 -0
- package/dist/sources/generators.js.map +1 -0
- package/dist/sources/provider.d.ts +7 -0
- package/dist/sources/provider.d.ts.map +1 -0
- package/dist/sources/provider.js +23 -0
- package/dist/sources/provider.js.map +1 -0
- package/dist/sources/push.d.ts +30 -0
- package/dist/sources/push.d.ts.map +1 -0
- package/dist/sources/push.js +106 -0
- package/dist/sources/push.js.map +1 -0
- package/dist/sources/read_ring.d.ts +14 -0
- package/dist/sources/read_ring.d.ts.map +1 -0
- package/dist/sources/read_ring.js +59 -0
- package/dist/sources/read_ring.js.map +1 -0
- package/dist/sources/realtime.d.ts +44 -0
- package/dist/sources/realtime.d.ts.map +1 -0
- package/dist/sources/realtime.js +136 -0
- package/dist/sources/realtime.js.map +1 -0
- package/package.json +25 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/dsp/filters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A faster (~3x) and slightly less precise version of Math.atan2.
|
|
3
|
+
* It's plenty good for Float32 (maximum error 4e-8).
|
|
4
|
+
* Coefficients from "Approximations for digital computers",
|
|
5
|
+
* by Cecil Hastings, Jr., assisted by Jeanne T. Hayward and James P. Wong, Jr.,
|
|
6
|
+
* (Princeton University Press, 1955),
|
|
7
|
+
* found through https://mazzo.li/posts/vectorized-atan2.html
|
|
8
|
+
*/
|
|
9
|
+
export declare function atan2(imag: number, real: number): number;
|
|
10
|
+
//# sourceMappingURL=math.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/dsp/math.ts"],"names":[],"mappings":"AAcA;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CA+BxD"}
|
package/dist/dsp/math.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// Copyright 2025 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
|
+
/**
|
|
15
|
+
* A faster (~3x) and slightly less precise version of Math.atan2.
|
|
16
|
+
* It's plenty good for Float32 (maximum error 4e-8).
|
|
17
|
+
* Coefficients from "Approximations for digital computers",
|
|
18
|
+
* by Cecil Hastings, Jr., assisted by Jeanne T. Hayward and James P. Wong, Jr.,
|
|
19
|
+
* (Princeton University Press, 1955),
|
|
20
|
+
* found through https://mazzo.li/posts/vectorized-atan2.html
|
|
21
|
+
*/
|
|
22
|
+
export function atan2(imag, real) {
|
|
23
|
+
if (real == 0 && imag == 0)
|
|
24
|
+
return 0;
|
|
25
|
+
let swap = Math.abs(real) < Math.abs(imag);
|
|
26
|
+
let div = swap ? real / imag : imag / real;
|
|
27
|
+
const divSq = div * div;
|
|
28
|
+
let res = div *
|
|
29
|
+
(0.9999993329 +
|
|
30
|
+
divSq *
|
|
31
|
+
(-0.3332985605 +
|
|
32
|
+
divSq *
|
|
33
|
+
(0.1994653599 +
|
|
34
|
+
divSq *
|
|
35
|
+
(-0.1390853351 +
|
|
36
|
+
divSq *
|
|
37
|
+
(0.0964200441 +
|
|
38
|
+
divSq *
|
|
39
|
+
(-0.0559098861 +
|
|
40
|
+
divSq * (0.0218612288 + divSq * -0.004054058)))))));
|
|
41
|
+
if (swap) {
|
|
42
|
+
if (div >= 0) {
|
|
43
|
+
res = Math.PI / 2 - res;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
res = -Math.PI / 2 - res;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (real >= 0)
|
|
50
|
+
return res;
|
|
51
|
+
if (imag >= 0)
|
|
52
|
+
return res + Math.PI;
|
|
53
|
+
return res - Math.PI;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=math.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/dsp/math.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;;;;;;;GAOG;AACH,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,IAAY;IAC9C,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACrC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;IAE3C,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;IACxB,IAAI,GAAG,GACL,GAAG;QACH,CAAC,YAAY;YACX,KAAK;gBACH,CAAC,CAAC,YAAY;oBACZ,KAAK;wBACH,CAAC,YAAY;4BACX,KAAK;gCACH,CAAC,CAAC,YAAY;oCACZ,KAAK;wCACH,CAAC,YAAY;4CACX,KAAK;gDACH,CAAC,CAAC,YAAY;oDACZ,KAAK,GAAG,CAAC,YAAY,GAAG,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5E,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAC1B,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;IACpC,OAAO,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"power.d.ts","sourceRoot":"","sources":["../../src/dsp/power.ts"],"names":[],"mappings":"AAcA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAQjE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
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
|
+
export function getPower(I, Q) {
|
|
15
|
+
let power = 0;
|
|
16
|
+
for (let i = 0; i < I.length; ++i) {
|
|
17
|
+
const vI = I[i];
|
|
18
|
+
const vQ = Q[i];
|
|
19
|
+
power += vI * vI + vQ * vQ;
|
|
20
|
+
}
|
|
21
|
+
return power / I.length;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=power.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"power.js","sourceRoot":"","sources":["../../src/dsp/power.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,MAAM,UAAU,QAAQ,CAAC,CAAe,EAAE,CAAe;IACvD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/** A class to convert a real input to a lower sample rate. */
|
|
2
|
+
export declare class RealDownsampler {
|
|
3
|
+
/**
|
|
4
|
+
* @param inRate The input sample rate.
|
|
5
|
+
* @param outRate The output sample rate.
|
|
6
|
+
* @param filterLen The size of the low-pass filter.
|
|
7
|
+
*/
|
|
8
|
+
constructor(inRate: number, outRate: number, filterLen: number);
|
|
9
|
+
/**
|
|
10
|
+
* @param inRate The input sample rate.
|
|
11
|
+
* @param outRate The output sample rate.
|
|
12
|
+
* @param kernel The kernel to apply to the signal before downsampling.
|
|
13
|
+
*/
|
|
14
|
+
constructor(inRate: number, outRate: number, kernel: Float32Array);
|
|
15
|
+
private downsampler;
|
|
16
|
+
/**
|
|
17
|
+
* @param input The signal in the original sample rate.
|
|
18
|
+
* @returns The resampled signal.
|
|
19
|
+
*/
|
|
20
|
+
downsample(input: Float32Array): Float32Array;
|
|
21
|
+
}
|
|
22
|
+
/** A class to convert a complex input to a lower sample rate. */
|
|
23
|
+
export declare class ComplexDownsampler {
|
|
24
|
+
/**
|
|
25
|
+
* @param inRate The input sample rate.
|
|
26
|
+
* @param outRate The output sample rate.
|
|
27
|
+
* @param filterLen The size of the low-pass filter.
|
|
28
|
+
*/
|
|
29
|
+
constructor(inRate: number, outRate: number, filterLen: number);
|
|
30
|
+
/**
|
|
31
|
+
* @param inRate The input sample rate.
|
|
32
|
+
* @param outRate The output sample rate.
|
|
33
|
+
* @param kernel The filter kernel to apply to the signal before downsampling.
|
|
34
|
+
*/
|
|
35
|
+
constructor(inRate: number, outRate: number, kernel: Float32Array);
|
|
36
|
+
private downsamplerI;
|
|
37
|
+
private downsamplerQ;
|
|
38
|
+
/**
|
|
39
|
+
* @param I The signal's real component.
|
|
40
|
+
* @param Q The signal's imaginary component.
|
|
41
|
+
* @returns An array with the output's real and imaginary components.
|
|
42
|
+
*/
|
|
43
|
+
downsample(I: Float32Array, Q: Float32Array): [Float32Array, Float32Array];
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=resamplers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resamplers.d.ts","sourceRoot":"","sources":["../../src/dsp/resamplers.ts"],"names":[],"mappings":"AAkDA,8DAA8D;AAC9D,qBAAa,eAAe;IAC1B;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAC9D;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;IAajE,OAAO,CAAC,WAAW,CAAc;IAEjC;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY;CAG9C;AAED,iEAAiE;AACjE,qBAAa,kBAAkB;IAC7B;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAC9D;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;IAcjE,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,YAAY,CAAc;IAElC;;;;OAIG;IACH,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC;CAG3E"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// Copyright 2024 Jacobo Tarrio Barreiro. All rights reserved.
|
|
2
|
+
// Copyright 2013 Google Inc. All rights reserved.
|
|
3
|
+
//
|
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
// you may not use this file except in compliance with the License.
|
|
6
|
+
// You may obtain a copy of the License at
|
|
7
|
+
//
|
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
//
|
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
// See the License for the specific language governing permissions and
|
|
14
|
+
// limitations under the License.
|
|
15
|
+
import { Float32Pool } from "./buffers.js";
|
|
16
|
+
import { makeLowPassKernel } from "./coefficients.js";
|
|
17
|
+
import { FIRFilter } from "./filters.js";
|
|
18
|
+
/** A class to convert the input to a lower sample rate. */
|
|
19
|
+
class Downsampler {
|
|
20
|
+
ratio;
|
|
21
|
+
/**
|
|
22
|
+
* @param ratio The ratio of input/output sample rates.
|
|
23
|
+
* @param kernel The coefficients for the low-pass filter.
|
|
24
|
+
*/
|
|
25
|
+
constructor(ratio, kernel) {
|
|
26
|
+
this.ratio = ratio;
|
|
27
|
+
this.filter = new FIRFilter(kernel);
|
|
28
|
+
this.pool = new Float32Pool(2);
|
|
29
|
+
}
|
|
30
|
+
filter;
|
|
31
|
+
pool;
|
|
32
|
+
/**
|
|
33
|
+
* Returns a downsampled version of the given samples.
|
|
34
|
+
* @param samples The sample block to downsample.
|
|
35
|
+
* @returns The downsampled block.
|
|
36
|
+
*/
|
|
37
|
+
downsample(samples) {
|
|
38
|
+
const ratio = this.ratio;
|
|
39
|
+
const len = Math.floor(samples.length / ratio);
|
|
40
|
+
let output = this.pool.get(len);
|
|
41
|
+
this.filter.loadSamples(samples);
|
|
42
|
+
for (let i = 0; i < len; ++i) {
|
|
43
|
+
output[i] = this.filter.get(Math.floor(i * ratio));
|
|
44
|
+
}
|
|
45
|
+
return output;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/** A class to convert a real input to a lower sample rate. */
|
|
49
|
+
export class RealDownsampler {
|
|
50
|
+
constructor(inRate, outRate, filterLenOrKernel) {
|
|
51
|
+
const kernel = typeof filterLenOrKernel === "number"
|
|
52
|
+
? makeLowPassKernel(inRate, outRate / 2, filterLenOrKernel)
|
|
53
|
+
: filterLenOrKernel;
|
|
54
|
+
this.downsampler = new Downsampler(inRate / outRate, kernel);
|
|
55
|
+
}
|
|
56
|
+
downsampler;
|
|
57
|
+
/**
|
|
58
|
+
* @param input The signal in the original sample rate.
|
|
59
|
+
* @returns The resampled signal.
|
|
60
|
+
*/
|
|
61
|
+
downsample(input) {
|
|
62
|
+
return this.downsampler.downsample(input);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** A class to convert a complex input to a lower sample rate. */
|
|
66
|
+
export class ComplexDownsampler {
|
|
67
|
+
constructor(inRate, outRate, filterLenOrKernel) {
|
|
68
|
+
const kernel = typeof filterLenOrKernel === "number"
|
|
69
|
+
? makeLowPassKernel(inRate, outRate / 2, filterLenOrKernel)
|
|
70
|
+
: filterLenOrKernel;
|
|
71
|
+
this.downsamplerI = new Downsampler(inRate / outRate, kernel);
|
|
72
|
+
this.downsamplerQ = new Downsampler(inRate / outRate, kernel);
|
|
73
|
+
}
|
|
74
|
+
downsamplerI;
|
|
75
|
+
downsamplerQ;
|
|
76
|
+
/**
|
|
77
|
+
* @param I The signal's real component.
|
|
78
|
+
* @param Q The signal's imaginary component.
|
|
79
|
+
* @returns An array with the output's real and imaginary components.
|
|
80
|
+
*/
|
|
81
|
+
downsample(I, Q) {
|
|
82
|
+
return [this.downsamplerI.downsample(I), this.downsamplerQ.downsample(Q)];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=resamplers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resamplers.js","sourceRoot":"","sources":["../../src/dsp/resamplers.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare class RadioError extends Error {
|
|
2
|
+
constructor(message: string, type?: RadioErrorType, options?: RadioErrorOptions);
|
|
3
|
+
constructor(message: string, type?: RadioErrorType);
|
|
4
|
+
constructor(message: string, options?: RadioErrorOptions);
|
|
5
|
+
type?: RadioErrorType;
|
|
6
|
+
}
|
|
7
|
+
export declare enum RadioErrorType {
|
|
8
|
+
TransferError = 0,
|
|
9
|
+
DemodulationError = 1
|
|
10
|
+
}
|
|
11
|
+
type RadioErrorOptions = {
|
|
12
|
+
cause?: any;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAcA,qBAAa,UAAW,SAAQ,KAAK;gBAEjC,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,iBAAiB;gBAEjB,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc;gBACtC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB;IAoBxD,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAED,oBAAY,cAAc;IACxB,aAAa,IAAA;IACb,iBAAiB,IAAA;CAClB;AAED,KAAK,iBAAiB,GAAG;IACvB,KAAK,CAAC,EAAE,GAAG,CAAC;CACb,CAAC"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
export class RadioError extends Error {
|
|
15
|
+
constructor(message, typeOrOptions, options) {
|
|
16
|
+
super(message, options !== undefined
|
|
17
|
+
? options
|
|
18
|
+
: typeof typeOrOptions === "object"
|
|
19
|
+
? typeOrOptions
|
|
20
|
+
: undefined);
|
|
21
|
+
if (typeof typeOrOptions === "number") {
|
|
22
|
+
this.type = typeOrOptions;
|
|
23
|
+
this.name = `RadioError.${RadioErrorType[typeOrOptions]}`;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
type;
|
|
27
|
+
}
|
|
28
|
+
export var RadioErrorType;
|
|
29
|
+
(function (RadioErrorType) {
|
|
30
|
+
RadioErrorType[RadioErrorType["TransferError"] = 0] = "TransferError";
|
|
31
|
+
RadioErrorType[RadioErrorType["DemodulationError"] = 1] = "DemodulationError";
|
|
32
|
+
})(RadioErrorType || (RadioErrorType = {}));
|
|
33
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.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,MAAM,OAAO,UAAW,SAAQ,KAAK;IAQnC,YACE,OAAe,EACf,aAAkD,EAClD,OAA2B;QAE3B,KAAK,CACH,OAAO,EACP,OAAO,KAAK,SAAS;YACnB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,OAAO,aAAa,KAAK,QAAQ;gBACjC,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,SAAS,CAChB,CAAC;QACF,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;YAC1B,IAAI,CAAC,IAAI,GAAG,cAAc,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,IAAI,CAAkB;CACvB;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,qEAAa,CAAA;IACb,6EAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Player } from "../demod/player.js";
|
|
2
|
+
/** A class to play a series of sample buffers at a constant rate using the Web Audio API. */
|
|
3
|
+
export declare class AudioPlayer implements Player {
|
|
4
|
+
private static OUT_RATE;
|
|
5
|
+
private static TIME_BUFFER;
|
|
6
|
+
constructor();
|
|
7
|
+
private lastPlayedAt;
|
|
8
|
+
private ac;
|
|
9
|
+
private gainNode;
|
|
10
|
+
private gain;
|
|
11
|
+
/**
|
|
12
|
+
* Queues the given samples for playing at the appropriate time.
|
|
13
|
+
* @param leftSamples The samples for the left speaker.
|
|
14
|
+
* @param rightSamples The samples for the right speaker.
|
|
15
|
+
*/
|
|
16
|
+
play(leftSamples: Float32Array, rightSamples: Float32Array): void;
|
|
17
|
+
/**
|
|
18
|
+
* Sets the volume for playing samples.
|
|
19
|
+
* @param volume The volume to set, between 0 and 1.
|
|
20
|
+
*/
|
|
21
|
+
setVolume(volume: number): void;
|
|
22
|
+
getVolume(): number;
|
|
23
|
+
get sampleRate(): number;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=audioplayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audioplayer.d.ts","sourceRoot":"","sources":["../../src/players/audioplayer.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,6FAA6F;AAC7F,qBAAa,WAAY,YAAW,MAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAQ;;IASlC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,EAAE,CAA2B;IACrC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,IAAI,CAAS;IAErB;;;;OAIG;IACH,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY;IAwB1D;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM;IAOxB,SAAS,IAAI,MAAM;IAInB,IAAI,UAAU,IAAI,MAAM,CAGvB;CACF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Copyright 2013 Google Inc. 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
|
+
/** A class to play a series of sample buffers at a constant rate using the Web Audio API. */
|
|
15
|
+
export class AudioPlayer {
|
|
16
|
+
static OUT_RATE = 48000;
|
|
17
|
+
static TIME_BUFFER = 0.05;
|
|
18
|
+
constructor() {
|
|
19
|
+
this.lastPlayedAt = -1;
|
|
20
|
+
this.ac = undefined;
|
|
21
|
+
this.gainNode = undefined;
|
|
22
|
+
this.gain = 0;
|
|
23
|
+
}
|
|
24
|
+
lastPlayedAt;
|
|
25
|
+
ac;
|
|
26
|
+
gainNode;
|
|
27
|
+
gain;
|
|
28
|
+
/**
|
|
29
|
+
* Queues the given samples for playing at the appropriate time.
|
|
30
|
+
* @param leftSamples The samples for the left speaker.
|
|
31
|
+
* @param rightSamples The samples for the right speaker.
|
|
32
|
+
*/
|
|
33
|
+
play(leftSamples, rightSamples) {
|
|
34
|
+
if (this.ac === undefined || this.gainNode === undefined) {
|
|
35
|
+
this.ac = new AudioContext();
|
|
36
|
+
this.gainNode = this.ac.createGain();
|
|
37
|
+
this.gainNode.gain.value = this.gain;
|
|
38
|
+
this.gainNode.connect(this.ac.destination);
|
|
39
|
+
}
|
|
40
|
+
const buffer = this.ac.createBuffer(2, leftSamples.length, AudioPlayer.OUT_RATE);
|
|
41
|
+
buffer.getChannelData(0).set(leftSamples);
|
|
42
|
+
buffer.getChannelData(1).set(rightSamples);
|
|
43
|
+
let source = this.ac.createBufferSource();
|
|
44
|
+
source.buffer = buffer;
|
|
45
|
+
source.connect(this.gainNode);
|
|
46
|
+
this.lastPlayedAt = Math.max(this.lastPlayedAt + leftSamples.length / AudioPlayer.OUT_RATE, this.ac.currentTime + AudioPlayer.TIME_BUFFER);
|
|
47
|
+
source.start(this.lastPlayedAt);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Sets the volume for playing samples.
|
|
51
|
+
* @param volume The volume to set, between 0 and 1.
|
|
52
|
+
*/
|
|
53
|
+
setVolume(volume) {
|
|
54
|
+
this.gain = volume;
|
|
55
|
+
if (this.gainNode !== undefined) {
|
|
56
|
+
this.gainNode.gain.value = volume;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
getVolume() {
|
|
60
|
+
return this.gain;
|
|
61
|
+
}
|
|
62
|
+
get sampleRate() {
|
|
63
|
+
if (this.ac)
|
|
64
|
+
return this.ac.sampleRate;
|
|
65
|
+
return 48000;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=audioplayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audioplayer.js","sourceRoot":"","sources":["../../src/players/audioplayer.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAIjC,6FAA6F;AAC7F,MAAM,OAAO,WAAW;IACd,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;IAElC;QACE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAChB,CAAC;IAEO,YAAY,CAAS;IACrB,EAAE,CAA2B;IAC7B,QAAQ,CAAuB;IAC/B,IAAI,CAAS;IAErB;;;;OAIG;IACH,IAAI,CAAC,WAAyB,EAAE,YAA0B;QACxD,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzD,IAAI,CAAC,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,CACjC,CAAC,EACD,WAAW,CAAC,MAAM,EAClB,WAAW,CAAC,QAAQ,CACrB,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC;QAC1C,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAC1B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,QAAQ,EAC7D,IAAI,CAAC,EAAE,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAC9C,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpC,CAAC;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** The type returned by the Channel.receive() function. */
|
|
2
|
+
type ReceivedMessage<MsgType, AckType = void> = {
|
|
3
|
+
msg: MsgType;
|
|
4
|
+
ack: (_: AckType) => void;
|
|
5
|
+
};
|
|
6
|
+
/** A message channel, in which messages are sent and received asynchronously. */
|
|
7
|
+
export declare class Channel<MsgType, AckType = void> {
|
|
8
|
+
constructor();
|
|
9
|
+
/** Messages waiting to be delivered. */
|
|
10
|
+
private sendQueue;
|
|
11
|
+
/** Clients waiting to receive messages. */
|
|
12
|
+
private rcvQueue;
|
|
13
|
+
/**
|
|
14
|
+
* Sends a message.
|
|
15
|
+
*
|
|
16
|
+
* If there is a client waiting to receive a message, it is delivered straight to it.
|
|
17
|
+
* Otherwise, the message is added to the queue.
|
|
18
|
+
*
|
|
19
|
+
* @returns a promise that resolves when the receiver of the message acknowledges it.
|
|
20
|
+
*/
|
|
21
|
+
send(msg: MsgType): Promise<AckType>;
|
|
22
|
+
/**
|
|
23
|
+
* Receives a message.
|
|
24
|
+
*
|
|
25
|
+
* @returns a promise that resolves to a message and to an acknowledgement function.
|
|
26
|
+
* This acknowledgement function must be called after processing the message so the promise
|
|
27
|
+
* returned by the send() function will be resolved.
|
|
28
|
+
*/
|
|
29
|
+
receive(): Promise<ReceivedMessage<MsgType, AckType>>;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=msgqueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msgqueue.d.ts","sourceRoot":"","sources":["../../src/radio/msgqueue.ts"],"names":[],"mappings":"AAcA,2DAA2D;AAC3D,KAAK,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,IAAI;IAC9C,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC3B,CAAC;AAEF,iFAAiF;AACjF,qBAAa,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;;IAM1C,wCAAwC;IACxC,OAAO,CAAC,SAAS,CAAsC;IACvD,2CAA2C;IAC3C,OAAO,CAAC,QAAQ,CAAyC;IAEzD;;;;;;;OAOG;IACG,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAU1C;;;;;;OAMG;IACH,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CAatD"}
|
|
@@ -0,0 +1,62 @@
|
|
|
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
|
+
/** A message channel, in which messages are sent and received asynchronously. */
|
|
15
|
+
export class Channel {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.sendQueue = [];
|
|
18
|
+
this.rcvQueue = [];
|
|
19
|
+
}
|
|
20
|
+
/** Messages waiting to be delivered. */
|
|
21
|
+
sendQueue;
|
|
22
|
+
/** Clients waiting to receive messages. */
|
|
23
|
+
rcvQueue;
|
|
24
|
+
/**
|
|
25
|
+
* Sends a message.
|
|
26
|
+
*
|
|
27
|
+
* If there is a client waiting to receive a message, it is delivered straight to it.
|
|
28
|
+
* Otherwise, the message is added to the queue.
|
|
29
|
+
*
|
|
30
|
+
* @returns a promise that resolves when the receiver of the message acknowledges it.
|
|
31
|
+
*/
|
|
32
|
+
async send(msg) {
|
|
33
|
+
let rcv = this.rcvQueue.shift();
|
|
34
|
+
if (rcv !== undefined) {
|
|
35
|
+
return rcv(msg);
|
|
36
|
+
}
|
|
37
|
+
let { promise, resolve } = Promise.withResolvers();
|
|
38
|
+
this.sendQueue.push({ msg, ack: resolve });
|
|
39
|
+
return promise;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Receives a message.
|
|
43
|
+
*
|
|
44
|
+
* @returns a promise that resolves to a message and to an acknowledgement function.
|
|
45
|
+
* This acknowledgement function must be called after processing the message so the promise
|
|
46
|
+
* returned by the send() function will be resolved.
|
|
47
|
+
*/
|
|
48
|
+
receive() {
|
|
49
|
+
let sent = this.sendQueue.shift();
|
|
50
|
+
if (sent !== undefined) {
|
|
51
|
+
return Promise.resolve(sent);
|
|
52
|
+
}
|
|
53
|
+
let msgPR = Promise.withResolvers();
|
|
54
|
+
this.rcvQueue.push((msg) => {
|
|
55
|
+
let ackPR = Promise.withResolvers();
|
|
56
|
+
msgPR.resolve({ msg: msg, ack: ackPR.resolve });
|
|
57
|
+
return ackPR.promise;
|
|
58
|
+
});
|
|
59
|
+
return msgPR.promise;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=msgqueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msgqueue.js","sourceRoot":"","sources":["../../src/radio/msgqueue.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;AAQjC,iFAAiF;AACjF,MAAM,OAAO,OAAO;IAClB;QACE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,wCAAwC;IAChC,SAAS,CAAsC;IACvD,2CAA2C;IACnC,QAAQ,CAAyC;IAEzD;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,CAAC,GAAY;QACrB,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,EAAW,CAAC;QAC5D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;OAMG;IACH,OAAO;QACL,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,KAAK,GAAG,OAAO,CAAC,aAAa,EAAqC,CAAC;QACvE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAY,EAAoB,EAAE;YACpD,IAAI,KAAK,GAAG,OAAO,CAAC,aAAa,EAAW,CAAC;YAC7C,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAChD,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;CACF"}
|