public IBsSmRequest32Data Build() { var temperatureInsideTheCabin = _commandPartDataBytes[1] - 60; var temperatureOutdoor = _commandPartDataBytes[2] - 60; var fanSpeed = (_commandPartDataBytes[3] & 0x03); var isTunelModeOn = (_commandPartDataBytes[3] & 0x04) == 0x04; var isWarmfloorOn = (_commandPartDataBytes[3] & 0x08) == 0x08; var currentClimaticWorkMode = new Shared.BsSm.ClimaticSystemWorkModeBuilderFromInt((_commandPartDataBytes[3] & 0xF0) >> 4).Build(); var fault1 = _commandPartDataBytes[4] + _commandPartDataBytes[5] * 256; var fault2 = _commandPartDataBytes[6] + _commandPartDataBytes[7] * 256; var fault3 = _commandPartDataBytes[8] + _commandPartDataBytes[9] * 256; var fault4 = _commandPartDataBytes[10] + _commandPartDataBytes[11] * 256; var fault5 = _commandPartDataBytes[12] + _commandPartDataBytes[13] * 256; return(new BsSmRequest32DataSimple( temperatureInsideTheCabin, temperatureOutdoor, fanSpeed, isTunelModeOn, isWarmfloorOn, currentClimaticWorkMode, fault1, fault2, fault3, fault4, fault5)); }
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 )); }