public CBusLightingDevice(string Address, Tools.Interface.ILightingDefinition LightingDefinition, Interface.Communication.ICommunicationChannel CommunicationChannel) : this( Address, LightingDefinition, CommunicationChannel, Convert.ToByte(CBus.Protocol.CBusProtcol.CBusApplicationId.LIGHTING_DEFAULT), Convert.ToByte(CBus.Protocol.CBusProtcol.CBusApplicationId.TRIGGER) ) { }
public CBusLightingDevice(string Address, Tools.Interface.ILightingDefinition LightingDefinition, Interface.Communication.ICommunicationChannel CommunicationChannel, byte CBusLightControlApplication, byte CBusPresetApplication) : base(Address) { _ActiveApplications.Add((byte)CBusProtcol.CBusApplicationId.LIGHTING_DEFAULT); _ActiveApplications.Add((byte)CBusProtcol.CBusApplicationId.TRIGGER); _LightingDefinition = LightingDefinition; _CommunicationChannel = CommunicationChannel; if (!_ActiveApplications.Contains(CBusLightControlApplication)) { _ActiveApplications.Add(CBusLightControlApplication); } if (!_ActiveApplications.Contains(CBusPresetApplication)) { _ActiveApplications.Add(CBusPresetApplication); } _configBuilder = new CBusCALCommandBuilder(); _CBusAddressMap = new CBusApplicationAddressMap(); var presetMapTemp = new List <PresetMap>(); foreach (var item in LightingDefinition.PresetMapping) { byte applicationID = 0; byte groupAddress = 0; byte triggerGroupAddress = 0; bool overrideDefaultApplication = (item.Application.TryParseHexOrDecimal(out applicationID)); bool lightGroupSpecified = (item.PresetData.TryParseHexOrDecimal(out groupAddress)); bool triggerGroupSpecified = (item.PresetValue.TryParseHexOrDecimal(out triggerGroupAddress)); if ((!overrideDefaultApplication) || (applicationID == 0)) { if (lightGroupSpecified) { applicationID = (byte)CBusProtcol.CBusApplicationId.LIGHTING_DEFAULT; } else if (triggerGroupSpecified) { applicationID = (byte)CBusProtcol.CBusApplicationId.TRIGGER; } } if (applicationID != 0) { if (!_ActiveApplications.Contains(applicationID)) { _ActiveApplications.Add(applicationID); } } if (lightGroupSpecified || triggerGroupSpecified) { if (applicationID == ((byte)CBusProtcol.CBusApplicationId.TRIGGER)) { if (!triggerGroupSpecified) { triggerGroupAddress = groupAddress; } presetMapTemp.Add( new PresetMap( item.PresetName, item.Description, applicationID, triggerGroupAddress) ); _CBusAddressMap.AddMapping(CBusProtcol.ApplicationTypes.TRIGGER, applicationID); } else if ((applicationID >= ((byte)CBusProtcol.CBusApplicationId.LIGHTING_BASE) && (applicationID <= ((byte)CBusProtcol.CBusApplicationId.LIGHTING_MAX)))) { if (!lightGroupSpecified) { groupAddress = triggerGroupAddress; } presetMapTemp.Add( new PresetMap( item.PresetName, item.Description, applicationID, groupAddress) ); _CBusAddressMap.AddMapping(CBusProtcol.ApplicationTypes.LIGHTING, applicationID); } } } _presetMap = presetMapTemp; }