From b3c330640b3f3adf29d2c7635e055a8e3173ffc1 Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Sat, 15 Mar 2025 08:31:17 -0500 Subject: [PATCH] add rttrpm encoder --- src/encoders/index.ts | 4 +++- src/encoders/motion/rttrpm.ts | 30 ++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 src/encoders/motion/rttrpm.ts diff --git a/src/encoders/index.ts b/src/encoders/index.ts index 15fcaa5..1fd0c55 100644 --- a/src/encoders/index.ts +++ b/src/encoders/index.ts @@ -1,5 +1,7 @@ -import RTTrPHeader from './rttrp'; +import RTTrPM from './motion/rttrpm'; +import RTTrPHeader from './rttrp-header'; export const Encoders = { RTTrPHeader, + RTTrPM, }; diff --git a/src/encoders/motion/rttrpm.ts b/src/encoders/motion/rttrpm.ts new file mode 100644 index 0000000..ce9e5f3 --- /dev/null +++ b/src/encoders/motion/rttrpm.ts @@ -0,0 +1,30 @@ +import RTTrPHeader from '../rttrp-header'; + +export default ( + packetId: number, + context: number, + trackables: Uint8Array[], + isLittleEndian: boolean = false +): Uint8Array => { + let totalPacketSize = 18; //header size + + trackables.forEach((trackable) => { + totalPacketSize += trackable.length; + }); + console.log(totalPacketSize); + const bytes = new Uint8Array(totalPacketSize); + + let dataOffset = 0; + + const headerBytes = RTTrPHeader(0x4334, 0x02, packetId, 0x00, context, trackables, isLittleEndian); + console.log(headerBytes.length); + + bytes.set(headerBytes, dataOffset); + dataOffset += headerBytes.length; + trackables.forEach((trackable) => { + console.log('dataOffset', dataOffset); + bytes.set(trackable, dataOffset); + dataOffset += trackable.length; + }); + return bytes; +};