@rfkit/spectrum-analyzer 0.1.41 → 0.1.43
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 +85 -9
- package/core/LevelStreamAnalyzer/index.d.ts +3 -0
- package/core/LevelStreamAnalyzer/index.d.ts.map +1 -1
- package/core/LevelStreamAnalyzer/types.d.ts +1 -1
- package/core/LevelStreamAnalyzer/types.d.ts.map +1 -1
- package/core/SpectrumAnalyzer/index.d.ts.map +1 -1
- package/core/SpectrumAnalyzer/tools.d.ts +21 -0
- package/core/SpectrumAnalyzer/tools.d.ts.map +1 -1
- package/core/SpectrumAnalyzer/types.d.ts +1 -1
- package/core/SpectrumAnalyzer/types.d.ts.map +1 -1
- package/index.js +1 -1
- package/package.json +14 -3
- package/wasm/core/LevelStreamAnalyzer/constants.d.ts +13 -0
- package/wasm/core/LevelStreamAnalyzer/constants.d.ts.map +1 -0
- package/wasm/core/LevelStreamAnalyzer/index.d.ts +56 -0
- package/wasm/core/LevelStreamAnalyzer/index.d.ts.map +1 -0
- package/wasm/core/LevelStreamAnalyzer/types.d.ts +13 -0
- package/wasm/core/LevelStreamAnalyzer/types.d.ts.map +1 -0
- package/wasm/core/SeriesManager/constants.d.ts +10 -0
- package/wasm/core/SeriesManager/constants.d.ts.map +1 -0
- package/wasm/core/SeriesManager/index.d.ts +112 -0
- package/wasm/core/SeriesManager/index.d.ts.map +1 -0
- package/wasm/core/SeriesManager/types.d.ts +43 -0
- package/wasm/core/SeriesManager/types.d.ts.map +1 -0
- package/wasm/core/SpectrumAnalyzer/constants.d.ts +34 -0
- package/wasm/core/SpectrumAnalyzer/constants.d.ts.map +1 -0
- package/wasm/core/SpectrumAnalyzer/errors.d.ts +16 -0
- package/wasm/core/SpectrumAnalyzer/errors.d.ts.map +1 -0
- package/wasm/core/SpectrumAnalyzer/index.d.ts +207 -0
- package/wasm/core/SpectrumAnalyzer/index.d.ts.map +1 -0
- package/wasm/core/SpectrumAnalyzer/tools.d.ts +89 -0
- package/wasm/core/SpectrumAnalyzer/tools.d.ts.map +1 -0
- package/wasm/core/SpectrumAnalyzer/types.d.ts +89 -0
- package/wasm/core/SpectrumAnalyzer/types.d.ts.map +1 -0
- package/wasm/index.d.ts +11 -0
- package/wasm/index.d.ts.map +1 -0
- package/wasm/index.js +1 -0
- package/wasm/src-rust/pkg/rfkit_spectrum_analyzer_wasm.js +2 -0
- package/wasm/src-rust/pkg/rfkit_spectrum_analyzer_wasm_bg.wasm +0 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import type { SeriesChangeCallback, SeriesConfig, SeriesSubscriber, SubscriptionOptions } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Series 处理工具,用于管理图形系列的配置
|
|
4
|
+
* 支持初始化、属性设置、变更回调和订阅功能
|
|
5
|
+
*/
|
|
6
|
+
export default class SeriesManager {
|
|
7
|
+
private seriesMap;
|
|
8
|
+
private changeCallbacks;
|
|
9
|
+
private subscribers;
|
|
10
|
+
/**
|
|
11
|
+
* 构造函数,支持初始化系列配置
|
|
12
|
+
* @param initialSeries 初始系列配置数组
|
|
13
|
+
*/
|
|
14
|
+
constructor(initialSeries?: SeriesConfig[]);
|
|
15
|
+
/**
|
|
16
|
+
* 初始化系列配置
|
|
17
|
+
* @param seriesConfigs 系列配置数组
|
|
18
|
+
*/
|
|
19
|
+
private initializeSeries;
|
|
20
|
+
/**
|
|
21
|
+
* 添加新的系列配置
|
|
22
|
+
* @param config 系列配置
|
|
23
|
+
*/
|
|
24
|
+
addSeries(config: SeriesConfig): void;
|
|
25
|
+
/**
|
|
26
|
+
* 获取指定名称的系列配置
|
|
27
|
+
* @param name 系列名称
|
|
28
|
+
* @returns 系列配置或 undefined
|
|
29
|
+
*/
|
|
30
|
+
getSeries(name: string): SeriesConfig | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* 获取所有系列配置
|
|
33
|
+
* @returns 所有系列配置的数组
|
|
34
|
+
*/
|
|
35
|
+
getAllSeries(): SeriesConfig[];
|
|
36
|
+
/**
|
|
37
|
+
* 获取当前所有配置
|
|
38
|
+
* @returns 包含所有系列配置的对象,以系列名为键
|
|
39
|
+
*/
|
|
40
|
+
getAllConfigs(): Record<string, SeriesConfig>;
|
|
41
|
+
/**
|
|
42
|
+
* 设置指定系列的某个属性
|
|
43
|
+
* @param name 系列名称
|
|
44
|
+
* @param property 属性名
|
|
45
|
+
* @param value 属性值
|
|
46
|
+
* @returns 是否设置成功
|
|
47
|
+
*/
|
|
48
|
+
setSeriesProperty<K extends keyof SeriesConfig>(name: string, property: K, value: SeriesConfig[K]): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* 删除指定名称的系列
|
|
51
|
+
* @param name 系列名称
|
|
52
|
+
* @returns 是否删除成功
|
|
53
|
+
*/
|
|
54
|
+
removeSeries(name: string): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* 检查系列是否存在
|
|
57
|
+
* @param name 系列名称
|
|
58
|
+
* @returns 是否存在
|
|
59
|
+
*/
|
|
60
|
+
hasSeries(name: string): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* 添加变更回调函数
|
|
63
|
+
* @param callback 回调函数
|
|
64
|
+
*/
|
|
65
|
+
onChange(callback: SeriesChangeCallback): void;
|
|
66
|
+
/**
|
|
67
|
+
* 移除变更回调函数
|
|
68
|
+
* @param callback 要移除的回调函数
|
|
69
|
+
*/
|
|
70
|
+
offChange(callback: SeriesChangeCallback): void;
|
|
71
|
+
/**
|
|
72
|
+
* 通知所有回调函数属性变更
|
|
73
|
+
* @param name 系列名称
|
|
74
|
+
* @param property 属性名
|
|
75
|
+
* @param value 新值
|
|
76
|
+
*/
|
|
77
|
+
private notifyChange;
|
|
78
|
+
/**
|
|
79
|
+
* 清空所有系列配置
|
|
80
|
+
*/
|
|
81
|
+
clear(): void;
|
|
82
|
+
/**
|
|
83
|
+
* 获取系列数量
|
|
84
|
+
* @returns 系列数量
|
|
85
|
+
*/
|
|
86
|
+
size(): number;
|
|
87
|
+
/**
|
|
88
|
+
* 订阅系列变更事件
|
|
89
|
+
* @param subscriber 订阅回调函数
|
|
90
|
+
* @param options 订阅选项
|
|
91
|
+
* @returns 取消订阅的函数
|
|
92
|
+
*/
|
|
93
|
+
subscribe(subscriber: SeriesSubscriber, options?: SubscriptionOptions): () => void;
|
|
94
|
+
/**
|
|
95
|
+
* 取消订阅
|
|
96
|
+
* @param subscriber 要取消的订阅回调函数
|
|
97
|
+
*/
|
|
98
|
+
unsubscribe(subscriber: SeriesSubscriber): void;
|
|
99
|
+
/**
|
|
100
|
+
* 发送事件给所有订阅者
|
|
101
|
+
* @param event 事件数据
|
|
102
|
+
*/
|
|
103
|
+
private emitEvent;
|
|
104
|
+
/**
|
|
105
|
+
* 判断是否应该通知订阅者
|
|
106
|
+
* @param subscriber 订阅者
|
|
107
|
+
* @param event 事件数据
|
|
108
|
+
* @returns 是否应该通知
|
|
109
|
+
*/
|
|
110
|
+
private shouldNotifySubscriber;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/SeriesManager/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,YAAY,EAEZ,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAGjB;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,aAAa;IAEhC,OAAO,CAAC,SAAS,CAAwC;IAEzD,OAAO,CAAC,eAAe,CAA8B;IAErD,OAAO,CAAC,WAAW,CAAyD;IAE5E;;;OAGG;gBACS,aAAa,GAAE,YAAY,EAAO;IAI9C;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;OAGG;IACI,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAgB5C;;;;OAIG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIxD;;;OAGG;IACI,YAAY,IAAI,YAAY,EAAE;IAIrC;;;OAGG;IACI,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAQpD;;;;;;OAMG;IACI,iBAAiB,CAAC,CAAC,SAAS,MAAM,YAAY,EACnD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GACrB,OAAO;IAiCV;;;;OAIG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAoB1C;;;;OAIG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC;;;OAGG;IACI,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAIrD;;;OAGG;IACI,SAAS,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAOtD;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACI,KAAK,IAAI,IAAI;IASpB;;;OAGG;IACI,IAAI,IAAI,MAAM;IAIrB;;;;;OAKG;IACI,SAAS,CACd,UAAU,EAAE,gBAAgB,EAC5B,OAAO,GAAE,mBAAwB,GAChC,MAAM,IAAI;IA4Bb;;;OAGG;IACI,WAAW,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAItD;;;OAGG;IACH,OAAO,CAAC,SAAS;IASjB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;CAuB/B"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export interface SeriesConfig {
|
|
2
|
+
readonly name: string;
|
|
3
|
+
label: string;
|
|
4
|
+
color: string;
|
|
5
|
+
display: boolean;
|
|
6
|
+
type: GraphicType;
|
|
7
|
+
thickness?: number;
|
|
8
|
+
orientation?: OrientationType;
|
|
9
|
+
}
|
|
10
|
+
export declare enum OrientationType {
|
|
11
|
+
Horizontal = "horizontal",
|
|
12
|
+
Vertical = "vertical"
|
|
13
|
+
}
|
|
14
|
+
export declare enum GraphicType {
|
|
15
|
+
Circle = "circle",
|
|
16
|
+
Rect = "rect",
|
|
17
|
+
Line = "line",
|
|
18
|
+
Stepline = "stepline",
|
|
19
|
+
Bar = "bar",
|
|
20
|
+
Area = "area"
|
|
21
|
+
}
|
|
22
|
+
export type SeriesChangeCallback = (name: string, property: keyof SeriesConfig, value: SeriesConfig[keyof SeriesConfig]) => void;
|
|
23
|
+
export declare enum SeriesEventType {
|
|
24
|
+
PropertyChanged = "propertyChanged",
|
|
25
|
+
SeriesAdded = "seriesAdded",
|
|
26
|
+
SeriesRemoved = "seriesRemoved",
|
|
27
|
+
SeriesCleared = "seriesCleared"
|
|
28
|
+
}
|
|
29
|
+
export interface SeriesEventData {
|
|
30
|
+
type: SeriesEventType;
|
|
31
|
+
name?: string;
|
|
32
|
+
property?: keyof SeriesConfig;
|
|
33
|
+
value?: SeriesConfig[keyof SeriesConfig];
|
|
34
|
+
oldValue?: SeriesConfig[keyof SeriesConfig];
|
|
35
|
+
series?: SeriesConfig;
|
|
36
|
+
}
|
|
37
|
+
export type SeriesSubscriber = (event: SeriesEventData) => void;
|
|
38
|
+
export interface SubscriptionOptions {
|
|
39
|
+
immediate?: boolean;
|
|
40
|
+
eventTypes?: SeriesEventType[];
|
|
41
|
+
seriesNames?: string[];
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/SeriesManager/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IAEd,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,oBAAY,eAAe;IACzB,UAAU,eAAe;IACzB,QAAQ,aAAa;CACtB;AAED,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAED,MAAM,MAAM,oBAAoB,GAAG,CACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,YAAY,EAC5B,KAAK,EAAE,YAAY,CAAC,MAAM,YAAY,CAAC,KACpC,IAAI,CAAC;AAGV,oBAAY,eAAe;IACzB,eAAe,oBAAoB;IACnC,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;CAChC;AAGD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,YAAY,CAAC;IAC9B,KAAK,CAAC,EAAE,YAAY,CAAC,MAAM,YAAY,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,YAAY,CAAC,MAAM,YAAY,CAAC,CAAC;IAC5C,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAGD,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;AAGhE,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export declare const SPECTRUM: {
|
|
2
|
+
readonly INITIAL_VALUE: number;
|
|
3
|
+
readonly WATERFALL_MAX_FRAMES: 100;
|
|
4
|
+
readonly OUTPUT_POINTS: 1001;
|
|
5
|
+
};
|
|
6
|
+
export declare const DEFAULT_SPECTRUM_CONFIG: {
|
|
7
|
+
readonly maxPoints: 1001;
|
|
8
|
+
readonly waterfallMaxFrames: 100;
|
|
9
|
+
readonly initialValue: number;
|
|
10
|
+
readonly processing: {
|
|
11
|
+
readonly enableWaterfall: false;
|
|
12
|
+
readonly enableMetrics: false;
|
|
13
|
+
readonly enableFluorescence: false;
|
|
14
|
+
};
|
|
15
|
+
readonly outputPoints: 1001;
|
|
16
|
+
readonly outputRange: {
|
|
17
|
+
readonly start: 0;
|
|
18
|
+
readonly end: 1001;
|
|
19
|
+
};
|
|
20
|
+
readonly templateTolerance: 0;
|
|
21
|
+
};
|
|
22
|
+
export declare const ERROR_MESSAGES: {
|
|
23
|
+
readonly EMPTY_SEGMENTS: "频段配置不能为空";
|
|
24
|
+
readonly INVALID_CONFIG: "必须且只能配置 segments 或 bandwidthConfig 其中之一";
|
|
25
|
+
readonly EMPTY_BANDWIDTH: "bandwidthConfig 不能为空";
|
|
26
|
+
readonly INVALID_SEGMENT: (index: number) => string;
|
|
27
|
+
readonly INDEX_OUT_OF_BOUNDS: (index: number) => string;
|
|
28
|
+
readonly INVALID_ANTENNA_FACTOR_LENGTH: (points: number) => string;
|
|
29
|
+
readonly INVALID_ANTENNA_FACTOR: "天线因子数据必须是有效的正数";
|
|
30
|
+
readonly INVALID_SAMPLING_RANGE: "采样范围无效";
|
|
31
|
+
readonly INVALID_MAX_POINTS: "点数必须大于0";
|
|
32
|
+
readonly INVALID_LENGTH: (expected: number) => string;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/core/SpectrumAnalyzer/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;CAIX,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;CAe1B,CAAC;AAEX,eAAO,MAAM,cAAc;;;;sCAIA,MAAM;0CACF,MAAM;qDACK,MAAM;;;;wCAKnB,MAAM;CAEzB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class SpectrumError extends Error {
|
|
2
|
+
readonly code: string;
|
|
3
|
+
readonly details?: unknown | undefined;
|
|
4
|
+
constructor(message: string, code: string, details?: unknown | undefined);
|
|
5
|
+
}
|
|
6
|
+
export declare class DataValidationError extends SpectrumError {
|
|
7
|
+
constructor(message: string, details?: unknown);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 索引越界错误
|
|
11
|
+
*/
|
|
12
|
+
export declare class IndexOutOfBoundsError extends SpectrumError {
|
|
13
|
+
readonly index: number;
|
|
14
|
+
constructor(message: string, index: number, details?: unknown);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/core/SpectrumAnalyzer/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;aAGpB,IAAI,EAAE,MAAM;aACZ,OAAO,CAAC,EAAE,OAAO;gBAFjC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,YAAA;CAKpC;AAED,qBAAa,mBAAoB,SAAQ,aAAa;gBACxC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAG/C;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,aAAa;aAGpC,KAAK,EAAE,MAAM;gBAD7B,OAAO,EAAE,MAAM,EACC,KAAK,EAAE,MAAM,EAC7B,OAAO,CAAC,EAAE,OAAO;CAOpB"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import type { isValidFloat32Array, ProcessInput, ScanSegment, SpectrumConfig, SpectrumOutputData, TemplateOverData, TimestampedFloat32Array } from './types';
|
|
2
|
+
import { ExtraDataMode } from './types';
|
|
3
|
+
export default class SpectrumAnalyzer {
|
|
4
|
+
config: Required<Omit<SpectrumConfig, 'segments' | 'bandwidthConfig' | 'onSpectrumUpdate'>>;
|
|
5
|
+
private segments;
|
|
6
|
+
antennaFactorData: Float32Array;
|
|
7
|
+
antennaFactorSwitch: boolean;
|
|
8
|
+
protected realData: TimestampedFloat32Array;
|
|
9
|
+
protected maxData: isValidFloat32Array;
|
|
10
|
+
protected minData: isValidFloat32Array;
|
|
11
|
+
protected avgData: isValidFloat32Array;
|
|
12
|
+
protected templateData: Float32Array;
|
|
13
|
+
protected occupancyData: Float32Array;
|
|
14
|
+
protected backgroundNoiseData: Float32Array;
|
|
15
|
+
protected waterfallData: TimestampedFloat32Array[];
|
|
16
|
+
srcIndexCache: Uint32Array;
|
|
17
|
+
protected realOutputData: Float32Array;
|
|
18
|
+
protected waterfallOutputData: TimestampedFloat32Array[];
|
|
19
|
+
protected scanProgress: number;
|
|
20
|
+
protected lastIndex: number;
|
|
21
|
+
protected processTimes: number;
|
|
22
|
+
protected lastProcessTime: number;
|
|
23
|
+
protected cachedExceedingDatas: TemplateOverData[];
|
|
24
|
+
protected fluorescenceData?: Map<number, number>[];
|
|
25
|
+
protected fluorescenceMaxCount: number;
|
|
26
|
+
extraData: Record<string, Float32Array>;
|
|
27
|
+
protected extraOutputData: Record<string, Float32Array>;
|
|
28
|
+
private pendingDataFlags;
|
|
29
|
+
private hasPendingData;
|
|
30
|
+
private hasProcessedData;
|
|
31
|
+
private isProcessing;
|
|
32
|
+
private readonly onSpectrumUpdate?;
|
|
33
|
+
constructor(config: Partial<SpectrumConfig>);
|
|
34
|
+
/**
|
|
35
|
+
* 处理输入数据,包括验证、拼接、统计、采样等操作。
|
|
36
|
+
* @param {ProcessInput} input - 输入数据,包含数据、时间戳、分段偏移和偏移量。
|
|
37
|
+
*/
|
|
38
|
+
process({ data, timestamp, segmentOffset, offset }: ProcessInput): void;
|
|
39
|
+
/**
|
|
40
|
+
* 初始化扫描分段信息,并更新最大点数。
|
|
41
|
+
* @param {ScanSegment[]} segments - 扫描分段信息数组。
|
|
42
|
+
*/
|
|
43
|
+
initializeSegments(segments: ScanSegment[]): void;
|
|
44
|
+
/**
|
|
45
|
+
* 设置天线因子数据,并根据开关状态重新输出数据。
|
|
46
|
+
* @param {Float32Array} data - 天线因子数据,默认为根据最大点数创建的数组。
|
|
47
|
+
*/
|
|
48
|
+
setAntennaFactor(d: Float32Array | number[]): void;
|
|
49
|
+
/**
|
|
50
|
+
* 设置天线因子开关,并根据开关状态重新输出数据。
|
|
51
|
+
* @param {boolean} newAntennaFactorSwitch - 新的天线因子开关状态。
|
|
52
|
+
*/
|
|
53
|
+
setAntennaFactorSwitch(newAntennaFactorSwitch: boolean): void;
|
|
54
|
+
/**
|
|
55
|
+
* 设置瀑布图数据,用于从外部导入已缓存的瀑布图数据。
|
|
56
|
+
* @param {TimestampedFloat32Array[]} data - 瀑布图数据数组。
|
|
57
|
+
*/
|
|
58
|
+
setWaterfallData(newWaterfallData: TimestampedFloat32Array[]): void;
|
|
59
|
+
/**
|
|
60
|
+
* 设置实时值数据,用于从外部导入已缓存的实时值数据。
|
|
61
|
+
* @param {TimestampedFloat32Array} data - 实时值数据。
|
|
62
|
+
*/
|
|
63
|
+
setRealData(data: TimestampedFloat32Array): void;
|
|
64
|
+
/**
|
|
65
|
+
* 设置最大值数据,用于从外部导入已缓存的最大值数据。
|
|
66
|
+
* @param {Float32Array} data - 最大值数据。
|
|
67
|
+
*/
|
|
68
|
+
setMaxData(data: Float32Array): void;
|
|
69
|
+
/**
|
|
70
|
+
* 设置最小值数据,用于从外部导入已缓存的最小值数据。
|
|
71
|
+
* @param {Float32Array} data - 最小值数据。
|
|
72
|
+
*/
|
|
73
|
+
setMinData(data: Float32Array): void;
|
|
74
|
+
/**
|
|
75
|
+
* 设置平均值数据,用于从外部导入已缓存的平均值数据。
|
|
76
|
+
* @param {Float32Array} data - 平均值数据。
|
|
77
|
+
*/
|
|
78
|
+
setAvgData(data: Float32Array): void;
|
|
79
|
+
/**
|
|
80
|
+
* 设置占用度数据
|
|
81
|
+
* @param {Float32Array | number[]} data - 占用度数据
|
|
82
|
+
*/
|
|
83
|
+
setOccupancyData(data?: Float32Array | number[]): void;
|
|
84
|
+
/**
|
|
85
|
+
* 重置频谱分析器的状态,包括数据和进度。
|
|
86
|
+
*/
|
|
87
|
+
/**
|
|
88
|
+
* 设置额外数据
|
|
89
|
+
* @param data 数据对象
|
|
90
|
+
* @param mode 操作模式:ExtraDataMode.REPLACE(替换全部), ExtraDataMode.MERGE(合并), ExtraDataMode.UPDATE(更新已存在的键)
|
|
91
|
+
*/
|
|
92
|
+
setExtraData(data: Record<string, Float32Array | number[]> | null, mode?: ExtraDataMode): void;
|
|
93
|
+
reset(preserveProcessedFlag?: boolean): void;
|
|
94
|
+
/**
|
|
95
|
+
* 获取频谱分析器的性能指标,包括处理时间、数据点数、瀑布图帧数、初始化状态和内存使用情况。
|
|
96
|
+
* @returns {Readonly<Record<string, number | boolean>>} - 包含性能指标的对象。
|
|
97
|
+
*/
|
|
98
|
+
getPerformanceMetrics(): Readonly<Record<string, number | boolean>>;
|
|
99
|
+
/**
|
|
100
|
+
* 更新采样范围,并重新输出数据。
|
|
101
|
+
* @param {number} start - 采样范围的起始位置。
|
|
102
|
+
* @param {number} end - 采样范围的结束位置。
|
|
103
|
+
* @returns {Uint32Array} - 输出值对应的原始数据索引数组。
|
|
104
|
+
*/
|
|
105
|
+
updateSamplingRange(start: number, end: number): Uint32Array;
|
|
106
|
+
/**
|
|
107
|
+
* 设置模板数据
|
|
108
|
+
* @param {Float32Array | number[]} data - 模板数据
|
|
109
|
+
* @param {number} templateTolerance - 可选,模板超出计算的容差值
|
|
110
|
+
*/
|
|
111
|
+
setTemplateData(data?: Float32Array | number[], templateTolerance?: number): void;
|
|
112
|
+
/**
|
|
113
|
+
* 设置背景噪声数据
|
|
114
|
+
* @param {Float32Array | number[]} data - 背景噪声数据
|
|
115
|
+
*/
|
|
116
|
+
setBackgroundNoiseData(data?: Float32Array | number[]): void;
|
|
117
|
+
/**
|
|
118
|
+
* 统一的超出数据段计算和缓存更新方法
|
|
119
|
+
* @param forceFullCalculation - 是否强制进行全量计算
|
|
120
|
+
* @param incrementalRange - 增量计算的范围
|
|
121
|
+
* @returns 计算得到的超出数据段
|
|
122
|
+
*/
|
|
123
|
+
private updateTemplateOverData;
|
|
124
|
+
/**
|
|
125
|
+
* 对数据进行重采样,生成频谱输出数据。
|
|
126
|
+
* @returns {Partial<SpectrumOutputData>} - 包含重采样后的实时数据、最大值、最小值和平均值的对象。
|
|
127
|
+
*/
|
|
128
|
+
protected resampleDataSeries(): Partial<SpectrumOutputData>;
|
|
129
|
+
/**
|
|
130
|
+
* 处理 extraData 的重采样,生成 extraOutputData
|
|
131
|
+
* 利用现有的 srcIndexCache 进行高效重采样
|
|
132
|
+
*/
|
|
133
|
+
/**
|
|
134
|
+
* 对瀑布图输出数据进行重采样。
|
|
135
|
+
*/
|
|
136
|
+
protected resampleWaterfallOutputData(): void;
|
|
137
|
+
/**
|
|
138
|
+
* 更新瀑布图数据,包括添加新数据和移除旧数据。
|
|
139
|
+
* @param {TimestampedFloat32Array} data - 输入的实时数据。
|
|
140
|
+
* @param {TimestampedFloat32Array} outputData - 输出的实时数据。
|
|
141
|
+
*/
|
|
142
|
+
protected updateWaterfallData(data: TimestampedFloat32Array, outputData: TimestampedFloat32Array): void;
|
|
143
|
+
/**
|
|
144
|
+
* 更新最大点数,并重置。
|
|
145
|
+
* @param {number} maxPoints - 新的最大点数。
|
|
146
|
+
*/
|
|
147
|
+
protected updateMaxPoints(maxPoints: number): void;
|
|
148
|
+
/**
|
|
149
|
+
* 验证输入数据的索引是否在有效范围内。
|
|
150
|
+
* @param {Float32Array} data - 输入数据。
|
|
151
|
+
* @param {number} index - 数据的起始索引。
|
|
152
|
+
*/
|
|
153
|
+
protected validateInput(data: Float32Array, index: number): void;
|
|
154
|
+
/**
|
|
155
|
+
* 统计计算,处理数据点,更新统计值(最大值、最小值、平均值)。
|
|
156
|
+
* @param {Float32Array} data - 输入数据。
|
|
157
|
+
* @param {number} index - 数据的起始索引。
|
|
158
|
+
* @param {boolean} isOver - 数据是否处理完成。
|
|
159
|
+
*/
|
|
160
|
+
private processDataPoints;
|
|
161
|
+
/**
|
|
162
|
+
* 在原始数据上更新荧光谱统计数据,确保使用正确的索引系统
|
|
163
|
+
* 优化版本:减少不必要的计算和内存访问
|
|
164
|
+
*/
|
|
165
|
+
private updateFluorescenceStats;
|
|
166
|
+
/**
|
|
167
|
+
* 设置待处理标记并更新快速检查标记
|
|
168
|
+
*/
|
|
169
|
+
private setPendingFlag;
|
|
170
|
+
/**
|
|
171
|
+
* 重采样单个数据数组(统一的重采样逻辑,避免代码重复)
|
|
172
|
+
*/
|
|
173
|
+
private resampleSingleData;
|
|
174
|
+
/**
|
|
175
|
+
* 处理待处理的数据(在 srcIndexCache 生成后)
|
|
176
|
+
* 用于解决数据设置和实时数据处理的时序问题
|
|
177
|
+
*/
|
|
178
|
+
private processPendingData;
|
|
179
|
+
/**
|
|
180
|
+
* 通知频谱数据更新,调用回调函数。
|
|
181
|
+
* @param {SpectrumOutputData} processedData - 处理后的频谱数据。
|
|
182
|
+
*/
|
|
183
|
+
private notifySpectrumUpdate;
|
|
184
|
+
/**
|
|
185
|
+
* 计算当前频谱分析器的内存使用情况。
|
|
186
|
+
* @returns {number} - 内存使用量(字节)。
|
|
187
|
+
*/
|
|
188
|
+
private calculateMemoryUsage;
|
|
189
|
+
/**
|
|
190
|
+
* 获取输出数据,根据配置的输出范围截取数据。
|
|
191
|
+
* @param {TimestampedFloat32Array} [data] - 可选的输入数据,默认为实时数据。
|
|
192
|
+
* @returns {Readonly<TimestampedFloat32Array>} - 输出数据。
|
|
193
|
+
*/
|
|
194
|
+
private getOutputData;
|
|
195
|
+
/**
|
|
196
|
+
* 获取指定范围的荧光谱数据。
|
|
197
|
+
* @param {Map<number, number>[] | undefined} data - 荧光谱数据,如果未提供则使用实例的荧光谱数据。
|
|
198
|
+
* @returns {Map<number, number>[] | undefined} - 输出范围内的荧光谱数据。
|
|
199
|
+
*/
|
|
200
|
+
private getFluorescenceOutputData;
|
|
201
|
+
/**
|
|
202
|
+
* 获取所有原始数据,包括实时数据、最大值、最小值、平均值、模板数据、背景噪声数据和瀑布图数据。
|
|
203
|
+
* 注意:返回的是原始数据的引用,修改这些数据会直接影响分析器内部状态。
|
|
204
|
+
*/
|
|
205
|
+
getAllRawData(): Readonly<SpectrumOutputData>;
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/SpectrumAnalyzer/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpectrumAnalyzer 工具函数
|
|
3
|
+
*
|
|
4
|
+
* [SYNC-WASM] 本文件包含需要与 Rust WASM 版本同步维护的核心算法
|
|
5
|
+
* @see src-rust/src/spectrum_analyzer/resampler.rs
|
|
6
|
+
* @see src-rust/src/spectrum_analyzer/template.rs
|
|
7
|
+
*/
|
|
8
|
+
import type { TemplateOverData, TimestampedFloat32Array } from './types';
|
|
9
|
+
export declare const arrayKeepAttribute: (source: Float32Array & {
|
|
10
|
+
max?: number;
|
|
11
|
+
maxIndex?: number;
|
|
12
|
+
timestamp?: number;
|
|
13
|
+
progress?: number;
|
|
14
|
+
}, target: Float32Array & {
|
|
15
|
+
max?: number;
|
|
16
|
+
maxIndex?: number;
|
|
17
|
+
timestamp?: number;
|
|
18
|
+
progress?: number;
|
|
19
|
+
}) => void;
|
|
20
|
+
export declare const resample: ({ realData, antennaFactorData, antennaFactorSwitch, outputPoints }: {
|
|
21
|
+
realData: TimestampedFloat32Array;
|
|
22
|
+
antennaFactorData: Float32Array;
|
|
23
|
+
antennaFactorSwitch?: boolean;
|
|
24
|
+
outputPoints: number;
|
|
25
|
+
}) => {
|
|
26
|
+
realOutputData: TimestampedFloat32Array;
|
|
27
|
+
srcIndexCache: Uint32Array;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* [SYNC-WASM] 多数据系列重采样
|
|
31
|
+
* @sync src-rust/src/spectrum_analyzer/resampler.rs:resample_multiple
|
|
32
|
+
*
|
|
33
|
+
* 从 maxPoints 重采样到 outputPoints,对每个区间取最大值
|
|
34
|
+
* 支持同时处理 real/max/min/avg/template/occupancy/backgroundNoise/fluorescence 数据
|
|
35
|
+
*/
|
|
36
|
+
export declare const resampleMultiple: ({ antennaFactorData, antennaFactorSwitch, outputPoints, realData, maxData, minData, avgData, templateData, backgroundNoiseData, fluorescenceData, occupancyData }: {
|
|
37
|
+
antennaFactorData: Float32Array;
|
|
38
|
+
antennaFactorSwitch?: boolean;
|
|
39
|
+
outputPoints: number;
|
|
40
|
+
realData: TimestampedFloat32Array;
|
|
41
|
+
maxData?: Float32Array;
|
|
42
|
+
minData?: Float32Array;
|
|
43
|
+
avgData?: Float32Array;
|
|
44
|
+
templateData?: Float32Array;
|
|
45
|
+
occupancyData?: Float32Array;
|
|
46
|
+
backgroundNoiseData?: Float32Array;
|
|
47
|
+
fluorescenceData?: Map<number, number>[];
|
|
48
|
+
}) => {
|
|
49
|
+
realOutputData: TimestampedFloat32Array;
|
|
50
|
+
maxOutputData: Float32Array;
|
|
51
|
+
minOutputData: Float32Array;
|
|
52
|
+
avgOutputData: Float32Array;
|
|
53
|
+
templateOutputData: Float32Array;
|
|
54
|
+
occupancyOutputData: Float32Array;
|
|
55
|
+
backgroundNoiseOutputData: Float32Array;
|
|
56
|
+
srcIndexCache: Uint32Array;
|
|
57
|
+
fluorescenceOutputData: Map<number, number>[];
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* [SYNC-WASM] 额外数据重采样
|
|
61
|
+
* @sync src-rust/src/spectrum_analyzer/resampler.rs:resample_extra_data
|
|
62
|
+
*
|
|
63
|
+
* 专门用于处理 extraData 的重采样,支持天线因子应用
|
|
64
|
+
* 高性能优化版本:预分配内存,消除重复代码,集成 getOutputData 处理
|
|
65
|
+
*/
|
|
66
|
+
export declare const resampleExtraData: (extraData: Record<string, Float32Array>, antennaFactorData: Float32Array, antennaFactorSwitch: boolean, srcIndexCache: Uint32Array, getOutputData: (data: Float32Array) => Float32Array) => Record<string, Float32Array>;
|
|
67
|
+
/**
|
|
68
|
+
* [SYNC-WASM] 全量版本:使用预分配优化的完整数据扫描
|
|
69
|
+
* @sync src-rust/src/spectrum_analyzer/template.rs:find_exceeding_datas
|
|
70
|
+
*/
|
|
71
|
+
export declare const findExceedingDatas: ({ realData, maxData, minData, templateData, tolerance }: {
|
|
72
|
+
realData: TimestampedFloat32Array;
|
|
73
|
+
maxData: Float32Array;
|
|
74
|
+
minData: Float32Array;
|
|
75
|
+
templateData: Float32Array;
|
|
76
|
+
tolerance?: number;
|
|
77
|
+
}) => TemplateOverData[];
|
|
78
|
+
export declare const findExceedingDatasIncremental: ({ realData, maxData, minData, templateData, tolerance, startIndex, endIndex, previousSegments }: {
|
|
79
|
+
realData: TimestampedFloat32Array;
|
|
80
|
+
maxData: Float32Array;
|
|
81
|
+
minData: Float32Array;
|
|
82
|
+
templateData: Float32Array;
|
|
83
|
+
tolerance?: number;
|
|
84
|
+
startIndex: number;
|
|
85
|
+
endIndex: number;
|
|
86
|
+
previousSegments?: TemplateOverData[];
|
|
87
|
+
}) => TemplateOverData[];
|
|
88
|
+
export declare function isAllValid(arr: Float32Array): boolean;
|
|
89
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../src/core/SpectrumAnalyzer/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export declare enum ExtraDataMode {
|
|
2
|
+
REPLACE = "replace",
|
|
3
|
+
MERGE = "merge",
|
|
4
|
+
CLEAR = "clear"
|
|
5
|
+
}
|
|
6
|
+
export interface ScanSegment {
|
|
7
|
+
startFrequency: number;
|
|
8
|
+
stopFrequency: number;
|
|
9
|
+
stepFrequency: number;
|
|
10
|
+
pointCount?: number;
|
|
11
|
+
startIndex?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface ProcessInput {
|
|
14
|
+
data: Float32Array;
|
|
15
|
+
timestamp: number | string | bigint;
|
|
16
|
+
frequency?: number;
|
|
17
|
+
segmentOffset?: number;
|
|
18
|
+
offset?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface ProcessingConfig {
|
|
21
|
+
readonly enableWaterfall: boolean;
|
|
22
|
+
readonly enableMetrics: boolean;
|
|
23
|
+
readonly enableFluorescence: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface SpectrumConfig {
|
|
26
|
+
maxPoints?: number;
|
|
27
|
+
waterfallMaxFrames?: number;
|
|
28
|
+
processing?: Partial<ProcessingConfig>;
|
|
29
|
+
outputPoints?: number;
|
|
30
|
+
outputRange?: {
|
|
31
|
+
start: number;
|
|
32
|
+
end: number;
|
|
33
|
+
};
|
|
34
|
+
segments?: FrequencySegment[];
|
|
35
|
+
bandwidthConfig?: BandwidthConfig;
|
|
36
|
+
templateTolerance?: number;
|
|
37
|
+
onSpectrumUpdate?: (data: Partial<SpectrumOutputData>) => void;
|
|
38
|
+
}
|
|
39
|
+
export interface FrequencySegment {
|
|
40
|
+
startFrequency: number;
|
|
41
|
+
stopFrequency: number;
|
|
42
|
+
stepFrequency: number;
|
|
43
|
+
}
|
|
44
|
+
export interface BandwidthConfig {
|
|
45
|
+
frequency: number;
|
|
46
|
+
bandwidth: number;
|
|
47
|
+
}
|
|
48
|
+
export type isValidFloat32Array = Float32Array & {
|
|
49
|
+
allValid?: boolean;
|
|
50
|
+
};
|
|
51
|
+
export type TimestampedFloat32Array = isValidFloat32Array & {
|
|
52
|
+
timestamp: ProcessInput['timestamp'];
|
|
53
|
+
};
|
|
54
|
+
export interface SpectrumData {
|
|
55
|
+
realData: TimestampedFloat32Array;
|
|
56
|
+
maxData: Float32Array;
|
|
57
|
+
minData: Float32Array;
|
|
58
|
+
avgData: Float32Array;
|
|
59
|
+
templateData: Float32Array;
|
|
60
|
+
occupancyData: Float32Array;
|
|
61
|
+
backgroundNoiseData?: Float32Array;
|
|
62
|
+
waterfallData?: TimestampedFloat32Array[];
|
|
63
|
+
extraData?: Record<string, Float32Array>;
|
|
64
|
+
}
|
|
65
|
+
export interface SpectrumOutputData extends SpectrumData {
|
|
66
|
+
srcIndexCache: Uint32Array;
|
|
67
|
+
scanProgress?: number;
|
|
68
|
+
processTimes?: number;
|
|
69
|
+
templateOverData?: TemplateOverData[];
|
|
70
|
+
fluorescenceData?: Map<number, number>[];
|
|
71
|
+
fluorescenceMaxCount?: number;
|
|
72
|
+
extraData?: Record<string, Float32Array>;
|
|
73
|
+
}
|
|
74
|
+
export interface TemplateOverData {
|
|
75
|
+
maxValue: number;
|
|
76
|
+
minValue: number;
|
|
77
|
+
avgValue: number;
|
|
78
|
+
timestamp: ProcessInput['timestamp'];
|
|
79
|
+
startIndex: number;
|
|
80
|
+
endIndex: number;
|
|
81
|
+
}
|
|
82
|
+
export interface ISpectrumAnalyzer {
|
|
83
|
+
readonly config: Required<Omit<SpectrumConfig, 'segments' | 'bandwidthConfig' | 'onSpectrumUpdate'>>;
|
|
84
|
+
readonly extraData: Record<string, Float32Array>;
|
|
85
|
+
readonly antennaFactorData: Float32Array;
|
|
86
|
+
readonly antennaFactorSwitch: boolean;
|
|
87
|
+
readonly srcIndexCache: Uint32Array;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/SpectrumAnalyzer/types.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IAEvB,OAAO,YAAY;IAEnB,KAAK,UAAU;IAEf,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAC;CAChE;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AACxE,MAAM,MAAM,uBAAuB,GAAG,mBAAmB,GAAG;IAC1D,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,uBAAuB,CAAC;IAClC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,YAAY,CAAC;IAC5B,mBAAmB,CAAC,EAAE,YAAY,CAAC;IACnC,aAAa,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,aAAa,EAAE,WAAW,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACtC,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACzC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC1C;AAGD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CACvB,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,iBAAiB,GAAG,kBAAkB,CAAC,CAC1E,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjD,QAAQ,CAAC,iBAAiB,EAAE,YAAY,CAAC;IACzC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC;CACrC"}
|
package/wasm/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import LevelStreamAnalyzer from './core/LevelStreamAnalyzer';
|
|
2
|
+
import SpectrumAnalyzer from './core/SpectrumAnalyzer';
|
|
3
|
+
export type { LevelStreamConfig, LevelStreamOutputData } from './core/LevelStreamAnalyzer/types';
|
|
4
|
+
export type { SeriesChangeCallback, SeriesConfig, SeriesEventData, SeriesSubscriber, SubscriptionOptions } from './core/SeriesManager/types';
|
|
5
|
+
export { GraphicType, OrientationType, SeriesEventType } from './core/SeriesManager/types';
|
|
6
|
+
export { ERROR_MESSAGES, SPECTRUM } from './core/SpectrumAnalyzer/constants';
|
|
7
|
+
export { DataValidationError, IndexOutOfBoundsError, SpectrumError } from './core/SpectrumAnalyzer/errors';
|
|
8
|
+
export type { BandwidthConfig, FrequencySegment, ProcessInput, ProcessingConfig, ScanSegment, SpectrumConfig, SpectrumData, SpectrumOutputData, TemplateOverData, TimestampedFloat32Array } from './core/SpectrumAnalyzer/types';
|
|
9
|
+
export { SpectrumAnalyzer, LevelStreamAnalyzer };
|
|
10
|
+
export { default as SeriesManager } from './core/SeriesManager';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,4BAA4B,CAAC;AAC7D,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAEvD,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,kCAAkC,CAAC;AAE1C,YAAY,EACV,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,WAAW,EACX,eAAe,EACf,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAE7E,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACd,MAAM,gCAAgC,CAAC;AAExC,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|