├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── build.yml ├── docs └── html │ ├── _cellular_helper_8h_source.html │ ├── annotated.html │ ├── bc_s.png │ ├── bdwn.png │ ├── class_cellular_helper_c_r_e_g_response.html │ ├── class_cellular_helper_c_r_e_g_response.png │ ├── class_cellular_helper_class.html │ ├── class_cellular_helper_common_response.html │ ├── class_cellular_helper_common_response.png │ ├── class_cellular_helper_environment_cell_data.html │ ├── class_cellular_helper_environment_response.html │ ├── class_cellular_helper_environment_response.png │ ├── class_cellular_helper_environment_response_static.html │ ├── class_cellular_helper_environment_response_static.png │ ├── class_cellular_helper_extended_qual_response.html │ ├── class_cellular_helper_extended_qual_response.png │ ├── class_cellular_helper_location_response.html │ ├── class_cellular_helper_location_response.png │ ├── class_cellular_helper_plus_string_response.html │ ├── class_cellular_helper_plus_string_response.png │ ├── class_cellular_helper_r_s_s_i_qual_response.html │ ├── class_cellular_helper_r_s_s_i_qual_response.png │ ├── class_cellular_helper_string_response.html │ ├── class_cellular_helper_string_response.png │ ├── class_log_class.html │ ├── classes.html │ ├── closed.png │ ├── dir_68267d1309a1af8e8297ef4c3efbcdba.html │ ├── doc.png │ ├── doxygen.css │ ├── doxygen.png │ ├── dynsections.js │ ├── files.html │ ├── folderclosed.png │ ├── folderopen.png │ ├── functions.html │ ├── functions_func.html │ ├── functions_vars.html │ ├── hierarchy.html │ ├── index.html │ ├── jquery.js │ ├── menu.js │ ├── menudata.js │ ├── nav_f.png │ ├── nav_g.png │ ├── nav_h.png │ ├── open.png │ ├── search │ ├── all_0.html │ ├── all_0.js │ ├── all_1.html │ ├── all_1.js │ ├── all_10.html │ ├── all_10.js │ ├── all_11.html │ ├── all_11.js │ ├── all_2.html │ ├── all_2.js │ ├── all_3.html │ ├── all_3.js │ ├── all_4.html │ ├── all_4.js │ ├── all_5.html │ ├── all_5.js │ ├── all_6.html │ ├── all_6.js │ ├── all_7.html │ ├── all_7.js │ ├── all_8.html │ ├── all_8.js │ ├── all_9.html │ ├── all_9.js │ ├── all_a.html │ ├── all_a.js │ ├── all_b.html │ ├── all_b.js │ ├── all_c.html │ ├── all_c.js │ ├── all_d.html │ ├── all_d.js │ ├── all_e.html │ ├── all_e.js │ ├── all_f.html │ ├── all_f.js │ ├── classes_0.html │ ├── classes_0.js │ ├── classes_1.html │ ├── classes_1.js │ ├── close.png │ ├── functions_0.html │ ├── functions_0.js │ ├── functions_1.html │ ├── functions_1.js │ ├── functions_2.html │ ├── functions_2.js │ ├── functions_3.html │ ├── functions_3.js │ ├── functions_4.html │ ├── functions_4.js │ ├── functions_5.html │ ├── functions_5.js │ ├── functions_6.html │ ├── functions_6.js │ ├── functions_7.html │ ├── functions_7.js │ ├── functions_8.html │ ├── functions_8.js │ ├── mag_sel.png │ ├── nomatches.html │ ├── pages_0.html │ ├── pages_0.js │ ├── search.css │ ├── search.js │ ├── search_l.png │ ├── search_m.png │ ├── search_r.png │ ├── searchdata.js │ ├── variables_0.html │ ├── variables_0.js │ ├── variables_1.html │ ├── variables_1.js │ ├── variables_2.html │ ├── variables_2.js │ ├── variables_3.html │ ├── variables_3.js │ ├── variables_4.html │ ├── variables_4.js │ ├── variables_5.html │ ├── variables_5.js │ ├── variables_6.html │ ├── variables_6.js │ ├── variables_7.html │ ├── variables_7.js │ ├── variables_8.html │ ├── variables_8.js │ ├── variables_9.html │ ├── variables_9.js │ ├── variables_a.html │ ├── variables_a.js │ ├── variables_b.html │ ├── variables_b.js │ ├── variables_c.html │ ├── variables_c.js │ ├── variables_d.html │ ├── variables_d.js │ ├── variables_e.html │ └── variables_e.js │ ├── splitbar.png │ ├── sync_off.png │ ├── sync_on.png │ ├── tab_a.png │ ├── tab_b.png │ ├── tab_h.png │ ├── tab_s.png │ └── tabs.css ├── doxygen.config ├── examples ├── 1-simple │ └── 1-simple.cpp ├── 2-show-carriers │ └── 2-show-carriers.cpp ├── 3-select-carrier │ └── 3-select-carrier.cpp ├── 4-cell-locate │ └── 4-cell-locate.cpp ├── 5-cellular-global-identity │ └── 5-cellular-global-identity.cpp └── 6-no-cellular-test │ └── 6-no-cellular-test.cpp ├── library.properties ├── package.json ├── src ├── CellularHelper.cpp └── CellularHelper.h └── verification.txt /.gitignore: -------------------------------------------------------------------------------- 1 | firmware*.bin 2 | .vscode 3 | .DS_Store 4 | docs/latex 5 | docs/xml 6 | project.properties 7 | 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: lts/carbon 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 rickkas7 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Cellular Helper 2 | 3 | **A library to access useful things from the Electron, E Series, Boron, and B Series cellular modem** 4 | 5 | **Note: The official version of this library can now be found at: [https://github.com/particle-iot/CellularHelper](https://github.com/particle-iot/CellularHelper)** 6 | 7 | The code here will be archived. 8 | 9 | The full API documentation can be [found here](https://rickkas7.github.io/CellularHelper/). 10 | 11 | ## Simple functions 12 | 13 | The simple information calls query information from the modem and return a String. 14 | 15 | ``` 16 | Log.info("manufacturer=%s", CellularHelper.getManufacturer().c_str()); 17 | 18 | Log.info("model=%s", CellularHelper.getModel().c_str()); 19 | 20 | Log.info("firmware version=%s", CellularHelper.getFirmwareVersion().c_str()); 21 | 22 | Log.info("ordering code=%s", CellularHelper.getOrderingCode().c_str()); 23 | 24 | Log.info("IMEI=%s", CellularHelper.getIMEI().c_str()); 25 | 26 | Log.info("IMSI=%s", CellularHelper.getIMSI().c_str()); 27 | 28 | Log.info("ICCID=%s", CellularHelper.getICCID().c_str()); 29 | ``` 30 | 31 | These are all just various bits of data from the modem or the SIM card. 32 | 33 | ``` 34 | 0000008020 [app] INFO: manufacturer=u-blox 35 | 0000008040 [app] INFO: model=SARA-U260 36 | 0000008060 [app] INFO: firmware version=23.20 37 | 0000008090 [app] INFO: ordering code=SARA-U260-00S-00 38 | ``` 39 | 40 | You might find the ICCID (SIM Number) to be useful as well. 41 | 42 | `Cellular.on()` needs to have been called, which happens automatically in automatic mode (the default). 43 | 44 | Note that if you are using `SYSTEM_THREAD(ENABLED)` or `SYSTEM_MODE(SEMI_AUTOMATIC)` or `SYSTEM_MODE(MANUAL)` you must also wait after turning the modem on. 4 seconds should be sufficient, because `Cellular.on()` is asynchronous and there's no call to determine if has completed yet. Instead of a delay, you could also use `cellular_on(NULL)` which blocks until the modem is turned on. 45 | 46 | 47 | ## Cellular connection functions 48 | 49 | For full information about these commands, consult the API documentation which describes these functions in much more detail. 50 | 51 | These functions can only be used after connecting to the cellular network. 52 | 53 | ### getOperatorName (2G/3G only) 54 | 55 | Returns a string containing the operator name, for example AT&T or T-Mobile in the United States. 56 | 57 | ``` 58 | Log.info("operator name=%s", CellularHelper.getOperatorName().c_str()); 59 | ``` 60 | 61 | Example output: 62 | 63 | ``` 64 | 0000008574 [app] INFO: operator name=AT&T 65 | ``` 66 | 67 | The operator name is not available on LTE Cat M1 devices (SARA-R410M-02-B). 68 | 69 | ### getRSSIQual 70 | 71 | Returns the RSSI (signal strength) value and a quality value. 72 | 73 | ``` 74 | CellularHelperRSSIQualResponse rssiQual = CellularHelper.getRSSIQual(); 75 | int bars = CellularHelperClass::rssiToBars(rssiQual.rssi); 76 | 77 | Log.info("rssi=%d, qual=%d, bars=%d", rssiQual.rssi, rssiQual.qual, bars); 78 | ``` 79 | 80 | ``` 81 | 0000008595 [app] INFO: rssi=-75, qual=2, bars=3 82 | ``` 83 | 84 | The RSSI is in dBm, the standard measure of signal strength. It's a negative value, and values closer to 0 are higher signal strength. There is more information in the [API documentation](https://rickkas7.github.io/CellularHelper/class_cellular_helper_class.html#af9012f92f58f5151cc7006aceadd311b). 85 | 86 | The quality value is 0 (highest quality) to 7 (lowest quality) or 99 if the value unknown. It's typically 99 for 2G connections. The qual value is described in the u-blox documentation, and it's returned by the call, but you probably won't need to use it. 87 | 88 | The `rssiToBars()` method converts the RSSI to a 0 to 5 bars, where 5 is the strongest signal. 89 | 90 | The `CellularHelper.getExtendedQualResponse()` is available on LTE Cat M1 devices and returns LTE specific parameters like the RSRP. You can find more information [here](https://rickkas7.github.io/CellularHelper/class_cellular_helper_class.html#a2cf4ec66557254498d5d7600ea66bd74). 91 | 92 | ### getEnvironment (2G/3G only) 93 | 94 | The method getEnvironment returns cell tower information. The is the u-blox AT+CGED command. 95 | 96 | ``` 97 | CellularHelperEnvironmentResponseStatic<8> envResp; 98 | 99 | CellularHelper.getEnvironment(CellularHelper.ENVIRONMENT_SERVING_CELL_AND_NEIGHBORS, envResp); 100 | if (envResp.resp != RESP_OK) { 101 | // We couldn't get neighboring cells, so try just the receiving cell 102 | CellularHelper.getEnvironment(CellularHelper.ENVIRONMENT_SERVING_CELL, envResp); 103 | } 104 | envResp.logResponse(); 105 | 106 | ``` 107 | 108 | The first line declares a variable to hold up to 8 neighbor towers. 109 | 110 | The first getEnvironment call tries to get the serving cell (the one you're connected to) and the neighbor cells. This only works for me on the 2G (G350) Electron. 111 | 112 | If that fails, it will try again only using the serving cell information. 113 | 114 | This sample just prints the information to serial debug: 115 | 116 | ``` 117 | 0000008645 [app] INFO: service rat=UMTS mcc=310, mnc=410, lac=2cf7 ci=8a5a782 band=UMTS 850 rssi=0 dlf=4384 ulf=4159 118 | ``` 119 | 120 | Note that the rssi will always be 0 for 3G towers. This information is only returned by the AT+CGED command for 2G towers. You can use getRSSIQual() to get the RSSI for the connected tower; that works for 3G. 121 | 122 | ### getLocation (2G/3G only) 123 | 124 | This function returns the location of the Electron, using cell tower location. This call may take 10 seconds to complete! 125 | 126 | ``` 127 | CellularHelperLocationResponse locResp = CellularHelper.getLocation(); 128 | Log.info(locResp.toString()); 129 | ``` 130 | 131 | The locResp contains the member variables: 132 | 133 | - lat - The latitude (in degrees, -90 to +90) 134 | - lon - The longitude (in degrees, -180 to +180) 135 | - alt - The altitude (in meters) 136 | - uncertainty - The radius of the circle of uncertainty (in meters) 137 | 138 | This only works on 2G/3G devices, and a better alternative in most cases is to use the google-maps-device-locator to do the location query on the cloud-side instead of on-device. 139 | 140 | ## Examples 141 | 142 | ### 1-Simple Demo 143 | 144 | The simple demo tests all of the basic functions in the library, displaying the results to USB serial. 145 | 146 | The code examples in this document were taken from this example. 147 | 148 | 149 | ### 2-Show Carriers Demo 150 | 151 | This is a demo program that uses the cellular modem to scan for available operators, frequency band used, and signal strength. It prints a result like this to USB serial: 152 | 153 | ``` 154 | 3G AT&T UMTS 850 2 bars (310410) 155 | 2G T-Mobile DCS 1800 or 1900 2 bars (310260) 156 | ``` 157 | 158 | It should work even when you can't connect to a tower and also display carriers that are not supported by your SIM. (It only displays carriers compatible with the GSM modem, however, so it won't, for example, display Verizon in the United States since that requires a PCS modem.) 159 | 160 | This is a very time consuming operation (it can take 2 minutes or longer to run) and it's pretty rarely needed, so it builds on the CellularHelper library but the commands it uses (AT+COPS and AT+COPN) are not part of the library itself because they're so rarely needed. 161 | 162 | To build a binary for this, you can download the repository and use the Particle CLI compiler from the top level of it: 163 | 164 | ``` 165 | particle compile electron examples/2-show-carriers/ --saveTo firmware.bin 166 | ``` 167 | 168 | Then you can flash it to your Electron in DFU mode (blinking yellow): 169 | 170 | ``` 171 | particle flash --usb firmware.bin 172 | ``` 173 | 174 | ### 3-Select Carrier Demo 175 | 176 | The 3-select-carrier example shows how to prefer a certain carrier when multiple carriers are supported by the SIM card. 177 | 178 | - You should use SYSTEM_MODE(SEMI_AUTOMATIC) so you can set the carrier before trying to connect. 179 | - You need to turn the cellular modem on using `cellular_on(NULL)` or `Cellular.on()` (see comments in the code). 180 | - Call selectOperator() with the MCC/MNC. For example: 181 | 182 | ``` 183 | // Select the operator using the MCC/MNC string. For example: 184 | // "310410" = AT&T 185 | // "310260" = T-Mobile 186 | bool bResult = CellularHelper.selectOperator("310260"); 187 | ``` 188 | 189 | The 2-show-carriers example prints out the MCC/MNC for carriers at your location. 190 | 191 | - If the operator needs to be changed, it may take around 20 seconds to do so. If the operator is already selected, it returns more or less immediately. 192 | - The setting of the operator is stored in the modem, but is reset on power down, so you should always select the operator in setup(). 193 | 194 | On a cold boot, you might see something like this in the USB serial debug log: 195 | 196 | ``` 197 | 5.297 AT send 12 "AT+UDOPN=0\r\n" 198 | 5.307 AT read ERR 34 "\r\n+CME ERROR: no network service\r\n" 199 | 5.307 AT send 22 "AT+COPS=4,2,\"310260\"\r\n" 200 | 23.778 AT read OK 6 "\r\nOK\r\n" 201 | 0000023789 [app] INFO: selectOperator returned 1 202 | ``` 203 | 204 | Then, later: 205 | 206 | ``` 207 | 0000042189 [system] INFO: ARM_WLAN_WD 2 208 | 0000042189 [system] INFO: CLR_WLAN_WD 1, DHCP success 209 | 42.180 AT send 12 "AT+UDOPN=9\r\n" 210 | 42.220 AT read + 24 "\r\n+UDOPN: 2,\"T-Mobile\"\r\n" 211 | 42.230 AT read OK 6 "\r\nOK\r\n" 212 | 0000042241 [app] INFO: current operator=T-Mobile 213 | ``` 214 | 215 | If you do a warm boot after setting: 216 | 217 | ``` 218 | 2.507 AT send 12 "AT+UDOPN=0\r\n" 219 | 2.517 AT read + 22 "\r\n+UDOPN: 0,\"310260\"\r\n" 220 | 2.527 AT read OK 6 "\r\nOK\r\n" 221 | 0000002527 [app] INFO: operator already 310260 222 | 0000002527 [app] INFO: selectOperator returned 1 223 | ``` 224 | 225 | ### 4-cell-locate 226 | 227 | This demo uses the u-blox Cell Locate feature to find the latitude, longitude, and elevation of the device. 228 | 229 | This only works on 2G and 3G devices, not LTE Cat M1. Another alternative is to use google-maps-device-locator 230 | which works on all devices, and is also generally much faster. 231 | 232 | ### 5-cellular-global-identity 233 | 234 | Previously getting the cell tower information required a variety of techniques that depended on the cellular 235 | modem and generation of device. In Device OS 1.2.1 and later, it's now easy to query this information from 236 | Device OS. This example shows how. 237 | 238 | ## Version History 239 | 240 | #### 0.1.0 (2020-02-13) 241 | 242 | - Code cleanup 243 | - Minimum Device OS version is now 0.7.0 244 | - Removed non-working ping and DNS calls 245 | - Added lots of API documentation 246 | 247 | #### 0.0.7 (2018-11-27) 248 | 249 | - Added the getCREG call 250 | - Last versions that supports Device OS 0.6.x 251 | 252 | #### 0.0.6 253 | 254 | - Added selectOperator 255 | 256 | 257 | -------------------------------------------------------------------------------- /build.yml: -------------------------------------------------------------------------------- 1 | - build: examples/1-simple 2 | electron: [0.7.0, 1.0.0, 1.4.4, latest] 3 | boron: [latest] 4 | - build: examples/2-show-carriers 5 | electron: [latest] 6 | - build: examples/3-select-carrier 7 | electron: [latest] 8 | - build: examples/4-cell-locate 9 | electron: [latest] 10 | - build: examples/5-cellular-global-identity 11 | electron: [1.2.1, latest] 12 | - build: examples/6-no-cellular-test 13 | photon: [latest] 14 | -------------------------------------------------------------------------------- /docs/html/annotated.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CellularHelper: Data Structures 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
CellularHelper 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
Data Structures
66 |
67 |
68 |
Here are the data structures with brief descriptions:
69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 |
 CCellularHelperClassClass for calling the u-blox SARA modem directly
 CCellularHelperCommonResponseCommon base class for response objects
 CCellularHelperCREGResponseReponse class for the AT+CREG? command. This is deprecated and will be removed in the future
 CCellularHelperEnvironmentCellDataUsed to hold the results for one cell (service or neighbor) from the AT+CGED command
 CCellularHelperEnvironmentResponseUsed to hold the results from the AT+CGED command
 CCellularHelperEnvironmentResponseStaticResponse class for getting cell tower information with statically defined array of neighbor cells
 CCellularHelperExtendedQualResponseResponse class for the AT+CESQ command
 CCellularHelperLocationResponseReponse class for the AT+ULOC command
 CCellularHelperPlusStringResponseThings that return a + response and a string use this
 CCellularHelperRSSIQualResponseThis class is used to return the rssi and qual values (AT+CSQ)
 CCellularHelperStringResponseThings that return a simple string, like the manufacturer string, use this
82 |
83 |
84 | 85 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /docs/html/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/bc_s.png -------------------------------------------------------------------------------- /docs/html/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/bdwn.png -------------------------------------------------------------------------------- /docs/html/class_cellular_helper_c_r_e_g_response.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/class_cellular_helper_c_r_e_g_response.png -------------------------------------------------------------------------------- /docs/html/class_cellular_helper_common_response.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/class_cellular_helper_common_response.png -------------------------------------------------------------------------------- /docs/html/class_cellular_helper_environment_response.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/class_cellular_helper_environment_response.png -------------------------------------------------------------------------------- /docs/html/class_cellular_helper_environment_response_static.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/class_cellular_helper_environment_response_static.png -------------------------------------------------------------------------------- /docs/html/class_cellular_helper_extended_qual_response.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/class_cellular_helper_extended_qual_response.png -------------------------------------------------------------------------------- /docs/html/class_cellular_helper_location_response.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/class_cellular_helper_location_response.png -------------------------------------------------------------------------------- /docs/html/class_cellular_helper_plus_string_response.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/class_cellular_helper_plus_string_response.png -------------------------------------------------------------------------------- /docs/html/class_cellular_helper_r_s_s_i_qual_response.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/class_cellular_helper_r_s_s_i_qual_response.png -------------------------------------------------------------------------------- /docs/html/class_cellular_helper_string_response.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/class_cellular_helper_string_response.png -------------------------------------------------------------------------------- /docs/html/class_log_class.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CellularHelper: LogClass Class Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
CellularHelper 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 | 49 |
53 |
54 | 55 | 56 |
57 | 60 |
61 | 62 |
63 |
64 |
65 | Public Member Functions
66 |
67 |
LogClass Class Reference
68 |
69 |
70 | 71 | 73 | 75 | 76 |

72 | Public Member Functions

74 | void info (const char *fmt,...)
 
77 |
The documentation for this class was generated from the following file: 80 |
81 | 82 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /docs/html/classes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CellularHelper: Data Structure Index 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
CellularHelper 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
Data Structure Index
66 |
67 |
68 |
c
69 | 70 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 |
  c  
71 |
CellularHelperCommonResponse   CellularHelperEnvironmentResponse   CellularHelperLocationResponse   CellularHelperStringResponse   
CellularHelperCREGResponse   CellularHelperEnvironmentResponseStatic   CellularHelperPlusStringResponse   
CellularHelperClass   CellularHelperEnvironmentCellData   CellularHelperExtendedQualResponse   CellularHelperRSSIQualResponse   
88 |
c
89 |
90 | 91 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /docs/html/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/closed.png -------------------------------------------------------------------------------- /docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CellularHelper: src Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
CellularHelper 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 | 49 |
53 |
54 | 55 | 56 |
57 | 60 |
61 | 62 | 66 |
67 |
68 |
69 |
src Directory Reference
70 |
71 |
72 |
73 | 74 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /docs/html/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/doc.png -------------------------------------------------------------------------------- /docs/html/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/doxygen.png -------------------------------------------------------------------------------- /docs/html/dynsections.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the 3 | JavaScript code in this file. 4 | 5 | Copyright (C) 1997-2017 by Dimitri van Heesch 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program; if not, write to the Free Software Foundation, Inc., 19 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 | 21 | @licend The above is the entire license notice 22 | for the JavaScript code in this file 23 | */ 24 | function toggleVisibility(linkObj) 25 | { 26 | var base = $(linkObj).attr('id'); 27 | var summary = $('#'+base+'-summary'); 28 | var content = $('#'+base+'-content'); 29 | var trigger = $('#'+base+'-trigger'); 30 | var src=$(trigger).attr('src'); 31 | if (content.is(':visible')===true) { 32 | content.hide(); 33 | summary.show(); 34 | $(linkObj).addClass('closed').removeClass('opened'); 35 | $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); 36 | } else { 37 | content.show(); 38 | summary.hide(); 39 | $(linkObj).removeClass('closed').addClass('opened'); 40 | $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); 41 | } 42 | return false; 43 | } 44 | 45 | function updateStripes() 46 | { 47 | $('table.directory tr'). 48 | removeClass('even').filter(':visible:even').addClass('even'); 49 | } 50 | 51 | function toggleLevel(level) 52 | { 53 | $('table.directory tr').each(function() { 54 | var l = this.id.split('_').length-1; 55 | var i = $('#img'+this.id.substring(3)); 56 | var a = $('#arr'+this.id.substring(3)); 57 | if (l 2 | 3 | 4 | 5 | 6 | 7 | 8 | CellularHelper: File List 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
CellularHelper 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
File List
66 |
67 |
68 |
Here is a list of all documented files with brief descriptions:
69 |
[detail level 12]
70 | 71 | 72 |
  src
 CellularHelper.h
73 |
74 |
75 | 76 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /docs/html/folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/folderclosed.png -------------------------------------------------------------------------------- /docs/html/folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/folderopen.png -------------------------------------------------------------------------------- /docs/html/functions_func.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CellularHelper: Data Fields - Functions 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
CellularHelper 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |   65 | 66 |

- a -

74 | 75 | 76 |

- c -

84 | 85 | 86 |

- g -

145 | 146 | 147 |

- i -

160 | 161 | 162 |

- l -

170 | 171 | 172 |

- p -

187 | 188 | 189 |

- r -

197 | 198 | 199 |

- s -

204 | 205 | 206 |

- t -

215 |
216 | 217 | 222 | 223 | 224 | -------------------------------------------------------------------------------- /docs/html/hierarchy.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CellularHelper: Class Hierarchy 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
CellularHelper 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
Class Hierarchy
66 |
67 |
68 |
This inheritance list is sorted roughly, but not completely, alphabetically:
69 |
[detail level 1234]
70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 |
 CCellularHelperClassClass for calling the u-blox SARA modem directly
 CCellularHelperCommonResponseCommon base class for response objects
 CCellularHelperPlusStringResponseThings that return a + response and a string use this
 CCellularHelperCREGResponseReponse class for the AT+CREG? command. This is deprecated and will be removed in the future
 CCellularHelperEnvironmentResponseUsed to hold the results from the AT+CGED command
 CCellularHelperEnvironmentResponseStatic< MAX_NEIGHBOR_CELLS >Response class for getting cell tower information with statically defined array of neighbor cells
 CCellularHelperExtendedQualResponseResponse class for the AT+CESQ command
 CCellularHelperLocationResponseReponse class for the AT+ULOC command
 CCellularHelperRSSIQualResponseThis class is used to return the rssi and qual values (AT+CSQ)
 CCellularHelperStringResponseThings that return a simple string, like the manufacturer string, use this
 CCellularHelperEnvironmentCellDataUsed to hold the results for one cell (service or neighbor) from the AT+CGED command
82 |
83 |
84 | 85 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /docs/html/menu.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the 3 | JavaScript code in this file. 4 | 5 | Copyright (C) 1997-2017 by Dimitri van Heesch 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program; if not, write to the Free Software Foundation, Inc., 19 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 | 21 | @licend The above is the entire license notice 22 | for the JavaScript code in this file 23 | */ 24 | function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { 25 | function makeTree(data,relPath) { 26 | var result=''; 27 | if ('children' in data) { 28 | result+=''; 35 | } 36 | return result; 37 | } 38 | 39 | $('#main-nav').append(makeTree(menudata,relPath)); 40 | $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); 41 | if (searchEnabled) { 42 | if (serverSide) { 43 | $('#main-menu').append('
  • '); 44 | } else { 45 | $('#main-menu').append('
  • '); 46 | } 47 | } 48 | $('#main-menu').smartmenus(); 49 | } 50 | /* @license-end */ 51 | -------------------------------------------------------------------------------- /docs/html/menudata.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the 3 | JavaScript code in this file. 4 | 5 | Copyright (C) 1997-2019 by Dimitri van Heesch 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of version 2 of the GNU General Public License as published by 9 | the Free Software Foundation 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | 20 | @licend The above is the entire license notice 21 | for the JavaScript code in this file 22 | */ 23 | var menudata={children:[ 24 | {text:"Main Page",url:"index.html"}, 25 | {text:"Data Structures",url:"annotated.html",children:[ 26 | {text:"Data Structures",url:"annotated.html"}, 27 | {text:"Data Structure Index",url:"classes.html"}, 28 | {text:"Class Hierarchy",url:"hierarchy.html"}, 29 | {text:"Data Fields",url:"functions.html",children:[ 30 | {text:"All",url:"functions.html",children:[ 31 | {text:"a",url:"functions.html#index_a"}, 32 | {text:"b",url:"functions.html#index_b"}, 33 | {text:"c",url:"functions.html#index_c"}, 34 | {text:"d",url:"functions.html#index_d"}, 35 | {text:"e",url:"functions.html#index_e"}, 36 | {text:"g",url:"functions.html#index_g"}, 37 | {text:"i",url:"functions.html#index_i"}, 38 | {text:"l",url:"functions.html#index_l"}, 39 | {text:"m",url:"functions.html#index_m"}, 40 | {text:"n",url:"functions.html#index_n"}, 41 | {text:"o",url:"functions.html#index_o"}, 42 | {text:"p",url:"functions.html#index_p"}, 43 | {text:"q",url:"functions.html#index_q"}, 44 | {text:"r",url:"functions.html#index_r"}, 45 | {text:"s",url:"functions.html#index_s"}, 46 | {text:"t",url:"functions.html#index_t"}, 47 | {text:"u",url:"functions.html#index_u"}, 48 | {text:"v",url:"functions.html#index_v"}]}, 49 | {text:"Functions",url:"functions_func.html",children:[ 50 | {text:"a",url:"functions_func.html#index_a"}, 51 | {text:"c",url:"functions_func.html#index_c"}, 52 | {text:"g",url:"functions_func.html#index_g"}, 53 | {text:"i",url:"functions_func.html#index_i"}, 54 | {text:"l",url:"functions_func.html#index_l"}, 55 | {text:"p",url:"functions_func.html#index_p"}, 56 | {text:"r",url:"functions_func.html#index_r"}, 57 | {text:"s",url:"functions_func.html#index_s"}, 58 | {text:"t",url:"functions_func.html#index_t"}]}, 59 | {text:"Variables",url:"functions_vars.html",children:[ 60 | {text:"a",url:"functions_vars.html#index_a"}, 61 | {text:"b",url:"functions_vars.html#index_b"}, 62 | {text:"c",url:"functions_vars.html#index_c"}, 63 | {text:"d",url:"functions_vars.html#index_d"}, 64 | {text:"e",url:"functions_vars.html#index_e"}, 65 | {text:"i",url:"functions_vars.html#index_i"}, 66 | {text:"l",url:"functions_vars.html#index_l"}, 67 | {text:"m",url:"functions_vars.html#index_m"}, 68 | {text:"n",url:"functions_vars.html#index_n"}, 69 | {text:"o",url:"functions_vars.html#index_o"}, 70 | {text:"q",url:"functions_vars.html#index_q"}, 71 | {text:"r",url:"functions_vars.html#index_r"}, 72 | {text:"s",url:"functions_vars.html#index_s"}, 73 | {text:"u",url:"functions_vars.html#index_u"}, 74 | {text:"v",url:"functions_vars.html#index_v"}]}]}]}, 75 | {text:"Files",url:"files.html",children:[ 76 | {text:"File List",url:"files.html"}]}]} 77 | -------------------------------------------------------------------------------- /docs/html/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/nav_f.png -------------------------------------------------------------------------------- /docs/html/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/nav_g.png -------------------------------------------------------------------------------- /docs/html/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/nav_h.png -------------------------------------------------------------------------------- /docs/html/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/open.png -------------------------------------------------------------------------------- /docs/html/search/all_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['addkeyvalue_0',['addKeyValue',['../class_cellular_helper_environment_cell_data.html#aba6c3669482f0292d584e295b3dde7c5',1,'CellularHelperEnvironmentCellData']]], 4 | ['alt_1',['alt',['../class_cellular_helper_location_response.html#acb24fe19094623cffbcd3099c0a6b0c4',1,'CellularHelperLocationResponse']]], 5 | ['appendbuffertostring_2',['appendBufferToString',['../class_cellular_helper_class.html#a1420ad8cb8d8f5ce85f217d92c5ad9a3',1,'CellularHelperClass']]], 6 | ['arfcn_3',['arfcn',['../class_cellular_helper_environment_cell_data.html#a7be6c2fe58c2b24e6098c9e9733ec6b2',1,'CellularHelperEnvironmentCellData']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/html/search/all_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ber_4',['ber',['../class_cellular_helper_extended_qual_response.html#a0f2b33eaeb9e0bc48c5831804c935bd7',1,'CellularHelperExtendedQualResponse']]], 4 | ['bsic_5',['bsic',['../class_cellular_helper_environment_cell_data.html#a07ddcc0ead32fd5ce32301677c2721f6',1,'CellularHelperEnvironmentCellData']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/all_10.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_10.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ulf_91',['ulf',['../class_cellular_helper_environment_cell_data.html#abccb0068906260bfa86b063049b11a9e',1,'CellularHelperEnvironmentCellData']]], 4 | ['uncertainty_92',['uncertainty',['../class_cellular_helper_location_response.html#ac0ec86e87aa7014fb7d6628c883361ed',1,'CellularHelperLocationResponse']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/all_11.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_11.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['valid_93',['valid',['../class_cellular_helper_location_response.html#a27e7b0f1178c71cf261dc78bc2ed4633',1,'CellularHelperLocationResponse::valid()'],['../class_cellular_helper_c_r_e_g_response.html#ad4af5de2bc689ebcd409d172c7c3573f',1,'CellularHelperCREGResponse::valid()']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/all_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['cellularhelperclass_6',['CellularHelperClass',['../class_cellular_helper_class.html',1,'']]], 4 | ['cellularhelpercommonresponse_7',['CellularHelperCommonResponse',['../class_cellular_helper_common_response.html',1,'']]], 5 | ['cellularhelpercregresponse_8',['CellularHelperCREGResponse',['../class_cellular_helper_c_r_e_g_response.html',1,'']]], 6 | ['cellularhelperenvironmentcelldata_9',['CellularHelperEnvironmentCellData',['../class_cellular_helper_environment_cell_data.html',1,'']]], 7 | ['cellularhelperenvironmentresponse_10',['CellularHelperEnvironmentResponse',['../class_cellular_helper_environment_response.html',1,'CellularHelperEnvironmentResponse'],['../class_cellular_helper_environment_response.html#a30c6319b574e99199b6531c5ba8bbff2',1,'CellularHelperEnvironmentResponse::CellularHelperEnvironmentResponse()'],['../class_cellular_helper_environment_response.html#aaf3cb62d30d5c7ecf8da216604d89015',1,'CellularHelperEnvironmentResponse::CellularHelperEnvironmentResponse(CellularHelperEnvironmentCellData *neighbors, size_t numNeighbors)']]], 8 | ['cellularhelperenvironmentresponsestatic_11',['CellularHelperEnvironmentResponseStatic',['../class_cellular_helper_environment_response_static.html',1,'']]], 9 | ['cellularhelperextendedqualresponse_12',['CellularHelperExtendedQualResponse',['../class_cellular_helper_extended_qual_response.html',1,'']]], 10 | ['cellularhelperlocationresponse_13',['CellularHelperLocationResponse',['../class_cellular_helper_location_response.html',1,'']]], 11 | ['cellularhelperplusstringresponse_14',['CellularHelperPlusStringResponse',['../class_cellular_helper_plus_string_response.html',1,'']]], 12 | ['cellularhelperrssiqualresponse_15',['CellularHelperRSSIQualResponse',['../class_cellular_helper_r_s_s_i_qual_response.html',1,'']]], 13 | ['cellularhelperstringresponse_16',['CellularHelperStringResponse',['../class_cellular_helper_string_response.html',1,'']]], 14 | ['ci_17',['ci',['../class_cellular_helper_environment_cell_data.html#a37684813302019c96e2ff7f504375187',1,'CellularHelperEnvironmentCellData::ci()'],['../class_cellular_helper_c_r_e_g_response.html#a75a560ecd4358aae316c7f4e63073af8',1,'CellularHelperCREGResponse::ci()']]], 15 | ['clear_18',['clear',['../class_cellular_helper_environment_response.html#afb544e829eedfbaf4d4b657b9619db0f',1,'CellularHelperEnvironmentResponse']]], 16 | ['command_19',['command',['../class_cellular_helper_plus_string_response.html#aab2c1442c95e90948f2a9a1a01bf9424',1,'CellularHelperPlusStringResponse']]], 17 | ['curdataindex_20',['curDataIndex',['../class_cellular_helper_environment_response.html#ab68b3f954c6c0430b00857781cb8c215',1,'CellularHelperEnvironmentResponse']]], 18 | ['cellular_20helper_21',['Cellular Helper',['../index.html',1,'']]] 19 | ]; 20 | -------------------------------------------------------------------------------- /docs/html/search/all_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['default_5ftimeout_22',['DEFAULT_TIMEOUT',['../class_cellular_helper_class.html#ae86c06d88fb15d0c86ff324bd3d8cf87',1,'CellularHelperClass']]], 4 | ['dlf_23',['dlf',['../class_cellular_helper_environment_cell_data.html#a955358e1e725c6fc0c1a6abc69ae4cdc',1,'CellularHelperEnvironmentCellData']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/all_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ecn0_24',['ecn0',['../class_cellular_helper_extended_qual_response.html#a9eab9a07dfbf15bd3bba499cb580de85',1,'CellularHelperExtendedQualResponse']]], 4 | ['enabledebug_25',['enableDebug',['../class_cellular_helper_common_response.html#addab157ed764a36df8c935f50eb787e6',1,'CellularHelperCommonResponse']]], 5 | ['environment_5fserving_5fcell_26',['ENVIRONMENT_SERVING_CELL',['../class_cellular_helper_class.html#abd463f53d7b73e3cd0a2491b8b3c1350',1,'CellularHelperClass']]], 6 | ['environment_5fserving_5fcell_5fand_5fneighbors_27',['ENVIRONMENT_SERVING_CELL_AND_NEIGHBORS',['../class_cellular_helper_class.html#a2945810d6200a68532bbd7b1c83651dc',1,'CellularHelperClass']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/html/search/all_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['getband_28',['getBand',['../class_cellular_helper_environment_cell_data.html#aff6f21bb47b7e5808230690e6df41dfe',1,'CellularHelperEnvironmentCellData']]], 4 | ['getbandstring_29',['getBandString',['../class_cellular_helper_environment_cell_data.html#af0e0c3ddf6e8461ba67207070c54a986',1,'CellularHelperEnvironmentCellData']]], 5 | ['getbars_30',['getBars',['../class_cellular_helper_environment_cell_data.html#aa92eca8cda0f87b9bd8be4135f80bc6c',1,'CellularHelperEnvironmentCellData']]], 6 | ['getcreg_31',['getCREG',['../class_cellular_helper_class.html#a3cbd953dc606ded587c389d041c02b60',1,'CellularHelperClass']]], 7 | ['getdoublequotedpart_32',['getDoubleQuotedPart',['../class_cellular_helper_plus_string_response.html#a9df55cfbb661b756e262b04ad2395770',1,'CellularHelperPlusStringResponse']]], 8 | ['getenvironment_33',['getEnvironment',['../class_cellular_helper_class.html#a8649727a474895761a5e76f3bf194be0',1,'CellularHelperClass']]], 9 | ['getextendedqual_34',['getExtendedQual',['../class_cellular_helper_class.html#a2cf4ec66557254498d5d7600ea66bd74',1,'CellularHelperClass']]], 10 | ['getfirmwareversion_35',['getFirmwareVersion',['../class_cellular_helper_class.html#a628bf30b49d5ce508b0824400d4e5fa2',1,'CellularHelperClass']]], 11 | ['geticcid_36',['getICCID',['../class_cellular_helper_class.html#a9011c3c5c75a8082635662e6d46674fd',1,'CellularHelperClass']]], 12 | ['getimei_37',['getIMEI',['../class_cellular_helper_class.html#a6d9497a2a4ea89386686b64552536ff6',1,'CellularHelperClass']]], 13 | ['getimsi_38',['getIMSI',['../class_cellular_helper_class.html#ab3fc38c242e5ca9da7b7c9650a81060d',1,'CellularHelperClass']]], 14 | ['getlocation_39',['getLocation',['../class_cellular_helper_class.html#a4b7c0ca270ee2f6c603c6cc41545faf0',1,'CellularHelperClass']]], 15 | ['getmanufacturer_40',['getManufacturer',['../class_cellular_helper_class.html#a16c1da329a92608c8842a3446383c06b',1,'CellularHelperClass']]], 16 | ['getmodel_41',['getModel',['../class_cellular_helper_class.html#a6253d0ec0ccd1324a60880ad86dd7ec6',1,'CellularHelperClass']]], 17 | ['getnumneighbors_42',['getNumNeighbors',['../class_cellular_helper_environment_response.html#a684343a340f494e05ef4061043eed3ea',1,'CellularHelperEnvironmentResponse']]], 18 | ['getoperatorname_43',['getOperatorName',['../class_cellular_helper_class.html#ab94954513ac81bc2534c1e0679c51c20',1,'CellularHelperClass']]], 19 | ['getorderingcode_44',['getOrderingCode',['../class_cellular_helper_class.html#a3912f906870f0554ef5cbabd7d48cf8d',1,'CellularHelperClass']]], 20 | ['getrssi_45',['getRSSI',['../class_cellular_helper_environment_cell_data.html#aa5038a00447e50ae679b5aabbf7fa056',1,'CellularHelperEnvironmentCellData']]], 21 | ['getrssiqual_46',['getRSSIQual',['../class_cellular_helper_class.html#af9012f92f58f5151cc7006aceadd311b',1,'CellularHelperClass']]] 22 | ]; 23 | -------------------------------------------------------------------------------- /docs/html/search/all_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['islte_47',['isLTE',['../class_cellular_helper_class.html#ad92a98cd69ce11fbd7801109fd276223',1,'CellularHelperClass']]], 4 | ['issara_5fr4_48',['isSARA_R4',['../class_cellular_helper_class.html#ad6f2d995ca3686fd5d5d820bb6548848',1,'CellularHelperClass']]], 5 | ['isumts_49',['isUMTS',['../class_cellular_helper_environment_cell_data.html#a0978883a5232976b6356b11531176ff8',1,'CellularHelperEnvironmentCellData']]], 6 | ['isvalid_50',['isValid',['../class_cellular_helper_environment_cell_data.html#af8a7a2c360f574d663efcf3367a14d3f',1,'CellularHelperEnvironmentCellData::isValid()'],['../class_cellular_helper_location_response.html#a32fc01d4e3128419e66457ee683caac8',1,'CellularHelperLocationResponse::isValid()'],['../class_cellular_helper_c_r_e_g_response.html#a41707f3cf7b9eb78e7997d988f7d8f41',1,'CellularHelperCREGResponse::isValid()']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/html/search/all_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['lac_51',['lac',['../class_cellular_helper_environment_cell_data.html#ad2d698a1dc0dd27e16846ca8b3289083',1,'CellularHelperEnvironmentCellData::lac()'],['../class_cellular_helper_c_r_e_g_response.html#a1c210b8d102814b147fc017d590cb652',1,'CellularHelperCREGResponse::lac()']]], 4 | ['lat_52',['lat',['../class_cellular_helper_location_response.html#a7983c95974e29a24577cd1b9cae34597',1,'CellularHelperLocationResponse']]], 5 | ['logcellulardebug_53',['logCellularDebug',['../class_cellular_helper_common_response.html#aca5a4a6a48c7df37fd4e2c0c217736f3',1,'CellularHelperCommonResponse']]], 6 | ['logresponse_54',['logResponse',['../class_cellular_helper_environment_response.html#acd01b68d7cd0b82efb38a60aa78ae684',1,'CellularHelperEnvironmentResponse']]], 7 | ['lon_55',['lon',['../class_cellular_helper_location_response.html#a02d6f66f386a7beddd0c159dc24aeee5',1,'CellularHelperLocationResponse']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /docs/html/search/all_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mcc_56',['mcc',['../class_cellular_helper_environment_cell_data.html#a05d3778b673ed91386d6bfa92cd74ad3',1,'CellularHelperEnvironmentCellData']]], 4 | ['mnc_57',['mnc',['../class_cellular_helper_environment_cell_data.html#a0c84cc35edca9790011ff8f009d00828',1,'CellularHelperEnvironmentCellData']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/all_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['neighbors_58',['neighbors',['../class_cellular_helper_environment_response.html#ab27bc8f1644c1f61f121ee494748ddd7',1,'CellularHelperEnvironmentResponse']]], 4 | ['numneighbors_59',['numNeighbors',['../class_cellular_helper_environment_response.html#ae2dab2b3021386a1ae3a3de0eafd57d0',1,'CellularHelperEnvironmentResponse']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/all_a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['operator_5fname_5flong_5fcphs_60',['OPERATOR_NAME_LONG_CPHS',['../class_cellular_helper_class.html#acb2b31c1ef6269085302a7d25bff8a57',1,'CellularHelperClass']]], 4 | ['operator_5fname_5flong_5feons_61',['OPERATOR_NAME_LONG_EONS',['../class_cellular_helper_class.html#a757d5bcfbdbfb4c8d44bb7a40e5c189e',1,'CellularHelperClass']]], 5 | ['operator_5fname_5flong_5fnetwork_5foperator_62',['OPERATOR_NAME_LONG_NETWORK_OPERATOR',['../class_cellular_helper_class.html#a52ee866204b3914e8df302de56f46eae',1,'CellularHelperClass']]], 6 | ['operator_5fname_5flong_5fnitz_63',['OPERATOR_NAME_LONG_NITZ',['../class_cellular_helper_class.html#adfca63770923dc60ca1e615c7af90bba',1,'CellularHelperClass']]], 7 | ['operator_5fname_5flong_5from_64',['OPERATOR_NAME_LONG_ROM',['../class_cellular_helper_class.html#a7bea96108f54089ed072012a1e131f33',1,'CellularHelperClass']]], 8 | ['operator_5fname_5fnumeric_65',['OPERATOR_NAME_NUMERIC',['../class_cellular_helper_class.html#aebd6b29f234b579a04d6dcd63664207f',1,'CellularHelperClass']]], 9 | ['operator_5fname_5fservice_5fprovider_66',['OPERATOR_NAME_SERVICE_PROVIDER',['../class_cellular_helper_class.html#ab46b11df1fa964d883a92fabd84f6dc0',1,'CellularHelperClass']]], 10 | ['operator_5fname_5fshort_5fcphs_67',['OPERATOR_NAME_SHORT_CPHS',['../class_cellular_helper_class.html#af43eb53fbe93ff783e6aab158235e875',1,'CellularHelperClass']]], 11 | ['operator_5fname_5fshort_5feons_68',['OPERATOR_NAME_SHORT_EONS',['../class_cellular_helper_class.html#a6b0b9acd3abf1a6c20d5ca1612b25680',1,'CellularHelperClass']]], 12 | ['operator_5fname_5fshort_5fnetwork_5foperator_69',['OPERATOR_NAME_SHORT_NETWORK_OPERATOR',['../class_cellular_helper_class.html#a9ee7070ab688dfe84f800c4d943d21fe',1,'CellularHelperClass']]], 13 | ['operator_5fname_5fshort_5fnitz_70',['OPERATOR_NAME_SHORT_NITZ',['../class_cellular_helper_class.html#a7022e0dff705864f872a4ada1140d3a6',1,'CellularHelperClass']]], 14 | ['operator_5fname_5fshort_5from_71',['OPERATOR_NAME_SHORT_ROM',['../class_cellular_helper_class.html#a92bc1427f0cc1e3e55c0fbee0ce98cf2',1,'CellularHelperClass']]] 15 | ]; 16 | -------------------------------------------------------------------------------- /docs/html/search/all_b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['parse_72',['parse',['../class_cellular_helper_common_response.html#a38665d49da89d413c521f0220eb68531',1,'CellularHelperCommonResponse::parse()'],['../class_cellular_helper_string_response.html#add8574837d7cb82cdd4b8a077c1c9dac',1,'CellularHelperStringResponse::parse()'],['../class_cellular_helper_plus_string_response.html#a54d24348b25b3720efb46be8858b7dbc',1,'CellularHelperPlusStringResponse::parse()'],['../class_cellular_helper_environment_cell_data.html#aba8e5ec7d00aeec2083dca3dc48e1c90',1,'CellularHelperEnvironmentCellData::parse()'],['../class_cellular_helper_environment_response.html#a43684dcdf4534e86005b27edfd9ebf4f',1,'CellularHelperEnvironmentResponse::parse()']]], 4 | ['postprocess_73',['postProcess',['../class_cellular_helper_r_s_s_i_qual_response.html#a99c042f1dfe517ad61c792cd8be83a01',1,'CellularHelperRSSIQualResponse::postProcess()'],['../class_cellular_helper_extended_qual_response.html#af4919331917b0a3b7abc18367245339b',1,'CellularHelperExtendedQualResponse::postProcess()'],['../class_cellular_helper_location_response.html#a166c45c752ebec4ad96fb4626e7d39a3',1,'CellularHelperLocationResponse::postProcess()'],['../class_cellular_helper_c_r_e_g_response.html#ad8c9d7055161b482802c46fe6ece1fa3',1,'CellularHelperCREGResponse::postProcess()']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/all_c.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['qual_74',['qual',['../class_cellular_helper_r_s_s_i_qual_response.html#a7a09fd52dea5d5c262e603f06b40a2ac',1,'CellularHelperRSSIQualResponse']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/all_d.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['rat_75',['rat',['../class_cellular_helper_c_r_e_g_response.html#a8aaab9f59a0bc6b1b701f0048d8c4fa5',1,'CellularHelperCREGResponse']]], 4 | ['resp_76',['resp',['../class_cellular_helper_common_response.html#ae4e7bcdbd486d4b3dd8a08d9d5a5fdae',1,'CellularHelperCommonResponse']]], 5 | ['responsecallback_77',['responseCallback',['../class_cellular_helper_class.html#a827e147bc93efd47114d56a9bd01439c',1,'CellularHelperClass']]], 6 | ['rscp_78',['rscp',['../class_cellular_helper_extended_qual_response.html#acc90ff433a0148cbf45b246d2ebde5f6',1,'CellularHelperExtendedQualResponse']]], 7 | ['rscplev_79',['rscpLev',['../class_cellular_helper_environment_cell_data.html#a0c5909a99db9c352e37b62f655544c28',1,'CellularHelperEnvironmentCellData']]], 8 | ['rsrp_80',['rsrp',['../class_cellular_helper_extended_qual_response.html#a1ce04bc5630f64d1954653d0ee94d22e',1,'CellularHelperExtendedQualResponse']]], 9 | ['rsrq_81',['rsrq',['../class_cellular_helper_extended_qual_response.html#a63e5f5c464cff37f5c5c7738cde811b5',1,'CellularHelperExtendedQualResponse']]], 10 | ['rssi_82',['rssi',['../class_cellular_helper_r_s_s_i_qual_response.html#a79e1a4de64d03ff352645eb38f9fca21',1,'CellularHelperRSSIQualResponse']]], 11 | ['rssitobars_83',['rssiToBars',['../class_cellular_helper_class.html#a85e5aafab6df5bca137368586e6fdf8c',1,'CellularHelperClass']]], 12 | ['rxlev_84',['rxlev',['../class_cellular_helper_extended_qual_response.html#a5b932edd480c1d4d472da69fdb08bbd0',1,'CellularHelperExtendedQualResponse::rxlev()'],['../class_cellular_helper_environment_cell_data.html#a2db41cdc01ddf9be67ea5e615070e039',1,'CellularHelperEnvironmentCellData::rxlev()']]] 13 | ]; 14 | -------------------------------------------------------------------------------- /docs/html/search/all_e.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_e.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['selectoperator_85',['selectOperator',['../class_cellular_helper_class.html#a784f5bfa43caacc2fe1f9e98e66142dc',1,'CellularHelperClass']]], 4 | ['service_86',['service',['../class_cellular_helper_environment_response.html#a15d7a7576ef6fbec750afc5d00a52cdf',1,'CellularHelperEnvironmentResponse']]], 5 | ['stat_87',['stat',['../class_cellular_helper_c_r_e_g_response.html#ac1ec28dc7185aa917dc546996e487851',1,'CellularHelperCREGResponse']]], 6 | ['staticneighbors_88',['staticNeighbors',['../class_cellular_helper_environment_response_static.html#ad51eb94bee7651ccf7a6296d7081d1a3',1,'CellularHelperEnvironmentResponseStatic']]], 7 | ['string_89',['string',['../class_cellular_helper_string_response.html#ac4075df768ca9c6c01c3b5070296ef7b',1,'CellularHelperStringResponse::string()'],['../class_cellular_helper_plus_string_response.html#a24f361a57f89ddc2c3200dbb0ca86af4',1,'CellularHelperPlusStringResponse::string()']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /docs/html/search/all_f.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_f.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['tostring_90',['toString',['../class_cellular_helper_r_s_s_i_qual_response.html#a1481ecd783b1f0832bb96ae712f8ae99',1,'CellularHelperRSSIQualResponse::toString()'],['../class_cellular_helper_extended_qual_response.html#a669a73cc39b3c58aee88820f7449154c',1,'CellularHelperExtendedQualResponse::toString()'],['../class_cellular_helper_environment_cell_data.html#a84420fa7eac89beea98bc021524ca7fa',1,'CellularHelperEnvironmentCellData::toString()'],['../class_cellular_helper_location_response.html#a4fb04ef76fb545b7f7572fbbfc023b22',1,'CellularHelperLocationResponse::toString()'],['../class_cellular_helper_c_r_e_g_response.html#ab81e2b3400612e6b4f7cc2232e323df9',1,'CellularHelperCREGResponse::toString()']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/classes_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/classes_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['cellularhelperclass_94',['CellularHelperClass',['../class_cellular_helper_class.html',1,'']]], 4 | ['cellularhelpercommonresponse_95',['CellularHelperCommonResponse',['../class_cellular_helper_common_response.html',1,'']]], 5 | ['cellularhelpercregresponse_96',['CellularHelperCREGResponse',['../class_cellular_helper_c_r_e_g_response.html',1,'']]], 6 | ['cellularhelperenvironmentcelldata_97',['CellularHelperEnvironmentCellData',['../class_cellular_helper_environment_cell_data.html',1,'']]], 7 | ['cellularhelperenvironmentresponse_98',['CellularHelperEnvironmentResponse',['../class_cellular_helper_environment_response.html',1,'']]], 8 | ['cellularhelperenvironmentresponsestatic_99',['CellularHelperEnvironmentResponseStatic',['../class_cellular_helper_environment_response_static.html',1,'']]], 9 | ['cellularhelperextendedqualresponse_100',['CellularHelperExtendedQualResponse',['../class_cellular_helper_extended_qual_response.html',1,'']]], 10 | ['cellularhelperlocationresponse_101',['CellularHelperLocationResponse',['../class_cellular_helper_location_response.html',1,'']]], 11 | ['cellularhelperplusstringresponse_102',['CellularHelperPlusStringResponse',['../class_cellular_helper_plus_string_response.html',1,'']]], 12 | ['cellularhelperrssiqualresponse_103',['CellularHelperRSSIQualResponse',['../class_cellular_helper_r_s_s_i_qual_response.html',1,'']]], 13 | ['cellularhelperstringresponse_104',['CellularHelperStringResponse',['../class_cellular_helper_string_response.html',1,'']]] 14 | ]; 15 | -------------------------------------------------------------------------------- /docs/html/search/classes_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/classes_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['logclass_97',['LogClass',['../class_log_class.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/search/close.png -------------------------------------------------------------------------------- /docs/html/search/functions_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/functions_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['addkeyvalue_105',['addKeyValue',['../class_cellular_helper_environment_cell_data.html#aba6c3669482f0292d584e295b3dde7c5',1,'CellularHelperEnvironmentCellData']]], 4 | ['appendbuffertostring_106',['appendBufferToString',['../class_cellular_helper_class.html#a1420ad8cb8d8f5ce85f217d92c5ad9a3',1,'CellularHelperClass']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/functions_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/functions_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['cellularhelperenvironmentresponse_107',['CellularHelperEnvironmentResponse',['../class_cellular_helper_environment_response.html#a30c6319b574e99199b6531c5ba8bbff2',1,'CellularHelperEnvironmentResponse::CellularHelperEnvironmentResponse()'],['../class_cellular_helper_environment_response.html#aaf3cb62d30d5c7ecf8da216604d89015',1,'CellularHelperEnvironmentResponse::CellularHelperEnvironmentResponse(CellularHelperEnvironmentCellData *neighbors, size_t numNeighbors)']]], 4 | ['clear_108',['clear',['../class_cellular_helper_environment_response.html#afb544e829eedfbaf4d4b657b9619db0f',1,'CellularHelperEnvironmentResponse']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/functions_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/functions_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['getband_109',['getBand',['../class_cellular_helper_environment_cell_data.html#aff6f21bb47b7e5808230690e6df41dfe',1,'CellularHelperEnvironmentCellData']]], 4 | ['getbandstring_110',['getBandString',['../class_cellular_helper_environment_cell_data.html#af0e0c3ddf6e8461ba67207070c54a986',1,'CellularHelperEnvironmentCellData']]], 5 | ['getbars_111',['getBars',['../class_cellular_helper_environment_cell_data.html#aa92eca8cda0f87b9bd8be4135f80bc6c',1,'CellularHelperEnvironmentCellData']]], 6 | ['getcreg_112',['getCREG',['../class_cellular_helper_class.html#a3cbd953dc606ded587c389d041c02b60',1,'CellularHelperClass']]], 7 | ['getdoublequotedpart_113',['getDoubleQuotedPart',['../class_cellular_helper_plus_string_response.html#a9df55cfbb661b756e262b04ad2395770',1,'CellularHelperPlusStringResponse']]], 8 | ['getenvironment_114',['getEnvironment',['../class_cellular_helper_class.html#a8649727a474895761a5e76f3bf194be0',1,'CellularHelperClass']]], 9 | ['getextendedqual_115',['getExtendedQual',['../class_cellular_helper_class.html#a2cf4ec66557254498d5d7600ea66bd74',1,'CellularHelperClass']]], 10 | ['getfirmwareversion_116',['getFirmwareVersion',['../class_cellular_helper_class.html#a628bf30b49d5ce508b0824400d4e5fa2',1,'CellularHelperClass']]], 11 | ['geticcid_117',['getICCID',['../class_cellular_helper_class.html#a9011c3c5c75a8082635662e6d46674fd',1,'CellularHelperClass']]], 12 | ['getimei_118',['getIMEI',['../class_cellular_helper_class.html#a6d9497a2a4ea89386686b64552536ff6',1,'CellularHelperClass']]], 13 | ['getimsi_119',['getIMSI',['../class_cellular_helper_class.html#ab3fc38c242e5ca9da7b7c9650a81060d',1,'CellularHelperClass']]], 14 | ['getlocation_120',['getLocation',['../class_cellular_helper_class.html#a4b7c0ca270ee2f6c603c6cc41545faf0',1,'CellularHelperClass']]], 15 | ['getmanufacturer_121',['getManufacturer',['../class_cellular_helper_class.html#a16c1da329a92608c8842a3446383c06b',1,'CellularHelperClass']]], 16 | ['getmodel_122',['getModel',['../class_cellular_helper_class.html#a6253d0ec0ccd1324a60880ad86dd7ec6',1,'CellularHelperClass']]], 17 | ['getnumneighbors_123',['getNumNeighbors',['../class_cellular_helper_environment_response.html#a684343a340f494e05ef4061043eed3ea',1,'CellularHelperEnvironmentResponse']]], 18 | ['getoperatorname_124',['getOperatorName',['../class_cellular_helper_class.html#ab94954513ac81bc2534c1e0679c51c20',1,'CellularHelperClass']]], 19 | ['getorderingcode_125',['getOrderingCode',['../class_cellular_helper_class.html#a3912f906870f0554ef5cbabd7d48cf8d',1,'CellularHelperClass']]], 20 | ['getrssi_126',['getRSSI',['../class_cellular_helper_environment_cell_data.html#aa5038a00447e50ae679b5aabbf7fa056',1,'CellularHelperEnvironmentCellData']]], 21 | ['getrssiqual_127',['getRSSIQual',['../class_cellular_helper_class.html#af9012f92f58f5151cc7006aceadd311b',1,'CellularHelperClass']]] 22 | ]; 23 | -------------------------------------------------------------------------------- /docs/html/search/functions_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/functions_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['islte_128',['isLTE',['../class_cellular_helper_class.html#ad92a98cd69ce11fbd7801109fd276223',1,'CellularHelperClass']]], 4 | ['issara_5fr4_129',['isSARA_R4',['../class_cellular_helper_class.html#ad6f2d995ca3686fd5d5d820bb6548848',1,'CellularHelperClass']]], 5 | ['isvalid_130',['isValid',['../class_cellular_helper_environment_cell_data.html#af8a7a2c360f574d663efcf3367a14d3f',1,'CellularHelperEnvironmentCellData::isValid()'],['../class_cellular_helper_location_response.html#a32fc01d4e3128419e66457ee683caac8',1,'CellularHelperLocationResponse::isValid()'],['../class_cellular_helper_c_r_e_g_response.html#a41707f3cf7b9eb78e7997d988f7d8f41',1,'CellularHelperCREGResponse::isValid()']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/functions_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/functions_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['logcellulardebug_131',['logCellularDebug',['../class_cellular_helper_common_response.html#aca5a4a6a48c7df37fd4e2c0c217736f3',1,'CellularHelperCommonResponse']]], 4 | ['logresponse_132',['logResponse',['../class_cellular_helper_environment_response.html#acd01b68d7cd0b82efb38a60aa78ae684',1,'CellularHelperEnvironmentResponse']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/functions_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/functions_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['parse_133',['parse',['../class_cellular_helper_common_response.html#a38665d49da89d413c521f0220eb68531',1,'CellularHelperCommonResponse::parse()'],['../class_cellular_helper_string_response.html#add8574837d7cb82cdd4b8a077c1c9dac',1,'CellularHelperStringResponse::parse()'],['../class_cellular_helper_plus_string_response.html#a54d24348b25b3720efb46be8858b7dbc',1,'CellularHelperPlusStringResponse::parse()'],['../class_cellular_helper_environment_cell_data.html#aba8e5ec7d00aeec2083dca3dc48e1c90',1,'CellularHelperEnvironmentCellData::parse()'],['../class_cellular_helper_environment_response.html#a43684dcdf4534e86005b27edfd9ebf4f',1,'CellularHelperEnvironmentResponse::parse()']]], 4 | ['postprocess_134',['postProcess',['../class_cellular_helper_r_s_s_i_qual_response.html#a99c042f1dfe517ad61c792cd8be83a01',1,'CellularHelperRSSIQualResponse::postProcess()'],['../class_cellular_helper_extended_qual_response.html#af4919331917b0a3b7abc18367245339b',1,'CellularHelperExtendedQualResponse::postProcess()'],['../class_cellular_helper_location_response.html#a166c45c752ebec4ad96fb4626e7d39a3',1,'CellularHelperLocationResponse::postProcess()'],['../class_cellular_helper_c_r_e_g_response.html#ad8c9d7055161b482802c46fe6ece1fa3',1,'CellularHelperCREGResponse::postProcess()']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/functions_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/functions_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['responsecallback_135',['responseCallback',['../class_cellular_helper_class.html#a827e147bc93efd47114d56a9bd01439c',1,'CellularHelperClass']]], 4 | ['rssitobars_136',['rssiToBars',['../class_cellular_helper_class.html#a85e5aafab6df5bca137368586e6fdf8c',1,'CellularHelperClass']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/functions_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/functions_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['selectoperator_137',['selectOperator',['../class_cellular_helper_class.html#a784f5bfa43caacc2fe1f9e98e66142dc',1,'CellularHelperClass']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/functions_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/functions_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['tostring_138',['toString',['../class_cellular_helper_r_s_s_i_qual_response.html#a1481ecd783b1f0832bb96ae712f8ae99',1,'CellularHelperRSSIQualResponse::toString()'],['../class_cellular_helper_extended_qual_response.html#a669a73cc39b3c58aee88820f7449154c',1,'CellularHelperExtendedQualResponse::toString()'],['../class_cellular_helper_environment_cell_data.html#a84420fa7eac89beea98bc021524ca7fa',1,'CellularHelperEnvironmentCellData::toString()'],['../class_cellular_helper_location_response.html#a4fb04ef76fb545b7f7572fbbfc023b22',1,'CellularHelperLocationResponse::toString()'],['../class_cellular_helper_c_r_e_g_response.html#ab81e2b3400612e6b4f7cc2232e323df9',1,'CellularHelperCREGResponse::toString()']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/mag_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/search/mag_sel.png -------------------------------------------------------------------------------- /docs/html/search/nomatches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
    9 |
    No Matches
    10 |
    11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/html/search/pages_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/pages_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['cellular_20helper_188',['Cellular Helper',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/search.css: -------------------------------------------------------------------------------- 1 | /*---------------- Search Box */ 2 | 3 | #FSearchBox { 4 | float: left; 5 | } 6 | 7 | #MSearchBox { 8 | white-space : nowrap; 9 | float: none; 10 | margin-top: 8px; 11 | right: 0px; 12 | width: 170px; 13 | height: 24px; 14 | z-index: 102; 15 | } 16 | 17 | #MSearchBox .left 18 | { 19 | display:block; 20 | position:absolute; 21 | left:10px; 22 | width:20px; 23 | height:19px; 24 | background:url('search_l.png') no-repeat; 25 | background-position:right; 26 | } 27 | 28 | #MSearchSelect { 29 | display:block; 30 | position:absolute; 31 | width:20px; 32 | height:19px; 33 | } 34 | 35 | .left #MSearchSelect { 36 | left:4px; 37 | } 38 | 39 | .right #MSearchSelect { 40 | right:5px; 41 | } 42 | 43 | #MSearchField { 44 | display:block; 45 | position:absolute; 46 | height:19px; 47 | background:url('search_m.png') repeat-x; 48 | border:none; 49 | width:115px; 50 | margin-left:20px; 51 | padding-left:4px; 52 | color: #909090; 53 | outline: none; 54 | font: 9pt Arial, Verdana, sans-serif; 55 | -webkit-border-radius: 0px; 56 | } 57 | 58 | #FSearchBox #MSearchField { 59 | margin-left:15px; 60 | } 61 | 62 | #MSearchBox .right { 63 | display:block; 64 | position:absolute; 65 | right:10px; 66 | top:8px; 67 | width:20px; 68 | height:19px; 69 | background:url('search_r.png') no-repeat; 70 | background-position:left; 71 | } 72 | 73 | #MSearchClose { 74 | display: none; 75 | position: absolute; 76 | top: 4px; 77 | background : none; 78 | border: none; 79 | margin: 0px 4px 0px 0px; 80 | padding: 0px 0px; 81 | outline: none; 82 | } 83 | 84 | .left #MSearchClose { 85 | left: 6px; 86 | } 87 | 88 | .right #MSearchClose { 89 | right: 2px; 90 | } 91 | 92 | .MSearchBoxActive #MSearchField { 93 | color: #000000; 94 | } 95 | 96 | /*---------------- Search filter selection */ 97 | 98 | #MSearchSelectWindow { 99 | display: none; 100 | position: absolute; 101 | left: 0; top: 0; 102 | border: 1px solid #90A5CE; 103 | background-color: #F9FAFC; 104 | z-index: 10001; 105 | padding-top: 4px; 106 | padding-bottom: 4px; 107 | -moz-border-radius: 4px; 108 | -webkit-border-top-left-radius: 4px; 109 | -webkit-border-top-right-radius: 4px; 110 | -webkit-border-bottom-left-radius: 4px; 111 | -webkit-border-bottom-right-radius: 4px; 112 | -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); 113 | } 114 | 115 | .SelectItem { 116 | font: 8pt Arial, Verdana, sans-serif; 117 | padding-left: 2px; 118 | padding-right: 12px; 119 | border: 0px; 120 | } 121 | 122 | span.SelectionMark { 123 | margin-right: 4px; 124 | font-family: monospace; 125 | outline-style: none; 126 | text-decoration: none; 127 | } 128 | 129 | a.SelectItem { 130 | display: block; 131 | outline-style: none; 132 | color: #000000; 133 | text-decoration: none; 134 | padding-left: 6px; 135 | padding-right: 12px; 136 | } 137 | 138 | a.SelectItem:focus, 139 | a.SelectItem:active { 140 | color: #000000; 141 | outline-style: none; 142 | text-decoration: none; 143 | } 144 | 145 | a.SelectItem:hover { 146 | color: #FFFFFF; 147 | background-color: #3D578C; 148 | outline-style: none; 149 | text-decoration: none; 150 | cursor: pointer; 151 | display: block; 152 | } 153 | 154 | /*---------------- Search results window */ 155 | 156 | iframe#MSearchResults { 157 | width: 60ex; 158 | height: 15em; 159 | } 160 | 161 | #MSearchResultsWindow { 162 | display: none; 163 | position: absolute; 164 | left: 0; top: 0; 165 | border: 1px solid #000; 166 | background-color: #EEF1F7; 167 | z-index:10000; 168 | } 169 | 170 | /* ----------------------------------- */ 171 | 172 | 173 | #SRIndex { 174 | clear:both; 175 | padding-bottom: 15px; 176 | } 177 | 178 | .SREntry { 179 | font-size: 10pt; 180 | padding-left: 1ex; 181 | } 182 | 183 | .SRPage .SREntry { 184 | font-size: 8pt; 185 | padding: 1px 5px; 186 | } 187 | 188 | body.SRPage { 189 | margin: 5px 2px; 190 | } 191 | 192 | .SRChildren { 193 | padding-left: 3ex; padding-bottom: .5em 194 | } 195 | 196 | .SRPage .SRChildren { 197 | display: none; 198 | } 199 | 200 | .SRSymbol { 201 | font-weight: bold; 202 | color: #425E97; 203 | font-family: Arial, Verdana, sans-serif; 204 | text-decoration: none; 205 | outline: none; 206 | } 207 | 208 | a.SRScope { 209 | display: block; 210 | color: #425E97; 211 | font-family: Arial, Verdana, sans-serif; 212 | text-decoration: none; 213 | outline: none; 214 | } 215 | 216 | a.SRSymbol:focus, a.SRSymbol:active, 217 | a.SRScope:focus, a.SRScope:active { 218 | text-decoration: underline; 219 | } 220 | 221 | span.SRScope { 222 | padding-left: 4px; 223 | } 224 | 225 | .SRPage .SRStatus { 226 | padding: 2px 5px; 227 | font-size: 8pt; 228 | font-style: italic; 229 | } 230 | 231 | .SRResult { 232 | display: none; 233 | } 234 | 235 | DIV.searchresults { 236 | margin-left: 10px; 237 | margin-right: 10px; 238 | } 239 | 240 | /*---------------- External search page results */ 241 | 242 | .searchresult { 243 | background-color: #F0F3F8; 244 | } 245 | 246 | .pages b { 247 | color: white; 248 | padding: 5px 5px 3px 5px; 249 | background-image: url("../tab_a.png"); 250 | background-repeat: repeat-x; 251 | text-shadow: 0 1px 1px #000000; 252 | } 253 | 254 | .pages { 255 | line-height: 17px; 256 | margin-left: 4px; 257 | text-decoration: none; 258 | } 259 | 260 | .hl { 261 | font-weight: bold; 262 | } 263 | 264 | #searchresults { 265 | margin-bottom: 20px; 266 | } 267 | 268 | .searchpages { 269 | margin-top: 10px; 270 | } 271 | 272 | -------------------------------------------------------------------------------- /docs/html/search/search_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/search/search_l.png -------------------------------------------------------------------------------- /docs/html/search/search_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/search/search_m.png -------------------------------------------------------------------------------- /docs/html/search/search_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/search/search_r.png -------------------------------------------------------------------------------- /docs/html/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "abcdegilmnopqrstuv", 4 | 1: "c", 5 | 2: "acgilprst", 6 | 3: "abcdeilmnoqrsuv", 7 | 4: "c" 8 | }; 9 | 10 | var indexSectionNames = 11 | { 12 | 0: "all", 13 | 1: "classes", 14 | 2: "functions", 15 | 3: "variables", 16 | 4: "pages" 17 | }; 18 | 19 | var indexSectionLabels = 20 | { 21 | 0: "All", 22 | 1: "Data Structures", 23 | 2: "Functions", 24 | 3: "Variables", 25 | 4: "Pages" 26 | }; 27 | 28 | -------------------------------------------------------------------------------- /docs/html/search/variables_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/variables_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['alt_139',['alt',['../class_cellular_helper_location_response.html#acb24fe19094623cffbcd3099c0a6b0c4',1,'CellularHelperLocationResponse']]], 4 | ['arfcn_140',['arfcn',['../class_cellular_helper_environment_cell_data.html#a7be6c2fe58c2b24e6098c9e9733ec6b2',1,'CellularHelperEnvironmentCellData']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/variables_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/variables_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ber_141',['ber',['../class_cellular_helper_extended_qual_response.html#a0f2b33eaeb9e0bc48c5831804c935bd7',1,'CellularHelperExtendedQualResponse']]], 4 | ['bsic_142',['bsic',['../class_cellular_helper_environment_cell_data.html#a07ddcc0ead32fd5ce32301677c2721f6',1,'CellularHelperEnvironmentCellData']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/variables_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/variables_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ci_143',['ci',['../class_cellular_helper_environment_cell_data.html#a37684813302019c96e2ff7f504375187',1,'CellularHelperEnvironmentCellData::ci()'],['../class_cellular_helper_c_r_e_g_response.html#a75a560ecd4358aae316c7f4e63073af8',1,'CellularHelperCREGResponse::ci()']]], 4 | ['command_144',['command',['../class_cellular_helper_plus_string_response.html#aab2c1442c95e90948f2a9a1a01bf9424',1,'CellularHelperPlusStringResponse']]], 5 | ['curdataindex_145',['curDataIndex',['../class_cellular_helper_environment_response.html#ab68b3f954c6c0430b00857781cb8c215',1,'CellularHelperEnvironmentResponse']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/variables_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/variables_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['default_5ftimeout_146',['DEFAULT_TIMEOUT',['../class_cellular_helper_class.html#ae86c06d88fb15d0c86ff324bd3d8cf87',1,'CellularHelperClass']]], 4 | ['dlf_147',['dlf',['../class_cellular_helper_environment_cell_data.html#a955358e1e725c6fc0c1a6abc69ae4cdc',1,'CellularHelperEnvironmentCellData']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/variables_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/variables_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ecn0_148',['ecn0',['../class_cellular_helper_extended_qual_response.html#a9eab9a07dfbf15bd3bba499cb580de85',1,'CellularHelperExtendedQualResponse']]], 4 | ['enabledebug_149',['enableDebug',['../class_cellular_helper_common_response.html#addab157ed764a36df8c935f50eb787e6',1,'CellularHelperCommonResponse']]], 5 | ['environment_5fserving_5fcell_150',['ENVIRONMENT_SERVING_CELL',['../class_cellular_helper_class.html#abd463f53d7b73e3cd0a2491b8b3c1350',1,'CellularHelperClass']]], 6 | ['environment_5fserving_5fcell_5fand_5fneighbors_151',['ENVIRONMENT_SERVING_CELL_AND_NEIGHBORS',['../class_cellular_helper_class.html#a2945810d6200a68532bbd7b1c83651dc',1,'CellularHelperClass']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/html/search/variables_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/variables_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['isumts_152',['isUMTS',['../class_cellular_helper_environment_cell_data.html#a0978883a5232976b6356b11531176ff8',1,'CellularHelperEnvironmentCellData']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/variables_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/variables_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['lac_153',['lac',['../class_cellular_helper_environment_cell_data.html#ad2d698a1dc0dd27e16846ca8b3289083',1,'CellularHelperEnvironmentCellData::lac()'],['../class_cellular_helper_c_r_e_g_response.html#a1c210b8d102814b147fc017d590cb652',1,'CellularHelperCREGResponse::lac()']]], 4 | ['lat_154',['lat',['../class_cellular_helper_location_response.html#a7983c95974e29a24577cd1b9cae34597',1,'CellularHelperLocationResponse']]], 5 | ['lon_155',['lon',['../class_cellular_helper_location_response.html#a02d6f66f386a7beddd0c159dc24aeee5',1,'CellularHelperLocationResponse']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/variables_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/variables_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mcc_156',['mcc',['../class_cellular_helper_environment_cell_data.html#a05d3778b673ed91386d6bfa92cd74ad3',1,'CellularHelperEnvironmentCellData']]], 4 | ['mnc_157',['mnc',['../class_cellular_helper_environment_cell_data.html#a0c84cc35edca9790011ff8f009d00828',1,'CellularHelperEnvironmentCellData']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/variables_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/variables_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['neighbors_158',['neighbors',['../class_cellular_helper_environment_response.html#ab27bc8f1644c1f61f121ee494748ddd7',1,'CellularHelperEnvironmentResponse']]], 4 | ['numneighbors_159',['numNeighbors',['../class_cellular_helper_environment_response.html#ae2dab2b3021386a1ae3a3de0eafd57d0',1,'CellularHelperEnvironmentResponse']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/variables_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/variables_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['operator_5fname_5flong_5fcphs_160',['OPERATOR_NAME_LONG_CPHS',['../class_cellular_helper_class.html#acb2b31c1ef6269085302a7d25bff8a57',1,'CellularHelperClass']]], 4 | ['operator_5fname_5flong_5feons_161',['OPERATOR_NAME_LONG_EONS',['../class_cellular_helper_class.html#a757d5bcfbdbfb4c8d44bb7a40e5c189e',1,'CellularHelperClass']]], 5 | ['operator_5fname_5flong_5fnetwork_5foperator_162',['OPERATOR_NAME_LONG_NETWORK_OPERATOR',['../class_cellular_helper_class.html#a52ee866204b3914e8df302de56f46eae',1,'CellularHelperClass']]], 6 | ['operator_5fname_5flong_5fnitz_163',['OPERATOR_NAME_LONG_NITZ',['../class_cellular_helper_class.html#adfca63770923dc60ca1e615c7af90bba',1,'CellularHelperClass']]], 7 | ['operator_5fname_5flong_5from_164',['OPERATOR_NAME_LONG_ROM',['../class_cellular_helper_class.html#a7bea96108f54089ed072012a1e131f33',1,'CellularHelperClass']]], 8 | ['operator_5fname_5fnumeric_165',['OPERATOR_NAME_NUMERIC',['../class_cellular_helper_class.html#aebd6b29f234b579a04d6dcd63664207f',1,'CellularHelperClass']]], 9 | ['operator_5fname_5fservice_5fprovider_166',['OPERATOR_NAME_SERVICE_PROVIDER',['../class_cellular_helper_class.html#ab46b11df1fa964d883a92fabd84f6dc0',1,'CellularHelperClass']]], 10 | ['operator_5fname_5fshort_5fcphs_167',['OPERATOR_NAME_SHORT_CPHS',['../class_cellular_helper_class.html#af43eb53fbe93ff783e6aab158235e875',1,'CellularHelperClass']]], 11 | ['operator_5fname_5fshort_5feons_168',['OPERATOR_NAME_SHORT_EONS',['../class_cellular_helper_class.html#a6b0b9acd3abf1a6c20d5ca1612b25680',1,'CellularHelperClass']]], 12 | ['operator_5fname_5fshort_5fnetwork_5foperator_169',['OPERATOR_NAME_SHORT_NETWORK_OPERATOR',['../class_cellular_helper_class.html#a9ee7070ab688dfe84f800c4d943d21fe',1,'CellularHelperClass']]], 13 | ['operator_5fname_5fshort_5fnitz_170',['OPERATOR_NAME_SHORT_NITZ',['../class_cellular_helper_class.html#a7022e0dff705864f872a4ada1140d3a6',1,'CellularHelperClass']]], 14 | ['operator_5fname_5fshort_5from_171',['OPERATOR_NAME_SHORT_ROM',['../class_cellular_helper_class.html#a92bc1427f0cc1e3e55c0fbee0ce98cf2',1,'CellularHelperClass']]] 15 | ]; 16 | -------------------------------------------------------------------------------- /docs/html/search/variables_a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/variables_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['qual_172',['qual',['../class_cellular_helper_r_s_s_i_qual_response.html#a7a09fd52dea5d5c262e603f06b40a2ac',1,'CellularHelperRSSIQualResponse']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/variables_b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/variables_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['rat_173',['rat',['../class_cellular_helper_c_r_e_g_response.html#a8aaab9f59a0bc6b1b701f0048d8c4fa5',1,'CellularHelperCREGResponse']]], 4 | ['resp_174',['resp',['../class_cellular_helper_common_response.html#ae4e7bcdbd486d4b3dd8a08d9d5a5fdae',1,'CellularHelperCommonResponse']]], 5 | ['rscp_175',['rscp',['../class_cellular_helper_extended_qual_response.html#acc90ff433a0148cbf45b246d2ebde5f6',1,'CellularHelperExtendedQualResponse']]], 6 | ['rscplev_176',['rscpLev',['../class_cellular_helper_environment_cell_data.html#a0c5909a99db9c352e37b62f655544c28',1,'CellularHelperEnvironmentCellData']]], 7 | ['rsrp_177',['rsrp',['../class_cellular_helper_extended_qual_response.html#a1ce04bc5630f64d1954653d0ee94d22e',1,'CellularHelperExtendedQualResponse']]], 8 | ['rsrq_178',['rsrq',['../class_cellular_helper_extended_qual_response.html#a63e5f5c464cff37f5c5c7738cde811b5',1,'CellularHelperExtendedQualResponse']]], 9 | ['rssi_179',['rssi',['../class_cellular_helper_r_s_s_i_qual_response.html#a79e1a4de64d03ff352645eb38f9fca21',1,'CellularHelperRSSIQualResponse']]], 10 | ['rxlev_180',['rxlev',['../class_cellular_helper_extended_qual_response.html#a5b932edd480c1d4d472da69fdb08bbd0',1,'CellularHelperExtendedQualResponse::rxlev()'],['../class_cellular_helper_environment_cell_data.html#a2db41cdc01ddf9be67ea5e615070e039',1,'CellularHelperEnvironmentCellData::rxlev()']]] 11 | ]; 12 | -------------------------------------------------------------------------------- /docs/html/search/variables_c.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/variables_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['service_181',['service',['../class_cellular_helper_environment_response.html#a15d7a7576ef6fbec750afc5d00a52cdf',1,'CellularHelperEnvironmentResponse']]], 4 | ['stat_182',['stat',['../class_cellular_helper_c_r_e_g_response.html#ac1ec28dc7185aa917dc546996e487851',1,'CellularHelperCREGResponse']]], 5 | ['staticneighbors_183',['staticNeighbors',['../class_cellular_helper_environment_response_static.html#ad51eb94bee7651ccf7a6296d7081d1a3',1,'CellularHelperEnvironmentResponseStatic']]], 6 | ['string_184',['string',['../class_cellular_helper_string_response.html#ac4075df768ca9c6c01c3b5070296ef7b',1,'CellularHelperStringResponse::string()'],['../class_cellular_helper_plus_string_response.html#a24f361a57f89ddc2c3200dbb0ca86af4',1,'CellularHelperPlusStringResponse::string()']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/html/search/variables_d.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/variables_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ulf_185',['ulf',['../class_cellular_helper_environment_cell_data.html#abccb0068906260bfa86b063049b11a9e',1,'CellularHelperEnvironmentCellData']]], 4 | ['uncertainty_186',['uncertainty',['../class_cellular_helper_location_response.html#ac0ec86e87aa7014fb7d6628c883361ed',1,'CellularHelperLocationResponse']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/variables_e.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/variables_e.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['valid_187',['valid',['../class_cellular_helper_location_response.html#a27e7b0f1178c71cf261dc78bc2ed4633',1,'CellularHelperLocationResponse::valid()'],['../class_cellular_helper_c_r_e_g_response.html#ad4af5de2bc689ebcd409d172c7c3573f',1,'CellularHelperCREGResponse::valid()']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/splitbar.png -------------------------------------------------------------------------------- /docs/html/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/sync_off.png -------------------------------------------------------------------------------- /docs/html/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/sync_on.png -------------------------------------------------------------------------------- /docs/html/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/tab_a.png -------------------------------------------------------------------------------- /docs/html/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/tab_b.png -------------------------------------------------------------------------------- /docs/html/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/tab_h.png -------------------------------------------------------------------------------- /docs/html/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rickkas7/CellularHelper/8de7ebc084c0b74c2b4f742c2bd10bd16356dc0d/docs/html/tab_s.png -------------------------------------------------------------------------------- /docs/html/tabs.css: -------------------------------------------------------------------------------- 1 | .sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} -------------------------------------------------------------------------------- /examples/1-simple/1-simple.cpp: -------------------------------------------------------------------------------- 1 | #include "Particle.h" 2 | #include "CellularHelper.h" 3 | 4 | // STARTUP(cellular_credentials_set("epc.tmobile.com", "", "", NULL)); 5 | 6 | SYSTEM_MODE(MANUAL); 7 | SYSTEM_THREAD(ENABLED); 8 | 9 | // For extra debugging, use the LOG_LEVEL_TRACE version instead 10 | SerialLogHandler logHandler; 11 | // SerialLogHandler logHandler(LOG_LEVEL_TRACE); 12 | 13 | 14 | const unsigned long STARTUP_WAIT_TIME_MS = 4000; 15 | const unsigned long MODEM_ON_WAIT_TIME_MS = 4000; 16 | const unsigned long CLOUD_PRE_WAIT_TIME_MS = 5000; 17 | const unsigned long DISCONNECT_WAIT_TIME_MS = 10000; 18 | 19 | // Forward declarations 20 | void runModemTests(); 21 | void runCellularTests(); 22 | void buttonHandler(system_event_t event, int data); 23 | 24 | enum State { 25 | STARTUP_WAIT_STATE, 26 | MODEM_ON_STATE, 27 | MODEM_ON_WAIT_STATE, 28 | COPS_STATE, 29 | CONNECT_STATE, 30 | CONNECT_WAIT_STATE, 31 | RUN_CELLULAR_TESTS, 32 | CLOUD_BUTTON_WAIT_STATE, 33 | CLOUD_CONNECT_STATE, 34 | CLOUD_CONNECT_WAIT_STATE, 35 | CLOUD_PRE_WAIT_STATE, 36 | RUN_CLOUD_TESTS, 37 | DISCONNECT_WAIT_STATE, 38 | REPEAT_TESTS_STATE, 39 | DONE_STATE, 40 | IDLE_WAIT_STATE 41 | }; 42 | State state = STARTUP_WAIT_STATE; 43 | unsigned long stateTime = 0; 44 | bool buttonClicked = false; 45 | 46 | void setup() { 47 | Serial.begin(9600); 48 | System.on(button_click, buttonHandler); 49 | } 50 | 51 | void loop() { 52 | switch(state) { 53 | case STARTUP_WAIT_STATE: 54 | if (millis() - stateTime >= STARTUP_WAIT_TIME_MS) { 55 | stateTime = millis(); 56 | state = MODEM_ON_STATE; 57 | } 58 | break; 59 | 60 | case MODEM_ON_STATE: 61 | buttonClicked = false; 62 | Log.info("turning on modem..."); 63 | Cellular.on(); 64 | state = MODEM_ON_WAIT_STATE; 65 | stateTime = millis(); 66 | break; 67 | 68 | case MODEM_ON_WAIT_STATE: 69 | // In system threaded mode you need to wait a little while after turning on the 70 | // cellular mode before it will respond. That's what MODEM_ON_WAIT_TIME_MS is for. 71 | if (millis() - stateTime < MODEM_ON_WAIT_TIME_MS) { 72 | // Not time yet; with system thread enabled you need to wait a few 73 | // seconds for the modem to actually start up before it will respond. 74 | break; 75 | } 76 | 77 | // Modem ready. Print out the basic stuff like ICCID. 78 | runModemTests(); 79 | 80 | state = CONNECT_STATE; 81 | stateTime = millis(); 82 | break; 83 | 84 | case COPS_STATE: 85 | break; 86 | 87 | case CONNECT_STATE: 88 | 89 | Log.info("attempting to connect to the cellular network..."); 90 | Cellular.connect(); 91 | 92 | state = CONNECT_WAIT_STATE; 93 | stateTime = millis(); 94 | break; 95 | 96 | case CONNECT_WAIT_STATE: 97 | if (Cellular.ready()) { 98 | unsigned long elapsed = millis() - stateTime; 99 | 100 | Log.info("connected to the cellular network in %lu milliseconds", elapsed); 101 | state = RUN_CELLULAR_TESTS; 102 | stateTime = millis(); 103 | } 104 | else 105 | if (Cellular.listening()) { 106 | Log.info("entered listening mode (blinking dark blue) - probably no SIM installed"); 107 | state = DONE_STATE; 108 | } 109 | break; 110 | 111 | case RUN_CELLULAR_TESTS: 112 | Log.info("running cellular tests"); 113 | 114 | runCellularTests(); 115 | 116 | Log.info("cellular tests complete"); 117 | Log.info("press the MODE button to connect to the cloud"); 118 | state = CLOUD_BUTTON_WAIT_STATE; 119 | break; 120 | 121 | case CLOUD_BUTTON_WAIT_STATE: 122 | if (buttonClicked) { 123 | buttonClicked = false; 124 | state = CLOUD_CONNECT_STATE; 125 | } 126 | break; 127 | 128 | case CLOUD_CONNECT_STATE: 129 | Log.info("attempting to connect to the Particle cloud..."); 130 | Particle.connect(); 131 | state = CLOUD_CONNECT_WAIT_STATE; 132 | stateTime = millis(); 133 | break; 134 | 135 | case CLOUD_CONNECT_WAIT_STATE: 136 | if (Particle.connected()) { 137 | unsigned long elapsed = millis() - stateTime; 138 | 139 | Log.info("connected to the cloud in %lu milliseconds", elapsed); 140 | 141 | 142 | state = CLOUD_PRE_WAIT_STATE; 143 | stateTime = millis(); 144 | } 145 | break; 146 | 147 | case CLOUD_PRE_WAIT_STATE: 148 | if (millis() - stateTime >= CLOUD_PRE_WAIT_TIME_MS) { 149 | state = RUN_CLOUD_TESTS; 150 | stateTime = millis(); 151 | } 152 | break; 153 | 154 | case RUN_CLOUD_TESTS: 155 | // Log.info("running cloud tests"); 156 | state = DONE_STATE; 157 | break; 158 | 159 | case DISCONNECT_WAIT_STATE: 160 | if (millis() - stateTime >= DISCONNECT_WAIT_TIME_MS) { 161 | state = REPEAT_TESTS_STATE; 162 | } 163 | break; 164 | 165 | case REPEAT_TESTS_STATE: 166 | if (Cellular.ready()) { 167 | state = RUN_CELLULAR_TESTS; 168 | } 169 | else { 170 | state = CONNECT_STATE; 171 | } 172 | break; 173 | 174 | case DONE_STATE: 175 | Log.info("tests complete!"); 176 | Log.info("press the MODE button to disconnect from the cloud and repeat tests"); 177 | buttonClicked = false; 178 | state = IDLE_WAIT_STATE; 179 | break; 180 | 181 | 182 | case IDLE_WAIT_STATE: 183 | if (buttonClicked) { 184 | buttonClicked = false; 185 | if (Particle.connected()) { 186 | Log.info("disconnecting from the cloud"); 187 | Particle.disconnect(); 188 | state = DISCONNECT_WAIT_STATE; 189 | stateTime = millis(); 190 | } 191 | else { 192 | state = REPEAT_TESTS_STATE; 193 | } 194 | } 195 | break; 196 | } 197 | } 198 | 199 | void runModemTests() { 200 | Log.info("manufacturer=%s", CellularHelper.getManufacturer().c_str()); 201 | 202 | Log.info("model=%s", CellularHelper.getModel().c_str()); 203 | 204 | Log.info("firmware version=%s", CellularHelper.getFirmwareVersion().c_str()); 205 | 206 | Log.info("ordering code=%s", CellularHelper.getOrderingCode().c_str()); 207 | 208 | Log.info("IMEI=%s", CellularHelper.getIMEI().c_str()); 209 | 210 | Log.info("IMSI=%s", CellularHelper.getIMSI().c_str()); 211 | 212 | Log.info("ICCID=%s", CellularHelper.getICCID().c_str()); 213 | 214 | } 215 | 216 | // Various tests to find out information about the cellular network we connected to 217 | void runCellularTests() { 218 | 219 | Log.info("operator name=%s", CellularHelper.getOperatorName().c_str()); 220 | 221 | CellularHelperRSSIQualResponse rssiQual = CellularHelper.getRSSIQual(); 222 | int bars = CellularHelperClass::rssiToBars(rssiQual.rssi); 223 | 224 | Log.info("rssi=%d, qual=%d, bars=%d", rssiQual.rssi, rssiQual.qual, bars); 225 | 226 | 227 | CellularHelperExtendedQualResponse extQual = CellularHelper.getExtendedQual(); 228 | Log.info("extended qual %s (LTE-M1 only)", extQual.toString().c_str()); 229 | 230 | // First try to get info on neighboring cells. This doesn't work for me using the U260. 231 | // Get a maximum of 8 responses 232 | CellularHelperEnvironmentResponseStatic<8> envResp; 233 | 234 | CellularHelper.getEnvironment(CellularHelper.ENVIRONMENT_SERVING_CELL_AND_NEIGHBORS, envResp); 235 | if (envResp.resp != RESP_OK) { 236 | // We couldn't get neighboring cells, so try just the receiving cell 237 | CellularHelper.getEnvironment(CellularHelper.ENVIRONMENT_SERVING_CELL, envResp); 238 | } 239 | if (envResp.resp == RESP_OK) { 240 | envResp.logResponse(); 241 | } 242 | else { 243 | Log.info("could not get cellular environment (normal for LTE M1)"); 244 | } 245 | 246 | CellularHelperLocationResponse locResp = CellularHelper.getLocation(); 247 | Log.info(locResp.toString()); 248 | 249 | } 250 | 251 | void buttonHandler(system_event_t event, int param) { 252 | // int clicks = system_button_clicks(param); 253 | buttonClicked = true; 254 | } 255 | 256 | 257 | -------------------------------------------------------------------------------- /examples/2-show-carriers/2-show-carriers.cpp: -------------------------------------------------------------------------------- 1 | #include "Particle.h" 2 | #include "CellularHelper.h" 3 | 4 | // STARTUP(cellular_credentials_set("epc.tmobile.com", "", "", NULL)); 5 | 6 | SYSTEM_MODE(MANUAL); 7 | SYSTEM_THREAD(ENABLED); 8 | 9 | SerialLogHandler logHandler; 10 | 11 | const unsigned long STARTUP_WAIT_TIME_MS = 4000; 12 | const unsigned long MODEM_ON_WAIT_TIME_MS = 4000; 13 | 14 | // Forward declarations 15 | void cellularScan(); 16 | void buttonHandler(system_event_t event, int data); 17 | 18 | enum State { 19 | STARTUP_WAIT_STATE, 20 | MODEM_ON_STATE, 21 | MODEM_ON_WAIT_STATE, 22 | RUN_TEST_STATE, 23 | COPS_STATE, 24 | DONE_STATE, 25 | IDLE_WAIT_STATE 26 | }; 27 | State state = STARTUP_WAIT_STATE; 28 | unsigned long stateTime = 0; 29 | bool buttonClicked = false; 30 | CellularHelperEnvironmentResponseStatic<32> envResp; 31 | 32 | void setup() { 33 | Serial.begin(9600); 34 | System.on(button_click, buttonHandler); 35 | } 36 | 37 | void loop() { 38 | switch(state) { 39 | case STARTUP_WAIT_STATE: 40 | // This delay is to give you time to connect to the serial port 41 | if (millis() - stateTime >= STARTUP_WAIT_TIME_MS) { 42 | stateTime = millis(); 43 | state = MODEM_ON_STATE; 44 | } 45 | break; 46 | 47 | case MODEM_ON_STATE: 48 | buttonClicked = false; 49 | Serial.println("turning on modem..."); 50 | Cellular.on(); 51 | state = MODEM_ON_WAIT_STATE; 52 | stateTime = millis(); 53 | break; 54 | 55 | case MODEM_ON_WAIT_STATE: 56 | // In system threaded mode you need to wait a little while after turning on the 57 | // cellular mode before it will respond. That's what MODEM_ON_WAIT_TIME_MS is for. 58 | if (millis() - stateTime >= MODEM_ON_WAIT_TIME_MS) { 59 | state = RUN_TEST_STATE; 60 | stateTime = millis(); 61 | break; 62 | } 63 | break; 64 | 65 | case RUN_TEST_STATE: 66 | cellularScan(); 67 | state = DONE_STATE; 68 | break; 69 | 70 | case COPS_STATE: 71 | break; 72 | 73 | case DONE_STATE: 74 | Serial.println("tests complete!"); 75 | Serial.println("press the MODE button to repeat test"); 76 | buttonClicked = false; 77 | state = IDLE_WAIT_STATE; 78 | break; 79 | 80 | case IDLE_WAIT_STATE: 81 | if (buttonClicked) { 82 | buttonClicked = false; 83 | state = RUN_TEST_STATE; 84 | } 85 | break; 86 | } 87 | } 88 | 89 | class OperatorName { 90 | public: 91 | int mcc; 92 | int mnc; 93 | String name; 94 | }; 95 | 96 | class CellularHelperCOPNResponse : public CellularHelperCommonResponse { 97 | public: 98 | CellularHelperCOPNResponse(); 99 | 100 | void requestOperator(CellularHelperEnvironmentCellData *data); 101 | void requestOperator(int mcc, int mnc); 102 | void checkOperator(char *buf); 103 | const char *getOperatorName(int mcc, int mnc) const; 104 | 105 | virtual int parse(int type, const char *buf, int len); 106 | 107 | // Maximum number of operator names that can be looked up 108 | static const size_t MAX_OPERATORS = 16; 109 | 110 | private: 111 | size_t numOperators; 112 | OperatorName operators[MAX_OPERATORS]; 113 | }; 114 | CellularHelperCOPNResponse copnResp; 115 | 116 | 117 | CellularHelperCOPNResponse::CellularHelperCOPNResponse() : numOperators(0) { 118 | 119 | } 120 | 121 | void CellularHelperCOPNResponse::requestOperator(CellularHelperEnvironmentCellData *data) { 122 | if (data && data->isValid(true)) { 123 | requestOperator(data->mcc, data->mnc); 124 | } 125 | } 126 | 127 | void CellularHelperCOPNResponse::requestOperator(int mcc, int mnc) { 128 | for(size_t ii = 0; ii < numOperators; ii++) { 129 | if (operators[ii].mcc == mcc && operators[ii].mnc == mnc) { 130 | // Already requested 131 | return; 132 | } 133 | } 134 | if (numOperators < MAX_OPERATORS) { 135 | // There is room to request another 136 | operators[numOperators].mcc = mcc; 137 | operators[numOperators].mnc = mnc; 138 | numOperators++; 139 | } 140 | } 141 | 142 | const char *CellularHelperCOPNResponse::getOperatorName(int mcc, int mnc) const { 143 | for(size_t ii = 0; ii < numOperators; ii++) { 144 | if (operators[ii].mcc == mcc && operators[ii].mnc == mnc) { 145 | return operators[ii].name.c_str(); 146 | } 147 | } 148 | return "unknown"; 149 | } 150 | 151 | 152 | void CellularHelperCOPNResponse::checkOperator(char *buf) { 153 | if (buf[0] == '"') { 154 | char *numStart = &buf[1]; 155 | char *numEnd = strchr(numStart, '"'); 156 | if (numEnd && ((numEnd - numStart) == 6)) { 157 | char temp[4]; 158 | temp[3] = 0; 159 | strncpy(temp, numStart, 3); 160 | int mcc = atoi(temp); 161 | 162 | strncpy(temp, numStart + 3, 3); 163 | int mnc = atoi(temp); 164 | 165 | *numEnd = 0; 166 | char *nameStart = strchr(numEnd + 1, '"'); 167 | if (nameStart) { 168 | nameStart++; 169 | char *nameEnd = strchr(nameStart, '"'); 170 | if (nameEnd) { 171 | *nameEnd = 0; 172 | 173 | // Log.info("mcc=%d mnc=%d name=%s", mcc, mnc, nameStart); 174 | 175 | for(size_t ii = 0; ii < numOperators; ii++) { 176 | if (operators[ii].mcc == mcc && operators[ii].mnc == mnc) { 177 | operators[ii].name = String(nameStart); 178 | } 179 | } 180 | } 181 | } 182 | } 183 | } 184 | } 185 | 186 | 187 | int CellularHelperCOPNResponse::parse(int type, const char *buf, int len) { 188 | if (enableDebug) { 189 | logCellularDebug(type, buf, len); 190 | } 191 | if (type == TYPE_PLUS) { 192 | // Copy to temporary string to make processing easier 193 | char *copy = (char *) malloc(len + 1); 194 | if (copy) { 195 | strncpy(copy, buf, len); 196 | copy[len] = 0; 197 | 198 | /* 199 | 0000018684 [app] INFO: +COPN: "901012","MCP Maritime Com"\r\n 200 | 0000018694 [app] INFO: cellular response type=TYPE_PLUS len=28 201 | 0000018694 [app] INFO: \r\n 202 | 0000018695 [app] INFO: +COPN: "901021","Seanet"\r\n 203 | 0000018705 [app] INFO: cellular response type=TYPE_ERROR len=39 204 | 0000018705 [app] INFO: \r\n 205 | * 206 | */ 207 | 208 | char *start = strstr(copy, "\n+COPN: "); 209 | if (start) { 210 | start += 8; // length of COPN string 211 | 212 | char *end = strchr(start, '\r'); 213 | if (end) { 214 | *end = 0; 215 | 216 | checkOperator(start); 217 | } 218 | } 219 | 220 | free(copy); 221 | } 222 | } 223 | return WAIT; 224 | } 225 | 226 | void printCellData(CellularHelperEnvironmentCellData *data) { 227 | const char *whichG = data->isUMTS ? "3G" : "2G"; 228 | 229 | // Log.info("mcc=%d mnc=%d", data->mcc, data->mnc); 230 | 231 | const char *operatorName = copnResp.getOperatorName(data->mcc, data->mnc); 232 | 233 | Serial.printlnf("%s %s %s %d bars (%03d%03d)", whichG, operatorName, data->getBandString().c_str(), data->getBars(), data->mcc, data->mnc); 234 | } 235 | 236 | void cellularScan() { 237 | Log.info("starting cellular scan..."); 238 | 239 | // envResp.enableDebug = true; 240 | envResp.clear(); 241 | 242 | // Command may take up to 3 minutes to execute! 243 | envResp.resp = Cellular.command(CellularHelperClass::responseCallback, (void *)&envResp, 360000, "AT+COPS=5\r\n"); 244 | if (envResp.resp == RESP_OK) { 245 | envResp.logResponse(); 246 | 247 | copnResp.requestOperator(&envResp.service); 248 | if (envResp.neighbors) { 249 | for(size_t ii = 0; ii < envResp.numNeighbors; ii++) { 250 | copnResp.requestOperator(&envResp.neighbors[ii]); 251 | } 252 | } 253 | } 254 | 255 | 256 | Log.info("looking up operator names..."); 257 | 258 | copnResp.enableDebug = false; 259 | copnResp.resp = Cellular.command(CellularHelperClass::responseCallback, (void *)&copnResp, 120000, "AT+COPN\r\n"); 260 | 261 | Log.info("results..."); 262 | 263 | printCellData(&envResp.service); 264 | if (envResp.neighbors) { 265 | for(size_t ii = 0; ii < envResp.numNeighbors; ii++) { 266 | if (envResp.neighbors[ii].isValid(true /* ignoreCI */)) { 267 | printCellData(&envResp.neighbors[ii]); 268 | } 269 | } 270 | } 271 | 272 | } 273 | 274 | 275 | void buttonHandler(system_event_t event, int param) { 276 | // int clicks = system_button_clicks(param); 277 | buttonClicked = true; 278 | } 279 | -------------------------------------------------------------------------------- /examples/3-select-carrier/3-select-carrier.cpp: -------------------------------------------------------------------------------- 1 | #include "Particle.h" 2 | 3 | #include "CellularHelper.h" 4 | 5 | SYSTEM_MODE(SEMI_AUTOMATIC); 6 | SYSTEM_THREAD(ENABLED); 7 | 8 | SerialLogHandler logHandler(LOG_LEVEL_TRACE); 9 | 10 | 11 | void setup() { 12 | Serial.begin(); 13 | 14 | // Wait until the USB serial is connected or for 4 seconds. This is only for 15 | // debugging purposes so you can monitor the log messages. 16 | waitFor(Serial.isConnected, 4000); 17 | 18 | // The cellular modem must be turned on before using selectOperator. This version 19 | // is preferable to Cellular.on() if you are using SYSTEM_THREAD(ENABLED) because 20 | // the Cellular.on() method does not block and there's no way to know when it 21 | // has been turned on. 22 | cellular_on(NULL); 23 | 24 | // Select the operator using the MCC/MNC string. For example: 25 | // "310410" = AT&T 26 | // "310260" = T-Mobile 27 | bool bResult = CellularHelper.selectOperator("310260"); 28 | 29 | Log.info("selectOperator returned %d", bResult); 30 | 31 | // We only do a Cellular.connect() here because doing a Particle.connect() generates 32 | // a lot of log messages obscuring the rest of the content. You may prefer to use 33 | // Particle.connect() instead. 34 | Cellular.connect(); 35 | waitUntil(Cellular.ready); 36 | 37 | String longName = CellularHelper.getOperatorName(); 38 | 39 | Log.info("current operator=%s", longName.c_str()); 40 | } 41 | 42 | void loop() { 43 | 44 | } 45 | -------------------------------------------------------------------------------- /examples/4-cell-locate/4-cell-locate.cpp: -------------------------------------------------------------------------------- 1 | #include "CellularHelper.h" 2 | 3 | SerialLogHandler logHandler(LOG_LEVEL_TRACE); 4 | 5 | 6 | const unsigned long CHECK_PERIOD = 120000; 7 | unsigned long lastCheck = 0 ; 8 | 9 | void setup() { 10 | Serial.begin(); 11 | } 12 | 13 | void loop() { 14 | if (millis() - lastCheck >= CHECK_PERIOD) { 15 | Log.info("about to get location using CellLocate"); 16 | 17 | CellularHelperLocationResponse loc = CellularHelper.getLocation(120000); 18 | 19 | Log.info(loc.toString().c_str()); 20 | Particle.publish("location", loc.toString().c_str(), PRIVATE); 21 | 22 | lastCheck = millis(); 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /examples/5-cellular-global-identity/5-cellular-global-identity.cpp: -------------------------------------------------------------------------------- 1 | #include "Particle.h" 2 | 3 | SerialLogHandler logHandler; 4 | 5 | // This example requires Device OS 1.2.1 or later! 6 | 7 | SYSTEM_THREAD(ENABLED); 8 | 9 | const unsigned long CHECK_PERIOD_MS = 10000; 10 | unsigned long lastCheck = 0; 11 | 12 | void setup() { 13 | 14 | } 15 | 16 | void loop() { 17 | if (millis() - lastCheck >= CHECK_PERIOD_MS) { 18 | lastCheck = millis(); 19 | 20 | // Using CellularGlobalIdentity works on Device OS 1.2.1 and later on all devices and modems. 21 | // The information is cached by Device OS so you can call it relatively frequently without 22 | // much of a performance penalty. The data will update as you move between cells automatically. 23 | // It only works once cloud connected, however. It will return error -1200 if you are only 24 | // connected to cellular and not the cloud. 25 | 26 | CellularGlobalIdentity cgi = {0}; 27 | cgi.size = sizeof(CellularGlobalIdentity); 28 | cgi.version = CGI_VERSION_LATEST; 29 | 30 | cellular_result_t res = cellular_global_identity(&cgi, NULL); 31 | if (res == SYSTEM_ERROR_NONE) { 32 | Log.info("cid=%d lac=%u mcc=%d mnc=%d", cgi.cell_id, cgi.location_area_code, cgi.mobile_country_code, cgi.mobile_network_code); 33 | } 34 | else { 35 | Log.info("cellular_global_identity failed %d", res); 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /examples/6-no-cellular-test/6-no-cellular-test.cpp: -------------------------------------------------------------------------------- 1 | #include "Particle.h" 2 | 3 | // The CellularHelper library is designed so it can be included in Wi-Fi projects (Photon, P1, Argon). 4 | // It doesn't do anything, but it allows your code to check if it's a cellular device and then make 5 | // calls into the library if it wants to, without having to create two separate projects, one for 6 | // Cellular and one for Wi-Fi. 7 | #include "CellularHelper.h" 8 | 9 | void setup() { 10 | 11 | } 12 | 13 | void loop() { 14 | 15 | } -------------------------------------------------------------------------------- /library.properties: -------------------------------------------------------------------------------- 1 | # Fill in information about your library then remove # from the start of lines 2 | # https://docs.particle.io/guide/tools-and-features/libraries/#library-properties-fields 3 | name=CellularHelper 4 | version=0.1.0 5 | author=rickkas7@rickkas7.com 6 | license=MIT 7 | sentence=Handy utility functions for cellular devices 8 | # paragraph=a longer description of this library 9 | url=https://github.com/rickkas7/CellularHelper 10 | repository=https://github.com/rickkas7/CellularHelper.git 11 | architectures=particle-electron 12 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CellularHelper", 3 | "version": "0.0.1", 4 | "description": "Travis build script", 5 | "private": true, 6 | "scripts": { 7 | "test": "node node_modules/@rickkas7/particle-builder/particle-builder.js ." 8 | }, 9 | "author": "rickkas7@github.com", 10 | "contributors": [ 11 | ], 12 | "license": "Apache Version 2.0", 13 | "dependencies": { 14 | "@rickkas7/particle-builder": "0.0.4" 15 | }, 16 | "engines": { 17 | "node": ">=4.3.2" 18 | } 19 | } -------------------------------------------------------------------------------- /verification.txt: -------------------------------------------------------------------------------- 1 | This library should work with the following Particle cellular devices: 2 | 3 | - Electron 2G (G350) 4 | - Electron 3G Americas (U260) 5 | - Electron 3G Europe/Asia/Africa (U270) 6 | - Electron Global (U201) 7 | - Electron LTE (R410M) 8 | 9 | - E Series 2G/3G (U201) 10 | - E Series LTE (R410M) 11 | 12 | - Boron 2G/3G (U201) 13 | - Boron LTE (R410M) 14 | 15 | - B Series B402 SoM (R410M) 16 | 17 | To test the library, run the 1-simple example and monitor the USB debug serial output. 18 | 19 | Some features are only supported on some devices. For example, the cell locate 20 | example will not run on u-blox SARA-R410M-02B devices (LTE Cat M1). 21 | 22 | --------------------------------------------------------------------------------