Advertisement
Guest User

Untitled

a guest
Nov 13th, 2017
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 47.55 KB | None | 0 0
  1. package com.planetcellinc.routertest.router;
  2.  
  3. import android.content.Context;
  4. import android.support.annotation.NonNull;
  5. import android.support.annotation.Nullable;
  6. import android.util.Log;
  7. import android.widget.Toast;
  8.  
  9. import com.android.volley.DefaultRetryPolicy;
  10. import com.android.volley.Request;
  11. import com.android.volley.Response;
  12. import com.android.volley.VolleyError;
  13. import com.android.volley.toolbox.JsonObjectRequest;
  14. import com.planetcellinc.routertest.Constants;
  15. import com.planetcellinc.routertest.MySingleton;
  16. import com.planetcellinc.routertest.StatusCodes;
  17. import com.planetcellinc.routertest.utils.JsonUtils;
  18. import com.planetcellinc.routertest.utils.UrlUtils;
  19.  
  20. import org.json.JSONArray;
  21. import org.json.JSONException;
  22. import org.json.JSONObject;
  23.  
  24. /**
  25. * Created by Benjamin Humpton on 11/10/17.
  26. * ©2017 Benjamin Humpton, Planet Cellular Inc.
  27. */
  28.  
  29. public class DeviceBasicSettings {
  30.  
  31. private static final String TAG = DeviceBasicSettings.class.getSimpleName();
  32.  
  33. private static final int TYPE_GET_CPE_DEVICE_INFORMATION = 0;
  34. private static final int TYPE_FIRMWARE_OTA_UPDATE = 1;
  35. private static final int TYPE_REBOOT = 2;
  36. private static final int TYPE_RESET_TO_FACTORY_SETTINGS = 3;
  37. private static final int TYPE_LOGIN = 4;
  38. private static final int TYPE_LOGOUT = 5;
  39. private static final int TYPE_MODIFY_LOGIN_PASSWORD = 6;
  40. private static final int TYPE_GET_NETWORK_INFORMATION = 7;
  41. private static final int TYPE_GET_DATA_STATISTICS_INFORMATION = 8;
  42. private static final int TYPE_RESET_DATA_STATISTICS = 9;
  43. private static final int TYPE_GET_CONNECTED_CLIENTS_INFORMATION = 10;
  44. private static final int TYPE_GET_DIAL_STATUS = 11;
  45. private static final int TYPE_GET_MOBILE_DATA_SWITCH_STATUS = 12;
  46. private static final int TYPE_CONFIG_MOBILE_DATA_SWITCH = 13;
  47. private static final int TYPE_GET_ROAMING_SWITCH_STATUS = 14;
  48. private static final int TYPE_CONFIG_ROAMING_SWITCH = 15;
  49. private static final int TYPE_GET_APN_PROFILE_SETTINGS = 16;
  50. private static final int TYPE_ADD_NEW_APN_PROFILE = 17;
  51. private static final int TYPE_MODIFY_PROFILE_SETTINGS = 18;
  52. private static final int TYPE_DELETE_APN_PROFILE = 19;
  53. private static final int TYPE_GET_SIM_CARD_STATUS = 20;
  54. private static final int TYPE_GET_RF_INFORMATION = 21;
  55.  
  56.  
  57. // network type
  58. private static final int NETWORK_TYPE_NO_SERVICES = 0;
  59. private static final int NETWORK_TYPE_CDMA = 1;
  60. private static final int NETWORK_TYPE_EVDO = 2;
  61. private static final int NETWORK_TYPE_GSM = 3;
  62. private static final int NETWORK_TYPE_WCDMA = 4;
  63. private static final int NETWORK_TYPE_LTE = 5;
  64. private static final int NETWORK_TYPE_TDSCDMA = 6;
  65. private static final int NETWORK_TYPE_LIMITED_CDMA = 7;
  66. private static final int NETWORK_TYPE_LIMITED_EVDO = 8;
  67. private static final int NETWORK_TYPE_LIMITED_GSM = 9;
  68. private static final int NETWORK_TYPE_LIMITED_WCDMA = 10;
  69. private static final int NETWORK_TYPE_LIMITED_LTE = 11;
  70. private static final int NETWORK_TYPE_LIMITED_TDSCDMA = 12;
  71. private static final int NETWORK_TYPE_LIMITED_REGIONAL_CDMA = 13;
  72. private static final int NETWORK_TYPE_LIMITED_REGIONAL_EVDO = 14;
  73. private static final int NETWORK_TYPE_LIMITED_REGIONAL_GSM = 15;
  74. private static final int NETWORK_TYPE_LIMITED_REGIONAL_WCDMA = 16;
  75. private static final int NETWORK_TYPE_LIMITED_REGIONAL_LTE = 17;
  76. private static final int NETWORK_TYPE_LIMITED_REGIONAL_TDSCDMA = 18;
  77.  
  78. // roaming status
  79. private static final int ROAMING_STATUS_ROAM_OFF = 0;
  80. private static final int ROAMING_STATUS_ROAMING = 1;
  81. private static final int ROAMING_STATUS_ROAM_BLINKING = 2;
  82. private static final int ROAMING_STATUS_ROAM_OUT_OF_THE_NEIGHBORHOOD = 3;
  83. private static final int ROAMING_STATUS_ROAM_OUT_OF_THE_BUILDING = 4;
  84. private static final int ROAMING_STATUS_ROAM_PREFERRED_SYSTEM = 5;
  85. private static final int ROAMING_STATUS_ROAM_AVAILABLE_SYSTEM = 6;
  86. private static final int ROAMING_STATUS_ROAM_ALLIANCE_PARTNER = 7;
  87. private static final int ROAMING_STATUS_ROAM_PREMIUM_PARTNER = 8;
  88. private static final int ROAMING_STATUS_ROAM_FULL_SERVICE = 9;
  89. private static final int ROAMING_STATUS_ROAM_PARTIAL_SERVICE = 10;
  90. private static final int ROAMING_STATUS_ROAM_BANNER_IS_ON = 11;
  91. private static final int ROAMING_STATUS_ROAM_BANNER_IS_OFF = 12;
  92.  
  93. // dial status
  94. private static final int DIAL_STATUS_DIALING = 100001;
  95. private static final int DIAL_STATUS_CONNECTED = 100002;
  96. private static final int DIAL_STATUS_DISCONNECTING = 100003;
  97. private static final int DIAL_STATUS_DISCONNECTED = 100004;
  98.  
  99. // mobile data switch status
  100. private static final int MOBILE_DATA_SWITCH_STATUS_CLOSED = 0;
  101. private static final int MOBILE_DATA_SWITCH_STATUS_OPEN = 1;
  102.  
  103. // roaming switch status
  104. private static final int ROAMING_SWITCH_STATUS_CLOSED = 0;
  105. private static final int ROAMING_SWITCH_STATUS_OPEN = 1;
  106.  
  107. // ip type
  108. private static final int IP_TYPE_IPV4 = 4;
  109. private static final int IP_TYPE_IPV6 = 6;
  110. private static final int IP_TYPE_V4V6 = 10;
  111.  
  112. // sim card status
  113. private static final int SIM_CARD_STATUS_NO_SIM_CARD = 0;
  114. private static final int SIM_CARD_STATUS_SIM_CARD_PIN_LOCK = 1;
  115. private static final int SIM_CARD_STATUS_SIM_CARD_PUK_LOCK = 2;
  116. private static final int SIM_CARD_STATUS_SIM_CARD_READY = 144;
  117.  
  118. private Context mContext;
  119.  
  120. public DeviceBasicSettings(Context context) {
  121. mContext = context;
  122. }
  123.  
  124. private void startJsonRequest(@NonNull String url, @Nullable JSONObject requestParams, final int type, final int timeout) {
  125. if (!UrlUtils.isUrlValid(url)) {
  126. throw new IllegalArgumentException("Invalid URL");
  127. } else {
  128. url = UrlUtils.formatUrl(url);
  129.  
  130. JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST, url, requestParams, new Response.Listener<JSONObject>() {
  131. @Override
  132. public void onResponse(JSONObject response) {
  133. handleResponse(response, type);
  134. }
  135. }, new Response.ErrorListener() {
  136. @Override
  137. public void onErrorResponse(VolleyError error) {
  138. handleError(error, type);
  139. }
  140. });
  141.  
  142. jsObjRequest.setRetryPolicy(new DefaultRetryPolicy(timeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
  143.  
  144. MySingleton.getInstance(mContext).addToRequestQueue(jsObjRequest);
  145. }
  146. }
  147.  
  148. private void handleResponse(JSONObject response, int type) {
  149. if (response != null) {
  150. try {
  151. if (response.has("retcode")) {
  152. int retcode = response.getInt("retcode");
  153. Log.d(TAG, "Request of type: " + String.valueOf(type) + " - status: " + StatusCodes.getStatus(retcode));
  154. }
  155. switch (type) {
  156. case TYPE_GET_CPE_DEVICE_INFORMATION:
  157. // software version
  158. if (response.has("softwareVersion")) {
  159. String softwareVersion = response.getString("softwareVersion");
  160. Toast.makeText(mContext, "Software version: " + softwareVersion, Toast.LENGTH_SHORT).show();
  161. } else {
  162. Log.e(TAG, "response does not have \"softwareVersion\"");
  163. }
  164. // software extend version
  165. if (response.has("softwareVersionEx")) {
  166. String softwareVersionEx = response.getString("softwareVersionEx");
  167. Toast.makeText(mContext, "Software extend version: " + softwareVersionEx, Toast.LENGTH_SHORT).show();
  168. } else {
  169. Log.e(TAG, "response does not have \"softwareVersionEx\"");
  170. }
  171. // hardware version
  172. if (response.has("hardwareVersion")) {
  173. String hardwareVersion = response.getString("hardwareVersion");
  174. Toast.makeText(mContext, "Hardware version: " + hardwareVersion, Toast.LENGTH_SHORT).show();
  175. } else {
  176. Log.e(TAG, "response does not have \"hardwareVersion\"");
  177. }
  178. // device name
  179. if (response.has("deviceName")) {
  180. String deviceName = response.getString("deviceName");
  181. Toast.makeText(mContext, "Device name: " + deviceName, Toast.LENGTH_SHORT).show();
  182. } else {
  183. Log.e(TAG, "response does not have \"deviceName\"");
  184. }
  185. // mac address
  186. if (response.has("lanMac")) {
  187. String lanMac = response.getString("lanMac");
  188. Toast.makeText(mContext, "Mac address: " + lanMac, Toast.LENGTH_SHORT).show();
  189. } else {
  190. Log.e(TAG, "response does not have \"lanMac\"");
  191. }
  192. // imei
  193. if (response.has("imei")) {
  194. String imei = response.getString("imei");
  195. Toast.makeText(mContext, "IMEI: " + imei, Toast.LENGTH_SHORT).show();
  196. } else {
  197. Log.e(TAG, "response does not have \"imei\"");
  198. }
  199. // meid
  200. if (response.has("meid")) {
  201. String meid = response.getString("meid");
  202. Toast.makeText(mContext, "MEID: " + meid, Toast.LENGTH_SHORT).show();
  203. } else {
  204. Log.e(TAG, "response does not have \"meid\"");
  205. }
  206. break;
  207. case TYPE_FIRMWARE_OTA_UPDATE:
  208. // TODO: something
  209. break;
  210. case TYPE_REBOOT:
  211. // TODO: something
  212. break;
  213. case TYPE_RESET_TO_FACTORY_SETTINGS:
  214. // TODO: something
  215. break;
  216. case TYPE_LOGIN:
  217. // TODO: something
  218. break;
  219. case TYPE_LOGOUT:
  220. // TODO: something
  221. break;
  222. case TYPE_MODIFY_LOGIN_PASSWORD:
  223. // TODO: something
  224. break;
  225. case TYPE_GET_NETWORK_INFORMATION:
  226. // carrier name
  227. if (response.has("operatorName")) {
  228. String operatorName = response.getString("operatorName");
  229. Toast.makeText(mContext, "Carrier name: " + operatorName, Toast.LENGTH_SHORT).show();
  230. } else {
  231. Log.e(TAG, "response does not have \"operatorName\"");
  232. }
  233. // network type
  234. if (response.has("networkType")) {
  235. int networkType = response.getInt("networkType");
  236. String msg;
  237. switch (networkType) {
  238. case NETWORK_TYPE_NO_SERVICES:
  239. msg = "NO SERVICES";
  240. break;
  241. case NETWORK_TYPE_CDMA:
  242. msg = "CDMA";
  243. break;
  244. case NETWORK_TYPE_EVDO:
  245. msg = "EVDO";
  246. break;
  247. case NETWORK_TYPE_GSM:
  248. msg = "GSM";
  249. break;
  250. case NETWORK_TYPE_WCDMA:
  251. msg = "WCDMA";
  252. break;
  253. case NETWORK_TYPE_LTE:
  254. msg = "LTE";
  255. break;
  256. case NETWORK_TYPE_TDSCDMA:
  257. msg = "TDSCDMA";
  258. break;
  259. case NETWORK_TYPE_LIMITED_CDMA:
  260. msg = "LIMITED CDMA";
  261. break;
  262. case NETWORK_TYPE_LIMITED_EVDO:
  263. msg = "LIMITED EVDO";
  264. break;
  265. case NETWORK_TYPE_LIMITED_GSM:
  266. msg = "LIMITED GSM";
  267. break;
  268. case NETWORK_TYPE_LIMITED_WCDMA:
  269. msg = "LIMITED WCDMA";
  270. break;
  271. case NETWORK_TYPE_LIMITED_LTE:
  272. msg = "LIMITED LTE";
  273. break;
  274. case NETWORK_TYPE_LIMITED_TDSCDMA:
  275. msg = "LIMITED TDSCDMA";
  276. break;
  277. case NETWORK_TYPE_LIMITED_REGIONAL_CDMA:
  278. msg = "LIMITED REGIONAL CDMA";
  279. break;
  280. case NETWORK_TYPE_LIMITED_REGIONAL_EVDO:
  281. msg = "LIMITED REGIONAL EVDO";
  282. break;
  283. case NETWORK_TYPE_LIMITED_REGIONAL_GSM:
  284. msg = "LIMITED REGIONAL GSM";
  285. break;
  286. case NETWORK_TYPE_LIMITED_REGIONAL_WCDMA:
  287. msg = "LIMITED REGIONAL WCDMA";
  288. break;
  289. case NETWORK_TYPE_LIMITED_REGIONAL_LTE:
  290. msg = "LIMITED REGIONAL LTE";
  291. break;
  292. case NETWORK_TYPE_LIMITED_REGIONAL_TDSCDMA:
  293. msg = "LIMITED REGIONAL TDSCDMA";
  294. break;
  295. default:
  296. msg = "UNKNOWN";
  297. break;
  298. }
  299. Toast.makeText(mContext, "Network type: " + msg, Toast.LENGTH_SHORT).show();
  300. } else {
  301. Log.e(TAG, "response does not have \"networkType\"");
  302. }
  303. // signal level
  304. if (response.has("sigLevel")) {
  305. int sigLevel = response.getInt("sigLevel");
  306. // should only return values between 0 and 5
  307. if (sigLevel < 0 || sigLevel > 5) {
  308. sigLevel = -1;
  309. }
  310. Toast.makeText(mContext, "signal level: " + String.valueOf(sigLevel), Toast.LENGTH_SHORT).show();
  311. } else {
  312. Log.e(TAG, "response does not have \"sigLevel\"");
  313. }
  314. // roaming status
  315. if (response.has("roamStatus")) {
  316. int roamStatus = response.getInt("roamStatus");
  317. String msg;
  318. switch (roamStatus) {
  319. case ROAMING_STATUS_ROAM_OFF:
  320. msg = "ROAM OFF";
  321. break;
  322. case ROAMING_STATUS_ROAMING:
  323. msg = "ROAMING";
  324. break;
  325. case ROAMING_STATUS_ROAM_BLINKING:
  326. msg = "ROAM BLINKING";
  327. break;
  328. case ROAMING_STATUS_ROAM_OUT_OF_THE_NEIGHBORHOOD:
  329. msg = "ROAM OUT OF THE NEIGHBORHOOD";
  330. break;
  331. case ROAMING_STATUS_ROAM_OUT_OF_THE_BUILDING:
  332. msg = "ROAM OUT OF THE BUILDING";
  333. break;
  334. case ROAMING_STATUS_ROAM_PREFERRED_SYSTEM:
  335. msg = "ROAM PREFERRED SYSTEM";
  336. break;
  337. case ROAMING_STATUS_ROAM_AVAILABLE_SYSTEM:
  338. msg = "ROAM AVAILABLE SYSTEM";
  339. break;
  340. case ROAMING_STATUS_ROAM_ALLIANCE_PARTNER:
  341. msg = "ROAM ALLIANCE PARTNER";
  342. break;
  343. case ROAMING_STATUS_ROAM_PREMIUM_PARTNER:
  344. msg = "ROAM PREMIUM PARTNER";
  345. break;
  346. case ROAMING_STATUS_ROAM_FULL_SERVICE:
  347. msg = "ROAM FULL SERVICE";
  348. break;
  349. case ROAMING_STATUS_ROAM_PARTIAL_SERVICE:
  350. msg = "ROAM PARTIAL SERVICE";
  351. break;
  352. case ROAMING_STATUS_ROAM_BANNER_IS_ON:
  353. msg = "ROAM BANNER IS ON";
  354. break;
  355. case ROAMING_STATUS_ROAM_BANNER_IS_OFF:
  356. msg = "ROAM BANNER IS OFF";
  357. break;
  358. default:
  359. msg = "UNKNOWN";
  360. break;
  361. }
  362. Toast.makeText(mContext, "Roaming status: " + roamStatus, Toast.LENGTH_SHORT).show();
  363. } else {
  364. Log.e(TAG, "response does not have \"roamStatus\"");
  365. }
  366. break;
  367. case TYPE_GET_DATA_STATISTICS_INFORMATION:
  368. // UL data
  369. if (response.has("flowtx")) {
  370. String flowtx = response.getString("flowtx");
  371. Toast.makeText(mContext, "UL data: " + flowtx, Toast.LENGTH_SHORT).show();
  372. } else {
  373. Log.e(TAG, "response does not have \"flowtx\"");
  374. }
  375. // DL data
  376. if (response.has("flowrx")) {
  377. String flowrx = response.getString("flowrx");
  378. Toast.makeText(mContext, "DL data: " + flowrx, Toast.LENGTH_SHORT).show();
  379. } else {
  380. Log.e(TAG, "response does not have \"flowrx\"");
  381. }
  382. // total data
  383. if (response.has("flowtotal")) {
  384. String flowtotal = response.getString("flowtotal");
  385. Toast.makeText(mContext, "Total data: " + flowtotal, Toast.LENGTH_SHORT).show();
  386. } else {
  387. Log.e(TAG, "response does not have \"flowtotal\"");
  388. }
  389. break;
  390. case TYPE_RESET_DATA_STATISTICS:
  391. // TODO: something
  392. break;
  393. case TYPE_GET_CONNECTED_CLIENTS_INFORMATION:
  394. if (response.has("clientList")) {
  395. JSONArray clientList = response.getJSONArray("clientList");
  396. Toast.makeText(mContext, "clientList length: " + String.valueOf(clientList.length()), Toast.LENGTH_SHORT).show();
  397. for (int i = 0; i < clientList.length(); i++) {
  398. JSONObject obj = clientList.getJSONObject(i);
  399. // mac address
  400. if (obj.has("mac")) {
  401. String mac = obj.getString("mac");
  402. Toast.makeText(mContext, "object " + String.valueOf(i) + " mac address: " + mac, Toast.LENGTH_SHORT).show();
  403. } else {
  404. Log.e(TAG, "object " + String.valueOf(i) + " does not have \"mac\"");
  405. }
  406. // allocated ip address
  407. if (obj.has("ip")) {
  408. String ip = obj.getString("ip");
  409. Toast.makeText(mContext, "object " + String.valueOf(i) + " ip address: " + ip, Toast.LENGTH_SHORT).show();
  410. } else {
  411. Log.e(TAG, "object " + String.valueOf(i) + " does not have \"ip\"");
  412. }
  413. // device name
  414. if (obj.has("hostname")) {
  415. String hostname = obj.getString("hostname");
  416. Toast.makeText(mContext, "object " + String.valueOf(i) + " device name: " + hostname, Toast.LENGTH_SHORT).show();
  417. } else {
  418. Log.e(TAG, "object " + String.valueOf(i) + " does not have \"hostname\"");
  419. }
  420. // device type
  421. if (obj.has("type")) {
  422. String devicetype = obj.getString("type");
  423. Toast.makeText(mContext, "object " + String.valueOf(i) + " device type: " + devicetype, Toast.LENGTH_SHORT).show();
  424. } else {
  425. Log.e(TAG, "object " + String.valueOf(i) + " does not have \"type\"");
  426. }
  427. }
  428. } else {
  429. Log.e(TAG, "response does not have \"clientList\"");
  430. }
  431. break;
  432. case TYPE_GET_DIAL_STATUS:
  433. if (response.has("status")) {
  434. int status = response.getInt("status");
  435. String msg;
  436. switch (status) {
  437. case DIAL_STATUS_DIALING:
  438. msg = "DIALING";
  439. break;
  440. case DIAL_STATUS_CONNECTED:
  441. msg = "CONNECTED";
  442. break;
  443. case DIAL_STATUS_DISCONNECTING:
  444. msg = "DISCONNECTING";
  445. break;
  446. case DIAL_STATUS_DISCONNECTED:
  447. msg = "DISCONNECTED";
  448. break;
  449. default:
  450. msg = "UNKNOWN";
  451. break;
  452. }
  453. Toast.makeText(mContext, "dial status: " + msg, Toast.LENGTH_SHORT).show();
  454. } else {
  455. Log.e(TAG, "response does not have \"status\"");
  456. }
  457. break;
  458. case TYPE_GET_MOBILE_DATA_SWITCH_STATUS:
  459. if (response.has("status")) {
  460. int status = response.getInt("status");
  461. String msg;
  462. if (status == MOBILE_DATA_SWITCH_STATUS_CLOSED) {
  463. msg = "CLOSED";
  464. } else if (status == MOBILE_DATA_SWITCH_STATUS_OPEN) {
  465. msg = "OPEN";
  466. } else {
  467. msg = "UNKNOWN";
  468. }
  469. Toast.makeText(mContext, "mobile data switch status: " + msg, Toast.LENGTH_SHORT).show();
  470. } else {
  471. Log.e(TAG, "response does not have \"status\"");
  472. }
  473. break;
  474. case TYPE_CONFIG_MOBILE_DATA_SWITCH:
  475. // TODO: something
  476. break;
  477. case TYPE_GET_ROAMING_SWITCH_STATUS:
  478. if (response.has("status")) {
  479. int status = response.getInt("status");
  480. String msg;
  481. if (status == ROAMING_SWITCH_STATUS_CLOSED) {
  482. msg = "CLOSED";
  483. } else if (status == ROAMING_SWITCH_STATUS_OPEN) {
  484. msg = "OPEN";
  485. } else {
  486. msg = "UNKNOWN";
  487. }
  488. Toast.makeText(mContext, "allow roaming switch status: " + msg, Toast.LENGTH_SHORT).show();
  489. } else {
  490. Log.e(TAG, "response does not have \"status\"");
  491. }
  492. break;
  493. case TYPE_CONFIG_ROAMING_SWITCH:
  494. // TODO: something
  495. break;
  496. case TYPE_GET_APN_PROFILE_SETTINGS:
  497. // current used profile index
  498. if (response.has("curid")) {
  499. int curid = response.getInt("curid");
  500. Toast.makeText(mContext, "current used profile index: " + String.valueOf(curid), Toast.LENGTH_SHORT).show();
  501. } else {
  502. Log.e(TAG, "response does not have \"curid\"");
  503. }
  504. // profile list
  505. if (response.has("profileList")) {
  506. JSONArray profileList = response.getJSONArray("profileList");
  507. Toast.makeText(mContext, "profileList length: " + String.valueOf(profileList.length()), Toast.LENGTH_SHORT).show();
  508. for (int i = 0; i < profileList.length(); i++) {
  509. JSONObject obj = profileList.getJSONObject(i);
  510. // profile index
  511. if (obj.has("index")) {
  512. int index = obj.getInt("index");
  513. Toast.makeText(mContext, "object " + String.valueOf(i) + " profile index: " + String.valueOf(index), Toast.LENGTH_SHORT).show();
  514. } else {
  515. Log.e(TAG, "object " + String.valueOf(i) + " does not have \"index\"");
  516. }
  517. // user name
  518. if (obj.has("username")) {
  519. String username = obj.getString("username");
  520. Toast.makeText(mContext, "object " + String.valueOf(i) + " username: " + username, Toast.LENGTH_SHORT).show();
  521. } else {
  522. Log.e(TAG, "object " + String.valueOf(i) + " does not have \"username\"");
  523. }
  524. // password
  525. if (obj.has("password")) {
  526. String password = obj.getString("password");
  527. Toast.makeText(mContext, "object " + String.valueOf(i) + " password: " + password, Toast.LENGTH_SHORT).show();
  528. } else {
  529. Log.e(TAG, "object " + String.valueOf(i) + " does not have \"password\"");
  530. }
  531. // apn
  532. if (obj.has("apn")) {
  533. String apn = obj.getString("apn");
  534. Toast.makeText(mContext, "object " + String.valueOf(i) + " apn: " + apn, Toast.LENGTH_SHORT).show();
  535. } else {
  536. Log.e(TAG, "object " + String.valueOf(i) + " does not have \"apn\"");
  537. }
  538. // authorization of modify
  539. if (obj.has("readonly")) {
  540. int readonly = obj.getInt("readonly");
  541. Toast.makeText(mContext, "object " + String.valueOf(i) + " read only: " + String.valueOf(readonly), Toast.LENGTH_SHORT).show();
  542. } else {
  543. Log.e(TAG, "object " + String.valueOf(i) + " does not have \"readonly\"");
  544. }
  545. // authentication type
  546. if (obj.has("authmode")) {
  547. int authmode = obj.getInt("authmode");
  548. Toast.makeText(mContext, "object " + String.valueOf(i) + " authentication type: " + String.valueOf(authmode), Toast.LENGTH_SHORT).show();
  549. } else {
  550. Log.e(TAG, "object " + String.valueOf(i) + " does not have \"authmode\"");
  551. }
  552. // ip type
  553. if (obj.has("iptype")) {
  554. int iptype = obj.getInt("iptype");
  555. String msg;
  556. switch (iptype) {
  557. case IP_TYPE_IPV4:
  558. msg = "IPV4";
  559. break;
  560. case IP_TYPE_IPV6:
  561. msg = "IPV6";
  562. break;
  563. case IP_TYPE_V4V6:
  564. msg = "V4V6";
  565. break;
  566. default:
  567. msg = "UNKNOWN";
  568. break;
  569. }
  570. Toast.makeText(mContext, "object " + String.valueOf(i) + " ip type: " + msg, Toast.LENGTH_SHORT).show();
  571. } else {
  572. Log.e(TAG, "object " + String.valueOf(i) + " does not have \"iptype\"");
  573. }
  574. }
  575. }
  576. break;
  577. case TYPE_ADD_NEW_APN_PROFILE:
  578. // TODO: something
  579. break;
  580. case TYPE_MODIFY_PROFILE_SETTINGS:
  581. // TODO: something
  582. break;
  583. case TYPE_DELETE_APN_PROFILE:
  584. // TODO: something
  585. break;
  586. case TYPE_GET_SIM_CARD_STATUS:
  587. // sim card status
  588. if (response.has("status")) {
  589. int status = response.getInt("status");
  590. String msg;
  591. switch (status) {
  592. case SIM_CARD_STATUS_NO_SIM_CARD:
  593. msg = "NO SIM CARD";
  594. break;
  595. case SIM_CARD_STATUS_SIM_CARD_PIN_LOCK:
  596. msg = "SIM CARD PIN LOCK";
  597. break;
  598. case SIM_CARD_STATUS_SIM_CARD_PUK_LOCK:
  599. msg = "SIM CARD PUK LOCK";
  600. break;
  601. case SIM_CARD_STATUS_SIM_CARD_READY:
  602. msg = "SIM CARD READY";
  603. break;
  604. default:
  605. msg = "UNKNOWN";
  606. break;
  607. }
  608. Toast.makeText(mContext, "sim card status: " + msg, Toast.LENGTH_SHORT).show();
  609. } else {
  610. Log.e(TAG, "response does not have \"status\"");
  611. }
  612. // sim card imsi number
  613. if (response.has("imsi")) {
  614. String imsi = response.getString("imsi");
  615. Toast.makeText(mContext, "sim card imsi number: " + imsi, Toast.LENGTH_SHORT).show();
  616. } else {
  617. Log.e(TAG, "response does not have \"imsi\"");
  618. }
  619. break;
  620. case TYPE_GET_RF_INFORMATION:
  621. // network type
  622. if (response.has("mode")) {
  623. int mode = response.getInt("mode");
  624. String msg;
  625. switch (mode) {
  626. case NETWORK_TYPE_NO_SERVICES:
  627. msg = "NO SERVICES";
  628. break;
  629. case NETWORK_TYPE_CDMA:
  630. msg = "CDMA";
  631. break;
  632. case NETWORK_TYPE_EVDO:
  633. msg = "EVDO";
  634. break;
  635. case NETWORK_TYPE_GSM:
  636. msg = "GSM";
  637. break;
  638. case NETWORK_TYPE_WCDMA:
  639. msg = "WCDMA";
  640. break;
  641. case NETWORK_TYPE_LTE:
  642. msg = "LTE";
  643. break;
  644. case NETWORK_TYPE_TDSCDMA:
  645. msg = "TDSCDMA";
  646. break;
  647. case NETWORK_TYPE_LIMITED_CDMA:
  648. msg = "LIMITED CDMA";
  649. break;
  650. case NETWORK_TYPE_LIMITED_EVDO:
  651. msg = "LIMITED EVDO";
  652. break;
  653. case NETWORK_TYPE_LIMITED_GSM:
  654. msg = "LIMITED GSM";
  655. break;
  656. case NETWORK_TYPE_LIMITED_WCDMA:
  657. msg = "LIMITED WCDMA";
  658. break;
  659. case NETWORK_TYPE_LIMITED_LTE:
  660. msg = "LIMITED LTE";
  661. break;
  662. case NETWORK_TYPE_LIMITED_TDSCDMA:
  663. msg = "LIMITED TDSCDMA";
  664. break;
  665. case NETWORK_TYPE_LIMITED_REGIONAL_CDMA:
  666. msg = "LIMITED REGIONAL CDMA";
  667. break;
  668. case NETWORK_TYPE_LIMITED_REGIONAL_EVDO:
  669. msg = "LIMITED REGIONAL EVDO";
  670. break;
  671. case NETWORK_TYPE_LIMITED_REGIONAL_GSM:
  672. msg = "LIMITED REGIONAL GSM";
  673. break;
  674. case NETWORK_TYPE_LIMITED_REGIONAL_WCDMA:
  675. msg = "LIMITED REGIONAL WCDMA";
  676. break;
  677. case NETWORK_TYPE_LIMITED_REGIONAL_LTE:
  678. msg = "LIMITED REGIONAL LTE";
  679. break;
  680. case NETWORK_TYPE_LIMITED_REGIONAL_TDSCDMA:
  681. msg = "LIMITED REGIONAL TDSCDMA";
  682. break;
  683. default:
  684. msg = "UNKNOWN";
  685. break;
  686. }
  687. Toast.makeText(mContext, "network type: " + msg, Toast.LENGTH_SHORT).show();
  688. } else {
  689. Log.e(TAG, "response does not have \"mode\"");
  690. }
  691. // reference signal receiving power
  692. if (response.has("rsrp")) {
  693. int rsrp = response.getInt("rsrp");
  694. Toast.makeText(mContext, "reference signal receiving power: " + String.valueOf(rsrp), Toast.LENGTH_SHORT).show();
  695. } else {
  696. Log.e(TAG, "response does not have \"rsrp\"");
  697. }
  698. // rf signal strength parameter
  699. if (response.has("rssi")) {
  700. int rssi = response.getInt("rssi");
  701. Toast.makeText(mContext, "rf signal strength parameter: " + String.valueOf(rssi), Toast.LENGTH_SHORT).show();
  702. } else {
  703. Log.e(TAG, "response does not have \"rssi\"");
  704. }
  705. // reference signal receive quality
  706. if (response.has("rsrq")) {
  707. int rsrq = response.getInt("rsrq");
  708. Toast.makeText(mContext, "reference signal receive quality: " + String.valueOf(rsrq), Toast.LENGTH_SHORT).show();
  709. } else {
  710. Log.e(TAG, "response does not have \"rsrq\"");
  711. }
  712. // signal to interference plus noise ratio
  713. if (response.has("sinr")) {
  714. int sinr = response.getInt("sinr");
  715. Toast.makeText(mContext, "signal to interference plus noise ration: " + String.valueOf(sinr), Toast.LENGTH_SHORT).show();
  716. } else {
  717. Log.e(TAG, "response does not have \"sinr\"");
  718. }
  719. // physical cell id
  720. if (response.has("pci")) {
  721. int pci = response.getInt("pci");
  722. Toast.makeText(mContext, "physical cell ID: " + String.valueOf(pci), Toast.LENGTH_SHORT).show();
  723. } else {
  724. Log.e(TAG, "response does not have \"pci\"");
  725. }
  726. }
  727. } catch (JSONException e) {
  728. Log.e(TAG, "JSON error: " + e.getMessage());
  729. }
  730. } else {
  731. Log.e(TAG, "Response JSONObject is null");
  732. }
  733. }
  734.  
  735. private void handleError(VolleyError error, int type) {
  736. Log.e(TAG, "VolleyError with request type: " + String.valueOf(type) + " - " + error.getMessage());
  737. Toast.makeText(mContext, "VolleyError with request type: " + String.valueOf(type) + " - " + error.getMessage(), Toast.LENGTH_SHORT).show();
  738. }
  739.  
  740. private void getCPEDeviceInformation() {
  741. String url = Constants.INTERFACE_PREFIX + "GetDeviceInfo";
  742. startJsonRequest(url, null, TYPE_GET_CPE_DEVICE_INFORMATION, 500);
  743. // TODO: verify this timeout, as it's missing from the API documentation
  744. }
  745.  
  746. private void firmwareOtaUpdate() {
  747. // not yet implemented
  748. }
  749.  
  750. private void reboot() {
  751. String url = Constants.INTERFACE_PREFIX + "reboot";
  752. startJsonRequest(url, null, TYPE_REBOOT, 500);
  753. }
  754.  
  755. private void resetToFactorySettings() {
  756. String url = Constants.INTERFACE_PREFIX + "reset";
  757. startJsonRequest(url, null, TYPE_RESET_TO_FACTORY_SETTINGS, 500);
  758. }
  759.  
  760. private void login(String username, String password) {
  761. String url = Constants.INTERFACE_PREFIX + "login";
  762. String requestParams = "username,password";
  763. String[] requestValues = {username, password};
  764. JSONObject obj = JsonUtils.createJson(requestParams, requestValues);
  765. startJsonRequest(url, obj, TYPE_LOGIN, 200);
  766. }
  767.  
  768. private void logout() {
  769. String url = Constants.INTERFACE_PREFIX + "logout";
  770. startJsonRequest(url, null, TYPE_LOGOUT, 200);
  771. }
  772.  
  773. private void modifyLoginPassword(String oldPassword, String newPassword, String confirmNewPassword) {
  774. String url = Constants.INTERFACE_PREFIX + "ModifyPassword";
  775. String requestParams = "o_passwd,n_passwd,c_passwd";
  776. String[] requestValues = {oldPassword, newPassword, confirmNewPassword};
  777. JSONObject obj = JsonUtils.createJson(requestParams, requestValues);
  778. startJsonRequest(url, obj, TYPE_MODIFY_LOGIN_PASSWORD, 500);
  779. }
  780.  
  781. private void getNetworkInformation() {
  782. String url = Constants.INTERFACE_PREFIX + "GetWirelessNetworkInfo";
  783. startJsonRequest(url, null, TYPE_GET_NETWORK_INFORMATION, 1000);
  784. }
  785.  
  786. private void getDataStatisticsInformation() {
  787. String url = Constants.INTERFACE_PREFIX + "GetStatisticsInfo";
  788. startJsonRequest(url, null, TYPE_GET_DATA_STATISTICS_INFORMATION, 200);
  789. }
  790.  
  791. private void resetDataStatistics() {
  792. String url = Constants.INTERFACE_PREFIX + "ResetStatisticsInfo";
  793. startJsonRequest(url, null, TYPE_RESET_DATA_STATISTICS, 200);
  794. }
  795.  
  796. private void getConnectedClientsInformation() {
  797. String url = Constants.INTERFACE_PREFIX + "GetClientsInfo";
  798. startJsonRequest(url, null, TYPE_GET_CONNECTED_CLIENTS_INFORMATION, 500);
  799. }
  800.  
  801. private void getDialStatus() {
  802. String url = Constants.INTERFACE_PREFIX + "GetDialStatus";
  803. startJsonRequest(url, null, TYPE_GET_DIAL_STATUS, 200);
  804. }
  805.  
  806. private void getMobileDataSwitchStatus() {
  807. String url = Constants.INTERFACE_PREFIX + "GetMobileDataStatus";
  808. startJsonRequest(url, null, TYPE_GET_MOBILE_DATA_SWITCH_STATUS, 200);
  809. }
  810.  
  811. private void configMobileDataSwitch(int status) {
  812. if (status != MOBILE_DATA_SWITCH_STATUS_CLOSED && status != MOBILE_DATA_SWITCH_STATUS_OPEN) {
  813. throw new IllegalArgumentException("Status must 0 (Closed) or 1 (Open)");
  814. }
  815. String url = Constants.INTERFACE_PREFIX + "SetMobileDataStatus";
  816. String requestParams = "status";
  817. String[] requestValues = {String.valueOf(status)};
  818. JSONObject obj = JsonUtils.createJson(requestParams, requestValues);
  819. startJsonRequest(url, obj, TYPE_CONFIG_MOBILE_DATA_SWITCH, 200);
  820. }
  821.  
  822. private void getRoamingSwitchStatus() {
  823. String url = Constants.INTERFACE_PREFIX + "GetMobileDataRoamingStatus";
  824. startJsonRequest(url, null, TYPE_GET_ROAMING_SWITCH_STATUS, 200);
  825. }
  826.  
  827. private void configRoamingSwitch(int status) {
  828. if (status != ROAMING_SWITCH_STATUS_OPEN && status != ROAMING_SWITCH_STATUS_CLOSED) {
  829. throw new IllegalArgumentException("Status must be 0 (Closed) or 1 (Open)");
  830. }
  831. String url = Constants.INTERFACE_PREFIX + "SetMobileDataRoamingStatus";
  832. String requestParams = "status";
  833. String[] requestValues = {String.valueOf(status)};
  834. JSONObject obj = JsonUtils.createJson(requestParams, requestValues);
  835. startJsonRequest(url, obj, TYPE_CONFIG_ROAMING_SWITCH, 200);
  836. }
  837.  
  838. private void getApnProfileSettings() {
  839. String url = Constants.INTERFACE_PREFIX + "GetProfile";
  840. startJsonRequest(url, null, TYPE_GET_APN_PROFILE_SETTINGS, 200);
  841. }
  842.  
  843. private void addNewApnProfile(String profileName, String userName, String password, String apn, int authenticationType, int ipType) {
  844. // TODO: figure out valid authentication type params
  845. if (ipType != IP_TYPE_IPV4 && ipType != IP_TYPE_IPV6 && ipType != IP_TYPE_V4V6) {
  846. throw new IllegalArgumentException("ipType must be one of 4 (IPV4), 6 (IPV6) or 10 (V4V6)");
  847. }
  848. String url = Constants.INTERFACE_PREFIX + "AddProfile";
  849. String requestParams = "profilename,username,password,apn,authmode,iptype";
  850. String[] requestValues = {profileName, userName, password, apn, String.valueOf(authenticationType), String.valueOf(ipType)};
  851. JSONObject obj = JsonUtils.createJson(requestParams, requestValues);
  852. startJsonRequest(url, obj, TYPE_ADD_NEW_APN_PROFILE, 3000);
  853. }
  854.  
  855. private void modifyProfileSettings(int profileIndex, String profileName, String userName, String password,
  856. String apn, int authenticationType, int ipType) {
  857. // TODO: verify profileIndex exists and figure out valid auth type params
  858. if (ipType != IP_TYPE_IPV4 && ipType != IP_TYPE_IPV6 && ipType != IP_TYPE_V4V6) {
  859. throw new IllegalArgumentException("ipType must be one of 4 (IPV4), 6 (IPV6) or 10 (V4V6)");
  860. }
  861. String url = Constants.INTERFACE_PREFIX + "SetProfile";
  862. String requestParams = "index,profilname,username,password,apn,authmode,iptype";
  863. String[] requestValues = {String.valueOf(profileIndex), profileName, userName, password, apn, String.valueOf(authenticationType), String.valueOf(ipType)};
  864. JSONObject obj = JsonUtils.createJson(requestParams, requestValues);
  865. startJsonRequest(url, obj, TYPE_MODIFY_PROFILE_SETTINGS, 3000);
  866. }
  867.  
  868. private void deleteApnProfile(int profileIndex) {
  869. // TODO: verify profileIndex exists
  870. String url = Constants.INTERFACE_PREFIX + "DeleteProfile";
  871. String requestParams = "index";
  872. String[] requestValues = {String.valueOf(profileIndex)};
  873. JSONObject obj = JsonUtils.createJson(requestParams, requestValues);
  874. startJsonRequest(url, obj, TYPE_DELETE_APN_PROFILE, 3000);
  875. }
  876.  
  877. private void getSimCardStatus() {
  878. String url = Constants.INTERFACE_PREFIX + "GetSimInfo";
  879. startJsonRequest(url, null, TYPE_GET_SIM_CARD_STATUS, 200);
  880. }
  881.  
  882. private void getRfInformation() {
  883. String url = Constants.INTERFACE_PREFIX + "GetRFParameters";
  884. startJsonRequest(url, null, TYPE_GET_RF_INFORMATION, 200);
  885. }
  886. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement