private static void Provider_ServiceJoined(DeviceProviders.IProvider sender, DeviceProviders.ServiceJoinedEventArgs args)
 {
     var device = args.Service;
     if (device.ImplementsInterface("org.allseen.LSF.LampState"))
     {
         device.JoinSession();
         var light = new LightingDevice(device);
         light.Initialize();
         lock (lockLights)
            _Lights.Add(light.DeviceId, light);
         System.Diagnostics.Debug.WriteLine($"Light found: {light.DeviceId} {light.DeviceName}");
         LampFound?.Invoke(null, light);
         light.LampStateChanged += Light_LampStateChanged;
     }
 }
 private static void Provider_ServiceDropped(DeviceProviders.IProvider sender, DeviceProviders.ServiceDroppedEventArgs args)
 {
     var id = args.Service.AboutData.DeviceId;
     LightingDevice device = null;
     lock (lockLights)
     {
         if (_Lights.ContainsKey(id))
         {
             device = _Lights[id];
             device.LampStateChanged -= Light_LampStateChanged;
             _Lights.Remove(id);
         }
     }
     if(device != null)
     {
         System.Diagnostics.Debug.WriteLine($"Light lost: {device.DeviceId} {device.DeviceName}");
         LampLost?.Invoke(null, device);
     }
 }
 public AllJoynNotificationReceiver(DeviceProviders.AllJoynProvider provider = null)
 {
     DeviceProviders.AllJoynProvider Config = provider ?? new AllJoynProvider();
     Config.ServiceJoined += Config_ServiceJoined;
     Config.Start();
 }