@springfield/radio-module-baofeng
Version:
Radio module for Baofeng UV-5R series ham radios
43 lines (37 loc) • 1.33 kB
text/typescript
import type { RadioCodec, RadioMemory, RadioModelId, RadioProgram } from '@springfield/ham-radio-api';
import { BaofengDecoder } from './baofeng-decoder.js';
import { BaofengEncoder } from './baofeng-encoder.js';
import type { ILogLayer } from 'loglayer';
export interface BaofengMemorySegmentConfig {
startAddress: number;
endAddress: number;
}
export interface BaofengConfig {
channelMemorySegment: BaofengMemorySegmentConfig;
settingsMemorySegment: BaofengMemorySegmentConfig;
memorySegmentSize: number;
magicNumber: number[];
receiveFrequencyOffset: number;
transmitFrequencyOffset: number;
receiveToneOffset: number;
transmitToneOffset: number;
powerOffset: number;
channelSize: number;
numberChannels: number;
radioSettingsSchemaPath: string;
channelSettingsSchemaPath: string;
}
export class BaofengCodec implements RadioCodec {
private decoder: BaofengDecoder;
private encoder: BaofengEncoder;
constructor(radioModel: RadioModelId, config: BaofengConfig, logger: ILogLayer) {
this.decoder = new BaofengDecoder(config, logger);
this.encoder = new BaofengEncoder(radioModel, config, logger);
}
decode(memory: RadioMemory): RadioProgram {
return this.decoder.decode(memory);
}
encode(program: RadioProgram): RadioMemory {
return this.encoder.encode(program);
}
}