UNPKG

matterbridge-roborock-vacuum-plugin

Version:
97 lines 4.44 kB
import { RvcOperationalState } from 'matterbridge/matter/clusters'; import { DockErrorCode } from '../roborockCommunication/enums/vacuumAndDockErrorCode.js'; export var DockStationStatusCode; (function (DockStationStatusCode) { DockStationStatusCode[DockStationStatusCode["Unknown"] = 0] = "Unknown"; DockStationStatusCode[DockStationStatusCode["Error"] = 1] = "Error"; DockStationStatusCode[DockStationStatusCode["OK"] = 2] = "OK"; })(DockStationStatusCode || (DockStationStatusCode = {})); /** * Bit layout of docking station status value: * - Bits 0-1: isUpdownWaterReady * - Bits 2-3: clearWaterBoxStatus * - Bits 4-5: dirtyWaterBoxStatus * - Bits 6-7: dustBagStatus * - Bits 8-9: waterBoxFilterStatus * - Bits 10-11: cleanFluidStatus */ const BIT_MASK_2BITS = 0b11; const BitPosition = { IsUpdownWaterReady: 0, ClearWaterBox: 2, DirtyWaterBox: 4, DustBag: 6, WaterBoxFilter: 8, CleanFluid: 10, }; function extractBits(value, position) { return (value >> position) & BIT_MASK_2BITS; } export class DockStationStatus { cleanFluidStatus; waterBoxFilterStatus; dustBagStatus; dirtyWaterBoxStatus; clearWaterBoxStatus; isUpdownWaterReady; constructor(cleanFluidStatus, waterBoxFilterStatus, dustBagStatus, dirtyWaterBoxStatus, clearWaterBoxStatus, isUpdownWaterReady) { this.cleanFluidStatus = cleanFluidStatus; this.waterBoxFilterStatus = waterBoxFilterStatus; this.dustBagStatus = dustBagStatus; this.dirtyWaterBoxStatus = dirtyWaterBoxStatus; this.clearWaterBoxStatus = clearWaterBoxStatus; this.isUpdownWaterReady = isUpdownWaterReady; } hasError() { return (this.cleanFluidStatus === DockStationStatusCode.Error || this.waterBoxFilterStatus === DockStationStatusCode.Error || this.dustBagStatus === DockStationStatusCode.Error || this.dirtyWaterBoxStatus === DockStationStatusCode.Error || this.clearWaterBoxStatus === DockStationStatusCode.Error // || this.isUpdownWaterReady === DockStationStatusCode.Error ); } getMatterOperationalError() { if (this.cleanFluidStatus === DockStationStatusCode.Error) { return RvcOperationalState.ErrorState.WaterTankMissing; } if (this.waterBoxFilterStatus === DockStationStatusCode.Error) { return RvcOperationalState.ErrorState.WaterTankLidOpen; } if (this.dustBagStatus === DockStationStatusCode.Error) { return RvcOperationalState.ErrorState.DustBinFull; } if (this.dirtyWaterBoxStatus === DockStationStatusCode.Error) { return RvcOperationalState.ErrorState.DirtyWaterTankFull; } if (this.clearWaterBoxStatus === DockStationStatusCode.Error) { return RvcOperationalState.ErrorState.WaterTankEmpty; } return RvcOperationalState.ErrorState.NoError; } static parseDockStationStatus(dss) { return new DockStationStatus(extractBits(dss, BitPosition.CleanFluid), extractBits(dss, BitPosition.WaterBoxFilter), extractBits(dss, BitPosition.DustBag), extractBits(dss, BitPosition.DirtyWaterBox), extractBits(dss, BitPosition.ClearWaterBox), extractBits(dss, BitPosition.IsUpdownWaterReady)); } static parseDockErrorCode(dockErrorCode) { switch (dockErrorCode) { case DockErrorCode.WaterEmpty: return RvcOperationalState.ErrorState.WaterTankEmpty; case DockErrorCode.DuctBlockage: return RvcOperationalState.ErrorState.DustBinFull; case DockErrorCode.WasteWaterTankFull: case DockErrorCode.CleaningTankFullOrBlocked: return RvcOperationalState.ErrorState.DirtyWaterTankFull; case DockErrorCode.MaintenanceBrushJammed: return RvcOperationalState.ErrorState.BrushJammed; case DockErrorCode.DirtyTankLatchOpen: return RvcOperationalState.ErrorState.DirtyWaterTankMissing; case DockErrorCode.NoDustbin: return RvcOperationalState.ErrorState.DustBinMissing; case DockErrorCode.None: return RvcOperationalState.ErrorState.NoError; default: return RvcOperationalState.ErrorState.UnableToCompleteOperation; } } } //# sourceMappingURL=DockStationStatus.js.map