예제 #1
0
        private void Added(CpDeviceList aList, CpDevice aDevice)
        {
            UserLog.WriteLine(DateTime.Now + ": CpDeviceRecogniserList: Device+             Udn{" + aDevice.Udn() + "}");

            lock (iLock)
            {
                if (iDisposed)
                {
                    return;
                }

                foreach (IRecogniser r in iRecognisers)
                {
                    CpDeviceRecognised recognisedDevice = r.Recognise(aDevice, RecogniserAdded);
                    if (recognisedDevice != null)
                    {
                        // check to see if device has been added immediately
                        if (!iDeviceListRecognised.Contains(recognisedDevice))
                        {
                            iDeviceListPending.Add(recognisedDevice);
                        }

                        return;
                    }
                }
            }

            UserLog.WriteLine(DateTime.Now + ": CpDeviceRecogniserList: Device not recognised       Udn{" + aDevice.Udn() + "}");
        }
예제 #2
0
        private void Removed(CpDeviceRecogniserList aList, CpDeviceRecognised aDevice)
        {
            lock (iLock)
            {
                RemoveDevice(aDevice);

                aDevice.Changed -= Changed;
                iDeviceListRecognised.Remove(aDevice);
            }
        }
예제 #3
0
        private void AddDevice(CpDeviceRecognised aDevice, int aIndex)
        {
            JsonObject info = new JsonObject();

            info.Add("Index", new JsonValueInt(aIndex));
            info.Add("Type", new JsonValueString(aDevice.Type.ToString()));
            info.Add("Udn", new JsonValueString(aDevice.Udn));
            info.Add("PresentationUri", new JsonValueString(aDevice.PresentationUri));
            info.Add("Description", aDevice.Json);
            Send("RecognisedDeviceAdded", info);
        }
예제 #4
0
        private void Changed(object sender, EventArgs e)
        {
            lock (iLock)
            {
                CpDeviceRecognised d = sender as CpDeviceRecognised;

                if (d != null)
                {
                    Removed(null, d);
                    Added(null, d);
                }
            }
        }
예제 #5
0
        private void Removed(CpDeviceList aList, CpDevice aDevice)
        {
            UserLog.WriteLine(DateTime.Now + ": CpDeviceRecogniserList: Device-             Udn{" + aDevice.Udn() + "}");

            CpDeviceRecognised removedDevice = null;

            lock (iLock)
            {
                if (iDisposed)
                {
                    return;
                }

                foreach (CpDeviceRecognised d in iDeviceListPending)
                {
                    if (d.Udn == aDevice.Udn())
                    {
                        iDeviceListPending.Remove(d);

                        d.Dispose();

                        return;
                    }
                }

                foreach (CpDeviceRecognised d in iDeviceListRecognised)
                {
                    if (d.Udn == aDevice.Udn())
                    {
                        removedDevice = d;

                        iDeviceListRecognised.Remove(d);

                        break;
                    }
                }
            }

            if (removedDevice != null)
            {
                if (iRemoved != null)
                {
                    iRemoved(this, removedDevice);
                }

                removedDevice.Dispose();
            }
        }
예제 #6
0
        private void Added(CpDeviceRecogniserList aList, CpDeviceRecognised aDevice)
        {
            lock (iLock)
            {
                iDeviceListRecognised.Add(aDevice);
                iDeviceListRecognised.Sort();
                int index = iDeviceListRecognised.IndexOf(aDevice);

                AddDevice(aDevice, index);
                aDevice.Changed += Changed;

                string udn = iPreferences.SelectedProductUdn;
                if ((aDevice.Udn == udn) || (string.IsNullOrEmpty(udn) && aDevice is CpDeviceRecognisedLinn))
                {
                    Send("SelectProductUdn", udn);
                }
            }
        }
예제 #7
0
        private void RecogniserAdded(CpDeviceRecognised aDevice)
        {
            UserLog.WriteLine(DateTime.Now + ": CpDeviceRecogniserList: DeviceRecognised+            Udn{" + aDevice.Udn + "}");

            lock (iLock)
            {
                if (iDisposed)
                {
                    aDevice.Dispose();

                    return;
                }

                iDeviceListPending.Remove(aDevice);

                iDeviceListRecognised.Add(aDevice);
            }

            if (iAdded != null)
            {
                iAdded(this, aDevice);
            }
        }
예제 #8
0
 private void RemoveDevice(CpDeviceRecognised aDevice)
 {
     Send("RecognisedDeviceRemoved", aDevice.Udn);
 }