UNPKG

@aircast-4g/mavlink

Version:

TypeScript type generator for MAVLink dialects

78 lines (75 loc) 2.48 kB
import { IMessageParser, IMessageSerializer, IMessageRegistry, MessageDefinition, ParsedMAVLinkMessage, MAVLinkFrame } from './types.js'; import { MessageRegistry } from './message-registry.js'; import { MessageSerializer } from './message-serializer.js'; /** * Abstract base class for dialect-specific parsers. * Composes MessageRegistry and MessageSerializer for full functionality. */ declare abstract class DialectParser implements IMessageParser, IMessageSerializer, IMessageRegistry { protected readonly registry: MessageRegistry; protected readonly serializer: MessageSerializer; protected readonly dialectName: string; private readonly streamBuffer; constructor(dialectName: string); /** * Register a message definition */ protected registerMessageDefinition(def: MessageDefinition, crcExtra: number): void; /** * Load message definitions - must be implemented by dialect-specific subclass */ abstract loadDefinitions(): Promise<void>; /** * Parse incoming bytes and return any complete messages */ parseBytes(data: Uint8Array): ParsedMAVLinkMessage[]; /** * Decode a MAVLink frame into a parsed message */ decode(frame: MAVLinkFrame): ParsedMAVLinkMessage; /** * Clear the internal buffer */ resetBuffer(): void; /** * Serialize a message to MAVLink bytes */ serializeMessage(message: Record<string, unknown> & { message_name: string; }): Uint8Array; /** * Complete a message with default values for all undefined fields */ completeMessage(message: Record<string, unknown> & { message_name: string; }): Record<string, unknown>; /** * Get message definition by ID */ getMessageDefinition(id: number): MessageDefinition | undefined; /** * Get message definition by name */ getMessageDefinitionByName(name: string): MessageDefinition | undefined; /** * Check if a message ID is supported */ supportsMessage(messageId: number): boolean; /** * Check if a message name is supported */ supportsMessageName(messageName: string): boolean; /** * Get all supported message IDs */ getSupportedMessageIds(): number[]; /** * Get all supported message names */ getSupportedMessageNames(): string[]; /** * Get the dialect name */ getDialectName(): string; } export { DialectParser };