Beispiel #1
0
 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)
         )
 {
 }
Beispiel #2
0
        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;
        }