public static void Create(List<Driver> drivers) { var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.MRO); driver.HasConfigurationProperties = true; var property1 = new DriverProperty() { IsAUParameter = true, No = 0x82, Name = "Количество повторов", Caption = "Количество повторов", Default = "0", DriverPropertyType = DriverPropertyTypeEnum.IntType, Min = 0, Max = 255 }; driver.Properties.Add(property1); var property2 = new DriverProperty() { IsAUParameter = true, No = 0x88, Name = "Время отложенного пуска", Caption = "Время отложенного пуска", Default = "0", DriverPropertyType = DriverPropertyTypeEnum.IntType, Min = 0, Max = 255 }; driver.Properties.Add(property2); }
public static void Create(List<Driver> drivers) { var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.MRO); driver.HasConfigurationProperties = true; var property1 = new DriverProperty() { IsAUParameter = true, No = 0x82, Name = "Количество повторов", Caption = "Количество повторов", Default = "0", DriverPropertyType = DriverPropertyTypeEnum.IntType, Min = 0, Max = 255 }; driver.Properties.Add(property1); var property2 = new DriverProperty() { IsAUParameter = true, No = 0x88, Name = "AU_Delay", Caption = "Задержка включения МРО, с", Default = "0", DriverPropertyType = DriverPropertyTypeEnum.IntType, Min = 0, Max = 1200 }; driver.Properties.Add(property2); //ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0x80, "источник воспроизведения (только чтение)", 1, "память", "линейный вход"); }
public static void Create(List<Driver> drivers) { var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.MRO_2); if (driver != null) { driver.HasConfigurationProperties = true; //ConfigurationDriverHelper.AddIntProprety(driver, 0x80, "Проигрываемое сообщение", "Проигрываемое сообщение", 0, 1, 1, 8); ConfigurationDriverHelper.AddIntProprety(driver, 0x82, "Количество повторов", "Количество повторов", 0, 3, 0, 255); ConfigurationDriverHelper.AddIntProprety(driver, 0x83, "Сообщений в памяти", "Сообщений в памяти", 0, 1, 0, 255).IsReadOnly = true; ConfigurationDriverHelper.AddIntProprety(driver, 0x84, "Сопротивление выходной линии, 0.1 Ом", "Сопротивление выходной линии, 0.1 Ом", 0, 0, 0, 255).IsReadOnly = true; ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0x87, "Режим работы", 0, "Ведомый", "Ведущий", 1, 0, 0, false, false, "1"); //ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0x80, "Источник воспроизведения", 1, "Внутренняя память", "Аналоговый вход", 0, 1, 2); ConfigurationDriverHelper.AddIntProprety(driver, 0x88, "Задержка включения, с", "Задержка включения, с", 0, 0, 0, 255); var property1 = new DriverProperty() { IsAUParameter = true, No = 0x89, Name = "Линейный вход", Caption = "Линейный вход", Default = "0" }; ConfigurationDriverHelper.AddPropertyParameter(property1, "250мВ", 0); ConfigurationDriverHelper.AddPropertyParameter(property1, "500мВ", 1); ConfigurationDriverHelper.AddPropertyParameter(property1, "775мВ", 2); driver.Properties.Add(property1); ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0x90, "Рабочее напряжение", 0, "12", "24", 0, 0, 0, false, false, "1"); } }
public BasePropertyViewModel(DriverProperty driverProperty, Device device) { DriverProperty = driverProperty; Device = device; if (Device.Properties.FirstOrDefault(x => x.Name == driverProperty.Name) == null) { Save(driverProperty.Default, false); } }
public StringPropertyViewModel(DriverProperty driverProperty, Device device) : base(driverProperty, device) { var property = device.Properties.FirstOrDefault(x => x.Name == driverProperty.Name); if (property != null) _text = property.Value; else _text = driverProperty.Default; }
public BoolPropertyViewModel(DriverProperty driverProperty, Device device) : base(driverProperty, device) { var property = device.Properties.FirstOrDefault(x => x.Name == driverProperty.Name); if (property != null) _isChecked = property.Value == "1" ? true : false; else _isChecked = (driverProperty.Default == "1") ? true : false; }
public BasePropertyViewModel(DriverProperty driverProperty, Device device) { DriverProperty = driverProperty; Device = device; if (!Device.Properties.Any(x => x.Name == driverProperty.Name)) { Save(driverProperty.Default, false); } }
public EnumPropertyViewModel(DriverProperty driverProperty, Device device) : base(driverProperty, device) { if (driverProperty == null) { Logger.Error("EnumPropertyViewModel driverProperty = null"); return; } if (device == null) { Logger.Error("EnumPropertyViewModel device = null"); return; } if (driverProperty.Name == null) { Logger.Error("EnumPropertyViewModel driverProperty.Name = null"); return; } if (device.Properties == null) { Logger.Error("EnumPropertyViewModel device.Properties = null"); return; } if (driverProperty.Parameters == null) { Logger.Error("EnumPropertyViewModel driverProperty.Parameters = null"); return; } var property = device.Properties.FirstOrDefault(x => x.Name == driverProperty.Name); if (property != null) { if (property.Value == null) { Logger.Error("EnumPropertyViewModel property.Value = null " + device.PresentationAddressAndName + " - " + driverProperty.Name); return; } var driverPropertyParameter = driverProperty.Parameters.FirstOrDefault(x => x.Value == property.Value); if (driverPropertyParameter != null) { _selectedParameter = driverPropertyParameter; } } else { if (driverProperty.Default == null) { Logger.Error("EnumPropertyViewModel driverProperty.Default = null " + device.Driver.ShortName + "." + driverProperty.Name); return; } var enumdriverProperty = driverProperty.Parameters.FirstOrDefault(x => x.Value == driverProperty.Default); if (enumdriverProperty != null) _selectedParameter = enumdriverProperty; } }
public static Property CreateProperty(int paramValue, DriverProperty driverProperty) { var offsetParamValue = paramValue; var highByteValue = paramValue / 256; var lowByteValue = paramValue - highByteValue * 256; if (driverProperty.HighByte) offsetParamValue = highByteValue; else if (driverProperty.LargeValue) offsetParamValue = paramValue; else offsetParamValue = lowByteValue; if (driverProperty.MinBit > 0) { byte byteOffsetParamValue = (byte)offsetParamValue; byteOffsetParamValue = (byte)(byteOffsetParamValue >> driverProperty.MinBit); byteOffsetParamValue = (byte)(byteOffsetParamValue << driverProperty.MinBit); offsetParamValue = byteOffsetParamValue; } if (driverProperty.MaxBit > 0) { byte byteOffsetParamValue = (byte)offsetParamValue; byteOffsetParamValue = (byte)(byteOffsetParamValue << 8 - driverProperty.MaxBit); byteOffsetParamValue = (byte)(byteOffsetParamValue >> 8 - driverProperty.MaxBit); offsetParamValue = byteOffsetParamValue; } if (driverProperty.BitOffset > 0) { offsetParamValue = offsetParamValue >> driverProperty.BitOffset; } if (driverProperty.Caption == "Задержка включения МРО, сек") { offsetParamValue = offsetParamValue * 5; } var property = new Property() { Name = driverProperty.Name, Value = offsetParamValue.ToString() }; return property; }
bool IsFakeTimeoutProperty(DriverProperty driverProperty) { switch (Device.Driver.DriverType) { case DriverType.RM_1: case DriverType.MRO: case DriverType.MRO_2: case DriverType.MDU: case DriverType.Valve: case DriverType.MPT: if (driverProperty.Name == "Timeout") return true; return false; } return false; }
public static void Create(List<Driver> drivers) { var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.AM1_T); driver.HasConfigurationProperties = true; var property1 = new DriverProperty() { IsAUParameter = true, No = 0x81, Name = "Конфигурация", Caption = "Конфигурация", Default = "5" }; ConfigurationDriverHelper.AddPropertyParameter(property1, "Один контакт, нормально замкнутый", 4); ConfigurationDriverHelper.AddPropertyParameter(property1, "Один контакт, нормально разомкнутый", 5); driver.Properties.Add(property1); }
public BaseAUPropertyViewModel(DriverProperty driverProperty, Device device) { DriverProperty = driverProperty; Device = device; if (!Device.SystemAUProperties.Any(x => x.Name == driverProperty.Name)) { Save(driverProperty.Default, false); } var deviceProperty = Device.DeviceAUProperties.FirstOrDefault(x => x.Name == driverProperty.Name); if (deviceProperty != null) { DeviceAUParameterValue = deviceProperty.Value; } else DeviceAUParameterValue = "Неизвестно"; UpdateDeviceParameterMissmatchType(); }
public EnumAUPropertyViewModel(DriverProperty driverProperty, Device device) : base(driverProperty, device) { var property = device.SystemAUProperties.FirstOrDefault(x => x.Name == driverProperty.Name); if (property != null) { var driverPropertyParameter = driverProperty.Parameters.FirstOrDefault(x => x.Value == property.Value); if (driverPropertyParameter != null) { _selectedParameter = driverPropertyParameter; } } else { var enumdriverProperty = driverProperty.Parameters.FirstOrDefault(x => x.Value == driverProperty.Default); if (enumdriverProperty != null) _selectedParameter = enumdriverProperty; } }
public static void Create(List<Driver> drivers) { var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.AM1_O); driver.HasConfigurationProperties = true; var property1 = new DriverProperty() { IsAUParameter = true, No = 0x81, Name = "Конфигурация", Caption = "Конфигурация", Default = "6", BitOffset = 4 }; ConfigurationDriverHelper.AddPropertyParameter(property1, "Охранный шлейф 300 мс", 6); ConfigurationDriverHelper.AddPropertyParameter(property1, "Охранный шлейф 70 мс", 7); driver.Properties.Add(property1); driver.PresenterKeyPropertyName = "GuardType"; }
public static void Create(List<Driver> drivers) { var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.RM_1); driver.HasConfigurationProperties = true; var property1 = new DriverProperty() { IsAUParameter = true, No = 0x82, Name = "Конфигурация релейного модуля", Caption = "Конфигурация релейного модуля", Default = "1" }; ConfigurationDriverHelper.AddPropertyParameter(property1, "Отключено/Замкнуто", 1); ConfigurationDriverHelper.AddPropertyParameter(property1, "Отключено/Мерцает", 2); ConfigurationDriverHelper.AddPropertyParameter(property1, "Замкнуто/Отключено", 3); ConfigurationDriverHelper.AddPropertyParameter(property1, "Замкнуто/Мерцает", 4); ConfigurationDriverHelper.AddPropertyParameter(property1, "Мерцает/Отключено", 5); ConfigurationDriverHelper.AddPropertyParameter(property1, "Мерцает/Замкнуто", 6); driver.Properties.Add(property1); ConfigurationDriverHelper.AddIntProprety(driver, 0x83, "Задержка на пуск, с", "AU_Delay", 0, 0, 0, 250); ConfigurationDriverHelper.AddIntProprety(driver, 0x83, "Время удержания, с", "AU_Time", 0, 0, 0, 250, false, true); var property2 = new DriverProperty() { IsAUParameter = true, No = 0x85, Name = "Контроль выхода", Caption = "Контроль выхода", MinBit = 0, MaxBit = 4, Default = "1" }; ConfigurationDriverHelper.AddPropertyParameter(property2, "Не контролируется", 1); ConfigurationDriverHelper.AddPropertyParameter(property2, "На обрыв", 2); ConfigurationDriverHelper.AddPropertyParameter(property2, "На КЗ", 3); ConfigurationDriverHelper.AddPropertyParameter(property2, "На КЗ и обрыв", 4); driver.Properties.Add(property2); }
private static void AddLogic(Driver driver, byte no, string propertyName, string defaultValue) { var property = new DriverProperty() { IsAUParameter = true, No = no, Name = propertyName, Caption = propertyName, Default = defaultValue, BitOffset = 4, UseMask = true }; ConfigurationDriverHelper.AddPropertyParameter(property, "Не включать", 1); ConfigurationDriverHelper.AddPropertyParameter(property, "Включить сразу", 2); ConfigurationDriverHelper.AddPropertyParameter(property, "Включить после паузы", 3); ConfigurationDriverHelper.AddPropertyParameter(property, "Включить на заданное время", 4); ConfigurationDriverHelper.AddPropertyParameter(property, "Включить после паузы на заданное время и выключить", 5); ConfigurationDriverHelper.AddPropertyParameter(property, "Переключать постоянно", 6); ConfigurationDriverHelper.AddPropertyParameter(property, "Начать переключение после паузы", 7); ConfigurationDriverHelper.AddPropertyParameter(property, "Переключать заданное время и оставить включенным", 8); ConfigurationDriverHelper.AddPropertyParameter(property, "Начать переключение после паузы, переключать заданное время и оставить включенным", 9); ConfigurationDriverHelper.AddPropertyParameter(property, "Переключать заданное время и оставить выключенным", 10); ConfigurationDriverHelper.AddPropertyParameter(property, "Начать переключение после паузы, переключать заданное время и оставить выключенным", 11); driver.Properties.Add(property); }
private static void AddRegime(Driver driver, byte no, string propertyName, string defaultValue) { var property = new DriverProperty() { IsAUParameter = true, No = no, Name = propertyName, Caption = propertyName, Default = defaultValue, MaxBit = 3, UseMask = true }; ConfigurationDriverHelper.AddPropertyParameter(property, "Сирена", 1); ConfigurationDriverHelper.AddPropertyParameter(property, "Табличка «Уходи»", 2); ConfigurationDriverHelper.AddPropertyParameter(property, "Табличка «Не входи»", 3); ConfigurationDriverHelper.AddPropertyParameter(property, "Табличка «Автоматика отключена»", 4); ConfigurationDriverHelper.AddPropertyParameter(property, "Выход АУП", 5); driver.Properties.Add(property); }
private static void AddControlType(Driver driver, byte no, string propertyName) { var property = new DriverProperty() { IsAUParameter = true, No = no, Name = propertyName, Caption = propertyName, Default = "4", UseMask = true, MinBit = 0, MaxBit = 3 }; ConfigurationDriverHelper.AddPropertyParameter(property, "Состояние цепи не контролируется", 1); ConfigurationDriverHelper.AddPropertyParameter(property, "Цепь контролируется только на обрыв", 2); ConfigurationDriverHelper.AddPropertyParameter(property, "Цепь контролируется только на КЗ", 3); ConfigurationDriverHelper.AddPropertyParameter(property, "Цепь контролируется на КЗ и на обрыв", 4); driver.Properties.Add(property); }
public static void Create(List<Driver> drivers) { var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.MPT); driver.HasConfigurationProperties = true; AddControlType(driver, 0x87, "Тип контроля выхода 1"); AddControlType(driver, 0x88, "Тип контроля выхода 2"); AddControlType(driver, 0x89, "Тип контроля выхода 3"); AddControlType(driver, 0x8A, "Тип контроля выхода 4"); AddControlType(driver, 0x8B, "Тип контроля выхода 5"); AddDetectorState(driver, 0x8C, "Нормальное состояние датчика Масса", 0); AddDetectorState(driver, 0x8C, "Нормальное состояние датчика Давление", 2); AddDetectorState(driver, 0x8C, "Нормальное состояние датчика Двери-Окна", 4); ConfigurationDriverHelper.AddIntProprety(driver, 0xAB, "время включенного состояния выхода 1", 0, 0, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xAC, "время включенного состояния выхода 2", 0, 0, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xAD, "время включенного состояния выхода 3", 0, 0, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xAE, "время включенного состояния выхода 4", 0, 0, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xAF, "время включенного состояния выхода 5", 0, 0, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xB1, "период переключения выхода 1", 0, 0, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xB2, "период переключения выхода 2", 0, 0, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xB3, "период переключения выхода 3", 0, 0, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xB4, "период переключения выхода 4", 0, 0, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xB5, "период переключения выхода 5", 0, 0, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xC1, "Время задержки включения выхода 1", 0, 0, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xC2, "Время задержки включения выхода 2", 0, 0, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xC3, "Время задержки включения выхода 3", 0, 0, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xC4, "Время задержки включения выхода 4", 0, 0, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xC5, "Время задержки включения выхода 5", 0, 0, 0, 255, true); AddRegime(driver, 0xBB, "режим работы выхода 1"); AddRegime(driver, 0xBC, "режим работы выхода 2"); AddRegime(driver, 0xBD, "режим работы выхода 3"); AddRegime(driver, 0xBE, "режим работы выхода 4"); AddRegime(driver, 0xBF, "режим работы выхода 5"); AddLogic(driver, 0xBB, "логика работы выхода 1"); AddLogic(driver, 0xBC, "логика работы выхода 2"); AddLogic(driver, 0xBD, "логика работы выхода 3"); AddLogic(driver, 0xBE, "логика работы выхода 4"); AddLogic(driver, 0xBF, "логика работы выхода 5"); ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Приоритет запуска", 0, "происходит отмена задержки запуска при нарушении датчика «Двери-окна» и рестарт после восстановления датчика «Двери-окна»", "не происходит отмена задержки запуска при нарушении датчика «Двери-окна»", 1, 1, 2, true); ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Блокировка выключения режима «Автоматика включена» при неисправности", 2, "режим «Автоматика включена» отключается при неисправности источника питания прибора, при неисправности ШС, при нарушении датчика «Двери-окна»", "режим «Автоматика включена» не отключается при неисправности источника питания прибора, при неисправности ШС, при нарушении датчика «Двери-окна»", 1, 3, 4, true); ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Восстановление режима «Автоматика включена»", 4, "режим восстанавливается после восстановления датчика «Двери-окна»", "режим не восстанавливается после восстановления датчика «Двери-окна», восстановление возможно по протоколу RSR", 1, 5, 6, true); ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Состояние режима «Автоматика включена» после включения питания", 6, "после включения питания режим «Автоматика включена» включен", "после включения питания режим «Автоматика включена» отключен", 1, 7, 8, true); var property1 = new DriverProperty() { IsAUParameter = true, No = 0x8C, Name = "Статус МПТ", Caption = "Статус МПТ", Default = "1", BitOffset = 6, UseMask = true }; ConfigurationDriverHelper.AddPropertyParameter(property1, "Ведущий", 1); ConfigurationDriverHelper.AddPropertyParameter(property1, "Ведомый", 2); driver.Properties.Add(property1); }
static void AddLogic(Driver driver, byte no, string propertyName) { var property = new DriverProperty() { IsAUParameter = true, No = no, Name = propertyName, Caption = propertyName, Default = "1", MptHighByte = true }; ConfigurationDriverHelper.AddPropertyParameter(property, "1 Не включать", 1); ConfigurationDriverHelper.AddPropertyParameter(property, "2 Включить сразу", 2); ConfigurationDriverHelper.AddPropertyParameter(property, "3 Включить после паузы", 3); ConfigurationDriverHelper.AddPropertyParameter(property, "4 Включить на заданное время", 4); ConfigurationDriverHelper.AddPropertyParameter(property, "5 Включить после паузы на заданное время и выключить", 5); ConfigurationDriverHelper.AddPropertyParameter(property, "6 Переключать постоянно", 6); ConfigurationDriverHelper.AddPropertyParameter(property, "7 Начать переключение после паузы", 7); ConfigurationDriverHelper.AddPropertyParameter(property, "8 Переключать заданное время и оставить выключенным", 8); ConfigurationDriverHelper.AddPropertyParameter(property, "9 Начать переключение после паузы, переключать заданное время и оставить выключенным", 9); ConfigurationDriverHelper.AddPropertyParameter(property, "10 Переключать заданное время и оставить выключенным", 10); ConfigurationDriverHelper.AddPropertyParameter(property, "11 Начать переключение после паузы, переключать заданное время и оставить выключенным", 11); driver.Properties.Add(property); }
private static void AddAM(Driver driver) { var property1 = new DriverProperty() { IsAUParameter = true, No = 0x81, Name = "Тип шлейфа", Caption = "Тип шлейфа", Default = "0", BitOffset = 4, UseMask = true }; var property1Parameter1 = new DriverPropertyParameter() { Name = "Шлейф дымовых датчиков с определением двойной сработки", Value = "0" }; var property1Parameter2 = new DriverPropertyParameter() { Name = "Комбинированный шлейф дымовых и тепловых датчиков без определения двойной сработки тепловых датчиков и с определением двойной сработки дымовых", Value = "1" }; var property1Parameter3 = new DriverPropertyParameter() { Name = "Шлейф тепловых датчиков с определением двойной сработки", Value = "2" }; var property1Parameter4 = new DriverPropertyParameter() { Name = "Комбинированный шлейф дымовых и тепловых датчиков без определения двойной сработки и без контроля короткого замыкания ШС", Value = "3" }; property1.Parameters.Add(property1Parameter1); property1.Parameters.Add(property1Parameter2); property1.Parameters.Add(property1Parameter3); property1.Parameters.Add(property1Parameter4); //var property1Parameter6 = new DriverPropertyParameter() //{ // Name = "Охранная конфигурация", // Value = "6" //}; //var property1Parameter7 = new DriverPropertyParameter() //{ // Name = "Охранная конфигурация с дополнительным резистором", // Value = "7" //}; //property1.Parameters.Add(property1Parameter6); //property1.Parameters.Add(property1Parameter7); driver.Properties.Add(property1); var property2 = new DriverProperty() { IsAUParameter = true, No = 0x81, Name = "Тип включения выхода при пожаре", Caption = "Тип включения выхода при пожаре", Default = "2", MaxBit=3, UseMask=true }; var property2Parameter1 = new DriverPropertyParameter() { Name = "Выключено", Value = "0" }; var property2Parameter2 = new DriverPropertyParameter() { Name = "Мерцает", Value = "1" }; var property2Parameter3 = new DriverPropertyParameter() { Name = "Включено", Value = "2" }; property2.Parameters.Add(property2Parameter1); property2.Parameters.Add(property2Parameter2); property2.Parameters.Add(property2Parameter3); driver.Properties.Add(property2); }
public static void Create(List<Driver> drivers) { var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.MDU); driver.HasConfigurationProperties = true; var property1 = new DriverProperty() { IsAUParameter = true, No = 0x82, Name = "Время переключения в положение НОРМА, с", Caption = "Время переключения в положение НОРМА, с", Default = "180", DriverPropertyType = DriverPropertyTypeEnum.IntType, Min = 0, Max = 250 }; driver.Properties.Add(property1); var property2 = new DriverProperty() { IsAUParameter = true, No = 0x83, Name = "Время переключения электропривода в положение ЗАЩИТА, с", Caption = "Время переключения электропривода в положение ЗАЩИТА, с", Default = "180", DriverPropertyType = DriverPropertyTypeEnum.IntType, Min = 0, Max = 250 }; driver.Properties.Add(property2); var property3 = new DriverProperty() { IsAUParameter = true, No = 0x84, Name = "AU_Delay", Caption = "Время задержки перед началом движения электропривода в положение ЗАЩИТА, с", Default = "0", DriverPropertyType = DriverPropertyTypeEnum.IntType, Min = 0, Max = 250 }; driver.Properties.Add(property3); var property4 = new DriverProperty() { IsAUParameter = true, No = 0x86, Name = "Отказ обмена, с", Caption = "Отказ обмена, с", Default = "0", DriverPropertyType = DriverPropertyTypeEnum.IntType, Min = 0, Max = 250 }; driver.Properties.Add(property4); var property6 = new DriverProperty() { IsAUParameter = true, No = 0x85, Name = "Тип привода", Caption = "Тип привода", Default = "2", MinBit = 0, MaxBit = 3 }; var property6Parameter1 = new DriverPropertyParameter() { Name = "Реверсивный ДУ", Value = "0" }; var property6Parameter2 = new DriverPropertyParameter() { Name = "Реверсивный ОЗ", Value = "1" }; var property6Parameter3 = new DriverPropertyParameter() { Name = "Пружинный ДУ", Value = "2" }; var property6Parameter4 = new DriverPropertyParameter() { Name = "Пружинный ОЗ", Value = "3" }; var property6Parameter5 = new DriverPropertyParameter() { Name = "Ручной ДУ", Value = "4" }; var property6Parameter6 = new DriverPropertyParameter() { Name = "Ручной ОЗ", Value = "5" }; property6.Parameters.Add(property6Parameter1); property6.Parameters.Add(property6Parameter2); property6.Parameters.Add(property6Parameter3); property6.Parameters.Add(property6Parameter4); property6.Parameters.Add(property6Parameter5); property6.Parameters.Add(property6Parameter6); driver.Properties.Add(property6); ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0x85, "начальное положение для привода пружинный ДУ", 7, "защита", "норма", 0, 0, 0, false, false, "0"); var property7 = new DriverProperty() { IsAUParameter = true, No = 0x87, Name = "Установленные концевики", Caption = "Установленные концевики", ToolTip = "Установленные на приводе концевики. Применима только для ручного привода", Default = "0", MinBit = 0, MaxBit = 2, IsFFInLowByte = true }; var property7Parameter1 = new DriverPropertyParameter() { Name = "Норма и защита", Value = "0" }; var property7Parameter2 = new DriverPropertyParameter() { Name = "Только защита", Value = "1" }; var property7Parameter3 = new DriverPropertyParameter() { Name = "Только норма", Value = "2" }; property7.Parameters.Add(property7Parameter1); property7.Parameters.Add(property7Parameter2); property7.Parameters.Add(property7Parameter3); driver.Properties.Add(property7); var property8 = new DriverProperty() { IsAUParameter = true, No = 0x87, Name = "Контроль эл. магнита", Caption = "Контроль эл. магнита", ToolTip = "Отключение контроля только в сработавшем состоянии (в защите). Применима только для ручного привода", Default = "0", MinBit = 2, MaxBit = 3, IsFFInLowByte = true }; var property8Parameter1 = new DriverPropertyParameter() { Name = "Вкл", Value = "0" }; var property8Parameter2 = new DriverPropertyParameter() { Name = "Выкл", Value = "4" }; property8.Parameters.Add(property8Parameter1); property8.Parameters.Add(property8Parameter2); driver.Properties.Add(property8); }
public PresenterKeyViewModel(DriverProperty property) { Title = "Ключ представления"; Property = property; }
public static string SetConfigurationParameters(DriverProperty property, Device device) { var binProperties = new List<BinProperty>(); var binProperty = new BinProperty(); var driverProperties = device.Driver.Properties.FindAll(x => x.No == property.No); foreach (var driverProperty in driverProperties) { var value = device.Properties.FirstOrDefault(x => x.Name == driverProperty.Name).Value; if (driverProperty != null && driverProperty.IsAUParameter) { binProperty = binProperties.FirstOrDefault(x => x.No == driverProperty.No); if (binProperty == null) { binProperty = new BinProperty() { No = driverProperty.No }; binProperties.Add(binProperty); } int intValue = 0; if (driverProperty.DriverPropertyType == DriverPropertyTypeEnum.EnumType) { var driverPropertyParameterValue = driverProperty.Parameters.FirstOrDefault(x => x.Value == value); if (driverPropertyParameterValue != null) { intValue = int.Parse(driverPropertyParameterValue.Value); } } else if (driverProperty.DriverPropertyType == DriverPropertyTypeEnum.BoolType) { intValue = Convert.ToInt32(value); } else { intValue = Convert.ToInt32(value); if (driverProperty.Caption == "Задержка включения МРО, сек") { intValue = (int)Math.Truncate((double)intValue / 5); } } if (driverProperty.BitOffset > 0) { intValue = intValue << driverProperty.BitOffset; } if (driverProperty.UseMask) { binProperty.HighByte += intValue; binProperty.LowByte = 0xFF; } else if (driverProperty.HighByte) binProperty.LowByte += intValue; else if (driverProperty.LargeValue) { var HighVal = intValue / 256; var LowVal = intValue - HighVal * 256; binProperty.LowByte = HighVal; binProperty.HighByte = LowVal; } else binProperty.HighByte += intValue; } } return binProperty.ToString(); }
private static void AddDetectorState(Driver driver, byte no, string propertyName, byte offset, byte minBit, byte maxBit, string defaultValue) { var property = new DriverProperty() { IsAUParameter = true, No = no, Name = propertyName, Caption = propertyName, Default = defaultValue, BitOffset = offset, MinBit = minBit, MaxBit = maxBit, UseMask = true }; ConfigurationDriverHelper.AddPropertyParameter(property, "Замкнутое", 1); ConfigurationDriverHelper.AddPropertyParameter(property, "Разомкнутое", 2); driver.Properties.Add(property); }
static void AddDetectorState(Driver driver, byte no, string propertyName, byte offset) { var property = new DriverProperty() { No = no, Name = propertyName, Caption = propertyName, Default = "1", BitOffset = offset, UseMask = true }; ConfigurationDriverHelper.AddPropertyParameter(property, "Замкнутое", 1); ConfigurationDriverHelper.AddPropertyParameter(property, "Разомкнутое", 2); driver.Properties.Add(property); }
public static void Create(List<Driver> drivers) { var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.MPT); driver.HasConfigurationProperties = true; AddControlType(driver, 0x87, "Тип контроля выхода 1"); AddControlType(driver, 0x88, "Тип контроля выхода 2"); AddControlType(driver, 0x89, "Тип контроля выхода 3"); AddControlType(driver, 0x8A, "Тип контроля выхода 4"); AddControlType(driver, 0x8B, "Тип контроля выхода 5"); AddDetectorState(driver, 0x8C, "Нормальное состояние датчика Масса", 0, 0, 2, "2"); AddDetectorState(driver, 0x8C, "Нормальное состояние датчика Давление", 2, 2, 4, "2"); AddDetectorState(driver, 0x8C, "Нормальное состояние датчика Двери-Окна", 4, 4, 6, "1"); ConfigurationDriverHelper.AddIntProprety(driver, 0xAB, "время включенного состояния выхода 1, с", "AU_TimeExit1", 0, 2, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xAC, "время включенного состояния выхода 2, с", "AU_TimeExit2", 0, 2, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xAD, "время включенного состояния выхода 3, с", "AU_TimeExit3", 0, 2, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xAE, "время включенного состояния выхода 4, с", "AU_TimeExit4", 0, 2, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xAF, "время включенного состояния выхода 5, с", "AU_TimeExit5", 0, 2, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xB1, "период переключения выхода 1, с", "AU_PeriodExit1", 0, 1, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xB2, "период переключения выхода 2, с", "AU_PeriodExit2", 0, 1, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xB3, "период переключения выхода 3, с", "AU_PeriodExit3", 0, 1, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xB4, "период переключения выхода 4, с", "AU_PeriodExit4", 0, 1, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xB5, "период переключения выхода 5, с", "AU_PeriodExit5", 0, 1, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xC1, "задержка включения выхода 1, с", "AU_DelayExit1", 0, 3, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xC2, "задержка включения выхода 2, с", "AU_DelayExit2", 0, 3, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xC3, "задержка включения выхода 3, с", "AU_DelayExit3", 0, 3, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xC4, "задержка включения выхода 4, с", "AU_DelayExit4", 0, 3, 0, 255, true); ConfigurationDriverHelper.AddIntProprety(driver, 0xC5, "задержка включения выхода 5, с", "AU_Delay", 0, 60, 0, 255, true); AddRegime(driver, 0xBB, "логика работы выхода 1", "1"); AddRegime(driver, 0xBC, "логика работы выхода 2", "3"); AddRegime(driver, 0xBD, "логика работы выхода 3", "4"); AddRegime(driver, 0xBE, "логика работы выхода 4", "2"); AddRegime(driver, 0xBF, "логика работы выхода 5", "5"); AddLogic(driver, 0xBB, "режим работы выхода 1", "2"); AddLogic(driver, 0xBC, "режим работы выхода 2", "6"); AddLogic(driver, 0xBD, "режим работы выхода 3", "6"); AddLogic(driver, 0xBE, "режим работы выхода 4", "6"); AddLogic(driver, 0xBF, "режим работы выхода 5", "10"); ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Приоритет запуска", 0, "происходит отмена задержки запуска при нарушении датчика «Двери-окна» и рестарт после восстановления датчика «Двери-окна»", "не происходит отмена задержки запуска при нарушении датчика «Двери-окна»", 1, 0, 2, true, false, "1"); ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Блокировка выключения режима «Автоматика включена» при неисправности", 2, "отключается при неисправности источника питания прибора, при неисправности ШС, при нарушении датчика «Двери-окна»", "не отключается при неисправности источника питания прибора, при неисправности ШС, при нарушении датчика «Двери-окна»", 1, 2, 4, true, false, "1"); ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Восстановление режима «Автоматика включена»", 4, "восстанавливается после восстановления датчика «Двери-окна»", "не восстанавливается после восстановления датчика «Двери-окна», восстановление возможно по протоколу RSR", 1, 4, 6, true, false, "2"); //ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Состояние режима «Автоматика включена» после включения питания", 6, // "после включения питания режим «Автоматика включена» включен", // "после включения питания режим «Автоматика включена» отключен", 1, 7, 8, true); var property1 = new DriverProperty() { IsAUParameter = true, No = 0x8C, Name = "Статус МПТ", Caption = "Статус МПТ", Default = "1", BitOffset = 6, UseMask = true }; ConfigurationDriverHelper.AddPropertyParameter(property1, "Ведущий", 1); ConfigurationDriverHelper.AddPropertyParameter(property1, "Ведомый", 2); driver.Properties.Add(property1); var eduProperty = new DriverProperty() { IsAUParameter = true, No = 0x87, Name = "Количество ЭДУ-ПТ", Caption = "Количество ЭДУ-ПТ", Default = "0", MinBit = 4, MaxBit = 7 }; var eduPropertyParameter1 = new DriverPropertyParameter() { Name = "0", Value = "0" }; var eduPropertyParameter2 = new DriverPropertyParameter() { Name = "1", Value = "16" }; var eduPropertyParameter3 = new DriverPropertyParameter() { Name = "2", Value = "32" }; var eduPropertyParameter4 = new DriverPropertyParameter() { Name = "3", Value = "64" }; var eduPropertyParameter5 = new DriverPropertyParameter() { Name = "4", Value = "128" }; eduProperty.Parameters.Add(eduPropertyParameter1); eduProperty.Parameters.Add(eduPropertyParameter2); eduProperty.Parameters.Add(eduPropertyParameter3); eduProperty.Parameters.Add(eduPropertyParameter4); eduProperty.Parameters.Add(eduPropertyParameter5); driver.Properties.Add(eduProperty); }
public DeviceCommandViewModel(Device device, DriverProperty driverProperty) { ExecuteCommand = new RelayCommand(OnExecute); Device = device; DriverProperty = driverProperty; }
public BasePropertyViewModel(DriverProperty driverProperty, Device device) { _driverProperty = driverProperty; _device = device; }
public static Driver Convert(Firesec.Models.Metadata.config coreDriversConfig, drvType innerDriver) { var driver = new Driver() { UID = new Guid(innerDriver.id), StringUID = innerDriver.id, Name = innerDriver.name, ShortName = innerDriver.shortName, HasAddress = innerDriver.ar_no_addr != "1", IsAutoCreate = innerDriver.acr_enabled == "1", MinAutoCreateAddress = int.Parse(innerDriver.acr_from), MaxAutoCreateAddress = int.Parse(innerDriver.acr_to), HasAddressMask = innerDriver.addrMask != null, IsAlternativeUSB = innerDriver.altIntf != null, ChildAddressMask = innerDriver.childAddrMask, IsZoneDevice = ((innerDriver.minZoneCardinality == "0") && (innerDriver.maxZoneCardinality == "0")) == false, IsDeviceOnShleif = innerDriver.addrMask != null && (innerDriver.addrMask == "[8(1)-15(2)];[0(1)-7(255)]" || innerDriver.addrMask == "[0(1)-8(30)]") }; var driverData = DriversHelper.DriverDataList.FirstOrDefault(x => x.DriverId == innerDriver.id && x.IgnoreLevel < 2); if (driverData != null) driver.DriverType = driverData.DriverType; if (innerDriver.options != null) { driver.DisableAutoCreateChildren = innerDriver.options.Contains("DisableAutoCreateChildren"); driver.IsZoneLogicDevice = innerDriver.options.Contains("ExtendedZoneLogic"); driver.CanDisable = innerDriver.options.Contains("Ignorable"); driver.IsPlaceable = innerDriver.options.Contains("Placeable") && driver.DriverType != DriverType.Computer; driver.IsOutDevice = innerDriver.options.Contains("OutDevice"); driver.IgnoreInZoneState = innerDriver.options.Contains("IgnoreInZoneState"); driver.IsNotValidateZoneAndChildren = innerDriver.options.Contains("NotValidateZoneAndChildren"); driver.IsSingleInParent = innerDriver.options.Contains("Single"); driver.IsSingleInZone = innerDriver.options.Contains("SingleInZone"); driver.CanMonitoringDisable = innerDriver.options.Contains("CannotDisable") == false; driver.CanWriteDatabase = innerDriver.options.Contains("DeviceDatabaseWrite"); driver.CanReadDatabase = innerDriver.options.Contains("DeviceDatabaseRead"); driver.CanReadJournal = innerDriver.options.Contains("EventSource") && driver.DriverType != DriverType.MS_1 && driver.DriverType != DriverType.MS_2 && driver.DriverType != DriverType.IndicationBlock && driver.DriverType != DriverType.MS_3 && driver.DriverType != DriverType.MS_4 && driver.DriverType != DriverType.PDU && driver.DriverType != DriverType.PDU_PT && driver.DriverType != DriverType.UOO_TL; driver.CanSynchonize = innerDriver.options.Contains("HasTimer"); driver.CanReboot = innerDriver.options.Contains("RemoteReload"); driver.CanGetDescription = innerDriver.options.Contains("DescriptionString"); driver.CanSetPassword = innerDriver.options.Contains("PasswordManagement"); driver.CanUpdateSoft = innerDriver.options.Contains("SoftUpdates"); driver.CanExecuteCustomAdminFunctions = innerDriver.options.Contains("CustomIOCTLFunctions"); } if (driver.DriverType == DriverType.Exit) driver.IsPlaceable = false; var metadataClass = [email protected](x => x.clsid == innerDriver.clsid); if (metadataClass != null) { driver.DeviceClassName = metadataClass.param.FirstOrDefault(x => x.name == "DeviceClassName").value; } driver.CanEditAddress = true; if (innerDriver.ar_no_addr != null) { if (innerDriver.ar_no_addr == "1") driver.CanEditAddress = false; if (innerDriver.acr_enabled == "1") driver.CanEditAddress = false; } driver.ShleifCount = 0; if (innerDriver.childAddrMask != null) { switch (innerDriver.childAddrMask) { case "[8(1)-15(2)];[0(1)-7(255)]": driver.ShleifCount = 2; break; case "[8(1)-15(4)];[0(1)-7(255)]": driver.ShleifCount = 4; break; case "[8(1)-15(10)];[0(1)-7(255)]": driver.ShleifCount = 10; break; } } if (driver.DriverType == DriverType.BUNS) driver.ShleifCount = 2; if (driver.DriverType == DriverType.USB_BUNS) driver.ShleifCount = 2; driver.HasShleif = driver.ShleifCount == 0 ? false : true; if (innerDriver.name == "Насосная Станция") driver.UseParentAddressSystem = false; else driver.UseParentAddressSystem = innerDriver.options != null && innerDriver.options.Contains("UseParentAddressSystem"); driver.IsChildAddressReservedRange = innerDriver.res_addr != null; driver.ChildAddressReserveRangeCount = driver.IsChildAddressReservedRange ? int.Parse(innerDriver.res_addr) : 0; if (innerDriver.addrMask == "[0(1)-8(8)]") driver.IsRangeEnabled = true; else driver.IsRangeEnabled = innerDriver.ar_enabled == "1"; if (innerDriver.addrMask == "[0(1)-8(8)]") driver.MinAddress = 1; else driver.MinAddress = int.Parse(innerDriver.ar_from); if (innerDriver.addrMask == "[0(1)-8(8)]") driver.MaxAddress = 8; else driver.MaxAddress = int.Parse(innerDriver.ar_to); driver.IsBUtton = false; switch (driver.DriverType) { case DriverType.StopButton: case DriverType.StartButton: case DriverType.AutomaticButton: case DriverType.ShuzOffButton: case DriverType.ShuzOnButton: case DriverType.ShuzUnblockButton: driver.IsBUtton = true; break; } driver.Category = (DeviceCategoryType)int.Parse(innerDriver.cat); driver.CategoryName = driver.Category.ToDescription(); driver.DeviceType = DeviceType.FireSecurity; if (innerDriver.options != null) { if (innerDriver.options.Contains("FireOnly")) driver.DeviceType = DeviceType.Fire; if (innerDriver.options.Contains("SecOnly")) driver.DeviceType = DeviceType.Sequrity; if (innerDriver.options.Contains("TechOnly")) driver.DeviceType = DeviceType.Technoligical; } driver.DeviceTypeName = driver.DeviceType.ToDescription(); var driverdata = DriversHelper.DriverDataList.FirstOrDefault(x => (x.DriverId == innerDriver.id)); if (driverdata != null) { driver.IsIgnore = driverdata.IgnoreLevel > 1; driver.IsAssadIgnore = driverdata.IgnoreLevel > 0; } else { return null; } var allChildren = new List<drvType>(); foreach (var childDriver in coreDriversConfig.drv) { var childClass = [email protected](x => x.clsid == childDriver.clsid); if (childClass != null && childClass.parent != null && childClass.parent.Any(x => x.clsid == innerDriver.clsid)) { if (childDriver.lim_parent != null && childDriver.lim_parent != innerDriver.id) continue; allChildren.Add(childDriver); } } try { driver.Children = new List<Guid>( from drvType childInnerDriver in allChildren where (DriversHelper.DriverDataList.FirstOrDefault(x => x.DriverId == childInnerDriver.id) != null && DriversHelper.DriverDataList.FirstOrDefault(x => x.DriverId == childInnerDriver.id).IgnoreLevel == 0) select new Guid(childInnerDriver.id)); } catch (Exception e) { Logger.Error(e); } driver.AvaliableChildren = new List<Guid>( from drvType childInnerDriver in allChildren where childInnerDriver.acr_enabled != "1" select new Guid(childInnerDriver.id)); if (driver.DisableAutoCreateChildren) { driver.AutoCreateChildren = new List<Guid>(); } else { driver.AutoCreateChildren = new List<Guid>( from drvType childInnerDriver in allChildren where childInnerDriver.acr_enabled == "1" select new Guid(childInnerDriver.id)); } driver.CanAddChildren = driver.AvaliableChildren.Count > 0; if (innerDriver.child_id != null) { driver.AutoChild = new Guid(innerDriver.child_id); driver.AutoChildCount = int.Parse(innerDriver.child_count); } driver.CanAutoDetect = allChildren.Any(x => (x.options != null) && (x.options.Contains("CanAutoDetectInstances"))); driver.Properties = new List<DriverProperty>(); if (innerDriver.propInfo != null && driver.DriverType != DriverType.PumpStation) { foreach (var internalProperty in innerDriver.propInfo) { if ((internalProperty.hidden == "1") && (driver.DriverType != DriverType.UOO_TL)) continue; if (internalProperty.caption == "Заводской номер" || internalProperty.caption == "Версия микропрограммы") continue; if (internalProperty.name.StartsWith("Config$")) continue; if (internalProperty.name == "DeviceCountSecDev") continue; var driverProperty = new DriverProperty() { Name = internalProperty.name, Caption = internalProperty.caption, ToolTip = internalProperty.hint, Default = internalProperty.@default, Visible = internalProperty.hidden == "0" && internalProperty.showOnlyInState == "0", IsHidden = internalProperty.hidden == "1", BlockName = internalProperty.blockName }; if (internalProperty.name.StartsWith("Control$")) { //driverProperty.Name = internalProperty.name.Replace("Control$", ""); driverProperty.IsControl = true; } driverProperty.Parameters = new List<DriverPropertyParameter>(); if (internalProperty.param != null) { foreach (var firesecParameter in internalProperty.param) { driverProperty.Parameters.Add(new DriverPropertyParameter() { Name = firesecParameter.name, Value = firesecParameter.value }); } } if (internalProperty.param != null) { driverProperty.DriverPropertyType = DriverPropertyTypeEnum.EnumType; } else { switch (internalProperty.type) { case "String": driverProperty.DriverPropertyType = DriverPropertyTypeEnum.StringType; break; case "Int": case "Double": driverProperty.DriverPropertyType = DriverPropertyTypeEnum.IntType; break; case "Byte": driverProperty.DriverPropertyType = DriverPropertyTypeEnum.ByteType; break; case "Bool": driverProperty.DriverPropertyType = DriverPropertyTypeEnum.BoolType; break; case "Empty": driverProperty.DriverPropertyType = DriverPropertyTypeEnum.Empty; break; default: continue; } } driver.Properties.Add(driverProperty); } } driver.Parameters = new List<Parameter>(); if (innerDriver.paramInfo != null) { foreach (var innerParameter in innerDriver.paramInfo) { driver.Parameters.Add(new Parameter() { Name = innerParameter.name, Caption = innerParameter.caption, //Visible = innerParameter.hidden == "0" && innerParameter.showOnlyInState == "1" Visible = innerParameter.showOnlyInState == "1" }); } } driver.States = new List<DriverState>(); if (innerDriver.state != null) { var codes = new HashSet<string>(); foreach (var innerState in innerDriver.state) { if (codes.Add(innerState.code) == false) { innerState.code += "_" + Guid.NewGuid().ToString(); } if (innerState.name == null) continue; if (innerState.code == null) continue; driver.States.Add(new DriverState() { Id = innerState.id, Name = innerState.name, AffectChildren = innerState.affectChildren == "1" ? true : false, AffectParent = innerState.AffectedParent == "1" ? true : false, StateType = (StateType)int.Parse(innerState.@class), IsManualReset = innerState.manualReset == "1" ? true : false, CanResetOnPanel = innerState.CanResetOnPanel == "1" ? true : false, //IsAutomatic = innerState.type == "Auto" ? true : false, IsAutomatic = (innerState.code.Contains("AutoOff") || innerState.code.Contains("Auto_Off") || innerState.code.Contains("Auto_off")), Code = innerState.code }); } } return driver; }