- From: Max Froumentin via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 09 Mar 2010 12:42:59 +0000
- To: public-dap-commits@w3.org
Update of /sources/public/2009/dap/system-info In directory hutz:/tmp/cvs-serv2958 Modified Files: Overview.html Added Files: requirements.html Log Message: move requirements and use cases in separate document Index: Overview.html =================================================================== RCS file: /sources/public/2009/dap/system-info/Overview.html,v retrieving revision 1.88 retrieving revision 1.89 diff -u -d -r1.88 -r1.89 --- Overview.html 5 Mar 2010 15:11:08 -0000 1.88 +++ Overview.html 9 Mar 2010 12:42:57 -0000 1.89 @@ -1286,40 +1286,40 @@ <thead><tr><th>System Information</th><th>Delivery Context Ontology</th><th>Notes</th></tr></thead> <tbody> <tr class="interface"><td><a>Power</a></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#Battery"><code>hard:Battery</code></a></td><td/></tr> - <tr><td>· <code>level</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#batteryLevel"><code>hard:batteryLevel</code></a></td></tr> - <tr><td>· <code>timeRemaining</code></td><td></td></tr> - <tr><td>· <code>isExternal</code></td><td></td></tr> - <tr><td>· <code>batteryBeingCharged</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#batteryBeingCharged"><code>hard:batteryBeingCharged</code></a></td></tr> + <tr><td>· <code>level</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#batteryLevel"><code>hard:batteryLevel</code></a></td></tr> + <tr><td>· <code>timeRemaining</code></td><td></td></tr> + <tr><td>· <code>isExternal</code></td><td></td></tr> + <tr><td>· <code>batteryBeingCharged</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#batteryBeingCharged"><code>hard:batteryBeingCharged</code></a></td></tr> <tr class="interface"><td><a>CPU</a></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#CPU"><code>hard:CPU</code></a></td><td/></tr> - <tr><td>· <code>load</code></td><td></td></tr> + <tr><td>· <code>load</code></td><td></td></tr> <tr class="interface"><td><a>Thermal</a></td><td></td><td/></tr> - <tr><td>· <code>load</code></td><td></td></tr> + <tr><td>· <code>load</code></td><td></td></tr> <tr class="interface"><td><a>Network</a></td><td><a href="http://www.w3.org/TR/dcontology/network.html#Network"><code>net:Network</code></a></td><td/></tr> - <tr><td>· <code>currentDownloadBandwidth</code></td><td></td></tr> - <tr><td>· <code>currentDownloadBandwidth</code></td><td></td></tr> - <tr><td>· <code>currentDownloadBandwidth</code></td><td></td></tr> - <tr><td>· <code>currentUploadBandwidth</code></td><td></td></tr> - <tr><td>· <code>maxDownloadBandwidth</code></td><td></td></tr> - <tr><td>· <code>maxUploadBandwidth</code></td><td></td></tr> - <tr><td>· <code>macAddress</code></td><td></td></tr> - <tr><td>· <code>ipAddress</code></td><td></td></tr> + <tr><td>· <code>currentDownloadBandwidth</code></td><td></td></tr> + <tr><td>· <code>currentDownloadBandwidth</code></td><td></td></tr> + <tr><td>· <code>currentDownloadBandwidth</code></td><td></td></tr> + <tr><td>· <code>currentUploadBandwidth</code></td><td></td></tr> + <tr><td>· <code>maxDownloadBandwidth</code></td><td></td></tr> + <tr><td>· <code>maxUploadBandwidth</code></td><td></td></tr> + <tr><td>· <code>macAddress</code></td><td></td></tr> + <tr><td>· <code>ipAddress</code></td><td></td></tr> <tr class="interface"><td><a>WiredNetwork</a></td><td><a href="http://www.w3.org/TR/dcontology/network.html#WiredNetwork"><code>net:WiredNetwork</code></a></td><td/></tr> <tr class="interface"><td><a>WiFiNetwork</a></td><td><a href="http://www.w3.org/TR/dcontology/network.html#WiFiNetwork"><code>net:WiFiNetwork</code></a></td><td/></tr> - <tr><td>· <code>currentSignalStrength</code></td><td></td></tr> - <tr><td>· <code>SSID</code></td><td><a href="http://www.w3.org/TR/dcontology/network.html#ssid"><code>net:ssid</code></a></td></tr> + <tr><td>· <code>currentSignalStrength</code></td><td></td></tr> + <tr><td>· <code>SSID</code></td><td><a href="http://www.w3.org/TR/dcontology/network.html#ssid"><code>net:ssid</code></a></td></tr> <tr class="interface"><td><a>PLMNetwork</a></td><td><a href="http://www.w3.org/TR/dcontology/network.html#PLMNetwork"><code>net:PLMNetwork</code></a></td><td/></tr> - <tr><td>· <code>currentSignalStrength</code></td><td></td></tr> - <tr><td>· <code>apn</code></td><td></td></tr> - <tr><td>· <code>operatorName</code></td><td></td></tr> - <tr><td>· <code>roaming</code></td><td></td></tr> - <tr><td>· <code>mcc</code></td><td><a href="http://www.w3.org/TR/dcontology/network.html#mcc"><code>net:mcc</code></a></td></tr> - <tr><td>· <code>mnc</code></td><td><a href="http://www.w3.org/TR/dcontology/network.html#mnc"><code>net:mnc</code></a></td></tr> + <tr><td>· <code>currentSignalStrength</code></td><td></td></tr> + <tr><td>· <code>apn</code></td><td></td></tr> + <tr><td>· <code>operatorName</code></td><td></td></tr> + <tr><td>· <code>roaming</code></td><td></td></tr> + <tr><td>· <code>mcc</code></td><td><a href="http://www.w3.org/TR/dcontology/network.html#mcc"><code>net:mcc</code></a></td></tr> + <tr><td>· <code>mnc</code></td><td><a href="http://www.w3.org/TR/dcontology/network.html#mnc"><code>net:mnc</code></a></td></tr> <tr class="interface"><td><code>Sensor</code></td><td></td><td/></tr> @@ -1335,14 +1335,14 @@ <tr class="interface"><td><code>OuputDevice</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#OutputDevice"><code>hard:OutputDevice</code></a></td><td/></tr> <tr class="interface"><td><code>Display</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#Display"><code>hard:Display</code></a></td><td>TODO: Display inherits also from CSSOM's screen</td></tr> - <tr><td>· <code>orientation</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#currentOrientation"><code>hard:currentOrientation</code></a></td></tr> - <tr><td>· <code>brightness</code></td><td></td></tr> - <tr><td>· <code>contrast</code></td><td></td></tr> - <tr><td>· <code>blanked</code></td><td></td></tr> - <tr><td>· <code>dotsPerInchW</code></td><td></td></tr> - <tr><td>· <code>dotsPerInchH</code></td><td></td></tr> - <tr><td>· <code>physicalWidth</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#width"><code>hard:width</code></a></td><td><code>hard:width</code> applies to any physical object, not just displays</td></tr> - <tr><td>· <code>physicalHeight</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#height"><code>hard:height</code></a></td><td><code>hard:height</code> applies to any physical object, not just displays</td></tr> + <tr><td>· <code>orientation</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#currentOrientation"><code>hard:currentOrientation</code></a></td></tr> + <tr><td>· <code>brightness</code></td><td></td></tr> + <tr><td>· <code>contrast</code></td><td></td></tr> + <tr><td>· <code>blanked</code></td><td></td></tr> + <tr><td>· <code>dotsPerInchW</code></td><td></td></tr> + <tr><td>· <code>dotsPerInchH</code></td><td></td></tr> + <tr><td>· <code>physicalWidth</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#width"><code>hard:width</code></a></td><td><code>hard:width</code> applies to any physical object, not just displays</td></tr> + <tr><td>· <code>physicalHeight</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#height"><code>hard:height</code></a></td><td><code>hard:height</code> applies to any physical object, not just displays</td></tr> <!-- readonly attribute float innerWidth; @@ -1358,26 +1358,26 @@ --> <tr class="interface"><td><code>Speaker</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#OutputDevice"><code>hard:OutputDevice</code></a></td><td/></tr> - <tr><td>· <code>type</code></td><td></td></tr> - <tr><td>· <code>freqRangeLow</code></td><td></td></tr> - <tr><td>· <code>freqRangeHigh</code></td><td></td></tr> - <tr><td>· <code>volumeLevel</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#volumeLevel"><code>hard:volumeLevel</code></a></td></tr> + <tr><td>· <code>type</code></td><td></td></tr> + <tr><td>· <code>freqRangeLow</code></td><td></td></tr> + <tr><td>· <code>freqRangeHigh</code></td><td></td></tr> + <tr><td>· <code>volumeLevel</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#volumeLevel"><code>hard:volumeLevel</code></a></td></tr> <tr class="interface"><td><code>InputDevice</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#InputDevice"><code>hard:InputDevice</code></a></td><td/></tr> <tr class="interface"><td><code>Camera</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#Camera"><code>hard:Camera</code></a></td><td/></tr> - <tr><td>· <code>supportsVideo</code></td><td></td></tr> - <tr><td>· <code>sensorPixels</code></td><td></td></tr> - <tr><td>· <code>hasFlash</code></td><td></td></tr> - <tr><td>· <code>maxZoomFactors</code></td><td></td></tr> + <tr><td>· <code>supportsVideo</code></td><td></td></tr> + <tr><td>· <code>sensorPixels</code></td><td></td></tr> + <tr><td>· <code>hasFlash</code></td><td></td></tr> + <tr><td>· <code>maxZoomFactors</code></td><td></td></tr> <tr class="interface"><td><code>Keyboard</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#Keyboard"><code>hard:Keyboard</code></a></td><td/></tr> - <tr><td>· <code>type</code></td><td></td></tr> - <tr><td>· <code>isHardware</code></td><td></td></tr> + <tr><td>· <code>type</code></td><td></td></tr> + <tr><td>· <code>isHardware</code></td><td></td></tr> <tr class="interface"><td><code>Microphone</code></td><td><a href="http://www.w3.org/TR/dcontology/hardware.html#Microphone"><code>hard:Microphone</code></a></td><td/></tr> - <tr><td>· <code>type</code></td><td></td></tr> - <tr><td>· <code>freqRangeLow</code></td><td></td></tr> - <tr><td>· <code>freqRangeHigh</code></td><td></td></tr> + <tr><td>· <code>type</code></td><td></td></tr> + <tr><td>· <code>freqRangeLow</code></td><td></td></tr> + <tr><td>· <code>freqRangeHigh</code></td><td></td></tr> <tr class="interface"><td><code>PointingDevice</code></td><td></td><td>[[DCONTOLOGY]] has <code>hard:tactileDisplay</code> but only covers touchScreen, mice and styluses are normative instances of <code>hard:inputDevice</code></td></tr> @@ -1385,327 +1385,6 @@ </table> </section> - - <!--************************************* Requirements & Use cases *******************************************--> - <section class="informative appendix"> - <h2>Requirements & Use cases</h2> - - <p class="issue">make a separate document?</p> - - <section> - <h3>Requirements</h3> - - <section> - <h4>Power</h4> - <ul> - <li>The System Information API MUST provide a method to retrieve one-shot power source information. </li> - <li>The System Information API MUST provide a method to retrieve one-shot power remaining information. </li> - <li>The System Information API SHOULD provide a power level change events. </li> - <li>The System Information API SHOULD provide power level change events based on thresholds. </li> - </ul> - </section> - <section> - <h4>CPU</h4> - <ul> - <li>The System Information API MUST provide a method to retrieve information about the CPU utilization.</li> - <li>The System Information API SHOULD provide a method to retrieve information about the CPU brand.</li> - <li>The System Information API MAY provide a methods to retrieve additional information about the CPU.</li> - </ul> - </section> - <section> - <h4>Display</h4> - <ul> - <li>The System Information API SHOULD provide information about the dots-per-inch (DPI) of the display.</li> - <li>The System Information API SHOULD provide a method to retrieve one-shot screen blank information.</li> - <li>The System Information API SHOULD provide screen blank events.</li> - <li>The System Information API MUST provide one-shot display orientation information.</li> - <li>The System Information API MUST provide display orientation change events.</li> - <li>The System Information API MUST provide one-shot display brightness information.</li> - <li>The System Information API MUST provide display brightness change events.</li> - <li>The System Information API MAY provide information and events about external displays.</li> - <li>The System Information API MAY provide events about display color depth.</li> - <li>The System Information API MAY provide information and events about display device refresh rate.</li> - </ul> - </section> - <section> - <h4>Connection</h4> - <ul> - <li> The System Information API MUST provide a method to detect the technology that a network bearer uses (e.g. 802.11a, CDMA, WiMAX, etc.)</li> - <li>The System Information API MUST provide a method to detect the quality of the connection to the network bearer.</li> - <li>The System Information API MUST provide a method to detect whether a specified service is available. This method SHOULD be asynchronous.</li> - <li>The System Information API MUST provide a events about the availability of a specified service.</li> - <li>The System Information API MUST provide a method to detect the quality of the connection to a specified service.</li> - <li>The System Information API MUST provide a method to detect whether the device currently has a valid network connection. This method SHOULD be synchronous.</li> - <li>The System Information API MUST provide a method to detect changes in the devices network status (e.g. radio turned on or signal no longer available).</li> - <li>The System Information API MUST provide information about the current network bearer.</li> - <li>The System Information API MAY provide information about the default network bearer.</li> - <li>The System Information API MAY provide information about the preferred network bearer.</li> - <li>The System Information API MAY provide a method to change the current network bearer.</li> - <li>The System Information API SHOULD provide a method to detect whether a device that is using a cellular network is currently roaming.</li> - <li>The System Information API MAY provide a method to detect geolocation based on cell tower triangulation calculations.</li> - <li>The System Information API SHOULD provide a method to detect the ID of the current network bearer.</li> - <li>The System Information API SHOULD provide a method to detect the type of encryption in use by a network bearer.</li> - <li>The System Information API SHOULD provide a method to detect the operator, MMC, and MNC of a PLM Network.</li> - <li>The System Information API SHOULD provide IP Address Table change events.</li> - <li>The System Information API SHOULD provide Route Table change events.</li> - <li>The System Information API MUST provide connected events.</li> - <li>The System Information API MUST provide disconnected events.</li> - - </ul> - </section> - <section> - <h4>Thermal</h4> - <ul> - <li>The System Information API SHOULD provide the ability to list temperature - from multiple thermometers.</li> - <li>The System Information API SHOULD provide a method to detect the thermal - target of a thermometer.</li> - <li>The System Information API MAY provide a method to detect the ID of the - thermometer.</li> - <li>The System Information API MUST provide a method to detect temperature.</li> - <li>The System Information API SHOULD provide a method to monitor temperature - changes based on thresholds.</li> - </ul> - </section> - <section> - <h4>Audio</h4> - <ul> - <li>The System Information API MUST provide a list of audio codecs - available on the device</li> - <li>The System Information API MUST provide a list of audio output - devices (speakers etc.)</li> - <li>The System Information API MUST provide a list of audio input - devices (microphones, software)</li> - <li>The System Information API SHOULD provide audio architecture - information.</li> - </ul> - </section> - <section> - <h4>Video</h4> - <ul> - <li>The System Information API MUST provide a list of codecs available - on the device.</li> - <li>The System Information API SHOULD provide video architecture - information.</li> - </ul> - </section> - <section> - <h4>Ambient Light Sensor</h4> - </section> - <section> - <h4>Storage</h4> - </section> - <section> - <h4>Input</h4> - <ul> - <li>The System Information API MUST provide information about the presence of a touch screen.</li> - <li>The System Information API MUST provide information about the existence of mouse hover events.</li> - <li>The System Information API SHOULD provide information about the presence of a - screen that supports multi-touch.</li> - <li>The System Information API SHOULD provide information about presence of a physical - keyboard.</li> - <li>The System Information API SHOULD provide information about the size of the - keyboard (e.g. whether it is a thumb keyboard).</li> - <li>The System Information API MAY allow an application to detect whether an - on-screen keyboard is visible.</li> - <li>The System Information API MAY allow an application to monitor when an on-screen - keyboard appears and disappears.</li> - <li>The System Information API MAY provide a method for applications to monitor the - attachment and detachment of physical pointing devices.</li> - <li>The System Information API MAY provide a method for applications to monitor the - attachment and detachment of physical keyboard devices.</li> - </ul> - </section> - </section> - - <section> - <h3>Use Cases</h3> - <p class="issue">Add examples</p> - <section> - <h4>Power</h4> - <dl> - <dt>User Watches Video Content on Device on battery power</dt> - <dd>The user has opened a video playback application and the - application attempts to provide the optimal viewing - experience for the device. During the video playback, the - battery level has reached a low level that will prevent the - playback to finish. The application displays a non-intrusive - notification that the device needs to be plugged in to - ensure the video playback to finish.</dd> - </dl> - </section> - <section> - <h4>CPU</h4> - <dl> - <dt>User Watches Video Content on Device</dt> - <dd>The user has opened a video playback application and the - application attempts to provide the optimal viewing - experience for the device. The content provider has a - multithreaded decoder so the application use the Cpu API to - see if the CPU would be able to take advantage of concurrent - threads. It then checks to see if the CPU is currently busy - by looking at current usage and comparing current frequency - to maximum frequency. If the application determines that - playback can proceed without hardware acceleration on the - system in its current state, playback proceeds. Otherwise, - the application either looks for hardware acceleration - capabilities, recommends that the user shut down other - applications that are using device CPU resources, or streams - lesser content that can be decoded with fewer CPU - resources. </dd> - - <dt>Service Provider pushes software on to user device</dt> - <dd>A service provider wants to push a software package out - to the customer's device. However, they want the - installation to be unobtrusive. They use the CPU API to - register to be notified when the CPU usage falls below 10% - for 5 consecutive samples taken one second apart.</dd> - - <dt>user installs additional software from a repository</dt> - <dd>The user wants to install additional software on to her - device from a repository. before downloading the software, - the repository installation application checks to ensure - that system requirements are met, and it uses the cpu api to - check if the host device cpu is a supported architecture. - if the cpu architecture is not supported, the installation - is cancelled before the software is downloaded, thus - minimizing the network resources required.</dd> - - <dt>user installs additional software from a repository--case 2</dt> - <dd>The user wants to install additional software on to her - device from a repository. the application provider supports - multiple platforms but each installation package only - supports one platform in order to minimize network resource - utilization. before downloading the plugin, the repository - installation application uses the cpu api to determine which - installation package to download. with the smaller - installation packages, the user's experience is optimized, - especially over slower network connections. </dd> - </dl> - </section> - <section> - <h4>Display</h4> - <dl> - <dt>Application detects that screen is blank</dt> - <dd>A web application has a lot of sprites, UI elements, and frequent server queries that - consume a lot of power. The user stops actively interacting with the device and the - screen blanks or the screen saver begins. The application detects this change and - stops all non-essential actions that consume power. - </dd> - <dt>The user changes the orientation of the device</dt> - <dd>While reading content provided by a web application in landscape orientation, the - user rotates the device to a portrait orientation because the content is taller - than it is wide. The application detects the change and reflows the content to better - fit in portrait orientation.</dd> - <dt>The web application is displayed on screens that vary greatly in physical size</dt> - <dd>Recognizing market opportunity, a developer targets her application for small hand-held - devices as well as television screens and very large electronic advertising canvases. - The developer uses DPI information in order to determine the ideal size of UI widgets - in order to provide the most ideal viewing experience across screens. </dd> - </dl> - </section> - <section> - <h4>Connection</h4> - <p>The use cases for this module are critical to forming a realistic picture of what kinds of - information are going to be valuable for the web application that wants delivery context - network information. The primary use case is: application wants to know about the network - connection so that it can adjust its behavior.</p> - <dl> - <dt>User accesses web content based on type and quality of network connection.</dt> - <dd>A video viewing web application can makes use of the API to detect the connection - speed and present the user with appropriate encodings of the video that will provide - a viewing experience that is less likely to be interrupted. Alternatively, the - application may monitor signal strength and assist the user with re-orienting the - device or changing locations so that the viewing experience can be of higher quality. - </dd> - <dt>Web applications use connection context to provide users seamless access to localized services.</dt> - <dd>As a user drives along in their car, a web application running on a dashboard - console periodically chooses the most appropriate network connection to use. As the - user pulls into a coffee shop parking lot the application changes from 3G cellular - to the coffee shop's 802.11 network. This allows the app to reduce the user's - connection fees and take advantage of a better connection speed. The application - may present the user with several options if it cannot choose itself.</dd> - </dl> - </section> - <section> - <h4>Thermal</h4> - <dl> - <dt>Application can throttle activity based on device temperature.</dt> - <dd>A web application can take device temperature into account in order to throttle - activity and avoid degraded performance or crashes due to heat from intense hardware - use. For example, some devices include RFID radios with >1 watt power amplifiers and - can generate a lot of heat. Throttling performance may avoid degradation or crashes - on these devices. In addition the application may present the user with a notification - about device temperature and suggest an action or send a notification to an IT web - service that indicates the device is "running hot".</dd> - - <dt>A weather monitoring application uses temperature data from automobile temperature sensors.</dt> - <dd>A web application that runs on a dashboard console could send the temperature outside - the car, with additional location information to a weather related web service.</dd> - </dl> - </section> - <section> - <h4>Audio</h4> - <dl> - <dt>Application sound themes</dt> - <dd>A game may detect a devices audio capabilities in order to select - a sound theme that takes advantage of 6 audio channels and a subwoofer. - Alternatively it may select a sound theme optimized for stereo headphones.</dd> - - <dt>Recording</dt> - <dd>A outdoors recording application may take advantage of - multiple microphones attached to a device in order to record audio - from several sources and special orientations at simultaneously.</dd> - </dl> - </section> - <section> - <h4>Video</h4> - <dl> - <dt>Encoding video on the device : app requirements and user experience</dt> - <dd>An application may include features that encode video. Determining the - video encode capabilities of the local device allows the application to - determine if the device's capabilities meet the needs of the application - and the desired user experience. - </dd> - <dt>Encoding video on the device : local vs cloud</dt> - <dd>An application may intelligently split up the work of encoding - video between the local device, based on its capabilities, and a web service - in the cloud that encodes video. This may provide for more efficient - compute and network resource utilization.</dd> - </dl> - </section> - <section> - <h4>Input</h4> - <dl> - <dt>Application adapts to touch screen device with no external pointer</dt> - <dd>A user who frequently visits a popular music social media site navigates to the site on - her new mobile phone. One devices with physical pointing devices and larger screens, - the web application presents a complex UI with a lot of functionality. However, when - the application detects that the host browser has a smaller touch screen and no external - pointing device, it adapts by reducing the complexity of the UI and enlarging widgets to - accommodate for finger navigation. - </dd> - <dt>Application adapts to device with no external keyboard</dt> - <dd>A user who frequently blogs using his laptop finds himself with a great idea but without - his laptop. He navigates to the blogging site resigned to type the entry using his thumbs. - However the application detects that the delivery context does not have an external keyboard - and adapts by enabling predictive text to reduce the number of keystrokes that the user - needs to enter.</dd> - <dt>Application detects the presence of mouse hover events</dt> - <dd>A user who regularly visits an online video editing and sharing website on his phone - decides to try a larger project on his laptop computer with an HD home video. He expects - to see the same simplified UI, but is pleasantly surprised to find a UI that is more - appropriate for the laptop paradigm. However, because the UI is more complex, there - is a lot of functionality that he does not know how to use. Fortunately, the application - detect that the user is on a system with mouse in/out/hover events, and so it uses those - events to familiarize the user with the new functionality.</dd> - </dl> - </section> - </section> - </section> - - <!--************************************* /Requirements ******************************************--> - <!--************************************* Acks ***************************************************--> <section class='appendix'> <h3>Acknowledgements</h3> --- NEW FILE: requirements.html --- <!DOCTYPE html> <html> <head> <title>Requirements & Use Cases for The System Information API</title> <meta http-equiv='Content-Type' content='text/html;charset=utf-8'/> <script src='../ReSpec.js/js/respec.js' class='remove'></script> <script class='remove'> var respecConfig = { specStatus: "ED", shortName: "system-info-api-req", publishDate: "2010-02-02", // previousPublishDate: "1977-03-15", edDraftURI: "http://dev.w3.org/2009/dap/system-info-req/", // lcEnd: "2009-08-05", maxTocLevel: 2, noIDLSorting: true, noIDLIn: true, editors: [{name:"Dzung Tran",company:"Intel",companyURL:"http://intel.com"}, {name:"Max Froumentin",company:"Opera Software ASA",companyURL:"http://www.opera.com"}] }; </script> <script src='../common/config.js' class='remove'></script> <style type="text/css"> table { border: 1px solid black } th { border: 1px solid black } tr.interface { background-color: #ddd } </style> </head> <body> <section id='abstract'> <p>This specification defines the requirements and introduces use cases for the System Information API [[SYSINFOAPI]]</p> </section> <section id="sotd"> <p>This document represents the early consensus of the group on the requirements and use cases of the proposed System Information API. Issues and editors notes in the document highlight some of the points on which the group is still working and would particularly like to get feedback.</p> </section> <section class='introduction'> <h2>Introduction</h2> <p>In order for web applications to gain access to information only available to an operating system's native applications, they must be able to access various data present on the device, either related to the hardware state (e.g. CPU load), software data (e.g. pictures stored) or environment information (e.g. ambient brightness). The APIs defined by the <em>Device APIs and Policy Working Group</em> address this issue. Specifically, the System Information API defined in [[SYSINFOAPI]] provides access to hardware devices, either internal (CPU, Thermometers) or ambient (light, noise or temperature). This document presents a set of use cases and a list of requirements which have helped the design of that specification.</p> </section> <section> <h3>Requirements</h3> <section> <h4>Power</h4> <ul> <li>The System Information API MUST provide a method to retrieve one-shot power source information. </li> <li>The System Information API MUST provide a method to retrieve one-shot power remaining information. </li> <li>The System Information API SHOULD provide a power level change events. </li> <li>The System Information API SHOULD provide power level change events based on thresholds. </li> </ul> </section> <section> <h4>CPU</h4> <ul> <li>The System Information API MUST provide a method to retrieve information about the CPU utilization.</li> <li>The System Information API SHOULD provide a method to retrieve information about the CPU brand.</li> <li>The System Information API MAY provide a methods to retrieve additional information about the CPU.</li> </ul> </section> <section> <h4>Display</h4> <ul> <li>The System Information API SHOULD provide information about the dots-per-inch (DPI) of the display.</li> <li>The System Information API SHOULD provide a method to retrieve one-shot screen blank information.</li> <li>The System Information API SHOULD provide screen blank events.</li> <li>The System Information API MUST provide one-shot display orientation information.</li> <li>The System Information API MUST provide display orientation change events.</li> <li>The System Information API MUST provide one-shot display brightness information.</li> <li>The System Information API MUST provide display brightness change events.</li> <li>The System Information API MAY provide information and events about external displays.</li> <li>The System Information API MAY provide events about display color depth.</li> <li>The System Information API MAY provide information and events about display device refresh rate.</li> </ul> </section> <section> <h4>Connection</h4> <ul> <li> The System Information API MUST provide a method to detect the technology that a network bearer uses (e.g. 802.11a, CDMA, WiMAX, etc.)</li> <li>The System Information API MUST provide a method to detect the quality of the connection to the network bearer.</li> <li>The System Information API MUST provide a method to detect whether a specified service is available. This method SHOULD be asynchronous.</li> <li>The System Information API MUST provide a events about the availability of a specified service.</li> <li>The System Information API MUST provide a method to detect the quality of the connection to a specified service.</li> <li>The System Information API MUST provide a method to detect whether the device currently has a valid network connection. This method SHOULD be synchronous.</li> <li>The System Information API MUST provide a method to detect changes in the devices network status (e.g. radio turned on or signal no longer available).</li> <li>The System Information API MUST provide information about the current network bearer.</li> <li>The System Information API MAY provide information about the default network bearer.</li> <li>The System Information API MAY provide information about the preferred network bearer.</li> <li>The System Information API MAY provide a method to change the current network bearer.</li> <li>The System Information API SHOULD provide a method to detect whether a device that is using a cellular network is currently roaming.</li> <li>The System Information API MAY provide a method to detect geolocation based on cell tower triangulation calculations.</li> <li>The System Information API SHOULD provide a method to detect the ID of the current network bearer.</li> <li>The System Information API SHOULD provide a method to detect the type of encryption in use by a network bearer.</li> <li>The System Information API SHOULD provide a method to detect the operator, MMC, and MNC of a PLM Network.</li> <li>The System Information API SHOULD provide IP Address Table change events.</li> <li>The System Information API SHOULD provide Route Table change events.</li> <li>The System Information API MUST provide connected events.</li> <li>The System Information API MUST provide disconnected events.</li> </ul> </section> <section> <h4>Thermal</h4> <ul> <li>The System Information API SHOULD provide the ability to list temperature from multiple thermometers.</li> <li>The System Information API SHOULD provide a method to detect the thermal target of a thermometer.</li> <li>The System Information API MAY provide a method to detect the ID of the thermometer.</li> <li>The System Information API MUST provide a method to detect temperature.</li> <li>The System Information API SHOULD provide a method to monitor temperature changes based on thresholds.</li> </ul> </section> <section> <h4>Audio</h4> <ul> <li>The System Information API MUST provide a list of audio codecs available on the device</li> <li>The System Information API MUST provide a list of audio output devices (speakers etc.)</li> <li>The System Information API MUST provide a list of audio input devices (microphones, software)</li> <li>The System Information API SHOULD provide audio architecture information.</li> </ul> </section> <section> <h4>Video</h4> <ul> <li>The System Information API MUST provide a list of codecs available on the device.</li> <li>The System Information API SHOULD provide video architecture information.</li> </ul> </section> <section> <h4>Ambient Light Sensor</h4> </section> <section> <h4>Storage</h4> </section> <section> <h4>Input</h4> <ul> <li>The System Information API MUST provide information about the presence of a touch screen.</li> <li>The System Information API MUST provide information about the existence of mouse hover events.</li> <li>The System Information API SHOULD provide information about the presence of a screen that supports multi-touch.</li> <li>The System Information API SHOULD provide information about presence of a physical keyboard.</li> <li>The System Information API SHOULD provide information about the size of the keyboard (e.g. whether it is a thumb keyboard).</li> <li>The System Information API MAY allow an application to detect whether an on-screen keyboard is visible.</li> <li>The System Information API MAY allow an application to monitor when an on-screen keyboard appears and disappears.</li> <li>The System Information API MAY provide a method for applications to monitor the attachment and detachment of physical pointing devices.</li> <li>The System Information API MAY provide a method for applications to monitor the attachment and detachment of physical keyboard devices.</li> </ul> </section> </section> <section> <h3>Use Cases</h3> <p class="issue">Add examples</p> <section> <h4>Power</h4> <dl> <dt>User Watches Video Content on Device on battery power</dt> <dd>The user has opened a video playback application and the application attempts to provide the optimal viewing experience for the device. During the video playback, the battery level has reached a low level that will prevent the playback to finish. The application displays a non-intrusive notification that the device needs to be plugged in to ensure the video playback to finish.</dd> </dl> </section> <section> <h4>CPU</h4> <dl> <dt>User Watches Video Content on Device</dt> <dd>The user has opened a video playback application and the application attempts to provide the optimal viewing experience for the device. The content provider has a multithreaded decoder so the application use the Cpu API to see if the CPU would be able to take advantage of concurrent threads. It then checks to see if the CPU is currently busy by looking at current usage and comparing current frequency to maximum frequency. If the application determines that playback can proceed without hardware acceleration on the system in its current state, playback proceeds. Otherwise, the application either looks for hardware acceleration capabilities, recommends that the user shut down other applications that are using device CPU resources, or streams lesser content that can be decoded with fewer CPU resources. </dd> <dt>Service Provider pushes software on to user device</dt> <dd>A service provider wants to push a software package out to the customer's device. However, they want the installation to be unobtrusive. They use the CPU API to register to be notified when the CPU usage falls below 10% for 5 consecutive samples taken one second apart.</dd> <dt>user installs additional software from a repository</dt> <dd>The user wants to install additional software on to her device from a repository. before downloading the software, the repository installation application checks to ensure that system requirements are met, and it uses the cpu api to check if the host device cpu is a supported architecture. if the cpu architecture is not supported, the installation is cancelled before the software is downloaded, thus minimizing the network resources required.</dd> <dt>user installs additional software from a repository--case 2</dt> <dd>The user wants to install additional software on to her device from a repository. the application provider supports multiple platforms but each installation package only supports one platform in order to minimize network resource utilization. before downloading the plugin, the repository installation application uses the cpu api to determine which installation package to download. with the smaller installation packages, the user's experience is optimized, especially over slower network connections. </dd> </dl> </section> <section> <h4>Display</h4> <dl> <dt>Application detects that screen is blank</dt> <dd>A web application has a lot of sprites, UI elements, and frequent server queries that consume a lot of power. The user stops actively interacting with the device and the screen blanks or the screen saver begins. The application detects this change and stops all non-essential actions that consume power. </dd> <dt>The user changes the orientation of the device</dt> <dd>While reading content provided by a web application in landscape orientation, the user rotates the device to a portrait orientation because the content is taller than it is wide. The application detects the change and reflows the content to better fit in portrait orientation.</dd> <dt>The web application is displayed on screens that vary greatly in physical size</dt> <dd>Recognizing market opportunity, a developer targets her application for small hand-held devices as well as television screens and very large electronic advertising canvases. The developer uses DPI information in order to determine the ideal size of UI widgets in order to provide the most ideal viewing experience across screens. </dd> </dl> </section> <section> <h4>Connection</h4> <p>The use cases for this module are critical to forming a realistic picture of what kinds of information are going to be valuable for the web application that wants delivery context network information. The primary use case is: application wants to know about the network connection so that it can adjust its behavior.</p> <dl> <dt>User accesses web content based on type and quality of network connection.</dt> <dd>A video viewing web application can makes use of the API to detect the connection speed and present the user with appropriate encodings of the video that will provide a viewing experience that is less likely to be interrupted. Alternatively, the application may monitor signal strength and assist the user with re-orienting the device or changing locations so that the viewing experience can be of higher quality. </dd> <dt>Web applications use connection context to provide users seamless access to localized services.</dt> <dd>As a user drives along in their car, a web application running on a dashboard console periodically chooses the most appropriate network connection to use. As the user pulls into a coffee shop parking lot the application changes from 3G cellular to the coffee shop's 802.11 network. This allows the app to reduce the user's connection fees and take advantage of a better connection speed. The application may present the user with several options if it cannot choose itself.</dd> </dl> </section> <section> <h4>Thermal</h4> <dl> <dt>Application can throttle activity based on device temperature.</dt> <dd>A web application can take device temperature into account in order to throttle activity and avoid degraded performance or crashes due to heat from intense hardware use. For example, some devices include RFID radios with >1 watt power amplifiers and can generate a lot of heat. Throttling performance may avoid degradation or crashes on these devices. In addition the application may present the user with a notification about device temperature and suggest an action or send a notification to an IT web service that indicates the device is "running hot".</dd> <dt>A weather monitoring application uses temperature data from automobile temperature sensors.</dt> <dd>A web application that runs on a dashboard console could send the temperature outside the car, with additional location information to a weather related web service.</dd> </dl> </section> <section> <h4>Audio</h4> <dl> <dt>Application sound themes</dt> <dd>A game may detect a devices audio capabilities in order to select a sound theme that takes advantage of 6 audio channels and a subwoofer. Alternatively it may select a sound theme optimized for stereo headphones.</dd> <dt>Recording</dt> <dd>A outdoors recording application may take advantage of multiple microphones attached to a device in order to record audio from several sources and special orientations at simultaneously.</dd> </dl> </section> <section> <h4>Video</h4> <dl> <dt>Encoding video on the device : app requirements and user experience</dt> <dd>An application may include features that encode video. Determining the video encode capabilities of the local device allows the application to determine if the device's capabilities meet the needs of the application and the desired user experience. </dd> <dt>Encoding video on the device : local vs cloud</dt> <dd>An application may intelligently split up the work of encoding video between the local device, based on its capabilities, and a web service in the cloud that encodes video. This may provide for more efficient compute and network resource utilization.</dd> </dl> </section> <section> <h4>Input</h4> <dl> <dt>Application adapts to touch screen device with no external pointer</dt> <dd>A user who frequently visits a popular music social media site navigates to the site on her new mobile phone. One devices with physical pointing devices and larger screens, the web application presents a complex UI with a lot of functionality. However, when the application detects that the host browser has a smaller touch screen and no external pointing device, it adapts by reducing the complexity of the UI and enlarging widgets to accommodate for finger navigation. </dd> <dt>Application adapts to device with no external keyboard</dt> <dd>A user who frequently blogs using his laptop finds himself with a great idea but without his laptop. He navigates to the blogging site resigned to type the entry using his thumbs. However the application detects that the delivery context does not have an external keyboard and adapts by enabling predictive text to reduce the number of keystrokes that the user needs to enter.</dd> <dt>Application detects the presence of mouse hover events</dt> <dd>A user who regularly visits an online video editing and sharing website on his phone decides to try a larger project on his laptop computer with an HD home video. He expects to see the same simplified UI, but is pleasantly surprised to find a UI that is more appropriate for the laptop paradigm. However, because the UI is more complex, there is a lot of functionality that he does not know how to use. Fortunately, the application detect that the user is on a system with mouse in/out/hover events, and so it uses those events to familiarize the user with the new functionality.</dd> </dl> </section> </section> <!--************************************* /Requirements ******************************************--> </body> </html>
Received on Tuesday, 9 March 2010 12:43:03 UTC