webserial-core
Version:
A strongly-typed, event-driven, abstract TypeScript library for the Web Serial API with custom parsers, command queue, handshake validation, and auto-reconnect.
49 lines (48 loc) • 1.55 kB
TypeScript
import { SerialParser } from '../types/index.js';
export interface SpacePacketOptions {
/** Length in bytes of the Time Code Field in the secondary header. Defaults to 0. */
timeCodeFieldLength?: number;
/** Length in bytes of the Ancillary Data Field in the secondary header. Defaults to 0. */
ancillaryDataFieldLength?: number;
}
export interface SpacePacketHeader {
versionNumber: number;
identification: {
apid: number;
secondaryHeader: number;
type: number;
};
sequenceControl: {
packetName: number;
sequenceFlags: number;
};
dataLength: number;
}
export interface SpacePacketSecondaryHeader {
timeCode?: string;
ancillaryData?: string;
}
export interface SpacePacket {
header: SpacePacketHeader;
secondaryHeader?: SpacePacketSecondaryHeader;
data: string;
}
/**
* Creates a Space Packet Protocol parser that buffers bytes and emits a
* structured {@link SpacePacket} object for each complete packet received.
*
* @param options - Optional secondary-header field lengths.
* @returns A {@link SerialParser} that emits {@link SpacePacket} objects.
*
* @example
* ```ts
* import { AbstractSerialDevice, spacePacket } from 'webserial-core';
*
* class TelemetryDevice extends AbstractSerialDevice<SpacePacket> {
* constructor() {
* super({ baudRate: 115200, parser: spacePacket({ timeCodeFieldLength: 8 }) });
* }
* }
* ```
*/
export declare function spacePacket(options?: SpacePacketOptions): SerialParser<SpacePacket>;