Exemplo n.º 1
0
 internal static CpService ConnectService(DeviceConnection connection, CpDevice parentDevice,
                                          ServiceDescriptor serviceDescriptor, DataTypeResolverDlgt dataTypeResolver)
 {
     lock (connection.CPData.SyncObj)
     {
         CpService result = new CpService(connection, parentDevice, serviceDescriptor.ServiceType, serviceDescriptor.ServiceTypeVersion,
                                          serviceDescriptor.ServiceId);
         XPathNavigator serviceNav = serviceDescriptor.ServiceDescription.CreateNavigator();
         serviceNav.MoveToChild(XPathNodeType.Element);
         XmlNamespaceManager nsmgr = new XmlNamespaceManager(serviceNav.NameTable);
         nsmgr.AddNamespace("s", UPnPConsts.NS_SERVICE_DESCRIPTION);
         XPathNodeIterator svIt = serviceNav.Select("s:serviceStateTable/s:stateVariable", nsmgr);
         // State variables must be connected first because they are needed from the action's arguments
         while (svIt.MoveNext())
         {
             result.AddStateVariable(CpStateVariable.ConnectStateVariable(connection, result, svIt.Current, nsmgr, dataTypeResolver));
         }
         XPathNodeIterator acIt = serviceNav.Select("s:actionList/s:action", nsmgr);
         while (acIt.MoveNext())
         {
             result.AddAction(CpAction.ConnectAction(connection, result, acIt.Current, nsmgr));
         }
         return(result);
     }
 }
Exemplo n.º 2
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.º 3
0
 public MuxService(CpDevice device)
   : base(device, "urn:opencable-com:serviceId:urn:schemas-opencable-com:service:Mux")
 {
   _service.Actions.TryGetValue("SetProgram", out _setProgramAction);
   _service.Actions.TryGetValue("AddPid", out _addPidAction);
   _service.Actions.TryGetValue("RemovePid", out _removePidAction);
 }
Exemplo n.º 4
0
 /// <summary>
 /// Creates a new UPnP service instance at the client (control point) side.
 /// </summary>
 /// <param name="connection">Device connection instance which attends the connection with the server side.</param>
 /// <param name="parentDevice">Instance of the device which contains the new service.</param>
 /// <param name="serviceType">Type of the service instance, in the format "schemas-upnp-org:service:[service-type]" or
 /// "vendor-domain:service:[service-type]". Note that in vendor-defined types, all dots in the vendors domain are
 /// replaced by hyphens.</param>
 /// <param name="serviceTypeVersion">Version of the implemented service type.</param>
 /// <param name="serviceId">Service id in the format "urn:upnp-org:serviceId:[service-id]" (for standard services) or
 /// "urn:domain-name:serviceId:[service-id]" (for vendor-defined service types).</param>
 public CpService(DeviceConnection connection, CpDevice parentDevice, string serviceType, int serviceTypeVersion, string serviceId)
 {
     _connection         = connection;
     _parentDevice       = parentDevice;
     _serviceType        = serviceType;
     _serviceTypeVersion = serviceTypeVersion;
     _serviceId          = serviceId;
 }
Exemplo n.º 5
0
 /// <summary>
 /// Creates a new UPnP service instance at the client (control point) side.
 /// </summary>
 /// <param name="connection">Device connection instance which attends the connection with the server side.</param>
 /// <param name="parentDevice">Instance of the device which contains the new service.</param>
 /// <param name="serviceType">Type of the service instance, in the format "schemas-upnp-org:service:[service-type]" or
 /// "vendor-domain:service:[service-type]". Note that in vendor-defined types, all dots in the vendors domain are
 /// replaced by hyphens.</param>
 /// <param name="serviceTypeVersion">Version of the implemented service type.</param>
 /// <param name="serviceId">Service id in the format "urn:upnp-org:serviceId:[service-id]" (for standard services) or
 /// "urn:domain-name:serviceId:[service-id]" (for vendor-defined service types).</param>
 public CpService(DeviceConnection connection, CpDevice parentDevice, string serviceType, int serviceTypeVersion, string serviceId)
 {
   _connection = connection;
   _parentDevice = parentDevice;
   _serviceType = serviceType;
   _serviceTypeVersion = serviceTypeVersion;
   _serviceId = serviceId;
 }
Exemplo n.º 6
0
 public FdcService(CpDevice device)
   : base(device, "urn:opencable-com:serviceId:urn:schemas-opencable-com:service:FDC")
 {
   _service.Actions.TryGetValue("GetFDCStatus", out _getFdcStatusAction);
   _service.Actions.TryGetValue("RequestTables", out _requestTablesAction);
   _service.Actions.TryGetValue("AddPid", out _addPidAction);
   _service.Actions.TryGetValue("RemovePid", out _removePidAction);
 }
 public ConnectionManagerService(CpDevice device)
   : base(device, "urn:upnp-org:serviceId:urn:schemas-upnp-org:service:ConnectionManager")
 {
   _service.Actions.TryGetValue("GetProtocolInfo", out _getProtocolInfoAction);
   _service.Actions.TryGetValue("PrepareForConnection", out _prepareForConnectionAction);
   _service.Actions.TryGetValue("ConnectionComplete", out _connectionCompleteAction);
   _service.Actions.TryGetValue("GetCurrentConnectionIDs", out _getCurrentConnectionIdsAction);
   _service.Actions.TryGetValue("GetCurrentConnectionInfo", out _getCurrentConnectionInfoAction);
 }
Exemplo n.º 8
0
 private void Initialise(CpDevice device, string serviceName, bool isOptional)
 {
   _device = device;
   _unqualifiedServiceName = serviceName.Substring(serviceName.LastIndexOf(":"));
   if (!device.Services.TryGetValue(serviceName, out _service) && !isOptional)
   {
     throw new NotImplementedException(string.Format("DRI: device does not implement a {0} service", _unqualifiedServiceName));
   }
 }
Exemplo n.º 9
0
 public TunerService(CpDevice device)
   : base(device, "urn:opencable-com:serviceId:urn:schemas-opencable-com:service:Tuner")
 {
   _service.Actions.TryGetValue("SetTunerParameters", out _setTunerParametersAction);
   _service.Actions.TryGetValue("GetTunerParameters", out _getTunerParametersAction);
   _service.Actions.TryGetValue("SeekSignal", out _seekSignalAction);
   _service.Actions.TryGetValue("SeekCancel", out _seekCancelAction);
 }
Exemplo n.º 10
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.º 11
0
 /// <summary>
 /// Adds the specified embedded template <paramref name="device"/>.
 /// </summary>
 /// <param name="device">Device to add to the embedded devices.</param>
 internal void AddEmbeddedDevice(CpDevice device)
 {
   _embeddedDevices.Add(device.UUID, device);
 }
Exemplo n.º 12
0
 /// <summary>
 /// Establishes the actual device connection by building the control point's proxy device tree corresponding to the
 /// device contained in the given <paramref name="rootDescriptor"/> specified by its <paramref name="deviceUUID"/>.
 /// </summary>
 /// <param name="rootDescriptor">Root descriptor which contains the device to build.</param>
 /// <param name="deviceUUID">UUID of the device to connect.</param>
 /// <param name="dataTypeResolver">Delegate method to resolve extended datatypes.</param>
 private void BuildDeviceProxy(RootDescriptor rootDescriptor, string deviceUUID, DataTypeResolverDlgt dataTypeResolver)
 {
   if (rootDescriptor.State != RootDescriptorState.Ready)
     throw new ArgumentException("Root descriptor is not ready - cannot connect");
   DeviceDescriptor rootDeviceDescriptor = DeviceDescriptor.CreateRootDeviceDescriptor(rootDescriptor);
   DeviceDescriptor deviceDescriptor = rootDeviceDescriptor.FindDevice(deviceUUID);
   _device = CpDevice.ConnectDevice(this, deviceDescriptor, dataTypeResolver);
 }
Exemplo n.º 13
0
 public BaseService(CpDevice device, string serviceName, bool isOptional)
 {
   Initialise(device, serviceName, isOptional);
 }
Exemplo n.º 14
0
 /// <summary>
 /// Adds the specified embedded template <paramref name="device"/>.
 /// </summary>
 /// <param name="device">Device to add to the embedded devices.</param>
 internal void AddEmbeddedDevice(CpDevice device)
 {
     _embeddedDevices.Add(device.UUID, device);
 }
Exemplo n.º 15
0
 public SecurityService(CpDevice device)
   : base(device, "urn:opencable-com:serviceId:urn:schemas-opencable-com:service:Security")
 {
   _service.Actions.TryGetValue("SetDRM", out _setDrmAction);
 }
Exemplo n.º 16
0
 public AvTransportService(CpDevice device)
   : base(device, "urn:upnp-org:serviceId:urn:schemas-upnp-org:service:AVTransport")
 {
   _service.Actions.TryGetValue("SetAVTransportURI", out _setAvTransportUriAction);
   _service.Actions.TryGetValue("SetNextAVTransportURI", out _setNextAvTransportUriAction);
   _service.Actions.TryGetValue("GetMediaInfo", out _getMediaInfoAction);
   _service.Actions.TryGetValue("GetTransportInfo", out _getTransportInfoAction);
   _service.Actions.TryGetValue("GetPositionInfo", out _getPositionInfoAction);
   _service.Actions.TryGetValue("GetDeviceCapabilities", out _getDeviceCapabilitiesAction);
   _service.Actions.TryGetValue("GetTransportSettings", out _getTransportSettingsAction);
   _service.Actions.TryGetValue("Stop", out _stopAction);
   _service.Actions.TryGetValue("Play", out _playAction);
   _service.Actions.TryGetValue("Pause", out _pauseAction);
   _service.Actions.TryGetValue("Record", out _recordAction);
   _service.Actions.TryGetValue("Seek", out _seekAction);
   _service.Actions.TryGetValue("Next", out _nextAction);
   _service.Actions.TryGetValue("Previous", out _previousAction);
   _service.Actions.TryGetValue("SetPlayMode", out _setPlayModeAction);
   _service.Actions.TryGetValue("SetRecordQualityMode", out _setRecordQualityModeAction);
   _service.Actions.TryGetValue("GetCurrentTransportActions", out _getCurrentTransportActionsAction);
 }
Exemplo n.º 17
0
 public CasService(CpDevice device)
   : base(device, "urn:opencable-com:serviceId:urn:schemas-opencable-com:service:CAS")
 {
   _service.Actions.TryGetValue("GetCardStatus", out _getCardStatusAction);
   _service.Actions.TryGetValue("GetEntitlement", out _getEntitlementAction);
   _service.Actions.TryGetValue("NotifyMmiClose", out _notifyMmiCloseAction);
   _service.Actions.TryGetValue("SetChannel", out _setChannelAction);
   _service.Actions.TryGetValue("SetPreferredLanguage", out _setPreferredLanguageAction);
 }
Exemplo n.º 18
0
 public AuxService(CpDevice device)
   : base(device, "urn:opencable-com:serviceId:urn:schemas-opencable-com:service:Aux", true)
 {
   if (_service != null)
   {
     _service.Actions.TryGetValue("GetAuxCapabilities", out _getAuxCapabilitiesAction);
     _service.Actions.TryGetValue("SetAuxParameters", out _setAuxParametersAction);
   }
 }
Exemplo n.º 19
0
 public DiagService(CpDevice device)
   : base(device, "urn:opencable-com:serviceId:urn:schemas-opencable-com:service:Diag")
 {
   _service.Actions.TryGetValue("GetParameter", out _getParameterAction);
 }
Exemplo n.º 20
0
 public EncoderService(CpDevice device)
   : base(device, "urn:opencable-com:serviceId:urn:schemas-opencable-com:service:Encoder")
 {
   _service.Actions.TryGetValue("GetEncoderCapabilities", out _getEncoderCapabilitiesAction);
   _service.Actions.TryGetValue("SetEncoderParameters", out _setEncoderParametersAction);
   _service.Actions.TryGetValue("GetEncoderParameters", out _getEncoderParametersAction);
 }
Exemplo n.º 21
0
 internal static CpService ConnectService(DeviceConnection connection, CpDevice parentDevice,
     ServiceDescriptor serviceDescriptor, DataTypeResolverDlgt dataTypeResolver)
 {
   lock (connection.CPData.SyncObj)
   {
     CpService result = new CpService(connection, parentDevice, serviceDescriptor.ServiceType, serviceDescriptor.ServiceTypeVersion,
         serviceDescriptor.ServiceId);
     XPathNavigator serviceNav = serviceDescriptor.ServiceDescription.CreateNavigator();
     serviceNav.MoveToChild(XPathNodeType.Element);
     XmlNamespaceManager nsmgr = new XmlNamespaceManager(serviceNav.NameTable);
     nsmgr.AddNamespace("s", UPnPConsts.NS_SERVICE_DESCRIPTION);
     XPathNodeIterator svIt = serviceNav.Select("s:serviceStateTable/s:stateVariable", nsmgr);
     // State variables must be connected first because they are needed from the action's arguments
     while (svIt.MoveNext())
       result.AddStateVariable(CpStateVariable.ConnectStateVariable(connection, result, svIt.Current, nsmgr, dataTypeResolver));
     XPathNodeIterator acIt = serviceNav.Select("s:actionList/s:action", nsmgr);
     while (acIt.MoveNext())
       result.AddAction(CpAction.ConnectAction(connection, result, acIt.Current, nsmgr));
     return result;
   }
 }
Exemplo n.º 22
0
 public BaseService(CpDevice device, string serviceName)
 {
   Initialise(device, serviceName, false);
 }