UNPKG

rxpoweredup

Version:

A Typescript RxJS-based library for controlling LEGO Powered UP hubs & peripherals.

31 lines (30 loc) 1.43 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { injectable } from 'tsyringe'; import { concatUintArraysToUint8Array } from '../../helpers'; let PacketBuilder = class PacketBuilder { messageTypeLength = 1; buildPacket(message) { const header = this.composeHeader(message); return concatUintArraysToUint8Array(header, message.payload); } composeHeader(message) { if (this.getPayloadLengthPaddedWithMessageType(message) < 127) { return Uint8Array.from([message.payload.byteLength, 0x00, message.header.messageType]); } else { throw new Error('Long messages are not supported yet'); } } getPayloadLengthPaddedWithMessageType(message) { return message.payload.length + this.messageTypeLength; } }; PacketBuilder = __decorate([ injectable() ], PacketBuilder); export { PacketBuilder };