rxpoweredup
Version:
A Typescript RxJS-based library for controlling LEGO Powered UP hubs & peripherals.
18 lines (17 loc) • 898 B
JavaScript
import { last, switchMap } from 'rxjs';
import { WELL_KNOWN_PORT_MODE_IDS } from '../../constants';
export class RgbLightFeature {
messenger;
ledCommandsFactory;
portInputSetupMessageFactory;
constructor(messenger, ledCommandsFactory, portInputSetupMessageFactory) {
this.messenger = messenger;
this.ledCommandsFactory = ledCommandsFactory;
this.portInputSetupMessageFactory = portInputSetupMessageFactory;
}
setRgbColor(portId, color, modeId = WELL_KNOWN_PORT_MODE_IDS.rgbLightRgbColor) {
const setPortModeMessage = this.portInputSetupMessageFactory.createMessage(portId, modeId, false);
const message = this.ledCommandsFactory.createSetRgbColorCommand(portId, modeId, color);
return this.messenger.sendWithoutResponse(setPortModeMessage).pipe(last(), switchMap(() => this.messenger.sendPortOutputCommand(message)));
}
}