<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.meego.com/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.meego.com/index.php?title=Special:Contributions/Klaakso&amp;feed=atom&amp;limit=50&amp;target=Klaakso&amp;year=&amp;month=</id>
		<title>MeeGo wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.meego.com/index.php?title=Special:Contributions/Klaakso&amp;feed=atom&amp;limit=50&amp;target=Klaakso&amp;year=&amp;month="/>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Special:Contributions/Klaakso"/>
		<updated>2013-05-25T00:38:00Z</updated>
		<subtitle>From MeeGo wiki</subtitle>
		<generator>MediaWiki 1.16.2</generator>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2011-02-03T08:49:58Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Software Coverage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.17) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.36.&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
* oFono - Change Radio Access Technology&lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://meego.gitorious.org/meego-quality-assurance/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]]&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono.&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* dbus-devel&lt;br /&gt;
* dbus-glib-devel&lt;br /&gt;
* glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-ofono-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution (Not supported in test cases 1-6, 27-31, 45 and 46.)&lt;br /&gt;
|-&lt;br /&gt;
|| --cleanup || Clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Change Radio Access Technology   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuration file examples ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
NOTE: Test tries to load configuration file from /etc/blts/ by default if no specific path is given.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -C /usr/share/blts-ofono-tests/blts-ofono.cnf -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|-&lt;br /&gt;
|| 0.3 || 17-Dec-2010 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updates to document format and improved instructions&lt;br /&gt;
|-&lt;br /&gt;
|| 0.4 || 21-Jan-2011 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updates to argument switches&lt;br /&gt;
|-&lt;br /&gt;
|| 0.5 || 03-Feb-2011 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updated version numbers and removed obsolete at modem coverage&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2011-02-03T08:47:18Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Change History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.17) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.36.&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
* oFono - Change Radio Access Technology&lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]]&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono.&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* dbus-devel&lt;br /&gt;
* dbus-glib-devel&lt;br /&gt;
* glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-ofono-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution (Not supported in test cases 1-6, 27-31, 45 and 46.)&lt;br /&gt;
|-&lt;br /&gt;
|| --cleanup || Clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Change Radio Access Technology   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuration file examples ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
NOTE: Test tries to load configuration file from /etc/blts/ by default if no specific path is given.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -C /usr/share/blts-ofono-tests/blts-ofono.cnf -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|-&lt;br /&gt;
|| 0.3 || 17-Dec-2010 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updates to document format and improved instructions&lt;br /&gt;
|-&lt;br /&gt;
|| 0.4 || 21-Jan-2011 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updates to argument switches&lt;br /&gt;
|-&lt;br /&gt;
|| 0.5 || 03-Feb-2011 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updated version numbers and removed obsolete at modem coverage&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2011-02-03T08:45:48Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Software Coverage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.17) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.36.&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
* oFono - Change Radio Access Technology&lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]]&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono.&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* dbus-devel&lt;br /&gt;
* dbus-glib-devel&lt;br /&gt;
* glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-ofono-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution (Not supported in test cases 1-6, 27-31, 45 and 46.)&lt;br /&gt;
|-&lt;br /&gt;
|| --cleanup || Clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Change Radio Access Technology   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuration file examples ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
NOTE: Test tries to load configuration file from /etc/blts/ by default if no specific path is given.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -C /usr/share/blts-ofono-tests/blts-ofono.cnf -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|-&lt;br /&gt;
|| 0.3 || 17-Dec-2010 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updates to document format and improved instructions&lt;br /&gt;
|-&lt;br /&gt;
|| 0.4 || 21-Jan-2011 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updates to argument switches&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2011-02-03T08:44:43Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.17) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.36.&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
* oFono - Change Radio Access Technology&lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]] &lt;br /&gt;
&lt;br /&gt;
Current oFono AT modem API coverage for oFono tests:&lt;br /&gt;
* oFono-coverage-at-modem.ods&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono.&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* dbus-devel&lt;br /&gt;
* dbus-glib-devel&lt;br /&gt;
* glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-ofono-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution (Not supported in test cases 1-6, 27-31, 45 and 46.)&lt;br /&gt;
|-&lt;br /&gt;
|| --cleanup || Clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Change Radio Access Technology   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuration file examples ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
NOTE: Test tries to load configuration file from /etc/blts/ by default if no specific path is given.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -C /usr/share/blts-ofono-tests/blts-ofono.cnf -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|-&lt;br /&gt;
|| 0.3 || 17-Dec-2010 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updates to document format and improved instructions&lt;br /&gt;
|-&lt;br /&gt;
|| 0.4 || 21-Jan-2011 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updates to argument switches&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2011-01-21T12:23:44Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Change History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.14) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.33.  &lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]] &lt;br /&gt;
&lt;br /&gt;
Current oFono AT modem API coverage for oFono tests:&lt;br /&gt;
* oFono-coverage-at-modem.ods&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* dbus-devel&lt;br /&gt;
* dbus-glib-devel&lt;br /&gt;
* glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-ofono-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution (Not supported in test cases 1-6, 27-31, 45 and 46.)&lt;br /&gt;
|-&lt;br /&gt;
|| --cleanup || Clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuration file examples ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
NOTE: Test tries to load configuration file from /etc/blts/ by default if no specific path is given.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -C /usr/share/blts-ofono-tests/blts-ofono.cnf -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|-&lt;br /&gt;
|| 0.3 || 17-Dec-2010 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updates to document format and improved instructions&lt;br /&gt;
|-&lt;br /&gt;
|| 0.4 || 21-Jan-2011 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updates to argument switches&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2011-01-21T12:23:25Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Change History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.14) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.33.  &lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]] &lt;br /&gt;
&lt;br /&gt;
Current oFono AT modem API coverage for oFono tests:&lt;br /&gt;
* oFono-coverage-at-modem.ods&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* dbus-devel&lt;br /&gt;
* dbus-glib-devel&lt;br /&gt;
* glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-ofono-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution (Not supported in test cases 1-6, 27-31, 45 and 46.)&lt;br /&gt;
|-&lt;br /&gt;
|| --cleanup || Clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuration file examples ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
NOTE: Test tries to load configuration file from /etc/blts/ by default if no specific path is given.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -C /usr/share/blts-ofono-tests/blts-ofono.cnf -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|-&lt;br /&gt;
|| 0.3 || 17-Dec-2010 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updates to document format and improved instructions&lt;br /&gt;
|}&lt;br /&gt;
|| 0.4 || 21-Jan-2011 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updates to argument switches&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2011-01-21T12:22:26Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Test case arguments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.14) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.33.  &lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]] &lt;br /&gt;
&lt;br /&gt;
Current oFono AT modem API coverage for oFono tests:&lt;br /&gt;
* oFono-coverage-at-modem.ods&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* dbus-devel&lt;br /&gt;
* dbus-glib-devel&lt;br /&gt;
* glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-ofono-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution (Not supported in test cases 1-6, 27-31, 45 and 46.)&lt;br /&gt;
|-&lt;br /&gt;
|| --cleanup || Clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuration file examples ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
NOTE: Test tries to load configuration file from /etc/blts/ by default if no specific path is given.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -C /usr/share/blts-ofono-tests/blts-ofono.cnf -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|-&lt;br /&gt;
|| 0.3 || 17-Dec-2010 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updates to document format and improved instructions&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/Building_BLTS_Packages</id>
		<title>Quality/TestSuite/Building BLTS Packages</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/Building_BLTS_Packages"/>
				<updated>2010-12-17T13:52:51Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The source package includes the [[../BLTS Pack Script | pack.sh]] script, which is used for building RPM and Debian packages and source tar packages. To build an RPM package with the script, execute this command in the top level source directory of asset:&lt;br /&gt;
&lt;br /&gt;
 ./pack.sh -r&lt;br /&gt;
&lt;br /&gt;
To get help about the packaging script, execute&lt;br /&gt;
&lt;br /&gt;
 ./pack.sh -h&lt;br /&gt;
&lt;br /&gt;
The asset can also be built manually by executing:&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/Building_BLTS_Packages</id>
		<title>Quality/TestSuite/Building BLTS Packages</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/Building_BLTS_Packages"/>
				<updated>2010-12-17T13:46:43Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The source package includes the [[../BLTS Pack Script | pack.sh]] script, which is used for building RPM and Debian packages and source tar packages. To build an RPM package with the script, execute this command in the top level source directory of test asset:&lt;br /&gt;
&lt;br /&gt;
 ./pack.sh -r&lt;br /&gt;
&lt;br /&gt;
To get help about the packaging script, execute&lt;br /&gt;
&lt;br /&gt;
 ./pack.sh -h&lt;br /&gt;
&lt;br /&gt;
The asset can also be built manually by executing:&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2010-12-17T09:01:40Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Change History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.14) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.33.  &lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]] &lt;br /&gt;
&lt;br /&gt;
Current oFono AT modem API coverage for oFono tests:&lt;br /&gt;
* oFono-coverage-at-modem.ods&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* dbus-devel&lt;br /&gt;
* dbus-glib-devel&lt;br /&gt;
* glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-ofono-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution     &lt;br /&gt;
|-&lt;br /&gt;
|| --dontcleanup || Don't clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuration file examples ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
NOTE: Test tries to load configuration file from /etc/blts/ by default if no specific path is given.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -C /usr/share/blts-ofono-tests/blts-ofono.cnf -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|-&lt;br /&gt;
|| 0.3 || 17-Dec-2010 || [mailto:kari.laakso@digia.com Kari Laakso] || Draft || Updates to document format and improved instructions&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2010-12-17T09:00:38Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Configuration file examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.14) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.33.  &lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]] &lt;br /&gt;
&lt;br /&gt;
Current oFono AT modem API coverage for oFono tests:&lt;br /&gt;
* oFono-coverage-at-modem.ods&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* dbus-devel&lt;br /&gt;
* dbus-glib-devel&lt;br /&gt;
* glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-ofono-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution     &lt;br /&gt;
|-&lt;br /&gt;
|| --dontcleanup || Don't clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuration file examples ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
NOTE: Test tries to load configuration file from /etc/blts/ by default if no specific path is given.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -C /usr/share/blts-ofono-tests/blts-ofono.cnf -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/MCTS</id>
		<title>Quality/TestSuite/MCTS</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/MCTS"/>
				<updated>2010-12-17T08:57:31Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MeeGo Core Test Suite (MCTS)==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
* MCTS Development Guideline [[/MCTS_Development_Guideline | MCTS Development Guideline]] &amp;lt;br&amp;gt;&lt;br /&gt;
* Discussion about [[/MCTS_API_analysis | API analysis]] for MCTS functional test design&lt;br /&gt;
* Interested in contributing to MCTS ? Look at [[/MCTS_Start_Contributing | How to start contributing]]&lt;br /&gt;
&lt;br /&gt;
=== Test Suite Code &amp;amp; API Coverage Analysis Repositories ===&lt;br /&gt;
You can get the code here: http://gitorious.org/qa-tools/mcts&amp;lt;br&amp;gt;&lt;br /&gt;
You can get the coverage analysis documents here: http://gitorious.org/qa-tools/mcts-coverage&lt;br /&gt;
&lt;br /&gt;
=== MCTS Releases ===&lt;br /&gt;
MCTS is released typically in a biweekly cycle. The release process&lt;br /&gt;
is described in [[/MCTS_Release_Process | MCTS Release Process.]]&lt;br /&gt;
&lt;br /&gt;
You can find information about the completed and planned MCTS releases from [[/MCTS_Releases | MCTS Releases.]]&lt;br /&gt;
&lt;br /&gt;
=== Test Suite Status For Middleware (New) ===&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!| '''Domain'''&lt;br /&gt;
!| '''Component'''&lt;br /&gt;
!| [http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan Test Coverage]&lt;br /&gt;
!| '''% Ready'''&lt;br /&gt;
!| '''Auto&amp;amp;nbsp;%'''&lt;br /&gt;
!| [http://gitorious.org/qa-tools/mcts MCTS package]&lt;br /&gt;
!| '''Maintainer'''&lt;br /&gt;
!| '''Target Due'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;6&amp;quot; | Security&lt;br /&gt;
&lt;br /&gt;
| Accounts || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Single Sign-On || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Integrity Protection Framework || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Certificate Manager || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SW Distribution Security || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Access Control Framework || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;4&amp;quot; | System&lt;br /&gt;
&lt;br /&gt;
| System Control || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Resource Policy || Average || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Context Framework || Through || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Sensor Framework || Average || || || mcts-blts-sensor-frontend mcts-blts-sensor-plugins || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Location&lt;br /&gt;
| [[../GeoClue Test Plan | Location Framework]] || light ||100% ||100% || mcts-geoclue-tests || [mailto:shaofeng.tang@intel.com Shaofeng Tang] ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;5&amp;quot; | PIM&lt;br /&gt;
&lt;br /&gt;
| Calendar Engine || Average || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Contacts Engine || Average || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Email Engine || Average || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Backup Framework || Average || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Synchronization Framework || Average || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;3&amp;quot; | Multimedia&lt;br /&gt;
&lt;br /&gt;
| Gstreamer || light || || || mcts-mwts-gstreamer mcts-mwts-gcamera || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../PulseAudio Test Plan | PulseAudio ]]|| light ||100% ||100% || mcts-pulseaudio-tests mcts-blts-alsa-core || [mailto:hao.h.chen@intel.com Hao Chen] || Dec. 17 for test plan&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| UPnP || light ||100% ||0% || mcts-gupnp-tests || [mailto:daniel.tao@intel.com Daniel Tao] ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;4&amp;quot;| Communications&lt;br /&gt;
| Telephony &amp;amp; IM || light || || || mcts-mwts-telepathy || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[/OFono Test Plan |Cellular Framework]] || Through ||100% ||36% || mcts-ofono-tests mcts-blts-ofono || [mailto:elva.fu@intel.com Elva Fu]||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[/ConnMan Test Plan | ConnMan]] || Through ||100% ||43% || mcts-connman-tests || [mailto:jeff.zheng@intel.com Jeff Zheng]  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[/MeeGo Bluez Test Plan |Bluetooth]] || Average ||100% ||16% || mcts-bluez-tests mcts-blts-bluetooth || [mailto:jingke.zhang@intel.com Jingke] ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;3&amp;quot; | Qt&lt;br /&gt;
| Qt || || || || mcts-mwts-network mcts-mwts-telepathy || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Qt WebKit || || || || N/A || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Qt Web Runtime || || || || N/A || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;9&amp;quot; | Qt Mobility&lt;br /&gt;
| QtM contacts || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM Location || || || || mcts-mwts-location || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM Messaging || || || || mcts-mwts-messaging || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM Publish &amp;amp; Subscribe || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM Sensors || || || || mcts-mwts-sensors || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM Service Framework || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM Versit || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM Multimedia || || || || mcts-mwts-multimedia || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM System Info || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;3&amp;quot; | [[../MeeGo_Graphics_Test_Plan | Graphics]]&lt;br /&gt;
| OpenGL ES || Average ||100% ||13% || mcts-qtgfx-tests mcts-blts-openles2-perf || [mailto:kui.zheng@intel.com Kui Zheng] ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Font Management || || || || N/A || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| X11 || Light ||100% ||100% || mcts-x-tests mcts-rendercheck-tests mcts-blts-fbdev || [mailto:kui.zheng@intel.com Kui Zheng] ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Data Management || Content Framework || Through || || || mcts-tracker-tests || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SW Management&lt;br /&gt;
| [[ Package_Manager | Package Management and Update]] || light || || || mcts-packagekit-tests || [mailto:huajun.li@intel.com Huajun Li] || .&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Kernel&lt;br /&gt;
&lt;br /&gt;
| Linux Kernel || || || || mcts-blts-usb mcts-blts-input-devices mcts-mwts-filesystem || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Released Middleware Test Asset Descriptions ===&lt;br /&gt;
[[../MWTS Asset Descriptions | Released Middleware Test Asset Descriptions]]&lt;br /&gt;
&lt;br /&gt;
=== Test Suite Status For OS Base===&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Category&lt;br /&gt;
!|Component&lt;br /&gt;
!|Test Coverage&lt;br /&gt;
!|Planned #&lt;br /&gt;
!|Ready #&lt;br /&gt;
!|Auto %&lt;br /&gt;
!|Major Contacts&lt;br /&gt;
!|Due&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;17&amp;quot; | OS Base|| [[../Audio Driver Test Specification | Audio Driver]] || '''Light''' ||31||31||0% || [mailto:EXT-jussi.saavalainen@nokia.com Jussi Saavalainen]||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Bluetooth Driver Test Specification | Bluetooth Driver]] || '''Light''' || 23 || 23 || 0% ||[mailto:EXT-jussi.saavalainen@nokia.com Jussi Saavalainen]||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Camera Driver Test Specification | Camera Driver]] || '''Light''' || 12 || 12 || 0% ||[mailto:EXT-jussi.saavalainen@nokia.com Jussi Saavalainen]||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Functional Key Driver  Test Plan | Functional Key Driver]] || '''Open''' || tbd || || || || tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Framebuffer Test Specification | Framebuffer Driver]] || '''Light''' || 22  || 11 || 0% || [mailto:mika.niinisto@digia.com Mika Niinistö] ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../GPS Driver Test Plan | GPS Driver]] || '''Light''' ||  ||  ||  ||Jussi Saavalainen||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Input Devices Driver Test Specification | Input Devices Driver]] || '''Light''' || 3 || 3 || 0%  ||  ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../oFono Modem API Test Specification | Modem Driver]] || '''Light''' || N/A || N/A || N/A ||  ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../SD-MMC Driver Test Plan | SD/MMC Driver]] || '''Light''' || 33 || 33 || 0% ||Jussi Saavalainen ||Sep.3.2010&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Sensor Test Front-end | Sensor Driver]] || '''N/A''' || N/A  || N/A  || N/A || Pasi Matilainen ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Touch Screen Driver Test Plan | Touch Screen Driver]] || '''Light''' ||  ||  ||  || Juhani Taipale||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Touchpad Driver Test Plan | Touchpad Driver]] || '''Open''' || tbd ||  ||  || ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../USB Driver Test Specification | USB Driver]] || '''Light''' || 35 || 35 || 0% ||[mailto:EXT-jussi.saavalainen@nokia.com Jussi Saavalainen] ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Video Playback Driver Test Specification | Video Playback Driver]] || '''Average''' || 6 || 6 || 0% ||[mailto:kimmo.myllyvirta@digia.com Kimmo Myllyvirta] ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Watchdog Driver Test Specification | Watchdog Driver]] || '''Average''' || 3  || 3 || 0% || [mailto:kimmo.myllyvirta@digia.com Kimmo Myllyvirta] ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../WIFI Driver Test Specification | WIFI Driver]] || '''Light''' || 10  || 10 || 0% ||Jussi Saavalainen ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../X11 Test Specification | X11]] || '''Light''' || 11  || 11 || 0% || [mailto:kimmo.myllyvirta@digia.com Kimmo Myllyvirta] ||tbd&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2010-12-16T14:21:34Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Test case arguments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.14) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.33.  &lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]] &lt;br /&gt;
&lt;br /&gt;
Current oFono AT modem API coverage for oFono tests:&lt;br /&gt;
* oFono-coverage-at-modem.ods&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* dbus-devel&lt;br /&gt;
* dbus-glib-devel&lt;br /&gt;
* glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-ofono-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution     &lt;br /&gt;
|-&lt;br /&gt;
|| --dontcleanup || Don't clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuration file examples ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456 -C /usr/share/blts-ofono-tests/blts-ofono.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2010-12-16T14:18:33Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Test asset specific instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.14) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.33.  &lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]] &lt;br /&gt;
&lt;br /&gt;
Current oFono AT modem API coverage for oFono tests:&lt;br /&gt;
* oFono-coverage-at-modem.ods&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* dbus-devel&lt;br /&gt;
* dbus-glib-devel&lt;br /&gt;
* glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-ofono-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Switch &lt;br /&gt;
!|Function&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -l  || Used log file, Used log file, default blts_ofono_log &lt;br /&gt;
|-&lt;br /&gt;
|| -e || Execute single or multiple selected tests, for example -e 1,4,5. &lt;br /&gt;
|-&lt;br /&gt;
|| -en || Execute test by name, for example -en &amp;quot;My test X&amp;quot;  &lt;br /&gt;
|-&lt;br /&gt;
|| -s || Show list of all tests &lt;br /&gt;
|-&lt;br /&gt;
|| -C || Used configuration file and path, for example /usr/share/blts-ofono-tests/blts-ofono.cnf &lt;br /&gt;
|-&lt;br /&gt;
|| -? || Help message  &lt;br /&gt;
|-&lt;br /&gt;
|| -xml, -axml || Create result XML. -axml appends results to an existing XML file. &lt;br /&gt;
|-&lt;br /&gt;
|| -auto || Silent logging for test automation. Only the results are printed to stdout. &lt;br /&gt;
|- &lt;br /&gt;
|| -v || Verbose logging (default) &lt;br /&gt;
|- &lt;br /&gt;
|| -vv || Even more verbose logging &lt;br /&gt;
|-  &lt;br /&gt;
!|Optional switch &lt;br /&gt;
!|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution     &lt;br /&gt;
|-&lt;br /&gt;
|| --dontcleanup || Don't clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuration file examples ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456 -C /usr/share/blts-ofono-tests/blts-ofono.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2010-12-16T14:17:14Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* N900 specific */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.14) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.33.  &lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]] &lt;br /&gt;
&lt;br /&gt;
Current oFono AT modem API coverage for oFono tests:&lt;br /&gt;
* oFono-coverage-at-modem.ods&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* dbus-devel&lt;br /&gt;
* dbus-glib-devel&lt;br /&gt;
* glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
Compile blts-ofono-tests with corresponding environment&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ dpkg-buildpackge&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and install package to DUT. You'll need to have SIM card in DUT with correct pin number entered. Now you can execute tests from command prompt Execute from host end command line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ blts-ofono &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Switch &lt;br /&gt;
!|Function&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -l  || Used log file, Used log file, default blts_ofono_log &lt;br /&gt;
|-&lt;br /&gt;
|| -e || Execute single or multiple selected tests, for example -e 1,4,5. &lt;br /&gt;
|-&lt;br /&gt;
|| -en || Execute test by name, for example -en &amp;quot;My test X&amp;quot;  &lt;br /&gt;
|-&lt;br /&gt;
|| -s || Show list of all tests &lt;br /&gt;
|-&lt;br /&gt;
|| -C || Used configuration file and path, for example /usr/share/blts-ofono-tests/blts-ofono.cnf &lt;br /&gt;
|-&lt;br /&gt;
|| -? || Help message  &lt;br /&gt;
|-&lt;br /&gt;
|| -xml, -axml || Create result XML. -axml appends results to an existing XML file. &lt;br /&gt;
|-&lt;br /&gt;
|| -auto || Silent logging for test automation. Only the results are printed to stdout. &lt;br /&gt;
|- &lt;br /&gt;
|| -v || Verbose logging (default) &lt;br /&gt;
|- &lt;br /&gt;
|| -vv || Even more verbose logging &lt;br /&gt;
|-  &lt;br /&gt;
!|Optional switch &lt;br /&gt;
!|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution     &lt;br /&gt;
|-&lt;br /&gt;
|| --dontcleanup || Don't clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuration file examples ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456 -C /usr/share/blts-ofono-tests/blts-ofono.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2010-12-16T14:16:43Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Test cases with variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.14) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.33.  &lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]] &lt;br /&gt;
&lt;br /&gt;
Current oFono AT modem API coverage for oFono tests:&lt;br /&gt;
* oFono-coverage-at-modem.ods&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* dbus-devel&lt;br /&gt;
* dbus-glib-devel&lt;br /&gt;
* glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
Compile blts-ofono-tests with corresponding environment&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ dpkg-buildpackge&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and install package to DUT. You'll need to have SIM card in DUT with correct pin number entered. Now you can execute tests from command prompt Execute from host end command line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ blts-ofono &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Switch &lt;br /&gt;
!|Function&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -l  || Used log file, Used log file, default blts_ofono_log &lt;br /&gt;
|-&lt;br /&gt;
|| -e || Execute single or multiple selected tests, for example -e 1,4,5. &lt;br /&gt;
|-&lt;br /&gt;
|| -en || Execute test by name, for example -en &amp;quot;My test X&amp;quot;  &lt;br /&gt;
|-&lt;br /&gt;
|| -s || Show list of all tests &lt;br /&gt;
|-&lt;br /&gt;
|| -C || Used configuration file and path, for example /usr/share/blts-ofono-tests/blts-ofono.cnf &lt;br /&gt;
|-&lt;br /&gt;
|| -? || Help message  &lt;br /&gt;
|-&lt;br /&gt;
|| -xml, -axml || Create result XML. -axml appends results to an existing XML file. &lt;br /&gt;
|-&lt;br /&gt;
|| -auto || Silent logging for test automation. Only the results are printed to stdout. &lt;br /&gt;
|- &lt;br /&gt;
|| -v || Verbose logging (default) &lt;br /&gt;
|- &lt;br /&gt;
|| -vv || Even more verbose logging &lt;br /&gt;
|-  &lt;br /&gt;
!|Optional switch &lt;br /&gt;
!|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution     &lt;br /&gt;
|-&lt;br /&gt;
|| --dontcleanup || Don't clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuration file examples ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456 -C /usr/share/blts-ofono-tests/blts-ofono.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  N900 specific === &lt;br /&gt;
Before executing tests run &amp;lt;code&amp;gt;kill-telepathy&amp;lt;/code&amp;gt; and after executing run &amp;lt;code&amp;gt;enable-telepathy&amp;lt;/code&amp;gt; and boot device. &lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2010-12-16T14:15:23Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.14) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.33.  &lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]] &lt;br /&gt;
&lt;br /&gt;
Current oFono AT modem API coverage for oFono tests:&lt;br /&gt;
* oFono-coverage-at-modem.ods&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* dbus-devel&lt;br /&gt;
* dbus-glib-devel&lt;br /&gt;
* glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
Compile blts-ofono-tests with corresponding environment&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ dpkg-buildpackge&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and install package to DUT. You'll need to have SIM card in DUT with correct pin number entered. Now you can execute tests from command prompt Execute from host end command line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ blts-ofono &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Switch &lt;br /&gt;
!|Function&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -l  || Used log file, Used log file, default blts_ofono_log &lt;br /&gt;
|-&lt;br /&gt;
|| -e || Execute single or multiple selected tests, for example -e 1,4,5. &lt;br /&gt;
|-&lt;br /&gt;
|| -en || Execute test by name, for example -en &amp;quot;My test X&amp;quot;  &lt;br /&gt;
|-&lt;br /&gt;
|| -s || Show list of all tests &lt;br /&gt;
|-&lt;br /&gt;
|| -C || Used configuration file and path, for example /usr/share/blts-ofono-tests/blts-ofono.cnf &lt;br /&gt;
|-&lt;br /&gt;
|| -? || Help message  &lt;br /&gt;
|-&lt;br /&gt;
|| -xml, -axml || Create result XML. -axml appends results to an existing XML file. &lt;br /&gt;
|-&lt;br /&gt;
|| -auto || Silent logging for test automation. Only the results are printed to stdout. &lt;br /&gt;
|- &lt;br /&gt;
|| -v || Verbose logging (default) &lt;br /&gt;
|- &lt;br /&gt;
|| -vv || Even more verbose logging &lt;br /&gt;
|-  &lt;br /&gt;
!|Optional switch &lt;br /&gt;
!|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution     &lt;br /&gt;
|-&lt;br /&gt;
|| --dontcleanup || Don't clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Test cases with variables ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456 -C /usr/share/blts-ofono-tests/blts-ofono.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  N900 specific === &lt;br /&gt;
Before executing tests run &amp;lt;code&amp;gt;kill-telepathy&amp;lt;/code&amp;gt; and after executing run &amp;lt;code&amp;gt;enable-telepathy&amp;lt;/code&amp;gt; and boot device. &lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2010-12-16T14:12:37Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.14) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.33.  &lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]] &lt;br /&gt;
&lt;br /&gt;
Current oFono AT modem API coverage for oFono tests:&lt;br /&gt;
* oFono-coverage-at-modem.ods&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* dbus-devel&lt;br /&gt;
* dbus-glib-devel&lt;br /&gt;
* glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
===  Executing tests  === &lt;br /&gt;
&lt;br /&gt;
Compile blts-ofono-tests with corresponding environment&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ dpkg-buildpackge&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and install package to DUT. You'll need to have SIM card in DUT with correct pin number entered. Now you can execute tests from command prompt Execute from host end command line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ blts-ofono &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Switch &lt;br /&gt;
!|Function&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -l  || Used log file, Used log file, default blts_ofono_log &lt;br /&gt;
|-&lt;br /&gt;
|| -e || Execute single or multiple selected tests, for example -e 1,4,5. &lt;br /&gt;
|-&lt;br /&gt;
|| -en || Execute test by name, for example -en &amp;quot;My test X&amp;quot;  &lt;br /&gt;
|-&lt;br /&gt;
|| -s || Show list of all tests &lt;br /&gt;
|-&lt;br /&gt;
|| -C || Used configuration file and path, for example /usr/share/blts-ofono-tests/blts-ofono.cnf &lt;br /&gt;
|-&lt;br /&gt;
|| -? || Help message  &lt;br /&gt;
|-&lt;br /&gt;
|| -xml, -axml || Create result XML. -axml appends results to an existing XML file. &lt;br /&gt;
|-&lt;br /&gt;
|| -auto || Silent logging for test automation. Only the results are printed to stdout. &lt;br /&gt;
|- &lt;br /&gt;
|| -v || Verbose logging (default) &lt;br /&gt;
|- &lt;br /&gt;
|| -vv || Even more verbose logging &lt;br /&gt;
|-  &lt;br /&gt;
!|Optional switch &lt;br /&gt;
!|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution     &lt;br /&gt;
|-&lt;br /&gt;
|| --dontcleanup || Don't clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Test cases === &lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Test cases with variables ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456 -C /usr/share/blts-ofono-tests/blts-ofono.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  N900 specific === &lt;br /&gt;
Before executing tests run &amp;lt;code&amp;gt;kill-telepathy&amp;lt;/code&amp;gt; and after executing run &amp;lt;code&amp;gt;enable-telepathy&amp;lt;/code&amp;gt; and boot device. &lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2010-12-16T14:10:16Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.14) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.33.  &lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]] &lt;br /&gt;
&lt;br /&gt;
Current oFono AT modem API coverage for oFono tests:&lt;br /&gt;
* oFono-coverage-at-modem.ods&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up oFono ====&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting up phonesim ====&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
===  Executing tests  === &lt;br /&gt;
&lt;br /&gt;
Compile blts-ofono-tests with corresponding environment&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ dpkg-buildpackge&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and install package to DUT. You'll need to have SIM card in DUT with correct pin number entered. Now you can execute tests from command prompt Execute from host end command line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ blts-ofono &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Switch &lt;br /&gt;
!|Function&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -l  || Used log file, Used log file, default blts_ofono_log &lt;br /&gt;
|-&lt;br /&gt;
|| -e || Execute single or multiple selected tests, for example -e 1,4,5. &lt;br /&gt;
|-&lt;br /&gt;
|| -en || Execute test by name, for example -en &amp;quot;My test X&amp;quot;  &lt;br /&gt;
|-&lt;br /&gt;
|| -s || Show list of all tests &lt;br /&gt;
|-&lt;br /&gt;
|| -C || Used configuration file and path, for example /usr/share/blts-ofono-tests/blts-ofono.cnf &lt;br /&gt;
|-&lt;br /&gt;
|| -? || Help message  &lt;br /&gt;
|-&lt;br /&gt;
|| -xml, -axml || Create result XML. -axml appends results to an existing XML file. &lt;br /&gt;
|-&lt;br /&gt;
|| -auto || Silent logging for test automation. Only the results are printed to stdout. &lt;br /&gt;
|- &lt;br /&gt;
|| -v || Verbose logging (default) &lt;br /&gt;
|- &lt;br /&gt;
|| -vv || Even more verbose logging &lt;br /&gt;
|-  &lt;br /&gt;
!|Optional switch &lt;br /&gt;
!|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution     &lt;br /&gt;
|-&lt;br /&gt;
|| --dontcleanup || Don't clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Test cases === &lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Test cases with variables ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456 -C /usr/share/blts-ofono-tests/blts-ofono.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  N900 specific === &lt;br /&gt;
Before executing tests run &amp;lt;code&amp;gt;kill-telepathy&amp;lt;/code&amp;gt; and after executing run &amp;lt;code&amp;gt;enable-telepathy&amp;lt;/code&amp;gt; and boot device. &lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/MCTS</id>
		<title>Quality/TestSuite/MCTS</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/MCTS"/>
				<updated>2010-12-16T14:05:50Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Test Suite Status For OS Base */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MeeGo Core Test Suite (MCTS)==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
* MCTS Development Guideline [[/MCTS_Development_Guideline | MCTS Development Guideline]] &amp;lt;br&amp;gt;&lt;br /&gt;
* Discussion about [[/MCTS_API_analysis | API analysis]] for MCTS functional test design&lt;br /&gt;
* Interested in contributing to MCTS ? Look at [[/MCTS_Start_Contributing | How to start contributing]]&lt;br /&gt;
&lt;br /&gt;
=== Test Suite Code &amp;amp; API Coverage Analysis Repositories ===&lt;br /&gt;
You can get the code here: http://gitorious.org/qa-tools/mcts&amp;lt;br&amp;gt;&lt;br /&gt;
You can get the coverage analysis documents here: http://gitorious.org/qa-tools/mcts-coverage&lt;br /&gt;
&lt;br /&gt;
=== MCTS Releases ===&lt;br /&gt;
MCTS is released typically in a biweekly cycle. The release process&lt;br /&gt;
is described in [[/MCTS_Release_Process | MCTS Release Process.]]&lt;br /&gt;
&lt;br /&gt;
You can find information about the completed and planned MCTS releases from [[/MCTS_Releases | MCTS Releases.]]&lt;br /&gt;
&lt;br /&gt;
=== Test Suite Status For Middleware (New) ===&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!| '''Domain'''&lt;br /&gt;
!| '''Component'''&lt;br /&gt;
!| [http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan Test Coverage]&lt;br /&gt;
!| '''% Ready'''&lt;br /&gt;
!| '''Auto&amp;amp;nbsp;%'''&lt;br /&gt;
!| [http://gitorious.org/qa-tools/mcts MCTS package]&lt;br /&gt;
!| '''Maintainer'''&lt;br /&gt;
!| '''Target Due'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;6&amp;quot; | Security&lt;br /&gt;
&lt;br /&gt;
| Accounts || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Single Sign-On || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Integrity Protection Framework || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Certificate Manager || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SW Distribution Security || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Access Control Framework || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;4&amp;quot; | System&lt;br /&gt;
&lt;br /&gt;
| System Control || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Resource Policy || Average || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Context Framework || Through || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Sensor Framework || Average || || || mcts-blts-sensor-frontend mcts-blts-sensor-plugins || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Location&lt;br /&gt;
| [[../GeoClue Test Plan | Location Framework]] || light ||100% ||100% || mcts-geoclue-tests || [mailto:shaofeng.tang@intel.com Shaofeng Tang] ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;5&amp;quot; | PIM&lt;br /&gt;
&lt;br /&gt;
| Calendar Engine || Average || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Contacts Engine || Average || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Email Engine || Average || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Backup Framework || Average || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Synchronization Framework || Average || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;3&amp;quot; | Multimedia&lt;br /&gt;
&lt;br /&gt;
| Gstreamer || light || || || mcts-mwts-gstreamer mcts-mwts-gcamera || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| PulseAudio || light ||100% ||100% || mcts-pulseaudio-tests mcts-blts-alsa-core || [mailto:hao.h.chen@intel.com Hao Chen] || Dec. 17 for test plan&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| UPnP || light ||100% ||0% || mcts-gupnp-tests || [mailto:daniel.tao@intel.com Daniel Tao] ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;4&amp;quot;| Communications&lt;br /&gt;
| Telephony &amp;amp; IM || light || || || mcts-mwts-telepathy || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[/OFono Test Plan |Cellular Framework]] || Through ||100% ||36% || mcts-ofono-tests mcts-blts-ofono || [mailto:elva.fu@intel.com Elva Fu]||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[/ConnMan Test Plan | ConnMan]] || Through ||100% ||43% || mcts-connman-tests || [mailto:jeff.zheng@intel.com Jeff Zheng]  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[/MeeGo Bluez Test Plan |Bluetooth]] || Average ||100% ||16% || mcts-bluez-tests mcts-blts-bluetooth || [mailto:jingke.zhang@intel.com Jingke] ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;3&amp;quot; | Qt&lt;br /&gt;
| Qt || || || || mcts-mwts-network mcts-mwts-telepathy || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Qt WebKit || || || || N/A || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Qt Web Runtime || || || || N/A || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;9&amp;quot; | Qt Mobility&lt;br /&gt;
| QtM contacts || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM Location || || || || mcts-mwts-location || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM Messaging || || || || mcts-mwts-messaging || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM Publish &amp;amp; Subscribe || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM Sensors || || || || mcts-mwts-sensors || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM Service Framework || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM Versit || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM Multimedia || || || || mcts-mwts-multimedia || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| QtM System Info || || || || WIP || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;3&amp;quot; | [[../MeeGo_Graphics_Test_Plan | Graphics]]&lt;br /&gt;
| OpenGL ES || Average ||100% ||13% || mcts-qtgfx-tests mcts-blts-openles2-perf || [mailto:kui.zheng@intel.com Kui Zheng] ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Font Management || || || || N/A || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| X11 || Light ||100% ||100% || mcts-x-tests mcts-rendercheck-tests mcts-blts-fbdev || [mailto:kui.zheng@intel.com Kui Zheng] ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Data Management || Content Framework || Through || || || mcts-tracker-tests || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SW Management&lt;br /&gt;
| Package Manager || light || || || mcts-packagekit-tests || [mailto:huajun.li@intel.com Huajun Li] || Dec. 17 for test plan&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Kernel&lt;br /&gt;
&lt;br /&gt;
| Linux Kernel || || || || mcts-blts-usb mcts-blts-input-devices mcts-mwts-filesystem || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Released Middleware Test Asset Descriptions ===&lt;br /&gt;
[[../MWTS Asset Descriptions | Released Middleware Test Asset Descriptions]]&lt;br /&gt;
&lt;br /&gt;
=== Test Suite Status For OS Base===&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Category&lt;br /&gt;
!|Component&lt;br /&gt;
!|Test Coverage&lt;br /&gt;
!|Planned #&lt;br /&gt;
!|Ready #&lt;br /&gt;
!|Auto %&lt;br /&gt;
!|Major Contacts&lt;br /&gt;
!|Due&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;16&amp;quot; | OS Base|| [[../Audio Driver Test Specification | Audio Driver]] || '''Light''' ||31||31||0% || [mailto:EXT-jussi.saavalainen@nokia.com Jussi Saavalainen]||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Bluetooth Driver Test Specification | Bluetooth Driver]] || '''Light''' || 23 || 23 || 0% ||[mailto:EXT-jussi.saavalainen@nokia.com Jussi Saavalainen]||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Camera Driver Test Specification | Camera Driver]] || '''Light''' || 12 || 12 || 0% ||[mailto:EXT-jussi.saavalainen@nokia.com Jussi Saavalainen]||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Functional Key Driver  Test Plan | Functional Key Driver]] || '''Open''' || tbd || || || || tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../GPS Driver Test Plan | GPS Driver]] || '''Light''' ||  ||  ||  ||Jussi Saavalainen||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Input Devices Driver Test Specification | Input Devices Driver]] || '''Light''' || 3 || 3 || 0%  ||  ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../oFono Modem API Test Specification | Modem Devices Driver]] || '''Light''' || N/A || N/A || N/A ||  ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../SD-MMC Driver Test Plan | SD/MMC Driver]] || '''Light''' || 33 || 33 || 0% ||Jussi Saavalainen ||Sep.3.2010&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Sensor Test Front-end | Sensor Driver]] || '''N/A''' || N/A  || N/A  || N/A || Pasi Matilainen ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Touch Screen Driver Test Plan | Touch Screen Driver]] || '''Light''' ||  ||  ||  || Juhani Taipale||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Touchpad Driver Test Plan | Touchpad Driver]] || '''Open''' || tbd ||  ||  || ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../USB Driver Test Specification | USB Driver]] || '''Light''' || 35 || 35 || 0% ||[mailto:EXT-jussi.saavalainen@nokia.com Jussi Saavalainen] ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Video Playback Driver Test Specification | Video Playback Driver]] || '''Average''' || 6 || 6 || 0% ||[mailto:kimmo.myllyvirta@digia.com Kimmo Myllyvirta] ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Watchdog Driver Test Specification | Watchdog Driver]] || '''Average''' || 3  || 3 || 0% || [mailto:kimmo.myllyvirta@digia.com Kimmo Myllyvirta] ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../WIFI Driver Test Specification | WIFI Driver]] || '''Light''' || 10  || 10 || 0% ||Jussi Saavalainen ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../X11 Test Specification | X11]] || '''Light''' || 11  || 11 || 0% || [mailto:kimmo.myllyvirta@digia.com Kimmo Myllyvirta] ||tbd&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[../Framebuffer Test Specification | Framebuffer Driver]] || '''Light''' || 22  || 11 || 0% || [mailto:mika.niinisto@digia.com Mika Niinistö] ||tbd&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification</id>
		<title>Quality/TestSuite/oFono Modem API Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/oFono_Modem_API_Test_Specification"/>
				<updated>2010-12-16T14:04:17Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Blts-ofono package (0.1.14) is meant to test oFono framework. Currently testing is done over D-Bus as well as those test coming with oFono. Difference is that these are written with C. &lt;br /&gt;
&lt;br /&gt;
Currently supported version of oFono is 0.33.  &lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* oFono - Information Query: Tries specific interfaces from modem. Phonebook, network and modem interface.&lt;br /&gt;
* oFono - Register to network: Registers device in network&lt;br /&gt;
* oFono - De-register from network: De-registers device from network&lt;br /&gt;
* oFono - Enable modems: Enables as in powers up all modems in device&lt;br /&gt;
* oFono - Set modems online: Makes modems go Online, aka turn off Flight mode&lt;br /&gt;
* oFono - Set modems offline: Makes modems go Offline, aka turn on Flight mode&lt;br /&gt;
* oFono - Create voicecall with hidden caller ID: Tests if call can be made with hidden ID&lt;br /&gt;
* oFono - Create voicecall: Call creation test&lt;br /&gt;
* oFono - Answer to voicecall and hangup: Voicecall answer test&lt;br /&gt;
* oFono - Answer to voicecall and hangup all: Tests hangup all functionality&lt;br /&gt;
* oFono - Answer to voicecall and wait another call: Voicecall answer and waiting state test&lt;br /&gt;
* oFono - Answer to voicecall and deflect: Deflect incoming call&lt;br /&gt;
* oFono - Answer to voicecall and remote hang up: Tests that remote hangup works&lt;br /&gt;
* oFono - Cancel voicecall: Cancels incoming voicecall&lt;br /&gt;
* oFono - Transfer: To see that you can join two calls together and leave out yourself&lt;br /&gt;
* oFono - Swap: Putting calls on hold and back to active state&lt;br /&gt;
* oFono - Release and answer: Answer to incoming call and disconnecting other active call&lt;br /&gt;
* oFono - Hold and answer: Answer to incoming call while other call active&lt;br /&gt;
* oFono - Call and send DTMF: Sends DMTF tones&lt;br /&gt;
* oFono - Disable forwardings: Disables forward rules&lt;br /&gt;
* oFono - Unconditional forwarding: Sets unconditional forwarding&lt;br /&gt;
* oFono - Forward if busy: Sets forward rule when busy&lt;br /&gt;
* oFono - Forward if no reply: Sets forward rule when no reply&lt;br /&gt;
* oFono - Forward if not reachable: Sets forward rule if not reachable&lt;br /&gt;
* oFono - Send SMS: Sending SMS message&lt;br /&gt;
* oFono - Receive SMS: Receiving SMS&lt;br /&gt;
* oFono - Change PIN: Changes SIM pin codes (pin, pin2,...)&lt;br /&gt;
* oFono - Enter PIN: Enters PIN code and enables SIM if not done&lt;br /&gt;
* oFono - Reset PIN: Uses PUK code to reset PIN code&lt;br /&gt;
* oFono - Lock PIN: Lock specific PIN code&lt;br /&gt;
* oFono - Unlock PIN: Unlocks specific PIN code&lt;br /&gt;
* oFono - Set microphone volume: Microphone volume change in middle of call&lt;br /&gt;
* oFono - Set speaker volume: Speaker volume change in middle of call&lt;br /&gt;
* oFono - Set muted: Sets call muted in middle of call&lt;br /&gt;
* oFono - Call meters read: Read call meters status&lt;br /&gt;
* oFono - Call meters set: Sets call meters unit conversion, currency code and call meter maximum&lt;br /&gt;
* oFono - Call meters reset: Resets all call meters to zero&lt;br /&gt;
* oFono - Call meters near max warning: Creates call and waits if call meter maximum warning signal is received&lt;br /&gt;
* oFono - Check barring properties: Show current barring settings&lt;br /&gt;
* oFono - Disable barrings: Disables barring rules&lt;br /&gt;
* oFono - Disable incoming barrings: Disables barring from incoming calls&lt;br /&gt;
* oFono - Disable outgoing barrings: Disables barring from outgoing calls&lt;br /&gt;
* oFono - Change password for barrings: Changes PIN code for barrings&lt;br /&gt;
* oFono - Call barrings test: Tests different barring rules setting&lt;br /&gt;
* oFono - List all properties: Goes thought all possible interfaces and properties that oFono has&lt;br /&gt;
* oFono - Propose scan: Ask networks statuses&lt;br /&gt;
* oFono - SMSC number test: Test proper SMSC number validation&lt;br /&gt;
* oFono - Multiparty call test: Test multiparty call case&lt;br /&gt;
* oFono - Private call test: Tests creation of private chat out of multiparty call &lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current D-Bus API coverage for oFono tests:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/oFono-dbus-coverage.ods oFono-coverage-dbus.ods]] &lt;br /&gt;
&lt;br /&gt;
Current oFono AT modem API coverage for oFono tests:&lt;br /&gt;
* oFono-coverage-at-modem.ods&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Blts-ofono tests oFono framework more than it tests actual hardware. Different hardware may have different modems and you must specify which modem to use with oFono by setting up oFono correctly. &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
Test suite functionality depends on implementation of used modem driver in oFono. Some test cases may fail if driver implementation does not support such behaviour.&lt;br /&gt;
&lt;br /&gt;
NOTE: All following installation and execution instructions for oFono and phonesim are for reference only. Later releases may work differently and it is advised to follow the installation and usage guidelines provided with both software packages as baseline for all testing. &lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
More coverage with tests for oFono. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Setting up oFono ===&lt;br /&gt;
If test environment or device comes with oFono pre-installed, this section can be skipped.&lt;br /&gt;
&lt;br /&gt;
In case oFono is not available, it is possible to either install binaries from repositories (if supported by test environment) or by downloading and building source codes from oFono.org.&lt;br /&gt;
&lt;br /&gt;
To build oFono, follow these steps (replace &amp;lt;code&amp;gt;/directory&amp;lt;/code&amp;gt; with the directory where make install should put the files):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure --prefix=/directory&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make install&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/directory/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and add suitable configuration according to the DUT modem HW. The following example is for N900.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[isimodem]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=isimodem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: You can also try to uncomment and enable oFono to use AT command based generic driver.&lt;br /&gt;
&lt;br /&gt;
Prepare DUT:&lt;br /&gt;
&lt;br /&gt;
# Copy everything from /directory to device root&lt;br /&gt;
# Copy all tests from test/ directory to device&lt;br /&gt;
# Copy src/ofono.conf to device /etc/dbus-1/system.d/&lt;br /&gt;
# Start oFono daemon (use -n and -d parameters for debug information): &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ofonod -n -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up phonesim ===&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is possible to run virtually all the test cases with phonesim. Phonesim basically emulates a modem device and network operation. It includes a GUI for testing for example creating voice calls and sending sms messages.&lt;br /&gt;
&lt;br /&gt;
NOTE: Phonesim requires at least kernel version 2.6.28 with phonet support.&lt;br /&gt;
&lt;br /&gt;
To use phonesim with oFono, follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Download and install oFono from source packages as described above with following differences&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;/etc/ofono/modem.conf&amp;lt;/code&amp;gt; and uncomment following lines &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[phonesim]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Driver=phonesim&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Address=127.0.0.1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Port=12345&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy modem.conf to /usr/local/etc/ofono/ (this depends on your configure --prefix settings)&lt;br /&gt;
* Do not run oFono yet! &lt;br /&gt;
&lt;br /&gt;
* Download phonesim source package from ofono.org&lt;br /&gt;
* Build phonesim (You will need g++ and Qt packages, download and install as needed) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./configure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;$ make&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run phonesim directly from src/ (terminal session will freeze and nothing visible happens) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./phonesim -p 12345 -gui default.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run oFono directly from src/ with debugging mode (terminal session will freeze) &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./ofonod -n -d &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* poke phonesim virtual modem to powered state via dbus: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ dbus-send --system --print-reply --type=method_call --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:&amp;quot;Powered&amp;quot; variant:boolean:true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively you may try to enable modem with oFono python script available with oFono source package&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./enable-modem&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phonesim GUI should now pop into screen. Tests can be executed as usual and you can make incoming calls and messages using phonesim GUI. &lt;br /&gt;
&lt;br /&gt;
===  Executing tests  === &lt;br /&gt;
&lt;br /&gt;
Compile blts-ofono-tests with corresponding environment&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ dpkg-buildpackge&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and install package to DUT. You'll need to have SIM card in DUT with correct pin number entered. Now you can execute tests from command prompt Execute from host end command line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ blts-ofono &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Switch &lt;br /&gt;
!|Function&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -l  || Used log file, Used log file, default blts_ofono_log &lt;br /&gt;
|-&lt;br /&gt;
|| -e || Execute single or multiple selected tests, for example -e 1,4,5. &lt;br /&gt;
|-&lt;br /&gt;
|| -en || Execute test by name, for example -en &amp;quot;My test X&amp;quot;  &lt;br /&gt;
|-&lt;br /&gt;
|| -s || Show list of all tests &lt;br /&gt;
|-&lt;br /&gt;
|| -C || Used configuration file and path, for example /usr/share/blts-ofono-tests/blts-ofono.cnf &lt;br /&gt;
|-&lt;br /&gt;
|| -? || Help message  &lt;br /&gt;
|-&lt;br /&gt;
|| -xml, -axml || Create result XML. -axml appends results to an existing XML file. &lt;br /&gt;
|-&lt;br /&gt;
|| -auto || Silent logging for test automation. Only the results are printed to stdout. &lt;br /&gt;
|- &lt;br /&gt;
|| -v || Verbose logging (default) &lt;br /&gt;
|- &lt;br /&gt;
|| -vv || Even more verbose logging &lt;br /&gt;
|-  &lt;br /&gt;
!|Optional switch &lt;br /&gt;
!|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -r || Recipient address / phone number for voice call/SMS &lt;br /&gt;
|-&lt;br /&gt;
|| -m || SMS center address for SMS send &lt;br /&gt;
|-&lt;br /&gt;
|| -f || Number to forward calls in forward cases   &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Hangup timeout &lt;br /&gt;
|-&lt;br /&gt;
|| -n || New PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -o || Old (current) PIN code &lt;br /&gt;
|-&lt;br /&gt;
|| -y || PIN code type (&amp;quot;pin&amp;quot;, &amp;quot;pin2&amp;quot;, &amp;quot;puk&amp;quot;, ..)   &lt;br /&gt;
|-&lt;br /&gt;
|| -V || Call volume for Microphone/Speaker (0-100%)  &lt;br /&gt;
|-&lt;br /&gt;
|| -a || Accumulated Call Meter maximum value   &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Price Per Unit conversion value &lt;br /&gt;
|-&lt;br /&gt;
|| -c || Three character currency code&lt;br /&gt;
|-&lt;br /&gt;
|| -t || Set timeout for test case execution     &lt;br /&gt;
|-&lt;br /&gt;
|| --dontcleanup || Don't clean up call state before/after tests          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Test cases === &lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root priviliges.&lt;br /&gt;
&lt;br /&gt;
NOTE: Running cases always (if --dontcleanup switch is not used) resets call forwardings and call barrings with each test case use -o switch to give blts-ofono access to do so or use configuration file. If no pin code is given then default 3579 will be used.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' are able to be executed with variable data. See Test cases with variables. &lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Information Query ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Register to network  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - De-register from network  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Enable modems ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set modems online ||   &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Set modems offline ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Create voicecall'''  ||  -r &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| ''' oFono - Create voicecall with hidden caller ID'''  ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and hangup all ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Answer to voicecall and wait another call ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Answer to voicecall and deflect''' || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Answer to voicecall and remote hangup  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT, wait a moment and hang up&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Cancel voicecall  ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Transfer   ||  when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Swap ||   when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Release and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Hold and answer || when &amp;quot;Start listening calls&amp;quot; is printed, call to DUT from two different number&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call and send DTMF'''  ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as deflect call receiver, -t &amp;lt;timeout&amp;gt; : Use &amp;lt;timeout&amp;gt; how long call is active.&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable forwardings'''  ||   Disable all forwardings. Run this after any other forwarding case&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Unconditional forwarding'''   ||  Forward all incoming calls, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Forward if busy''' ||   DUT makes call to given number, verify functionality by calling to DUT. -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if no reply''' || Forwards calls if not call is not replied, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Forward if not reachable''' || Forward call when DUT not reachable, -f &amp;lt;number&amp;gt; chooses recipient&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Send SMS'''  ||  -r &amp;lt;number&amp;gt; chooses recipient , -m &amp;lt;number&amp;gt; chooses service centre (optional on NTN)&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Receive SMS  ||   When &amp;quot;Waiting for message...&amp;quot; is printed, send SMS to DUT&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change PIN'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...) &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Enter PIN'''  ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Reset PIN'''  || &amp;lt;nowiki&amp;gt;-n &amp;lt;code&amp;gt; : PIN, -o &amp;lt;code&amp;gt; : PUK, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Lock PIN  || &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Unlock PIN   ||  &amp;lt;nowiki&amp;gt; -o &amp;lt;code&amp;gt; : Old PIN code, -y &amp;lt;type&amp;gt; : Password type (pin, pin2,...)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set microphone volume''' ||  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Set speaker volume''' ||   -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -v &amp;lt;volume&amp;gt; : Use &amp;lt;volume&amp;gt; as volume percent.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Set muted || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Call meters read || -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call meters set'''  || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN, -a &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as accumulated call meter maximum - optional, -p &amp;lt;value&amp;gt; : Use &amp;lt;value&amp;gt; as price per unit conversion - optional, -c &amp;lt;code&amp;gt; : Use &amp;lt;code&amp;gt; as three character currency code - optional&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters reset'''   || &amp;lt;nowiki&amp;gt;  -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Call meters near max warning'''   || &amp;lt;nowiki&amp;gt; -r &amp;lt;number&amp;gt; : Use &amp;lt;number&amp;gt; as call receiver, -o &amp;lt;code&amp;gt; : Old (current) PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Check barring properties ||   &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable barrings''' || &lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Disable incoming barrings''' ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable outgoing barrings'''  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Disable barrings'''  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  '''oFono - Change password for barrings'''  || &amp;lt;nowiki&amp;gt;  -n &amp;lt;code&amp;gt; : New PIN, -o &amp;lt;code&amp;gt; : Old PIN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| '''oFono - Call barrings test''' || Tries to set barrings. It would be wise to execute &amp;quot;disable barrings&amp;quot; after this.&lt;br /&gt;
|-&lt;br /&gt;
|| oFono - List all properties  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Propose scan ||   &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - SMSC number test || &lt;br /&gt;
|-&lt;br /&gt;
|| oFono - Multiparty call test  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  oFono - Private call test   ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Test cases with variables ===&lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located. You can edit the configuration file yourself.&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;oFono - Call and send DTMF&amp;quot; case you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-ofono -l /var/log/tests/oFono%20-%20Call%20and%20send%20DTMF.log -en &amp;quot;oFono - Call and send DTMF&amp;quot; -r 123456 -C /usr/share/blts-ofono-tests/blts-ofono.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of DTMF case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############&lt;br /&gt;
# DTMF cases #&lt;br /&gt;
##############&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_length&lt;br /&gt;
   const 1 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_chars&lt;br /&gt;
   const &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;3&amp;quot; &amp;quot;4&amp;quot; &amp;quot;5&amp;quot; &amp;quot;6&amp;quot; &amp;quot;7&amp;quot; &amp;quot;8&amp;quot; &amp;quot;9&amp;quot; &amp;quot;0&amp;quot; &amp;quot;*&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_negative_chars&lt;br /&gt;
   const &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot; &amp;quot;D&amp;quot; &amp;quot;E&amp;quot; &amp;quot;F&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name dtmf_tones&lt;br /&gt;
   generate dtmf_generator dtmf_chars dtmf_length&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;oFono - Call and send DTMF&amp;quot;&lt;br /&gt;
   params remote_address dtmf_tones&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  N900 specific === &lt;br /&gt;
Before executing tests run &amp;lt;code&amp;gt;kill-telepathy&amp;lt;/code&amp;gt; and after executing run &amp;lt;code&amp;gt;enable-telepathy&amp;lt;/code&amp;gt; and boot device. &lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  oFono.org || [http://ofono.org/ oFono website]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 18-Nov-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Test case list and argument switches updated&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/Sensor_Test_Front-end</id>
		<title>Quality/TestSuite/Sensor Test Front-end</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/Sensor_Test_Front-end"/>
				<updated>2010-12-16T13:57:30Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Building the test asset */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[[File:Blts_sensors_framework_architecture.png]]&lt;br /&gt;
&lt;br /&gt;
The BLTS sensor test framework consists of the front-end test runner application, implemented in the blts-sensors-frontend package, and sensor test plug-ins, which are implemented in separate packages. The front-end implements a set of generic tests that are parameterized to execute sensor-specific tests. The sensor test plug-ins provide the front-end with access to sensor data by implementing a plug-in API, and specify in a configuration file how test cases are run. The front-end in turn loads sensor test plug-ins, and runs the test cases as configured.&lt;br /&gt;
&lt;br /&gt;
This document describes the sensor test framework from a user's point of view. For information about developing sensor test plug-ins, see [[../Sensor plug-in API]]. For information about specific sensor test plug-ins, see the plug-in documentation.&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
The sensor test front-end does not have any requirements for the hardware on the test device, but individual sensor test plug-ins may have additional hardware requirements.&lt;br /&gt;
&lt;br /&gt;
The test enviroment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1&lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with the command&lt;br /&gt;
&lt;br /&gt;
 rpm -ivh blts-sensors-frontend_{version}.rpm&lt;br /&gt;
&lt;br /&gt;
=== Executing tests ===&lt;br /&gt;
&lt;br /&gt;
Before any tests can be executed, a sensor test plug-in must be installed on the device. Once a plug-in is installed, tests can be executed from command line:&lt;br /&gt;
&lt;br /&gt;
 blts-sensors-frontend -p &amp;lt;path_to_plug-in&amp;gt; -C &amp;lt;path_to_config&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
|-&lt;br /&gt;
| -p || Specify the plug-in to test. This is the full path of the sensor plug-in .so.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Sensor test plug-ins are installed to &amp;lt;tt&amp;gt;/usr/lib/tests/blts-sensor-plugins&amp;lt;/tt&amp;gt;, and plug-in configuration files are installed to &amp;lt;tt&amp;gt;/etc/blts&amp;lt;/tt&amp;gt;. For example, when using the example sensor test plug-in, the command line for running the tests would look like this:&lt;br /&gt;
&lt;br /&gt;
 blts-sensors-frontend -p /usr/lib/tests/blts-sensor-plugins/libbltssensor_example.so -C /etc/blts/blts-sensor-example.cnf&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root privileges.&lt;br /&gt;
&lt;br /&gt;
Documentation for sensor-specific test cases is provided by individual sensor test plug-in packages.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| blts-sensors-frontend || [http://gitorious.org/qa-tools/mcts/trees/master/mcts-blts/blts-sensors-frontend blts-sensors-frontend sources]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 7-Dec-2010 || [mailto:pasi.matilainen@digia.com Pasi Matilainen] || Draft || Page created&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/WIFI_Driver_Test_Specification</id>
		<title>Quality/TestSuite/WIFI Driver Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/WIFI_Driver_Test_Specification"/>
				<updated>2010-12-16T13:35:43Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Building packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
nl80211 is the 802.11 netlink interface and cfg80211 is the linux wireless configuration API. &lt;br /&gt;
&lt;br /&gt;
nl80211 is used to configure a cfg80211 device and together they are intended to replace Wireless-Extensions in the future.&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
blts-wlan-core package (0.1.3) is testing nl80211 commands and also some Wireless-Extensions ioctls and events but only when corresponding nl80211 implementations are not available. &lt;br /&gt;
&lt;br /&gt;
Current BLTS WLAN test coverage matrix: &lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/WLAN-core-coverage.ods WLAN-core-coverage.ods]]&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
&lt;br /&gt;
Linux wireless cards/drivers that support nl80211/cfg80211 (and Wireless Extensions).&lt;br /&gt;
&lt;br /&gt;
===  Limitations === &lt;br /&gt;
&lt;br /&gt;
===  Future Improvements === &lt;br /&gt;
Future test cases may include further tests for nl80211 commands which are not covered yet.&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
Required hardware for testing over the air:&lt;br /&gt;
&lt;br /&gt;
;*test device, running the test asset&lt;br /&gt;
;*WLAN Access Point, for AP-using tests&lt;br /&gt;
;*a second test device or other supported device for &amp;quot;ad-hoc&amp;quot; (IBSS) tests.&lt;br /&gt;
&lt;br /&gt;
Multiple access points with different static configurations can be used instead of changing the AP configuration directly. The access point used must support DHCP discovery, either by itself or via a suitable network arrangement. SSIDs, keys and passphrases used must be entered in the test configuration file.&lt;br /&gt;
&lt;br /&gt;
The adhoc tests &amp;quot;Establish new adhoc network&amp;quot; and &amp;quot;Join established adhoc network&amp;quot; are counterparts and require two adhoc mode capable test devices, both running the test case.&lt;br /&gt;
&lt;br /&gt;
The test environment must have following packages installed:&lt;br /&gt;
;*libbltscommon1 &lt;br /&gt;
&lt;br /&gt;
'''Setting up software simulator - mac80211_hwsim'''&lt;br /&gt;
&lt;br /&gt;
If there is no suitable HW available for test execution or there is a need for verifying test case functionality, it is also possible to run some test cases with mac80211_hwsim. &lt;br /&gt;
&lt;br /&gt;
mac80211_hwsim is a software simulator of 802.11 radios for mac80211. It is a Linux kernel module that can be used to simulate arbitrary number of IEEE 802.11 radios for mac80211.&lt;br /&gt;
&lt;br /&gt;
The following steps are needed to use mac80211_hwsim to simulate radios and run test cases&lt;br /&gt;
&lt;br /&gt;
1) build mac80211_hwsim as part of kernel configuration&lt;br /&gt;
&lt;br /&gt;
2) load the kernel module (parameter 'radios' can be used to select how many radios are simulated - default 2)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ modprobe mac80211_hwsim&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read further instruction about mac80211_hwsim usage from mac80211_hwsim web page (http://wireless.kernel.org/en/users/Drivers/mac80211_hwsim)&lt;br /&gt;
&lt;br /&gt;
To simulate AP where the other station can associate to, the hostapd daemon (http://w1.fi/hostapd/) with a proper configuration file can be used&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ hostapd hostapd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;	&lt;br /&gt;
&lt;br /&gt;
===Building packages===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon-devel &lt;br /&gt;
* libnl-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
===Configuration package===&lt;br /&gt;
&lt;br /&gt;
The wlan-core-tests package is dependent on blts-wlan-core-tests-config configuration file package. The packaging script pach.sh creates RPM package blts-wlan-core-tests-config-example_{version}.rpm and it must be installed first. The configuration file /etc/blts/blts-wlan-core-tests.cnf is copied in the test device during RPM installation.  &lt;br /&gt;
&lt;br /&gt;
The configuration file package can be installed in the device with a command: &lt;br /&gt;
blts-wlan-core-tests-config-example_{version}.rpm&lt;br /&gt;
&lt;br /&gt;
===Test asset specific instructions===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-wlan-core-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Test case execution instructions:'''&lt;br /&gt;
&lt;br /&gt;
The Enumerate hardware and Enumerate supported features tests run on a single device and do not require any existing access points. Enumerate hardware case can be configured to search expected phys (e.g. phy0) from the test device.&lt;br /&gt;
&lt;br /&gt;
The configuration file used must be modified to match the test environment. SSIDs, keys and passphrases used must be entered in the test configuration file before testing.&lt;br /&gt;
&lt;br /&gt;
Disconnect with AP loss test case waits about 60 seconds after connection is established that tester will turn off the AP where connection is made.&lt;br /&gt;
The test case shows tester a text &amp;quot;Turn off AP to pass this test&amp;quot; and will only continue if AP is turned off, otherwise timeout occurs and test case fails.&lt;br /&gt;
&lt;br /&gt;
Test cases using established adhoc network are counter parts and these test cases must be executed at the same time with two devices, so that the establishing side must be executed first and the joining side soon after that. The name and used channel for established adhoc network can be configured in the configuration file. The SSID used here must be unique (no networks with a same name in the test environment) otherwise these tests fail.&lt;br /&gt;
&lt;br /&gt;
===Test case arguments===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Enables profiling of ioctl calls          &lt;br /&gt;
|-&lt;br /&gt;
|| -v || Verbose logging          &lt;br /&gt;
|-&lt;br /&gt;
|| -S || (Power)Save mode on          &lt;br /&gt;
|-&lt;br /&gt;
|| --nltrace || Print out raw Netlink commands as they are issued          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Running test cases===&lt;br /&gt;
&lt;br /&gt;
Test cases execution must be done with root privileges.&lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-    &lt;br /&gt;
||  Core-WLAN-Enumerate hardware || &lt;br /&gt;
|-&lt;br /&gt;
||  Core-WLAN-Enumerate supported features || &lt;br /&gt;
|-&lt;br /&gt;
||  Core-WLAN-Scan for specific AP || &lt;br /&gt;
|-&lt;br /&gt;
||  Core-WLAN-Associate with open AP || &lt;br /&gt;
|-&lt;br /&gt;
||  Core-WLAN-Associate with WEP encryption || &lt;br /&gt;
|-&lt;br /&gt;
||  Core-WLAN-Scan and associate on max power save || overrides command line parameter -S (power save)&lt;br /&gt;
|-&lt;br /&gt;
||  Core-WLAN-Associate with WPA2-PSK AP || &lt;br /&gt;
|-&lt;br /&gt;
||  Core-WLAN-Disconnect with deauthenticate || &lt;br /&gt;
|-&lt;br /&gt;
||  Core-WLAN-Disconnect with disassociate || &lt;br /&gt;
|-&lt;br /&gt;
||  Core-WLAN-Disconnect with AP loss || Turn off AP manually when &amp;quot;Turn off AP to pass this test&amp;quot; is printed&lt;br /&gt;
|-&lt;br /&gt;
||  Core-WLAN-Disconnect from adhoc network || requires existing open adhoc network where to connect&lt;br /&gt;
|-&lt;br /&gt;
||  Core-WLAN-Establish new adhoc network || &lt;br /&gt;
|-&lt;br /&gt;
||  Core-WLAN-Join established adhoc network || remote must be running establish new adhoc network test case &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Test case descriptions and execution commands:'''&lt;br /&gt;
&lt;br /&gt;
;* Core-WLAN-Enumerate hardware&lt;br /&gt;
: * Check that expected PHYs are found, then dump all PHYs, interfaces, and available configuration data&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-wlan-core-tests -en &amp;quot;Core-WLAN-Enumerate hardware&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-WLAN-Enumerate supported features&lt;br /&gt;
: * Dump commands and parameters that are supported by device/driver&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-wlan-core-tests -en &amp;quot;&amp;lt;code&amp;gt;$ blts-wlan-core-tests -en &amp;quot;Core-WLAN-Enumerate hardware&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-WLAN-Scan for specific AP&lt;br /&gt;
: * Trigger a new scan with a given ssid and verify that AP is actually found&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-wlan-core-tests -en &amp;quot;Core-WLAN-Scan for specific AP&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-WLAN-Associate with open AP&lt;br /&gt;
: * Scan for open AP with a given ssid, after that do authentication and association requests, finally disconnect&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-wlan-core-tests -en &amp;quot;Core-WLAN-Associate with open AP&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-WLAN-Associate with WEP encryption&lt;br /&gt;
: * Scan for AP with a given ssid, after that set WEP encryption keys and do connection request, send DHCP discover and finally disconnect&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-wlan-core-tests -en &amp;quot;Core-WLAN-Associate with WEP encryption&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-WLAN-Scan and associate on max power save&lt;br /&gt;
: * Set max power save on and scan for open AP with a given ssid, after that connect and finally disconnect. &lt;br /&gt;
: * NOTE: overrides command line parameter -S (power save)&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-wlan-core-tests -en &amp;quot;Core-WLAN-Scan and associate on max power save&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-WLAN-Associate with WPA2-PSK AP&lt;br /&gt;
: * Scan for AP with a given SSID, and associate. Perform WPA2 key exchange using pre-shared key. &lt;br /&gt;
: * Verify connection using DHCP discover and finally disconnect.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-wlan-core-tests -en &amp;quot;Core-WLAN-Associate with WPA2-PSK AP&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-WLAN-Disconnect with deauthenticate&lt;br /&gt;
: * Scan for open AP with a given ssid, after that do connection request, send DHCP discover and finally disconnect using&lt;br /&gt;
: * deauthenticate command while waiting until disconnect event is received.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-wlan-core-tests -en &amp;quot;Core-WLAN-Disconnect with deauthenticate&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-WLAN-Disconnect with disassociate&lt;br /&gt;
: * Scan for open AP with a given ssid, after that do connection request, send DHCP discover and finally disconnect using&lt;br /&gt;
: * disassociate command while waiting until disconnect event is received.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-wlan-core-tests -en &amp;quot;Core-WLAN-Disconnect with disassociate&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-WLAN-Disconnect with AP loss&lt;br /&gt;
: * Scan for open AP with a given ssid, after that do connection request, send DHCP discover and start waiting until disconnect event is received.&lt;br /&gt;
: * NOTE: Manual test where AP must be turned off in about 60 seconds before test case can be continued.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-wlan-core-tests -en &amp;quot;Core-WLAN-Disconnect with AP loss&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-WLAN-Disconnect from adhoc network&lt;br /&gt;
: * Scan for open adhoc network with a given ssid, after that join a IBSS and verify connection by sending test data and using scan&lt;br /&gt;
: * request, after that leave IBSS and verify that device is properly disconnected from adhoc network. NOTE: The requirement for this test&lt;br /&gt;
: * case is existing adhoc network where DUT can be joined or optionally wlan station that supports adhoc connections. NOTE2: if there is no &lt;br /&gt;
: * existing adhoc network in the test environment &amp;quot;Core-WLAN-Establish new adhoc network&amp;quot; can be also used as a counterpart for this test case.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-wlan-core-tests -en &amp;quot;Core-WLAN-Disconnect from adhoc network&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-WLAN-Establish new adhoc network&lt;br /&gt;
: * Estabish new IBSS with no encryption, after that start receiving test data packets and compare payload with expected data. This test case&lt;br /&gt;
: * fails if adhoc network with same SSID already exists. NOTE: This test case requires either &amp;quot;Core-WLAN-Join established adhoc network&amp;quot; or &lt;br /&gt;
: * optionally &amp;quot;Core-WLAN-Disconnect from adhoc network&amp;quot; as a counterpart and must be run first.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-wlan-core-tests -en &amp;quot;Core-WLAN-Establish new adhoc network&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-WLAN-Join established adhoc network&lt;br /&gt;
: * Scan for open adhoc network with a given ssid, after that join a IBSS and verify connection by sending test data that is verified in&lt;br /&gt;
: * the other DUT. NOTE: This test case requires &amp;quot;Core-WLAN-Establish new adhoc network&amp;quot; as a counterpart and must be run after it.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-wlan-core-tests -en &amp;quot;Core-WLAN-Join established adhoc network&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuration file examples===&lt;br /&gt;
&lt;br /&gt;
To run test cases with variable data you need to specify where configuration file is located or if no configuration file is given, test driver tries to use default /etc/blts/blts-wlan-core-tests.cnf &lt;br /&gt;
&lt;br /&gt;
The configuration file must be edited to match your test environment.&lt;br /&gt;
&lt;br /&gt;
Access point SSID parameters in blts-wlan-core.cnf configuration file:&lt;br /&gt;
&lt;br /&gt;
;*open_ssid - SSID for an existing open AP&lt;br /&gt;
;*wep_ssid - SSID for an existing WEP-encrypted AP&lt;br /&gt;
;*wpa_ssid - SSID for an existing WPA-encrypted AP&lt;br /&gt;
;*adhoc_ssid - SSID for an existing open adhoc network&lt;br /&gt;
;*adhoc_ssid2 - SSID for established open adhoc network (adhoc network created during test runs)&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;Core-WLAN-Associate with WEP encryption&amp;quot; case for example, execute the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-wlan-core-tests -l /var/log/tests/Core-WLAN-Associate_with_WEP_encryption.log -en &amp;quot;Core-WLAN-Associate with WEP encryption&amp;quot; -C /etc/blts/blts-wlan-core-tests.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of WEP encryption case variation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Parameter configuration for blts-wlan-core&lt;br /&gt;
&lt;br /&gt;
# Valid wlan devices for HW.&lt;br /&gt;
[parameter]&lt;br /&gt;
	name wlan_device&lt;br /&gt;
	const &amp;quot;wlan0&amp;quot; &amp;quot;wlan1&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# SSID for an existing AP (change this to match your environment)&lt;br /&gt;
[parameter]&lt;br /&gt;
	name ssid&lt;br /&gt;
	const &amp;quot;test-1&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# WEP keys - wep key format &amp;quot;i:t:key&amp;quot;, space separated &lt;br /&gt;
# i = index (0 - 3)&lt;br /&gt;
# t = type (a: = ASCII wep key / h: HEX wep key)&lt;br /&gt;
# e.g.&lt;br /&gt;
# first 0 index ascii wep key abcdef -&amp;gt;  0:a:abcdef&lt;br /&gt;
[parameter]&lt;br /&gt;
	name wep_keys&lt;br /&gt;
	const &amp;quot;0:a:abcde&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# WEP key index (0 - 3) - default key to transmit&lt;br /&gt;
[parameter]&lt;br /&gt;
        name wep_tx_keyidx&lt;br /&gt;
        const 0&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# Tests&lt;br /&gt;
&lt;br /&gt;
[test]       &lt;br /&gt;
	name &amp;quot;Core-WLAN-Associate with WEP encryption&amp;quot;&lt;br /&gt;
	params wlan_device ssid wep_keys wep_tx_keyidx&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  linuxwireless.org  || [http://linuxwireless.org/en/developers/Documentation/nl80211/ nl80211 website] &lt;br /&gt;
|-&lt;br /&gt;
||  blts-wlan-core  || [http://gitorious.org/qa-tools/mcts/trees/master/mcts-blts/blts-wlan-core/ blts-wlan-core tests] &lt;br /&gt;
|-&lt;br /&gt;
||  mac80211_hwsim  || [http://wireless.kernel.org/en/users/Drivers/mac80211_hwsim mac80211_hwsim software simulator] &lt;br /&gt;
|-&lt;br /&gt;
||  hostapd  || [http://w1.fi/hostapd/ hostapd daemon] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 3-Dec-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Page created (refers to blts-wlan-core test package 0.1.3)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/Watchdog_Driver_Test_Specification</id>
		<title>Quality/TestSuite/Watchdog Driver Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/Watchdog_Driver_Test_Specification"/>
				<updated>2010-12-16T13:33:15Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Building packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
A Watchdog Timer (WDT) is a hardware circuit that can reset the computer system in case of a software fault.&lt;br /&gt;
The blts-watchdog test module includes tests for watchdog devices via kernel's watchdog driver. Basically the&lt;br /&gt;
watchdog timer is 'pinged' by an application (usually by a user space watchdog daemon), and if a 'ping' is not&lt;br /&gt;
received within certain time, the watchdog device resets the device.&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
=== Software Coverage ===&lt;br /&gt;
&lt;br /&gt;
The test driver module accesses watchdog driver via /dev/watchdog device. The watchdog is controlled with ioctls;&lt;br /&gt;
   * WDIOC_GETTIMEOUT: Get current watchdog timeout&lt;br /&gt;
   * WDIOC_SETTIMEOUT: Set current watchdog timeout&lt;br /&gt;
   * WDIOC_GETSUPPORT: Get information about the watchdog device&lt;br /&gt;
   * WDIOC_KEEPALIVE: Keep alive ping&lt;br /&gt;
&lt;br /&gt;
=== Hardware Coverage ===&lt;br /&gt;
&lt;br /&gt;
Hardware watchdog timers.&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
&lt;br /&gt;
Only one process can use the watchdog timer at a time, so the test module cannot access the watchdog device if there&lt;br /&gt;
is some watchdog daemon, or some other process using the watchdog running.&lt;br /&gt;
&lt;br /&gt;
=== Future Improvements ===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
The test device must include a watchdog device, and the driver for the watchdog device must be loaded. The test environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* '''libbltscommon1'''&lt;br /&gt;
&lt;br /&gt;
=== Building packages ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Configuration package ===&lt;br /&gt;
&lt;br /&gt;
The watchdog test package does not require any separate configuration package.&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-watchdog-tests_{version}.rpm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Test case arguments ===&lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
&lt;br /&gt;
=== Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be executed with root privileges.&lt;br /&gt;
&lt;br /&gt;
Test case descriptions and execution instructions:&lt;br /&gt;
&lt;br /&gt;
* '''Core-Watchdog presence check'''&lt;br /&gt;
** Simple existence check for watchdog&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-watchdog-tests -en &amp;quot;Core-Watchdog presence check&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Core-Open and close watchdog'''&lt;br /&gt;
** Open watchdog device node, query information&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-watchdog-tests -en &amp;quot;Core-Open and close watchdog&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Core-Send keepalive messages'''&lt;br /&gt;
** Set keepalive timeout, send keepalive messages to watchdog for ten seconds. Note that the device should reboot after the test case finishes.&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-watchdog-tests -en &amp;quot;Core-Send keepalive messages&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to a self-sufficient command line program. Debian and RPM packaging is provided.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Watchdog API || [http://www.mjmwired.net/kernel/Documentation/watchdog/watchdog-api.txt Watchdog Driver api]&lt;br /&gt;
|-&lt;br /&gt;
| blts-watchdog || [http://gitorious.org/qa-tools/mcts/trees/master/mcts-blts/blts-watchdog blts-watchdog sources]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date&lt;br /&gt;
!|Handled By&lt;br /&gt;
!|Status&lt;br /&gt;
!|Comments&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 10-Dec-2010 || [mailto:pasi.matilainen@digia.com Pasi Matilainen] || Draft || Page created&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/Pixel_Format_Library</id>
		<title>Quality/TestSuite/Pixel Format Library</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/Pixel_Format_Library"/>
				<updated>2010-12-16T13:31:50Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Building packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Blts-pixelformat package (0.1.4) provides a pixel format conversion API for the BLTS test assets. &lt;br /&gt;
&lt;br /&gt;
The conversion code is based on the libswscale library of the FFMPEG project (http://www.ffmpeg.org), with modifications to remove unnecessary code. Support for additional V4L2 pixel formats has also been added.&lt;br /&gt;
&lt;br /&gt;
===  Limitations === &lt;br /&gt;
&lt;br /&gt;
For some pixel formats, only limited conversion support is available:&lt;br /&gt;
&lt;br /&gt;
;* V4L2_PIX_FMT_SBGGR8, V4L2_PIX_FMT_SBGGR16, V4L2_PIX_FMT_SGRBG10 (Bayer formats)&lt;br /&gt;
: * Can be converted only to V4L2_PIX_FMT_RGB24&lt;br /&gt;
: * Cannot be used as target formats&lt;br /&gt;
;* V4L2_PIX_FMT_RGB555X, V4L2_PIX_FMT_RGB565X (big-endian 15- &amp;amp; 16-bit RGB)&lt;br /&gt;
: * Can be converted to different YUV formats and to V4L2_PIX_FMT_RGB24&lt;br /&gt;
: * Cannot be used as target formats&lt;br /&gt;
&lt;br /&gt;
=== Building packages ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
===Using the pixel format conversion library with blts tests===&lt;br /&gt;
&lt;br /&gt;
Some of blts test packages have dependency to the blts-pixelformat package and blts-pixelformat package itself has dependency to the blts-common package. &lt;br /&gt;
  &lt;br /&gt;
The test environment must have following packages installed:&lt;br /&gt;
;*libbltscommon1 &lt;br /&gt;
&lt;br /&gt;
The library package can be installed in the device by executing the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh libbltspixelformat1_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Using the pixel format conversion API===&lt;br /&gt;
&lt;br /&gt;
The development package can be installed by executing the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh libbltspixelformat-devel_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The pixel format conversion API is defined in the file '''blts-pixelformat.h''' and at the moment there is only one conversion function to use '''convert_buffer()''': &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;blts-pixelformat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/videodev2.h&amp;gt; //for pixel format identifiers&lt;br /&gt;
&lt;br /&gt;
int convert_buffer(int width, int height, const unsigned char* srcbuffer, __u32 srcformat, unsigned char** dstbuffer, __u32 dstformat);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
convert_buffer() converts the image data in srcbuffer from the source pixel format to the destination pixel format. After a successful conversion, dstbuffer contains a pointer to the converted image buffer. The buffer is allocated dynamically in the conversion function, and must be freed by the caller.&lt;br /&gt;
&lt;br /&gt;
After a successful conversion, dstbuffer contains a pointer to the converted image, and the function returns the size of the converted image in bytes.&lt;br /&gt;
&lt;br /&gt;
If the conversion fails, an error code is returned:&lt;br /&gt;
;*-1 The source or destination format is not supported&lt;br /&gt;
;*-2 Internal conversion error&lt;br /&gt;
&lt;br /&gt;
The pixel formats are specified with V4L2 pixel format identifiers. The supported formats are:&lt;br /&gt;
&lt;br /&gt;
;*V4L2_PIX_FMT_RGB332&lt;br /&gt;
;*V4L2_PIX_FMT_RGB444&lt;br /&gt;
;*V4L2_PIX_FMT_RGB555&lt;br /&gt;
;*V4L2_PIX_FMT_RGB565&lt;br /&gt;
;*V4L2_PIX_FMT_RGB555X&lt;br /&gt;
;*V4L2_PIX_FMT_RGB565X&lt;br /&gt;
;*V4L2_PIX_FMT_RGB24&lt;br /&gt;
;*V4L2_PIX_FMT_BGR24&lt;br /&gt;
;*V4L2_PIX_FMT_BGR32&lt;br /&gt;
;*V4L2_PIX_FMT_RGB32&lt;br /&gt;
;*V4L2_PIX_FMT_GREY&lt;br /&gt;
;*V4L2_PIX_FMT_Y16&lt;br /&gt;
;*V4L2_PIX_FMT_YUYV&lt;br /&gt;
;*V4L2_PIX_FMT_UYVY&lt;br /&gt;
;*V4L2_PIX_FMT_Y41P&lt;br /&gt;
;*V4L2_PIX_FMT_YVU420&lt;br /&gt;
;*V4L2_PIX_FMT_YVU410&lt;br /&gt;
;*V4L2_PIX_FMT_YUV422P&lt;br /&gt;
;*V4L2_PIX_FMT_YUV411P&lt;br /&gt;
;*V4L2_PIX_FMT_NV12&lt;br /&gt;
;*V4L2_PIX_FMT_SBGGR8&lt;br /&gt;
;*V4L2_PIX_FMT_SBGGR16&lt;br /&gt;
;*V4L2_PIX_FMT_SGRBG10&lt;br /&gt;
;*V4L2_PIX_FMT_YUV444&lt;br /&gt;
;*V4L2_PIX_FMT_YUV555&lt;br /&gt;
;*V4L2_PIX_FMT_YUV565&lt;br /&gt;
;*V4L2_PIX_FMT_YUV32&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
Both Debian and RPM packaging is provided. &lt;br /&gt;
&lt;br /&gt;
The blts-pixelformat package consists of libbltspixelformat1 runtime library and libbltspixelformat-devel development library.&lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  blts-pixelformat  || [http://gitorious.org/qa-tools/mcts/trees/master/mcts-blts/blts-pixelformat/ blts-pixelformat library] &lt;br /&gt;
|-&lt;br /&gt;
||  www.ffmpeg.org  || [http://www.ffmpeg.org/ FFmpeg project] &lt;br /&gt;
|-&lt;br /&gt;
||  linux.bytesex.org  || [http://linux.bytesex.org/v4l2 video4linux website] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 15-Dec-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Page created (refers to blts-pixelformat package 0.1.4)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/Video_Playback_Driver_Test_Specification</id>
		<title>Quality/TestSuite/Video Playback Driver Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/Video_Playback_Driver_Test_Specification"/>
				<updated>2010-12-16T13:30:43Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Building packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The X Window System (commonly X or X11) is a computer software system and network protocol that provides a graphical user interface (GUI). Base X Window System is extended by X Extension libraries (mainly from freedesktop.org and XFree86 projects).&lt;br /&gt;
&lt;br /&gt;
The blts-xvideo test driver (0.0.7) includes functional and performance tests specifically for XVideo extension.&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test driver currently covers X11 XVideo extension: &lt;br /&gt;
* XVideo - Presence check: Simple XVideo extension presence check &lt;br /&gt;
* XVideo - Enumerate adapters: List all information from all XVideo adapters &lt;br /&gt;
* XVideo - XvPutImage benchmark: Tests XvPutImage performance and functionality. Uses various resolutions, pixel formats and port attributes depending on configuration file. &lt;br /&gt;
* XVideo - XvShmPutImage benchmark: Tests XvShmPutImage performance and functionality. Uses various resolutions, pixel formats and port attributes depending on configuration file. &lt;br /&gt;
* XVideo - PutImage with QueryBestSize: Functional test for QueryBestImage. Queries best size with different input and output resolutions and tries to display images with the returned size. &lt;br /&gt;
* XVideo - Notify events: Functional test for XvPortNotify/XvVideoNotify. Requests events and tries to trigger events from a different process&lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current coverage for tests: &lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/XVideo-coverage.ods XVideo-coverage.ods]]&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Mainly display devices (and GPU). &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
The test environment must have following packages installed:&lt;br /&gt;
;*libbltscommon1 &lt;br /&gt;
;*[[../Pixel Format Library‎ | libbltspixelformat1]] &lt;br /&gt;
;*libX11 &lt;br /&gt;
;*libXv&lt;br /&gt;
&lt;br /&gt;
=== Building packages ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon-devel &lt;br /&gt;
* [[../Pixel Format Library‎ | libbltspixelformat-devel]]&lt;br /&gt;
* libX11-devel&lt;br /&gt;
* libXv-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Configuration package ===&lt;br /&gt;
&lt;br /&gt;
The blts-xvideo-tests package is dependent on blts-xvideo-tests-config configuration file package. The packaging script pack.sh creates RPM package blts-xvideo-tests-config-example_{version}.rpm and it must be installed first. The configuration file /etc/blts/blts-xvideo-tests.cnf is copied in the test device during RPM installation.&lt;br /&gt;
&lt;br /&gt;
The configuration file package can be installed in the device by executing the command:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-xvideo-tests-config-example_{version}.rpm&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device by executing the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-xvideo-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root privileges. &lt;br /&gt;
&lt;br /&gt;
===  Test cases === &lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  XVideo - Presence check || verified components are listed in file blts-xvideo-req-files.cfg  &lt;br /&gt;
|-&lt;br /&gt;
|| XVideo - Enumerate adapters  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  XVideo - XvPutImage benchmark  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  XVideo - XvShmPutImage benchmark  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  XVideo - PutImage with QueryBestSize ||   &lt;br /&gt;
|-&lt;br /&gt;
|| XVideo - Notify events ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test case descriptions and execution commands:'''&lt;br /&gt;
&lt;br /&gt;
;* XVideo - Presence check&lt;br /&gt;
: * Simple XVideo extension presence check&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-xvideo-tests -en &amp;quot;XVideo - Presence check&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* XVideo - Enumerate adapters&lt;br /&gt;
: * List all information from all XVideo adapters&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-xvideo-tests -en &amp;quot;XVideo - Enumerate adapters&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* XVideo - XvPutImage benchmark &lt;br /&gt;
: * Tests XvPutImage performance and functionality. &lt;br /&gt;
: * Uses various resolutions, pixel formats and port attributes depending on configuration file.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-xvideo-tests -en &amp;quot;XVideo - XvPutImage benchmark&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* XVideo - XvShmPutImage benchmark &lt;br /&gt;
: * Tests XvShmPutImage performance and functionality. &lt;br /&gt;
: * Uses various resolutions, pixel formats and port attributes depending on configuration file.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-xvideo-tests -en &amp;quot;XVideo - XvShmPutImage benchmark&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* XVideo - PutImage with QueryBestSize &lt;br /&gt;
: * Functional test for QueryBestImage. &lt;br /&gt;
: * Queries best size with different input and output resolutions and tries to display images with the returned size.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-xvideo-tests -en &amp;quot;XVideo - PutImage with QueryBestSize&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* XVideo - Notify events &lt;br /&gt;
: * Functional test for XvPortNotify/XvVideoNotify. Requests events and tries to trigger events from a different process.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-xvideo-tests -en &amp;quot;XVideo - Notify events&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  Configuration file examples === &lt;br /&gt;
Configuration file contains used parameters for benchmarks. To run test case with variable data you need to specify where configuration file is located or if no configuration file is given, test driver tries to use default /etc/blts/blts-xvideo-tests.cnf&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;X11-XVideo PutImage with QueryBestSize&amp;quot; case you can use: &lt;br /&gt;
&amp;lt;code&amp;gt;blts-xvideo-tests -l /var/log/tests/X11-XVideo_PutImage_with_QueryBestSize.log -en &amp;quot;X11-XVideo PutImage with QueryBestSize&amp;quot; -C example-blts-xvideo.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
######################&lt;br /&gt;
# General parameters #&lt;br /&gt;
######################&lt;br /&gt;
&lt;br /&gt;
# defines generated video material resolution&lt;br /&gt;
[parameter]&lt;br /&gt;
   name input_resolution&lt;br /&gt;
   const &amp;quot;800x600&amp;quot; &amp;quot;1600x1200&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# if output resolution is 0x0, resolution will be root window's size&lt;br /&gt;
[parameter]&lt;br /&gt;
   name output_resolution&lt;br /&gt;
   const &amp;quot;0x0&amp;quot; &amp;quot;1600x1200&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# duration of tests&lt;br /&gt;
[parameter]&lt;br /&gt;
   name duration&lt;br /&gt;
   const 5&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# used X screen(s)&lt;br /&gt;
[parameter]&lt;br /&gt;
   name screen&lt;br /&gt;
   const 0&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# used XVideo adaptor(s)&lt;br /&gt;
[parameter]&lt;br /&gt;
   name adaptor&lt;br /&gt;
   const 0&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# Possible choices for test images:&lt;br /&gt;
# random: three frames of random pixels&lt;br /&gt;
# vh_lines: two frames, horizontal and vertical lines&lt;br /&gt;
# checkerboard: two frames, b/w checkerboard&lt;br /&gt;
# moving_arrow: white arrow moving from left to right and pointing up&lt;br /&gt;
# fps_check: two frames, blocks change between black and white&lt;br /&gt;
# colorgradient: red, green and blue gradients&lt;br /&gt;
# graygradient: full screen grayscale, from black (left) to right&lt;br /&gt;
# colorgradient_scroll: red, green and blue gradients, moves from left to right&lt;br /&gt;
# graygradient_scroll: full screen grayscale, moves from left to right&lt;br /&gt;
[parameter]&lt;br /&gt;
   name test_images&lt;br /&gt;
   const &amp;quot;colorgradient_scroll&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# used pixel formats (fourcc)&lt;br /&gt;
[parameter]&lt;br /&gt;
   name format&lt;br /&gt;
   const &amp;quot;YUY2&amp;quot; &amp;quot;YV12&amp;quot; &amp;quot;I420&amp;quot; &amp;quot;UYVY&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# used port attributes for XVideo adaptor&lt;br /&gt;
[parameter]&lt;br /&gt;
   name port_attributes&lt;br /&gt;
   const &amp;quot;XV_VSYNC 0 XV_BRIGHTNESS 0 XV_CONTRAST 0&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# These are for QueryBestSize and Notify events -tests&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name fute_format&lt;br /&gt;
   const &amp;quot;YUY2&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name fute_port_attributes&lt;br /&gt;
   const &amp;quot;XV_VSYNC 0&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  X11 || [http://www.x.org/wiki/ X11 home page] &lt;br /&gt;
|-&lt;br /&gt;
||  freedesktop.org  || [http://www.freedesktop.org/ freedesktop.org home page] &lt;br /&gt;
|-&lt;br /&gt;
||  XFree86  || [http://www.xfree86.org XFree86 home page] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 8-Dec-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Documentation updated to refer blts-xvideo test package 0.0.7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/USB_Driver_Test_Specification</id>
		<title>Quality/TestSuite/USB Driver Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/USB_Driver_Test_Specification"/>
				<updated>2010-12-16T13:29:28Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Building packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
blts-usb package (0.0.14) is test driver using USB host and peripheral devices.&lt;br /&gt;
&lt;br /&gt;
USB peripheral test cases are made between host (e.g. PC) and peripheral gadget (e.g. N900). Both ends have their own drivers which communicate and transfer data between different endpoints.&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
Each test case must be run independently and devices must be preset according to case requirements using provided setup test cases. In practice, this means for example data transfer requires preconnected host enabled USB cable and host mode supporting device is connected to system. Each test case prints out required user interaction to terminal. &lt;br /&gt;
* USB - Setup host driver &lt;br /&gt;
* USB - Setup peripheral driver &lt;br /&gt;
* USB - Read test &lt;br /&gt;
* USB - Write test &lt;br /&gt;
 &lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
&lt;br /&gt;
Current coverage for USB tests: &lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/USB-core-coverage.ods USB-coverage.ods]]&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
&lt;br /&gt;
Configurable USB endpoint transfer test cases. &lt;br /&gt;
&lt;br /&gt;
===  Limitations === &lt;br /&gt;
* Drivers must be initialized before running other test cases. &lt;br /&gt;
* All other gadget drivers MUST be unloaded before test execution in used DUT! &lt;br /&gt;
* All USB cables MUST be disconnected when executing initializations! &lt;br /&gt;
&lt;br /&gt;
===  Future Improvements === &lt;br /&gt;
* Automated test execution and peripheral DUT driver selection. &lt;br /&gt;
* Official unique USB driver ID.&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
===  Hardware setup and test execution order === &lt;br /&gt;
&lt;br /&gt;
Required hardware:&lt;br /&gt;
* Supported USB cable &lt;br /&gt;
* Device with USB host capability (e.g. PC) &lt;br /&gt;
* Device with USB peripheral capability (e.g. Nokia N810/N900) &lt;br /&gt;
&lt;br /&gt;
How to setup test environment: &lt;br /&gt;
# Make sure usb cable is disconnected between devices &lt;br /&gt;
# Set up host side (e.g. PC) by running test 'USB - Setup host driver'&lt;br /&gt;
# Set up gadget side (peripheral device)  by running test 'USB - Setup peripheral driver'&lt;br /&gt;
# Connect cable &lt;br /&gt;
# Execute tests &lt;br /&gt;
&lt;br /&gt;
NOTE: Before executing test cases it must be determined if used devices are capable of acting as peripheral or host. This depends on USB controller chips of devices and necessary information should be available from device vendors.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run test cases, execute the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ blts_usb_testrunner -C [config file] -e [test number]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The test environment must have following packages installed:&lt;br /&gt;
;*libbltscommon1 &lt;br /&gt;
&lt;br /&gt;
===Building packages===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon-devel &lt;br /&gt;
* kernel-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
===  Configuration package === &lt;br /&gt;
&lt;br /&gt;
The blts-usb package is dependent on blts-usb-tests-config configuration file package. The packaging script pack.sh creates RPM package blts-usb-tests-config-example_{version}.rpm and it must be installed first. The configuration files are copied in the test device during RPM installation.  &lt;br /&gt;
&lt;br /&gt;
The configuration file package can be installed in the device with a command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-usb-tests-config-example_{version}.rpm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This test asset uses two configuration files: One for generic test execution options and one for endpoint configuration. Endpoint configuration file is linked to base configuration files thus only base file path is given as parameter. Configuration files must be used, as they contain endpoint configuration for driver. &lt;br /&gt;
&lt;br /&gt;
Currently following example base configuration file is included in the package: &lt;br /&gt;
* blts-usb-testrunner-default.cnf&lt;br /&gt;
&lt;br /&gt;
The base files are linked to endpoint configuration files and following example is provided with test package: &lt;br /&gt;
* ep-configuration-default.cfg&lt;br /&gt;
&lt;br /&gt;
NOTE: Supported endpoint configurations differ from device to device and they should be modified according to test execution requirements. These configuration files are provided as examples and should not be used as such during proper test execution.&lt;br /&gt;
&lt;br /&gt;
For further instructions on creating and using configuration files, see [http://wiki.meego.com/Quality/TestSuite/USB_Driver_Test_Specification#Configuration_file_examples Configuration file examples].&lt;br /&gt;
&lt;br /&gt;
===Test asset specific instructions===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device by executing the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-usb-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Common test execution guidelines'''&lt;br /&gt;
&lt;br /&gt;
NOTE: &lt;br /&gt;
* Default config files are installed to /etc/blts &lt;br /&gt;
* Drivers must be initialized before running other test cases. &lt;br /&gt;
* All USB cables MUST be disconnected when executing initializations! &lt;br /&gt;
&lt;br /&gt;
NOTE: &lt;br /&gt;
All other gadget drivers MUST be unloaded before test execution in used DUT! &lt;br /&gt;
&lt;br /&gt;
You can use command lsmod to determine which modules are loaded in memory: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ lsmod&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See if some gadget driver is found. For example g_file_storage is a mass storage module, but this depends on used HW and SW. The module can be unloaded with following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ modprobe -r g_file_storage&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function  &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Use given host driver (default: blts_usb_host), for example -h blts_usb_host  &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Use given peripheral driver (default: blts_gadget), for example -h blts_gadget &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  Running test cases === &lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  USB - Setup host driver*  ||   &lt;br /&gt;
|-&lt;br /&gt;
|| USB - Setup peripheral driver#  ||  Use configuration file to create specific setup, bulk endpoints are created by default &lt;br /&gt;
|-&lt;br /&gt;
||  USB - Read test*  ||  Read data from endpoints &lt;br /&gt;
|-&lt;br /&gt;
||  USB - Write test*  ||  Write data to endpoints&lt;br /&gt;
|}&lt;br /&gt;
''* This test is run on host device.'' &amp;lt;br&amp;gt;&lt;br /&gt;
''# This test is run on peripheral device.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test case descriptions and execution commands:'''&lt;br /&gt;
&lt;br /&gt;
;* USB - Setup host driver&lt;br /&gt;
: * Setup host driver for test execution. Command line parameter:&lt;br /&gt;
: * -h &amp;lt;name&amp;gt; : Use &amp;lt;name&amp;gt; as host driver (default: blts_usb_host)&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-usb-tests -en &amp;quot;USB - Setup host driver&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* USB - Setup peripheral driver&lt;br /&gt;
: * Setup peripheral driver for test execution. Command line parameter:&lt;br /&gt;
: * -p &amp;lt;name&amp;gt; : Use &amp;lt;name&amp;gt; as peripheral driver (default: blts_gadget)&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-usb-tests -en &amp;quot;USB - Setup peripheral driver&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* USB - Read test&lt;br /&gt;
: * Read data from available endpoints. Command line parameter:&lt;br /&gt;
: * -h &amp;lt;name&amp;gt; : Use &amp;lt;name&amp;gt; as host driver (default: blts_usb_host)&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-usb-tests -en &amp;quot;USB - Read test&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* USB - Write test&lt;br /&gt;
: * Write data to available endpoints. Command line parameter:&lt;br /&gt;
: * -h &amp;lt;name&amp;gt; : Use &amp;lt;name&amp;gt; as host driver (default: blts_usb_host)&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-usb-tests -en &amp;quot;USB - Write test&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Configuration file examples === &lt;br /&gt;
The test asset allows you to change all endpoint parameters via configuration files. Since the USB (2.0) specification only states the valid range for different settings, it is possible to give any values as long as they fit inside these ranges. The test asset allows experimenting with different configurations and &amp;quot;triangulation&amp;quot; of what works and what does not. Naturally there are certain HW related restrictions such as total transfer capacity which obviously cannot be exceeded with endpoint configuration. Basic test asset configurations is done with base configuration files, such as provided &amp;lt;code&amp;gt;blts-usb-testrunner-default.cnf&amp;lt;/code&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# USB test case configuration for parameters&lt;br /&gt;
&lt;br /&gt;
######################&lt;br /&gt;
# General parameters #&lt;br /&gt;
######################&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
	name host_driver&lt;br /&gt;
	const &amp;quot;blts_usb_host&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
	name host_driver_path&lt;br /&gt;
	const &amp;quot;/usr/lib/tests/blts-usb-tests/&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
	name peripheral_driver&lt;br /&gt;
	const &amp;quot;blts_gadget&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
	name peripheral_driver_path&lt;br /&gt;
	const &amp;quot;/usr/lib/tests/blts-usb-tests/&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
	name data_transfer_timeout&lt;br /&gt;
	const &amp;quot;10000&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
	name usb_transfer_size&lt;br /&gt;
	const 4096&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
##########################&lt;br /&gt;
# Endpoint configuration #&lt;br /&gt;
##########################&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
	name ep_configuration_file&lt;br /&gt;
	const &amp;quot;/etc/blts/ep-configuration-default.cfg&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
################&lt;br /&gt;
# Driver setup #&lt;br /&gt;
################&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
	name &amp;quot;USB - Setup host driver&amp;quot;&lt;br /&gt;
	params host_driver host_driver_path&lt;br /&gt;
[end_test]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
	name &amp;quot;USB - Setup peripheral driver&amp;quot;&lt;br /&gt;
	params peripheral_driver peripheral_driver_path usb_transfer_size ep_configuration_file&lt;br /&gt;
[end_test]&lt;br /&gt;
&lt;br /&gt;
#######################&lt;br /&gt;
# Data transfer cases #&lt;br /&gt;
#######################&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
	name &amp;quot;USB - Read test&amp;quot;&lt;br /&gt;
	params host_driver host_driver_path peripheral_driver peripheral_driver_path usb_transfer_size&lt;br /&gt;
[end_test]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
	name &amp;quot;USB - Write test&amp;quot;&lt;br /&gt;
	params host_driver host_driver_path peripheral_driver peripheral_driver_path usb_transfer_size&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change the endpoint configuration, you will have to edit ep-configuration files. For example, provided &amp;lt;code&amp;gt;ep-configuration-default.cfg&amp;lt;/code&amp;gt; looks like this by default: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# device_speed used_speed max_power&lt;br /&gt;
high any 50&lt;br /&gt;
# endpoint type direction max_packet_size interval&lt;br /&gt;
1 bulk in 512 9&lt;br /&gt;
2 bulk out 512 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The lines starting with # are comments and document provided parameters. Device_speed is the highest speed used device is supposed to be able handle (any/low/full/high) and used_speed the operational speed during test execution. This can be used to force the device to use lower speed than normally would be used. To add new pair of bulk endpoints simply add following lines to the file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
3 bulk in 512 9&lt;br /&gt;
4 bulk out 512 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Do note that you can put different endpoint types to the same configuration so there can be any combination of bulk, interrupt and isochronous endpoints as long as device supports this.&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
Both Debian and RPM package is provided. The package includes both host and peripheral drivers in addition to test runner. This package can be installed on all devices under testing, although functionality depends on used hardware. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|  USB Specification || [http://www.usb.org/developers/docs/ USB documentation] &lt;br /&gt;
|-&lt;br /&gt;
||  blts-usb  || [http://gitorious.org/qa-tools/mcts/trees/master/mcts-blts/blts-usb/ blts-usb tests] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 8-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 15-Dec-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Page updated to refer blts usb test package 0.0.14&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/Input_Devices_Driver_Test_Specification</id>
		<title>Quality/TestSuite/Input Devices Driver Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/Input_Devices_Driver_Test_Specification"/>
				<updated>2010-12-16T13:28:23Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Building packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The blts-input-devices (0.0.2) test driver is intended for testing input devices using kernel's input subsystem. The input subsystem basically exposes the raw input events to userspace through a collection of character device nodes — one character device node per logical input device.&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
Test cases are:&lt;br /&gt;
* Input - Enumerate devices: Queries information (version, capabilities, name etc.) from all the input devices defined in configuration file. &lt;br /&gt;
* Input - Single touch: The test case expects user to touch 4 quadrants of the screen, one at a time. Position and received events are verified.&lt;br /&gt;
* Input - Multi-touch: The test case expects user to touch 2 quadrants of the screen simultaneously. Position and received events are verified.&lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current coverage for tests: &lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/Input-coverage.ods Input-coverage.ods]]&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
Hardware coverage includes mainly touchscreen. Enumerate devices -test case can be used to verify existence and basic functionality of any input device.&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
The test environment must have following packages installed:&lt;br /&gt;
;*libbltscommon1 &lt;br /&gt;
;*libX11 &lt;br /&gt;
&lt;br /&gt;
=== Building packages ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon-devel&lt;br /&gt;
* libX11-devel&lt;br /&gt;
* kernel-headers&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Configuration package ===&lt;br /&gt;
&lt;br /&gt;
The blts-input-devices-tests package is dependent on blts-input-devices-tests-config configuration file package. The packaging script pack.sh creates RPM package blts-input-devices-tests-config-example_{version}.rpm and it must be installed first. The configuration file /etc/blts/blts-input-devices-tests.cnf is copied in the test device during RPM installation.&lt;br /&gt;
&lt;br /&gt;
The configuration file package can be installed in the device by executing the command:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-input-devices-tests-config-example_{version}.rpm&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device by executing the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-input-devices-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -g || Do not grab the devices exclusively   &lt;br /&gt;
|-&lt;br /&gt;
|| -d || Debug specific device. This is for development purposes. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root privileges. &lt;br /&gt;
&lt;br /&gt;
===  Test cases === &lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
|| Input - Enumerate devices || &lt;br /&gt;
|-&lt;br /&gt;
|| Input - Single touch ||  &lt;br /&gt;
|-&lt;br /&gt;
|| Input - Multi-touch  ||   &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test case descriptions and execution commands:'''&lt;br /&gt;
&lt;br /&gt;
;* Input - Enumerate devices&lt;br /&gt;
: * Checks existence of input devices, and queries information from them.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-input-devices-tests -en &amp;quot;Input - Enumerate devices&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Input - Single touch&lt;br /&gt;
: * Touchscreen test with single touch point. The test case expects user to touch 4 quadrants of the screen, one at a time.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-input-devices-tests -en &amp;quot;Input - Single touch&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Input - Multi-touch&lt;br /&gt;
: * Touchscreen test with 2 (or more) touch points. The test case expects user to touch 2 quadrants of the screen simultaneously.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-input-devices-tests -en &amp;quot;Input - Multi-touch&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Configuration file examples === &lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located or if no configuration file is given, test driver tries to use default /etc/blts/blts-input-devices-tests.cnf&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;Input - Enumerate devices&amp;quot; case you can use: &lt;br /&gt;
&amp;lt;code&amp;gt;blts-input-devices-tests -l /var/log/tests/Enumerate_devices.log -en &amp;quot;Input - Enumerate devices&amp;quot; -C blts-input-devices-tests.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Input devices are platform specific. Modify the configuration file with correct input devices and settings if needed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Input devices to test (currently used only by Enumerate devices -test case)&lt;br /&gt;
# Give either an absolute path (for example &amp;quot;/dev/input/event1&amp;quot;), or just&lt;br /&gt;
# name of the device node (for example, &amp;quot;event1&amp;quot;).&lt;br /&gt;
[parameter]&lt;br /&gt;
	name input_devices&lt;br /&gt;
	const &amp;quot;event1 event3 event4&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# Used pointer device (currently only touchscreen devices are supported, for&lt;br /&gt;
# example mice will not work)&lt;br /&gt;
[parameter]&lt;br /&gt;
	name pointer_device&lt;br /&gt;
	const &amp;quot;event4&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# Screen orientation; 0 = TS and screen coordinate system is the same,&lt;br /&gt;
# 1 = swap X and Y axis&lt;br /&gt;
[parameter]&lt;br /&gt;
	name scr_orientation&lt;br /&gt;
	const 0&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# Screen size in pixels&lt;br /&gt;
[parameter]&lt;br /&gt;
	name scr_size&lt;br /&gt;
	const &amp;quot;864x480&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|| Linux kernel || [http://www.kernel.org/ Kernel sources] &lt;br /&gt;
|-&lt;br /&gt;
|| blts-input-devices || [http://gitorious.org/qa-tools/mcts/trees/master/mcts-blts/blts-input-devices/ blts-input-devices tests] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 10-Dec-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Page created (refers to blts-input-devices test package 0.0.2)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/Camera_Driver_Test_Specification</id>
		<title>Quality/TestSuite/Camera Driver Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/Camera_Driver_Test_Specification"/>
				<updated>2010-12-16T13:27:08Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Building packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
V4L2 API is a kernel interface for analog radio and video capture and output drivers.&lt;br /&gt;
&lt;br /&gt;
Blts-v4l2 package (0.3.8) is meant to test V4L2 functionality. The blts-v4l2 package tests camera driver functionality by checking e.g. capabilities and controls. There is also tests that stream frames (using XVideo) and take snapshots (saved as JPG pictures) using different resolutions. Some of these test cases also measure FPS rates. The audio part of the V4L2 API is not in the scope. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test cases are: &lt;br /&gt;
* Core-Camera-Open device: Try to open a V4L2 device &lt;br /&gt;
* Core-Camera-Read device: Open V4L2 device to requested width and height  &lt;br /&gt;
* Core-Camera-Check device controls: Enumerate through V4L2 device controls  &lt;br /&gt;
* Core-Camera-Check device capabilites: Check and print V4L2 device capabilities &lt;br /&gt;
* Core-Camera-Check device formats: Enumerate and print V4L2 device formats &lt;br /&gt;
* Core-Camera-Measure device stepping down resolution: Step down resolutions and calculate FPS using V4L2 device &lt;br /&gt;
* Core-Camera-Stream from device to screen: Stream frames from V4L2 device to screen using XVideo  &lt;br /&gt;
* Core-Camera-Measure device FPS with defined resolution: Use a given resolution and calculate FPS using V4L2 device  &lt;br /&gt;
* Core-Camera-Take picture as JPEG with device: Take one frame from V4L2 device and create a JPG file &lt;br /&gt;
* Core-Camera-Device enumeration: Enumerate V4L2 input and output devices and print supported standards &lt;br /&gt;
* Core-Camera-Stream from device and crop corners: Stream frames from V4L2 device to screen using XVideo and use cropping &lt;br /&gt;
* Core-Camera-Read from device using poll: As &amp;quot;Measure device FPS&amp;quot;, but use poll() to detect device readiness.&lt;br /&gt;
* Core-Camera-Test standard control settings: Enumerate all standard controls, and test each available control with suitable values &lt;br /&gt;
* Core-Camera-Test extended control settings: Enumerate all extended controls, and test each available control with suitable values&lt;br /&gt;
* Core-Camera-Check device FD priority: Init a device and check if it supports priorities &lt;br /&gt;
* Core-Camera-Stream from device and vary frame rate: Stream frames from V4L2 device to screen and vary frame rates and calculate FPS &lt;br /&gt;
* Core-Camera-Get stream quality setting: Stream frames from V4L2 and get the quality setting&lt;br /&gt;
* Core-Camera-Set stream quality setting to high: Set stream quality setting to high, stream from the device and check the setting is used&lt;br /&gt;
* Core-Camera-Check debug capability: Get state from driver to kernel log, API function doesn't need to be supported&lt;br /&gt;
* Core-Camera-Select output and stream: Selects and tests possible outputs of device &lt;br /&gt;
* Core-Camera-Select input and stream: Selects and tests possible inputs of device.&lt;br /&gt;
* Core-Camera-Test input device standards: Loops through V4L2 input devices and tests video standards&lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
Current IOCTL coverage for v4l2 tests: &lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/V4L2-coverage.ods V4l2-coverage.ods]]&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
At the moment test cases are configured to test main and front cameras. The audio functionality of the test device is excluded.&lt;br /&gt;
&lt;br /&gt;
===  Limitations === &lt;br /&gt;
* Test suite functionality depends on implementation of used device driver in v4l2. &lt;br /&gt;
&lt;br /&gt;
===  Future Improvements === &lt;br /&gt;
* More coverage with tests for v4l2. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
The test environment must have following packages installed:&lt;br /&gt;
;*libbltscommon1 &lt;br /&gt;
;*[[../Pixel Format Library‎ | libbltspixelformat1]]&lt;br /&gt;
;*libjpeg &lt;br /&gt;
;*libX11 &lt;br /&gt;
;*libXv&lt;br /&gt;
&lt;br /&gt;
=== Building packages ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon-devel &lt;br /&gt;
* [[../Pixel Format Library‎ | libbltspixelformat-devel]] &lt;br /&gt;
* libjpeg-devel&lt;br /&gt;
* libX11-devel&lt;br /&gt;
* libXv-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Configuration package ===&lt;br /&gt;
&lt;br /&gt;
The blts-v4l2-tests package is dependent on blts-v4l2-tests-config configuration file package. The packaging script pack.sh creates RPM package blts-v4l2-tests-config-example_{version}.rpm and it must be installed first. The configuration file /etc/blts/blts-v4l2-tests.cnf is copied in the test device during RPM installation.  &lt;br /&gt;
&lt;br /&gt;
The configuration file package can be installed in the device with a command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-v4l2-tests-config-example_{version}.rpm&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-v4l2-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The control setting test cases support external image verification tool.   &lt;br /&gt;
&lt;br /&gt;
'''Image verification'''&lt;br /&gt;
&lt;br /&gt;
The standard and extended control tests support verification of the camera snapshot image using an external tool. Image verification is enabled by specifying values for the &amp;lt;code&amp;gt;image_save_path&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;image_verify_tool&amp;lt;/code&amp;gt; global configuration parameters, and by giving the -i command line flag when running the test. Once a camera snapshot has been saved for a certain control setting, the tool given in &amp;lt;code&amp;gt;image_verify_tool&amp;lt;/code&amp;gt; is run with a command line like this: &lt;br /&gt;
&amp;lt;code&amp;gt;verify_tool &amp;lt;snapshot image name&amp;gt; &amp;lt;control name&amp;gt; &amp;lt;V4L2 control id&amp;gt; &amp;lt;control value&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The verification tool should return zero when the image is verified successfully, and a non-zero value when the verification fails. The output of the tool is appended to the log file of the test.&lt;br /&gt;
&lt;br /&gt;
'''Control value limits and test values'''&lt;br /&gt;
&lt;br /&gt;
The minimum and maximum values reported by the V4L2 driver can be compared with values specified in the configuration file. The test succeeds if the values match exactly, and fails otherwise. The minimum and maximum values are specified as global configuration parameters, with a special naming format: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dev&amp;lt;number of device&amp;gt;_&amp;lt;escaped control name&amp;gt;_min = &amp;lt;minimum value&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;dev&amp;lt;number of device&amp;gt;_&amp;lt;escaped control name&amp;gt;_max = &amp;lt;maximum value&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As the global configuration value identifiers cannot contain spaces or any of the /()[] characters, which may be present in the name of a V4L2 control, the control name must be escaped by replacing spaces with underscores, and by removing any prohibited characters from the name. For example, values for the control named &amp;lt;code&amp;gt;Exposure Time (us)&amp;lt;/code&amp;gt; on the device &amp;lt;code&amp;gt;/dev/video0&amp;lt;/code&amp;gt; could be provided like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dev0_Exposure_Time_us_min = 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;dev0_Exposure_Time_us_max = 100000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By default, the control tests use the minimum and maximum values reported by the V4L2 driver to test a control. Additional test values can be provided as global configuration parameters in the configuration file, using a format similar to the min/max format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dev&amp;lt;number of device&amp;gt;_&amp;lt;escaped control name&amp;gt;_testvalues = &amp;quot;&amp;lt;space-delimited list of values&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dev0_Exposure_Time_us_testvalues = &amp;quot;25000 50000 75000&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Print ioctl profiling data   &lt;br /&gt;
|-&lt;br /&gt;
|| -i || Save camera snapshot images to disk in control settings tests, and optionally verify them. Image save path and the verification tool are specified by the &amp;lt;code&amp;gt;image_save_path&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;image_verify_tool&amp;lt;/code&amp;gt; configuration parameters. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Test cases must be run with root privileges. &lt;br /&gt;
&lt;br /&gt;
===  Test cases === &lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Open device   ||   &lt;br /&gt;
|-&lt;br /&gt;
|| Core-Camera-Read device   ||  &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Check device controls  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Check device capabilites   ||  &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Check device formats  ||   &lt;br /&gt;
|-&lt;br /&gt;
|| Core-Camera-Measure device stepping down resolution ||   &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Stream from device to screen  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Measure device FPS with defined resolution ||  &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Take picture as JPEG with device   ||   &lt;br /&gt;
|-&lt;br /&gt;
|| Core-Camera-Device enumeration  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Stream from device and crop corners  ||   &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Read from device using poll  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Test standard control settings  || supports external image verification tool  &lt;br /&gt;
|-&lt;br /&gt;
|| Core-Camera-Test extended control settings  || supports external image verification tool&lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Check device FD priority   ||   &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Stream from device and vary frame rate  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Get stream quality setting   ||   &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Set stream quality setting to high   ||  &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Check debug capability  ||  not necessary supported by driver &lt;br /&gt;
|-&lt;br /&gt;
|| Core-Camera-Select output and stream  ||  &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Select input and stream ||   &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Camera-Test input device standards  ||  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test case descriptions and execution commands:'''&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Open device&lt;br /&gt;
: * Try to open a V4L2 device&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Open device&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Read device&lt;br /&gt;
: * Open V4L2 device to requested width and height&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Read device&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Check device controls&lt;br /&gt;
: * Enumerate through V4L2 device controls&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Check device controls&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Check device capabilites&lt;br /&gt;
: * Check and print V4L2 device capabilities&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Check device capabilites&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Check device formats&lt;br /&gt;
: * Enumerate and print V4L2 device formats&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Check device formats&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Measure device stepping down resolution&lt;br /&gt;
: * Step down resolutions and calculate FPS using V4L2 device&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Measure device stepping down resolution&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Stream from device to screen&lt;br /&gt;
: * Stream frames from V4L2 device to screen using XVideo&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Stream from device to screen&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Measure device FPS with defined resolution&lt;br /&gt;
: * Use a given resolution and calculate FPS using V4L2 device&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Measure device FPS with defined resolution&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Take picture as JPEG with device&lt;br /&gt;
: * Take one frame from V4L2 device and create a JPG file&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Take picture as JPEG with device&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Device enumeration&lt;br /&gt;
: * Enumerate V4L2 input and output devices and print supported standards&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Device enumeration&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Stream from device and crop corners&lt;br /&gt;
: * Stream frames from V4L2 device to screen using XVideo and use cropping&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Stream from device and crop corners&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Read from device using poll&lt;br /&gt;
: * Read/stream frames from device as with measure device FPS case, but use&lt;br /&gt;
: * poll() instead of select() to find out when the device is ready.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Read from device using poll&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Test standard control settings&lt;br /&gt;
: * Enumerate all standard controls, and test each available control with&lt;br /&gt;
: * min/max values and any configured values.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Test standard control settings&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Test extended control settings&lt;br /&gt;
: * Enumerate all extended controls, and test each available control with&lt;br /&gt;
: * min/max values and any configured values.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Test extended control settings&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Check device FD priority&lt;br /&gt;
: * Init a device and check if it supports priorities - VIDIOC_G_PRIORITY&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Check device FD priority&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Stream from device and vary frame rate&lt;br /&gt;
: * Stream frames from V4L2 device to screen using default frame rate and&lt;br /&gt;
: * calculate FPS, change frame rate and repeat streaming to compare FPS values.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Stream from device and vary frame rate&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Get stream quality setting&lt;br /&gt;
: * Stream frames from V4L2 device and get a default quality setting &lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Get stream quality setting&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Set stream quality setting to high&lt;br /&gt;
: * Stream frames from V4L2 device, set stream quality setting to high, stream from the device and check that high setting is used&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Set stream quality setting to high&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Check debug capability&lt;br /&gt;
: * Requests the driver to dump current state to kernel log. This API&lt;br /&gt;
: * call is specified so that driver doesn't have to support this.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Check debug capability&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Select input and stream&lt;br /&gt;
: * Tries different inputs and streams from those to the screen.&lt;br /&gt;
: * If no input available with device this test will force test - VIDIOC_S_INPUT&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Select input and stream&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
;* Core-Camera-Select output and stream&lt;br /&gt;
: * Tries different outputs of device.&lt;br /&gt;
: * If no output available with device this test will force test - VIDIOC_S_OUTPUT&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Select output and stream&amp;quot;&amp;lt;/code&amp;gt;	&lt;br /&gt;
&lt;br /&gt;
;* Core-Camera-Test input device standards&lt;br /&gt;
: * Loops through V4L2 input devices and tries to get current video standard,&lt;br /&gt;
: * then enumerates and sets supported standards one by one.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-v4l2-tests -en &amp;quot;Core-Camera-Test input device standards&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Configuration file examples === &lt;br /&gt;
To run test case with variable data you need to specify where configuration file is located or if no configuration file is given, test driver tries to use default /etc/blts/blts-v4l2-tests.cnf&lt;br /&gt;
&lt;br /&gt;
Edit the configuration file yourself if necessary. &lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;Core-Camera-Stream from device to screen&amp;quot; case you can use: &lt;br /&gt;
&amp;lt;code&amp;gt;blts-v4l2-tests -l /var/log/tests/Core-Camera-Stream_from_device_to_screen.log -en &amp;quot;Core-Camera-Stream from device to screen&amp;quot; -C example-blts-v4l2.cnf &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of Stream case variation (example-blts-v4l2.cnf): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Valid video devices for HW.&lt;br /&gt;
[parameter]&lt;br /&gt;
   name video_device&lt;br /&gt;
   const &amp;quot;/dev/video0&amp;quot; &amp;quot;/dev/video1&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name io_method_stream&lt;br /&gt;
   const &amp;quot;MMAP&amp;quot; &amp;quot;userptr&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
# Pixel formats (fourcc, as kernel v4l2 entries)&lt;br /&gt;
[parameter]&lt;br /&gt;
   name camera_pixel_format&lt;br /&gt;
   const &amp;quot;YUYV&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name camera_resolution_stream_all&lt;br /&gt;
   const &amp;quot;4016x3016&amp;quot; &amp;quot;2400x1812&amp;quot; &amp;quot;848x480&amp;quot; &amp;quot;640x480&amp;quot; &amp;quot;320x240&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;Core-Camera-Stream from device to screen&amp;quot;&lt;br /&gt;
   params video_device camera_pixel_format io_method_stream camera_resolution_stream_all&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  linux.bytesex.org  || [http://linux.bytesex.org/v4l2 video4linux website] &lt;br /&gt;
|-&lt;br /&gt;
||  www.linuxtv.org  || [http://www.linuxtv.org The LinuxTV project website] &lt;br /&gt;
|-&lt;br /&gt;
| blts-v4l2 || [http://gitorious.org/qa-tools/mcts/trees/master/mcts-blts/blts-v4l2 blts-v4l2 tests]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 8-Dec-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Documentation updated to refer blts-v4l2 test package 0.3.8&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/Bluetooth_Driver_Test_Specification</id>
		<title>Quality/TestSuite/Bluetooth Driver Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/Bluetooth_Driver_Test_Specification"/>
				<updated>2010-12-16T11:59:31Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Building packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Bluez is the current official Bluetooth protocol stack on Linux. It consists of kernel modules and a userspace library, with a set of tools for low-level configuration. It is used (roughly) analogously to the network subsystem, using sockets for communication. &lt;br /&gt;
&lt;br /&gt;
The blts-bluetooth test package (0.2.9) includes functional tests for the Bluez stack, currently consisting of device scan and simple L2CAP and RFCOMM connectivity tests, a test for link-level (only) connection using HCI and simple HCI transfer/receive ACL test data package test. A test case for probing the system for installed Bluetooth drivers and Bluez userspace components is included. Pairing (without services from system Bluetooth daemon) is also tested. &lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
The test package uses Bluez sockets with the libbluetooth functions &amp;lt;code&amp;gt;hci_get_route(), hci_open_dev(), hci_inquiry() &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;hci_read_remote_name()&amp;lt;/code&amp;gt;. The L2CAP tests also check some connection parameters with direct hci_send_req() calls. HCI link-level connection is tested with &amp;lt;code&amp;gt;hci_create_connection()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;hci_disconnect()&amp;lt;/code&amp;gt;. HCI transfer/receive ACL data tests utilize hci_filter structs and socket() function with parameters AF_BLUETOOTH, SOCK_RAW and BTPROTO_HCI while receiving ACL test data. Incoming connections are audited by tracing the sequence with hcidump and analysing the trace. &lt;br /&gt;
&lt;br /&gt;
The HCI name change test cases utilize hci library functions &amp;lt;code&amp;gt;hci_read_local_name(), hci_write_local_name()&amp;lt;/code&amp;gt; to change and reset name of the device and &amp;lt;code&amp;gt;hci_read_remote_name()&amp;lt;/code&amp;gt; function to verify changed name. The class change test cases utilize hci library functions &amp;lt;code&amp;gt;hci_read_class_of_dev()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;hci_write_class_of_dev()&amp;lt;/code&amp;gt; to change and reset the class of the device and &amp;lt;code&amp;gt;hci_inquiry()&amp;lt;/code&amp;gt; function to verify changed device class.&lt;br /&gt;
&lt;br /&gt;
The HCI controller information test cases utilize hci library functions &amp;lt;code&amp;gt;hci_read_{local/remote}_version(), hci_read_{local/remote}_features(), hci_read_{local/remote}_ext_features()&amp;lt;/code&amp;gt; to collect data and the connected link information test cases utilize hci library functions &amp;lt;code&amp;gt;hci_read_rssi(), hci_read_link_quality(), hci_read_transmit_power_level(), hci_read_afh_map(), hci_read_clock(), hci_read_clock_offset()&amp;lt;/code&amp;gt; to collect data.&lt;br /&gt;
&lt;br /&gt;
The pairing test performs authentication and pairing for a connected link, according to the Bluetooth specification. Due to possible interference from the Bluetooth daemon in the system, it is shut down for the duration of the test, and the test needs to perform simplified device initialisation. &lt;br /&gt;
&lt;br /&gt;
Current coverage of the Bluetooth HCI API: &lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/BT-HCI-coverage.ods BT-HCI-coverage.ods]]&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
&lt;br /&gt;
Hardware coverage includes the data path through the default Bluetooth adapter to the antenna. &lt;br /&gt;
&lt;br /&gt;
===  Limitations === &lt;br /&gt;
While the device scan does list all found devices, the actual validation of the result is left to the tester. &lt;br /&gt;
&lt;br /&gt;
===  Future Improvements === &lt;br /&gt;
Future test cases may include further tests for HCI link control, and exploring different connection parameter combinations in existing tests. Testing protocols and profiles further up in the Bluetooth stack is currently beyond scope for the test suite. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
The tests require two test devices with Bluetooth adapters, both running the test program. Several test cases are meant to run in pairs; see below. &lt;br /&gt;
&lt;br /&gt;
hciconfig can be used to find out the required mac addresses:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ hciconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will print out all active bluetooth devices and their addresses. The output is&lt;br /&gt;
similar to following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hci0:   Type: USB&lt;br /&gt;
        BD Address: 00:15:83:18:C0:30 ACL MTU: 310:10 SCO MTU: 64:8&lt;br /&gt;
        UP RUNNING PSCAN &lt;br /&gt;
        RX bytes:1007 acl:0 sco:0 events:30 errors:0&lt;br /&gt;
        TX bytes:367 acl:0 sco:0 commands:28 errors:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The test environment must have following packages installed:&lt;br /&gt;
;*libbltscommon1 &lt;br /&gt;
;*bluez &lt;br /&gt;
;*bluez-hcidump &lt;br /&gt;
&lt;br /&gt;
===Building packages===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon-devel &lt;br /&gt;
* bluez-libs-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
===Configuration package===&lt;br /&gt;
&lt;br /&gt;
The bluetooth test package is not dependent on any configuration file package like some other blts test packages. The configuration file /etc/blts/blts-bluetooth-tests.cnf is copied in the test device during RPM installation.  &lt;br /&gt;
&lt;br /&gt;
===Test asset specific instructions===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-bluetooth-tests_{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Test case execution instructions for high-level cases:'''&lt;br /&gt;
&lt;br /&gt;
The Scan and Software check tests run on a single device, and don't require extra hardware. Having visible Bluetooth devices present during the Scan test may help evaluating the test results.&lt;br /&gt;
&lt;br /&gt;
The L2CAP and RFCOMM test cases are executed with one device running the test &amp;quot;&amp;lt;code&amp;gt;Core-Bluetooth receive L2CAP connection&amp;lt;/code&amp;gt;&amp;quot; or &amp;quot;&amp;lt;code&amp;gt;Core-Bluetooth receive RFCOMM connection&amp;lt;/code&amp;gt;&amp;quot;, and the other the corresponding client test cases.&lt;br /&gt;
&lt;br /&gt;
'''Test case execution instructions for HCI test cases: '''&lt;br /&gt;
&lt;br /&gt;
When executing HCI tests, the first step is to verify that hci device is available by typing hciconfig and then try to open and initialize it with command hciconfig hciX up. &lt;br /&gt;
&lt;br /&gt;
Some of the HCI test cases are counter parts to other HCI test cases and these must be executed at the same time with two devices so that the changing/receiving side must be executed first.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Change name with HCI &amp;lt;-&amp;gt; Verify name with remote HCI&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The verify test case connects to the other bluetooth device and verifies that the device name is expected one while the changing side is waiting until other bluetooth device is verified name change.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Change class with HCI &amp;lt;-&amp;gt; Verify class with remote HCI&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The verify test case connects to the other bluetooth device and verifies that the class of the device is expected one while the changing side is waiting until other bluetooth device is verified class change.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;HCI transfer ACL data package &amp;lt;-&amp;gt; HCI receive ACL data package&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The transfer test case sends ACL test data packet containing predefined test data while the receive test case waits and receives the ACL test data packet and verifies the content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Read HCI controller information local &amp;lt;-&amp;gt; Read HCI controller information remote&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The remote test case collects information about other bluetooth device, connect to that device and sends collected information package while the local test case waits and receives the information package and verifies that locally collected information matches with received data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Read connected link information local &amp;lt;-&amp;gt; Read connected link information remote&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The remote test case connects to other bluetooth device using multiple L2CAP channels, collects information about connected link and sends collected information package while the local test case waits and receives the information package and verifies that locally collected information matches with received data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Authentication with pairing as master / slave&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
As initiating device (master), the test case connects to another Bluetooth device and requests authentication, triggering pairing. The pairing sequence is completed with a predetermined PIN. The slave device waits for the connection and attempts pairing as the request arrives. Either end of the test can be substituted with any Bluetooth device supporting the functionality. '''The device(s) running this test case must not have the Bluetooth daemon (bluetoothd) running.''' &lt;br /&gt;
&lt;br /&gt;
===Test case arguments===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -m || remote/server MAC address (format: &amp;quot;00:00:00:00:00&amp;quot;)          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Running test cases===&lt;br /&gt;
&lt;br /&gt;
Test cases execution must be done with root privileges.&lt;br /&gt;
&lt;br /&gt;
Test cases marked with '''bold''' require that remote device MAC is defined in configuration file or -m command line &lt;br /&gt;
parameter is given. NOTE: hciconfig tool can be used to check BD Address in the remote device.&lt;br /&gt;
&lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-    &lt;br /&gt;
||  Core-Bluetooth scan || validation of the scan results is left to the tester&lt;br /&gt;
|-&lt;br /&gt;
||  Core-Bluetooth drivers and userspace check || verified components are listed in file blts-bluetooth-req_files.cfg &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Bluetooth receive L2CAP connection || &lt;br /&gt;
|-&lt;br /&gt;
||  '''Core-Bluetooth connect with L2CAP || remote must be running receive L2CAP connection test &lt;br /&gt;
|-&lt;br /&gt;
||  '''Core-Bluetooth ping-pong transfer with L2CAP || remote must be running receive L2CAP connection test&lt;br /&gt;
|-&lt;br /&gt;
||  Core-Bluetooth receive RFCOMM connection || &lt;br /&gt;
|-&lt;br /&gt;
||  '''Core-Bluetooth connect with RFCOMM || remote must be running receive RFCOMM connection test&lt;br /&gt;
|-&lt;br /&gt;
||  '''Core-Bluetooth ping-pong transfer with RFCOMM || remote must be running receive RFCOMM connection test&lt;br /&gt;
|-&lt;br /&gt;
||  '''Core-Bluetooth connect with HCI || &lt;br /&gt;
|-&lt;br /&gt;
||  '''Core-Bluetooth transfer ACL data with HCI || remote must be running receive ACL data test &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Bluetooth receive ACL data with HCI || &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Bluetooth change name with HCI || &lt;br /&gt;
|-&lt;br /&gt;
||  '''Core-Bluetooth verify name with remote HCI || remote must be running change name test&lt;br /&gt;
|-&lt;br /&gt;
||  Core-Bluetooth change class with HCI || &lt;br /&gt;
|-&lt;br /&gt;
||  '''Core-Bluetooth verify class with remote HCI || remote must be running change class test&lt;br /&gt;
|-&lt;br /&gt;
||  '''Core-Bluetooth reset connection with HCI || &lt;br /&gt;
|-&lt;br /&gt;
||  Core-Bluetooth audit incoming HCI connection || use e.g connect with HCI or reset connection with HCI test case as pair&lt;br /&gt;
|-&lt;br /&gt;
||  Core-Bluetooth Read HCI controller information local || &lt;br /&gt;
|-&lt;br /&gt;
||  '''Core-Bluetooth Read HCI controller information remote || remote must be running controller information local test case&lt;br /&gt;
|-&lt;br /&gt;
||  Core-Bluetooth Read connected link information local || &lt;br /&gt;
|-&lt;br /&gt;
||  '''Core-Bluetooth Read connected link information remote || remote must be running connected link information local test case&lt;br /&gt;
|-&lt;br /&gt;
||  '''Core-Bluetooth authentication with pairing as master || requires that bluetoothd is stopped on the test device&lt;br /&gt;
|-&lt;br /&gt;
||  Core-Bluetooth authentication with pairing as slave || requires that bluetoothd is stopped on the test device&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Test case descriptions and execution commands:'''&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth scan Parameters ( no parameters )&lt;br /&gt;
: * Perform inquiry with first available Bluetooth adapter, resolving names for any found remote devices. &lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth scan&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth drivers and userspace check Parameters ( no parameters )&lt;br /&gt;
: * Verify that Bluez-related components are available and correctly installed on the system.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth drivers and userspace check&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth receive L2CAP connection Parameters ( no parameters )&lt;br /&gt;
: * Start test server for use with L2CAP tests. The server stops after one client connection has been served.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth connect with L2CAP&amp;quot; as counterpart and must be executed first.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth receive L2CAP connection&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth connect with L2CAP Parameters &amp;lt;server-mac&amp;gt;&lt;br /&gt;
: * Connect with L2CAP to test server running on device &amp;lt;server-mac&amp;gt;, then disconnect.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth receive L2CAP connection&amp;quot; as counterpart and must be executed when remote side is waiting.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth connect with L2CAP&amp;quot; -m 00:00:00:00:00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth ping-pong transfer with L2CAP Parameters &amp;lt;server-mac&amp;gt;&lt;br /&gt;
: * Connect with L2CAP to test server running on device &amp;lt;server-mac&amp;gt;, transmit a short message and verify the returned reply, then disconnect.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth receive L2CAP connection&amp;quot; as counterpart and must be executed when remote side is waiting.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth ping-pong transfer with L2CAP&amp;quot; -m 00:00:00:00:00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth receive RFCOMM connection Parameters ( no parameters )&lt;br /&gt;
: * Start test server for use with RFCOMM tests. The server stops after one client connection has been served.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth connect with RFCOMM&amp;quot; as counterpart and must be executed first.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth receive RFCOMM connection&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth connect with RFCOMM Parameters &amp;lt;server-mac&amp;gt;&lt;br /&gt;
: * Connect with RFCOMM to test server running on device &amp;lt;server-mac&amp;gt;, then disconnect.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth receive RFCOMM connection&amp;quot; as counterpart and must be executed when remote side is waiting.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth connect with RFCOMM&amp;quot; -m 00:00:00:00:00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth ping-pong transfer with RFCOMM Parameters &amp;lt;server-mac&amp;gt;&lt;br /&gt;
: * Connect with RFCOMM to test server running on device &amp;lt;server-mac&amp;gt;, transmit a short message and verify the returned reply, then disconnect.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth receive RFCOMM connection&amp;quot; as counterpart and must be executed when remote side is waiting.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth ping-pong transfer with RFCOMM&amp;quot; -m 00:00:00:00:00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth connect with HCI Parameters &amp;lt;remote-mac&amp;gt;&lt;br /&gt;
: * Connect just the link to device &amp;lt;remote-mac&amp;gt;, wait a while, the disconnect.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth connect with HCI&amp;quot; -m 00:00:00:00:00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth receive ACL data with HCI Parameters ( no parameters )&lt;br /&gt;
: * Start receiving ACL data packets from hci device until ACL test data packet arrives.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth transfer ACL data with HCI&amp;quot; as counterpart and must be executed first.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth receive ACL data with HCI&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth transfer ACL data with HCI Parameters &amp;lt;remote-mac&amp;gt;&lt;br /&gt;
: * Connect to device &amp;lt;remote-mac&amp;gt;, and send ACL data packet.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth receive ACL data with HCI&amp;quot; as counterpart and must be executed when remote side is waiting.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth transfer ACL data with HCI&amp;quot; -m 00:00:00:00:00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth change name with HCI Parameters ( no parameters )&lt;br /&gt;
: * Change local name and wait until other Bluetooth device is verified name change.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth verify name with remote HCI&amp;quot; as counterpart and must be executed first.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth change name with HCI&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth verify name with remote HCI Parameters &amp;lt;remote-mac&amp;gt;&lt;br /&gt;
: * Connect to device &amp;lt;remote-mac&amp;gt;, and verify name of the device.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth change name with HCI&amp;quot; as counterpart and must be executed when remote side is waiting.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth verify name with remote HCI&amp;quot; -m 00:00:00:00:00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth change class with HCI Parameters ( no parameters )&lt;br /&gt;
: * Change class of device and wait until other Bluetooth device is verified class change.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth verify class with remote HCI&amp;quot; as counterpart and must be executed first.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth change class with HCI&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth verify class with remote HCI Parameters &amp;lt;remote-mac&amp;gt;&lt;br /&gt;
: * Connect to device &amp;lt;remote-mac&amp;gt;, and verify class of the device.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth change class with HCI&amp;quot; as counterpart and must be executed when remote side is waiting.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth verify class with remote HCI&amp;quot; -m 00:00:00:00:00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth reset connection with HCI Parameters &amp;lt;remote-mac&amp;gt;&lt;br /&gt;
: * Connect, reset connection and connect again to &amp;lt;remote-mac&amp;gt;, wait a while and disconnect.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth reset connection with HCI&amp;quot; -m 00:00:00:00:00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth audit incoming HCI connection Parameters ( no parameters )&lt;br /&gt;
: * Wait for incoming connection and trace HCI events and commands. Sequence is audited for test pass/fail. Test requires tester to establish some level of Bluetooth connection to the device; for example, starting pairing with a mobile handset and cancelling out is enough. Running any connect test from the counterpart also works. Start this test case first in the test device and after that, when test case is waiting incoming connection, do the pairing step or execute some other HCI connection test case e.g. &amp;quot;Core-Bluetooth connect with HCI&amp;quot;. &lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth audit incoming HCI connection&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth Read HCI controller information local Parameters ( no parameters )&lt;br /&gt;
: * Read information about local device, create L2CAP socket and wait for information packet from remote device. Verify that locally collected information matches with received data.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth Read HCI controller information remote&amp;quot; as counterpart and must be executed first.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth Read HCI controller information local&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth Read HCI controller information remote Parameters &amp;lt;remote-mac&amp;gt;&lt;br /&gt;
: * Collect information about remote device (other DUT), connect to device &amp;lt;remote-mac&amp;gt;, and send collected information package with L2CAP connection to remote side.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth Read HCI controller information local&amp;quot; as counterpart and must be executed when remote side is waiting.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth Read HCI controller information remote&amp;quot; -m 00:00:00:00:00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth Read connected link information local Parameters ( no parameters )&lt;br /&gt;
: * Create L2CAP sockets with multiple channels, read information about connected links, and wait for link information packet from remote device. Verify that locally collected link information matches with received data.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth Read connected link information remote&amp;quot; as counterpart and must be executed first.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth Read connected link information local&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth Read connected link information remote Parameters &amp;lt;remote-mac&amp;gt;&lt;br /&gt;
: * Connect to device &amp;lt;remote-mac&amp;gt; using multiple channels (other DUT), collect information about connected links, and send collected link information package with L2CAP connection to remote side.&lt;br /&gt;
: * This test requires &amp;quot;Core-Bluetooth Read connected link information local&amp;quot; as counterpart and must be executed when remote side is waiting.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth Read connected link information remote&amp;quot; -m 00:00:00:00:00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth authentication with pairing as master Parameters &amp;lt;remote-mac&amp;gt;&lt;br /&gt;
: * Perform pairing with another bluetooth device. The device under test initiates the pairing.&lt;br /&gt;
: * Running this test requires stopping bluetoothd on the test device (as root, try &amp;lt;code&amp;gt;$ invoke-rc.d bluetooth stop&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;$ initctl stop bluetoothd&amp;lt;/code&amp;gt; depending on distribution).&lt;br /&gt;
: * Set the &amp;lt;remote-mac&amp;gt; to the Bluetooth MAC of the other device.&lt;br /&gt;
: * Only one device needs to run the test software; the other can be any Bluetooth device (that can use the given PIN). In this case, the tester  needs to enter the PIN manually within the timeout period on the other device. The PIN used is &amp;quot;1234&amp;quot;. The timeout is 10 seconds for each test step. If both ends run the test (one as master, one as slave), this is taken care of automatically.&lt;br /&gt;
: * This test can be run with &amp;quot;Core-Bluetooth authentication with pairing as slave&amp;quot; as counterpart and must be executed when remote side is waiting.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth authentication with pairing as master&amp;quot; -m 00:00:00:00:00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Core-Bluetooth authentication with pairing as slave Parameters (none)&lt;br /&gt;
: * Perform pairing with another bluetooth device. The device under test waits for incoming pairing request.&lt;br /&gt;
: * Running this test requires stopping bluetoothd on the test device (as root, try &amp;lt;code&amp;gt;$ invoke-rc.d bluetooth stop&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;$ initctl stop bluetoothd&amp;lt;/code&amp;gt; depending on distribution).&lt;br /&gt;
: * Only one device needs to run the test software; the other can be any Bluetooth device (that can use the given PIN). In this case, the tester needs to enter the PIN manually within the timeout period on the other device. The PIN used is &amp;quot;1234&amp;quot;. The timeout is 10 seconds for each test step. If both ends run the test (one as master, one as slave), this is taken care of automatically.&lt;br /&gt;
: * This test can be run with &amp;quot;Core-Bluetooth authentication with pairing as master&amp;quot; as counterpart and must be executed first.&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-bluetooth-tests -en &amp;quot;Core-Bluetooth authentication with pairing as slave&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuration file examples===&lt;br /&gt;
&lt;br /&gt;
To run test cases with variable data you need to specify where configuration file is located or if no configuration file is given, test driver tries to use default /etc/blts/blts-bluetooth-tests.cnf &lt;br /&gt;
&lt;br /&gt;
The configuration file must be edited to match your test environment (optionally command line parameter -m can be used to override mac_address parameter)&lt;br /&gt;
&lt;br /&gt;
To run &amp;quot;Core-Bluetooth connect with HCI&amp;quot; case for example, execute the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;blts-bluetooth-tests -l /var/log/tests/Core-Bluetooth_connect_with_HCI.log -en &amp;quot;Core-Bluetooth connect with HCI&amp;quot; -m 00:00:00:00:00:00 -C /etc/blts/blts-bluetooth-tests.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of BT configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Parameter configuration for blts-bluetooth&lt;br /&gt;
&lt;br /&gt;
# MAC address - used in test cases where another BT device is needed&lt;br /&gt;
# NOTE: command line parameter -m (mac_address) overrides this parameter&lt;br /&gt;
&lt;br /&gt;
[globals]&lt;br /&gt;
	mac_address &amp;quot;00:00:00:00:00:00&amp;quot;&lt;br /&gt;
[end_globals]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  Bluez  || [http://www.bluez.org/ Bluez stack home page] &lt;br /&gt;
|-&lt;br /&gt;
||  Bluetooth  || [http://www.bluetooth.org/ Bluetooth] &lt;br /&gt;
|-&lt;br /&gt;
||  blts-bluetooth  || [http://gitorious.org/qa-tools/mcts/trees/master/mcts-blts/blts-bluetooth/ blts-bluetooth tests] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 8-Dec-2010 || [mailto:aki.nyman@digia.com Aki Nyman] || Draft || Documentation updated to refer blts-bluetooth test package 0.2.9&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/Audio_Driver_Test_Specification</id>
		<title>Quality/TestSuite/Audio Driver Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/Audio_Driver_Test_Specification"/>
				<updated>2010-12-16T11:57:20Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Building packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux operating system.&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
===  Software Coverage ===&lt;br /&gt;
&lt;br /&gt;
blts-alsa-core package uses the interface specified in asound.h to test kernel's sound core and drivers. ALSA's user space library (alsa-lib) is not used. In addition the test asset uses V4L2 API to control FM tuner.&lt;br /&gt;
&lt;br /&gt;
Current BLTS ALSA core test coverage matrix:&lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/ALSA-core-coverage.ods ALSA-core-coverage.ods]]&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage ===&lt;br /&gt;
&lt;br /&gt;
Hardware coverage includes audio devices (soundcard, FM radio, etc)&lt;br /&gt;
&lt;br /&gt;
===  Limitations ===&lt;br /&gt;
&lt;br /&gt;
The tests do not currently support verifying the sound passing through the audio path. Instead, the tester needs to listen to the produced audio to determine final results.&lt;br /&gt;
&lt;br /&gt;
Support for various playback and capture parameters is missing, such as unsigned sample formats, and memory mapped non-interleaved access method. See section &amp;quot;Configuration file format&amp;quot; for supported parameters.&lt;br /&gt;
&lt;br /&gt;
===  Future Improvements ===&lt;br /&gt;
&lt;br /&gt;
Extend coverage, add support for various missing PCM settings.&lt;br /&gt;
&lt;br /&gt;
Recorded PCM data should be stored to a file for external verification, or the data should be verified by the test asset automatically.&lt;br /&gt;
&lt;br /&gt;
===Building packages===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
;*libbltscommon-devel&lt;br /&gt;
;*kernel-headers&lt;br /&gt;
;*dbus-glib-devel&lt;br /&gt;
;*glib2-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
The test environment must have following packages installed:&lt;br /&gt;
;*libbltscommon1&lt;br /&gt;
&lt;br /&gt;
The test package and associated configuration pacakge can be installed in the device with a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -ivh blts-alsa-core-tests-{version}.rpm blts-alsa-core-tests-config-{platform}-{version}.rpm &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Configuration package/file is platform dependant, see section &amp;quot;Configuration&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Run as root:&lt;br /&gt;
&amp;lt;code&amp;gt; $ blts-alsa-core-tests&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will execute the test cases using default configuration file, which is /etc/blts/blts-alsa-core.cnf&lt;br /&gt;
&lt;br /&gt;
By default the test results are printed to terminal and also to /var/log/tests/blts_alsa_core.txt.&lt;br /&gt;
&lt;br /&gt;
Possible arguments for blts_alsa_core_test;&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Enables profiling of ioctl calls          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test case descriptions and execution commands:'''&lt;br /&gt;
&lt;br /&gt;
The test cases are:&lt;br /&gt;
&lt;br /&gt;
;* ALSA presence check&lt;br /&gt;
: * checks needed /dev/snd* entries and modules&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-alsa-core-tests -en &amp;quot;ALSA presence check&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Open and close PCM devices&lt;br /&gt;
: * opens and queries basic information from all available PCM devices&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-alsa-core-tests -en &amp;quot;Open and close PCM devices&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Open and close timer&lt;br /&gt;
: * opens and queries basic information from ALSA timer&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-alsa-core-tests -en &amp;quot;Open and close timer&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Open and close controls&lt;br /&gt;
: * opens and queries basic information from control devices&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-alsa-core-tests -en &amp;quot;Open and close controls&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Open and close hwdeps&lt;br /&gt;
: * opens and queries basic information from hw dependency -devices&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-alsa-core-tests -en &amp;quot;Open and close hwdeps&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Enumerate control elements&lt;br /&gt;
: * queries information of all control elements and their current settings from all control devices&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-alsa-core-tests -en &amp;quot;Enumerate control elements&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Power management&lt;br /&gt;
: * sets and queries power state from all devices&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-alsa-core-tests -en &amp;quot;Power management&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Enumerate devices with control interface&lt;br /&gt;
: * Queries information about all pcm, hw dep and rawmidi devices from control device&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-alsa-core-tests -en &amp;quot;Enumerate devices with control interface&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;* Add and remove control element&lt;br /&gt;
: * Creates, replaces and removes user control element. Tests also element lock/unlock&lt;br /&gt;
: * &amp;lt;code&amp;gt;$ blts-alsa-core-tests -en &amp;quot;Add and remove control element&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rest of the test cases are generated from given configuration file, see next section.&lt;br /&gt;
&lt;br /&gt;
===  Configuration ===&lt;br /&gt;
&lt;br /&gt;
Configuration file defines ALSA mixer (control) settings and used playback and recording parameters. These settings depend on platform.&lt;br /&gt;
&lt;br /&gt;
Configuration file example (Intel HDA based soundcard);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[defaults]&lt;br /&gt;
   [control]&lt;br /&gt;
      card 0&lt;br /&gt;
      set &amp;quot;Master Playback Volume&amp;quot; max&lt;br /&gt;
      set &amp;quot;PCM Playback Volume&amp;quot; max&lt;br /&gt;
      set &amp;quot;Master Playback Switch&amp;quot; off&lt;br /&gt;
      set &amp;quot;Headphone Playback Switch&amp;quot; off&lt;br /&gt;
      set &amp;quot;Front Playback Switch&amp;quot; off&lt;br /&gt;
      set &amp;quot;Capture Switch&amp;quot; off&lt;br /&gt;
      set &amp;quot;IEC958 Playback Switch&amp;quot; off&lt;br /&gt;
      set &amp;quot;IEC958 Default PCM Playback Switch&amp;quot; off&lt;br /&gt;
   [end_control]&lt;br /&gt;
[end_defaults]&lt;br /&gt;
&lt;br /&gt;
[testset]&lt;br /&gt;
   description &amp;quot;front headphone&amp;quot;&lt;br /&gt;
   [control]&lt;br /&gt;
      card 0&lt;br /&gt;
      set &amp;quot;Master Playback Volume&amp;quot; max&lt;br /&gt;
      set &amp;quot;PCM Playback Volume&amp;quot; max&lt;br /&gt;
      set &amp;quot;Master Playback Switch&amp;quot; on&lt;br /&gt;
      set &amp;quot;Headphone Playback Switch&amp;quot; on&lt;br /&gt;
      set &amp;quot;Front Playback Switch&amp;quot; on&lt;br /&gt;
   [end_control]&lt;br /&gt;
&lt;br /&gt;
   [playback]&lt;br /&gt;
      card 0&lt;br /&gt;
      device 0&lt;br /&gt;
      rates 44100 96000 192000&lt;br /&gt;
      formats S16_LE&lt;br /&gt;
      channels 2&lt;br /&gt;
      access INTERLEAVED MMAP_INTERLEAVED&lt;br /&gt;
      hw_resampling 1&lt;br /&gt;
      async SYNC&lt;br /&gt;
      duration 5&lt;br /&gt;
      freq 1000&lt;br /&gt;
   [end_playback]&lt;br /&gt;
[end_testset]&lt;br /&gt;
&lt;br /&gt;
[testset]&lt;br /&gt;
   description &amp;quot;front mic with max volume&amp;quot;&lt;br /&gt;
   [control]&lt;br /&gt;
      card 0&lt;br /&gt;
      set &amp;quot;Input Source&amp;quot; &amp;quot;Front Mic&amp;quot;&lt;br /&gt;
      set &amp;quot;Capture Switch&amp;quot; on&lt;br /&gt;
      set &amp;quot;Capture Volume&amp;quot; max&lt;br /&gt;
      set &amp;quot;Front Mic Boost&amp;quot; min&lt;br /&gt;
   [end_control]&lt;br /&gt;
&lt;br /&gt;
   [recording]&lt;br /&gt;
      card 0&lt;br /&gt;
      device 0&lt;br /&gt;
      rates 44100 96000 192000&lt;br /&gt;
      formats S16_LE&lt;br /&gt;
      channels 2&lt;br /&gt;
      access INTERLEAVED MMAP_INTERLEAVED&lt;br /&gt;
      hw_resampling 1&lt;br /&gt;
      duration 5&lt;br /&gt;
   [end_recording]&lt;br /&gt;
[end_testset]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above configuration file produces following test cases:&amp;lt;code&amp;gt;&lt;br /&gt;
* PCM playback front headphone (0:0 44100 2 INTERLEAVED S16_LE SYNC)&lt;br /&gt;
* PCM playback front headphone (0:0 44100 2 MMAP_INTERLEAVED S16_LE SYNC)&lt;br /&gt;
* PCM playback front headphone (0:0 96000 2 INTERLEAVED S16_LE SYNC)&lt;br /&gt;
* PCM playback front headphone (0:0 96000 2 MMAP_INTERLEAVED S16_LE SYNC)&lt;br /&gt;
* PCM playback front headphone (0:0 192000 2 INTERLEAVED S16_LE SYNC)&lt;br /&gt;
* PCM playback front headphone (0:0 192000 2 MMAP_INTERLEAVED S16_LE SYNC)&lt;br /&gt;
* PCM recording front mic with max volume (0:0 44100 2 INTERLEAVED S16_LE)&lt;br /&gt;
* PCM recording front mic with max volume (0:0 44100 2 MMAP_INTERLEAVED S16_LE)&lt;br /&gt;
* PCM recording front mic with max volume (0:0 48000 2 INTERLEAVED S16_LE)&lt;br /&gt;
* PCM recording front mic with max volume (0:0 48000 2 MMAP_INTERLEAVED S16_LE)&lt;br /&gt;
* PCM recording front mic with max volume (0:0 96000 2 INTERLEAVED S16_LE)&lt;br /&gt;
* PCM recording front mic with max volume (0:0 96000 2 MMAP_INTERLEAVED S16_LE)&lt;br /&gt;
* PCM recording front mic with max volume (0:0 192000 2 INTERLEAVED S16_LE)&lt;br /&gt;
* PCM recording front mic with max volume (0:0 192000 2 MMAP_INTERLEAVED S16_LE)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each [testset] can contain multiple [playback], [recording] and [control] sections. This allows simultaneous recording and playback cases, such as playback to phone's earpiece while recording from the mic. Simplified example;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[testset]&lt;br /&gt;
   description &amp;quot;playback and recording&amp;quot;&lt;br /&gt;
   [control]&lt;br /&gt;
   ...&lt;br /&gt;
   [end_control]&lt;br /&gt;
&lt;br /&gt;
   [playback]&lt;br /&gt;
   ...&lt;br /&gt;
   [end_playback]&lt;br /&gt;
&lt;br /&gt;
   [recording]&lt;br /&gt;
   ...&lt;br /&gt;
   [end_recording]&lt;br /&gt;
[end_testset]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuration file format ==&lt;br /&gt;
&lt;br /&gt;
'''[defaults] section:'''&lt;br /&gt;
&lt;br /&gt;
Defines default control element settings. These settings are applied before and after each test case. Defaults -section can contain only [control] section(s).&lt;br /&gt;
&lt;br /&gt;
'''[testset] section: '''&lt;br /&gt;
&lt;br /&gt;
Defines a set of settings for playback and/or recording tests. A configuration file can contain multiple testset sections, and settings within one section do not interfere with other testset sections. If testset section contains multiple playback/recording sections, the tests from each recording/playback section are executed in parallel.&lt;br /&gt;
&lt;br /&gt;
Possible variables:&lt;br /&gt;
* description &amp;quot;&amp;lt;short description&amp;gt;&amp;quot;: Description for the testset.&lt;br /&gt;
&lt;br /&gt;
'''[control] section: '''&lt;br /&gt;
&lt;br /&gt;
Defines mixer (control) settings. The settings are applied in the given order before playback or recording.&lt;br /&gt;
&lt;br /&gt;
Possible variables:&lt;br /&gt;
&lt;br /&gt;
* card X: Defines used soundcard. X can be from 0...available soundcards.&lt;br /&gt;
* set &amp;quot;&amp;lt;control element name&amp;gt;&amp;quot;|X max|min|on|off|Y: Sets given control element to given value. Control element can be defined by control element's name or id.&lt;br /&gt;
&lt;br /&gt;
'''[playback]/[recording] section: '''&lt;br /&gt;
&lt;br /&gt;
Defines PCM parameters for playback and recording.&lt;br /&gt;
&lt;br /&gt;
Possible variables:&lt;br /&gt;
* card X: Used soundcard. X can be from 0...available soundcards.&lt;br /&gt;
* device X: Used PCM device. X can be from 0...available pcm devices.&lt;br /&gt;
* rates X Y Z... : Used samplerates as samples per second.&lt;br /&gt;
* formats X Y Z... : Used sample formats. Currently supported are:&lt;br /&gt;
** S8: Signed 8-bit.&lt;br /&gt;
** S16_LE: Signed 16-bit little endian.&lt;br /&gt;
** S24_LE: Signed 24-bit little endian.&lt;br /&gt;
** S32_LE: Signed 32-bit little endian.&lt;br /&gt;
* channels X Y Z... : Number of used channels.&lt;br /&gt;
* access X Y Z... : Used access methods. Currently supported are:&lt;br /&gt;
** INTERLEAVED: Samples from all channels are interleaved into single buffer.&lt;br /&gt;
** MMAP_INTERLEAVED: Same as above, but the buffer is memory mapped. For synchronous playback/recording only.&lt;br /&gt;
** NONINTERLEAVED: Samples from all channels are in separate buffers. Currently for playback only.&lt;br /&gt;
* hw_resampling X: Use hardware resampling.&lt;br /&gt;
* async X Y Z... : Use synchronous or asynchronous IO method (playback only). Currently supported values are:&lt;br /&gt;
** SYNC: Regular (synchronous) IO.&lt;br /&gt;
** ASYNC_SIGNAL: Asynchronous IO, where the kernel tells the test when the audio hardware is prepared to receive more data.&lt;br /&gt;
** ASYNC_TIMER: Asyncronous IO, where a constant stream of IO is done to the hardware, regulated by periodic timer signals.&lt;br /&gt;
* duration X: Duration in seconds.&lt;br /&gt;
* freq: Sine wave frequency (playback only).&lt;br /&gt;
* link X Y : Synchronize IO on this device with card X device Y. Only for async = SYNC.&lt;br /&gt;
* period_size: The interval between interrupts from the hardware (in frames). This affects used buffer sizes.&lt;br /&gt;
* volume: For playback only. In practice this defines the amplitude of generated sine wave. Value can be anything between 0 and 100.&lt;br /&gt;
&lt;br /&gt;
Some of the variables allow multiple values, and the test cases are generated by simply creating all combinations from given values.&lt;br /&gt;
&lt;br /&gt;
'''[bluetooth] section: '''&lt;br /&gt;
&lt;br /&gt;
Defines Bluetooth audio settings. If a Bluetooth A2DP device is defined here, it will be connected for the duration of the test. Pairing a device is not supported as yet, and should be done before testing.&lt;br /&gt;
&lt;br /&gt;
Note that just connecting to a device is usually not enough for sound output. In most cases platform-specific mixer settings are needed.&lt;br /&gt;
&lt;br /&gt;
Possible variables:&lt;br /&gt;
* connect &amp;quot;nn:nn:nn:nn:nn:nn&amp;quot; : MAC of Bluetooth device supporting A2DP to connect to.&lt;br /&gt;
* pin &amp;quot;nnnn&amp;quot; : PIN for the device. (Pairing not implemented yet)&lt;br /&gt;
&lt;br /&gt;
'''[tuner] section:'''&lt;br /&gt;
&lt;br /&gt;
Defines v4l2 tuner settings.&lt;br /&gt;
Possible variables:&lt;br /&gt;
* device &amp;quot;&amp;quot; : Used tuner device, for example &amp;quot;/dev/radio0&amp;quot;&lt;br /&gt;
* freq X : Used frequency in kHz, or;&lt;br /&gt;
* scan_select X : Scan for channels and select channel X. This works only with devices with hardware frequency seek capability (VIDIOC_S_HW_FREQ_SEEK).&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to self-sufficient command line program. Both Debian and RPM packaging is also provided.&lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| alsa-project.org || [http://www.alsa-project.org/main/index.php/Main_Page ALSA website]&lt;br /&gt;
|-&lt;br /&gt;
| V4L2 Tuner API || [http://v4l2spec.bytesex.org/spec/x394.htm V4L2 tuner API]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date&lt;br /&gt;
!|Handled By&lt;br /&gt;
!|Status&lt;br /&gt;
!|Comments&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 14-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/X11_Test_Specification</id>
		<title>Quality/TestSuite/X11 Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/X11_Test_Specification"/>
				<updated>2010-12-16T10:57:14Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Hardware setup and test environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The X Window System (commonly X or X11) is a computer software system and network protocol that provides a graphical user interface (GUI). Base X Window System is extended by X Extension libraries (mainly from freedesktop.org and XFree86 projects).&lt;br /&gt;
&lt;br /&gt;
The blts-x11 test driver includes functional tests for X11 using xlib, and for various X Extensions using their user space libraries&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test driver currently covers basic functionalities of X11 and it's extensions, including:&lt;br /&gt;
&lt;br /&gt;
* X11 presence check&lt;br /&gt;
* Enumerating and checking needed X Extensions&lt;br /&gt;
* Basic window creation operations and drawing&lt;br /&gt;
* XComposite: Rendering to off-screen buffer&lt;br /&gt;
* XDamage: Creating and monitoring 'damage' regions&lt;br /&gt;
* XInput: Accessing (listing) available input devices&lt;br /&gt;
* XRender: Simple drawing&lt;br /&gt;
* XRandR: Dynamically change X screen (rotation/orientation)&lt;br /&gt;
* XRecord: Recording X protocol events (such as mouse movement)&lt;br /&gt;
* XTest: Generating input device events (for example generating mouse movement events)&lt;br /&gt;
* XVideo: Overlay video output &lt;br /&gt;
 &lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
&lt;br /&gt;
Current coverage for X11 tests: &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
&lt;br /&gt;
Mainly display devices (and GPU).  &lt;br /&gt;
&lt;br /&gt;
===  Limitations === &lt;br /&gt;
TBD &lt;br /&gt;
&lt;br /&gt;
===  Future Improvements === &lt;br /&gt;
Extend functional coverage of existing test and create performance tests for XVideo, XComposite and DRI2. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
No specific hardware setup is required. The test environment must be running an X11 server, and must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* [[../BLTS Common Library | libbltscommon1]]&lt;br /&gt;
* libX11&lt;br /&gt;
* libXdamage&lt;br /&gt;
* libXcomposite&lt;br /&gt;
* libXrandr&lt;br /&gt;
* libXrender&lt;br /&gt;
* libXtst&lt;br /&gt;
* libXv&lt;br /&gt;
* libXi&lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* libX11-devel&lt;br /&gt;
* libXdamage-devel&lt;br /&gt;
* libXcomposite-devel&lt;br /&gt;
* libXrandr-devel&lt;br /&gt;
* libXrender-devel&lt;br /&gt;
* libXtst-devel&lt;br /&gt;
* libXv-devel&lt;br /&gt;
* libXi-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with the command&lt;br /&gt;
&lt;br /&gt;
 rpm -ivh blts-x11_{version}.rpm&lt;br /&gt;
&lt;br /&gt;
=== Test case arguments ===&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
|-&lt;br /&gt;
| -t || Maximum execution time of each test in seconds (default: 10s)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be executed with root privileges.&lt;br /&gt;
&lt;br /&gt;
Test case descriptions and execution commands:&lt;br /&gt;
&lt;br /&gt;
* '''X11-X11 presence check'''&lt;br /&gt;
** Check that required X11 components are present in the test device&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-X11 presence check&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-Create simple window'''&lt;br /&gt;
** Create a simple X11 window and execute string and rectangle drawing tests&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-Create simple window&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-Enumerate X extensions'''&lt;br /&gt;
** Enumerate X extensions supported by the X11 server&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-Enumerate X extensions&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XVideo init'''&lt;br /&gt;
** Check that XVideo initialization works on configured screens, and test XVideo image output&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XVideo init&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XTest move cursor'''&lt;br /&gt;
** Test cursor movement using the XTest extension&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XTest move cursor&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XComposite get window contents'''&lt;br /&gt;
** Check that window contents can be captured using the XComposite extension&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XComposite get window contents&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XRecord capture mouse movement'''&lt;br /&gt;
** Check that mouse movement can be captured using the XRecord extension&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XRecord capture mouse movement&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XRender draw rectangle'''&lt;br /&gt;
** Test rectangle drawing using the XRender extension&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XRender draw rectangle&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XRandR rotate screen'''&lt;br /&gt;
** Test screen rotation using the XRandR extension&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XRandR rotate screen&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XDamage monitor region'''&lt;br /&gt;
** Check that screen region monitoring works using the XDamage extension&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XDamage monitor region&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XInput enumerate devices'''&lt;br /&gt;
** Enumerate XInput devices&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XInput enumerate devices&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to a self-sufficient command line program. Debian and RPM packaging is provided.  &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  X11 || [http://www.x.org/wiki/ X11 home page]&lt;br /&gt;
|-&lt;br /&gt;
||  freedesktop.org || [http://www.freedesktop.org/ freedesktop.org home page]&lt;br /&gt;
|-&lt;br /&gt;
||  XFree86|| [http://www.xfree86.org XFree86 home page] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 08-Dec-2010 || [mailto:pasi.matilainen@digia.com Pasi Matilainen] || Draft || Test running instructions updated&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/BLTS_Pack_Script</id>
		<title>Quality/TestSuite/BLTS Pack Script</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/BLTS_Pack_Script"/>
				<updated>2010-12-16T10:50:34Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: Created page with &amp;quot;=== Packaging script for a single BLTS test asset ===  Pack.sh is a packaging script for a single BLTS test asset. It can be used to build a tarball out of sources as well as bui…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Packaging script for a single BLTS test asset ===&lt;br /&gt;
&lt;br /&gt;
Pack.sh is a packaging script for a single BLTS test asset. It can be used to build a tarball out of sources as well as building a RPM or Debian package. Pack.sh is included with every test asset and only corresponding version should be used.&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|General Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
|-&lt;br /&gt;
| -o || Copy files (packages) to &amp;lt;dir&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| -r || Build RPM package, fails if there's no .spec&lt;br /&gt;
|-&lt;br /&gt;
| -d || Build Debian package, fails if there's no debian/control&lt;br /&gt;
|-&lt;br /&gt;
| -h || Show help&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/Building_BLTS_Packages</id>
		<title>Quality/TestSuite/Building BLTS Packages</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/Building_BLTS_Packages"/>
				<updated>2010-12-16T10:42:07Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The test asset sources include the [[../BLTS Pack Script | pack.sh]] script, which is used for building RPM and Debian packages and source tar packages. To build an RPM package with the script, execute this command in the top level source directory of test asset:&lt;br /&gt;
&lt;br /&gt;
 ./pack.sh -r&lt;br /&gt;
&lt;br /&gt;
To get help about the packaging script, execute&lt;br /&gt;
&lt;br /&gt;
 ./pack.sh -h&lt;br /&gt;
&lt;br /&gt;
The asset can also be built manually by executing:&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/X11_Test_Specification</id>
		<title>Quality/TestSuite/X11 Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/X11_Test_Specification"/>
				<updated>2010-12-16T10:37:12Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Building the test asset */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The X Window System (commonly X or X11) is a computer software system and network protocol that provides a graphical user interface (GUI). Base X Window System is extended by X Extension libraries (mainly from freedesktop.org and XFree86 projects).&lt;br /&gt;
&lt;br /&gt;
The blts-x11 test driver includes functional tests for X11 using xlib, and for various X Extensions using their user space libraries&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
The test driver currently covers basic functionalities of X11 and it's extensions, including:&lt;br /&gt;
&lt;br /&gt;
* X11 presence check&lt;br /&gt;
* Enumerating and checking needed X Extensions&lt;br /&gt;
* Basic window creation operations and drawing&lt;br /&gt;
* XComposite: Rendering to off-screen buffer&lt;br /&gt;
* XDamage: Creating and monitoring 'damage' regions&lt;br /&gt;
* XInput: Accessing (listing) available input devices&lt;br /&gt;
* XRender: Simple drawing&lt;br /&gt;
* XRandR: Dynamically change X screen (rotation/orientation)&lt;br /&gt;
* XRecord: Recording X protocol events (such as mouse movement)&lt;br /&gt;
* XTest: Generating input device events (for example generating mouse movement events)&lt;br /&gt;
* XVideo: Overlay video output &lt;br /&gt;
 &lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
&lt;br /&gt;
Current coverage for X11 tests: &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
&lt;br /&gt;
Mainly display devices (and GPU).  &lt;br /&gt;
&lt;br /&gt;
===  Limitations === &lt;br /&gt;
TBD &lt;br /&gt;
&lt;br /&gt;
===  Future Improvements === &lt;br /&gt;
Extend functional coverage of existing test and create performance tests for XVideo, XComposite and DRI2. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup and test environment ===&lt;br /&gt;
&lt;br /&gt;
No specific hardware setup is required. The test environment must be running an X11 server, and must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1&lt;br /&gt;
* libX11&lt;br /&gt;
* libXdamage&lt;br /&gt;
* libXcomposite&lt;br /&gt;
* libXrandr&lt;br /&gt;
* libXrender&lt;br /&gt;
* libXtst&lt;br /&gt;
* libXv&lt;br /&gt;
* libXi&lt;br /&gt;
&lt;br /&gt;
=== Building the test asset ===&lt;br /&gt;
&lt;br /&gt;
The build environment must have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* libbltscommon1-devel&lt;br /&gt;
* libX11-devel&lt;br /&gt;
* libXdamage-devel&lt;br /&gt;
* libXcomposite-devel&lt;br /&gt;
* libXrandr-devel&lt;br /&gt;
* libXrender-devel&lt;br /&gt;
* libXtst-devel&lt;br /&gt;
* libXv-devel&lt;br /&gt;
* libXi-devel&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Building_BLTS_Packages}}&lt;br /&gt;
&lt;br /&gt;
=== Test asset specific instructions ===&lt;br /&gt;
&lt;br /&gt;
The test package can be installed in the device with the command&lt;br /&gt;
&lt;br /&gt;
 rpm -ivh blts-x11_{version}.rpm&lt;br /&gt;
&lt;br /&gt;
=== Test case arguments ===&lt;br /&gt;
&lt;br /&gt;
{{:Quality/TestSuite/Common_General_Switch}}&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|Optional Switch &lt;br /&gt;
!style=&amp;quot;width:80%&amp;quot;|Function &lt;br /&gt;
|-&lt;br /&gt;
| -t || Maximum execution time of each test in seconds (default: 10s)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Running test cases ===&lt;br /&gt;
&lt;br /&gt;
Test cases must be executed with root privileges.&lt;br /&gt;
&lt;br /&gt;
Test case descriptions and execution commands:&lt;br /&gt;
&lt;br /&gt;
* '''X11-X11 presence check'''&lt;br /&gt;
** Check that required X11 components are present in the test device&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-X11 presence check&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-Create simple window'''&lt;br /&gt;
** Create a simple X11 window and execute string and rectangle drawing tests&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-Create simple window&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-Enumerate X extensions'''&lt;br /&gt;
** Enumerate X extensions supported by the X11 server&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-Enumerate X extensions&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XVideo init'''&lt;br /&gt;
** Check that XVideo initialization works on configured screens, and test XVideo image output&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XVideo init&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XTest move cursor'''&lt;br /&gt;
** Test cursor movement using the XTest extension&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XTest move cursor&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XComposite get window contents'''&lt;br /&gt;
** Check that window contents can be captured using the XComposite extension&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XComposite get window contents&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XRecord capture mouse movement'''&lt;br /&gt;
** Check that mouse movement can be captured using the XRecord extension&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XRecord capture mouse movement&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XRender draw rectangle'''&lt;br /&gt;
** Test rectangle drawing using the XRender extension&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XRender draw rectangle&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XRandR rotate screen'''&lt;br /&gt;
** Test screen rotation using the XRandR extension&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XRandR rotate screen&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XDamage monitor region'''&lt;br /&gt;
** Check that screen region monitoring works using the XDamage extension&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XDamage monitor region&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''X11-XInput enumerate devices'''&lt;br /&gt;
** Enumerate XInput devices&lt;br /&gt;
** &amp;lt;code&amp;gt;blts-x11-tests -en &amp;quot;X11-XInput enumerate devices&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
The test module can be compiled to a self-sufficient command line program. Debian and RPM packaging is provided.  &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||  X11 || [http://www.x.org/wiki/ X11 home page]&lt;br /&gt;
|-&lt;br /&gt;
||  freedesktop.org || [http://www.freedesktop.org/ freedesktop.org home page]&lt;br /&gt;
|-&lt;br /&gt;
||  XFree86|| [http://www.xfree86.org XFree86 home page] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 22-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.2 || 08-Dec-2010 || [mailto:pasi.matilainen@digia.com Pasi Matilainen] || Draft || Test running instructions updated&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/Building_BLTS_Packages</id>
		<title>Quality/TestSuite/Building BLTS Packages</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/Building_BLTS_Packages"/>
				<updated>2010-12-16T10:34:38Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: Created page with &amp;quot;The test asset sources include the pack.sh script, which is used for building RPM and Debian packages and source tar packages. To build an RPM package with the script, execute th…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The test asset sources include the pack.sh script, which is used for building RPM and Debian packages and source tar packages. To build an RPM package with the script, execute this command in the top level source directory of test asset:&lt;br /&gt;
&lt;br /&gt;
 ./pack.sh -r&lt;br /&gt;
&lt;br /&gt;
To get help about the packaging script, execute&lt;br /&gt;
&lt;br /&gt;
 ./pack.sh -h&lt;br /&gt;
&lt;br /&gt;
The asset can also be built manually by executing:&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/USB_Driver_Test_Specification</id>
		<title>Quality/TestSuite/USB Driver Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/USB_Driver_Test_Specification"/>
				<updated>2010-09-28T08:23:07Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Future Improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
USB peripheral test cases are made between host (e.g. PC) and peripheral gadget (e.g. N900). Both ends have their own drivers which communicate and transfer data between different endpoints.&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
Each test case must be run independently and devices must be preset according to case requirements using provided setup test cases. In practice, this means for example data transfer requires preconnected host enabled USB cable and host mode supporting device is connected to system. Each test case prints out required user interaction to terminal. &lt;br /&gt;
* USB - Setup host driver &lt;br /&gt;
* USB - Setup peripheral driver &lt;br /&gt;
* USB - Read test &lt;br /&gt;
* USB - Write test &lt;br /&gt;
 &lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
&lt;br /&gt;
Current coverage for USB tests: &lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/USB-core-coverage.ods USB-coverage.ods]]&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
&lt;br /&gt;
USB bulk and isochronous endpoint transfer test cases. Those who know more about USB transfer can also alter endpoint configurations via configuration files. Example configurations are provided with the test package. &lt;br /&gt;
&lt;br /&gt;
===  Limitations === &lt;br /&gt;
* Drivers must be initialized before running other test cases. &lt;br /&gt;
* All other gadget drivers MUST be unloaded before test execution in used DUT! &lt;br /&gt;
* All USB cables MUST be disconnected when executing initializations! &lt;br /&gt;
&lt;br /&gt;
===  Future Improvements === &lt;br /&gt;
* Automated test execution and peripheral DUT driver selection. &lt;br /&gt;
* Official unique USB driver ID.&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
===  Hardware setup and test execution order === &lt;br /&gt;
&lt;br /&gt;
Required hardware:&lt;br /&gt;
* Supported USB cable &lt;br /&gt;
* Device with USB host capability (e.g. PC) &lt;br /&gt;
* Device with USB peripheral capability (e.g. Nokia N810/N900) &lt;br /&gt;
&lt;br /&gt;
How to setup test enviroment: &lt;br /&gt;
# Make sure usb cable is disconnected between devices &lt;br /&gt;
# Set up host side (e.g. PC) by running test 'USB - Setup host driver'&lt;br /&gt;
# Set up gadget side (peripheral device)  by running test 'USB - Setup peripheral driver'&lt;br /&gt;
# Connect cable &lt;br /&gt;
# Execute tests &lt;br /&gt;
&lt;br /&gt;
NOTE: Before executing test cases it must be determined if used devices are capable of acting as peripheral or host. This depends on USB controller chips of devices and necessary information should be available from device vendors. Furthermore, current gadget driver implementation is built over MUSB driver implementation available in Linux kernel. Possible different implementations by device vendors may cause incompatibility with this test driver. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ blts_usb_testrunner -C [config file] -e [test number]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Configuration files === &lt;br /&gt;
This test asset uses two configuration files: One for generic test execution options and one for endpoint configuration. Endpoint configuration file is linked to base configuration files thus only base file path is given as parameter. Configuration files must be used, as they contain endpoint configuration for driver. &lt;br /&gt;
&lt;br /&gt;
Currently following example base configuration files are included in the package: &lt;br /&gt;
* blts-usb-testrunner-bulk.cnf &lt;br /&gt;
* blts-usb-testrunner-int.cnf &lt;br /&gt;
* blts-usb-testrunner-isoc.cnf &lt;br /&gt;
&lt;br /&gt;
The base files are linked to endpoint configuration files and following examples are provided with test package: &lt;br /&gt;
* ep-configuration-bulk.cfg &lt;br /&gt;
* ep-configuration-int.cfg &lt;br /&gt;
* ep-configuration-isoc.cfg &lt;br /&gt;
&lt;br /&gt;
NOTE: Supported endpoint configurations differ from device to device and they should be modified according to test execution requirements. These configuration files are provided as examples and should not be used as such during proper test execution.&lt;br /&gt;
&lt;br /&gt;
For further instructions on creating and using configuration files, see [http://wiki.meego.com/Quality/TestSuite/USB_Driver_Test_Specification#Configuration_file_examples Configuration file examples].&lt;br /&gt;
&lt;br /&gt;
===  Common test execution guidelines === &lt;br /&gt;
&lt;br /&gt;
NOTE: &lt;br /&gt;
* Default config files are installed to /usr/share/blts-usb-tests/. &lt;br /&gt;
* Drivers must be initialized before running other test cases. &lt;br /&gt;
* All USB cables MUST be disconnected when executing initializations! &lt;br /&gt;
&lt;br /&gt;
NOTE: All other gadget drivers MUST be unloaded before test execution in used DUT! &lt;br /&gt;
&lt;br /&gt;
You can use command lsmod to determine which modules are loaded in memory: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ lsmod&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See if some gadget driver is found. For example g_file_storage is a mass storage module, but this depends on used HW and SW. The module can be unloaded with following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ modprobe -r g_file_storage&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Switch &lt;br /&gt;
!|Function&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -C || Used parameter configuration file &lt;br /&gt;
|-&lt;br /&gt;
|| -l  || Used log file, default blts_skeleton_run.log&lt;br /&gt;
|-&lt;br /&gt;
|| -e || Execute single or multiple selected tests, for example -e 1,4,5. &lt;br /&gt;
|-&lt;br /&gt;
|| -en || Execute test by name, for example -en &amp;quot;My test X&amp;quot;  &lt;br /&gt;
|-&lt;br /&gt;
|| -s || Show list of all tests &lt;br /&gt;
|-&lt;br /&gt;
|| -? || Help message  &lt;br /&gt;
|-&lt;br /&gt;
|| -nc || Do not output log to terminal &lt;br /&gt;
|- &lt;br /&gt;
!|Optional switch &lt;br /&gt;
!|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Use given host driver (default: blts_usb_host), for example -h blts_usb_host  &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Use given peripheral driver (default: blts_gadget), for example -h blts_gadget &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  Test cases === &lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  USB - Setup host driver*  ||   &lt;br /&gt;
|-&lt;br /&gt;
|| USB - Setup peripheral driver#  ||  Use configuration file to create specific setup, bulk endpoints are created by default &lt;br /&gt;
|-&lt;br /&gt;
||  USB - Read test*  ||  Read data from endpoints &lt;br /&gt;
|-&lt;br /&gt;
||  USB - Write test*  ||  Write data to endpoints&lt;br /&gt;
|}&lt;br /&gt;
''* This test is run on host device.'' &amp;lt;br&amp;gt;&lt;br /&gt;
''# This test is run on peripheral device.''&lt;br /&gt;
&lt;br /&gt;
===  Configuration file examples === &lt;br /&gt;
The test asset allows you to change all endpoint parameters via configuration files. Since the USB (2.0) specification only states the valid range for different settings, it is possible to give any values as long as they fit inside these ranges. The test asset allows experimenting with different configurations and &amp;quot;triangulation&amp;quot; of what works and what does not. Naturally there are certain HW related restrictions such as total transfer capacity which obviously cannot be exceeded with endpoint configuration. Basic test asset configurations is done with base configuration files, such as provided &amp;lt;code&amp;gt;blts-usb-testrunner-bulk.cnf&amp;lt;/code&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# USB test case configuration for parameters&lt;br /&gt;
&lt;br /&gt;
######################&lt;br /&gt;
# General parameters #&lt;br /&gt;
######################&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name host_driver&lt;br /&gt;
   const &amp;quot;blts_usb_host&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name host_driver_path&lt;br /&gt;
   const &amp;quot;/usr/lib/tests/blts-usb-tests/&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name peripheral_driver&lt;br /&gt;
   const &amp;quot;blts_gadget&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name peripheral_driver_path&lt;br /&gt;
   const &amp;quot;/usr/lib/tests/blts-usb-tests/&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name data_transfer_timeout&lt;br /&gt;
   const &amp;quot;10000&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name usb_transfer_size&lt;br /&gt;
   const 4096&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
##########################&lt;br /&gt;
# Endpoint configuration #&lt;br /&gt;
##########################&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name ep_configuration_file&lt;br /&gt;
   const &amp;quot;/usr/share/blts-usb-tests/ep-configuration-bulk.cfg&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
################&lt;br /&gt;
# Driver setup #&lt;br /&gt;
################&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Setup host driver&amp;quot;&lt;br /&gt;
   params host_driver host_driver_path&lt;br /&gt;
[end_test]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Setup peripheral driver&amp;quot;&lt;br /&gt;
   params peripheral_driver peripheral_driver_path usb_transfer_size ep_configuration_file&lt;br /&gt;
[end_test]&lt;br /&gt;
&lt;br /&gt;
#######################&lt;br /&gt;
# Data transfer cases #&lt;br /&gt;
#######################&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Read test&amp;quot;&lt;br /&gt;
   params host_driver host_driver_path peripheral_driver peripheral_driver_path usb_transfer_size&lt;br /&gt;
[end_test]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Write test&amp;quot;&lt;br /&gt;
   params host_driver host_driver_path peripheral_driver peripheral_driver_path usb_transfer_size&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change the endpoint configuration, you will have to edit ep-configuration files. For example, provided &amp;lt;code&amp;gt;ep-configuration-bulk.cfg&amp;lt;/code&amp;gt; looks like this by default: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# device_speed used_speed max_power&lt;br /&gt;
high any 50&lt;br /&gt;
# endpoint type direction max_packet_size interval&lt;br /&gt;
1 bulk in 512 9&lt;br /&gt;
2 bulk out 512 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The lines starting with # are comments and document provided parameters. Device_speed is the highest speed used device is supposed to be able handle (any/low/full/high) and used_speed the operational speed during test execution. This can be used to force the device to use lower speed than normally would be used. To add new pair of bulk endpoints simply add following lines to the file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
3 bulk in 512 9&lt;br /&gt;
4 bulk out 512 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Do note that you can put different endpoint types to the same configuration so there can be any combination of bulk, interrupt and isochronous endpoints as long as device supports this.&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
Debian package is provided which includes both host and peripheral drivers in addition to test runner. This package can be installed on all devices under testing, although functionality depends on used hardware. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|  USB Specification || [http://www.usb.org/developers/docs/ USB documentation] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 8-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/USB_Driver_Test_Specification</id>
		<title>Quality/TestSuite/USB Driver Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/USB_Driver_Test_Specification"/>
				<updated>2010-09-28T08:22:25Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Hardware setup and test execution order */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
USB peripheral test cases are made between host (e.g. PC) and peripheral gadget (e.g. N900). Both ends have their own drivers which communicate and transfer data between different endpoints.&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
Each test case must be run independently and devices must be preset according to case requirements using provided setup test cases. In practice, this means for example data transfer requires preconnected host enabled USB cable and host mode supporting device is connected to system. Each test case prints out required user interaction to terminal. &lt;br /&gt;
* USB - Setup host driver &lt;br /&gt;
* USB - Setup peripheral driver &lt;br /&gt;
* USB - Read test &lt;br /&gt;
* USB - Write test &lt;br /&gt;
 &lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
&lt;br /&gt;
Current coverage for USB tests: &lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/USB-core-coverage.ods USB-coverage.ods]]&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
&lt;br /&gt;
USB bulk and isochronous endpoint transfer test cases. Those who know more about USB transfer can also alter endpoint configurations via configuration files. Example configurations are provided with the test package. &lt;br /&gt;
&lt;br /&gt;
===  Limitations === &lt;br /&gt;
* Drivers must be initialized before running other test cases. &lt;br /&gt;
* All other gadget drivers MUST be unloaded before test execution in used DUT! &lt;br /&gt;
* All USB cables MUST be disconnected when executing initializations! &lt;br /&gt;
&lt;br /&gt;
===  Future Improvements === &lt;br /&gt;
* Support for simultaneous data transfer on multiple endpoints. &lt;br /&gt;
* Automated test execution and peripheral DUT driver selection. &lt;br /&gt;
* Official unique USB driver ID. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
===  Hardware setup and test execution order === &lt;br /&gt;
&lt;br /&gt;
Required hardware:&lt;br /&gt;
* Supported USB cable &lt;br /&gt;
* Device with USB host capability (e.g. PC) &lt;br /&gt;
* Device with USB peripheral capability (e.g. Nokia N810/N900) &lt;br /&gt;
&lt;br /&gt;
How to setup test enviroment: &lt;br /&gt;
# Make sure usb cable is disconnected between devices &lt;br /&gt;
# Set up host side (e.g. PC) by running test 'USB - Setup host driver'&lt;br /&gt;
# Set up gadget side (peripheral device)  by running test 'USB - Setup peripheral driver'&lt;br /&gt;
# Connect cable &lt;br /&gt;
# Execute tests &lt;br /&gt;
&lt;br /&gt;
NOTE: Before executing test cases it must be determined if used devices are capable of acting as peripheral or host. This depends on USB controller chips of devices and necessary information should be available from device vendors. Furthermore, current gadget driver implementation is built over MUSB driver implementation available in Linux kernel. Possible different implementations by device vendors may cause incompatibility with this test driver. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ blts_usb_testrunner -C [config file] -e [test number]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Configuration files === &lt;br /&gt;
This test asset uses two configuration files: One for generic test execution options and one for endpoint configuration. Endpoint configuration file is linked to base configuration files thus only base file path is given as parameter. Configuration files must be used, as they contain endpoint configuration for driver. &lt;br /&gt;
&lt;br /&gt;
Currently following example base configuration files are included in the package: &lt;br /&gt;
* blts-usb-testrunner-bulk.cnf &lt;br /&gt;
* blts-usb-testrunner-int.cnf &lt;br /&gt;
* blts-usb-testrunner-isoc.cnf &lt;br /&gt;
&lt;br /&gt;
The base files are linked to endpoint configuration files and following examples are provided with test package: &lt;br /&gt;
* ep-configuration-bulk.cfg &lt;br /&gt;
* ep-configuration-int.cfg &lt;br /&gt;
* ep-configuration-isoc.cfg &lt;br /&gt;
&lt;br /&gt;
NOTE: Supported endpoint configurations differ from device to device and they should be modified according to test execution requirements. These configuration files are provided as examples and should not be used as such during proper test execution.&lt;br /&gt;
&lt;br /&gt;
For further instructions on creating and using configuration files, see [http://wiki.meego.com/Quality/TestSuite/USB_Driver_Test_Specification#Configuration_file_examples Configuration file examples].&lt;br /&gt;
&lt;br /&gt;
===  Common test execution guidelines === &lt;br /&gt;
&lt;br /&gt;
NOTE: &lt;br /&gt;
* Default config files are installed to /usr/share/blts-usb-tests/. &lt;br /&gt;
* Drivers must be initialized before running other test cases. &lt;br /&gt;
* All USB cables MUST be disconnected when executing initializations! &lt;br /&gt;
&lt;br /&gt;
NOTE: All other gadget drivers MUST be unloaded before test execution in used DUT! &lt;br /&gt;
&lt;br /&gt;
You can use command lsmod to determine which modules are loaded in memory: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ lsmod&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See if some gadget driver is found. For example g_file_storage is a mass storage module, but this depends on used HW and SW. The module can be unloaded with following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ modprobe -r g_file_storage&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Switch &lt;br /&gt;
!|Function&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -C || Used parameter configuration file &lt;br /&gt;
|-&lt;br /&gt;
|| -l  || Used log file, default blts_skeleton_run.log&lt;br /&gt;
|-&lt;br /&gt;
|| -e || Execute single or multiple selected tests, for example -e 1,4,5. &lt;br /&gt;
|-&lt;br /&gt;
|| -en || Execute test by name, for example -en &amp;quot;My test X&amp;quot;  &lt;br /&gt;
|-&lt;br /&gt;
|| -s || Show list of all tests &lt;br /&gt;
|-&lt;br /&gt;
|| -? || Help message  &lt;br /&gt;
|-&lt;br /&gt;
|| -nc || Do not output log to terminal &lt;br /&gt;
|- &lt;br /&gt;
!|Optional switch &lt;br /&gt;
!|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Use given host driver (default: blts_usb_host), for example -h blts_usb_host  &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Use given peripheral driver (default: blts_gadget), for example -h blts_gadget &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  Test cases === &lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  USB - Setup host driver*  ||   &lt;br /&gt;
|-&lt;br /&gt;
|| USB - Setup peripheral driver#  ||  Use configuration file to create specific setup, bulk endpoints are created by default &lt;br /&gt;
|-&lt;br /&gt;
||  USB - Read test*  ||  Read data from endpoints &lt;br /&gt;
|-&lt;br /&gt;
||  USB - Write test*  ||  Write data to endpoints&lt;br /&gt;
|}&lt;br /&gt;
''* This test is run on host device.'' &amp;lt;br&amp;gt;&lt;br /&gt;
''# This test is run on peripheral device.''&lt;br /&gt;
&lt;br /&gt;
===  Configuration file examples === &lt;br /&gt;
The test asset allows you to change all endpoint parameters via configuration files. Since the USB (2.0) specification only states the valid range for different settings, it is possible to give any values as long as they fit inside these ranges. The test asset allows experimenting with different configurations and &amp;quot;triangulation&amp;quot; of what works and what does not. Naturally there are certain HW related restrictions such as total transfer capacity which obviously cannot be exceeded with endpoint configuration. Basic test asset configurations is done with base configuration files, such as provided &amp;lt;code&amp;gt;blts-usb-testrunner-bulk.cnf&amp;lt;/code&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# USB test case configuration for parameters&lt;br /&gt;
&lt;br /&gt;
######################&lt;br /&gt;
# General parameters #&lt;br /&gt;
######################&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name host_driver&lt;br /&gt;
   const &amp;quot;blts_usb_host&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name host_driver_path&lt;br /&gt;
   const &amp;quot;/usr/lib/tests/blts-usb-tests/&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name peripheral_driver&lt;br /&gt;
   const &amp;quot;blts_gadget&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name peripheral_driver_path&lt;br /&gt;
   const &amp;quot;/usr/lib/tests/blts-usb-tests/&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name data_transfer_timeout&lt;br /&gt;
   const &amp;quot;10000&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name usb_transfer_size&lt;br /&gt;
   const 4096&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
##########################&lt;br /&gt;
# Endpoint configuration #&lt;br /&gt;
##########################&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name ep_configuration_file&lt;br /&gt;
   const &amp;quot;/usr/share/blts-usb-tests/ep-configuration-bulk.cfg&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
################&lt;br /&gt;
# Driver setup #&lt;br /&gt;
################&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Setup host driver&amp;quot;&lt;br /&gt;
   params host_driver host_driver_path&lt;br /&gt;
[end_test]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Setup peripheral driver&amp;quot;&lt;br /&gt;
   params peripheral_driver peripheral_driver_path usb_transfer_size ep_configuration_file&lt;br /&gt;
[end_test]&lt;br /&gt;
&lt;br /&gt;
#######################&lt;br /&gt;
# Data transfer cases #&lt;br /&gt;
#######################&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Read test&amp;quot;&lt;br /&gt;
   params host_driver host_driver_path peripheral_driver peripheral_driver_path usb_transfer_size&lt;br /&gt;
[end_test]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Write test&amp;quot;&lt;br /&gt;
   params host_driver host_driver_path peripheral_driver peripheral_driver_path usb_transfer_size&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change the endpoint configuration, you will have to edit ep-configuration files. For example, provided &amp;lt;code&amp;gt;ep-configuration-bulk.cfg&amp;lt;/code&amp;gt; looks like this by default: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# device_speed used_speed max_power&lt;br /&gt;
high any 50&lt;br /&gt;
# endpoint type direction max_packet_size interval&lt;br /&gt;
1 bulk in 512 9&lt;br /&gt;
2 bulk out 512 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The lines starting with # are comments and document provided parameters. Device_speed is the highest speed used device is supposed to be able handle (any/low/full/high) and used_speed the operational speed during test execution. This can be used to force the device to use lower speed than normally would be used. To add new pair of bulk endpoints simply add following lines to the file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
3 bulk in 512 9&lt;br /&gt;
4 bulk out 512 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Do note that you can put different endpoint types to the same configuration so there can be any combination of bulk, interrupt and isochronous endpoints as long as device supports this.&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
Debian package is provided which includes both host and peripheral drivers in addition to test runner. This package can be installed on all devices under testing, although functionality depends on used hardware. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|  USB Specification || [http://www.usb.org/developers/docs/ USB documentation] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 8-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/USB_Driver_Test_Specification</id>
		<title>Quality/TestSuite/USB Driver Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/USB_Driver_Test_Specification"/>
				<updated>2010-09-28T08:20:14Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Configuration files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
USB peripheral test cases are made between host (e.g. PC) and peripheral gadget (e.g. N900). Both ends have their own drivers which communicate and transfer data between different endpoints.&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
Each test case must be run independently and devices must be preset according to case requirements using provided setup test cases. In practice, this means for example data transfer requires preconnected host enabled USB cable and host mode supporting device is connected to system. Each test case prints out required user interaction to terminal. &lt;br /&gt;
* USB - Setup host driver &lt;br /&gt;
* USB - Setup peripheral driver &lt;br /&gt;
* USB - Read test &lt;br /&gt;
* USB - Write test &lt;br /&gt;
 &lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
&lt;br /&gt;
Current coverage for USB tests: &lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/USB-core-coverage.ods USB-coverage.ods]]&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
&lt;br /&gt;
USB bulk and isochronous endpoint transfer test cases. Those who know more about USB transfer can also alter endpoint configurations via configuration files. Example configurations are provided with the test package. &lt;br /&gt;
&lt;br /&gt;
===  Limitations === &lt;br /&gt;
* Drivers must be initialized before running other test cases. &lt;br /&gt;
* All other gadget drivers MUST be unloaded before test execution in used DUT! &lt;br /&gt;
* All USB cables MUST be disconnected when executing initializations! &lt;br /&gt;
&lt;br /&gt;
===  Future Improvements === &lt;br /&gt;
* Support for simultaneous data transfer on multiple endpoints. &lt;br /&gt;
* Automated test execution and peripheral DUT driver selection. &lt;br /&gt;
* Official unique USB driver ID. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
===  Hardware setup and test execution order === &lt;br /&gt;
&lt;br /&gt;
Required hardware:&lt;br /&gt;
* Supported USB cable &lt;br /&gt;
* Device with USB host capability (e.g. PC) &lt;br /&gt;
* Device with USB peripheral capability (e.g. N900) &lt;br /&gt;
&lt;br /&gt;
How to setup test enviroment: &lt;br /&gt;
# Make sure usb cable is disconnected between devices &lt;br /&gt;
# Set up host side (e.g. PC) by running test 'USB - Setup host driver'&lt;br /&gt;
# Set up gadget side (peripheral device)  by running test 'USB - Setup peripheral driver'&lt;br /&gt;
# Connect cable &lt;br /&gt;
# Execute tests &lt;br /&gt;
&lt;br /&gt;
NOTE: Before executing test cases it must be determined if used devices are capable of acting as peripheral or host. This depends on USB controller chips of devices and necessary information should be available from device vendors. Furthermore, current gadget driver implementation is built over MUSB driver implementation available in Linux kernel. Possible different implementations by device vendors may cause incompatibility with this test driver. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ blts_usb_testrunner -C [config file] -e [test number]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Configuration files === &lt;br /&gt;
This test asset uses two configuration files: One for generic test execution options and one for endpoint configuration. Endpoint configuration file is linked to base configuration files thus only base file path is given as parameter. Configuration files must be used, as they contain endpoint configuration for driver. &lt;br /&gt;
&lt;br /&gt;
Currently following example base configuration files are included in the package: &lt;br /&gt;
* blts-usb-testrunner-bulk.cnf &lt;br /&gt;
* blts-usb-testrunner-int.cnf &lt;br /&gt;
* blts-usb-testrunner-isoc.cnf &lt;br /&gt;
&lt;br /&gt;
The base files are linked to endpoint configuration files and following examples are provided with test package: &lt;br /&gt;
* ep-configuration-bulk.cfg &lt;br /&gt;
* ep-configuration-int.cfg &lt;br /&gt;
* ep-configuration-isoc.cfg &lt;br /&gt;
&lt;br /&gt;
NOTE: Supported endpoint configurations differ from device to device and they should be modified according to test execution requirements. These configuration files are provided as examples and should not be used as such during proper test execution.&lt;br /&gt;
&lt;br /&gt;
For further instructions on creating and using configuration files, see [http://wiki.meego.com/Quality/TestSuite/USB_Driver_Test_Specification#Configuration_file_examples Configuration file examples].&lt;br /&gt;
&lt;br /&gt;
===  Common test execution guidelines === &lt;br /&gt;
&lt;br /&gt;
NOTE: &lt;br /&gt;
* Default config files are installed to /usr/share/blts-usb-tests/. &lt;br /&gt;
* Drivers must be initialized before running other test cases. &lt;br /&gt;
* All USB cables MUST be disconnected when executing initializations! &lt;br /&gt;
&lt;br /&gt;
NOTE: All other gadget drivers MUST be unloaded before test execution in used DUT! &lt;br /&gt;
&lt;br /&gt;
You can use command lsmod to determine which modules are loaded in memory: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ lsmod&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See if some gadget driver is found. For example g_file_storage is a mass storage module, but this depends on used HW and SW. The module can be unloaded with following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ modprobe -r g_file_storage&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Switch &lt;br /&gt;
!|Function&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -C || Used parameter configuration file &lt;br /&gt;
|-&lt;br /&gt;
|| -l  || Used log file, default blts_skeleton_run.log&lt;br /&gt;
|-&lt;br /&gt;
|| -e || Execute single or multiple selected tests, for example -e 1,4,5. &lt;br /&gt;
|-&lt;br /&gt;
|| -en || Execute test by name, for example -en &amp;quot;My test X&amp;quot;  &lt;br /&gt;
|-&lt;br /&gt;
|| -s || Show list of all tests &lt;br /&gt;
|-&lt;br /&gt;
|| -? || Help message  &lt;br /&gt;
|-&lt;br /&gt;
|| -nc || Do not output log to terminal &lt;br /&gt;
|- &lt;br /&gt;
!|Optional switch &lt;br /&gt;
!|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Use given host driver (default: blts_usb_host), for example -h blts_usb_host  &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Use given peripheral driver (default: blts_gadget), for example -h blts_gadget &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  Test cases === &lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  USB - Setup host driver*  ||   &lt;br /&gt;
|-&lt;br /&gt;
|| USB - Setup peripheral driver#  ||  Use configuration file to create specific setup, bulk endpoints are created by default &lt;br /&gt;
|-&lt;br /&gt;
||  USB - Read test*  ||  Read data from endpoints &lt;br /&gt;
|-&lt;br /&gt;
||  USB - Write test*  ||  Write data to endpoints&lt;br /&gt;
|}&lt;br /&gt;
''* This test is run on host device.'' &amp;lt;br&amp;gt;&lt;br /&gt;
''# This test is run on peripheral device.''&lt;br /&gt;
&lt;br /&gt;
===  Configuration file examples === &lt;br /&gt;
The test asset allows you to change all endpoint parameters via configuration files. Since the USB (2.0) specification only states the valid range for different settings, it is possible to give any values as long as they fit inside these ranges. The test asset allows experimenting with different configurations and &amp;quot;triangulation&amp;quot; of what works and what does not. Naturally there are certain HW related restrictions such as total transfer capacity which obviously cannot be exceeded with endpoint configuration. Basic test asset configurations is done with base configuration files, such as provided &amp;lt;code&amp;gt;blts-usb-testrunner-bulk.cnf&amp;lt;/code&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# USB test case configuration for parameters&lt;br /&gt;
&lt;br /&gt;
######################&lt;br /&gt;
# General parameters #&lt;br /&gt;
######################&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name host_driver&lt;br /&gt;
   const &amp;quot;blts_usb_host&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name host_driver_path&lt;br /&gt;
   const &amp;quot;/usr/lib/tests/blts-usb-tests/&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name peripheral_driver&lt;br /&gt;
   const &amp;quot;blts_gadget&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name peripheral_driver_path&lt;br /&gt;
   const &amp;quot;/usr/lib/tests/blts-usb-tests/&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name data_transfer_timeout&lt;br /&gt;
   const &amp;quot;10000&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name usb_transfer_size&lt;br /&gt;
   const 4096&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
##########################&lt;br /&gt;
# Endpoint configuration #&lt;br /&gt;
##########################&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name ep_configuration_file&lt;br /&gt;
   const &amp;quot;/usr/share/blts-usb-tests/ep-configuration-bulk.cfg&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
################&lt;br /&gt;
# Driver setup #&lt;br /&gt;
################&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Setup host driver&amp;quot;&lt;br /&gt;
   params host_driver host_driver_path&lt;br /&gt;
[end_test]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Setup peripheral driver&amp;quot;&lt;br /&gt;
   params peripheral_driver peripheral_driver_path usb_transfer_size ep_configuration_file&lt;br /&gt;
[end_test]&lt;br /&gt;
&lt;br /&gt;
#######################&lt;br /&gt;
# Data transfer cases #&lt;br /&gt;
#######################&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Read test&amp;quot;&lt;br /&gt;
   params host_driver host_driver_path peripheral_driver peripheral_driver_path usb_transfer_size&lt;br /&gt;
[end_test]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Write test&amp;quot;&lt;br /&gt;
   params host_driver host_driver_path peripheral_driver peripheral_driver_path usb_transfer_size&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change the endpoint configuration, you will have to edit ep-configuration files. For example, provided &amp;lt;code&amp;gt;ep-configuration-bulk.cfg&amp;lt;/code&amp;gt; looks like this by default: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# device_speed used_speed max_power&lt;br /&gt;
high any 50&lt;br /&gt;
# endpoint type direction max_packet_size interval&lt;br /&gt;
1 bulk in 512 9&lt;br /&gt;
2 bulk out 512 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The lines starting with # are comments and document provided parameters. Device_speed is the highest speed used device is supposed to be able handle (any/low/full/high) and used_speed the operational speed during test execution. This can be used to force the device to use lower speed than normally would be used. To add new pair of bulk endpoints simply add following lines to the file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
3 bulk in 512 9&lt;br /&gt;
4 bulk out 512 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Do note that you can put different endpoint types to the same configuration so there can be any combination of bulk, interrupt and isochronous endpoints as long as device supports this.&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
Debian package is provided which includes both host and peripheral drivers in addition to test runner. This package can be installed on all devices under testing, although functionality depends on used hardware. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|  USB Specification || [http://www.usb.org/developers/docs/ USB documentation] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 8-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/TestSuite/USB_Driver_Test_Specification</id>
		<title>Quality/TestSuite/USB Driver Test Specification</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/TestSuite/USB_Driver_Test_Specification"/>
				<updated>2010-09-28T08:16:13Z</updated>
		
		<summary type="html">&lt;p&gt;Klaakso: /* Configuration file examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
USB peripheral test cases are made between host (e.g. PC) and peripheral gadget (e.g. N900). Both ends have their own drivers which communicate and transfer data between different endpoints.&lt;br /&gt;
&lt;br /&gt;
== Test Coverage ==&lt;br /&gt;
&lt;br /&gt;
Each test case must be run independently and devices must be preset according to case requirements using provided setup test cases. In practice, this means for example data transfer requires preconnected host enabled USB cable and host mode supporting device is connected to system. Each test case prints out required user interaction to terminal. &lt;br /&gt;
* USB - Setup host driver &lt;br /&gt;
* USB - Setup peripheral driver &lt;br /&gt;
* USB - Read test &lt;br /&gt;
* USB - Write test &lt;br /&gt;
 &lt;br /&gt;
===  Software Coverage === &lt;br /&gt;
&lt;br /&gt;
Current coverage for USB tests: &lt;br /&gt;
* [[http://gitorious.org/qa-tools/mcts-coverage/blobs/master/USB-core-coverage.ods USB-coverage.ods]]&lt;br /&gt;
&lt;br /&gt;
===  Hardware Coverage === &lt;br /&gt;
&lt;br /&gt;
USB bulk and isochronous endpoint transfer test cases. Those who know more about USB transfer can also alter endpoint configurations via configuration files. Example configurations are provided with the test package. &lt;br /&gt;
&lt;br /&gt;
===  Limitations === &lt;br /&gt;
* Drivers must be initialized before running other test cases. &lt;br /&gt;
* All other gadget drivers MUST be unloaded before test execution in used DUT! &lt;br /&gt;
* All USB cables MUST be disconnected when executing initializations! &lt;br /&gt;
&lt;br /&gt;
===  Future Improvements === &lt;br /&gt;
* Support for simultaneous data transfer on multiple endpoints. &lt;br /&gt;
* Automated test execution and peripheral DUT driver selection. &lt;br /&gt;
* Official unique USB driver ID. &lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
===  Hardware setup and test execution order === &lt;br /&gt;
&lt;br /&gt;
Required hardware:&lt;br /&gt;
* Supported USB cable &lt;br /&gt;
* Device with USB host capability (e.g. PC) &lt;br /&gt;
* Device with USB peripheral capability (e.g. N900) &lt;br /&gt;
&lt;br /&gt;
How to setup test enviroment: &lt;br /&gt;
# Make sure usb cable is disconnected between devices &lt;br /&gt;
# Set up host side (e.g. PC) by running test 'USB - Setup host driver'&lt;br /&gt;
# Set up gadget side (peripheral device)  by running test 'USB - Setup peripheral driver'&lt;br /&gt;
# Connect cable &lt;br /&gt;
# Execute tests &lt;br /&gt;
&lt;br /&gt;
NOTE: Before executing test cases it must be determined if used devices are capable of acting as peripheral or host. This depends on USB controller chips of devices and necessary information should be available from device vendors. Furthermore, current gadget driver implementation is built over MUSB driver implementation available in Linux kernel. Possible different implementations by device vendors may cause incompatibility with this test driver. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$ blts_usb_testrunner -C [config file] -e [test number]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Configuration files === &lt;br /&gt;
This test asset uses two configuration files: One for generic test execution options and one for endpoint configuration. Endpoint configuration file is linked to base configuration files thus only base file path is given as parameter. Configuration files must be used, as they contain endpoint configuration for driver. &lt;br /&gt;
&lt;br /&gt;
Currently following example base configuration files are included in the package: &lt;br /&gt;
* blts-usb-testrunner-bulk.cnf &lt;br /&gt;
* blts-usb-testrunner-int.cnf &lt;br /&gt;
* blts-usb-testrunner-isoc.cnf &lt;br /&gt;
&lt;br /&gt;
The base files are linked to endpoint configuration files and following examples are provided with test package: &lt;br /&gt;
* ep-configuration-bulk.cfg &lt;br /&gt;
* ep-configuration-int.cfg &lt;br /&gt;
* ep-configuration-isoc.cfg &lt;br /&gt;
&lt;br /&gt;
NOTE: Supported endpoint configurations differ from device to device and they should be modified according to test execution requirements. These configuration files are provided as examples and should not be used as such during proper test execution. &lt;br /&gt;
&lt;br /&gt;
===  Common test execution guidelines === &lt;br /&gt;
&lt;br /&gt;
NOTE: &lt;br /&gt;
* Default config files are installed to /usr/share/blts-usb-tests/. &lt;br /&gt;
* Drivers must be initialized before running other test cases. &lt;br /&gt;
* All USB cables MUST be disconnected when executing initializations! &lt;br /&gt;
&lt;br /&gt;
NOTE: All other gadget drivers MUST be unloaded before test execution in used DUT! &lt;br /&gt;
&lt;br /&gt;
You can use command lsmod to determine which modules are loaded in memory: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ lsmod&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See if some gadget driver is found. For example g_file_storage is a mass storage module, but this depends on used HW and SW. The module can be unloaded with following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ modprobe -r g_file_storage&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Test case arguments === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Arguments: &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Switch &lt;br /&gt;
!|Function&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| -C || Used parameter configuration file &lt;br /&gt;
|-&lt;br /&gt;
|| -l  || Used log file, default blts_skeleton_run.log&lt;br /&gt;
|-&lt;br /&gt;
|| -e || Execute single or multiple selected tests, for example -e 1,4,5. &lt;br /&gt;
|-&lt;br /&gt;
|| -en || Execute test by name, for example -en &amp;quot;My test X&amp;quot;  &lt;br /&gt;
|-&lt;br /&gt;
|| -s || Show list of all tests &lt;br /&gt;
|-&lt;br /&gt;
|| -? || Help message  &lt;br /&gt;
|-&lt;br /&gt;
|| -nc || Do not output log to terminal &lt;br /&gt;
|- &lt;br /&gt;
!|Optional switch &lt;br /&gt;
!|Function &lt;br /&gt;
|-&lt;br /&gt;
|| -h || Use given host driver (default: blts_usb_host), for example -h blts_usb_host  &lt;br /&gt;
|-&lt;br /&gt;
|| -p || Use given peripheral driver (default: blts_gadget), for example -h blts_gadget &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  Test cases === &lt;br /&gt;
Test case execution notices: &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Case name &lt;br /&gt;
!|Notice &lt;br /&gt;
|-&lt;br /&gt;
||  USB - Setup host driver*  ||   &lt;br /&gt;
|-&lt;br /&gt;
|| USB - Setup peripheral driver#  ||  Use configuration file to create specific setup, bulk endpoints are created by default &lt;br /&gt;
|-&lt;br /&gt;
||  USB - Read test*  ||  Read data from endpoints &lt;br /&gt;
|-&lt;br /&gt;
||  USB - Write test*  ||  Write data to endpoints&lt;br /&gt;
|}&lt;br /&gt;
''* This test is run on host device.'' &amp;lt;br&amp;gt;&lt;br /&gt;
''# This test is run on peripheral device.''&lt;br /&gt;
&lt;br /&gt;
===  Configuration file examples === &lt;br /&gt;
The test asset allows you to change all endpoint parameters via configuration files. Since the USB (2.0) specification only states the valid range for different settings, it is possible to give any values as long as they fit inside these ranges. The test asset allows experimenting with different configurations and &amp;quot;triangulation&amp;quot; of what works and what does not. Naturally there are certain HW related restrictions such as total transfer capacity which obviously cannot be exceeded with endpoint configuration. Basic test asset configurations is done with base configuration files, such as provided &amp;lt;code&amp;gt;blts-usb-testrunner-bulk.cnf&amp;lt;/code&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# USB test case configuration for parameters&lt;br /&gt;
&lt;br /&gt;
######################&lt;br /&gt;
# General parameters #&lt;br /&gt;
######################&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name host_driver&lt;br /&gt;
   const &amp;quot;blts_usb_host&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name host_driver_path&lt;br /&gt;
   const &amp;quot;/usr/lib/tests/blts-usb-tests/&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name peripheral_driver&lt;br /&gt;
   const &amp;quot;blts_gadget&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name peripheral_driver_path&lt;br /&gt;
   const &amp;quot;/usr/lib/tests/blts-usb-tests/&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name data_transfer_timeout&lt;br /&gt;
   const &amp;quot;10000&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name usb_transfer_size&lt;br /&gt;
   const 4096&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
##########################&lt;br /&gt;
# Endpoint configuration #&lt;br /&gt;
##########################&lt;br /&gt;
&lt;br /&gt;
[parameter]&lt;br /&gt;
   name ep_configuration_file&lt;br /&gt;
   const &amp;quot;/usr/share/blts-usb-tests/ep-configuration-bulk.cfg&amp;quot;&lt;br /&gt;
[end_parameter]&lt;br /&gt;
&lt;br /&gt;
################&lt;br /&gt;
# Driver setup #&lt;br /&gt;
################&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Setup host driver&amp;quot;&lt;br /&gt;
   params host_driver host_driver_path&lt;br /&gt;
[end_test]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Setup peripheral driver&amp;quot;&lt;br /&gt;
   params peripheral_driver peripheral_driver_path usb_transfer_size ep_configuration_file&lt;br /&gt;
[end_test]&lt;br /&gt;
&lt;br /&gt;
#######################&lt;br /&gt;
# Data transfer cases #&lt;br /&gt;
#######################&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Read test&amp;quot;&lt;br /&gt;
   params host_driver host_driver_path peripheral_driver peripheral_driver_path usb_transfer_size&lt;br /&gt;
[end_test]&lt;br /&gt;
&lt;br /&gt;
[test]&lt;br /&gt;
   name &amp;quot;USB - Write test&amp;quot;&lt;br /&gt;
   params host_driver host_driver_path peripheral_driver peripheral_driver_path usb_transfer_size&lt;br /&gt;
[end_test]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change the endpoint configuration, you will have to edit ep-configuration files. For example, provided &amp;lt;code&amp;gt;ep-configuration-bulk.cfg&amp;lt;/code&amp;gt; looks like this by default: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# device_speed used_speed max_power&lt;br /&gt;
high any 50&lt;br /&gt;
# endpoint type direction max_packet_size interval&lt;br /&gt;
1 bulk in 512 9&lt;br /&gt;
2 bulk out 512 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The lines starting with # are comments and document provided parameters. Device_speed is the highest speed used device is supposed to be able handle (any/low/full/high) and used_speed the operational speed during test execution. This can be used to force the device to use lower speed than normally would be used. To add new pair of bulk endpoints simply add following lines to the file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
3 bulk in 512 9&lt;br /&gt;
4 bulk out 512 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Do note that you can put different endpoint types to the same configuration so there can be any combination of bulk, interrupt and isochronous endpoints as long as device supports this.&lt;br /&gt;
&lt;br /&gt;
== Module Design and Architecture ==&lt;br /&gt;
&lt;br /&gt;
Debian package is provided which includes both host and peripheral drivers in addition to test runner. This package can be installed on all devices under testing, although functionality depends on used hardware. &lt;br /&gt;
&lt;br /&gt;
===  Architecture diagram === &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|  USB Specification || [http://www.usb.org/developers/docs/ USB documentation] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Change History ==&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Version&lt;br /&gt;
!|Date &lt;br /&gt;
!|Handled By &lt;br /&gt;
!|Status &lt;br /&gt;
!|Comments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 0.1 || 8-sep-2010 || [mailto:ext-iekku.huttunen@nokia.com Iekku Huttunen] || Draft || Page created&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klaakso</name></author>	</entry>

	</feed>