2009/dap/system-info Overview.html,1.7,1.8

Update of /sources/public/2009/dap/system-info
In directory hutz:/tmp/cvs-serv3380

Modified Files:
	Overview.html 
Log Message:
move requirement and use cases in non-normative appendices

Index: Overview.html
===================================================================
RCS file: /sources/public/2009/dap/system-info/Overview.html,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- Overview.html	24 Nov 2009 10:35:46 -0000	1.7
+++ Overview.html	24 Nov 2009 12:27:02 -0000	1.8
@@ -29,27 +29,6 @@
 		<h2>Power</h2>
 			This power specification is a set of APIs that exposes available power sources such as: batteries, 
             wall outlet, ..etc. It also expose if the device is on battery power and its charge level.
-		<section>
-			<h3>Requirements</h3>
-				<ul>
-					<li>A conforming implementation MUST provide a method to retrieve one-shot power source information. </li>
-					<li>A conforming implementation MUST provide a method to retrieve one-shot power remaining information. </li>
-					<li>A conforming implementation SHOULD provide a power source change events. </li>
-					<li>A conforming implementation SHOULD provide a power level change events. </li>
-					<li>A conforming implementation SHOULD provide power level change events based on thresholds. </li>
-				</ul>
-		</section>
-		<section>
-			<h3>Use-Cases</h3>
-			<section>
-				<h4>User Watches Video Content on Device on battery power</h4>
-				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.  
-			</section>
-		</section>
 		<dl title='[NoInterfaceObject] interface Power' class='idl'>
 			<dt>readonly attribute boolean usingExternalPowerSource</dt>
 			<dd>The <code>usingExternalPowerSource</code> attribute must be <code>true</code> if 
@@ -286,67 +265,8 @@
 		</section>
 	</section>
 	<section>
-		<h2>Cpu</h2>
-               This power specification is a set of APIs that expose CPU information such as: utilization, frequency, brand, ..etc.
-		<section>
-			<h3>Requirements</h3>
-			<ul>
-				<li>A conforming implementation MUST provide a method to retrieve information about
-				the number of concurrent threads that can run on the CPU.</li>
-				<li>A conforming implementation MUST provide a method to retrieve information about
-				the CPU utilization.</li>
-				<li>A conforming implementation SHOULD provide a method to retrieve information about
-				the current CPU frequency.</li>
-				<li>A conforming implementation SHOULD provide a method to retrieve information about
-				the maximum CPU frequency.</li>
-				<li>A conforming implementation SHOULD provide a method to retrieve information about
-				the CPU brand.</li>
-				<li>A conforming implementation MAY provide a methods to retrieve additional information about
-				the CPU.</li>
-			</ul>
-		</section>
-		<section>
-			<h3>Use-Cases</h3>
-			<section>
-				<h4>User Watches Video Content on Device</h4>
-				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. 
-			</section>
-			<section>
-				<h4>Service Provider pushes software on to user device</h4>
-				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.
-			</section>
-			<section>
-				<h4>User Installs Additional Software from a Repository</h4>
-				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.
-			</section>
-			<section>
-				<h4>User Installs Additional Software from a Repository--Case 2</h4>
-				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. 
-			</section>
-		</section>
+		<h2>CPU</h2>
+    <p>This section defines a set of APIs that expose CPU information such as: utilization, frequency, brand, etc.</p>
 		<dl title='[NoInterfaceObject] interface Cpu' class='idl'>
 			<dt>readonly attribute unsigned int numLogicalProcessors</dt>
 			<dd>The <code>numLogicalProcessors</code> attribute MUST indicate how many threads 
@@ -628,49 +548,10 @@
 	</section>
 	<section>
 		<h2>Display</h2>
-			The <code>window.screen</code> object already exposes width, height, availWidth, availHeight,
+			<p>The <code>window.screen</code> object already exposes width, height, availWidth, availHeight,
 			and colorDepth properties. This object could expose that information as well so that
 			there would be a single object through which all the info is available, or else this 
-			object could expose only those objects that are not available on window.screen.						
-		<section>
-			<h3>Requirements</h3>
-				<ul>
-					<li>A conforming implementation SHOULD provide information about the dots-per-inch (DPI) of the display.</li>
-					<li>A conforming implementation SHOULD provide a method to retrieve one-shot screen blank information.</li>
-					<li>A conforming implementation SHOULD provide screen blank events.</li>
-					<li>A conforming implementation MUST provide one-shot display orientation information.</li>
-					<li>A conforming implementation MUST provide display orientation change events.</li>
-					<li>A conforming implementation MUST provide one-shot display brightness information.</li>
-					<li>A conforming implementation MUST provide display brightness change events.</li>
-					<li>A conforming implementation MAY provide information and events about external displays.</li>
-					<li>A conforming implementation MAY provide events about display color depth.</li>
-					<li>A conforming implementation MAY provide information and events about display device refresh rate.</li>
-				</ul>
-		</section>
-		<section>
-			<h3>Use-Cases</h3>
-			<section>
-				<h4>Application detects that screen is blank</h4>
-				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.
-			</section>
-			<section>
-				<h4>The user changes the orientation of the device</h4>
-				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. 
-			</section>
-			<section>
-				<h4>The web application is displayed on screens that vary greatly in physical size</h4>
-				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. 
-			</section>
-		</section>
+			object could expose only those objects that are not available on window.screen.</p>
 		<dl title='interface Display' class='idl'>
 			<dt>readonly attribute unsigned int dotsPerInch </dt>
 			<dd>
@@ -877,87 +758,22 @@
 <!--***********************************************Connection************************************-->
 	<section>
 		<h2>Connection</h2>
-			  The Connection Interface can be used by applications to determine the network status of
+			  <p>The Connection Interface can be used by applications to determine the network status of
 	the device, the device's ability to connect to services over the current network, and
 	the quality of the existing network connection(s). This API could specify a lot more information
 	than it does. Attempts have been made to limit the specification to datum that, according to the
-	Device API WG, have highly probable use cases.
+	Device API WG, have highly probable use cases.</p>
 	
-	For a more extensive sample of the kinds of connection/network related information that could
+	<p>For a more extensive sample of the kinds of connection/network related information that could
 	be exposed, see the <a href='http://software.intel.com/en-us/articles/moblin-platform-awareness-service/'>
 		Moblin Platform Awareness Service</a>. See also the 
 		<a href='http://bondi.omtp.org/1.0/apis/vocabulary.htm'>BONDI 1.0 vocabulary</a>
-		and	[[DCONTOLOGY]].
+		and	[[DCONTOLOGY]].</p>
 		
-	The range of information that could be provided by this API will continue to change
+	<p>The range of information that could be provided by this API will continue to change
 	as network technology evolves and paradigm shifts expose use cases for additional information 
-	and events. 
+	and events. </p>
 
-		<section>
-			<h3>Requirements</h3>
-				<ul>
-					<li>A conforming implementation MUST provide a method to detect the technology
-					that a network bearer uses (e.g. 802.11a, CDMA, WiMAX, etc.)</li>
-					<li>A conforming implementation MUST provide a method to detect the quality
-					of the connection to the network bearer.</li>
-					<li>A conforming implementation MUST provide a method to detect whether a 
-					specified service is available. This method SHOULD be asynchronous.</li>
-					<li>A conforming implementation MUST provide a events about the availability of
-					a specified service.</li>
-					<li>A conforming implementation MUST provide a method to detect the quality of 
-					the connection to a specified service.</li>
-					<li>A conforming implementation MUST provide a method to detect whether the device
-					currently has a valid network connection. This method SHOULD be synchronous.</li>
-					<li>A conforming implementation MUST provide a method to detect changes in the 
-					devices network status (e.g. radio turned on or signal no longer available).</li>				
-					<li>A conforming implementation MUST provide information about the current network
-					bearer.</li>
-					<li>A conforming implementation MAY provide information about the default network
-					bearer.</li>
-					<li>A conforming implementation MAY provide information about the preferred network
-					bearer.</li>
-					<li>A conforming implementation MAY provide a method to change the current network
-					bearer.</li>
-					<li>A conforming implementation SHOULD provide a method to detect whether a device
-					that is using a cellular network is currently roaming.</li>
-					<li>A conforming implementation MAY provide a method to detect geolocation based
-					on cell tower triangulation calculations.</li>
-					<li>A conforming implementation SHOULD provide a method to detect the ID of the
-					current network bearer.</li>
-					<li>A conforming implementation SHOULD provide a method to detect the type of
-					encryption in use by a network bearer.</li>
-					<li>A conforming implementation SHOULD provide a method to detect the operator,
-					MMC, and MNC of a PLM Network. </li>
-					<li>A conforming implementation SHOULD provide IP Address Table change events.</li>
-					<li>A conforming implementation SHOULD provide Route Table change events.</li>
-					<li>A conforming implementation MUST provide connected events.</li>
-					<li>A conforming implementation MUST provide disconnected events.</li>
-				</ul>
-		</section>
-		<section>
-			<h3>Use-Cases</h3>
-			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.
-			<section>
-				<h4>User accesses web content based on type and quality of network connection.</h4>
-				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.
-			</section>
-			<section>
-				<h4>Web applications use connection context to provide users seamless access to localized services.</h4>
-				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.
-			</section>
-		</section>
 		<dl title='[NoInterfaceObject] interface Connection' class='idl'>
 			<dt>readonly attribute NetworkBearer currentNetworkBearer</dt>
 			<dd>
@@ -1767,39 +1583,6 @@
 		might have a thermometer that reports engine temperature, one that reports outside temperature
 		one that reports the ambient temperature in the car, and another that reports the temperature
 		of the CPU or other component on the device. 
-		<section>
-			<h2>Requirements</h2>
-				<ul>
-					<li/>A conforming implementation SHOULD provide the ability to list temperature
-					from multiple thermometers.
-					<li/>A conforming implementation SHOULD provide a method to detect the thermal
-					target of a thermometer.
-					<li/>A conforming implementation MAY provide a method to detect the ID of the 
-					thermometer.
-					<li/>A conforming implementation MUST provide a method to detect temperature.
-					<li/>A conforming implementation SHOULD provide a method to monitor temperature 
-					changes based on thresholds.
-				</ul>
-		</section>
-		<section>
-			<h2>Use-Cases</h2>
-			<section>
-				<h2>Application can throttle activity based on device temperature.</h2>
-				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".
-			</section>
-			<section>
-				<h2>A weather monitoring application uses temperature data from automobile temperature sensors.</h2>
-				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.
-			</section>
-		</section>
 		<dl title='[NoInterfaceObject] interface Thermal' class='idl'>
 			<dt>readonly attribute sequence &lt;Thermometer&gt; thermometers</dt>
 			<dd>
@@ -2034,36 +1817,6 @@
 			This spec uses terminology found in the 
 		<a href="http://en.wikipedia.org/wiki/Comparison_of_audio_codecs">
 		Wikipedia Comparison of Audio Codecs</a>
-		<section>
-			<h2>Use-Cases</h2>
-			<section>
-				<h2>Application sound themes</h2>
-				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.
-			</section>
-
-			<section>
-				<h2>Recording</h2>
-				A outdoors recording application may take advantage of
-				multiple microphones attached to a device in order to record audio
-				from several sources and spcial orientations at simultaneously.
-			</section>
-		</section>
-		<section>
-			<h2>Requirements</h2>
-			<ul>
-				<li/>A conforming implementation MUST provide a list of audio codecs
-				available on the device
-				<li/>A conforming implementation MUST provide a list of audio output
-					devices (speakers etc)
-				<li/>A conforming implementation MUST provide a list of audio input
-					devices (microphones, software)
-				<li/>A conforming implementation SHOULD provide audio architecture
-			 information.
-				<li/>A conforming implementation MAY xyz
-			</ul>
-		</section>
 		<dl title='[NoInterfaceObject] interface Audio' class='idl'>
 			<dt>readonly attribute AudioArch arch</dt>
 			<dd>
@@ -2200,34 +1953,7 @@
 		<a href="http://en.wikipedia.org/wiki/Comparison_of_video_codecs">
 		Wikipedia Comparison of Video Codecs</a>
 
-		<section>
-		<h3>Use-Cases</h3>
-			<section>
-				<h4>Encoding video on the device : app requirments and user experience</h4>
-				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.
-			</section>
-			<section>
-				<h4>Encoding video on the device : local vs cloud</h4>
-				An application may intelligently split up the work of encoding
-				video between the local device, based on its capabilites, and a web service
-				in the cloud that encodes video. This may provide for more efficient 
-				compute and network resource utilization.
-			</section>
-		</section>
 
-		<section>
-			<h3>Requirements</h3>
-			<ul>
-				<li>A conforming implementation MUST provide a list of codecs available</li>
-				on the device.
-				<li>A conforming implementation SHOULD provide video architecture</li>
-			 	information.
-				<li>A conforming implementation MAY (TODO)</li>
-			</ul>
-		</section>
 		<dl title='[NoInterfaceObject] interface Video' class='idl'>
 
 			<dt>readonly attribute VideoArch archInfo</dt>
@@ -2331,57 +2057,6 @@
 		<h2>Input</h2>
 		The Input API specification is based on the Moblin <a href='http://software.intel.com/en-us/articles/moblin-platform-awareness-service/'>
 		Platform Awareness Service</a> API.
-		<section>
-			<h3>Requirements</h3>
-				<ul>
-					<li>A conforming implementation MUST provide information about the presence of a touch screen.</li>
-					<li>A conforming implementation MUST provide information about the existence of mouse hover events.</li>
-					<li>A conforming implementation SHOULD provide information about the presence of a 
-					screen that supports multi-touch.</li>
-					<li>A conforming implementation SHOULD provide information about presence of a physical
-					keyboard.</li>
-					<li>A conforming implementation SHOULD provide information about the size of the 
-					keyboard (e.g. whether it is a thumb keyboard).</li>
-					<li>A conforming implementation MAY allow an application to detect whether an 
-					on-screen keyboard is visible.</li>
-					<li>A conforming implementation MAY allow an application to monitor when an on-screen
-					keyboard appears and disappears.</li>
-					<li>A conforming implementation MAY provide a method for applications to monitor the
-					attachment and detachement of physical pointing devices.</li>
-					<li>A conforming implementation MAY provide a method for applications to monitor the
-					attachment and detachement of physical keyboard devices.</li>
-				</ul>
-		</section>
-		<section>
-			<h3>Use-Cases</h3>
-			<section>
-				<h4>Application adapts to touch screen device with no external pointer</h4>
-				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 
-				accomodate for finger navigation.
-			</section>
-			<section>
-				<h4>Application adapts to device with no external keyboard</h4>
-				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.
-			</section>
-			<section>
-				<h4>Application detects the presence of mouse hover events</h4>
-				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.
-			</section>
-		</section>
 		  <dl title='interface Input' class='idl'>
 			<dt>readonly attribute boolean hasTouchScreen</dt>
 			<dd>
@@ -2544,8 +2219,335 @@
 		</section>
 	</section>
 	
-<!--*************************************Input***************************************************-->
-	
+<!--************************************* Requirements ***************************************************-->
+    <section class="informative appendix">
+      <h2>Requirements</h2>
+      <section>
+        <h3>Power</h3>
+				<ul>
+					<li>A conforming implementation MUST provide a method to retrieve one-shot power source information. </li>
+					<li>A conforming implementation MUST provide a method to retrieve one-shot power remaining information. </li>
+					<li>A conforming implementation SHOULD provide a power source change events. </li>
+					<li>A conforming implementation SHOULD provide a power level change events. </li>
+					<li>A conforming implementation SHOULD provide power level change events based on thresholds. </li>
+				</ul>
+      </section>
+      <section>
+        <h3>CPU</h3>
+        <ul>
+          <li>A conforming implementation MUST provide a method to retrieve information about
+          the number of concurrent threads that can run on the CPU.</li>
+          <li>A conforming implementation MUST provide a method to retrieve information about
+          the CPU utilization.</li>
+          <li>A conforming implementation SHOULD provide a method to retrieve information about
+          the current CPU frequency.</li>
+          <li>A conforming implementation SHOULD provide a method to retrieve information about
+          the maximum CPU frequency.</li>
+          <li>A conforming implementation SHOULD provide a method to retrieve information about
+          the CPU brand.</li>
+          <li>A conforming implementation MAY provide a methods to retrieve additional information about
+          the CPU.</li>
+        </ul>
+      </section>
+      <section>
+        <h3>Display</h3>
+				<ul>
+					<li>A conforming implementation SHOULD provide information about the dots-per-inch (DPI) of the display.</li>
+					<li>A conforming implementation SHOULD provide a method to retrieve one-shot screen blank information.</li>
+					<li>A conforming implementation SHOULD provide screen blank events.</li>
+					<li>A conforming implementation MUST provide one-shot display orientation information.</li>
+					<li>A conforming implementation MUST provide display orientation change events.</li>
+					<li>A conforming implementation MUST provide one-shot display brightness information.</li>
+					<li>A conforming implementation MUST provide display brightness change events.</li>
+					<li>A conforming implementation MAY provide information and events about external displays.</li>
+					<li>A conforming implementation MAY provide events about display color depth.</li>
+					<li>A conforming implementation MAY provide information and events about display device refresh rate.</li>
+				</ul>
+      </section>
+      <section>
+        <h3>Connection</h3>
+        <ul>
+          <li> A conforming implementation <em title="must" class="rfc2119">must</em> provide a method to detect the technology that a network bearer uses (e.g. 802.11a, CDMA, WiMAX, etc.)</li>
+          <li>A conforming implementation <em title="must" class="rfc2119">must</em> provide a method to detect the quality of the connection to the network bearer.</li>
+          <li>A conforming implementation <em title="must" class="rfc2119">must</em> provide a method to detect whether a specified service is available. This method <em title="should" class="rfc2119">should</em> be asynchronous.</li>
+          <li>A conforming implementation <em title="must" class="rfc2119">must</em> provide a events about the availability of a specified service.</li>
+          <li>A conforming implementation <em title="must" class="rfc2119">must</em> provide a method to detect the quality of the connection to a specified service.</li>
+          <li>A conforming implementation <em title="must" class="rfc2119">must</em> provide a method to detect whether the device currently has a valid network connection. This method <em title="should" class="rfc2119">should</em> be synchronous.</li>
+          <li>A conforming implementation <em title="must" class="rfc2119">must</em> provide a method to detect changes in the devices network status (e.g. radio turned on or signal no longer available).</li>
+          <li>A conforming implementation <em title="must" class="rfc2119">must</em> provide information about the current network bearer.</li>
+          <li>A conforming implementation <em title="may" class="rfc2119">may</em> provide information about the default network bearer.</li>
+          <li>A conforming implementation <em title="may" class="rfc2119">may</em> provide information about the preferred network bearer.</li>
+          <li>A conforming implementation <em title="may" class="rfc2119">may</em> provide a method to change the current network bearer.</li>
+          <li>A conforming implementation <em title="should" class="rfc2119">should</em> provide a method to detect whether a device that is using a cellular network is currently roaming.</li>
+          <li>A conforming implementation <em title="may" class="rfc2119">may</em> provide a method to detect geolocation based on cell tower triangulation calculations.</li>
+          <li>A conforming implementation <em title="should" class="rfc2119">should</em> provide a method to detect the ID of the current network bearer.</li>
+          <li>A conforming implementation <em title="should" class="rfc2119">should</em> provide a method to detect the type of encryption in use by a network bearer.</li>
+          <li>A conforming implementation <em title="should" class="rfc2119">should</em> provide a method to detect the operator, MMC, and MNC of a PLM Network.</li>
+          <li>A conforming implementation <em title="should" class="rfc2119">should</em> provide IP Address Table change events.</li>
+          <li>A conforming implementation <em title="should" class="rfc2119">should</em> provide Route Table change events.</li>
+          <li>A conforming implementation <em title="must" class="rfc2119">must</em> provide connected events.</li>
+          <li>A conforming implementation <em title="must" class="rfc2119">must</em> provide disconnected events.</li>
+          
+        </ul>
+      </section>
+      <section>
+        <h3>Thermal</h3>
+				<ul>
+					<li/>A conforming implementation SHOULD provide the ability to list temperature
+					from multiple thermometers.
+					<li/>A conforming implementation SHOULD provide a method to detect the thermal
+					target of a thermometer.
+					<li/>A conforming implementation MAY provide a method to detect the ID of the 
+					thermometer.
+					<li/>A conforming implementation MUST provide a method to detect temperature.
+					<li/>A conforming implementation SHOULD provide a method to monitor temperature 
+					changes based on thresholds.
+				</ul>
+      </section>
+      <section>
+        <h3>Audio</h3>
+        <ul>
+          <li>A conforming implementation MUST provide a list of audio codecs
+          available on the device</li>
+          <li>A conforming implementation MUST provide a list of audio output
+					devices (speakers etc)</li>
+          <li>A conforming implementation MUST provide a list of audio input
+					devices (microphones, software)</li>
+          <li>A conforming implementation SHOULD provide audio architecture
+          information.</li>
+          <li>A conforming implementation MAY xyz</li>
+        </ul>
+      </section>
+      <section>
+        <h3>Video</h3>
+        <ul>
+          <li>A conforming implementation MUST provide a list of codecs available</li>
+          on the device.
+          <li>A conforming implementation SHOULD provide video architecture</li>
+          information.
+          <li>A conforming implementation MAY (TODO)</li>
+        </ul>
+      </section>
+      <section>
+        <h3>Ambient Light Sensor</h3>
+      </section>
+      <section>
+        <h3>Movement</h3>
+      </section>
+      <section>
+        <h3>Storage</h3>
+      </section>
+      <section>
+        <h3>Input</h3>
+				<ul>
+					<li>A conforming implementation MUST provide information about the presence of a touch screen.</li>
+					<li>A conforming implementation MUST provide information about the existence of mouse hover events.</li>
+					<li>A conforming implementation SHOULD provide information about the presence of a 
+					screen that supports multi-touch.</li>
+					<li>A conforming implementation SHOULD provide information about presence of a physical
+					keyboard.</li>
+					<li>A conforming implementation SHOULD provide information about the size of the 
+					keyboard (e.g. whether it is a thumb keyboard).</li>
+					<li>A conforming implementation MAY allow an application to detect whether an 
+					on-screen keyboard is visible.</li>
+					<li>A conforming implementation MAY allow an application to monitor when an on-screen
+					keyboard appears and disappears.</li>
+					<li>A conforming implementation MAY provide a method for applications to monitor the
+					attachment and detachement of physical pointing devices.</li>
+					<li>A conforming implementation MAY provide a method for applications to monitor the
+					attachment and detachement of physical keyboard devices.</li>
+				</ul>
+      </section>
+    </section>
+
+<!--************************************* Use Cases ***************************************************-->
+
+    <section class="informative appendix">
+      <h2>Use Cases</h2>
+      <section>
+        <h3>Power</h3>
+        <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>
+        <h3>CPU</h3>
+        <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>
+        <h3>Display</h3>
+        <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>
+        <h3>Connection</h3>
+        <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>
+        <h3>Thermal</h3>
+        <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>
+        <h3>Audio</h3>
+        <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 spcial orientations at simultaneously.</dd>
+        </dl>
+      </section>
+      <section>
+        <h3>Video</h3>
+        <dl>
+          <dt>Encoding video on the device : app requirments 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 capabilites, 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>
+        <h3>Video</h3>
+        <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 
+          accomodate 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>
+
+    <!--************************************* Acks ***************************************************-->
+      
     <section class='appendix'>
       <h2>Acknowledgements</h2>
       <p>

Received on Tuesday, 24 November 2009 12:27:07 UTC