public IBsSmReply32Data Build() { int targetTemperatureInsideTheCabin = (_replyBytes[3] & 0x0F) - 2; int fanSpeedLevel = _replyBytes[3] & 0x18; bool isWarmFloorOn = (_replyBytes[3] & 0x20) == 0x20; uint astronomicTime = (uint)(_replyBytes[4] + _replyBytes[5] * 256 + _replyBytes[6] * 65536 + _replyBytes[7] * 16777216); // TODO: improve converting uint delayedStartTime = (uint)(_replyBytes[8] + _replyBytes[9] * 256 + _replyBytes[10] * 65536 + _replyBytes[11] * 16777216); // TODO: improve converting int temperatureOutdoor = _replyBytes[12]; int temperatureIndoor = _replyBytes[13] & 0x0F; var climatMode = new Shared.BsSm.ClimaticSystemWorkModeBuilderFromInt((_replyBytes[13] & 0xF0) >> 4).Build(); var wm = new Shared.BsSm.WorkModeReplyBuilderFromByte(_replyBytes[14]).Build(); Shared.BsSm.State.IBsSmState bsSmState = new Shared.BsSm.State.BuilderFromByte(_replyBytes[15]).Build(); int bsSmVersionNumber = _replyBytes[16]; return(new BsSmReply32DataSimple( targetTemperatureInsideTheCabin, fanSpeedLevel, isWarmFloorOn, UnixTimeStampToDateTime(astronomicTime), delayedStartTime, temperatureOutdoor, temperatureIndoor, climatMode, wm, bsSmState, bsSmVersionNumber )); }
public Contracts.IBsSmAndKsm1DataCommand32Reply Build() { uint astronomicTime = (uint)(_replyBytes[3] + _replyBytes[4] * 256 + _replyBytes[5] * 65536 + _replyBytes[6] * 16777216); // TODO: improve converting uint delayedStartTime = (uint)(_replyBytes[7] + _replyBytes[8] * 256 + _replyBytes[9] * 65536 + _replyBytes[10] * 16777216); // TODO: improve converting int temperatureOutdoor = _replyBytes[11]; int carType = _replyBytes[12] & 0x0F; bool doorsAreOpen = (_replyBytes[12] & 0b0001_0000) > 0; int reserve13D5D7 = (_replyBytes[12] & 0b1110_0000) >> 5; int targetTemperatureInsideTheCabin = (_replyBytes[13] & 0x0F) - 2; var climaticSystemWorkmode14D4D7 = new Shared.BsSm.ClimaticSystemWorkModeBuilderFromInt((_replyBytes[13] & 0xF0) >> 4).Build(); var workModeAndCompressorSwitch = new Shared.BsSm.WorkModeReplyBuilderFromByte(_replyBytes[14]).Build(); int allowedPowerConsuptionBy380Vline = _replyBytes[15]; int reserve17 = _replyBytes[16]; int reserve18 = _replyBytes[17]; var ksm2Request = new BsSmAndKsm1DataCommand32RequestBuilderFromCommandPartDataBytes(_replyBytes.Skip(15).ToList()).Build(); Shared.BsSm.State.IBsSmState contract = new Shared.BsSm.State.BuilderFromByte(_replyBytes[40]).Build(); int bsSmVersionNumber = _replyBytes[41]; int reserve43 = _replyBytes[42]; int reserve44 = _replyBytes[43]; int reserve45 = _replyBytes[44]; return(new SimpleRelease.BsSmAndKsm1DataCommand32ReplySimple( UnixTimeStampToDateTime(astronomicTime), delayedStartTime, temperatureOutdoor, carType, doorsAreOpen, reserve13D5D7, targetTemperatureInsideTheCabin, climaticSystemWorkmode14D4D7, workModeAndCompressorSwitch, allowedPowerConsuptionBy380Vline, reserve17, reserve18, ksm2Request, contract, bsSmVersionNumber, reserve43, reserve44, reserve45 )); }