@aircast-4g/mavlink
Version:
TypeScript type generator for MAVLink dialects
78 lines (75 loc) • 2.48 kB
TypeScript
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 };