UNPKG

@rfkit/spectrum-analyzer

Version:

A high-performance spectrum analyzer library for RF signal processing, supporting real-time spectrum analysis, waterfall display, and multi-segment frequency scanning

133 lines 6.15 kB
import type { isValidFloat32Array, ProcessInput, ScanSegment, SpectrumConfig, SpectrumData, SpectrumOutputData, TimestampedFloat32Array } from './types'; export default class SpectrumAnalyzer { protected config: Required<Omit<SpectrumConfig, 'segments' | 'bandwidthConfig' | 'onSpectrumUpdate'>>; private segments; protected antennaFactorData: Float32Array; protected antennaFactorSwitch: boolean; protected realData: TimestampedFloat32Array; protected maxData: isValidFloat32Array; protected minData: isValidFloat32Array; protected avgData: isValidFloat32Array; protected waterfallData: TimestampedFloat32Array[]; protected srcIndexCache: Uint32Array; protected realOutputData: Float32Array; protected waterfallOutputData: TimestampedFloat32Array[]; protected scanProgress: number; protected lastIndex: number; protected processTimes: number; protected lastProcessTime: number; private readonly onSpectrumUpdate?; constructor(config: Partial<SpectrumConfig>); /** * 处理输入数据,包括验证、拼接、统计、采样等操作。 * @param {ProcessInput} input - 输入数据,包含数据、时间戳、分段偏移和偏移量。 */ process({ data, timestamp, segmentOffset, offset, }: ProcessInput): void; /** * 初始化扫描分段信息,并更新最大点数。 * @param {ScanSegment[]} segments - 扫描分段信息数组。 */ initializeSegments(segments: ScanSegment[]): void; /** * 设置天线因子数据,并根据开关状态重新输出数据。 * @param {Float32Array} data - 天线因子数据,默认为根据最大点数创建的数组。 */ setAntennaFactor(d: Float32Array | number[]): void; /** * 设置天线因子开关,并根据开关状态重新输出数据。 * @param {boolean} newAntennaFactorSwitch - 新的天线因子开关状态。 */ setAntennaFactorSwitch(newAntennaFactorSwitch: boolean): void; /** * 设置瀑布图数据,用于从外部导入已缓存的瀑布图数据。 * @param {TimestampedFloat32Array[]} data - 瀑布图数据数组。 */ setWaterfallData(newWaterfallData: TimestampedFloat32Array[]): void; /** * 设置实时值数据,用于从外部导入已缓存的实时值数据。 * @param {TimestampedFloat32Array} data - 实时值数据。 */ setRealData(data: TimestampedFloat32Array): void; /** * 设置最大值数据,用于从外部导入已缓存的最大值数据。 * @param {Float32Array} data - 最大值数据。 */ setMaxData(data: Float32Array): void; /** * 重置频谱分析器的状态,包括数据和进度。 */ reset(): void; /** * 获取当前频谱分析器的缓存数据。 * @returns {Readonly<SpectrumOutputData>} - 包含实时数据、最大值、最小值、平均值、瀑布图数据和处理次数的对象。 */ getData(): Readonly<SpectrumOutputData>; /** * 获取频谱分析器的性能指标,包括处理时间、数据点数、瀑布图帧数、初始化状态和内存使用情况。 * @returns {Readonly<Record<string, number | boolean>>} - 包含性能指标的对象。 */ getPerformanceMetrics(): Readonly<Record<string, number | boolean>>; /** * 更新采样范围,并重新输出数据。 * @param {number} start - 采样范围的起始位置。 * @param {number} end - 采样范围的结束位置。 * @returns {Uint32Array} - 输出值对应的原始数据索引数组。 */ updateSamplingRange(start: number, end: number): Uint32Array; /** * 对数据进行重采样,生成频谱输出数据。 * @returns {Readonly<SpectrumOutputData>} - 包含重采样后的实时数据、最大值、最小值和平均值的对象。 */ protected resampleDataSeries(): Readonly<SpectrumOutputData>; /** * 对瀑布图输出数据进行重采样。 */ protected resampleWaterfallOutputData(): void; /** * 更新瀑布图数据,包括添加新数据和移除旧数据。 * @param {TimestampedFloat32Array} data - 输入的实时数据。 * @param {TimestampedFloat32Array} outputData - 输出的实时数据。 */ protected updateWaterfallData(data: TimestampedFloat32Array, outputData: TimestampedFloat32Array): void; /** * 更新最大点数,并重置。 * @param {number} maxPoints - 新的最大点数。 */ protected updateMaxPoints(maxPoints: number): void; /** * 验证输入数据的索引是否在有效范围内。 * @param {Float32Array} data - 输入数据。 * @param {number} index - 数据的起始索引。 */ protected validateInput(data: Float32Array, index: number): void; /** * 统计计算,处理数据点,更新统计值(最大值、最小值、平均值)。 * @param {Float32Array} data - 输入数据。 * @param {number} index - 数据的起始索引。 * @param {boolean} isOver - 数据是否处理完成。 */ private processDataPoints; private isAllValid; /** * 通知频谱数据更新,调用回调函数。 * @param {SpectrumOutputData} processedData - 处理后的频谱数据。 */ private notifySpectrumUpdate; /** * 计算当前频谱分析器的内存使用情况。 * @returns {number} - 内存使用量(字节)。 */ private calculateMemoryUsage; /** * 获取输出数据,根据配置的输出范围截取数据。 * @param {TimestampedFloat32Array} [data] - 可选的输入数据,默认为实时数据。 * @returns {Readonly<TimestampedFloat32Array>} - 输出数据。 */ private getOutputData; /** * 获取所有原始数据,包括实时数据、最大值、最小值、平均值和瀑布图数据。 * 注意:返回的是原始数据的引用,修改这些数据会直接影响分析器内部状态。 */ getAllRawData(): Readonly<SpectrumData>; } //# sourceMappingURL=index.d.ts.map