Warning:
This wiki has been archived and is now read-only.
VersionTwo
From Device Description Working Group Wiki
DDR API Sketch Input from Jose Cantera (TI+D) (Version 2)
// File: DDR-API.idl #ifndef _DDR_IDL_ #define _DDR_IDL_ #pragma prefix "w3c.org" module ddr { const unsigned short UNSPECIFIED_ERROR = 1; const unsigned short NOT_SUPPORTED_ERROR = 2; const unsigned short ACCESS_VIOLATION = 3; const unsigned short SYNTAX_ERROR = 4; const unsigned short NO_SUCH_ELEMENT = 5; const unsigned short NO_SUCH_PROPERTY = 6; const unsigned short UNKNOWN_VALUE = 7; // A trade-off between concrete and generic exceptions should be taken exception DDRException { unsigned short code; }; // It represents a unit. typedef string Unit; // XML-Schema datatype I guess typedef string DataType; // DDR's vocabulary property name (may be an alias to the ontology) typedef string PropertyName; // This is the URI of the property according to the DC Ontology (normative property name) typedef string OntologyIdentifier; // Path to a property of the delivery context // For example: /device/deviceHardware/display typedef string DeliveryContextPath; typedef string InformalDescription; // i.e. Needs a human to interpret const Unit NO_UNIT = ""; // A property in a DDR // This represents a property i.e. all the characteristics of a property interface DDRProperty { readonly attribute OntologyIdentifier id; readonly attribute PropertyName name; readonly attribute DataType type; readonly attribute Unit defaultUnit; readonly attribute InformalDescription description; }; // This is a property value measured in certain units, interface DDRPropertyValue { readonly attribute DDRProperty property; readonly attribute any value; readonly attribute Unit unit; }; // A lis of values for a property interface DDRPropertyValueList { readonly attribute unsigned long length; DDRPropertyValue item(in unsigned long index) raises(DDRException); readonly attribute DDRPropertyValue defaultValue; }; // This represents an element of the delivery context (Device, Browser, Display, Camera, etc) interface DCElementDescription { // What's a property name? URI according to the ontology? Shortcut? UAProf property?? DDRPropertyValue getPropertyValue(in DeliveryContextPath propertyName) raises(DDRException); // Does it raise an exception when the property is not available in that unit? How to deal with this DDRPropertyValue getPropertyValueInUnits(in DeliveryContextPath propertyName,in Unit unit) raises(DDRException); DDRPropertyValueList getPropertyValues(in DeliveryContextPath propertyName) raises(DDRException); DDRPropertyValueList getPropertyValuesInUnits(in DeliveryContextPath propertyName,in Unit unit) raises(DDRException); }; interface DCElementDescriptionList { readonly attribute unsigned long length; DCElementDescription item(in unsigned long index) raises (DDRException); }; // This interface represents all the delivery context. Usin this interface I can ask for different properties of the delivery context interface DeliveryContext : DCElementDescription { DCElementDescription getDeliveryContextElement(in DeliveryContextPath path) raises(DDRException); }; module core { // A condition over to query info on the DDR typedef string DeliveryContextCondition; struct ContextInfoPair { string element; string value; }; typedef sequence<ContextInfoPair> ContextInfo; interface ContextInformation { void put(in string element,in string value); string get(in string element); ContextInfo getAll(); }; interface Repository { DeliveryContext getDeliveryContext(in ContextInformation contextInfo) raises(DDRException); DCElementDescriptionList query(in DeliveryContextCondition condition) raises(DDRException); }; }; // To be defined Ckeck the Requirements module admin { interface RepositoryExt : Repository { void addProperty(in DDRProperty property); void addDCElementDescription(); void removeProperty(); void removeDCElementDescription(); }; }; }; #endif