-
Notifications
You must be signed in to change notification settings - Fork 41
Data Representation
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>
- Tests
<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="#cell_neighbour_tower_data">cell_neighbour_tower_data</a></li>
<li><a href="#last_known_location">last_known_location</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">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>
</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>, <a
href="#cell_neighbour_tower_data">cell_neighbour_tower_data</a>, <a
href="#last_known_location">last_known_location</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"></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>
<h3 id="phone_identity">phone_identity 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">phone_identity</td>
<td class="longer">The passive metric type 'phone_identity'
describes features of the handset and installed operating system.</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">manufacturer</td>
<td class="shorter">String</td>
<td class="shorter">api android.os.Build.MANUFACTURER</td>
<td class="longer">The field holds a string from the Android
method that identifies the handset manufacturer.</td>
</tr>
<tr>
<td class="code">model</td>
<td class="shorter">String</td>
<td class="shorter">api android.os.Build.MODEL</td>
<td class="longer">The field holds a string from the Android
method that identifies the handset model.</td>
</tr>
<tr>
<td class="code">os_type</td>
<td class="shorter">String</td>
<td class="shorter">android</td>
<td class="longer">The field holds a string for the Operating
System of the handset. This value is set by the application logic.</td>
</tr>
<tr>
<td class="code">os_version</td>
<td class="shorter">Integer</td>
<td class="shorter">api android.os.Build.VERSION.SDK_INT</td>
<td class="longer"></td>
</tr>
<tr>
<td class="code">timestamp</td>
<td class="shorter">Integer</td>
<td class="shorter">1359128107</td>
<td class="longer">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</td>
</tr>
</tbody>
</table>
<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"></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_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">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>
<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="last_known_location">last_known_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">last_known_location</td>
<td class="longer">The passive metric type
'last_known_location' describes the last location of the handset
determined by network provider technology or GPS. This value is
cached and displayed to the user but is not provided in the data
transferred from the handset to the network.</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">Integer</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="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": "1359085118", "longitude": "-77.1999999", "latitude": "38.7999999", "location_type": "network", "datetime": "Thu Jan 24 22:38:38 EST 2013", "type": "last_known_location", "accuracy": "867.0" }, { "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" }, { "timestamp": "1359085205", "longitude": "-77.19999999", "latitude": "38.79999999", "location_type": "network", "datetime": "Thu Jan 24 22:40:05 EST 2013", "type": "last_known_location", "accuracy": "867.0" } ], "submission_type": "scheduled_tests", "_sourceip": "208.54.90.144", "_received": 1359105891 }