@jtarrio/signals 0.9.0 → 0.9.1
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/dist/demod/empty-demodulator.d.ts +2 -1
- package/dist/demod/empty-demodulator.d.ts.map +1 -1
- package/dist/demod/empty-demodulator.js +3 -3
- package/dist/demod/empty-demodulator.js.map +1 -1
- package/dist/demod/sample-counter.d.ts +2 -1
- package/dist/demod/sample-counter.d.ts.map +1 -1
- package/dist/demod/sample-counter.js +2 -2
- package/dist/demod/sample-counter.js.map +1 -1
- package/dist/demod/spectrum.d.ts +2 -1
- package/dist/demod/spectrum.d.ts.map +1 -1
- package/dist/demod/spectrum.js +4 -4
- package/dist/demod/spectrum.js.map +1 -1
- package/dist/radio/radio.d.ts +13 -14
- package/dist/radio/radio.d.ts.map +1 -1
- package/dist/radio/radio.js +70 -81
- package/dist/radio/radio.js.map +1 -1
- package/dist/radio/sample_block.d.ts +18 -0
- package/dist/radio/sample_block.d.ts.map +1 -0
- package/dist/radio/sample_block.js +15 -0
- package/dist/radio/sample_block.js.map +1 -0
- package/dist/radio/sample_receiver.d.ts +3 -2
- package/dist/radio/sample_receiver.d.ts.map +1 -1
- package/dist/radio/sample_receiver.js +2 -2
- package/dist/radio/sample_receiver.js.map +1 -1
- package/dist/radio/signal_source.d.ts +1 -17
- package/dist/radio/signal_source.d.ts.map +1 -1
- package/dist/radio/single_thread.d.ts +18 -0
- package/dist/radio/single_thread.d.ts.map +1 -0
- package/dist/radio/single_thread.js +23 -0
- package/dist/radio/single_thread.js.map +1 -0
- package/dist/radio.d.ts +1 -0
- package/dist/radio.d.ts.map +1 -1
- package/dist/radio.js +1 -0
- package/dist/radio.js.map +1 -1
- package/dist/sources/push.d.ts +2 -1
- package/dist/sources/push.d.ts.map +1 -1
- package/dist/sources/push.js.map +1 -1
- package/dist/sources/read_ring.d.ts +1 -1
- package/dist/sources/read_ring.d.ts.map +1 -1
- package/dist/sources/realtime.d.ts +2 -1
- package/dist/sources/realtime.d.ts.map +1 -1
- package/dist/sources/realtime.js.map +1 -1
- package/package.json +1 -1
- package/dist/radio/msgqueue.d.ts +0 -32
- package/dist/radio/msgqueue.d.ts.map +0 -1
- package/dist/radio/msgqueue.js +0 -62
- package/dist/radio/msgqueue.js.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Mode } from "./modes.js";
|
|
2
2
|
import { Player } from "./player.js";
|
|
3
|
+
import { SampleBlock } from "../radio/sample_block.js";
|
|
3
4
|
import { SampleReceiver } from "../radio/sample_receiver.js";
|
|
4
5
|
type DemodulatorOptions = {
|
|
5
6
|
/**
|
|
@@ -67,7 +68,7 @@ export declare class Demodulator extends EventTarget implements SampleReceiver {
|
|
|
67
68
|
/** Changes the sample rate. */
|
|
68
69
|
setSampleRate(sampleRate: number): void;
|
|
69
70
|
/** Receives radio samples. */
|
|
70
|
-
receiveSamples(
|
|
71
|
+
receiveSamples(block: SampleBlock): void;
|
|
71
72
|
addEventListener(type: "stereo-status", callback: (e: StereoStatusEvent) => void | null, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
72
73
|
addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
73
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty-demodulator.d.ts","sourceRoot":"","sources":["../../src/demod/empty-demodulator.ts"],"names":[],"mappings":"AAcA,OAAO,EAAS,IAAI,EAAqC,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAA;KAAE,CAAC;CACjD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,qBAAa,WAAY,SAAQ,WAAY,YAAW,cAAc;IACpE;;OAEG;gBACS,OAAO,CAAC,EAAE,kBAAkB;IAYxC,uBAAuB;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,+BAA+B;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,6DAA6D;IAC7D,OAAO,CAAC,cAAc,CAAiB;IACvC,uCAAuC;IACvC,OAAO,CAAC,WAAW,CAAoC;IACvD,kDAAkD;IAClD,OAAO,CAAC,IAAI,CAAO;IACnB,6BAA6B;IAC7B,OAAO,CAAC,KAAK,CAAa;IAC1B,+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,wEAAwE;IACxE,OAAO,CAAC,SAAS;IAcjB,+BAA+B;IAC/B,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKvC,8BAA8B;IAC9B,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"empty-demodulator.d.ts","sourceRoot":"","sources":["../../src/demod/empty-demodulator.ts"],"names":[],"mappings":"AAcA,OAAO,EAAS,IAAI,EAAqC,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAA;KAAE,CAAC;CACjD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,qBAAa,WAAY,SAAQ,WAAY,YAAW,cAAc;IACpE;;OAEG;gBACS,OAAO,CAAC,EAAE,kBAAkB;IAYxC,uBAAuB;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,+BAA+B;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,6DAA6D;IAC7D,OAAO,CAAC,cAAc,CAAiB;IACvC,uCAAuC;IACvC,OAAO,CAAC,WAAW,CAAoC;IACvD,kDAAkD;IAClD,OAAO,CAAC,IAAI,CAAO;IACnB,6BAA6B;IAC7B,OAAO,CAAC,KAAK,CAAa;IAC1B,+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,wEAAwE;IACxE,OAAO,CAAC,SAAS;IAcjB,+BAA+B;IAC/B,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKvC,8BAA8B;IAC9B,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAmBxC,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"}
|
|
@@ -100,12 +100,12 @@ export class Demodulator extends EventTarget {
|
|
|
100
100
|
this.demod = this.getScheme(this.mode, undefined);
|
|
101
101
|
}
|
|
102
102
|
/** Receives radio samples. */
|
|
103
|
-
receiveSamples(
|
|
104
|
-
if (this.expectingFrequency?.center === frequency) {
|
|
103
|
+
receiveSamples(block) {
|
|
104
|
+
if (this.expectingFrequency?.center === block.frequency) {
|
|
105
105
|
this.frequencyOffset = this.expectingFrequency.offset;
|
|
106
106
|
this.expectingFrequency = undefined;
|
|
107
107
|
}
|
|
108
|
-
let { left, right, stereo, snr } = this.demod.demodulate(I, Q, this.frequencyOffset);
|
|
108
|
+
let { left, right, stereo, snr } = this.demod.demodulate(block.I, block.Q, this.frequencyOffset);
|
|
109
109
|
this.squelchControl.applySquelch(this.mode, left, right, snr);
|
|
110
110
|
this.player.play(left, right);
|
|
111
111
|
if (stereo != this.latestStereo) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty-demodulator.js","sourceRoot":"","sources":["../../src/demod/empty-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,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"empty-demodulator.js","sourceRoot":"","sources":["../../src/demod/empty-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,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAgBxD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,WAAY,SAAQ,WAAW;IAC1C;;OAEG;IACH,YAAY,OAA4B;QACtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,uBAAuB;IACf,MAAM,CAAS;IACvB,+BAA+B;IACvB,MAAM,CAAS;IACvB,6DAA6D;IACrD,cAAc,CAAiB;IACvC,uCAAuC;IAC/B,WAAW,CAAoC;IACvD,kDAAkD;IAC1C,IAAI,CAAO;IACnB,6BAA6B;IACrB,KAAK,CAAa;IAC1B,+CAA+C;IACvC,eAAe,CAAS;IAChC,iDAAiD;IACzC,YAAY,CAAU;IAC9B,2CAA2C;IACnC,kBAAkB,CAAa;IAEvC,yCAAyC;IACzC,OAAO,CAAC,IAAU;QAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,iDAAiD;IACjD,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,oCAAoC;IACpC,kBAAkB,CAAC,MAAc;QAC/B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;IAChC,CAAC;IAED,4CAA4C;IAC5C,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,2FAA2F;IAC3F,2BAA2B,CAAC,MAAc,EAAE,MAAc;QACxD,IAAI,CAAC,kBAAkB,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC/C,CAAC;IAED,gDAAgD;IAChD,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,8CAA8C;IAC9C,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,wEAAwE;IAChE,SAAS,CAAC,IAAU,EAAE,KAAkB;QAC9C,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC;YAC3C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,QAAQ,CACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,EACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAC9B,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,aAAa,CAAC,UAAkB;QAC9B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,8BAA8B;IAC9B,cAAc,CAAC,KAAkB;QAC/B,IAAI,IAAI,CAAC,kBAAkB,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YACxD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;YACtD,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACtC,CAAC;QAED,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CACtD,KAAK,CAAC,CAAC,EACP,KAAK,CAAC,CAAC,EACP,IAAI,CAAC,eAAe,CACrB,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAI,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,aAAa,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC7B,CAAC;IACH,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,iBAAkB,SAAQ,WAAoB;IACzD,YAAY,MAAe;QACzB,KAAK,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;CACF;AAOD,MAAM,cAAc;IACE;IAApB,YAAoB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAAG,CAAC;IAElC,SAAS,GAAW,CAAC,CAAC;IAE9B,YAAY,CACV,IAAU,EACV,IAAkB,EAClB,KAAmB,EACnB,GAAW;QAEX,MAAM,YAAY,GAAG,GAAG,CAAC;QACzB,IAAI,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAAE,OAAO;QACjC,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,GAAG,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;YAChD,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SampleBlock } from "../radio/sample_block.js";
|
|
1
2
|
import { SampleReceiver } from "../radio/sample_receiver.js";
|
|
2
3
|
/** A SampleReceiver that counts received samples to send a `sample-click` event periodically. */
|
|
3
4
|
export declare class SampleCounter extends EventTarget implements SampleReceiver {
|
|
@@ -12,7 +13,7 @@ export declare class SampleCounter extends EventTarget implements SampleReceiver
|
|
|
12
13
|
private countedSamples;
|
|
13
14
|
private getSamplesPerClick;
|
|
14
15
|
setSampleRate(sampleRate: number): void;
|
|
15
|
-
receiveSamples(
|
|
16
|
+
receiveSamples(block: SampleBlock): void;
|
|
16
17
|
addEventListener(type: "sample-click", callback: (e: SampleClickEvent) => void | null, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
17
18
|
addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
18
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sample-counter.d.ts","sourceRoot":"","sources":["../../src/demod/sample-counter.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,iGAAiG;AACjG,qBAAa,aAAc,SAAQ,WAAY,YAAW,cAAc;IAK1D,OAAO,CAAC,eAAe,CAAC;IAJpC;;;OAGG;gBACiB,eAAe,CAAC,EAAE,MAAM,YAAA;IAO5C,OAAO,CAAC,UAAU,CAAS;IAC3B,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,
|
|
1
|
+
{"version":3,"file":"sample-counter.d.ts","sourceRoot":"","sources":["../../src/demod/sample-counter.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,iGAAiG;AACjG,qBAAa,aAAc,SAAQ,WAAY,YAAW,cAAc;IAK1D,OAAO,CAAC,eAAe,CAAC;IAJpC;;;OAGG;gBACiB,eAAe,CAAC,EAAE,MAAM,YAAA;IAO5C,OAAO,CAAC,UAAU,CAAS;IAC3B,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,KAAK,EAAE,WAAW,GAAG,IAAI;IAWxC,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"}
|
|
@@ -37,8 +37,8 @@ export class SampleCounter extends EventTarget {
|
|
|
37
37
|
this.sampleRate = sampleRate;
|
|
38
38
|
this.samplesPerClick = this.getSamplesPerClick();
|
|
39
39
|
}
|
|
40
|
-
receiveSamples(
|
|
41
|
-
this.countedSamples += I.length;
|
|
40
|
+
receiveSamples(block) {
|
|
41
|
+
this.countedSamples += block.I.length;
|
|
42
42
|
if (this.samplesPerClick === undefined ||
|
|
43
43
|
this.samplesPerClick > this.countedSamples)
|
|
44
44
|
return;
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAKjC,iGAAiG;AACjG,MAAM,OAAO,aAAc,SAAQ,WAAW;IAKxB;IAJpB;;;OAGG;IACH,YAAoB,eAAwB;QAC1C,KAAK,EAAE,CAAC;QADU,oBAAe,GAAf,eAAe,CAAS;QAE1C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACjD,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC1B,CAAC;IAEO,UAAU,CAAS;IACnB,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,KAAkB;QAC/B,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACtC,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;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"}
|
package/dist/demod/spectrum.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SampleBlock } from "../radio/sample_block.js";
|
|
1
2
|
import { SampleReceiver } from "../radio/sample_receiver.js";
|
|
2
3
|
/** A sample receiver that computes the received signal's spectrum. */
|
|
3
4
|
export declare class Spectrum implements SampleReceiver {
|
|
@@ -11,7 +12,7 @@ export declare class Spectrum implements SampleReceiver {
|
|
|
11
12
|
set size(newSize: number);
|
|
12
13
|
get size(): number;
|
|
13
14
|
setSampleRate(_: number): void;
|
|
14
|
-
receiveSamples(
|
|
15
|
+
receiveSamples(block: SampleBlock): void;
|
|
15
16
|
frequency(): number | undefined;
|
|
16
17
|
/**
|
|
17
18
|
* Populates the given array with the spectrum of the latest received signals.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spectrum.d.ts","sourceRoot":"","sources":["../../src/demod/spectrum.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,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,
|
|
1
|
+
{"version":3,"file":"spectrum.d.ts","sourceRoot":"","sources":["../../src/demod/spectrum.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,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,KAAK,EAAE,WAAW,GAAG,IAAI;IAOxC,SAAS,IAAI,MAAM,GAAG,SAAS;IAI/B;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY;CAWnC"}
|
package/dist/demod/spectrum.js
CHANGED
|
@@ -47,10 +47,10 @@ export class Spectrum {
|
|
|
47
47
|
return this.fft.length;
|
|
48
48
|
}
|
|
49
49
|
setSampleRate(_) { }
|
|
50
|
-
receiveSamples(
|
|
51
|
-
this.I.store(I);
|
|
52
|
-
this.Q.store(Q);
|
|
53
|
-
this.lastFrequency = frequency;
|
|
50
|
+
receiveSamples(block) {
|
|
51
|
+
this.I.store(block.I);
|
|
52
|
+
this.Q.store(block.Q);
|
|
53
|
+
this.lastFrequency = block.frequency;
|
|
54
54
|
this.dirty = true;
|
|
55
55
|
}
|
|
56
56
|
frequency() {
|
|
@@ -1 +1 @@
|
|
|
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,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"spectrum.js","sourceRoot":"","sources":["../../src/demod/spectrum.ts"],"names":[],"mappings":"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"}
|
package/dist/radio/radio.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { SampleBlock } from "./sample_block.js";
|
|
1
2
|
import { SampleReceiver } from "./sample_receiver.js";
|
|
2
|
-
import {
|
|
3
|
+
import { SignalSourceProvider } from "./signal_source.js";
|
|
3
4
|
/** The information in a 'radio' event. */
|
|
4
5
|
export type RadioEventType = {
|
|
5
6
|
type: "started";
|
|
@@ -51,22 +52,26 @@ export declare class Radio<ParameterKey extends string = string> extends EventTa
|
|
|
51
52
|
private state;
|
|
52
53
|
/** Currently tuned frequency. */
|
|
53
54
|
private frequency;
|
|
54
|
-
/** Channel to send messages to the state machine. */
|
|
55
|
-
private channel;
|
|
56
55
|
/** Current values of the properties. */
|
|
57
56
|
private parameterValues;
|
|
57
|
+
/** Single thread to execute async functions. */
|
|
58
|
+
private singleThread;
|
|
59
|
+
/** Handler for in-flight data transfers. */
|
|
60
|
+
private transfers?;
|
|
61
|
+
/** Current signal source. */
|
|
62
|
+
private source?;
|
|
58
63
|
/**
|
|
59
64
|
* Starts playing the radio.
|
|
60
65
|
*
|
|
61
66
|
* @returns a promise that resolves after the command has been processed by the radio.
|
|
62
67
|
*/
|
|
63
|
-
start(): Promise<
|
|
68
|
+
start(): Promise<any>;
|
|
64
69
|
/**
|
|
65
70
|
* Stops playing the radio.
|
|
66
71
|
*
|
|
67
72
|
* @returns a promise that resolves after the command has been processed by the radio.
|
|
68
73
|
*/
|
|
69
|
-
stop(): Promise<
|
|
74
|
+
stop(): Promise<any>;
|
|
70
75
|
/** Returns whether the radio is playing (or scanning). */
|
|
71
76
|
isPlaying(): boolean;
|
|
72
77
|
/**
|
|
@@ -74,7 +79,7 @@ export declare class Radio<ParameterKey extends string = string> extends EventTa
|
|
|
74
79
|
*
|
|
75
80
|
* @returns a promise that resolves after the command has been processed by the radio.
|
|
76
81
|
*/
|
|
77
|
-
setFrequency(freq: number): Promise<
|
|
82
|
+
setFrequency(freq: number): Promise<any>;
|
|
78
83
|
/** Returns the tuned frequency. */
|
|
79
84
|
getFrequency(): number;
|
|
80
85
|
/**
|
|
@@ -82,7 +87,7 @@ export declare class Radio<ParameterKey extends string = string> extends EventTa
|
|
|
82
87
|
*
|
|
83
88
|
* @returns a promise that resolves after the command has been processed by the radio.
|
|
84
89
|
*/
|
|
85
|
-
setSampleRate(sampleRate: number): Promise<
|
|
90
|
+
setSampleRate(sampleRate: number): Promise<void>;
|
|
86
91
|
/** Returns the current sample rate. */
|
|
87
92
|
getSampleRate(): number;
|
|
88
93
|
/**
|
|
@@ -90,17 +95,11 @@ export declare class Radio<ParameterKey extends string = string> extends EventTa
|
|
|
90
95
|
*
|
|
91
96
|
* @returns a promise that resolves after the command has been processed by the radio.
|
|
92
97
|
*/
|
|
93
|
-
setParameter<V>(parameter: ParameterKey, value: V): Promise<
|
|
98
|
+
setParameter<V>(parameter: ParameterKey, value: V): Promise<any>;
|
|
94
99
|
/** Returns the value of a parameter. */
|
|
95
100
|
getParameter(parameter: ParameterKey): any;
|
|
96
|
-
/**
|
|
97
|
-
* Returns a promise that resolves when the radio has processed all commands send to it up to this point.
|
|
98
|
-
*/
|
|
99
|
-
ready(): Promise<void>;
|
|
100
101
|
/** Override this function to do something when a sample block is received. */
|
|
101
102
|
onReceiveSamples(block: SampleBlock): void;
|
|
102
|
-
/** Runs the state machine. */
|
|
103
|
-
private runLoop;
|
|
104
103
|
addEventListener(type: "radio", callback: (e: RadioEvent) => void | null, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
105
104
|
addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
106
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../src/radio/radio.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../src/radio/radio.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAgB,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAGxE,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,GAAG,CAAA;CAAE,CAAC;AAEtC,kCAAkC;AAClC,qBAAa,UAAW,SAAQ,WAAW,CAAC,cAAc,CAAC;gBAC7C,CAAC,EAAE,cAAc;CAG9B;AAQD,mCAAmC;AACnC,MAAM,MAAM,YAAY,GAAG;IACzB;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,qBAAa,KAAK,CAAC,YAAY,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,WAAW;IAGxE,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,OAAO,CAAC;IAJlB,4EAA4E;gBAElE,cAAc,EAAE,oBAAoB,EACpC,cAAc,EAAE,cAAc,EAC9B,OAAO,CAAC,EAAE,YAAY,YAAA;IAUhC,2BAA2B;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,qBAAqB;IACrB,OAAO,CAAC,KAAK,CAAQ;IACrB,iCAAiC;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,wCAAwC;IACxC,OAAO,CAAC,eAAe,CAAyB;IAChD,gDAAgD;IAChD,OAAO,CAAC,YAAY,CAAe;IACnC,4CAA4C;IAC5C,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,6BAA6B;IAC7B,OAAO,CAAC,MAAM,CAAC,CAAe;IAE9B;;;;OAIG;IACG,KAAK;IA2BX;;;;OAIG;IACG,IAAI;IAcV,0DAA0D;IAC1D,SAAS;IAIT;;;;OAIG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM;IAc/B,mCAAmC;IACnC,YAAY,IAAI,MAAM;IAItB;;;;OAIG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM;IAItC,uCAAuC;IACvC,aAAa,IAAI,MAAM;IAIvB;;;;OAIG;IACG,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IAiBvD,wCAAwC;IACxC,YAAY,CAAC,SAAS,EAAE,YAAY,GAAG,GAAG;IAI1C,8EAA8E;IAC9E,gBAAgB,CAAC,KAAK,EAAE,WAAW;IAEnC,gBAAgB,CACd,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,EACxC,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"}
|
package/dist/radio/radio.js
CHANGED
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
16
|
-
* and the sample receiver, as a "radio" that can be started and stopped.
|
|
15
|
+
* A class to orchestrate the sample source, the demodulation process,
|
|
16
|
+
* and the sample receiver, as a "radio" that can be started and stopped at will.
|
|
17
17
|
*/
|
|
18
18
|
import { RadioError, RadioErrorType } from "../errors.js";
|
|
19
|
-
import {
|
|
19
|
+
import { SingleThread } from "./single_thread.js";
|
|
20
20
|
/** The type of 'radio' events. */
|
|
21
21
|
export class RadioEvent extends CustomEvent {
|
|
22
22
|
constructor(e) {
|
|
@@ -54,9 +54,8 @@ export class Radio extends EventTarget {
|
|
|
54
54
|
this.sampleRate = 1024000;
|
|
55
55
|
this.state = State.OFF;
|
|
56
56
|
this.frequency = 88500000;
|
|
57
|
-
this.channel = new Channel();
|
|
58
57
|
this.parameterValues = new Map();
|
|
59
|
-
this.
|
|
58
|
+
this.singleThread = new SingleThread();
|
|
60
59
|
}
|
|
61
60
|
/** Current sample rate. */
|
|
62
61
|
sampleRate;
|
|
@@ -64,17 +63,40 @@ export class Radio extends EventTarget {
|
|
|
64
63
|
state;
|
|
65
64
|
/** Currently tuned frequency. */
|
|
66
65
|
frequency;
|
|
67
|
-
/** Channel to send messages to the state machine. */
|
|
68
|
-
channel;
|
|
69
66
|
/** Current values of the properties. */
|
|
70
67
|
parameterValues;
|
|
68
|
+
/** Single thread to execute async functions. */
|
|
69
|
+
singleThread;
|
|
70
|
+
/** Handler for in-flight data transfers. */
|
|
71
|
+
transfers;
|
|
72
|
+
/** Current signal source. */
|
|
73
|
+
source;
|
|
71
74
|
/**
|
|
72
75
|
* Starts playing the radio.
|
|
73
76
|
*
|
|
74
77
|
* @returns a promise that resolves after the command has been processed by the radio.
|
|
75
78
|
*/
|
|
76
79
|
async start() {
|
|
77
|
-
return this.
|
|
80
|
+
return this.singleThread.run(async () => {
|
|
81
|
+
if (this.state != State.OFF)
|
|
82
|
+
return;
|
|
83
|
+
try {
|
|
84
|
+
this.source = await this.sourceProvider.get();
|
|
85
|
+
this.sampleRate = await this.source.setSampleRate(this.sampleRate);
|
|
86
|
+
this.frequency = await this.source.setCenterFrequency(this.frequency);
|
|
87
|
+
for (let [name, value] of this.parameterValues.entries()) {
|
|
88
|
+
await this.source.setParameter(name, value);
|
|
89
|
+
}
|
|
90
|
+
await this.source.startReceiving();
|
|
91
|
+
this.transfers = new Transfers(this.source, this.sampleReceiver, this, this.sampleRate, this.options);
|
|
92
|
+
this.transfers.startStream();
|
|
93
|
+
this.state = State.PLAYING;
|
|
94
|
+
this.dispatchEvent(new RadioEvent({ type: "started" }));
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
this.dispatchEvent(new RadioEvent({ type: "error", exception: e }));
|
|
98
|
+
}
|
|
99
|
+
});
|
|
78
100
|
}
|
|
79
101
|
/**
|
|
80
102
|
* Stops playing the radio.
|
|
@@ -82,7 +104,19 @@ export class Radio extends EventTarget {
|
|
|
82
104
|
* @returns a promise that resolves after the command has been processed by the radio.
|
|
83
105
|
*/
|
|
84
106
|
async stop() {
|
|
85
|
-
return this.
|
|
107
|
+
return this.singleThread.run(async () => {
|
|
108
|
+
if (this.state != State.PLAYING)
|
|
109
|
+
return;
|
|
110
|
+
try {
|
|
111
|
+
await this.transfers.stopStream();
|
|
112
|
+
await this.source.close();
|
|
113
|
+
this.state = State.OFF;
|
|
114
|
+
this.dispatchEvent(new RadioEvent({ type: "stopped" }));
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
this.dispatchEvent(new RadioEvent({ type: "error", exception: e }));
|
|
118
|
+
}
|
|
119
|
+
});
|
|
86
120
|
}
|
|
87
121
|
/** Returns whether the radio is playing (or scanning). */
|
|
88
122
|
isPlaying() {
|
|
@@ -94,7 +128,19 @@ export class Radio extends EventTarget {
|
|
|
94
128
|
* @returns a promise that resolves after the command has been processed by the radio.
|
|
95
129
|
*/
|
|
96
130
|
async setFrequency(freq) {
|
|
97
|
-
return this.
|
|
131
|
+
return this.singleThread.run(async () => {
|
|
132
|
+
if (this.state == State.OFF) {
|
|
133
|
+
this.frequency = freq;
|
|
134
|
+
}
|
|
135
|
+
else if (this.frequency != freq) {
|
|
136
|
+
try {
|
|
137
|
+
this.frequency = await this.source.setCenterFrequency(freq);
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
this.dispatchEvent(new RadioEvent({ type: "error", exception: e }));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
98
144
|
}
|
|
99
145
|
/** Returns the tuned frequency. */
|
|
100
146
|
getFrequency() {
|
|
@@ -106,7 +152,7 @@ export class Radio extends EventTarget {
|
|
|
106
152
|
* @returns a promise that resolves after the command has been processed by the radio.
|
|
107
153
|
*/
|
|
108
154
|
async setSampleRate(sampleRate) {
|
|
109
|
-
|
|
155
|
+
this.sampleRate = sampleRate;
|
|
110
156
|
}
|
|
111
157
|
/** Returns the current sample rate. */
|
|
112
158
|
getSampleRate() {
|
|
@@ -118,83 +164,26 @@ export class Radio extends EventTarget {
|
|
|
118
164
|
* @returns a promise that resolves after the command has been processed by the radio.
|
|
119
165
|
*/
|
|
120
166
|
async setParameter(parameter, value) {
|
|
121
|
-
return this.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
167
|
+
return this.singleThread.run(async () => {
|
|
168
|
+
if (this.state == State.OFF) {
|
|
169
|
+
this.parameterValues.set(parameter, value);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
try {
|
|
173
|
+
this.parameterValues.set(parameter, await this.source.setParameter(parameter, value));
|
|
174
|
+
}
|
|
175
|
+
catch (e) {
|
|
176
|
+
this.dispatchEvent(new RadioEvent({ type: "error", exception: e }));
|
|
177
|
+
}
|
|
178
|
+
}
|
|
125
179
|
});
|
|
126
180
|
}
|
|
127
181
|
/** Returns the value of a parameter. */
|
|
128
182
|
getParameter(parameter) {
|
|
129
183
|
return this.parameterValues.get(parameter);
|
|
130
184
|
}
|
|
131
|
-
/**
|
|
132
|
-
* Returns a promise that resolves when the radio has processed all commands send to it up to this point.
|
|
133
|
-
*/
|
|
134
|
-
async ready() {
|
|
135
|
-
return this.channel.send({ type: "ready" });
|
|
136
|
-
}
|
|
137
185
|
/** Override this function to do something when a sample block is received. */
|
|
138
186
|
onReceiveSamples(block) { }
|
|
139
|
-
/** Runs the state machine. */
|
|
140
|
-
async runLoop() {
|
|
141
|
-
let transfers;
|
|
142
|
-
let source;
|
|
143
|
-
while (true) {
|
|
144
|
-
let { msg, ack } = await this.channel.receive();
|
|
145
|
-
try {
|
|
146
|
-
switch (this.state) {
|
|
147
|
-
case State.OFF: {
|
|
148
|
-
if (msg.type == "frequency")
|
|
149
|
-
this.frequency = msg.value;
|
|
150
|
-
if (msg.type == "parameter")
|
|
151
|
-
this.parameterValues.set(msg.name, msg.value);
|
|
152
|
-
if (msg.type != "start")
|
|
153
|
-
continue;
|
|
154
|
-
source = await this.sourceProvider.get();
|
|
155
|
-
this.sampleRate = await source.setSampleRate(this.sampleRate);
|
|
156
|
-
this.frequency = await source.setCenterFrequency(this.frequency);
|
|
157
|
-
for (let [name, value] of this.parameterValues.entries()) {
|
|
158
|
-
await source.setParameter(name, value);
|
|
159
|
-
}
|
|
160
|
-
await source.startReceiving();
|
|
161
|
-
transfers = new Transfers(source, this.sampleReceiver, this, this.sampleRate, this.options);
|
|
162
|
-
transfers.startStream();
|
|
163
|
-
this.state = State.PLAYING;
|
|
164
|
-
this.dispatchEvent(new RadioEvent({ type: "started" }));
|
|
165
|
-
break;
|
|
166
|
-
}
|
|
167
|
-
case State.PLAYING: {
|
|
168
|
-
switch (msg.type) {
|
|
169
|
-
case "frequency":
|
|
170
|
-
if (this.frequency != msg.value) {
|
|
171
|
-
this.frequency = await source.setCenterFrequency(msg.value);
|
|
172
|
-
}
|
|
173
|
-
break;
|
|
174
|
-
case "parameter":
|
|
175
|
-
this.parameterValues.set(msg.name, await source.setParameter(msg.name, msg.value));
|
|
176
|
-
break;
|
|
177
|
-
case "stop":
|
|
178
|
-
await transfers.stopStream();
|
|
179
|
-
await source.close();
|
|
180
|
-
this.state = State.OFF;
|
|
181
|
-
this.dispatchEvent(new RadioEvent({ type: "stopped" }));
|
|
182
|
-
break;
|
|
183
|
-
default:
|
|
184
|
-
// do nothing.
|
|
185
|
-
}
|
|
186
|
-
break;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
catch (e) {
|
|
191
|
-
this.dispatchEvent(new RadioEvent({ type: "error", exception: e }));
|
|
192
|
-
}
|
|
193
|
-
finally {
|
|
194
|
-
ack();
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
187
|
addEventListener(type, callback, options) {
|
|
199
188
|
super.addEventListener(type, callback, options);
|
|
200
189
|
}
|
|
@@ -260,7 +249,7 @@ class Transfers {
|
|
|
260
249
|
while (this.buffersRunning <= this.buffersWanted) {
|
|
261
250
|
const b = await this.source.readSamples(this.samplesPerBuf);
|
|
262
251
|
this.radio.onReceiveSamples(b);
|
|
263
|
-
this.sampleReceiver.receiveSamples(b
|
|
252
|
+
this.sampleReceiver.receiveSamples(b);
|
|
264
253
|
}
|
|
265
254
|
}
|
|
266
255
|
catch (e) {
|
package/dist/radio/radio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio.js","sourceRoot":"","sources":["../../src/radio/radio.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;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"radio.js","sourceRoot":"","sources":["../../src/radio/radio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** A block of samples returned by SignalSource.readSamples() */
|
|
2
|
+
export type SampleBlock = {
|
|
3
|
+
/**
|
|
4
|
+
* The I components of the samples.
|
|
5
|
+
* Each element of I matches a corresponding element of Q, and I and Q have the same lengths.
|
|
6
|
+
*/
|
|
7
|
+
I: Float32Array;
|
|
8
|
+
/**
|
|
9
|
+
* The Q components of the samples.
|
|
10
|
+
* Each element of Q matches a corresponding element of I, and I and Q have the same lengths.
|
|
11
|
+
*/
|
|
12
|
+
Q: Float32Array;
|
|
13
|
+
/** The center frequency the source listened on when these samples were captured. */
|
|
14
|
+
frequency: number;
|
|
15
|
+
/** Extra data provided by the source. */
|
|
16
|
+
data?: any;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=sample_block.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sample_block.d.ts","sourceRoot":"","sources":["../../src/radio/sample_block.ts"],"names":[],"mappings":"AAcA,gEAAgE;AAChE,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,CAAC,EAAE,YAAY,CAAC;IAChB;;;OAGG;IACH,CAAC,EAAE,YAAY,CAAC;IAChB,oFAAoF;IACpF,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
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 {};
|
|
15
|
+
//# sourceMappingURL=sample_block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sample_block.js","sourceRoot":"","sources":["../../src/radio/sample_block.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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { SampleBlock } from "./sample_block.js";
|
|
1
2
|
/** Interface for classes that get samples from a Radio class. */
|
|
2
3
|
export interface SampleReceiver {
|
|
3
4
|
/** Sets the sample rate. */
|
|
4
5
|
setSampleRate(sampleRate: number): void;
|
|
5
6
|
/** Receives samples that should be demodulated. */
|
|
6
|
-
receiveSamples(
|
|
7
|
+
receiveSamples(block: SampleBlock): void;
|
|
7
8
|
}
|
|
8
9
|
/** A "composite" sample receiver that executes its component receivers in sequence. */
|
|
9
10
|
export declare class CompositeReceiver implements SampleReceiver {
|
|
@@ -12,6 +13,6 @@ export declare class CompositeReceiver implements SampleReceiver {
|
|
|
12
13
|
static of(first: SampleReceiver, ...rest: SampleReceiver[]): SampleReceiver;
|
|
13
14
|
private constructor();
|
|
14
15
|
setSampleRate(sampleRate: number): void;
|
|
15
|
-
receiveSamples(
|
|
16
|
+
receiveSamples(block: SampleBlock): void;
|
|
16
17
|
}
|
|
17
18
|
//# 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,
|
|
1
|
+
{"version":3,"file":"sample_receiver.d.ts","sourceRoot":"","sources":["../../src/radio/sample_receiver.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAExC,mDAAmD;IACnD,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;CAC1C;AAED,uFAAuF;AACvF,qBAAa,iBAAkB,YAAW,cAAc;IAoB3B,SAAS,EAAE,cAAc,EAAE;IAnBtD,oEAAoE;IACpE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,GAAG,cAAc;IAkB3E,OAAO;IAEP,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAMvC,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;CAKzC"}
|
|
@@ -43,9 +43,9 @@ export class CompositeReceiver {
|
|
|
43
43
|
receiver.setSampleRate(sampleRate);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
-
receiveSamples(
|
|
46
|
+
receiveSamples(block) {
|
|
47
47
|
for (let receiver of this.receivers) {
|
|
48
|
-
receiver.receiveSamples(
|
|
48
|
+
receiver.receiveSamples(block);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
}
|
|
@@ -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;
|
|
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;AAajC,uFAAuF;AACvF,MAAM,OAAO,iBAAiB;IAoBD;IAnB3B,oEAAoE;IACpE,MAAM,CAAC,EAAE,CAAC,KAAqB,EAAE,GAAG,IAAsB;QACxD,IAAI,IAAI,GAAqB,EAAE,CAAC;QAChC,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QACD,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACtB,IAAI,IAAI,YAAY,iBAAiB,EAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,YAA2B,SAA2B;QAA3B,cAAS,GAAT,SAAS,CAAkB;IAAG,CAAC;IAE1D,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,KAAkB;QAC/B,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,20 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export type SampleBlock = {
|
|
3
|
-
/**
|
|
4
|
-
* The I components of the samples.
|
|
5
|
-
* Each element of I matches a corresponding element of Q, and I and Q have the same lengths.
|
|
6
|
-
*/
|
|
7
|
-
I: Float32Array;
|
|
8
|
-
/**
|
|
9
|
-
* The Q components of the samples.
|
|
10
|
-
* Each element of Q matches a corresponding element of I, and I and Q have the same lengths.
|
|
11
|
-
*/
|
|
12
|
-
Q: Float32Array;
|
|
13
|
-
/** The center frequency the source listened on when these samples were captured. */
|
|
14
|
-
frequency: number;
|
|
15
|
-
/** Extra data. */
|
|
16
|
-
data?: any;
|
|
17
|
-
};
|
|
1
|
+
import { SampleBlock } from "./sample_block.js";
|
|
18
2
|
/** Interface for a sample source. */
|
|
19
3
|
export interface SignalSource<ParameterKey extends string = string> {
|
|
20
4
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal_source.d.ts","sourceRoot":"","sources":["../../src/radio/signal_source.ts"],"names":[],"mappings":"AAcA,
|
|
1
|
+
{"version":3,"file":"signal_source.d.ts","sourceRoot":"","sources":["../../src/radio/signal_source.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qCAAqC;AACrC,MAAM,WAAW,YAAY,CAAC,YAAY,SAAS,MAAM,GAAG,MAAM;IAChE;;;;OAIG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD;;;OAGG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,qCAAqC;IACrC,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACtE;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClD,oCAAoC;IACpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,gEAAgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,+BAA+B;IAC/B,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;CAC9B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A class that lets you execute multiple async functions in a single 'thread'.
|
|
3
|
+
*
|
|
4
|
+
* Functions passed to the `run()` function will be executed in strict sequence.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SingleThread {
|
|
7
|
+
constructor();
|
|
8
|
+
private promise;
|
|
9
|
+
/**
|
|
10
|
+
* Executes the provided async function.
|
|
11
|
+
*
|
|
12
|
+
* Functions passed to `run()` are executed in strict sequence: each function only starts after the previous one ends.
|
|
13
|
+
*
|
|
14
|
+
* Make sure your function doesn't throw, because then the behavior is undefined.
|
|
15
|
+
*/
|
|
16
|
+
run<T>(fn: () => Promise<T>): Promise<any>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=single_thread.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single_thread.d.ts","sourceRoot":"","sources":["../../src/radio/single_thread.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,YAAY;;IAKvB,OAAO,CAAC,OAAO,CAAe;IAE9B;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;CAIlC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A class that lets you execute multiple async functions in a single 'thread'.
|
|
3
|
+
*
|
|
4
|
+
* Functions passed to the `run()` function will be executed in strict sequence.
|
|
5
|
+
*/
|
|
6
|
+
export class SingleThread {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.promise = Promise.resolve();
|
|
9
|
+
}
|
|
10
|
+
promise;
|
|
11
|
+
/**
|
|
12
|
+
* Executes the provided async function.
|
|
13
|
+
*
|
|
14
|
+
* Functions passed to `run()` are executed in strict sequence: each function only starts after the previous one ends.
|
|
15
|
+
*
|
|
16
|
+
* Make sure your function doesn't throw, because then the behavior is undefined.
|
|
17
|
+
*/
|
|
18
|
+
async run(fn) {
|
|
19
|
+
this.promise = this.promise.then(() => fn());
|
|
20
|
+
return this.promise;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=single_thread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single_thread.js","sourceRoot":"","sources":["../../src/radio/single_thread.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACvB;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IAEO,OAAO,CAAe;IAE9B;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,CAAI,EAAoB;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
|
package/dist/radio.d.ts
CHANGED
package/dist/radio.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../src/radio.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../src/radio.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC"}
|
package/dist/radio.js
CHANGED
package/dist/radio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio.js","sourceRoot":"","sources":["../src/radio.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"radio.js","sourceRoot":"","sources":["../src/radio.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC"}
|
package/dist/sources/push.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/sources/push.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/sources/push.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;;;;;;;GAWG;AACH,qBAAa,UAAW,YAAW,YAAY;;IAU7C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,CAAC,CAAoB;IAC7B,OAAO,CAAC,CAAC,CAAoB;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAkB;IAEhC,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IAEhE,aAAa,CAAC,UAAU,EAAE,MAAM;IAOhC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKjD,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrC,WAAW,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM;IAiChE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAe3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
package/dist/sources/push.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/sources/push.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,iBAAiB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/sources/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read_ring.d.ts","sourceRoot":"","sources":["../../src/sources/read_ring.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"read_ring.d.ts","sourceRoot":"","sources":["../../src/sources/read_ring.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAMvD,qBAAa,eAAe;gBACd,MAAM,EAAE,MAAM;IAO1B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,IAAI,CAAS;IAErB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAczC,OAAO,CAAC,KAAK,EAAE,WAAW;IAO1B,MAAM;IAaN,cAAc,IAAI,OAAO;IAIzB,YAAY,IAAI,MAAM;CAIvB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { SampleBlock
|
|
1
|
+
import { SampleBlock } from "../radio/sample_block.js";
|
|
2
|
+
import { SignalSource } from "../radio/signal_source.js";
|
|
2
3
|
/**
|
|
3
4
|
* A function that generates samples.
|
|
4
5
|
* @param startSample The first sample's number.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/sources/realtime.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/sources/realtime.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,KACZ,IAAI,CAAC;AAEV;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,YAAY;IACrC,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,eAAe;IAa9C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,CAAC,CAAoB;IAC7B,OAAO,CAAC,CAAC,CAAoB;IAC7B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAgB;IAEzB,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IAEhE,aAAa,CAAC,UAAU,EAAE,MAAM;IAOhC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKjD,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,gCAAgC;IAChC,OAAO,CAAC,QAAQ;IAIhB,8FAA8F;IAC9F,OAAO,CAAC,KAAK;IAuCb,6DAA6D;IAC7D,OAAO,CAAC,UAAU;CAyBnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../src/sources/realtime.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,iBAAiB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../src/sources/realtime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/dist/radio/msgqueue.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/radio/msgqueue.js
DELETED
|
@@ -1,62 +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
|
-
/** 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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|