completed server set ip .
authorTrillGates <williamtrillgates@gmail.com>
Tue, 3 Aug 2021 13:01:28 +0000 (21:01 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Tue, 3 Aug 2021 13:01:28 +0000 (21:01 +0800)
app/src/main/java/com/enqualcomm/support/ICSmsManager.java
app/src/main/java/com/ic/protocols/protocol_s123.java
local.properties

index e0557b3..3c377a3 100644 (file)
@@ -482,8 +482,12 @@ public class ICSmsManager extends BroadcastReceiver {
             ICLogger.i(sms + " len " + tmp.length);
             if (tmp.length == 2) {
                 if (tmp[1].equals("reset#")) {
-                    Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort());
-                    reply = "reset ServerIP to " + protocolAPIHelper.getDefaultServerIP() + ":" + protocolAPIHelper.getDefaultServerPort() + " success! ";
+                    Config.setCustomServer(mContext,
+                            false, protocolAPIHelper.getDefaultServerIP(),
+                            protocolAPIHelper.getDefaultServerPort());
+                    reply = "reset ServerIP to " +
+                            protocolAPIHelper.getDefaultServerIP() + ":"
+                            + protocolAPIHelper.getDefaultServerPort() + " success! ";
                     Config.loadServerSettings(runtime);
                     CoreService.getInstance().disconnect_server();
                     CoreService.getInstance().ReConnectToServer();
index dcc3880..d8a4330 100644 (file)
@@ -30,6 +30,7 @@ import com.enqualcomm.support.provider.ICGlobalSettingsProvider;
 import com.enqualcomm.support.provider.ICMembersProvider;
 import com.enqualcomm.support.provider.WebSmsProvider;
 import com.enqualcomm.support.service.HeartRateManager;
+import com.enqualcomm.support.utils.APNUtil;
 import com.enqualcomm.support.utils.CameraUtil;
 import com.enqualcomm.support.utils.Connection;
 import com.enqualcomm.support.utils.ICAudioManager;
@@ -201,6 +202,10 @@ public class protocol_s123 {
         APPH,
         BPSS,//短信命令
         APSS,
+        BPAP,//APN指令下发
+        APAP,
+        BPIP,//设置服务器IP(域名)端口
+        APIP,
         UNKNOWN_CMD,
     }
 
@@ -328,6 +333,10 @@ public class protocol_s123 {
         cmdMap.put(CMD_TYPE.APPH, "APPH");
         cmdMap.put(CMD_TYPE.BPSS, "BPSS");
         cmdMap.put(CMD_TYPE.APSS, "APSS");
+        cmdMap.put(CMD_TYPE.BPAP, "BPAP");
+        cmdMap.put(CMD_TYPE.APAP, "APAP");
+        cmdMap.put(CMD_TYPE.BPIP, "BPIP");
+        cmdMap.put(CMD_TYPE.APIP, "APIP");
     }
 
 
@@ -3387,6 +3396,14 @@ public class protocol_s123 {
                 ICLogger.d("收到服务器短信指令.");
                 handleBPSS(cmd);
                 break;
+            case BPAP:
+                ICLogger.d("收到服务器APN设置的指令.");
+                handleBPAP(cmd);
+                break;
+            case BPIP:
+                ICLogger.d("收到服务器设置IP的指令.");
+                handleBPIP(cmd);
+                break;
             case APTM:
                 break;
             case APCH:
@@ -3494,6 +3511,85 @@ public class protocol_s123 {
         return ret;
     }
 
+    /**
+     * 处理服务器设置IP和端口号
+     *
+     * @param cmd
+     */
+    private void handleBPIP(String cmd) {
+        try {
+            //IWBPIP,353456789012345,080835,1,172.128.20.111:9999
+            //IW:标识符
+            //BPIP : 命令字符
+            //353456789012345:IMEI号,设备唯一ID
+            //080835 :指令流水号
+            //1: 服务器通道类型,1通信消息服务器通道,2软件升级消息服务器通道
+            String[] split = cmd.split(CMDSPLIT);
+            if (split.length == 5) {
+                String id = split[2];
+                String type = split[3];
+                String ipAndPort = split[4];
+                if (ipAndPort.contains(":")) {
+                    String[] ipAndPortArray = ipAndPort.split(":");
+                    String ip = ipAndPortArray[0];
+                    String port = ipAndPortArray[1];
+                    Config.setCustomServer(mRuntime.getContextProxy().context, true, ip,
+                            Integer.parseInt(port));
+                    //172.128.20.111:9999: IP(域名):端口
+                    //响应IWAPIP,080835,1,172.128.20.111:9999
+                    //1:表示设备接受数据成功,0表示设备接受数据失败.
+                    responseWithId(cmdMap.get(CMD_TYPE.APIP), id, type, ipAndPort);
+                    //以下内容必须在后回复的后面,否则就发送不了。
+                    Config.loadServerSettings(mRuntime);
+                    CoreService.getInstance().disconnect_server();
+                    CoreService.getInstance().ReConnectToServer();
+                }
+            } else {
+                ICLogger.d("parse failed==> " + cmd);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 处理APN下发的指令
+     * IW:标识符
+     * BPAP : 命令字符
+     * 353456789012345:IMEI号,设备唯一ID
+     * 080835 :指令流水号
+     * 460: MCC
+     * 01:MNC
+     * CMNET: APN名称
+     * cmnet:apn
+     * user: 用户名,没有要留空位
+     * password:密码, 没有要留空位
+     *
+     * @param cmd
+     */
+    private void handleBPAP(String cmd) {
+        //IWBPAP,353456789012345,080835,460,01,CMNET,cmnet,user,password
+        String[] split = cmd.split(CMDSPLIT);
+        if (split.length == 9) {
+            String id = split[2];
+            //APNUtil.addVPN(apnName, apn, mcc, mnc, user, password, mContext)
+            //获取数据
+            String mcc = split[3];
+            String mnc = split[4];
+            String apnName = split[5];
+            String apn = split[6];
+            String user = split[7];
+            String password = split[8];
+            boolean isSuccess = APNUtil.addVPN(apnName, apn, mcc, mnc, user, password, mRuntime.getContextProxy().context);
+            ICLogger.d("is set apn success==> " + isSuccess);
+            //回复后台
+            // 1:表示设备接受数据成功,0表示设备接受数据失败
+            responseWithId(cmdMap.get(CMD_TYPE.APAP), id, "1");
+        } else {
+            ICLogger.d("parse error ==> " + cmd);
+        }
+    }
+
     /**
      * 解析短信指令,解析出来以后走mms的路子
      *
@@ -3513,18 +3609,23 @@ public class protocol_s123 {
                 ICLogger.d("content == > " + content);
                 ICSmsManager.handleSms(mRuntime, content, null, null);
                 //回复
-                responseWithId(cmdMap.get(CMD_TYPE.APSS), id);
+                // 1:表示设备接受数据成功,0表示设备接受数据失败
+                responseWithId(cmdMap.get(CMD_TYPE.APSS), id, "1");
             } else {
                 ICLogger.d("handleBPSS==parse error==> " + cmd);
             }
         }
     }
 
-    private void responseWithId(String cmd, String id) {
-        StringMessage stringMessage = genStringMessage(cmd,
-                new StringBuffer(CMDHEADER).append(cmd)
-                        .append(CMDSPLIT).append(id)
-                        .append(CMDEND).toString());
+    private void responseWithId(String cmd, String id, String... args) {
+        StringBuilder append = new StringBuilder(CMDHEADER).append(cmd)
+                .append(CMDSPLIT).append(id);
+        for (String arg : args) {
+            append.append(CMDSPLIT).append(arg);
+        }
+        append.append(CMDEND);
+        ICLogger.d("response content ==> " + append.toString());
+        StringMessage stringMessage = genStringMessage(cmd, append.toString());
         mConnection.send(stringMessage);
     }
 
@@ -3543,8 +3644,9 @@ public class protocol_s123 {
                 String value = split[3];
                 //更新数据库
                 updateSettingValue("is_dial_enable", value);
+                //1 : 表示设备可以拨号   0:表示设备不可拨号, 用于同步平台设置。
                 //返回结果
-                responseWithId(cmdMap.get(CMD_TYPE.APPH), id);
+                responseWithId(cmdMap.get(CMD_TYPE.APPH), id, value);
             } catch (Exception e) {
                 e.printStackTrace();
             }
index 6594581..8bb0634 100644 (file)
@@ -5,4 +5,4 @@
 # For customization when using a Version Control System, please read the\r
 # header note.\r
 #Fri Jul 02 14:52:39 CST 2021\r
-sdk.dir=D\:\\android\\Android\\sdk\r
+sdk.dir=E\:\\Android\\Sdk\r