Exemplo n.º 1
0
 public UPnPDeviceDescriptor(DeviceDescriptor deviceDescriptor)
 {
   _deviceDescriptor = deviceDescriptor;
 }
Exemplo n.º 2
0
 internal ServerDescriptor(DeviceDescriptor serverDeviceDescriptor)
 {
   _serverDeviceDescriptor = serverDeviceDescriptor;
 }
Exemplo n.º 3
0
    internal static CpDevice ConnectDevice(DeviceConnection connection, DeviceDescriptor deviceDescriptor, DataTypeResolverDlgt dataTypeResolver)
    {
      lock (connection.CPData.SyncObj)
      {
        string type;
        int version;
        if (!deviceDescriptor.GetTypeAndVersion(out type, out version))
          throw new ArgumentException(string.Format("Invalid device type/version URN '{0}'", deviceDescriptor.TypeVersion_URN));
        CpDevice result = new CpDevice(connection, type, version, deviceDescriptor.DeviceUUID);

        foreach (DeviceDescriptor childDevice in deviceDescriptor.ChildDevices)
          result.AddEmbeddedDevice(ConnectDevice(connection, childDevice, dataTypeResolver));
        IDictionary<string, ServiceDescriptor> serviceDescriptors;
        if (deviceDescriptor.RootDescriptor.ServiceDescriptors.TryGetValue(deviceDescriptor.DeviceUUID, out serviceDescriptors))
          foreach (ServiceDescriptor serviceDescriptor in serviceDescriptors.Values)
            if (serviceDescriptor.State == ServiceDescriptorState.Ready)
              result.AddService(CpService.ConnectService(connection, result, serviceDescriptor, dataTypeResolver));
            else
              UPnPConfiguration.LOGGER.Warn("CpDevice.ConnectDevice: Unable to connect to service '{0}' (type '{1}', version '{2}') - the service descriptor was not initialized properly",
                  serviceDescriptor.ServiceId, serviceDescriptor.ServiceType, serviceDescriptor.ServiceTypeVersion);
        return result;
      }
    }
Exemplo n.º 4
0
 protected string BuildDeviceName(DeviceDescriptor descriptor)
 {
   return descriptor.FriendlyName + " (" + descriptor.RootDescriptor.SSDPRootEntry.PreferredLink.DescriptionLocation + ")";
 }
Exemplo n.º 5
0
 public ClientDescriptor(DeviceDescriptor clientDeviceDescriptor)
 {
   _clientDeviceDescriptor = clientDeviceDescriptor;
 }
Exemplo n.º 6
0
 /// <summary>
 /// Given a <paramref name="deviceDescriptor"/>, this method extracts two kinds of data:
 /// <list type="bullet">
 /// <item><see cref="ServiceDescriptor"/>s for services of the given device and all embedded devices (organized in a dictionary mapping
 /// device UUIDs to dictionaries mapping service type and version to service descriptors for all services in the device) in
 /// <paramref name="serviceDescriptors"/></item>
 /// <item>A collection of all service descriptors which are returned in <paramref name="serviceDescriptors"/>
 /// in <paramref name="pendingServiceDescriptions"/></item>
 /// </list>
 /// </summary>
 /// <param name="deviceDescriptor">Descriptor of the device to start extracting service descriptors.</param>
 /// <param name="serviceDescriptors">Dictionary of device UUIDs to dictionaries mapping service type and version to service descriptors of services
 /// which are contained in the device with the key UUID.</param>
 /// <param name="pendingServiceDescriptions">Dictionary of device service descriptors mapped to the SCPD url of the
 /// service.</param>
 private static void ExtractServiceDescriptorsRecursive(DeviceDescriptor deviceDescriptor,
     IDictionary<string, IDictionary<string, ServiceDescriptor>> serviceDescriptors,
     ICollection<ServiceDescriptor> pendingServiceDescriptions)
 {
   string deviceUuid = deviceDescriptor.DeviceUUID;
   ICollection<ServiceDescriptor> services = deviceDescriptor.CreateServiceDescriptors();
   if (services.Count > 0)
   {
     IDictionary<string, ServiceDescriptor> sds = serviceDescriptors[deviceUuid] = new Dictionary<string, ServiceDescriptor>();
     foreach (ServiceDescriptor service in services)
     {
       sds.Add(service.ServiceTypeVersion_URN, service);
       pendingServiceDescriptions.Add(service);
     }
   }
   foreach (DeviceDescriptor childDevice in deviceDescriptor.ChildDevices)
     ExtractServiceDescriptorsRecursive(childDevice, serviceDescriptors, pendingServiceDescriptions);
 }
Exemplo n.º 7
0
    /// <summary>
    /// Initialise a new instance of the <see cref="TunerDri"/> class.
    /// </summary>
    /// <param name="descriptor">The device description. Essentially an XML document describing the device interface.</param>
    /// <param name="controlPoint">The control point to use to connect to the device.</param>
    public TunerDri(DeviceDescriptor descriptor, UPnPControlPoint controlPoint)
      : base(null)
    {
      _descriptor = descriptor;
      _controlPoint = controlPoint;
      _name = descriptor.FriendlyName;
      _devicePath = descriptor.DeviceUDN;   // unique device name is as good as a device path for a unique identifier
      _eventSignalLock = new ManualResetEvent(false);
      _isCetonDevice = _name.Contains("Ceton");

      GetPreloadBitAndCardId();
      GetSupportsPauseGraph();
    }