2009/dap/system-info requirements.html,NONE,1.1 Overview.html,1.88,1.89

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>·&nbsp;<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>·&nbsp;<code>timeRemaining</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>isExternal</code></td><td></td></tr>
-          <tr><td>·&nbsp;<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>·&#160;<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>·&#160;<code>timeRemaining</code></td><td></td></tr>
+          <tr><td>·&#160;<code>isExternal</code></td><td></td></tr>
+          <tr><td>·&#160;<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>·&nbsp;<code>load</code></td><td></td></tr>
+          <tr><td>·&#160;<code>load</code></td><td></td></tr>
 
           <tr class="interface"><td><a>Thermal</a></td><td></td><td/></tr>
-          <tr><td>·&nbsp;<code>load</code></td><td></td></tr>
+          <tr><td>·&#160;<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>·&nbsp;<code>currentDownloadBandwidth</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>currentDownloadBandwidth</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>currentDownloadBandwidth</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>currentUploadBandwidth</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>maxDownloadBandwidth</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>maxUploadBandwidth</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>macAddress</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>ipAddress</code></td><td></td></tr>
+          <tr><td>·&#160;<code>currentDownloadBandwidth</code></td><td></td></tr>
+          <tr><td>·&#160;<code>currentDownloadBandwidth</code></td><td></td></tr>
+          <tr><td>·&#160;<code>currentDownloadBandwidth</code></td><td></td></tr>
+          <tr><td>·&#160;<code>currentUploadBandwidth</code></td><td></td></tr>
+          <tr><td>·&#160;<code>maxDownloadBandwidth</code></td><td></td></tr>
+          <tr><td>·&#160;<code>maxUploadBandwidth</code></td><td></td></tr>
+          <tr><td>·&#160;<code>macAddress</code></td><td></td></tr>
+          <tr><td>·&#160;<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>·&nbsp;<code>currentSignalStrength</code></td><td></td></tr>
-          <tr><td>·&nbsp;<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>·&#160;<code>currentSignalStrength</code></td><td></td></tr>
+          <tr><td>·&#160;<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>·&nbsp;<code>currentSignalStrength</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>apn</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>operatorName</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>roaming</code></td><td></td></tr>
-          <tr><td>·&nbsp;<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>·&nbsp;<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>·&#160;<code>currentSignalStrength</code></td><td></td></tr>
+          <tr><td>·&#160;<code>apn</code></td><td></td></tr>
+          <tr><td>·&#160;<code>operatorName</code></td><td></td></tr>
+          <tr><td>·&#160;<code>roaming</code></td><td></td></tr>
+          <tr><td>·&#160;<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>·&#160;<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>·&nbsp;<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>·&nbsp;<code>brightness</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>contrast</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>blanked</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>dotsPerInchW</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>dotsPerInchH</code></td><td></td></tr>
-          <tr><td>·&nbsp;<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>·&nbsp;<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>·&#160;<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>·&#160;<code>brightness</code></td><td></td></tr>
+          <tr><td>·&#160;<code>contrast</code></td><td></td></tr>
+          <tr><td>·&#160;<code>blanked</code></td><td></td></tr>
+          <tr><td>·&#160;<code>dotsPerInchW</code></td><td></td></tr>
+          <tr><td>·&#160;<code>dotsPerInchH</code></td><td></td></tr>
+          <tr><td>·&#160;<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>·&#160;<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>·&nbsp;<code>type</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>freqRangeLow</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>freqRangeHigh</code></td><td></td></tr>
-          <tr><td>·&nbsp;<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>·&#160;<code>type</code></td><td></td></tr>
+          <tr><td>·&#160;<code>freqRangeLow</code></td><td></td></tr>
+          <tr><td>·&#160;<code>freqRangeHigh</code></td><td></td></tr>
+          <tr><td>·&#160;<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>·&nbsp;<code>supportsVideo</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>sensorPixels</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>hasFlash</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>maxZoomFactors</code></td><td></td></tr>
+          <tr><td>·&#160;<code>supportsVideo</code></td><td></td></tr>
+          <tr><td>·&#160;<code>sensorPixels</code></td><td></td></tr>
+          <tr><td>·&#160;<code>hasFlash</code></td><td></td></tr>
+          <tr><td>·&#160;<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>·&nbsp;<code>type</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>isHardware</code></td><td></td></tr>
+          <tr><td>·&#160;<code>type</code></td><td></td></tr>
+          <tr><td>·&#160;<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>·&nbsp;<code>type</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>freqRangeLow</code></td><td></td></tr>
-          <tr><td>·&nbsp;<code>freqRangeHigh</code></td><td></td></tr>
+          <tr><td>·&#160;<code>type</code></td><td></td></tr>
+          <tr><td>·&#160;<code>freqRangeLow</code></td><td></td></tr>
+          <tr><td>·&#160;<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 &amp; 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 &amp; 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