HClientAdapterOpNull HRenderingControlAdapter::setMute(
    const HChannel& channel, bool desiredMute)
{
    qint32 rc = UpnpUndefinedFailure;
    HClientAction* action = h_ptr->getAction("SetMute", &rc);
    if (!action)
    {
        return HClientAdapterOpNull::createInvalid(rc, "");
    }

    H_D(HRenderingControlAdapter);
    HActionArguments inArgs = action->info().inputArguments();
    inArgs.setValue("InstanceID", h->m_instanceId);
    inArgs.setValue("Channel", channel.toString());
    inArgs.setValue("DesiredMute", desiredMute);

    return h_ptr->beginInvoke(
               action, inArgs,
               HActionInvokeCallback(h, &HRenderingControlAdapterPrivate::setMute));
}
HClientAdapterOp<QStringList> HRenderingControlAdapter::setStateVariables(
    const HUdn& renderingControlUdn,
    const HResourceType& serviceType, const HServiceId& serviceId,
    const QString& stateVariableValuePairs)
{
    qint32 rc = UpnpUndefinedFailure;
    HClientAction* action = h_ptr->getAction("SetStateVariables", &rc);
    if (!action)
    {
        return HClientAdapterOp<QStringList>::createInvalid(rc, "");
    }

    H_D(HRenderingControlAdapter);
    HActionArguments inArgs = action->info().inputArguments();
    inArgs.setValue("InstanceID", h->m_instanceId);
    inArgs.setValue("RenderingControlUDN", renderingControlUdn.toString());
    inArgs.setValue("ServiceType", serviceType.toString());
    inArgs.setValue("ServiceId", serviceId.toString());
    inArgs.setValue("StateVariableValuePairs", stateVariableValuePairs);

    return h_ptr->beginInvoke<QStringList>(
               action, inArgs,
               HActionInvokeCallback(h, &HRenderingControlAdapterPrivate::setStateVariables));
}
Пример #3
0
bool HMediaServerAdapter::prepareDevice(HClientDevice* device)
{
    H_D(HMediaServerAdapter);

    HClientService* avTransport =
        device->serviceById(HServiceId("urn:upnp-org:serviceId:AVTransport"));

    if (!avTransport)
    {
        HClientServices tsServices =
            device->servicesByType(
                HAvTransportInfo::supportedServiceType(),
                HResourceType::Inclusive);

        if (!tsServices.isEmpty())
        {
            avTransport = tsServices.first();
        }
    }

    HClientService* cds = device->serviceById(
        HServiceId("urn:upnp-org:serviceId:ContentDirectory"));

    if (!cds)
    {
        HClientServices cdsServices =
            device->servicesByType(
                HContentDirectoryInfo::supportedServiceType(),
                HResourceType::Inclusive);

        if (!cdsServices.isEmpty())
        {
            cds = cdsServices.first();
        }
        else
        {
            return false;
        }
    }

    HClientService* cm = device->serviceById(
        HServiceId("urn:upnp-org:serviceId:ConnectionManager"));

    if (!cm)
    {
        HClientServices cmServices =
            device->servicesByType(
                HConnectionManagerInfo::supportedServiceType(),
                HResourceType::Inclusive);

        if (!cmServices.isEmpty())
        {
            cm = cmServices.first();
        }
        else
        {
            return false;
        }
    }

    /*srv = device->serviceById(
        HServiceId("urn:upnp-org:serviceId:ScheduledRecording"));
    if (srv)
    {
        h->m_scheduledRecording = new HScheduledRecording();
        ok = h->m_scheduledRecording->setService(srv);
        if (!ok)
        {
            return false;
        }
    }*/

    QScopedPointer<HContentDirectoryAdapter> cdsAdapter(new HContentDirectoryAdapter());
    if (!cdsAdapter->setService(cds, HClientServiceAdapter::MinimalValidation))
    {
        return false;
    }

    QScopedPointer<HConnectionManagerAdapter> cmAdapter(new HConnectionManagerAdapter());
    cmAdapter.reset(new HConnectionManagerAdapter());
    if (!cmAdapter->setService(cm, HClientServiceAdapter::MinimalValidation))
    {
        return false;
    }

    h->m_contentDirectory.reset(cdsAdapter.take());
    h->m_connectionManager.reset(cmAdapter.take());
    h->m_transport = avTransport;

    return true;
}