UNPKG

matterbridge-roborock-vacuum-plugin

Version:
73 lines 2.58 kB
/** * Programmatic builders for legacy V1 "rr" map binary frames, used by LegacyMapParser tests. * No live device or captured sample is required — every buffer is constructed byte-by-byte. */ export declare const LEGACY_BLOCK_TYPE: { readonly CHARGER_LOCATION: 1; readonly IMAGE: 2; readonly ROBOT_POSITION: 8; readonly CURRENTLY_CLEANED_BLOCKS: 11; }; export interface LegacyMapFixtureOptions { robotPosition?: { x: number; y: number; angle?: number; }; chargerPosition?: { x: number; y: number; angle?: number; }; imagePixels?: { floor?: { x: number; y: number; segId: number; }[]; obstacle?: { x: number; y: number; }[]; }; imageSize?: { width: number; height: number; left: number; top: number; }; cleanedBlocks?: number[]; /** Raw pre-built blocks (e.g. from {@link buildGenericBlock}) inserted after the known blocks. */ unknownBlocks?: Buffer[]; } /** Writes the 20-byte "rr" header. SHA1 digest is intentionally omitted — LegacyMapParser does not verify it. */ export declare function buildMapHeader(dataLength: number, headerLength?: number): Buffer; export declare function buildPositionBlock(type: number, x: number, y: number, angle?: number): Buffer; export declare function buildImageBlock(pixels: { floor?: { x: number; y: number; segId: number; }[]; obstacle?: { x: number; y: number; }[]; }, size: { width: number; height: number; left: number; top: number; }): Buffer; export declare function buildCleanedBlocksBlock(segmentIds: number[]): Buffer; /** Builds a raw block of an arbitrary (non-parsed) type, to verify unknown blocks are skipped without error. */ export declare function buildGenericBlock(type: number, payloadLength?: number): Buffer; /** Builds a minimal valid V1 "rr" map binary with the requested blocks. */ export declare function buildLegacyMapBuffer(options: LegacyMapFixtureOptions): Buffer; /** * Builds the inner-encrypted V1 map push payload as sent on Protocol 301: gzip-compress the * "rr" binary, AES-128-CBC encrypt (key=sessionNonce, IV=zeros), then prepend a 24-byte envelope. * Mirrors the device's wire format so decryptAndUnzipV1Map can round-trip it in tests. */ export declare function buildEncryptedV1MapPayload(rrBinary: Buffer, sessionNonce: Buffer): Buffer; //# sourceMappingURL=legacyMapFixture.d.ts.map