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; +};