rxpoweredup
Version:
A Typescript RxJS-based library for controlling LEGO Powered UP hubs & peripherals.
56 lines (55 loc) • 2.71 kB
JavaScript
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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
import { inject, injectable } from 'tsyringe';
import { MessageType, PortOperationCompletionInformation, PortOperationStartupInformation } from '../../constants';
import { WriteDirectModeDataBuilder } from './write-direct-mode-data-builder';
let RgbLightCommandOutboundMessageFactory = class RgbLightCommandOutboundMessageFactory {
writeDirectModeDataBuilder;
constructor(writeDirectModeDataBuilder) {
this.writeDirectModeDataBuilder = writeDirectModeDataBuilder;
}
createSetRgbColorCommand(portId, modeId, color) {
this.ensureColorIsValid(color);
return {
header: {
messageType: MessageType.portOutputCommand,
},
portId,
payload: this.writeDirectModeDataBuilder.buildWriteDirectModeData({
portId,
startupInformation: PortOperationStartupInformation.bufferIfNecessary,
completionInformation: PortOperationCompletionInformation.commandFeedback,
modeId,
payload: [color.red, color.green, color.blue],
}),
waitForFeedback: true,
};
}
ensureColorIsValid(color) {
if (color.red < 0 || color.red > 255) {
throw new Error('Invalid red value');
}
if (color.green < 0 || color.green > 255) {
throw new Error('Invalid green value');
}
if (color.blue < 0 || color.blue > 255) {
throw new Error('Invalid blue value');
}
}
};
RgbLightCommandOutboundMessageFactory = __decorate([
injectable(),
__param(0, inject(WriteDirectModeDataBuilder)),
__metadata("design:paramtypes", [WriteDirectModeDataBuilder])
], RgbLightCommandOutboundMessageFactory);
export { RgbLightCommandOutboundMessageFactory };