Example #1
0
        private void _createBrightness(string label)
        {
            if (Brightness != 0)
            {
                return;
            }

            IHSApplication hs = _plugin.hs;

            int         hsRef  = hs.NewDeviceRef(label + " Brightness");
            DeviceClass device = (DeviceClass)hs.GetDeviceByRef(hsRef);

            device.set_Address(hs, GetSubDeviceAddress(SubDeviceType.Brightness));
            device.set_Interface(hs, _plugin.Name);
            device.set_InterfaceInstance(hs, _plugin.InstanceFriendlyName());
            device.set_Device_Type_String(hs, "LIFX Device Brightness");
            device.set_DeviceType_Set(hs, new DeviceTypeInfo_m.DeviceTypeInfo {
                Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Plug_In
            });

            // Create the buttons and slider
            VSVGPairs.VSPair offBtn = new VSVGPairs.VSPair(ePairStatusControl.Both);
            offBtn.PairType        = VSVGPairs.VSVGPairType.SingleValue;
            offBtn.Render          = Enums.CAPIControlType.Button;
            offBtn.Status          = "Off";
            offBtn.ControlUse      = ePairControlUse._Off;
            offBtn.Value           = 0;
            offBtn.Render_Location = new Enums.CAPIControlLocation {
                Column = 1,
                Row    = 1,
            };

            VSVGPairs.VSPair onBtn = new VSVGPairs.VSPair(ePairStatusControl.Both);
            onBtn.PairType        = VSVGPairs.VSVGPairType.SingleValue;
            onBtn.Render          = Enums.CAPIControlType.Button;
            onBtn.Status          = "On";
            onBtn.ControlUse      = ePairControlUse._On;
            onBtn.Value           = 99;
            onBtn.Render_Location = new Enums.CAPIControlLocation {
                Column = 2,
                Row    = 1,
            };

            VSVGPairs.VSPair lastBtn = new VSVGPairs.VSPair(ePairStatusControl.Control);
            lastBtn.PairType        = VSVGPairs.VSVGPairType.SingleValue;
            lastBtn.Render          = Enums.CAPIControlType.Button;
            lastBtn.Status          = "Last";
            lastBtn.ControlUse      = ePairControlUse._On_Alternate;
            lastBtn.Value           = 255;
            lastBtn.Render_Location = new Enums.CAPIControlLocation {
                Column = 4,
                Row    = 1,
            };

            VSVGPairs.VSPair dim = new VSVGPairs.VSPair(ePairStatusControl.Both);
            dim.PairType          = VSVGPairs.VSVGPairType.Range;
            dim.Render            = Enums.CAPIControlType.ValuesRangeSlider;
            dim.RangeStart        = 1;
            dim.RangeEnd          = 98;
            dim.RangeStatusPrefix = "Dim ";
            dim.RangeStatusSuffix = "%";
            dim.ControlUse        = ePairControlUse._Dim;
            dim.Render_Location   = new Enums.CAPIControlLocation {
                Column     = 1,
                Row        = 2,
                ColumnSpan = 3,
            };

            hs.DeviceVSP_AddPair(hsRef, offBtn);
            hs.DeviceVSP_AddPair(hsRef, onBtn);
            hs.DeviceVSP_AddPair(hsRef, lastBtn);
            hs.DeviceVSP_AddPair(hsRef, dim);

            device.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES);
            device.MISC_Set(hs, Enums.dvMISC.IS_LIGHT);

            _plugin.IgnoreNextDeviceControl(hsRef);
            hs.SetDeviceValueByRef(hsRef, 0, false);

            Brightness = hsRef;
        }