@aircast-4g/mavlink
Version:
TypeScript type generator for MAVLink dialects
140 lines (136 loc) • 3.79 kB
TypeScript
interface ParsedMAVLinkMessage$1 {
timestamp: number;
system_id: number;
component_id: number;
message_id: number;
message_name: string;
sequence: number;
payload: Record<string, unknown>;
protocol_version: 1 | 2;
checksum: number;
crc_ok: boolean;
signature?: Uint8Array;
dialect?: string;
}
interface MessageTestTypes {
u64_array: number[];
s64_array: number[];
d_array: number[];
u32_array: number[];
s32_array: number[];
f_array: number[];
s: string;
u64: number;
s64: number;
d: number;
u16_array: number[];
s16_array: number[];
u32: number;
s32: number;
f: number;
u8_array: number[];
s8_array: number[];
u16: number;
s16: number;
c: string;
u8: number;
s8: number;
}
interface MessageTypeMap {
TEST_TYPES: MessageTestTypes;
}
type AnyMessage = ParsedMAVLinkMessage$1;
declare function isTestTypes(msg: ParsedMAVLinkMessage$1): msg is ParsedMAVLinkMessage$1 & {
payload: MessageTestTypes;
};
interface ParsedMAVLinkMessage {
timestamp: number;
system_id: number;
component_id: number;
message_id: number;
message_name: string;
sequence: number;
payload: Record<string, unknown>;
protocol_version: 1 | 2;
checksum: number;
crc_ok: boolean;
signature?: Uint8Array;
dialect?: string;
}
interface MAVLinkFrame {
magic: number;
length: number;
incompatible_flags?: number;
compatible_flags?: number;
sequence: number;
system_id: number;
component_id: number;
message_id: number;
payload: Uint8Array;
checksum: number;
signature?: Uint8Array;
crc_ok?: boolean;
protocol_version?: 1 | 2;
}
interface MessageDefinition {
id: number;
name: string;
fields: FieldDefinition[];
}
interface FieldDefinition {
name: string;
type: string;
arrayLength?: number;
extension?: boolean;
}
declare abstract class DialectParser {
protected messageDefinitions: Map<number, MessageDefinition>;
protected dialectName: string;
private buffer;
constructor(dialectName: string);
abstract loadDefinitions(): Promise<void>;
parseBytes(data: Uint8Array): ParsedMAVLinkMessage[];
private tryParseFrame;
resetBuffer(): void;
decode(frame: MAVLinkFrame): ParsedMAVLinkMessage;
private decodePayload;
private getDefaultValue;
private decodeField;
private decodeSingleValue;
getMessageDefinition(id: number): MessageDefinition | undefined;
getSupportedMessageIds(): number[];
getDialectName(): string;
supportsMessage(messageId: number): boolean;
serializeMessage(message: Record<string, unknown> & {
message_name: string;
}): Uint8Array;
private extractMessageFields;
private completeMessageWithDefaults;
private getDefaultValueForField;
private serializePayload;
private serializeField;
private serializeSingleValue;
private getFieldSize;
private getSingleFieldSize;
private getDefaultValueForType;
private createMAVLinkFrame;
}
declare class TestParser extends DialectParser {
constructor();
loadDefinitions(): Promise<void>;
private loadDefinitionsSync;
}
declare class TestSerializer {
private parser;
constructor();
serialize(message: Record<string, unknown> & {
message_name: string;
}): Uint8Array;
completeMessage(message: Record<string, unknown> & {
message_name: string;
}): Record<string, unknown>;
getSupportedMessages(): string[];
supportsMessage(messageName: string): boolean;
}
export { TestParser, TestSerializer, isTestTypes };
export type { AnyMessage, MessageTestTypes, MessageTypeMap, ParsedMAVLinkMessage$1 as ParsedMAVLinkMessage };