예제 #1
0
        public void UpdateFromDiscovered(IColorTargetData data)
        {
            var dData = (DreamScreenData)data;

            Brightness  = dData.Brightness;
            LastSeen    = data.LastSeen;
            GroupNumber = dData.GroupNumber;
            DeviceTag   = dData.DeviceTag;
            LastSeen    = DateTime.Now.ToString(CultureInfo.InvariantCulture);
            IpAddress   = dData.IpAddress;
            if (DeviceTag.Contains("DreamScreen"))
            {
                Enable = false;
            }
        }
예제 #2
0
        public void UpdateFromDiscovered(IColorTargetData data)
        {
            var input = (GlimmrData)data;

            if (input == null)
            {
                throw new ArgumentNullException(nameof(data));
            }

            IpAddress = data.IpAddress;
            FetchData();
            if (Id != null)
            {
                Name = StringUtil.UppercaseFirst(Id);
            }
        }
예제 #3
0
        public static async Task AddDeviceAsync(dynamic device, bool merge = true)
        {
            try {
                var db   = GetDb();
                var devs = db.GetCollection <dynamic>("Devices");
                if (devs == null)
                {
                    Log.Warning("No devices...");
                    return;
                }

                if (merge)
                {
                    var devices = devs.FindAll().ToArray();
                    foreach (var t in devices)
                    {
                        try {
                            if (t.Id != device.Id.ToString())
                            {
                                continue;
                            }

                            IColorTargetData dev = t;
                            dev.UpdateFromDiscovered(device);
                            device = dev;
                        } catch (Exception e) {
                            Log.Warning("Exception adding device: " + e.Message + " at " + e.StackTrace);
                        }
                    }
                }

                device.LastSeen = DateTime.Now.ToString(CultureInfo.InvariantCulture);
                devs.Upsert(device);
                devs.EnsureIndex("Id");
                db.Commit();
                CacheDevices();
            } catch (Exception e) {
                Log.Warning("Exception adding device: " + e.Message + " at " + e.StackTrace);
            }

            await Task.FromResult(true);
        }
예제 #4
0
        public void UpdateFromDiscovered(IColorTargetData data)
        {
            var input = (WledData)data;

            if (input == null)
            {
                throw new ArgumentNullException(nameof(data));
            }

            LedCount  = input.LedCount;
            IpAddress = data.IpAddress;
            Name      = StringUtil.UppercaseFirst(input.Name);
            var segments = input.Segments;

            for (var i = 0; i < segments.Length; i++)
            {
                if (Segments.Length < i)
                {
                    segments[i].Offset = Segments[i].Offset;
                }
            }

            Segments = segments;
        }
예제 #5
0
 public void UpdateFromDiscovered(IColorTargetData existing)
 {
     Name      = existing.Name;
     IpAddress = existing.IpAddress;
 }