UNPKG

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
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>;