コード例 #1
0
        /// <summary>
        ///     Send colors to target IP address
        /// </summary>
        /// <param name="target">Target device to send to</param>
        /// <param name="colors">An array of 12 System.Drawing>Colors</param>
        /// <returns></returns>
        public async Task SendColors(DreamDevice target, IEnumerable <Color> colors)
        {
            var msg = new Message(target.IpAddress, MessageType.ColorData, MessageFlag.ColorData, target.DeviceGroup)
            {
                Payload = new Payload(colors.Cast <object>().ToArray())
            };

            await BroadcastMessageAsync(msg);
        }
コード例 #2
0
        /// <summary>
        ///     Set ambient Show (scene)
        /// </summary>
        /// <param name="target">Target device</param>
        /// <param name="show"><see cref="AmbientShow" />Type of Ambient Show to set</param>
        /// <returns></returns>
        public async Task <DreamScreenResponse> SetAmbientShow(DreamDevice target, AmbientShow show)
        {
            var flag = Equals(target.DeviceGroup == 0) ? MessageFlag.WriteIndividual : MessageFlag.WriteGroup;
            var msg  = new Message(target.IpAddress, MessageType.AmbientScene, flag, target.DeviceGroup)
            {
                Payload = new Payload(new object[] { (byte)show })
            };
            var response = await BroadcastMessageForResponse(msg);

            return(response);
        }
コード例 #3
0
        /// <summary>
        ///     Set device group name
        /// </summary>
        /// <param name="groupName">The new name to set. Should be less than 16 chars.</param>
        /// <param name="target">The device to set</param>
        /// <returns></returns>
        public async Task <DreamScreenResponse> SetGroupName(DreamDevice target, string groupName)
        {
            var flag = Equals(target.IpAddress, _broadcastIp) ? MessageFlag.WriteGroup : MessageFlag.WriteIndividual;
            var msg  = new Message(target.IpAddress, MessageType.GroupName, flag, target.DeviceGroup)
            {
                Payload = new Payload(new object[] { groupName })
            };
            var response = await BroadcastMessageForResponse(msg);

            return(response);
        }
コード例 #4
0
        /// <summary>
        ///     Set the device group number
        /// </summary>
        /// /// <param name="target">Target group Ip</param>
        /// <param name="groupNumber">The group number to set the device to</param>
        /// <returns></returns>
        public async Task <DreamScreenResponse> SetGroupNumber(DreamDevice target, int groupNumber)
        {
            var flag = MessageFlag.WriteIndividual;
            var msg  = new Message(target.IpAddress, MessageType.GroupNumber, flag, target.DeviceGroup)
            {
                Payload = new Payload(new object[] { groupNumber })
            };
            var response = await BroadcastMessageForResponse(msg);

            return(response);
        }
コード例 #5
0
 public DreamScreenData(DreamDevice dev)
 {
     Name        = dev.Name;
     Id          = dev.IpAddress.ToString();
     IpAddress   = Id;
     Brightness  = dev.Brightness;
     LastSeen    = DateTime.Now.ToString(CultureInfo.InvariantCulture);
     GroupNumber = dev.DeviceGroup;
     DeviceTag   = dev.Type.ToString();
     if (DeviceTag.Contains("DreamScreen"))
     {
         Enable = false;
     }
 }
コード例 #6
0
        public void Test5()
        {
            const string stream = "TTTTTT";

            var dreamDevice = new DreamDevice(2);

            dreamDevice.ExperienceDream(stream);

            var stats = dreamDevice.DreamStats;

            Assert.AreEqual(0, stats.TotalSubjectiveDreamingDuration);
            Assert.AreEqual(0, stats.RealTimeDreamingDuration);
            Assert.AreEqual(0, stats.DreamLevels);
        }
コード例 #7
0
        public void Test3()
        {
            const string stream = "DTWTDTTTW";

            var dreamDevice = new DreamDevice(3);

            dreamDevice.ExperienceDream(stream);

            var stats = dreamDevice.DreamStats;

            Assert.AreEqual(4, stats.TotalSubjectiveDreamingDuration);
            Assert.AreEqual(2, stats.RealTimeDreamingDuration);
            Assert.AreEqual(1, stats.DreamLevels);
            Assert.AreEqual(4, stats.DurationsPerDreamLevel[1]);
        }
コード例 #8
0
        public DreamScreenDevice(DreamScreenData data, ColorService cs) : base(cs)
        {
            _data = data;
            Id    = data.Id;
            var client = cs.ControlService.GetAgent("DreamAgent");

            if (client != null)
            {
                _client = client;
            }

            _ipAddress = _data.IpAddress;
            _deviceTag = _data.DeviceTag;
            LoadData();
            cs.ColorSendEventAsync += SetColors;
            var myIp = IPAddress.Parse(_ipAddress);

            _dev = new DreamDevice(_deviceTag)
            {
                IpAddress = myIp, DeviceGroup = data.GroupNumber
            };
        }
コード例 #9
0
 internal DeviceDiscoveryEventArgs(DreamDevice device)
 {
     Device = device;
 }