[Bug 11326] A proposal to add web application access to home network A/V devices and content

http://www.w3.org/Bugs/Public/show_bug.cgi?id=11326

--- Comment #1 from Bob Lund <b.lund@cablelabs.com> 2010-11-18 20:43:00 UTC ---
Here is so some additional information regarding a possible implementation to
meet the requirement 1) and 2) in the proposal.

One implementation approach is to define a new UPnP user agent WebIDL (a
portion of this has been implemented in a proof-of-concept):


// WebIDL for User Agent UPnP protocol

module core {
  interface [
    DelegatingGetOwnPropertSlot,    //various inherited functions required
    DelegatingPutFunction,
    .
    .
    .
  ] UPnP {
    // UPnP control point management

    //start control point
    [Custom] void startControlPoint();

    //stop control point
    [Custom] void stopControlPoint();

    //set call-back for discovery events
    [Custom] void addNotifyListener();

    //set call-back for search results
    [Custom] void addSearchResponseListener();

    //set call-back for evented variables
    [Custom] void addEventListener();

    //set call-back for device added or dropped
    [Custom] void addDeviceChangeListener();

    // Deivce, service and content discovery

    //find devices
    [Custom] void discoverDevices();

    //authentication for control of secure devices
    [Custom] void loginToDevice(in DeviceHandle deviceHandle, in DOMString
password);

    //time before automatic logout
    [Custom] void getLoginTimeRemaining(in DeviceHandle  deviceHandle);

    //identify services on each device    
    [Custom] void discoverServices(in DeviceHandle deviceHandle);

    //identify actions for each service
    [Custom] void discoverActions(in DeviceHandle deviceHandle, in
ServiceHandle serviceHandle);

    //determine if a service is a RUI server service
    [Custom] void isRUIService(in DeviceHandle deviceHandle, in ServiceHandle
serviceHandle);

    //determine if a service is a content directory service
    [Custom] void isContentDirectoryService(in DeviceHandle deviceHandle, in
ServiceHandle serviceHandle);

    //search for content that meets the filtering criteria
    [Custom] void searchContent(in DeviceHandle deviceHandle, in ServiceHandle
serviceHandle, in Filter filter);

    //traverse the content tree of a content directory service
    [Custom] void browseContent(in DeviceHandle deviceHandle, in ServiceHandle
serviceHandle);

    //determine if a content item is of a particular type
    [Custom] void isContentType(in ContentHandle contentHandle, in ContentType
contentType);

    //determine if a service is a connection management service
    [Custom] void isConnectionManagementService(in DeviceHandle deviceHandle,
in ServiceHandle serviceHandle);

    // Determine protocols and media formats supported by devices

    //determine if a device supports a transport type
    [Custom] void isSupportedTransportType(in DeviceHandle deviceHandle, in
TransportType transportType);

    //get a list of transport types supported by a device
    [Custom] void getSupportedTransportTypeList(in DeviceHandle deviceHandle);

    //determine if a content type is supported on a device
    [Custom] void isSupportedContentType(in DeviceHandle rendererDeviceHandle,
in ContentType contentType);

    //get a list of supported content types for a device
    [Custom] void getSupportedContentTypeList(in DeviceHandle
rendererDeviceHandle);

    // Control content playback

    //play a content item on a device
    [Custom] void play(in DeviceHandle deviceHandle, in ServiceHandle
serviceHandle, in URI contentURI);

    //pause the content playing
    [Custom] void pause(in DeviceHandle deviceHandle, in ServiceHandle 
serviceHandle);

    //stop the content playing
    [Custom] void stop(in DeviceHandle deviceHandle, in ServiceHandle
serviceHandle);

    //fastforward at a specified speed
    [Custom] void forward(in DeviceHandle deviceHandle, in ServiceHandle
serviceHandle);

    //rewind at a specified speed
    [Custom] void rewind(in DeviceHandle deviceHandle, in ServiceHandle
serviceHandle);

    //move the playback position
    [Custom] void seek(in DeviceHandle deviceHandle, in ServiceHandle
serviceHandle, in int location);

    //UPnP attributes

    //current number of devices found
    Attribute [CustomSetter] DOMString numDevices;

    //device number for the current operation
    Attribute [CustomSetter] DOMString deviceNumber;

    //true if the list of devices found has changed
    Attribute [CustomSetter] DOMString isDeviceListChanged;

    //current number of content items found
    Attribute [CustomSetter] DOMString numContentItems;

    //content item number for the current operation (as needed)
    Attribute [CustomSetter] DOMString contentItem;

    //true if the list of available content items has changed
    Attribute [CustomSetter] DOMString isContentChanged;

    //list of current devices and embedded devices
    Attribute [CustomSetter] DOMString devicesTree;

    //list of services available on each device and embedded device
    Attribute [CustomSetter] DOMString servicesList;

    //list of actions available on each service
    Attribute [CustomSetter] DOMString actionList;

    //structure for security information
    Attribute [CustomSetter] DOMString securityInfo;

    //definition of RUI
    Attribute [CustomSetter] DOMString ruiDefinition;

    //list of current content items found
    Attribute [CustomSetter] DOMString contentTree;
  }
}

-- 
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.

Received on Thursday, 18 November 2010 20:43:02 UTC