Data Representation

gaochris1 edited this page Jan 27, 2014 · 16 revisions
<style type="text/css"> .container { width: 50%; }

body { font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-weight: 100; font-size: 0.8em; }

table { min-width: 300px; margin-bottom: 20px; width: 100%; max-width: 90%; background-color: transparent; border-collapse: collapse; border-spacing: 0px; margin: 0 0 0 0; }

table td { border: 1px solid rgb(204, 204, 204); padding: 7px; }

table thead th { border: 1px solid rgb(204, 204, 204); padding: 5px; color: rgb(32, 32, 32); font-weight: 400; background: none repeat scroll 0% 0% rgb(244, 244, 244); }

td.shorter { font-size: 0.95em; }

td.longer { font-size: 0.8em; }

td.code { font-size: 0.95em; font-family: Consolas, Monaco, monospace; }

pre { border: 1px solid rgb(204, 204, 204); background-color: rgb(238, 238, 238); font-family: Consolas, Monaco, monospace; } </style>

Mobile Performance Data Dictionary

Measurement
		<li><strong>Metrics</strong>

			<div id="superdiv2" style="display: block;">
				<ul class="contentList">
					<li><a href="#phone_identity">phone_identity</a></li>
					<li><a href="#network_data">network_data</a></li>
					<li><a href="#gsm_cell_location">gsm_cell_location</a></li>
					<li><a href="#cdma_cell_location">cdma_cell_location</a></li>
					<li><a href="#cell_neighbour_tower_data">cell_neighbour_tower_data</a></li>
					<li><a href="#location">location</a></li>
				</ul>
			</div></li>

		<li><strong>Conditions</strong>

			<div id="superdiv3" style="display: block;">
				<ul class="contentList">
					<li><a href="#PARAM_EXPIRED">PARAM_EXPIRED</a></li>
					<li><a href="#NETACTIVITY">NETACTIVITY</a></li>
					<li><a href="#CPUACTIVITY">CPUACTIVITY</a></li>
				</ul>
			</div></li>
	</ul>
	<a href="#Example">Jump to example result.</a>
	<p>The FCC Measuring Broadband America (MBA) Program's Mobile
		Measurement Effort developed in cooperation with SamKnows Ltd. and
		diverse stakeholders employs a client-server based anonymized data
		collection approach to gather broadband performance data in an open
		and transparent manner with the highest commitment to protecting
		participants privacy. All data collected is thoroughly analyzed and
		processed prior to public release to ensure that subscribers’ privacy
		interests are protected.</p>
	<p>Data related to the radio characteristics of the handset,
		information about the handset type and operating system (OS) version,
		the GPS coordinates available from the handset at the time each test
		is run, the date and time of the observation, and the results of
		active test results are recorded on the handset in JSON(JavaScript
		Object Notation) nested data elements within flat files. These JSON
		files are then transmitted to storage servers at periodic intervals
		after the completion of active test measurements. This document
		describes the JSON schema nested format of the radio, handset, active
		test result and other data recorded on the handset prior to
		transmission to the storage infrastructure.</p>
	<a href="#Example">Jump to example result.</a>
	<h3>Measurement Reference</h3>
	<table>
		<thead>
			<tr>
				<th>Property</th>
				<th>Type</th>
				<th>Description</th>
				<th>Explanation</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td class="code">_received</td>
				<td class="shorter">Integer</td>
				<td class="shorter">unix_timestamp of reception</td>
				<td class="longer">The timestamp recoded at server side at the
					moment the result file is being received.</td>
			</tr>
                             <tr>
				<td class="code">_sourceip</td>
				<td class="shorter">String</td>
				<td class="shorter">source ip address</td>
				<td class="longer">The Internet Protocol (IP) address of the
					handset submitting the results to the collecting infrastructure as
					seen by the collecting infrastructure.</td>
			</tr>
                             <tr>
				<td class="code">enterprise_id</td>
				<td class="shorter">String</td>
				<td class="shorter">FCC_Public</td>
				<td class="longer">The code for different panel programs.
                             </td>
			</tr>
                             <tr>
				<td class="code">sim_operator_code</td>
				<td class="shorter">String</td>
				<td class="shorter">android.telephony.TelephonyManager<br>.getSimOperator()
				</td>
				<td class="longer">The field holds string from the Android
					method that identifies the MCC+MNC (mobile country code + mobile
					network code) of the provider of the SIM.</td>
			</tr>

			<tr>
				<td class="code">submission_type</td>
				<td class="shorter">String</td>
				<td class="shorter">[scheduled_tests|init_tests|manual_tests]</td>
				<td class="longer">The application logic will select one of
					three possible string definitions. <br></br> Data results may be
					recorded from handsets downloading configuration files for test
					schedules from SamKnows scheduling servers; performing scheduled
					tests parsed from configuration files residing on the handset; or
					from a handset user initiating a manual test. Each category of
					initiating test are documented in this field.
				</td>
			</tr>
			<tr>
				<td class="code">app_version_code</td>
				<td class="shorter">String</td>
				<td class="shorter">version code from androidmanifest.xml</td>
				<td class="longer">The field contains the current compiled
					application version number parsed from the application
					configuration file, androidmanifest.xml. The version number
					confirms to a major.minor build revision practice, e.g. V 1.23
					major version revision one, minor version revision 23.</td>
			</tr>
			<tr>
				<td class="code">app_version_name</td>
				<td class="shorter">String</td>
				<td class="shorter">version name from androidmanifest.xml</td>
				<td class="longer">The field contains the current compiled
					application version parsed from the application configuration
					file, androidmanifest.xml. The name may vary depending on the
					target user base, e.g. wireless carrier enterprise build.</td>
			</tr>
			<tr>
				<td class="code">schedule_config_version</td>
				<td class="shorter">String</td>
				<td class="shorter">config file version</td>
				<td class="longer">This field contains the configuration file
					version currently in use. The application downloads this file
					periodically and modifies its tests parameters accordingly.</td>
			</tr>
			<tr>
				<td class="code">timestamp</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1359128122</td>
				<td class="longer">The unix timestamp of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
			<tr>
				<td class="code">datetime</td>
				<td class="shorter">String</td>
				<td class="shorter">Fri Jan 25 15:35:22 EST 2013</td>
				<td class="longer">The unix time and date of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
			<tr>
				<td class="code">timezone</td>
				<td class="shorter">Integer</td>
				<td class="shorter">-5</td>
				<td class="longer">An integer denoting the number of hours
					offset from GMT time of the handset performing the measurement at
					the beginning of the observations.</td>
			</tr>
			<tr>
				<td class="code">tests</td>
				<td class="shorter">JSON Array</td>
				<td class="shorter">Results for <a href="#JHTTPGETMT">JHTTPGETMT</a>,
					<a href="#JHTTPPOSTMT">JHTTPPOSTMT</a>, <a href="#JUDPLATENCY">JUDPLATENCY</a>,<a href="#CLOSESTTARGET">CLOSESTTARGET</a>
				</td>
				<td class="longer">(See below for details of array.) <br></br>
					There are 3 entries in this array, one for each result type.
				</td>
			</tr>
			<tr>
				<td class="code">metrics</td>
				<td class="shorter">JSON Array</td>
				<td class="shorter">Results for <a href="#phone_identity">phone_identity</a>,
					<a href="#network_data">network_data</a>, [<a
					href="#gsm_cell_location">gsm_cell_location</a> OR <a
					href="#cdma_cell_location">cdma_cell_location</a>], <a
					href="#cell_neighbour_tower_data">cell_neighbour_tower_data</a>, <a
					href="#location">location</a></td>
				<td class="longer">(See below for details of array.) <br></br>
					There are 6 entries in this array, one for each result type.
				</td>
			</tr>
			<tr>
				<td class="code">conditions</td>
				<td class="shorter">JSON Array</td>
				<td class="shorter">Results for <a href="#PARAM_EXPIRED">PARAM_EXPIRED</a>,
					<a href="#NETACTIVITY">NETACTIVITY</a>, <a href="#CPUACTIVITY">CPUACTIVITY</a></td>
				<td class="longer">(See below for details of array.) <br></br>
					There are 3 entries in this array, one for each result type.
				</td>
			</tr>
		</tbody>
	</table>

	<h3 id="JHTTPGETMT">JHTTPGETMT Reference</h3>
	<table>
		<thead>
			<tr>
				<th>Property</th>
				<th>Type</th>
				<th>Description</th>
				<th>Explanation</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td class="code">type</td>
				<td class="shorter">String</td>
				<td class="shorter">JHTTPGETMT</td>
				<td class="longer">The active metric type 'JHTTPGETMT'
					describes measurement results of the active test for download
					performance.</td>
			</tr>
			<tr>
				<td class="code">bytes_sec</td>
				<td class="shorter">Integer</td>
				<td class="shorter">154716</td>
				<td class="longer">The field represents the throughput
					experienced during the transfer period of the test, the value is
					obtained dividing the total amount of bytes transferred during the
					“transfer_period” by the time they have been transferred. This
					represents hence the download speed.</td>
			</tr>
			<tr>
				<td class="code">datetime</td>
				<td class="shorter">String (Android dtime format)</td>
				<td class="shorter">Fri Jan 25 15:35:22 GMT 2013</td>
				<td class="longer">The field represents the time the test
					finished in UTC represented as a Android dtime datatype.</td>
			</tr>
			<tr>
				<td class="code">number_of_threads</td>
				<td class="shorter">Integer</td>
				<td class="shorter">3</td>
				<td class="longer">The number of concurrent TCP connections
					used in the test.</td>
			</tr>
			<tr>
				<td class="code">success</td>
				<td class="shorter">Boolean</td>
				<td class="shorter">true</td>
				<td class="longer">The field represents the success or failure
					of the measurement. True denotes a successful execution of the
					entire test.</td>
			</tr>
			<tr>
				<td class="code">target</td>
				<td class="shorter">String</td>
				<td class="shorter">n1-the1.samknows.com</td>
				<td class="longer">The field holds a string of the measurement
					server target hostname or IP address. The value is pulled from the
					test configuration file. The test configuration file, or
					schedule_config file is donwloaded periodically by the application
					and its content specifies the parameters used for configuring the
					tests. An example of the file is schedule_example.xml locatetd in
					AndroidAppLibrary/res/raw</td>
			</tr>
			<tr>
				<td class="code">target_ipaddress</td>
				<td class="shorter">String</td>
				<td class="shorter">46.17.56.234</td>
				<td class="longer">The field holds a four tuple colon
					deliminated IP address of the 'target' measurement server, as
					resolved by the handset's locally configured DNS for the active
					network used to execute the test.</td>
			</tr>
			<tr>
				<td class="code">timestamp</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1359128122</td>
				<td class="longer">The field contains the time the measurement
					concluded represented as a sql TIMESTAMP datatype.
					http://developer.android.com/reference/java/sql/Timestamp.html</td>
			</tr>
			<tr>
				<td class="code">transfer_bytes</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1783936</td>
				<td class="longer">The field contains the total bytes
					downloaded across all connections during the execution of the
					measurement.</td>
			</tr>
			<tr>
				<td class="code">transfer_time</td>
				<td class="shorter">Integer</td>
				<td class="shorter">11530334</td>
				<td class="longer">The field contains the time the test ran
					for in microseconds.</td>
			</tr>
			<tr>
				<td class="code">warmup_bytes</td>
				<td class="shorter">Integer</td>
				<td class="shorter">145024</td>
				<td class="longer">The field contains the Bytes transferred
					for all the TCP streams during the warm-up phase.</td>
			</tr>
			<tr>
				<td class="code">warmup_time</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1309661</td>
				<td class="longer">The field contains the time consumed for
					all the TCP streams to arrive at optimal window size (Units:
					microseconds).</td>
			</tr>
		</tbody>
	</table>

	<h3 id="JHTTPPOSTMT">JHTTPPOSTMT Reference</h3>
	<table>
		<thead>
			<tr>
				<th>Property</th>
				<th>Type</th>
				<th>Description</th>
				<th>Explanation</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td class="code">type</td>
				<td class="shorter">String</td>
				<td class="shorter">JHTTPPOSTMT</td>
				<td class="longer">The active metric type 'JHTTPPOSTMT'
					describes measurement results of the active test for upload
					performance.</td>
			</tr>
			<tr>
				<td class="code">bytes_sec</td>
				<td class="shorter">Integer</td>
				<td class="shorter">167995</td>
				<td class="longer">The field represents the throughput
					experienced during the transfer period of the test, the value is
					obtained dividing the total amount of bytes transferred during the
					“transfer_period” by the time they have been transferred. This
					represents hence the download speed.</td>
			</tr>
			<tr>
				<td class="code">datetime</td>
				<td class="shorter">String</td>
				<td class="shorter">Fri Jan 25 15:35:36 GMT 2013</td>
				<td class="longer">The field represents the time the test
					finished in UTC represented as a Android dtime datatype.</td>
			</tr>
			<tr>
				<td class="code">number_of_threads</td>
				<td class="shorter">Integer</td>
				<td class="shorter">3</td>
				<td class="longer">The number of concurrent TCP connections
					used in the test.</td>
			</tr>
			<tr>
				<td class="code">success</td>
				<td class="shorter">Boolean</td>
				<td class="shorter">true</td>
				<td class="longer">The field represents the success or failure
					of the measurement. True denotes a successful execution of the
					entire test.</td>
			</tr>
			<tr>
				<td class="code">target</td>
				<td class="shorter">String</td>
				<td class="shorter">n1-the1.samknows.com</td>
				<td class="longer">The field holds a string of the measurement
					server target hostname or IP address. The value is pulled from the
					test configuration file. The test configuration file, or
					schedule_config file is donwloaded periodically by the application
					and its content specifies the parameters used for configuring the
					tests. An example of the file is schedule_example.xml locatetd in
					AndroidAppLibrary/res/raw</td>
			</tr>
			<tr>
				<td class="code">target_ipaddress</td>
				<td class="shorter">String</td>
				<td class="shorter">46.17.56.234</td>
				<td class="longer">The field holds a four tuple colon
					deliminated IP address of the 'target' measurement server, as
					resolved by the handset's locally configured DNS for the active
					network used to execute the test.</td>
			</tr>
			<tr>
				<td class="code">timestamp</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1359128136</td>
				<td class="longer">The field contains the time the measurement
					concluded represented as a sql TIMESTAMP datatype.
					http://developer.android.com/reference/java/sql/Timestamp.html</td>
			</tr>
			<tr>
				<td class="code">transfer_bytes</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1944064</td>
				<td class="longer">The field contains the total bytes uploaded
					across all connections during the execution of the measurement.</td>
			</tr>
			<tr>
				<td class="code">transfer_time</td>
				<td class="shorter">Integer</td>
				<td class="shorter">11572113</td>
				<td class="longer">The field contains the time the test ran
					for in microseconds.</td>
			</tr>
			<tr>
				<td class="code">warmup_bytes</td>
				<td class="shorter">Integer</td>
				<td class="shorter">114176</td>
				<td class="longer">The field contains the Bytes transferred
					for all the TCP streams during the warm-up phase.</td>
			</tr>
			<tr>
				<td class="code">warmup_time</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1496460</td>
				<td class="longer">The field contains the time consumed for
					all the TCP streams to arrive at optimal window size (Units:
					microseconds).</td>
			</tr>
		</tbody>
	</table>

	<h3 id="JUDPLATENCY">JUDPLATENCY Reference</h3>
	<table>
		<thead>
			<tr>
				<th>Property</th>
				<th>Type</th>
				<th>Description</th>
				<th>Explanation</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td class="code">type</td>
				<td class="shorter">String</td>
				<td class="shorter">JUDPLATENCY</td>
				<td class="longer">The active metric type 'JUDPLATENCY' describes measurement results of the active test for latency performance.</td>
			</tr>
			<tr>
				<td class="code">datetime</td>
				<td class="shorter">String</td>
				<td class="shorter">Fri Jan 25 15:36:07 GMT 2013</td>
				<td class="longer">The field contains the time test finished
					in UTC.</td>
			</tr>
			<tr>
				<td class="code">lost_packets</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1</td>
				<td class="longer">The field contains the number of lost
					packets during the test</td>
			</tr>
			<tr>
				<td class="code">rtt_avg</td>
				<td class="shorter">Integer</td>
				<td class="shorter">255144</td>
				<td class="longer">The field contains the average RTT in
					microseconds</td>
			</tr>
			<tr>
				<td class="code">rtt_max</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1488525</td>
				<td class="longer">The field contains the maximum RTT in
					microseconds</td>
			</tr>
			<tr>
				<td class="code">rtt_min</td>
				<td class="shorter">Integer</td>
				<td class="shorter">68023</td>
				<td class="longer">The field contains the minimum RTT in
					microseconds</td>
			</tr>
			<tr>
				<td class="code">rtt_stddev</td>
				<td class="shorter">Integer</td>
				<td class="shorter">243171</td>
				<td class="longer">The field contains the standard deviation
					RTT measured in microseconds</td>
			</tr>
			<tr>
				<td class="code">success</td>
				<td class="shorter">Boolean</td>
				<td class="shorter">true</td>
				<td class="longer">The field contains the number of successes
					(note: use failures/(successes+failures)) for packet loss)</td>
			</tr>
			<tr>
				<td class="code">target</td>
				<td class="shorter">String</td>
				<td class="shorter">n1-the1.samknows.com</td>
				<td class="longer">The field holds a string of the measurement
					server target hostname or IP address. The value is pulled from the
					test configuration file.</td>
			</tr>
			<tr>
				<td class="code">target_ipaddress</td>
				<td class="shorter">String</td>
				<td class="shorter">46.17.56.234</td>
				<td class="longer">The field holds a four tuple colon
					deliminated IP address of the 'target' measurement server, as
					resolved by the handset's locally configured DNS for the active
					network used to execute the test.</td>
			</tr>
			<tr>
				<td class="code">timestamp</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1359128167</td>
				<td class="longer">The field contains the time the measurement
					concluded represented as a sql TIMESTAMP datatype.
					http://developer.android.com/reference/java/sql/Timestamp.html</td>
			</tr>
		</tbody>
	</table>

CLOSESTTARGET Reference

Property Type Description Explanation
type String CLOSESTTARGET The active metric type 'CLOSESTTARGET' contains the nearest (in latency) measurement server that the client assess as it activates for testing
timestamp Integer 1384442005 The field contains the time the measurement concluded represented as a sql TIMESTAMP datatype. http://developer.android.com/reference/java/sql/Timestamp.html
datetime String Thu Nov 14 09:13:25 CST 2013 The field contains the time test finished in UTC.
success Boolean true The field represents the success or failure of the measurement. True denotes a successful execution of the entire test.
ip_closest_target String 4.30.14.254 The field contains the IP address of the nearest measurement server

phone_identity Reference

Property Type Description Explanation
type String phone_identity The passive metric type 'phone_identity' describes features of the handset and installed operating system.
datetime String Fri Jan 25 15:35:07 GMT 2013 The unix time and date of the handset performing the measurement at the beginning of the observations.
manufacturer String api android.os.Build.MANUFACTURER The field holds a string from the Android method that identifies the handset manufacturer.
model String api android.os.Build.MODEL The field holds a string from the Android method that identifies the handset model.
os_type String android The field holds a string for the Operating System of the handset. This value is set by the application logic.
os_version Integer api android.os.Build.VERSION.SDK_INT
timestamp Integer 1359128107 The field contains the unix timestamp of the handset performing the measurement at the beginning of the observations as a sql TIMESTAMP datatype. http://developer.android.com/reference/java/sql/Timestamp.html
	<h3 id="network_data">network_data Reference</h3>
	<table>
		<thead>
			<tr>
				<th>Property</th>
				<th>Type</th>
				<th>Description</th>
				<th>Explanation</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td class="code">type</td>
				<td class="shorter">String</td>
				<td class="shorter">network_data</td>
				<td class="longer">The passive metric type 'network_data' describes features of the wireless connectivity of the active network connection.</td>
			</tr>
			<tr>
				<td class="code">active_network_type</td>
				<td class="shorter">String</td>
				<td class="shorter">android.net.ConnectivityManager<br>.getActiveNetworkInfo()<br>.getTypeName()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the type of wireless network that provides
					Internet connectivity at the time of the observation.</td>
			</tr>
			<tr>
				<td class="code">active_network_type_code</td>
				<td class="shorter">String</td>
				<td class="shorter">android.net.ConnectivityManager<br>.getActiveNetworkInfo()<br>.getType()
				</td>
				<td class="longer">The field holds string from the Android
					method that identifies the type of wireless network that provides
					Internet connectivity at the time of the observation.</td>
			</tr>
			<tr>
				<td class="code">connected</td>
				<td class="shorter">Boolean</td>
				<td class="shorter">android.net.ConnectivityManager<br>.getActiveNetworkInfo()<br>.isConnected()
				</td>
				<td class="longer">The field holds boolean true or false value
					from the Android method that identifies whether network
					connectivity exists and it is possible to establish connections
					and pass data.</td>
			</tr>
			<tr>
				<td class="code">datetime</td>
				<td class="shorter">String</td>
				<td class="shorter">Fri Jan 25 15:35:07 GMT 2013</td>
				<td class="longer">The unix time and date of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
			<tr>
				<td class="code">network_operator_code</td>
				<td class="shorter">String</td>
				<td class="shorter">android.telephony.TelephonyManager<br>.getNetworkOperator()
				</td>
				<td class="longer">The field holds string from the Android
					method that identifies the numeric name (MCC+MNC) of the current
					registered operator of the Internet connectivity at the time of
					the observation.</td>
			</tr>
			<tr>
				<td class="code">network_operator_name</td>
				<td class="shorter">String</td>
				<td class="shorter">android.telephony.TelephonyManager<br>.getNetworkOperatorName()
				</td>
				<td class="longer">The field holds string from the Android
					method that identifies the text readable name of the current
					registered operator of the Internet connectivity at the time of
					the observation.</td>
			</tr>
			<tr>
				<td class="code">network_type_code</td>
				<td class="shorter">Integer</td>
				<td class="shorter">android.telephony.TelephonyManager<br>.getNetworkType()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies a constant indicating the radio technology
					(network type) currently in use on the handset for data
					transmission.</td>
			</tr>
			<tr>
				<td class="code">phone_type_code</td>
				<td class="shorter">Integer</td>
				<td class="shorter">api android.telephony.TelephonyManager<br>.getPhoneType()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies a constant indicating the device phone
					type.</td>
			</tr>
			<tr>
				<td class="code">network_type</td>
				<td class="shorter">String</td>
				<td class="shorter">HSDPA</td>
				<td class="longer">The field holds a string converted from the
					Android method that identifies a constant indicating the radio
					technology (network type) currently in use on the handset for data
					transmission.</td>
			</tr>
			<tr>
				<td class="code">phone_type_code</td>
				<td class="shorter">Integer</td>
				<td class="shorter">api android.telephony.TelephonyManager<br>.getPhoneType()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies a constant indicating the device phone
					type.</td>
			</tr>
			<tr>
				<td class="code">phone_type</td>
				<td class="shorter">String</td>
				<td class="shorter">GSM</td>
				<td class="longer">The field holds a string converted from the
					Android method that identifies a constant indicating the device
					phone type.</td>
			</tr>
			<tr>
				<td class="code">roaming</td>
				<td class="shorter">Boolean</td>
				<td class="shorter">android.telephony.TelephonyManager<br>.isNetworkRoaming()
				</td>
				<td class="longer">The field holds a boolean true false value
					from the Android method that identifies whether the active
					connection is considered roaming on the current network, for GSM
					purposes.</td>
			</tr>
			<tr>
				<td class="code">sim_operator_name</td>
				<td class="shorter">String</td>
				<td class="shorter">android.telephony.TelephonyManager<br>.getSimOperatorName()
				</td>
				<td class="longer">The field holds string from the Android
					method that identifies the Service Provider Name (SPN)</td>
			</tr>
			<tr>
				<td class="code">timestamp</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1359128107</td>
				<td class="longer">The unix timestamp of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
		</tbody>
	</table>

	<h3 id="gsm_cell_location">gsm_cell_location Reference</h3>
	<table>
		<thead>
			<tr>
				<th>Property</th>
				<th>Type</th>
				<th>Description</th>
				<th>Explanation</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td class="code">type</td>
				<td class="shorter">String</td>
				<td class="shorter">gsm_cell_location</td>
				<td class="longer">The passive metric type 'gsm_cell_location'
					describes the location of handset determined by the GSM provider
					technology.</td>
			</tr>
			<tr>
				<td class="code">bit_error_rate</td>
				<td class="shorter">Integer</td>
				<td class="shorter">android.telephony.SignalStrength<br>.getGsmBitErrorRate()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the GSM bit error rate (0-7, 99) as defined
					in TS 27.007 8.5.</td>
			</tr>
			<tr>
				<td class="code">cell_tower_id</td>
				<td class="shorter">Integer</td>
				<td class="shorter">api android.telephony.gsm.GsmCellLocation<br>.getCid()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the GSM tower location id, noting -1 if
					unknown, and 0xffff as the max allowable value.</td>
			</tr>
			<tr>
				<td class="code">datetime</td>
				<td class="shorter">String</td>
				<td class="shorter">Fri Jan 25 15:35:07 GMT 2013</td>
				<td class="longer">The unix time and date of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
			<tr>
				<td class="code">location_area_code</td>
				<td class="shorter">Integer</td>
				<td class="shorter">android.telephony.gsm.GsmCellLocation<br>.getLac()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the GSM location area code, noting -1 if
					unknown, and 0xffff as the max allowable value..</td>
			</tr>
			<tr>
				<td class="code">signal_strength</td>
				<td class="shorter">Integer</td>
				<td class="shorter">android.telephony.SignalStrength<br>.getGsmSignalStrength()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the GSM Signal Strength, with valid values
					are (0-31, 99) as defined in TS 27.007 8.</td>
			</tr>
			<tr>
				<td class="code">timestamp</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1359128107</td>
				<td class="longer">The unix timestamp of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
			<tr>
				<td class="code">umts_psc</td>
				<td class="shorter">Integer</td>
				<td class="shorter">android.telephony.gsm.GsmCellLocation<br>.getPsc()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the primary scrambling code of the serving
					cell on a UMTS network.</td>
			</tr>
		</tbody>
	</table>
	
			<h3 id="cdma_cell_location">cdma_cell_location Reference</h3>
	<table>
		<thead>
			<tr>
				<th>Property</th>
				<th>Type</th>
				<th>Description</th>
				<th>Explanation</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td class="code">type</td>
				<td class="shorter">String</td>
				<td class="shorter">cdma_cell_location</td>
				<td class="longer">The passive metric type 'cdma_cell_location'
					describes the location of handset determined by the CDMA provider
					technology.</td>
			</tr>
			<tr>
				<td class="code">datetime</td>
				<td class="shorter">String</td>
				<td class="shorter">Fri Jan 25 15:35:07 GMT 2013</td>
				<td class="longer">The unix time and date of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
			<tr>
				<td class="code">timestamp</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1359128107</td>
				<td class="longer">The unix timestamp of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
			<tr>
				<td class="code">base_station_id</td>
				<td class="shorter">Integer</td>
				<td class="shorter">android.telephony.cdma.CdmaCellLocation<br>.getBaseStationId()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the cdma base station identification
					number, and -1 if unknown.</td>
			</tr>
			<tr>
				<td class="code">base_station_latitude</td>
				<td class="shorter">Integer</td>
				<td class="shorter">android.telephony.cdma.CdmaCellLocation<br>.getBaseStationLatitude()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the cdma latitude as a decimal number as
					specified in 3GPP2 C.S0005-A v6.0.
					(http://www.3gpp2.org/public_html/specs/C.S0005-A_v6.0.pdf) It is
					represented in units of 0.25 seconds and ranges from -1296000 to
					1296000, both values inclusive (corresponding to a range of -90 to
					+90 degrees). Integer.MAX_VALUE is considered invalid value.</td>
			</tr>
			<tr>
				<td class="code">base_station_longitude</td>
				<td class="shorter">Integer</td>
				<td class="shorter">android.telephony.cdma.CdmaCellLocation<br>.getBaseStationLongitude()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the cdma longitude is a decimal number as
					specified in 3GPP2 C.S0005-A v6.0.
					(http://www.3gpp2.org/public_html/specs/C.S0005-A_v6.0.pdf) It is
					represented in units of 0.25 seconds and ranges from -2592000 to
					2592000, both values inclusive (corresponding to a range of -180
					to +180 degrees). Integer.MAX_VALUE is considered invalid value.</td>
			</tr>
			<tr>
				<td class="code">system_id</td>
				<td class="shorter">Integer</td>
				<td class="shorter">android.telephony.cdma.CdmaCellLocation<br>.getSystemId()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the cdma system identification number, and
					-1 if unknown.td>
			</tr>
			<tr>
				<td class="code">network_id</td>
				<td class="shorter">Integer</td>
				<td class="shorter">android.telephony.cdma.CdmaCellLocation<br>.getNetworkId()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the cdma network identification number, and
					-1 if unknown.</td>
			</tr>
			<tr>
				<td class="code">dbm</td>
				<td class="shorter">Integer</td>
				<td class="shorter">android.telephony.SignalStrength<br>.getCdmaDbm()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the CDMA RSSI value in dBm.</td>
			</tr>
			<tr>
				<td class="code">ecio</td>
				<td class="shorter">Integer</td>
				<td class="shorter">api android.telephony.SignalStrength<br>.getCdmaEcio()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the CDMA Ec/Io value in dB*10</td>
			</tr>
		</tbody>
	</table>

	<h3 id="cell_neighbour_tower_data">cell_neighbour_tower_data
		Reference</h3>
	<table>
		<thead>
			<tr>
				<th>Property</th>
				<th>Type</th>
				<th>Description</th>
				<th>Explanation</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td class="code">type</td>
				<td class="shorter">String</td>
				<td class="shorter">cell_neighbour_tower_data</td>
				<td class="longer">The passive metric type
					'cell_neighbour_tower_data' describes the location of handset
					determined by the GSM provider technology. Calls to this
					constructor require a radio network type to specified, and
					responses to the respective Android API calls return the values
					from the appropriate access network methods.</td>
			</tr>
			<tr>
				<td class="code">cell_tower_id</td>
				<td class="shorter">Integer</td>
				<td class="shorter">api android.telephony.NeighboringCellInfo<br>.getCid()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the neighboring cell tower location id,
					noting -1 if unknown, and 0xffff as the max allowable value.</td>
			</tr>
			<tr>
				<td class="code">datetime</td>
				<td class="shorter">String</td>
				<td class="shorter">Thu Jan 24 22:38:33 EST 2013</td>
				<td class="longer">The unix time and date of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
			<tr>
				<td class="code">location_area_code</td>
				<td class="shorter">Integer</td>
				<td class="shorter">android.telephony.NeighboringCellInfo<br>.getLac()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the neighboring cell tower location area
					code.</td>
			</tr>
			<tr>
				<td class="code">network_type_code</td>
				<td class="shorter">Integer</td>
				<td class="shorter">android.telephony.NeighboringCellInfo<br>.getNetworkType()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the neighboring cell tower network type
					while neighboring cell location is stored. Return
					TelephonyManager.NETWORK_TYPE_UNKNOWN means that the location
					information is unavailable. Return
					TelephonyManager.NETWORK_TYPE_GPRS or
					TelephonyManager.NETWORK_TYPE_EDGE means that Neighboring Cell
					information is stored for GSM network, in which
					NeighboringCellInfo<br>.getLac and NeighboringCellInfo<br>.getCid
					should be called to access location. Return
					TelephonyManager.NETWORK_TYPE_UMTS,
					TelephonyManager.NETWORK_TYPE_HSDPA,
					TelephonyManager.NETWORK_TYPE_HSUPA, or
					TelephonyManager.NETWORK_TYPE_HSPA means that Neighboring Cell
					information is stored for UMTS network, in which
					NeighboringCellInfo<br>.getPsc should be called to access
					location.
				</td>
			</tr>
			<tr>
				<td class="code">network_type</td>
				<td class="shorter">String</td>
				<td class="shorter">UMTS</td>
				<td class="longer">The field holds a string converted from the
					Android method that identifies the neighboring cell tower network
					type while neighboring cell location is stored.</td>
			</tr>
			<tr>
				<td class="code">rssi</td>
				<td class="shorter">Integer</td>
				<td class="shorter">android.telephony.NeighboringCellInfo<br>.getRssi()
				</td>
				<td class="longer">Received signal strength or UNKNOWN_RSSI if
					unknown For GSM, it is in "asu" ranging from 0 to 31 (dBm = -113 +
					2*asu) 0 means "-113 dBm or less" and 31 means "-51 dBm or
					greater" For UMTS, it is the Level index of CPICH RSCP defined in
					TS 25.125</td>
			</tr>
			<tr>
				<td class="code">timestamp</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1359085113</td>
				<td class="longer">The unix timestamp of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
			<tr>
				<td class="code">umts_psc</td>
				<td class="shorter">Integer</td>
				<td class="shorter">android.telephony.NeighboringCellInfo<br>.getPsc()
				</td>
				<td class="longer">The field holds an integer from the Android
					method that identifies the neighboring cell tower Primary
					Scrambling Code in 9 bits format in UMTS, 0x1ff max value
					UNKNOWN_CID if in GSM or CMDA or unknown.</td>
			</tr>
		</tbody>
	</table>

	<h3 id="location">location Reference</h3>
	<table>
		<thead>
			<tr>
				<th>Property</th>
				<th>Type</th>
				<th>Description</th>
				<th>Explanation</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td class="code">type</td>
				<td class="shorter">String</td>
				<td class="shorter">location</td>
				<td class="longer">The passive metric type 'location'
					describes the location of the handset determined by network
					provider technology or GPS at the time of the observation</td>
			</tr>
			<tr>
				<td class="code">accuracy</td>
				<td class="shorter">Float</td>
				<td class="shorter">android.location.Location<br>.getAccuracy()
				</td>
				<td class="longer">The field holds a float from the Android
					method that identifies the accuracy of this location, in meters.</td>
			</tr>
			<tr>
				<td class="code">datetime</td>
				<td class="shorter">String</td>
				<td class="shorter">Thu Jan 24 22:40:05 EST 2013</td>
				<td class="longer">The unix time and date of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
			<tr>
				<td class="code">latitude</td>
				<td class="shorter">Double</td>
				<td class="shorter">android.location.Location<br>.getLatitude()
				</td>
				<td class="longer">The field holds a double from the Android
					method that identifies the latitude, in degrees.</td>
			</tr>
			<tr>
				<td class="code">location_type</td>
				<td class="shorter">String</td>
				<td class="shorter">[network|gps]</td>
				<td class="longer">The field holds a string that identifies
					whether location was derived from the cellular network technology
					or the handset's GPS.</td>
			</tr>
			<tr>
				<td class="code">longitude</td>
				<td class="shorter">Double</td>
				<td class="shorter">android.location.Location<br>.getLongitude()
				</td>
				<td class="longer">The field holds a double from the Android
					method that identifies the longitude, in degrees.</td>
			</tr>
			<tr>
				<td class="code">timestamp</td>
				<td class="shorter">String</td>
				<td class="shorter">android.location.Location<br>.getTime()
				</td>
				<td class="longer">The unix timestamp of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
		</tbody>
	</table>

	<h3 id="PARAM_EXPIRED">PARAM_EXPIRED Reference</h3>
	<table>
		<thead>
			<tr>
				<th>Property</th>
				<th>Type</th>
				<th>Description</th>
				<th>Explanation</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td class="code">type</td>
				<td class="shorter">String</td>
				<td class="shorter">PARAM_EXPIRED</td>
				<td class="longer">The passive metric type 'PARAM_EXPIRED' is
					a metric which tells that value of a parameter has been expired.
					At the time being it is used to get control the value of the
					closest target.</td>
			</tr>
			<tr>
				<td class="code">datetime</td>
				<td class="shorter">String</td>
				<td class="shorter">Fri Jan 25 10:22:13 EST 2013</td>
				<td class="longer">The unix time and date of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
			<tr>
				<td class="code">success</td>
				<td class="shorter">Boolean</td>
				<td class="shorter">false</td>
				<td class="longer">The field holds boolean true or false value
					that identifies whether the test execution expired.</td>
			</tr>
			<tr>
				<td class="code">timestamp</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1359127333</td>
				<td class="longer">The unix timestamp of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
		</tbody>
	</table>

	<h3 id="NETACTIVITY">NETACTIVITY Reference</h3>
	<table>
		<thead>
			<tr>
				<th>Property</th>
				<th>Type</th>
				<th>Description</th>
				<th>Explanation</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td class="code">type</td>
				<td class="shorter">String</td>
				<td class="shorter">NETACTIVITY</td>
				<td class="longer">The passive metric type 'NETACTIVITY'
					describes the traffic sent and received by the handset during a
					test condition period.</td>
			</tr>
			<tr>
				<td class="code">bytesin</td>
				<td class="shorter">Integer</td>
				<td class="shorter">0</td>
				<td class="longer">The field holds an integer value that
					identifies the number of bytes received by the handset during the
					test condition period.</td>
			</tr>
			<tr>
				<td class="code">bytesout</td>
				<td class="shorter">Integer</td>
				<td class="shorter">0</td>
				<td class="longer">The field holds an integer value that
					identifies the number of bytes sent by the handset during the test
					condition period.</td>
			</tr>
			<tr>
				<td class="code">datetime</td>
				<td class="shorter">String</td>
				<td class="shorter">Fri Jan 25 10:23:21 EST 2013</td>
				<td class="longer">The unix time and date of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
			<tr>
				<td class="code">maxbytesin</td>
				<td class="shorter">Integer</td>
				<td class="shorter">10000</td>
				<td class="longer">The field holds an integer value that
					identifies the maximum limit of bytes to be received by the
					handset during the test condition period.</td>
			</tr>
			<tr>
				<td class="code">maxbytesout</td>
				<td class="shorter">Integer</td>
				<td class="shorter">5000</td>
				<td class="longer">The field holds an integer value that
					identifies the maximum limit of bytes to be sent by the handset
					during the test condition period.</td>
			</tr>
			<tr>
				<td class="code">success</td>
				<td class="shorter">Boolean</td>
				<td class="shorter">true</td>
				<td class="longer">The field holds a boolean value that
					identifies whether the condition is met. Meaning that bytes
					received during the test condition period are less than maxbytesin
					and the bytes sent during the test condition period are less than
					maxbytesout.</td>
			</tr>
			<tr>
				<td class="code">timestamp</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1359127401</td>
				<td class="longer">The unix timestamp of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
		</tbody>
	</table>

	<h3 id="CPUACTIVITY">CPUACTIVITY Reference</h3>
	<table>
		<thead>
			<tr>
				<th>Property</th>
				<th>Type</th>
				<th>Description</th>
				<th>Explanation</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td class="code">type</td>
				<td class="shorter">String</td>
				<td class="shorter">CPUACTIVITY</td>
				<td class="longer">The passive metric type 'CPUACTIVITY'
					describes the cpu activity of the handset during a test condition
					period.</td>
			</tr>
			<tr>
				<td class="code">datetime</td>
				<td class="shorter">String</td>
				<td class="shorter">Fri Jan 25 10:23:16 EST 2013</td>
				<td class="longer">The unix time and date of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
			<tr>
				<td class="code">max_average</td>
				<td class="shorter">Integer</td>
				<td class="shorter">25</td>
				<td class="longer">The field holds an integer value that
					identifies the maximum limit of cpu activity on the handset during
					the test condition period.</td>
			</tr>
			<tr>
				<td class="code">read_average</td>
				<td class="shorter">Integer</td>
				<td class="shorter">5</td>
				<td class="longer">The field holds an integer value that
					identifies the read average of the handset's cpu activity handset
					during the measurement observation calculated from /proc/stat in
					CpuUsageReader.java.</td>
			</tr>
			<tr>
				<td class="code">success</td>
				<td class="shorter">Boolean</td>
				<td class="shorter">true</td>
				<td class="longer">The field holds a boolean value that
					identifies whether the cpu activity has been lower of max_average
					during the test condition period.</td>
			</tr>
			<tr>
				<td class="code">timestamp</td>
				<td class="shorter">Integer</td>
				<td class="shorter">1359127396</td>
				<td class="longer">The unix timestamp of the handset
					performing the measurement at the beginning of the observations.</td>
			</tr>
		</tbody>
	</table>



	<h3 id="Example">Example</h3>
	<pre id="code_example" class="brush: plain">

{ "conditions": [ { "datetime": "Fri Jan 25 04:22:13 EST 2013", "timestamp": "1359105733", "type": "PARAM_EXPIRED", "success": "false" }, { "timestamp": "1359105782", "maxbytesout": "5000", "bytesin": "0", "maxbytesin": "10000", "datetime": "Fri Jan 25 04:23:02 EST 2013", "type": "NETACTIVITY", "success": "true", "bytesout": "0" }, { "timestamp": "1359105777", "max_average": "25", "datetime": "Fri Jan 25 04:22:57 EST 2013", "type": "CPUACTIVITY", "success": "true", "read_average": "2" }, { "timestamp": "1359105820", "maxbytesout": "5000", "bytesin": "0", "maxbytesin": "10000", "datetime": "Fri Jan 25 04:23:40 EST 2013", "type": "NETACTIVITY", "success": "true", "bytesout": "0" }, { "timestamp": "1359105815", "max_average": "25", "datetime": "Fri Jan 25 04:23:35 EST 2013", "type": "CPUACTIVITY", "success": "true", "read_average": "2" }, { "timestamp": "1359105860", "maxbytesout": "5000", "bytesin": "0", "maxbytesin": "10000", "datetime": "Fri Jan 25 04:24:20 EST 2013", "type": "NETACTIVITY", "success": "true", "bytesout": "0" }, { "timestamp": "1359105855", "max_average": "25", "datetime": "Fri Jan 25 04:24:15 EST 2013", "type": "CPUACTIVITY", "success": "true", "read_average": "3" } ], "tests": [ { "timestamp": "1359105757", "type": "CLOSESTTARGET", "datetime": "Fri Jan 25 04:22:37 EST 2013", "success": "true", "closest_target": "ispmon.samknows.mlab3.lga01.measurement-lab.org", "ip_closest_target": "74.63.50.46" }, { "timestamp": "1359105795", "number_of_threads": "3", "target": "ispmon.samknows.mlab3.lga01.measurement-lab.org", "warmup_bytes": "300520", "type": "JHTTPGETMT", "datetime": "Fri Jan 25 04:23:15 EST 2013", "bytes_sec": "293758", "success": "true", "transfer_time": "10229828", "transfer_bytes": "3005100", "target_ipaddress": "74.63.50.46", "warmup_time": "1030365" }, { "timestamp": "1359105835", "number_of_threads": "3", "target": "ispmon.samknows.mlab3.lga01.measurement-lab.org", "warmup_bytes": "303104", "type": "JHTTPPOSTMT", "datetime": "Fri Jan 25 04:23:55 EST 2013", "bytes_sec": "151220", "success": "true", "transfer_time": "11118897", "transfer_bytes": "1681408", "target_ipaddress": "74.63.50.46", "warmup_time": "1351745" }, { "timestamp": "1359105890", "rtt_avg": "99221", "rtt_min": "56030", "rtt_max": "1754730", "target": "ispmon.samknows.mlab3.lga01.measurement-lab.org", "rtt_stddev": "221421", "lost_packets": "0", "type": "JUDPLATENCY", "datetime": "Fri Jan 25 04:24:50 EST 2013", "success": "true", "target_ipaddress": "74.63.50.46", "received_packets": "58" } ], "metrics": [ { "timestamp": 1359105723, "model": "HTC Vision", "datetime": "Fri Jan 25 04:22:03 EST 2013", "type": "phone_identity", "manufactor": "HTC", "os_version": "10", "os_type": "android" }, { "network_operator_name": "T-Mobile", "active_network_type": "mobile", "timestamp": "1359105723", "network_operator_code": "310260", "network_type": "HSDPA", "sim_operator_name": "", "phone_type": "GSM", "sim_operator_code": "310260", "connected": "true", "roaming": "false", "datetime": "Fri Jan 25 04:22:03 EST 2013", "type": "network_data" }, { "timestamp": "1359105723", "umts_psc": "136", "signal_strength": "7", "location_area_code": -1, "bit_error_rate": "-1", "datetime": "Fri Jan 25 04:22:03 EST 2013", "type": "gsm_cell_location", "cell_tower_id": "-1" }, { "timestamp": "1359085205", "longitude": "-77.19999999", "latitude": "38.79999999", "location_type": "network", "datetime": "Thu Jan 24 22:40:05 EST 2013", "type": "location", "accuracy": "867.0" } ], "submission_type": "scheduled_tests", "_sourceip": "208.54.90.144", "_received": 1359105891 }