1、protocol_jiai 添加AP94,BP93 两个命令
authorsnickersun <snickersun@qq.com>
Sun, 30 Aug 2020 15:51:31 +0000 (23:51 +0800)
committersnickersun <snickersun@qq.com>
Sun, 30 Aug 2020 15:51:31 +0000 (23:51 +0800)
2、重构所有protocol API把 所有协议生成的字符串,都改为StringMessage变量。以便兼容Mqtt。

15 files changed:
app/src/main/java/com/enqualcomm/support/CoreService.java
app/src/main/java/com/enqualcomm/support/LocationClient.java
app/src/main/java/com/enqualcomm/support/service/AntiMonitorService.java
app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java
app/src/main/java/com/enqualcomm/support/service/KeepAlive.java
app/src/main/java/com/enqualcomm/support/utils/BatteryUtil.java
app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java
app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java
app/src/main/java/com/enqualcomm/support/utils/TemperatureUtil.java
app/src/main/java/com/ic/protocols/protocolAPIHelper.java
app/src/main/java/com/ic/protocols/protocol_beehome.java
app/src/main/java/com/ic/protocols/protocol_fzd.java
app/src/main/java/com/ic/protocols/protocol_ic.java
app/src/main/java/com/ic/protocols/protocol_jiai.java
app/src/main/java/com/ic/protocols/protocol_mqtt.java

index 7edaf30..60244b9 100644 (file)
@@ -204,7 +204,7 @@ public class CoreService extends Service {
                     runtime.setAlarmType(Runtime.AlarmType.ALARM_SOS);\r
                     //trigger AP10 报警定位\r
 //                   CoreService.this.locationClient.triggerSOSLocationProcess();\r
-                    connection.send(protocolAPIHelper.genStringMessage("AP10",protocolAPIHelper.getWarningMSG(runtime)));\r
+                    connection.send(protocolAPIHelper.getWarningMSG(runtime));\r
 \r
                     //开启紧急定位模式,GPS 优先1分钟一次定位,持续5分钟\r
                     runtime.getLocationInstance().setWorkingMod(EMERGNECY_MOD);\r
index 9030867..77cd7cc 100644 (file)
@@ -358,7 +358,7 @@ public class LocationClient {
                     ||(lbs_ok&&gps_nosignal&&wifi_ok)\r
             ){\r
               if (startSOSLocation==true){\r
-                String AP10_CMD = protocolAPIHelper.getWarningMSG(runtime);\r
+                StringMessage AP10_CMD = protocolAPIHelper.getWarningMSG(runtime);\r
                 Deliver.sendLocationMSG(AP10_CMD);\r
                 startSOSLocation=false;\r
               }else {\r
@@ -432,7 +432,7 @@ public class LocationClient {
 \r
 \r
               if (startSOSLocation==true){\r
-                String AP10_CMD = protocolAPIHelper.getWarningMSG(runtime);\r
+                StringMessage AP10_CMD = protocolAPIHelper.getWarningMSG(runtime);\r
                 Deliver.sendLocationMSG(AP10_CMD);\r
                 startSOSLocation=false;\r
 \r
@@ -777,7 +777,7 @@ public void updateCellInfo() {
       if (runtime.getBatteryLow()) {\r
         runtime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY);\r
         //trigger AP10 报警低电\r
-        connection.send(protocolAPIHelper.genStringMessage("AP10",protocolAPIHelper.getWarningMSG(runtime)));\r
+        connection.send(protocolAPIHelper.getWarningMSG(runtime));\r
       }\r
 \r
       this.batteryLowNotification = true;\r
index ccb9158..ac4e493 100644 (file)
@@ -15,6 +15,7 @@ import com.enqualcomm.support.Config;
 import com.enqualcomm.support.CoreService;\r
 import com.enqualcomm.support.R;\r
 import com.enqualcomm.support.bean.Runtime;\r
+import com.enqualcomm.support.bean.StringMessage;\r
 import com.enqualcomm.support.service.base.AbstractInvokeHandlerService;\r
 import com.enqualcomm.support.utils.Connection;\r
 import com.enqualcomm.support.utils.ICLogger;\r
@@ -93,7 +94,7 @@ public class AntiMonitorService extends AbstractInvokeHandlerService {
              }\r
              mRuntime.Anti_off_flag=0;\r
             mRuntime.setAlarmType(Runtime.AlarmType.ALARM_WEARED);\r
-            String msg=protocolAPIHelper.getWarningMSG(mRuntime);\r
+            StringMessage msg=protocolAPIHelper.getWarningMSG(mRuntime);\r
             Deliver.sendLocationMSG(msg); //消息很重要,所以利用带buffer的对列来发送!\r
 \r
 //            try {\r
@@ -117,7 +118,7 @@ public class AntiMonitorService extends AbstractInvokeHandlerService {
              }\r
              mRuntime.Anti_off_flag=1;\r
              mRuntime.setAlarmType(Runtime.AlarmType.ALARM_ANTIOFF);\r
-            String msg=protocolAPIHelper.getWarningMSG(mRuntime);\r
+            StringMessage msg=protocolAPIHelper.getWarningMSG(mRuntime);\r
             Deliver.sendLocationMSG(msg); //消息很重要,所以利用带buffer的对列来发送!\r
 //            try {\r
 //                sleep(1000);\r
index 67639c6..e3e9d38 100644 (file)
@@ -17,6 +17,7 @@ import android.os.PowerManager;
 import com.enqualcomm.support.Config;\r
 import com.enqualcomm.support.Constants;\r
 import com.enqualcomm.support.CoreService;\r
+import com.enqualcomm.support.bean.StringMessage;\r
 import com.enqualcomm.support.utils.Util;\r
 import com.ic.jni.ICJniUtils;\r
 import com.ic.protocols.protocolAPIHelper;\r
@@ -59,12 +60,12 @@ public class HeartRateManager extends AbstractInvokeHandlerService implements Se
 \r
       runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_HIGH);\r
       //trigger AP10 报警定位\r
-      CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime)));\r
+      CoreService.getInstance().getConnection().send( protocolAPIHelper.getWarningMSG(runtime));\r
 \r
     }else if ( runtime.getHRS().ppg_threshold_min>0 && runtime.getHRS().getPPG()<runtime.getHRS().ppg_threshold_min) {\r
       runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_LOW);\r
       //trigger AP10 报警定位\r
-      CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime)));\r
+      CoreService.getInstance().getConnection().send( protocolAPIHelper.getWarningMSG(runtime));\r
     }\r
 \r
     //bph\r
@@ -72,12 +73,12 @@ public class HeartRateManager extends AbstractInvokeHandlerService implements Se
 \r
       runtime.setAlarmType(Runtime.AlarmType.ALARM_BPH_HIGH);\r
       //trigger AP10 报警定位\r
-      CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime)));\r
+      CoreService.getInstance().getConnection().send( protocolAPIHelper.getWarningMSG(runtime));\r
 \r
     }else if ( runtime.getHRS().bph_threshold_min>0 && runtime.getHRS().getBPH()<runtime.getHRS().bph_threshold_min) {\r
       runtime.setAlarmType(Runtime.AlarmType.ALARM_BPH_LOW);\r
       //trigger AP10 报警定位\r
-      CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime)));\r
+      CoreService.getInstance().getConnection().send( protocolAPIHelper.getWarningMSG(runtime));\r
 \r
     }\r
 \r
@@ -86,12 +87,12 @@ public class HeartRateManager extends AbstractInvokeHandlerService implements Se
 \r
       runtime.setAlarmType(Runtime.AlarmType.ALARM_BPL_HIGH);\r
       //trigger AP10 报警定位\r
-      CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime)));\r
+      CoreService.getInstance().getConnection().send( protocolAPIHelper.getWarningMSG(runtime));\r
 \r
     }else if ( runtime.getHRS().bpl_threshold_min>0 && runtime.getHRS().getBPL()<runtime.getHRS().bpl_threshold_min) {\r
       runtime.setAlarmType(Runtime.AlarmType.ALARM_BPL_LOW);\r
       //trigger AP10 报警定位\r
-      CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime)));\r
+      CoreService.getInstance().getConnection().send( protocolAPIHelper.getWarningMSG(runtime));\r
 \r
     }\r
   }\r
@@ -112,28 +113,28 @@ public class HeartRateManager extends AbstractInvokeHandlerService implements Se
             //只有检测PPG成功,且网络连接中才发送数据\r
             if (runtime.getHRS().getHeartrateWorkingStat() == heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS) {\r
               runtime.getHRS().setLastTestTime(TimeUtil.getSystemTime3());\r
-              String PPGDATA = protocolAPIHelper.getPPG_ECG_MSG(runtime);\r
+              StringMessage PPGDATA = protocolAPIHelper.getPPG_ECG_MSG(runtime);\r
               sendBroadcastPPGResult();\r
               //因为协议中没有时间变量,所以只能实时传输,如果恰巧没有网络也只能丢弃,有时间变量的话,可以考虑通过deliver的buffer来进行缓存发送\r
               if (connection.isServerConnected()) {\r
-                if(PPGDATA.isEmpty()){\r
-                  String ppgd=protocolAPIHelper.getPPG_MSG(runtime.getHRS().getPPG());\r
-                  String bloodd=protocolAPIHelper.getBlood_MSG( runtime.getHRS().getBPH(), runtime.getHRS().getBPL());\r
-                  String oxd=protocolAPIHelper.getOxygen_MSG(runtime.getHRS().getSpo2());\r
-                  connection.send(protocolAPIHelper.genStringMessage("ppg", ppgd));\r
-                  connection.send(protocolAPIHelper.genStringMessage("blood", bloodd));\r
-                  connection.send(protocolAPIHelper.genStringMessage("oxygen", oxd));\r
+                if(PPGDATA==null){\r
+                  StringMessage ppgd=protocolAPIHelper.getPPG_MSG(runtime.getHRS().getPPG());\r
+                  StringMessage bloodd=protocolAPIHelper.getBlood_MSG( runtime.getHRS().getBPH(), runtime.getHRS().getBPL());\r
+                  StringMessage oxd=protocolAPIHelper.getOxygen_MSG(runtime.getHRS().getSpo2());\r
+                  connection.send( ppgd);\r
+                  connection.send(bloodd);\r
+                  connection.send( oxd);\r
 \r
                   checkWarning();\r
 \r
                 }else {\r
-                  connection.send(protocolAPIHelper.genStringMessage("APHT", PPGDATA));\r
-                  ICLogger.i("Send PPG " + PPGDATA);\r
+                  connection.send( PPGDATA);\r
+                  ICLogger.i("Send PPG " + PPGDATA.isFromCache());\r
                   checkWarning();\r
                 }\r
-                ICLogger.i("Send PPG " + PPGDATA);\r
+                ICLogger.i("Send PPG " + PPGDATA.isFromCache());\r
               } else {\r
-                ICLogger.i("Skip PPG " + PPGDATA);\r
+                ICLogger.i("Skip PPG " + PPGDATA.isFromCache());\r
               }\r
             } else {\r
               ICLogger.i("PPG Failed for Timeout!");\r
@@ -415,18 +416,18 @@ public static void triggerPPGtest(){
 \r
 \r
             if (connection.isServerConnected()) {\r
-              String PPGDATA = protocolAPIHelper.getPPG_ECG_MSG(Integer.parseInt(ppg), Integer.parseInt(bph), Integer.parseInt(bpl), Integer.parseInt(spo2));\r
-              if(PPGDATA.isEmpty()){\r
-                String ppgd=protocolAPIHelper.getPPG_MSG(Integer.parseInt(ppg));\r
-                String bloodd=protocolAPIHelper.getBlood_MSG( Integer.parseInt(bph), Integer.parseInt(bpl));\r
-                String oxd=protocolAPIHelper.getOxygen_MSG(Integer.parseInt(spo2));\r
-                connection.send(protocolAPIHelper.genStringMessage("ppg", ppgd));\r
-                connection.send(protocolAPIHelper.genStringMessage("blood", bloodd));\r
-                connection.send(protocolAPIHelper.genStringMessage("oxygen", oxd));\r
+              StringMessage PPGDATA = protocolAPIHelper.getPPG_ECG_MSG(Integer.parseInt(ppg), Integer.parseInt(bph), Integer.parseInt(bpl), Integer.parseInt(spo2));\r
+              if(PPGDATA==null){\r
+                StringMessage ppgd=protocolAPIHelper.getPPG_MSG(Integer.parseInt(ppg));\r
+                StringMessage bloodd=protocolAPIHelper.getBlood_MSG( Integer.parseInt(bph), Integer.parseInt(bpl));\r
+                StringMessage oxd=protocolAPIHelper.getOxygen_MSG(Integer.parseInt(spo2));\r
+                connection.send( ppgd);\r
+                connection.send(bloodd);\r
+                connection.send( oxd);\r
 \r
               }else {\r
-                connection.send(protocolAPIHelper.genStringMessage("APHT", PPGDATA));\r
-                ICLogger.i("Send PPG " + PPGDATA);\r
+                connection.send( PPGDATA);\r
+                ICLogger.i("Send PPG " + PPGDATA.isFromCache());\r
               }\r
             } else {\r
               ICLogger.i("Skip PPG ");\r
index 445603d..2e6f2f7 100644 (file)
@@ -377,7 +377,7 @@ public class KeepAlive extends AbstractConnectionService {
 \r
           if (KeepAlive.this.mRuntime.getBatteryLow()){\r
           KeepAlive.this.mRuntime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY);\r
-          KeepAlive.this.connection.send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(KeepAlive.this.mRuntime)));\r
+          KeepAlive.this.connection.send(protocolAPIHelper.getWarningMSG(KeepAlive.this.mRuntime));\r
 \r
           ICLogger.i("Shutdown Received! send AP10 !");\r
         }\r
index 059ea12..518448a 100644 (file)
@@ -96,7 +96,7 @@ public class BatteryUtil {
               play_waning_notify(param1Context);\r
               mRuntime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY);\r
               //trigger AP10 报警定位\r
-              connection.send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(mRuntime)));\r
+              connection.send(protocolAPIHelper.getWarningMSG(mRuntime));\r
             }\r
           } else {\r
             mRuntime.setBattery(String.format("%03d",batLevel));\r
@@ -111,7 +111,7 @@ public class BatteryUtil {
               play_waning_notify(param1Context);\r
               mRuntime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY);\r
               //trigger AP10 报警定位\r
-              connection.send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(mRuntime)));\r
+              connection.send( protocolAPIHelper.getWarningMSG(mRuntime));\r
 \r
 \r
             }\r
index 3674458..d0c4b43 100644 (file)
@@ -307,6 +307,10 @@ public class NettyConnection implements Connection {
   \r
   public void send(StringMessage paramStringMessage) {\r
 \r
+      if(paramStringMessage==null) {\r
+        ICLogger.i(" StringMessage is null skip send!");\r
+        return ;\r
+      }\r
       sendMsg(paramStringMessage.isFromCache());\r
       ICLogger.logToFile("APILog",paramStringMessage.isFromCache());\r
       ICLogger.i(paramStringMessage.isFromCache());\r
index 35eb9a4..6112944 100644 (file)
@@ -27,6 +27,7 @@ import com.enqualcomm.support.LocationClient;
 import com.enqualcomm.support.R;\r
 import com.enqualcomm.support.bean.NotificationParam;\r
 import com.enqualcomm.support.bean.Runtime;\r
+import com.enqualcomm.support.bean.StringMessage;\r
 import com.enqualcomm.support.bean.VoiceContent;\r
 import com.enqualcomm.support.service.Deliver;\r
 import com.ic.jni.ICJniUtils;\r
@@ -390,8 +391,8 @@ public class ProcessReceiver extends BroadcastReceiver {
       }else if (ACTION_TEMP_RESULT.equals(str)) {\r
         double wrist_temp = paramIntent.getDoubleExtra(KEY_TEMP_WRIST, 0.0f);\r
         double body_temp = paramIntent.getDoubleExtra(KEY_TEMP_BODY, 0.0f);\r
-        String temperatureMsg = protocolAPIHelper.getTemperatureMSG(wrist_temp, body_temp);\r
-        ICLogger.i("发送体温测量值 " + temperatureMsg);\r
+        StringMessage temperatureMsg = protocolAPIHelper.getTemperatureMSG(wrist_temp, body_temp);\r
+        ICLogger.i("发送体温测量值 " + temperatureMsg.isFromCache());\r
         Deliver.sendLocationMSG(temperatureMsg);\r
     }else if (ACTION_SET_SIT_RANGE.equals(str)) {\r
         if (paramIntent.hasExtra( Constants.KEY_SIT_RANGE)){\r
index d0bf788..58a6614 100644 (file)
@@ -7,6 +7,7 @@ import com.enqualcomm.support.Config;
 import com.enqualcomm.support.Constants;\r
 import com.enqualcomm.support.CoreService;\r
 import com.enqualcomm.support.bean.Runtime;\r
+import com.enqualcomm.support.bean.StringMessage;\r
 import com.ic.jni.ICJniUtils;\r
 import com.ic.protocols.protocolAPIHelper;\r
 import com.sina.util.dnscache.log.FileUtil;\r
@@ -70,9 +71,9 @@ public class TemperatureUtil {
                     body_temp=TemperatureUtil.getBodyTemp(wrist_temp,26.0f);\r
                     ICJniUtils.disableTemperature();\r
 \r
-                    String temperatureMsg= protocolAPIHelper.getTemperatureMSG(wrist_temp, body_temp);\r
-                    CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("APTP",temperatureMsg));\r
-                    ICLogger.i("发送体温测量值 "+temperatureMsg);\r
+                    StringMessage temperatureMsg= protocolAPIHelper.getTemperatureMSG(wrist_temp, body_temp);\r
+                    CoreService.getInstance().getConnection().send(temperatureMsg);\r
+                    ICLogger.i("发送体温测量值 "+temperatureMsg.isFromCache());\r
 \r
                     Runtime runtime=CoreService.getInstance().getRuntime();\r
                     runtime.tempInfo.setTemp(body_temp,wrist_temp);\r
@@ -83,12 +84,12 @@ public class TemperatureUtil {
                             case 1:\r
                                 runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_HIGH);\r
                                 //trigger AP10 报警定位\r
-                                CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime)));\r
+                                CoreService.getInstance().getConnection().send( protocolAPIHelper.getWarningMSG(runtime));\r
                                 break;\r
                             case 2:\r
                                 runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_LOW);\r
                                 //trigger AP10 报警定位\r
-                                CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime)));\r
+                                CoreService.getInstance().getConnection().send( protocolAPIHelper.getWarningMSG(runtime));\r
                                 break;\r
                         }\r
                     }\r
@@ -98,9 +99,9 @@ public class TemperatureUtil {
 \r
                     wrist_temp=TemperatureUtil.get_temp_value_adjusted();\r
                     body_temp=TemperatureUtil.getBodyTemp(wrist_temp,26.0f);\r
-                    String temperatureMsg= protocolAPIHelper.getTemperatureMSG(wrist_temp, body_temp);\r
-                    CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("APTP",temperatureMsg));\r
-                    ICLogger.i("发送体温测量值 "+temperatureMsg);\r
+                    StringMessage temperatureMsg= protocolAPIHelper.getTemperatureMSG(wrist_temp, body_temp);\r
+                    CoreService.getInstance().getConnection().send(temperatureMsg);\r
+                    ICLogger.i("发送体温测量值 "+temperatureMsg.isFromCache());\r
 \r
                     Runtime runtime=CoreService.getInstance().getRuntime();\r
                     runtime.tempInfo.setTemp(body_temp,wrist_temp);\r
@@ -112,12 +113,12 @@ public class TemperatureUtil {
                             case 1:\r
                                 runtime.setAlarmType(Runtime.AlarmType.ALARM_TEMP_HIGH);\r
                                 //trigger AP10 报警定位\r
-                                CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime)));\r
+                                CoreService.getInstance().getConnection().send( protocolAPIHelper.getWarningMSG(runtime));\r
                                 break;\r
                             case 2:\r
                                 runtime.setAlarmType(Runtime.AlarmType.ALARM_TEMP_LOW);\r
                                 //trigger AP10 报警定位\r
-                                CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime)));\r
+                                CoreService.getInstance().getConnection().send( protocolAPIHelper.getWarningMSG(runtime));\r
                                 break;\r
                         }\r
                     }\r
index df0de59..15685b2 100644 (file)
@@ -118,7 +118,7 @@ public class protocolAPIHelper {
                 ret=null;\r
                 break;\r
             case Config.PROTOCOL_FZD:\r
-                ret=genStringMessage("PING",protocol_fzd.PING());\r
+                ret=protocol_fzd.PING();\r
                 break;\r
             case Config.PROTOCOL_MQTT:\r
                 ret=null;\r
@@ -127,13 +127,13 @@ public class protocolAPIHelper {
         return ret;\r
     }\r
 \r
-    public static String getTemperatureMSG(double temp_adusted,double body_temp){\r
-        if (is_protocol_not_Initialled()) return "";\r
-        String ret="";\r
+    public static StringMessage getTemperatureMSG(double temp_adusted,double body_temp){\r
+        if (is_protocol_not_Initialled()) return null;\r
+        StringMessage ret=null;\r
         switch(Config.protocol_no)\r
         {\r
             case Config.PROTOCOL_JIAI:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_BEEHOME:\r
                 ret=protocol_beehome.APTP(temp_adusted,body_temp);\r
@@ -145,14 +145,14 @@ public class protocolAPIHelper {
                 ret=protocol_fzd.temp(body_temp);\r
                 break;\r
             case Config.PROTOCOL_MQTT:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
         }\r
         return ret;\r
     }\r
-    public static String getWarningMSG(Runtime runtime){\r
-        if (is_protocol_not_Initialled()) return "";\r
-        String ret="";\r
+    public static StringMessage getWarningMSG(Runtime runtime){\r
+        if (is_protocol_not_Initialled()) return null;\r
+        StringMessage ret=null;\r
         switch(Config.protocol_no)\r
         {\r
             case Config.PROTOCOL_JIAI:\r
@@ -165,10 +165,10 @@ public class protocolAPIHelper {
                 ret=protocol_ic.AP10(runtime);\r
                 break;\r
             case Config.PROTOCOL_FZD:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_MQTT:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
         }\r
         return ret;\r
@@ -180,16 +180,16 @@ public class protocolAPIHelper {
         switch(Config.protocol_no)\r
         {\r
             case Config.PROTOCOL_JIAI:\r
-                ret=genStringMessage("AP00",protocol_jiai.AP00(runtime));\r
+                ret=protocol_jiai.AP00(runtime);\r
                 break;\r
             case Config.PROTOCOL_BEEHOME:\r
-                ret=genStringMessage("AP00",protocol_beehome.AP00(runtime));\r
+                ret=protocol_beehome.AP00(runtime);\r
                 break;\r
             case Config.PROTOCOL_IC:\r
-                ret=genStringMessage("AP00",protocol_ic.AP00(runtime));\r
+                ret=protocol_ic.AP00(runtime);\r
                 break;\r
             case Config.PROTOCOL_FZD:\r
-                ret=genStringMessage("AP00",protocol_fzd.LK());\r
+                ret=protocol_fzd.LK();\r
                 break;\r
             case Config.PROTOCOL_MQTT:\r
                 ret=protocol_mqtt.BREQ(runtime);\r
@@ -204,16 +204,16 @@ public class protocolAPIHelper {
         switch(Config.protocol_no)\r
         {\r
             case Config.PROTOCOL_JIAI:\r
-                ret=genStringMessage("AP03",protocol_jiai.AP03(runtime));\r
+                ret=protocol_jiai.AP03(runtime);\r
                 break;\r
             case Config.PROTOCOL_BEEHOME:\r
-                ret=genStringMessage("AP03",protocol_beehome.AP03(runtime));\r
+                ret=protocol_beehome.AP03(runtime);\r
                 break;\r
             case Config.PROTOCOL_IC:\r
-                ret=genStringMessage("AP03",protocol_ic.AP03(runtime));\r
+                ret=protocol_ic.AP03(runtime);\r
                 break;\r
             case Config.PROTOCOL_FZD:\r
-                ret=genStringMessage("KA",protocol_fzd.KA(runtime));\r
+                ret=protocol_fzd.KA(runtime);\r
                 break;\r
             case Config.PROTOCOL_MQTT:\r
                 ret=protocol_mqtt.KA(runtime);\r
@@ -228,16 +228,16 @@ public class protocolAPIHelper {
         switch(Config.protocol_no)\r
         {\r
             case Config.PROTOCOL_JIAI:\r
-                ret=genStringMessage("AP01",protocol_jiai.AP01(runtime));\r
+                ret=protocol_jiai.AP01(runtime);\r
                 break;\r
             case Config.PROTOCOL_BEEHOME:\r
-                ret=genStringMessage("AP01",protocol_beehome.AP01(runtime));\r
+                ret=protocol_beehome.AP01(runtime);\r
                 break;\r
             case Config.PROTOCOL_IC:\r
-                ret=genStringMessage("AP01",protocol_ic.AP01(runtime));\r
+                ret=protocol_ic.AP01(runtime);\r
                 break;\r
             case Config.PROTOCOL_FZD:\r
-                ret=genStringMessage("UD",protocol_fzd.UD(runtime));\r
+                ret=protocol_fzd.UD(runtime);\r
                 break;\r
             case Config.PROTOCOL_MQTT:\r
                 ret=protocol_mqtt.UD(runtime);\r
@@ -251,16 +251,16 @@ public class protocolAPIHelper {
         switch(Config.protocol_no)\r
         {\r
             case Config.PROTOCOL_JIAI:\r
-                ret=genStringMessage("AP02",protocol_jiai.AP02(runtime));\r
+                ret=protocol_jiai.AP02(runtime);\r
                 break;\r
             case Config.PROTOCOL_BEEHOME:\r
-                ret=genStringMessage("AP02",protocol_beehome.AP02(runtime));\r
+                ret=protocol_beehome.AP02(runtime);\r
                 break;\r
             case Config.PROTOCOL_IC:\r
-                ret=genStringMessage("AP02",protocol_ic.AP02(runtime));\r
+                ret=protocol_ic.AP02(runtime);\r
                 break;\r
             case Config.PROTOCOL_FZD:\r
-                ret=genStringMessage("UD",protocol_fzd.UD(runtime));\r
+                ret=protocol_fzd.UD(runtime);\r
                 break;\r
             case Config.PROTOCOL_MQTT:\r
                 ret=protocol_mqtt.UD(runtime);\r
@@ -292,9 +292,9 @@ public class protocolAPIHelper {
         }\r
         return ret;\r
     }\r
-    public static String getPPG_ECG_MSG(Runtime runtime){\r
-        if (is_protocol_not_Initialled()) return "";\r
-        String ret="";\r
+    public static StringMessage getPPG_ECG_MSG(Runtime runtime){\r
+        if (is_protocol_not_Initialled()) return null;\r
+        StringMessage ret=null;\r
         switch(Config.protocol_no)\r
         {\r
             case Config.PROTOCOL_JIAI:\r
@@ -307,17 +307,17 @@ public class protocolAPIHelper {
                 ret=protocol_ic.APHP(runtime);\r
                 break;\r
             case Config.PROTOCOL_FZD:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_MQTT:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
         }\r
         return ret;\r
     }\r
-    public static String getPPG_ECG_MSG(int  ppg,int bph,int bpl){\r
-        if (is_protocol_not_Initialled()) return "";\r
-        String ret="";\r
+    public static StringMessage getPPG_ECG_MSG(int  ppg,int bph,int bpl){\r
+        if (is_protocol_not_Initialled()) return null;\r
+        StringMessage ret=null;\r
         switch(Config.protocol_no)\r
         {\r
             case Config.PROTOCOL_JIAI:\r
@@ -330,89 +330,89 @@ public class protocolAPIHelper {
                 ret=protocol_ic.APHT(ppg,bph,bpl);\r
                 break;\r
             case Config.PROTOCOL_FZD:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_MQTT:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
         }\r
         return ret;\r
     }\r
 \r
-    public static String getBlood_MSG(int pbh, int pbl){\r
-        if (is_protocol_not_Initialled()) return "";\r
-        String ret="";\r
+    public static StringMessage getBlood_MSG(int pbh, int pbl){\r
+        if (is_protocol_not_Initialled()) return null;\r
+        StringMessage ret=null;\r
         switch(Config.protocol_no)\r
         {\r
             case Config.PROTOCOL_JIAI:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_BEEHOME:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_IC:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_FZD:\r
                 ret=protocol_fzd.blood(pbl,pbh);\r
                 break;\r
             case Config.PROTOCOL_MQTT:\r
-                ret="";//protocol_mqtt.blood(pbl,pbh);\r
+                ret=null;//protocol_mqtt.blood(pbl,pbh);\r
                 break;\r
         }\r
         return ret;\r
     }\r
 \r
-    public static String getOxygen_MSG(int ox){\r
-        if (is_protocol_not_Initialled()) return "";\r
-        String ret="";\r
+    public static StringMessage getOxygen_MSG(int ox){\r
+        if (is_protocol_not_Initialled()) return null;\r
+        StringMessage ret=null;\r
         switch(Config.protocol_no)\r
         {\r
             case Config.PROTOCOL_JIAI:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_BEEHOME:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_IC:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_FZD:\r
                 ret=protocol_fzd.oxygen(ox);\r
                 break;\r
             case Config.PROTOCOL_MQTT:\r
-                ret="";//protocol_mqtt.oxygen(ox);\r
+                ret=null;//protocol_mqtt.oxygen(ox);\r
                 break;\r
         }\r
         return ret;\r
     }\r
-    public static String getPPG_MSG(int ppg){\r
-        if (is_protocol_not_Initialled()) return "";\r
-        String ret="";\r
+    public static StringMessage getPPG_MSG(int ppg){\r
+        if (is_protocol_not_Initialled()) return null;\r
+        StringMessage ret=null;\r
         switch(Config.protocol_no)\r
         {\r
             case Config.PROTOCOL_JIAI:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_BEEHOME:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_IC:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_FZD:\r
                 ret=protocol_fzd.heart(ppg);\r
                 break;\r
             case Config.PROTOCOL_MQTT:\r
-                ret="";//protocol_mqtt.heart(ppg);\r
+                ret=null;//protocol_mqtt.heart(ppg);\r
                 break;\r
         }\r
         return ret;\r
     }\r
-    public static String getPPG_ECG_MSG(int  ppg,int bph,int bpl,int spo2){\r
-        if (is_protocol_not_Initialled()) return "";\r
+    public static StringMessage getPPG_ECG_MSG(int  ppg,int bph,int bpl,int spo2){\r
+        if (is_protocol_not_Initialled()) return null;\r
 \r
-        String ret="";\r
+        StringMessage ret=null;\r
         switch(Config.protocol_no)\r
         {\r
             case Config.PROTOCOL_JIAI:\r
@@ -425,10 +425,10 @@ public class protocolAPIHelper {
                 ret=protocol_ic.APHP(ppg,bph,bpl,spo2);\r
                 break;\r
             case Config.PROTOCOL_FZD:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_MQTT:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
         }\r
         return ret;\r
@@ -481,25 +481,25 @@ public class protocolAPIHelper {
         }\r
         return ret;\r
     }\r
-    public static String getSleepMSG(SleepInfo sr){\r
-        if (is_protocol_not_Initialled()) return "";\r
-        String ret="";\r
+    public static StringMessage getSleepMSG(SleepInfo sr){\r
+        if (is_protocol_not_Initialled()) return null;\r
+        StringMessage ret=null;\r
         switch(Config.protocol_no)\r
         {\r
             case Config.PROTOCOL_JIAI:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_BEEHOME:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_IC:\r
                 ret=protocol_ic.APSL(sr.getCurrentDate(),sr.getDeepsleep_minutes(),sr.getLightsleep_minutes(),sr.getScore());\r
                 break;\r
             case Config.PROTOCOL_FZD:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
             case Config.PROTOCOL_MQTT:\r
-                ret="";\r
+                ret=null;\r
                 break;\r
         }\r
         return ret;\r
index 46f258b..403661d 100644 (file)
@@ -29,6 +29,7 @@ import java.util.HashMap;
 \r
 import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START;\r
 import static com.enqualcomm.support.LocationClient.LOCATION_MODE;\r
+import static com.enqualcomm.support.LocationClient.getInstance;\r
 import static com.enqualcomm.support.bean.Contact.GROUP_ALL;\r
 import static java.lang.Math.abs;\r
 \r
@@ -344,9 +345,9 @@ public class protocol_beehome {
         return -1;\r
     }\r
     /*登录*/\r
-    public static String AP00(Runtime ds) {\r
+    public static StringMessage AP00(Runtime ds) {\r
         //示例数据:IWAP00867155030001063#\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.IMEI()).append(CMDEND).toString();\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP00),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.IMEI()).append(CMDEND).toString());\r
     }\r
 \r
     //处理 登录 BP00\r
@@ -380,7 +381,7 @@ public class protocol_beehome {
     }\r
 \r
 \r
-    public static String AP03(Runtime ds) {\r
+    public static StringMessage AP03(Runtime ds) {\r
         //示例数据:IWAP03,06000908000102,5555,30#  IWAP03,000000null00000,0,0#\r
         //IW: 标识符\r
         //AP03:命令字\r
@@ -396,10 +397,10 @@ public class protocol_beehome {
         //02为工作模式 ,(设防,工作模式如果为00,则代表无或未设置)\r
         //5555: 计步步数,每次到达 9999 后重 0 开始计 (此处 9999 为示例,可以为2字节int 然后溢出归零)\r
         //30: 翻滚次数\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d",abs(ds.getSignalStrength())))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP03),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d",abs(ds.getSignalStrength())))\r
                 .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
                 .append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)\r
-                .append(ds.getTotalStepCount()).append(CMDSPLIT).append(ds.getRolltimes()).append(CMDEND).toString();\r
+                .append(ds.getTotalStepCount()).append(CMDSPLIT).append(ds.getRolltimes()).append(CMDEND).toString());\r
     }\r
     //处理 心跳 BP03\r
     public void handleBP03(String cmd){\r
@@ -408,7 +409,7 @@ public class protocol_beehome {
     }\r
 \r
 \r
-    public static String AP10(Runtime ds){\r
+    public static StringMessage AP10(Runtime ds){\r
 \r
         /**\r
          * IWAP10080524A2232.9806N11404.9355E000.1061830323.8706000908000502,\r
@@ -420,7 +421,7 @@ public class protocol_beehome {
          * 00:第一个0:是否需要回复地址信息,0:不回复,1回复.\r
          * HOME|74-DE-2B-44-88-8C|97&HOME1|74-DE-2B-44-88-8C|97&HOME2|74-DE-2B-44-88-8C|97&HOME3|74-DE-2B-44-88-8C|97#\r
          */\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP10)).append(TimeUtil.getShortDate())\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP10),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP10)).append(TimeUtil.getShortDate())\r
                 .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading())\r
                 .append(String.format("%03d",abs(ds.getSignalStrength())))\r
                 .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
@@ -429,21 +430,21 @@ public class protocol_beehome {
                 .append(ds.getAlarmType()).append(CMDSPLIT)\r
                 .append(ds.getLanguage()).append(CMDSPLIT)\r
                 .append("00").append(CMDSPLIT)  //不回复地址\r
-                .append(ds.getWifiInfo()).append(CMDEND).toString();\r
+                .append(ds.getWifiInfo()).append(CMDEND).toString());\r
 \r
     }\r
 \r
     /*LBS+GPS混合定位*/\r
-    public static String AP01(Runtime ds) {\r
+    public static StringMessage AP01(Runtime ds) {\r
         //示例数据:IWAP01080524A2232.9806N11404.9355E000.1061830323.8706000908000102,\r
         // 460,0,9520,3671,\r
         // Home|74-DE-2B-44-88-8C|97& Home1|74-DE-2B-44-88-8C|97&Home2|74-DE-2B-44-88-8C|97& Home3|74-DE-2B-44-88-8C|97#\r
 //        IWAP01191230A2232.9807N11404.9355E000.1161320000.0006000910000000,460,00,9520,3671,#\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP01)).append(TimeUtil.getShortDate())\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP01),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP01)).append(TimeUtil.getShortDate())\r
                 .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading()).append(String.format("%03d",abs(ds.getSignalStrength())))\r
                 .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
                 .append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)\r
-                .append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString();\r
+                .append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString());\r
     }\r
 \r
     //处理 定位 BP01\r
@@ -454,7 +455,7 @@ public class protocol_beehome {
 \r
 \r
     /*LBS+WiFi混合定位*/\r
-    public static String AP02(Runtime ds) {\r
+    public static StringMessage AP02(Runtime ds) {\r
         //示例数据:IWAP02,\r
         // zh_cn,\r
         // 0,\r
@@ -482,11 +483,11 @@ public class protocol_beehome {
         }\r
 \r
         ICLogger.i("Wifi ap sum "+apsum);\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP02)).append(CMDSPLIT)\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP02),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP02)).append(CMDSPLIT)\r
                 .append(ds.getLanguage()).append(CMDSPLIT)\r
                 .append(0).append(CMDSPLIT) //为0时不回复地址\r
                 .append(ds.getLBSMultiStationData()).append(CMDSPLIT)  //基站信息数据\r
-                .append(apsum).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString();  //wifi信息数据\r
+                .append(apsum).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString());  //wifi信息数据\r
     }\r
 \r
     //处理 定位 BP01\r
@@ -496,12 +497,12 @@ public class protocol_beehome {
 \r
 \r
 \r
-    public static String APXL(String id){\r
+    public static StringMessage APXL(String id){\r
 //设备响应:      IWAPXL,080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APXL),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL))\r
                 .append(CMDSPLIT).append(id)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     /**\r
@@ -523,19 +524,19 @@ public class protocol_beehome {
             String index=list[2];\r
             String imei=list[1];\r
             ICLogger.i("Handle BPXL IMEI "+imei+",index "+index);\r
-            connection.send(genStringMessage("APXL",APXL(index)));\r
+            connection.send(APXL(index));\r
         }else{\r
             ICLogger.i("BPXL format error!");\r
         }\r
 \r
     }\r
 \r
-    public static String APXY(String id){\r
+    public static StringMessage APXY(String id){\r
 //设备响应:      IWAPXY,080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APXY),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY))\r
                 .append(CMDSPLIT).append(id)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     /**\r
@@ -557,7 +558,7 @@ public class protocol_beehome {
             String index=list[2];\r
             String imei=list[1];\r
             ICLogger.i("Handle BPXY IMEI "+imei+",index "+index);\r
-            connection.send(genStringMessage("APXY",APXY(index)));\r
+            connection.send(APXY(index));\r
         }else{\r
             ICLogger.i("BPXY format error!");\r
         }\r
@@ -566,17 +567,17 @@ public class protocol_beehome {
 \r
 \r
 \r
-    public static String APJZ(String id,String BPH,String BPL,String Age,String Sex){\r
+    public static StringMessage APJZ(String id,String BPH,String BPL,String Age,String Sex){\r
         //设备响应:      IWAPJZ,792997,120,85,42,1#\r
         //792997:指令流水号\r
         // 高压120,低压85,年龄42,1 男性\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APJZ))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APJZ),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APJZ))\r
                 .append(CMDSPLIT).append(id)\r
                 .append(CMDSPLIT).append(BPH)\r
                 .append(CMDSPLIT).append(BPL)\r
                 .append(CMDSPLIT).append(Age)\r
                 .append(CMDSPLIT).append(Sex)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     /**\r
@@ -607,7 +608,7 @@ public class protocol_beehome {
             String strAge=list[5];\r
             String strSex=list[6];\r
 \r
-            connection.send(genStringMessage("APJZ",APJZ(index,strBPH,strBPL,strAge,strSex)));\r
+            connection.send(APJZ(index,strBPH,strBPL,strAge,strSex));\r
             runtime.getHRS().setXY_Ref(Integer.parseInt(strBPH),Integer.parseInt(strBPL),Integer.parseInt(strAge),Integer.parseInt(strSex));\r
             ICLogger.i("Handle BPJZ IMEI "+imei+",index "+index+", BPH "+strBPH+", BPL "+strBPL+", Age "+ strAge +", Sex "+ (strSex.equals("1")?"男":"女"));\r
         }else{\r
@@ -620,10 +621,10 @@ public class protocol_beehome {
     //重启\r
 \r
 \r
-    public static String AP18(String index){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP18))\r
+    public static StringMessage AP18(String index){\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP18),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP18))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBP18(Connection connection,String cmd) {\r
@@ -632,16 +633,16 @@ public class protocol_beehome {
         String[] cmdlist=cmd.split(CMDSPLIT);\r
         if (cmdlist.length==3) {\r
 \r
-            connection.send(genStringMessage("AP18",AP18(cmdlist[2])));\r
+            connection.send(AP18(cmdlist[2]));\r
 \r
         }\r
     }\r
     //恢复出厂设置\r
 \r
-    public static String AP17(String index){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP17))\r
+    public static StringMessage AP17(String index){\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP17),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP17))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
     public void handleBP17(Connection connection,String cmd) {\r
 \r
@@ -649,7 +650,7 @@ public class protocol_beehome {
         String[] cmdlist=cmd.split(CMDSPLIT);\r
         if (cmdlist.length==3) {\r
 \r
-            connection.send(genStringMessage("AP17",AP17(cmdlist[2])));\r
+            connection.send(AP17(cmdlist[2]));\r
 \r
         }\r
     }\r
@@ -657,10 +658,10 @@ public class protocol_beehome {
     //关机\r
 \r
 \r
-    public static String AP31(String index){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP31))\r
+    public static StringMessage AP31(String index){\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP31),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP31))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
     public void handleBP31(Connection connection,String cmd) {\r
 \r
@@ -668,19 +669,19 @@ public class protocol_beehome {
         String[] cmdlist=cmd.split(CMDSPLIT);\r
         if (cmdlist.length==3) {\r
 \r
-            connection.send(genStringMessage("AP31",AP31(cmdlist[2])));\r
+            connection.send(AP31(cmdlist[2]));\r
 \r
         }\r
     }\r
 \r
     //设置SOS号码\r
-    public static String AP12(String index,String phNum1,String phNum2,String phNum3){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP12))\r
+    public static StringMessage AP12(String index,String phNum1,String phNum2,String phNum3){\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP12),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP12))\r
                 .append(CMDSPLIT).append(index)\r
                 .append(CMDSPLIT).append(phNum1)\r
                 .append(CMDSPLIT).append(phNum2)\r
                 .append(CMDSPLIT).append(phNum3)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     //设置SOS号码\r
@@ -693,7 +694,7 @@ public class protocol_beehome {
             String phNum2=cmdlist.length>3?(cmdlist.length==4?"":cmdlist[4]):"";\r
             String phNum3=(cmdlist.length>4)?(cmdlist.length==5? "":cmdlist[5]):"";\r
             ICLogger.i(new StringBuffer().append("get Emegency Numbs "+phNum1+","+phNum2+","+phNum3).toString());\r
-            connection.send(genStringMessage("AP12",AP12(index,phNum1,phNum2,phNum3)));\r
+            connection.send(AP12(index,phNum1,phNum2,phNum3));\r
 \r
             ArrayList<Contact> contactArray=new ArrayList<Contact>();\r
             if (!phNum1.isEmpty())  contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos1",phNum1));\r
@@ -708,8 +709,8 @@ public class protocol_beehome {
     }\r
 \r
 \r
-    public static String  AP14(String index,String[] phnumbs){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))\r
+    public static StringMessage  AP14(String index,String[] phnumbs){\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))\r
                 .append(CMDSPLIT).append(index)\r
                 .append(CMDSPLIT).append(phnumbs[0])\r
                 .append(CMDSPLIT).append(phnumbs[1])\r
@@ -721,7 +722,7 @@ public class protocol_beehome {
                 .append(CMDSPLIT).append(phnumbs[7])\r
                 .append(CMDSPLIT).append(phnumbs[8])\r
                 .append(CMDSPLIT).append(phnumbs[9])\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
     //设置通讯录,白名单(10个)\r
     public void handleBP14(Connection connection,String cmd , Runtime runtime){\r
@@ -779,7 +780,7 @@ public class protocol_beehome {
 \r
             String index=cmdlist[2];\r
             ICLogger.i(sb.toString());\r
-            connection.send(genStringMessage("AP14",AP14(index,phnums)));\r
+            connection.send(AP14(index,phnums));\r
             ArrayList<Contact> contactArray=new ArrayList<Contact>();\r
             for (int i=0; i< phnums.length;i++){\r
                 String[] tmp= phnums[i].split("\\|");\r
@@ -808,11 +809,11 @@ public class protocol_beehome {
 \r
 \r
 \r
-    public static String AP85(Runtime ds,String cmddata){\r
+    public static StringMessage AP85(Runtime ds,String cmddata){\r
 //示例数据:IWAP49,68##\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP85),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85))\r
                 .append(CMDSPLIT).append(cmddata)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
 \r
     }\r
     //设置闹钟\r
@@ -910,7 +911,7 @@ public class protocol_beehome {
         String replacement=new StringBuilder("IWBP85,").append(imei).append(",").toString();\r
         String replycmd = cmd.replace(replacement,"");\r
         ICLogger.i("gen reply "+replacement+" "+replycmd);\r
-        connection.send(genStringMessage("AP85",AP85(runtime,replycmd)));\r
+        connection.send(AP85(runtime,replycmd));\r
     }\r
 \r
 \r
@@ -996,14 +997,14 @@ public class protocol_beehome {
 \r
 \r
 \r
-    public static String AP33(String cmdindex,int workMode){\r
+    public static StringMessage AP33(String cmdindex,int workMode){\r
 //IWAP33,080835,1#\r
 //080835:指令流水号\r
 //1:设置信息,供服务器同步\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP33))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP33), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP33))\r
                 .append(CMDSPLIT).append(cmdindex)\r
                 .append(CMDSPLIT).append(workMode)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     //设置工作模式\r
@@ -1037,9 +1038,9 @@ public class protocol_beehome {
 \r
             }\r
 \r
-            String msg=AP33(cmdlist[2],mod);\r
+            StringMessage msg=AP33(cmdlist[2],mod);\r
             //设定当前工作模式及循环频率\r
-            connection.send(genStringMessage("AP33",msg));\r
+            connection.send(msg);\r
             log("reply msg "+msg);\r
             log("LOCATION_MODE  "+LOCATION_MODE+" mod "+ mod);\r
             Config.setLocationMode(runtime.getContextProxy().context,mod);\r
@@ -1053,14 +1054,14 @@ public class protocol_beehome {
     }\r
 \r
 \r
-    public static String AP34(String cmdindex,int workMode){\r
+    public static StringMessage AP34(String cmdindex,int workMode){\r
 //IWAP34,588854,1#\r
 //080835:指令流水号\r
 //8:模式\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP34),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34))\r
                 .append(CMDSPLIT).append(cmdindex)\r
                 .append(CMDSPLIT).append(workMode)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     //设置自定义工作模式\r
@@ -1082,9 +1083,9 @@ public class protocol_beehome {
             int Cycle=Integer.parseInt(cmdlist[4]);\r
             int gpson=Integer.parseInt(cmdlist[5]);\r
 \r
-            String msg=AP34(cmdlist[2],mod);\r
+            StringMessage msg=AP34(cmdlist[2],mod);\r
             //设定当前工作模式及循环频率\r
-            connection.send(genStringMessage("AP34",msg));\r
+            connection.send(msg);\r
 \r
             if(gpson==1){\r
                 mod=ICLocation.CUSTOM_MOD8_GPS;\r
@@ -1118,9 +1119,9 @@ public class protocol_beehome {
             String txtmsg=cmdlist[3];\r
 \r
             txtmsg=Util.UrlGB2312ToUTF8(txtmsg);\r
-            String msg=AP40(cmdindex,1);\r
+            StringMessage msg=AP40(cmdindex,1);\r
             //设定当前工作模式及循环频率\r
-            connection.send(genStringMessage("AP40",msg));\r
+            connection.send(msg);\r
             ICLogger.i("received Txt Msg "+txtmsg);\r
             runtime.getContextProxy().sendMsgBroadcast(txtmsg,0);\r
             runtime.getContextProxy().saveMstToSMSDB(txtmsg);\r
@@ -1128,15 +1129,15 @@ public class protocol_beehome {
             ICLogger.i("BP40 format error!");\r
         }\r
     }\r
-    public static String AP40(String cmdindex,int success){\r
+    public static StringMessage AP40(String cmdindex,int success){\r
 \r
 //        IWAP40,080835,1#\r
 //        080835:指令流水号\r
 //        1:表示设备接受数据成功,0表示设备接受数据失败\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP40))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP40),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP40))\r
                 .append(CMDSPLIT).append(cmdindex)\r
                 .append(CMDSPLIT).append(success)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
 \r
@@ -1145,11 +1146,11 @@ public class protocol_beehome {
      * @param ds\r
      * @return\r
      */\r
-    public static String AP49(Runtime ds){\r
+    public static StringMessage AP49(Runtime ds){\r
         //示例数据:IWAP49,68##\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP49),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49))\r
                 .append(CMDSPLIT).append(ds.getHRS().getPPG())\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
 \r
     }\r
 \r
@@ -1161,7 +1162,7 @@ public class protocol_beehome {
      * @param ds\r
      * @return\r
      */\r
-    public static String APHT(Runtime ds){\r
+    public static StringMessage APHT(Runtime ds){\r
         //IWAPHT,60,130,85#\r
         //说明:\r
         //IW:标识符\r
@@ -1171,13 +1172,13 @@ public class protocol_beehome {
         //85 : 血压低压 [舒张压]\r
         //平台响应:      IWBPHT#\r
         //表示平台已接收,可不作响应\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APHT),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
                 .append(CMDSPLIT).append(ds.getHRS().getPPG())\r
                 .append(CMDSPLIT).append(ds.getHRS().getBPH())\r
                 .append(CMDSPLIT).append(ds.getHRS().getBPL())\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
-    public static String APHT(int  ppg,int bph,int bpl){\r
+    public static StringMessage APHT(int  ppg,int bph,int bpl){\r
         //IWAPHT,60,130,85#\r
         //说明:\r
         //IW:标识符\r
@@ -1187,21 +1188,21 @@ public class protocol_beehome {
         //85 : 血压低压 [舒张压]\r
         //平台响应:      IWBPHT#\r
         //表示平台已接收,可不作响应\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APHT),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
                 .append(CMDSPLIT).append(ppg)\r
                 .append(CMDSPLIT).append(bph)\r
                 .append(CMDSPLIT).append(bpl)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
 \r
     //立即定位反馈\r
-    public static String AP16(String  cmdindex){\r
+    public static StringMessage AP16(String  cmdindex){\r
 //IWAP16,080835#\r
 //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP16))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP16),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP16))\r
                 .append(CMDSPLIT).append(cmdindex)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
     //    立即定位指令(长链接有效)\r
     public void handleBP16(Connection connection,Runtime runtime,String cmd){\r
@@ -1216,7 +1217,7 @@ public class protocol_beehome {
         if(cmdlist.length==3){\r
             log("imei "+cmdlist[1]+", cmdindex "+cmdlist[2]);\r
 \r
-            connection.send(genStringMessage("AP16",AP16(cmdlist[2])));\r
+            connection.send(AP16(cmdlist[2]));\r
         }else{\r
             log("error BP16 format");\r
         }\r
@@ -1224,7 +1225,7 @@ public class protocol_beehome {
 \r
 \r
     /*通过基站获取时间和坐标*/\r
-    public static String APTM(Runtime ds){\r
+    public static StringMessage APTM(Runtime ds){\r
         //示例数据:IWAPTM,460,0,9750,3613#\r
         //说明:\r
         //IW:标识符\r
@@ -1234,12 +1235,12 @@ public class protocol_beehome {
         //9750: LAC\r
         //3613: CID\r
 \r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTM))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APTM),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTM))\r
                 .append(CMDSPLIT).append(ds.getLocationInstance().getMCC())\r
                 .append(CMDSPLIT).append(ds.getLocationInstance().getMNC())\r
                 .append(CMDSPLIT).append(ds.getLocationInstance().getLAC())\r
                 .append(CMDSPLIT).append(ds.getLocationInstance().getGSMStationCID())\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
 \r
     }\r
 \r
@@ -1262,12 +1263,12 @@ public class protocol_beehome {
 \r
     }\r
 \r
-    public static String AP15(String index){\r
+    public static StringMessage AP15(String index){\r
 //IWAP15, 080835#\r
 //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP15))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP15),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP15))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     //设置定位周期\r
@@ -1282,7 +1283,7 @@ public class protocol_beehome {
         if(list.length==4){\r
             String index=list[2];\r
             String time=list[3];\r
-            connection.send(genStringMessage("AP15",AP15(index)));\r
+            connection.send(AP15(index));\r
             ICLogger.i("BP15 , 定位周期="+time+"秒");\r
 \r
             Config.setLocationMode(runtime.getContextProxy().context, ICLocation.CUSTOM_MOD8_GPS);\r
@@ -1303,15 +1304,15 @@ public class protocol_beehome {
 \r
 \r
     /*语音下行反馈*/\r
-    public static String AP28(String name, String msg, int packagecount, int currentpackageindex, int received_success) {\r
+    public static StringMessage AP28(String name, String msg, int packagecount, int currentpackageindex, int received_success) {\r
         //示例数据:IWAP28,D3590D54,xxxx,6,1,1#\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP28),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28))\r
                 .append(CMDSPLIT).append(name)\r
                 .append(CMDSPLIT).append(msg)\r
                 .append(CMDSPLIT).append(packagecount)\r
                 .append(CMDSPLIT).append(currentpackageindex)\r
                 .append(CMDSPLIT).append(received_success)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     //处理 BP28 语音消息\r
@@ -1365,7 +1366,7 @@ public class protocol_beehome {
                     .append(",packetDatalen = ").append(packetData.length);\r
 \r
             log( stringBuffer.toString());\r
-            connection.send(genStringMessage("AP28",AP28(Name,appendIndex,packetCount,currentId,1)));\r
+            connection.send(AP28(Name,appendIndex,packetCount,currentId,1));\r
             voicePacket.getInstance().appendVoice(Name,appendIndex,packetCount,currentId,packetLen,packetData);\r
             log("================"+voicePacket.getInstance().toString());\r
             if (voicePacket.getInstance().isFinished())\r
@@ -1411,15 +1412,15 @@ public class protocol_beehome {
     }\r
 \r
     //白名单开关(下行协议号:BP84,响应:AP84)\r
-    public static String AP84(String index,int success){\r
+    public static StringMessage AP84(String index,int success){\r
 \r
         //设备响应:      IWAP80,080835,1#\r
         //080835:指令流水号\r
         //1:表示设备执行成功,0 表示设备执行失败\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP84))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP84),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP84))\r
                 .append(CMDSPLIT).append(index)\r
                 .append(CMDSPLIT).append(success)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBP84(String cmd,Connection connection){\r
@@ -1436,7 +1437,7 @@ public class protocol_beehome {
         if (list.length==4){\r
             String index=list[2];\r
             String whitelist_switch=list[3];\r
-            connection.send(genStringMessage("AP84",AP84(index,1)));\r
+            connection.send(AP84(index,1));\r
 \r
             if (whitelist_switch.equals("1")){\r
                 Util.setSystemProperties("persist.sys.whitelist.enable","true");\r
@@ -1453,13 +1454,13 @@ public class protocol_beehome {
     }\r
 \r
     //17.绑定解绑(下行协议号:BP68,响应:AP68)\r
-    public static String AP68(String index){\r
+    public static StringMessage AP68(String index){\r
 \r
         //设备响应:      IWAP86, 080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP68))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP68),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP68))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBP68(String cmd,Connection connection,Runtime runtime){\r
@@ -1478,7 +1479,7 @@ public class protocol_beehome {
         if (list.length==4){\r
             String index=list[2];\r
             String type=list[3];\r
-            connection.send(genStringMessage("AP86",AP68(index)));\r
+            connection.send(AP68(index));\r
             ICLogger.i("收到服务器消息:"+(type.equals("1")?"绑定成功 ":"未激活或者解绑"));\r
 \r
         }else{\r
@@ -1487,13 +1488,13 @@ public class protocol_beehome {
 \r
     }\r
     //17.设置心率/血压测量周期(下行协议号:BP86,响应:AP86)\r
-    public static String AP86(String index){\r
+    public static StringMessage AP86(String index){\r
 \r
         //设备响应:      IWAP86, 080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP86))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP86),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP86))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBP86(String cmd,Connection connection,Runtime runtime){\r
@@ -1514,7 +1515,7 @@ public class protocol_beehome {
             String index=list[2];\r
             String type=list[3];\r
             String cycle=list[4];\r
-            connection.send(genStringMessage("AP86",AP86(index)));\r
+            connection.send(AP86(index));\r
             ICLogger.i("收到服务器指令:设置"+(type.equals("1")?"心率周期 ":"血压周期 ")+cycle+"分钟");\r
 \r
             //发送重置PPGCycle的广播,会在CoreServer里面执行\r
@@ -1526,12 +1527,12 @@ public class protocol_beehome {
         }\r
 \r
     }\r
-    public static String AP88(String index){\r
+    public static StringMessage AP88(String index){\r
         //设备响应:      IWAP88, 080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP88))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP88),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP88))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public static void handleBP88(String cmd,Connection connection){\r
@@ -1540,7 +1541,7 @@ public class protocol_beehome {
 \r
         if (list.length==2){\r
             String index=list[1];\r
-            connection.send(genStringMessage("AP88",AP88(index)));\r
+            connection.send(AP88(index));\r
             ICLogger.i("收到服务器消息:查询设备");\r
 \r
         }else{\r
@@ -1549,13 +1550,13 @@ public class protocol_beehome {
     }\r
 \r
     //18.18.设置心率/血压阀值(下行协议号:BP89,响应:AP89)\r
-    public static String AP89(String index){\r
+    public static StringMessage AP89(String index){\r
 \r
         //设备响应:      IWAP89, 080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP89))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP89),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP89))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBP89(String cmd,Connection connection){\r
@@ -1582,7 +1583,7 @@ public class protocol_beehome {
             String BPH_L=list[6];\r
             String BPL_H=list[7];\r
             String BPL_L=list[8];\r
-            connection.send(genStringMessage("AP89",AP89(index)));\r
+            connection.send(AP89(index));\r
             ICLogger.i("收到服务器指令:心率/血压阀值 "+PPGH+","+PPGL+","+BPH_H+","+BPH_L+","+BPL_H+","+BPL_L);\r
         }else{\r
             ICLogger.i("BP89 format error!");\r
@@ -1591,15 +1592,15 @@ public class protocol_beehome {
     }\r
 \r
     //体温间隔测量 (后台测试体温)(下行协议号:BPTE,响应:APTE)\r
-    public static String APTE(String index,int freq){\r
+    public static StringMessage APTE(String index,int freq){\r
 \r
         //设备响应:      IWAPTE,080835,60#\r
         //080835:指令流水号\r
         //1:表示设备接受数据成功,0表示设备接受数据失败\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTE))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APTE),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTE))\r
                 .append(CMDSPLIT).append(index)\r
                 .append(CMDSPLIT).append(freq)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBPTE(String cmd,Connection connection,Runtime runtime){\r
@@ -1617,7 +1618,7 @@ public class protocol_beehome {
             String index=list[2];\r
             String freqstr=list[3];\r
             int freq=Integer.parseInt(freqstr);\r
-            connection.send(genStringMessage("APTE",APTE(index,freq)));\r
+            connection.send(APTE(index,freq));\r
             ICLogger.i("收到服务器指令:测量体温 "+freq+"分钟一次。");\r
             Config.setTemperatureTestCycle(runtime,freq*60);\r
             CoreService.getInstance().setTempAlarm();\r
@@ -1637,18 +1638,18 @@ public class protocol_beehome {
     }\r
 \r
     //体温上行(上行协议号:APTP,响应:BPTP)\r
-    public static String APTP(double wrist_temp,double body_temp){\r
+    public static StringMessage APTP(double wrist_temp,double body_temp){\r
 \r
         //设备:    IWAPTP,36.3,33,132#\r
         //IW:标识符\r
         //APTP : 命令字符\r
         //35.3:测量体温 (摄氏度)\r
         //33,132:温补用的参数,此处不用,可以用0 来代替。\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTP))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APTP),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTP))\r
                 .append(CMDSPLIT).append(String.format("%1$.2f",wrist_temp))\r
                 .append(CMDSPLIT).append(String.format("%1$.2f",body_temp))\r
                 .append(CMDSPLIT).append(0)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBPTP(){\r
@@ -1658,12 +1659,12 @@ public class protocol_beehome {
     }\r
 \r
 \r
-    public static String APX1(String id){\r
+    public static StringMessage APX1(String id){\r
         //设备响应:      IWAPX1, 080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APX1))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APX1),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APX1))\r
                 .append(CMDSPLIT).append(id)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     /**\r
@@ -1692,7 +1693,7 @@ public class protocol_beehome {
             String strBPL=list[5];\r
             String strSpO2=list[6];\r
 \r
-            connection.send(genStringMessage("APJZ",APX1(index)));\r
+            connection.send(APX1(index));\r
 \r
             int ppg_adjust,bph_adjust,bpl_adjust,spo2_adjust;\r
             ppg_adjust=Integer.parseInt(strXL);\r
@@ -1714,12 +1715,12 @@ public class protocol_beehome {
 \r
 \r
 \r
-    public static String APS4(String id){\r
+    public static StringMessage APS4(String id){\r
         //设备响应:      IWAPS4,080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APS4))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APS4),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APS4))\r
                 .append(CMDSPLIT).append(id)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     /**\r
@@ -1743,7 +1744,7 @@ public class protocol_beehome {
 \r
             String index=list[2];\r
             String imei=list[1];\r
-            connection.send(genStringMessage("APS4",APS4(index)));\r
+            connection.send(APS4(index));\r
 \r
             String setting1;\r
             switch(list.length){\r
@@ -1777,7 +1778,7 @@ public class protocol_beehome {
         }\r
     }\r
 \r
-    public static String APHP(Runtime ds){\r
+    public static StringMessage APHP(Runtime ds){\r
         //IWAPHP,60,130,85,95,90, , , , , , , , #\r
         //IW:标识符\r
         //APHT : 命令字符\r
@@ -1787,7 +1788,7 @@ public class protocol_beehome {
         //95:血氧\r
         //90:血糖\r
 //        本消息适用所有终端,其中需要每项指标不一定全部有值,如果无值,则留空\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP))\r
+        return genStringMessage( cmdMap.get(CMD_TYPE.APHP),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP))\r
                 .append(CMDSPLIT).append(ds.getHRS().getPPG())\r
                 .append(CMDSPLIT).append(ds.getHRS().getBPH())\r
                 .append(CMDSPLIT).append(ds.getHRS().getBPL())\r
@@ -1801,9 +1802,9 @@ public class protocol_beehome {
                 .append(CMDSPLIT)\r
                 .append(CMDSPLIT)\r
                 .append(CMDSPLIT)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
-    public static String APHP(int ppg,int bph, int bpl, int spo2){\r
+    public static StringMessage APHP(int ppg,int bph, int bpl, int spo2){\r
         //IWAPHP,60,130,85,95,90, , , , , , , , #\r
         //IW:标识符\r
         //APHT : 命令字符\r
@@ -1813,7 +1814,7 @@ public class protocol_beehome {
         //95:血氧\r
         //90:血糖\r
 //        本消息适用所有终端,其中需要每项指标不一定全部有值,如果无值,则留空\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APHP),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP))\r
                 .append(CMDSPLIT).append(ppg)\r
                 .append(CMDSPLIT).append(bph)\r
                 .append(CMDSPLIT).append(bpl)\r
@@ -1827,7 +1828,7 @@ public class protocol_beehome {
                 .append(CMDSPLIT)\r
                 .append(CMDSPLIT)\r
                 .append(CMDSPLIT)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
      public void handleBPHP(){\r
index 0594505..8c66631 100644 (file)
@@ -308,25 +308,25 @@ public class protocol_fzd {
         return key;\r
     }\r
 \r
-    public static String genFZDCMD( String CMD){\r
+    public static StringMessage genFZDCMD( String CMD){\r
         StringBuilder sb=new StringBuilder();\r
         int len=CMD.length();\r
         String header=genHeader(len,CMD);\r
         String keyheader=keyheader(CMD,len);\r
         sb.append(CMDHEADER).append(keyheader).append(header).append(CMDEND);\r
-        return sb.toString();\r
+        return genStringMessage(CMD,sb.toString());\r
     }\r
-    public static String genFZDCMD( String CMD,String data){\r
+    public static StringMessage genFZDCMD( String CMD,String data){\r
         StringBuilder sb=new StringBuilder();\r
         String data_buf=CMD+CMDSPLIT+data;\r
         int data_buf_len=data_buf.length();\r
         String header=genHeader(data_buf_len,CMD);\r
         String keyheader=keyheader(CMD,data_buf_len);//计算header md5值\r
         sb.append(CMDHEADER).append(keyheader).append(header).append(CMDSPLIT).append(data).append(CMDEND);\r
-        return sb.toString();\r
+        return genStringMessage(CMD,sb.toString());\r
     }\r
     /*登录*/\r
-    public static String LK() {\r
+    public static StringMessage LK() {\r
         /*IC*YYYYYYYYYYYYYYY*LEN*LK*/\r
         return genFZDCMD(cmdMap.get(CMD_TYPE.LK));\r
     }\r
@@ -334,7 +334,7 @@ public class protocol_fzd {
     /**\r
      * 绑定\r
      * */\r
-    public static String PING(){\r
+    public static StringMessage PING(){\r
 //        IC*YYYYYYYYYYYYYYY*LEN*PING\r
         return genFZDCMD(cmdMap.get(CMD_TYPE.PING));\r
     }\r
@@ -354,7 +354,7 @@ public class protocol_fzd {
 \r
     }\r
 \r
-    public static String KA(Runtime runtime){\r
+    public static StringMessage KA(Runtime runtime){\r
 //[IC*YYYYYYYYYYYYYYY*LEN*KA,日期,步数,翻滚次数,电量百分数] 实例:[IC*334588000000156*0014*KA,120414,50,100,100]\r
         StringBuilder sb=new StringBuilder();\r
         String cmd=cmdMap.get(CMD_TYPE.KA);\r
@@ -371,7 +371,7 @@ public class protocol_fzd {
     }\r
 \r
     /*LBS+GPS混合定位*/\r
-    public static String UD(Runtime runtime) {\r
+    public static StringMessage UD(Runtime runtime) {\r
         /***\r
          * [IC*334588000000156*00CD*UD,180916,025723,A,22.570733,N,113.8626083,E,0.00,249.5,0.0,6,100, 60,0,0,00000010,7,255,460,1,9529,21809,158,9529,63555,133,9529,63554,129,9529,21405,126,95\r
          * 29,21242,124,9529,21151,120,9529,63556,119,0]\r
@@ -461,13 +461,13 @@ public class protocol_fzd {
     }\r
 \r
 \r
-    public static String UPLOAD(){\r
+    public static StringMessage UPLOAD(){\r
 \r
         return  genFZDCMD(cmdMap.get(CMD_TYPE.UPLOAD));\r
     }\r
 \r
     public void handleUPLOAD(Connection connection,Runtime runtime,String cmd,String data){\r
-            connection.send(genStringMessage("UPLOAD",UPLOAD()));\r
+            connection.send(UPLOAD());\r
             int timesecond=Integer.parseInt(data);\r
             int mod=runtime.getLocationInstance().getWorkingMod();\r
         log("LOCATION_MODE  "+LOCATION_MODE+" mod "+ mod);\r
@@ -480,48 +480,48 @@ public class protocol_fzd {
 \r
     }\r
 \r
-    public static String heart(int hrt){\r
+    public static StringMessage heart(int hrt){\r
         return genFZDCMD(cmdMap.get(CMD_TYPE.heart),String.valueOf(hrt));\r
     }\r
-    public static String oxygen(int ox){\r
+    public static StringMessage oxygen(int ox){\r
         return genFZDCMD(cmdMap.get(CMD_TYPE.oxygen),String.valueOf(ox));\r
     }\r
 \r
-    public static String blood(int pbl,int pbh){\r
+    public static StringMessage blood(int pbl,int pbh){\r
         String data=pbh+CMDSPLIT+pbl;\r
         return genFZDCMD(cmdMap.get(CMD_TYPE.blood),data);\r
     }\r
 \r
-    public static String temp(double temp){\r
+    public static StringMessage temp(double temp){\r
         return genFZDCMD(cmdMap.get(CMD_TYPE.temp),String.format("%.1f",temp));\r
     }\r
-    public static String POWEROFF(){\r
+    public static StringMessage POWEROFF(){\r
         return genFZDCMD(cmdMap.get(CMD_TYPE.POWEROFF));\r
     }\r
     public void handlePOWEROFF(Connection connection) {\r
 \r
-        connection.send(genStringMessage("POWEROFF",POWEROFF()));\r
+        connection.send(POWEROFF());\r
     }\r
-    public static String CR(){\r
+    public static StringMessage CR(){\r
         return genFZDCMD(cmdMap.get(CMD_TYPE.CR));\r
     }\r
     public void handleCR(Connection connection) {\r
 \r
-        connection.send(genStringMessage("CR",CR()));\r
+        connection.send(CR());\r
     }\r
-    public static String bldstart(){\r
+    public static StringMessage bldstart(){\r
         return genFZDCMD(cmdMap.get(CMD_TYPE.bldstart));\r
     }\r
     public void handleBldstart(Connection connection) {\r
 \r
-        connection.send(genStringMessage("bldstart",bldstart()));\r
+        connection.send(bldstart());\r
     }\r
-    public static String wdstart(){\r
+    public static StringMessage wdstart(){\r
         return genFZDCMD(cmdMap.get(CMD_TYPE.wdstart));\r
     }\r
     public void handleWdstart(Connection connection,Runtime runtime ,String data) {\r
 \r
-        connection.send(genStringMessage("wdstart",wdstart()));\r
+        connection.send(wdstart());\r
         int freq=Integer.parseInt(data);\r
 \r
 \r
@@ -536,28 +536,28 @@ public class protocol_fzd {
 //        String temperatureMsg=temp(body_temp);\r
 //        connection.send(genStringMessage("temp",temperatureMsg));\r
     }\r
-    public static String hrtstart(){\r
+    public static StringMessage hrtstart(){\r
         return genFZDCMD(cmdMap.get(CMD_TYPE.hrtstart));\r
     }\r
     public void handleHrtstart(Connection connection) {\r
 \r
-        connection.send(genStringMessage("hrtstart",hrtstart()));\r
+        connection.send(hrtstart());\r
     }\r
-    public static String FIND(){\r
+    public static StringMessage FIND(){\r
         return genFZDCMD(cmdMap.get(CMD_TYPE.FIND));\r
     }\r
     public void handleFIND(Connection connection) {\r
 \r
-        connection.send(genStringMessage("FIND",FIND()));\r
+        connection.send(FIND());\r
     }\r
-    public static String SOS(){\r
+    public static StringMessage SOS(){\r
         return genFZDCMD(cmdMap.get(CMD_TYPE.SOS));\r
     }\r
 \r
 \r
     public void handleSOS(Connection connection,Runtime runtime,String cmd,String data) {\r
 \r
-        connection.send(genStringMessage("SOS",SOS()));\r
+        connection.send(SOS());\r
         if (data!=null && data.length()>0) {\r
             String list[] = data.split(CMDSPLIT);\r
             if (list.length==1){\r
@@ -588,7 +588,7 @@ public class protocol_fzd {
 \r
 \r
     }\r
-    public static String PHL(){\r
+    public static StringMessage PHL(){\r
         return genFZDCMD(cmdMap.get(CMD_TYPE.PHL));\r
     }\r
 \r
@@ -622,7 +622,7 @@ public class protocol_fzd {
             }else{\r
                 ICLogger.i("没有电话本!执行清除操作!");\r
             }\r
-            connection.send(genStringMessage("PHL",PHL()));\r
+            connection.send(PHL());\r
     }\r
 \r
     public void sendBroadcast(String cmd, Runtime dev) {\r
index ba69aa5..2f17f83 100644 (file)
@@ -381,9 +381,9 @@ public class protocol_ic {
         return -1;\r
     }\r
     /*登录*/\r
-    public static String AP00(Runtime ds) {\r
+    public static StringMessage AP00(Runtime ds) {\r
         //示例数据:IWAP00867155030001063#\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.IMEI()).append(CMDEND).toString();\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP00),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.IMEI()).append(CMDEND).toString());\r
     }\r
 \r
     //处理 登录 BP00\r
@@ -417,7 +417,7 @@ public class protocol_ic {
     }\r
 \r
 \r
-    public static String AP03(Runtime ds) {\r
+    public static StringMessage AP03(Runtime ds) {\r
         //示例数据:IWAP03,06000908000102,5555,30#  IWAP03,000000null00000,0,0#\r
         //IW: 标识符\r
         //AP03:命令字\r
@@ -433,10 +433,10 @@ public class protocol_ic {
         //02为工作模式 ,(设防,工作模式如果为00,则代表无或未设置)\r
         //5555: 计步步数,每次到达 9999 后重 0 开始计 (此处 9999 为示例,可以为2字节int 然后溢出归零)\r
         //30: 翻滚次数\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d",abs(ds.getSignalStrength())))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP03),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d",abs(ds.getSignalStrength())))\r
                 .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
                 .append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)\r
-                .append(ds.getTotalStepCount()).append(CMDSPLIT).append(ds.getRolltimes()).append(CMDEND).toString();\r
+                .append(ds.getTotalStepCount()).append(CMDSPLIT).append(ds.getRolltimes()).append(CMDEND).toString());\r
     }\r
     //处理 心跳 BP03\r
     public void handleBP03(String cmd){\r
@@ -445,7 +445,7 @@ public class protocol_ic {
     }\r
 \r
 \r
-    public static String AP10(Runtime ds){\r
+    public static StringMessage AP10(Runtime ds){\r
 \r
         /**\r
          * IWAP10080524A2232.9806N11404.9355E000.1061830323.8706000908000502,\r
@@ -456,7 +456,7 @@ public class protocol_ic {
          * 00:第一个0:是否需要回复地址信息,0:不回复,1回复.\r
          * HOME|74-DE-2B-44-88-8C|97&HOME1|74-DE-2B-44-88-8C|97&HOME2|74-DE-2B-44-88-8C|97&HOME3|74-DE-2B-44-88-8C|97#\r
          */\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP10)).append(TimeUtil.getShortDate())\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP10),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP10)).append(TimeUtil.getShortDate())\r
                 .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading())\r
                 .append(String.format("%03d",abs(ds.getSignalStrength())))\r
                 .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
@@ -465,21 +465,21 @@ public class protocol_ic {
                 .append(ds.getAlarmType()).append(CMDSPLIT)\r
                 .append(ds.getLanguage()).append(CMDSPLIT)\r
                 .append("00").append(CMDSPLIT)  //不回复地址\r
-                .append(ds.getWifiInfo()).append(CMDEND).toString();\r
+                .append(ds.getWifiInfo()).append(CMDEND).toString());\r
 \r
     }\r
 \r
     /*LBS+GPS混合定位*/\r
-    public static String AP01(Runtime ds) {\r
+    public static StringMessage AP01(Runtime ds) {\r
         //示例数据:IWAP01080524A2232.9806N11404.9355E000.1061830323.8706000908000102,\r
         // 460,0,9520,3671,\r
         // Home|74-DE-2B-44-88-8C|97& Home1|74-DE-2B-44-88-8C|97&Home2|74-DE-2B-44-88-8C|97& Home3|74-DE-2B-44-88-8C|97#\r
 //        IWAP01191230A2232.9807N11404.9355E000.1161320000.0006000910000000,460,00,9520,3671,#\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP01)).append(TimeUtil.getShortDate())\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP01),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP01)).append(TimeUtil.getShortDate())\r
                 .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading()).append(String.format("%03d",abs(ds.getSignalStrength())))\r
                 .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
                 .append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)\r
-                .append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString();\r
+                .append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString());\r
     }\r
 \r
     //处理 定位 BP01\r
@@ -490,7 +490,7 @@ public class protocol_ic {
 \r
 \r
     /*LBS+WiFi混合定位*/\r
-    public static String AP02(Runtime ds) {\r
+    public static StringMessage AP02(Runtime ds) {\r
         //示例数据:IWAP02,\r
         // zh_cn,\r
         // 0,\r
@@ -518,11 +518,11 @@ public class protocol_ic {
         }\r
 \r
         ICLogger.i("Wifi ap sum "+apsum);\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP02)).append(CMDSPLIT)\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP02),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP02)).append(CMDSPLIT)\r
                 .append(ds.getLanguage()).append(CMDSPLIT)\r
                 .append(0).append(CMDSPLIT) //为0时不回复地址\r
                 .append(ds.getLBSMultiStationData()).append(CMDSPLIT)  //基站信息数据\r
-                .append(apsum).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString();  //wifi信息数据\r
+                .append(apsum).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString());  //wifi信息数据\r
     }\r
 \r
     //处理 定位 BP01\r
@@ -532,12 +532,12 @@ public class protocol_ic {
 \r
 \r
 \r
-    public static String APXL(String id){\r
+    public static StringMessage APXL(String id){\r
 //设备响应:      IWAPXL,080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APXL),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL))\r
                 .append(CMDSPLIT).append(id)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     /**\r
@@ -559,19 +559,19 @@ public class protocol_ic {
             String index=list[2];\r
             String imei=list[1];\r
             ICLogger.i("Handle BPXL IMEI "+imei+",index "+index);\r
-            connection.send(genStringMessage("APXL",APXL(index)));\r
+            connection.send(APXL(index));\r
         }else{\r
             ICLogger.i("BPXL format error!");\r
         }\r
 \r
     }\r
 \r
-    public static String APXY(String id){\r
+    public static StringMessage APXY(String id){\r
 //设备响应:      IWAPXY,080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APXY),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY))\r
                 .append(CMDSPLIT).append(id)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     /**\r
@@ -593,7 +593,7 @@ public class protocol_ic {
             String index=list[2];\r
             String imei=list[1];\r
             ICLogger.i("Handle BPXY IMEI "+imei+",index "+index);\r
-            connection.send(genStringMessage("APXY",APXY(index)));\r
+            connection.send(APXY(index));\r
         }else{\r
             ICLogger.i("BPXY format error!");\r
         }\r
@@ -602,17 +602,17 @@ public class protocol_ic {
 \r
 \r
 \r
-    public static String APJZ(String id,String BPH,String BPL,String Age,String Sex){\r
+    public static StringMessage APJZ(String id,String BPH,String BPL,String Age,String Sex){\r
         //设备响应:      IWAPJZ,792997,120,85,42,1#\r
         //792997:指令流水号\r
         // 高压120,低压85,年龄42,1 男性\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APJZ))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APJZ),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APJZ))\r
                 .append(CMDSPLIT).append(id)\r
                 .append(CMDSPLIT).append(BPH)\r
                 .append(CMDSPLIT).append(BPL)\r
                 .append(CMDSPLIT).append(Age)\r
                 .append(CMDSPLIT).append(Sex)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     /**\r
@@ -643,7 +643,7 @@ public class protocol_ic {
             String strAge=list[5];\r
             String strSex=list[6];\r
 \r
-            connection.send(genStringMessage("APJZ",APJZ(index,strBPH,strBPL,strAge,strSex)));\r
+            connection.send(APJZ(index,strBPH,strBPL,strAge,strSex));\r
             runtime.getHRS().setXY_Ref(Integer.parseInt(strBPH),Integer.parseInt(strBPL),Integer.parseInt(strAge),Integer.parseInt(strSex));\r
             ICLogger.i("Handle BPJZ IMEI "+imei+",index "+index+", BPH "+strBPH+", BPL "+strBPL+", Age "+ strAge +", Sex "+ (strSex.equals("1")?"男":"女"));\r
         }else{\r
@@ -656,10 +656,10 @@ public class protocol_ic {
     //重启\r
 \r
 \r
-    public static String AP18(String index){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP18))\r
+    public static StringMessage AP18(String index){\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP18),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP18))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBP18(Connection connection,String cmd) {\r
@@ -668,16 +668,16 @@ public class protocol_ic {
         String[] cmdlist=cmd.split(CMDSPLIT);\r
         if (cmdlist.length==3) {\r
 \r
-            connection.send(genStringMessage("AP18",AP18(cmdlist[2])));\r
+            connection.send(AP18(cmdlist[2]));\r
 \r
         }\r
     }\r
     //恢复出厂设置\r
 \r
-    public static String AP17(String index){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP17))\r
+    public static StringMessage AP17(String index){\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP17),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP17))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
     public void handleBP17(Connection connection,String cmd) {\r
 \r
@@ -685,7 +685,7 @@ public class protocol_ic {
         String[] cmdlist=cmd.split(CMDSPLIT);\r
         if (cmdlist.length==3) {\r
 \r
-            connection.send(genStringMessage("AP17",AP17(cmdlist[2])));\r
+            connection.send(AP17(cmdlist[2]));\r
 \r
         }\r
     }\r
@@ -693,10 +693,10 @@ public class protocol_ic {
     //关机\r
 \r
 \r
-    public static String AP31(String index){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP31))\r
+    public static StringMessage AP31(String index){\r
+        return genStringMessage("AP31",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP31))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
     public void handleBP31(Connection connection,String cmd) {\r
 \r
@@ -704,19 +704,19 @@ public class protocol_ic {
         String[] cmdlist=cmd.split(CMDSPLIT);\r
         if (cmdlist.length==3) {\r
 \r
-            connection.send(genStringMessage("AP31",AP31(cmdlist[2])));\r
+            connection.send(AP31(cmdlist[2]));\r
 \r
         }\r
     }\r
 \r
     //设置SOS号码\r
-    public static String AP12(String index,String phNum1,String phNum2,String phNum3){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP12))\r
+    public static StringMessage AP12(String index,String phNum1,String phNum2,String phNum3){\r
+        return genStringMessage("AP12",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP12))\r
                 .append(CMDSPLIT).append(index)\r
                 .append(CMDSPLIT).append(phNum1)\r
                 .append(CMDSPLIT).append(phNum2)\r
                 .append(CMDSPLIT).append(phNum3)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     //设置SOS号码\r
@@ -729,7 +729,7 @@ public class protocol_ic {
             String phNum2=cmdlist.length>3?(cmdlist.length==4?"":cmdlist[4]):"";\r
             String phNum3=(cmdlist.length>4)?(cmdlist.length==5? "":cmdlist[5]):"";\r
             ICLogger.i(new StringBuffer().append("get Emegency Numbs "+phNum1+","+phNum2+","+phNum3).toString());\r
-            connection.send(genStringMessage("AP12",AP12(index,phNum1,phNum2,phNum3)));\r
+            connection.send(AP12(index,phNum1,phNum2,phNum3));\r
 \r
             ArrayList<Contact> contactArray=new ArrayList<Contact>();\r
 //            if(Config.custom_branch_name.equals("AK")){\r
@@ -754,8 +754,8 @@ public class protocol_ic {
     }\r
 \r
 \r
-    public static String  AP14(String index,String[] phnumbs){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))\r
+    public static StringMessage  AP14(String index,String[] phnumbs){\r
+        return genStringMessage("AP14",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))\r
                 .append(CMDSPLIT).append(index)\r
                 .append(CMDSPLIT).append(phnumbs[0])\r
                 .append(CMDSPLIT).append(phnumbs[1])\r
@@ -767,7 +767,7 @@ public class protocol_ic {
                 .append(CMDSPLIT).append(phnumbs[7])\r
                 .append(CMDSPLIT).append(phnumbs[8])\r
                 .append(CMDSPLIT).append(phnumbs[9])\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
     //设置通讯录,白名单(10个)\r
     public void handleBP14(Connection connection,String cmd , Runtime runtime){\r
@@ -825,7 +825,7 @@ public class protocol_ic {
 \r
             String index=cmdlist[2];\r
             ICLogger.i(sb.toString());\r
-            connection.send(genStringMessage("AP14",AP14(index,phnums)));\r
+            connection.send(AP14(index,phnums));\r
             ArrayList<Contact> contactArray=new ArrayList<Contact>();\r
             for (int i=0; i< phnums.length;i++){\r
                 String[] tmp= phnums[i].split("\\|");\r
@@ -854,11 +854,11 @@ public class protocol_ic {
 \r
 \r
 \r
-    public static String AP85(Runtime ds,String cmddata){\r
+    public static StringMessage AP85(Runtime ds,String cmddata){\r
 //示例数据:IWAP49,68##\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85))\r
+        return genStringMessage("AP85",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85))\r
                 .append(CMDSPLIT).append(cmddata)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
 \r
     }\r
     //设置闹钟\r
@@ -956,7 +956,7 @@ public class protocol_ic {
         String replacement=new StringBuilder("IWBP85,").append(imei).append(",").toString();\r
         String replycmd = cmd.replace(replacement,"");\r
         ICLogger.i("gen reply "+replacement+" "+replycmd);\r
-        connection.send(genStringMessage("AP85",AP85(runtime,replycmd)));\r
+        connection.send(AP85(runtime,replycmd));\r
     }\r
 \r
 \r
@@ -1042,14 +1042,14 @@ public class protocol_ic {
 \r
 \r
 \r
-    public static String AP33(String cmdindex,int workMode){\r
+    public static StringMessage AP33(String cmdindex,int workMode){\r
 //IWAP33,080835,1#\r
 //080835:指令流水号\r
 //1:设置信息,供服务器同步\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP33))\r
+        return genStringMessage("AP33",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP33))\r
                 .append(CMDSPLIT).append(cmdindex)\r
                 .append(CMDSPLIT).append(workMode)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     //设置工作模式\r
@@ -1083,9 +1083,9 @@ public class protocol_ic {
 \r
             }\r
 \r
-            String msg=AP33(cmdlist[2],mod);\r
+            StringMessage msg=AP33(cmdlist[2],mod);\r
             //设定当前工作模式及循环频率\r
-            connection.send(genStringMessage("AP33",msg));\r
+            connection.send(msg);\r
             log("reply msg "+msg);\r
             log("LOCATION_MODE  "+LOCATION_MODE+" mod "+ mod);\r
             Config.setLocationMode(runtime.getContextProxy().context,mod);\r
@@ -1099,14 +1099,14 @@ public class protocol_ic {
     }\r
 \r
 \r
-    public static String AP34(String cmdindex,int workMode){\r
+    public static StringMessage AP34(String cmdindex,int workMode){\r
 //IWAP34,588854,1#\r
 //080835:指令流水号\r
 //8:模式\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34))\r
+        return genStringMessage("AP34",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34))\r
                 .append(CMDSPLIT).append(cmdindex)\r
                 .append(CMDSPLIT).append(workMode)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     //设置自定义工作模式\r
@@ -1128,16 +1128,16 @@ public class protocol_ic {
             int Cycle=Integer.parseInt(cmdlist[4]);\r
             int gpson=Integer.parseInt(cmdlist[5]);\r
 \r
-            String msg=AP34(cmdlist[2],mod);\r
+            StringMessage msg=AP34(cmdlist[2],mod);\r
             //设定当前工作模式及循环频率\r
-            connection.send(genStringMessage("AP34",msg));\r
+            connection.send(msg);\r
 \r
             if(gpson==1){\r
                 mod=ICLocation.CUSTOM_MOD8_GPS;\r
             }else{\r
                 mod=ICLocation.CUSTOM_MOD8_WIFI;\r
             }\r
-            log("reply msg "+msg);\r
+            log("reply msg "+msg.isFromCache());\r
             log("LOCATION_MODE  "+LOCATION_MODE+" mod "+ mod + ", cycle = "+Cycle+", GPS On= "+gpson);\r
             Config.setLocationMode(runtime.getContextProxy().context,mod);\r
             Config.setLocationCycle(runtime.getContextProxy().context,Cycle);\r
@@ -1164,9 +1164,9 @@ public class protocol_ic {
             String txtmsg=cmdlist[3];\r
 \r
             txtmsg=Util.UrlGB2312ToUTF8(txtmsg);\r
-            String msg=AP40(cmdindex,1);\r
+            StringMessage msg=AP40(cmdindex,1);\r
             //设定当前工作模式及循环频率\r
-            connection.send(genStringMessage("AP40",msg));\r
+            connection.send(msg);\r
             ICLogger.i("received Txt Msg "+txtmsg);\r
             runtime.getContextProxy().sendMsgBroadcast(txtmsg,0);\r
             runtime.getContextProxy().saveMstToSMSDB(txtmsg);\r
@@ -1174,15 +1174,15 @@ public class protocol_ic {
             ICLogger.i("BP40 format error!");\r
         }\r
     }\r
-    public static String AP40(String cmdindex,int success){\r
+    public static StringMessage AP40(String cmdindex,int success){\r
 \r
 //        IWAP40,080835,1#\r
 //        080835:指令流水号\r
 //        1:表示设备接受数据成功,0表示设备接受数据失败\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP40))\r
+        return genStringMessage("AP40",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP40))\r
                 .append(CMDSPLIT).append(cmdindex)\r
                 .append(CMDSPLIT).append(success)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
 \r
@@ -1191,11 +1191,11 @@ public class protocol_ic {
      * @param ds\r
      * @return\r
      */\r
-    public static String AP49(Runtime ds){\r
+    public static StringMessage AP49(Runtime ds){\r
         //示例数据:IWAP49,68##\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP49),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49))\r
                 .append(CMDSPLIT).append(ds.getHRS().getPPG())\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
 \r
     }\r
 \r
@@ -1207,7 +1207,7 @@ public class protocol_ic {
      * @param ds\r
      * @return\r
      */\r
-    public static String APHT(Runtime ds){\r
+    public static StringMessage APHT(Runtime ds){\r
         //IWAPHT,60,130,85#\r
         //说明:\r
         //IW:标识符\r
@@ -1217,13 +1217,13 @@ public class protocol_ic {
         //85 : 血压低压 [舒张压]\r
         //平台响应:      IWBPHT#\r
         //表示平台已接收,可不作响应\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APHT),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
                 .append(CMDSPLIT).append(ds.getHRS().getPPG())\r
                 .append(CMDSPLIT).append(ds.getHRS().getBPH())\r
                 .append(CMDSPLIT).append(ds.getHRS().getBPL())\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
-    public static String APHT(int  ppg,int bph,int bpl){\r
+    public static StringMessage APHT(int  ppg,int bph,int bpl){\r
         //IWAPHT,60,130,85#\r
         //说明:\r
         //IW:标识符\r
@@ -1233,21 +1233,21 @@ public class protocol_ic {
         //85 : 血压低压 [舒张压]\r
         //平台响应:      IWBPHT#\r
         //表示平台已接收,可不作响应\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APHT),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
                 .append(CMDSPLIT).append(ppg)\r
                 .append(CMDSPLIT).append(bph)\r
                 .append(CMDSPLIT).append(bpl)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
 \r
     //立即定位反馈\r
-    public static String AP16(String  cmdindex){\r
+    public static StringMessage AP16(String  cmdindex){\r
 //IWAP16,080835#\r
 //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP16))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP16),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP16))\r
                 .append(CMDSPLIT).append(cmdindex)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
     //    立即定位指令(长链接有效)\r
     public void handleBP16(Connection connection,Runtime runtime,String cmd){\r
@@ -1262,7 +1262,7 @@ public class protocol_ic {
         if(cmdlist.length==3){\r
             log("imei "+cmdlist[1]+", cmdindex "+cmdlist[2]);\r
 \r
-            connection.send(genStringMessage("AP16",AP16(cmdlist[2])));\r
+            connection.send(AP16(cmdlist[2]));\r
         }else{\r
             log("error BP16 format");\r
         }\r
@@ -1270,7 +1270,7 @@ public class protocol_ic {
 \r
 \r
     /*通过基站获取时间和坐标*/\r
-    public static String APTM(Runtime ds){\r
+    public static StringMessage APTM(Runtime ds){\r
         //示例数据:IWAPTM,460,0,9750,3613#\r
         //说明:\r
         //IW:标识符\r
@@ -1280,12 +1280,12 @@ public class protocol_ic {
         //9750: LAC\r
         //3613: CID\r
 \r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTM))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APTM),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTM))\r
                 .append(CMDSPLIT).append(ds.getLocationInstance().getMCC())\r
                 .append(CMDSPLIT).append(ds.getLocationInstance().getMNC())\r
                 .append(CMDSPLIT).append(ds.getLocationInstance().getLAC())\r
                 .append(CMDSPLIT).append(ds.getLocationInstance().getGSMStationCID())\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
 \r
     }\r
 \r
@@ -1308,12 +1308,12 @@ public class protocol_ic {
 \r
     }\r
 \r
-    public static String AP15(String index){\r
+    public static StringMessage AP15(String index){\r
 //IWAP15, 080835#\r
 //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP15))\r
+        return genStringMessage("AP15",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP15))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     //设置定位周期\r
@@ -1328,7 +1328,7 @@ public class protocol_ic {
         if(list.length==4){\r
             String index=list[2];\r
             String time=list[3];\r
-            connection.send(genStringMessage("AP15",AP15(index)));\r
+            connection.send(AP15(index));\r
             ICLogger.i("BP15 , 定位周期="+time+"秒");\r
 \r
             Config.setLocationMode(runtime.getContextProxy().context, ICLocation.CUSTOM_MOD8_GPS);\r
@@ -1349,15 +1349,15 @@ public class protocol_ic {
 \r
 \r
     /*语音下行反馈*/\r
-    public static String AP28(String name, String msg, int packagecount, int currentpackageindex, int received_success) {\r
+    public static StringMessage AP28(String name, String msg, int packagecount, int currentpackageindex, int received_success) {\r
         //示例数据:IWAP28,D3590D54,xxxx,6,1,1#\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28))\r
+        return genStringMessage("AP28",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28))\r
                 .append(CMDSPLIT).append(name)\r
                 .append(CMDSPLIT).append(msg)\r
                 .append(CMDSPLIT).append(packagecount)\r
                 .append(CMDSPLIT).append(currentpackageindex)\r
                 .append(CMDSPLIT).append(received_success)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     //处理 BP28 语音消息\r
@@ -1411,7 +1411,7 @@ public class protocol_ic {
                     .append(",packetDatalen = ").append(packetData.length);\r
 \r
             log( stringBuffer.toString());\r
-            connection.send(genStringMessage("AP28",AP28(Name,appendIndex,packetCount,currentId,1)));\r
+            connection.send(AP28(Name,appendIndex,packetCount,currentId,1));\r
             voicePacket.getInstance().appendVoice(Name,appendIndex,packetCount,currentId,packetLen,packetData);\r
             log("================"+voicePacket.getInstance().toString());\r
             if (voicePacket.getInstance().isFinished())\r
@@ -1457,15 +1457,15 @@ public class protocol_ic {
     }\r
 \r
     //白名单开关(下行协议号:BP84,响应:AP84)\r
-    public static String AP84(String index,int success){\r
+    public static StringMessage AP84(String index,int success){\r
 \r
         //设备响应:      IWAP80,080835,1#\r
         //080835:指令流水号\r
         //1:表示设备执行成功,0 表示设备执行失败\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP84))\r
+        return genStringMessage("AP84",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP84))\r
                 .append(CMDSPLIT).append(index)\r
                 .append(CMDSPLIT).append(success)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBP84(String cmd,Connection connection){\r
@@ -1482,7 +1482,7 @@ public class protocol_ic {
         if (list.length==4){\r
             String index=list[2];\r
             String whitelist_switch=list[3];\r
-            connection.send(genStringMessage("AP84",AP84(index,1)));\r
+            connection.send(AP84(index,1));\r
 \r
             if (whitelist_switch.equals("1")){\r
                 Util.setSystemProperties("persist.sys.whitelist.enable","true");\r
@@ -1499,14 +1499,14 @@ public class protocol_ic {
     }\r
 \r
     //17.绑定解绑(下行协议号:BP68,响应:AP68)\r
-    public static String AP68(String index,String cmd){\r
+    public static StringMessage AP68(String index,String cmd){\r
 \r
         //设备响应:      IWAP86, 080835,1#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP68))\r
+        return genStringMessage("AP86",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP68))\r
                 .append(CMDSPLIT).append(index)\r
                 .append(CMDSPLIT).append(cmd)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBP68(String cmd,Connection connection,Runtime runtime){\r
@@ -1525,7 +1525,7 @@ public class protocol_ic {
         if (list.length==4){\r
             String index=list[2];\r
             String type=list[3];\r
-            connection.send(genStringMessage("AP86",AP68(index,type)));\r
+            connection.send(AP68(index,type));\r
             ICLogger.i("收到服务器消息:"+(type.equals("1")?"绑定成功 ":"未激活或者解绑"));\r
             if (Config.custom_branch_name.equals("YQ")||Config.custom_branch_name.equals("YQ_EN")) {//AK-YQ\r
                 if (type.equals("1")) {\r
@@ -1551,13 +1551,13 @@ public class protocol_ic {
 \r
     }\r
     //17.设置心率/血压测量周期(下行协议号:BP86,响应:AP86)\r
-    public static String AP86(String index){\r
+    public static StringMessage AP86(String index){\r
 \r
         //设备响应:      IWAP86, 080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP86))\r
+        return genStringMessage("AP86",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP86))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBP86(String cmd,Connection connection,Runtime runtime){\r
@@ -1578,7 +1578,7 @@ public class protocol_ic {
             String index=list[2];\r
             String type=list[3];\r
             String cycle=list[4];\r
-            connection.send(genStringMessage("AP86",AP86(index)));\r
+            connection.send(AP86(index));\r
             ICLogger.i("收到服务器指令:设置"+(type.equals("1")?"心率周期 ":"血压周期 ")+cycle+"分钟");\r
 \r
             //发送重置PPGCycle的广播,会在CoreServer里面执行\r
@@ -1590,12 +1590,12 @@ public class protocol_ic {
         }\r
 \r
     }\r
-    public static String AP88(String index){\r
+    public static StringMessage AP88(String index){\r
         //设备响应:      IWAP88, 080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP88))\r
+        return genStringMessage("AP88",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP88))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public static void handleBP88(String cmd,Connection connection){\r
@@ -1604,7 +1604,7 @@ public class protocol_ic {
 \r
         if (list.length==2){\r
             String index=list[1];\r
-            connection.send(genStringMessage("AP88",AP88(index)));\r
+            connection.send(AP88(index));\r
             ICLogger.i("收到服务器消息:查询设备");\r
 \r
         }else{\r
@@ -1613,13 +1613,13 @@ public class protocol_ic {
     }\r
 \r
     //18.18.设置心率/血压阀值(下行协议号:BP89,响应:AP89)\r
-    public static String AP89(String index){\r
+    public static StringMessage AP89(String index){\r
 \r
         //设备响应:      IWAP89, 080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP89))\r
+        return genStringMessage("AP89",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP89))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBP89(String cmd,Connection connection){\r
@@ -1646,7 +1646,7 @@ public class protocol_ic {
             String BPH_L=list[6];\r
             String BPL_H=list[7];\r
             String BPL_L=list[8];\r
-            connection.send(genStringMessage("AP89",AP89(index)));\r
+            connection.send(AP89(index));\r
 \r
 \r
             \r
@@ -1658,15 +1658,15 @@ public class protocol_ic {
     }\r
 \r
     //体温间隔测量 (后台测试体温)(下行协议号:BPTE,响应:APTE)\r
-    public static String APTE(String index,int freq){\r
+    public static StringMessage APTE(String index,int freq){\r
 \r
         //设备响应:      IWAPTE,080835,60#\r
         //080835:指令流水号\r
         //1:表示设备接受数据成功,0表示设备接受数据失败\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTE))\r
+        return genStringMessage("APTE",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTE))\r
                 .append(CMDSPLIT).append(index)\r
                 .append(CMDSPLIT).append(freq)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBPTE(String cmd,Connection connection,Runtime runtime){\r
@@ -1684,7 +1684,7 @@ public class protocol_ic {
             String index=list[2];\r
             String freqstr=list[3];\r
             int freq=Integer.parseInt(freqstr);\r
-            connection.send(genStringMessage("APTE",APTE(index,freq)));\r
+            connection.send(APTE(index,freq));\r
             ICLogger.i("收到服务器指令:测量体温 "+freq+"分钟一次。");\r
             Config.setTemperatureTestCycle(runtime,freq*60);\r
             CoreService.getInstance().setTempAlarm();\r
@@ -1698,18 +1698,18 @@ public class protocol_ic {
     }\r
 \r
     //体温上行(上行协议号:APTP,响应:BPTP)\r
-    public static String APTP(double wrist_temp,double body_temp){\r
+    public static StringMessage APTP(double wrist_temp,double body_temp){\r
 \r
         //设备:    IWAPTP,36.3,33,132#\r
         //IW:标识符\r
         //APTP : 命令字符\r
         //35.3:测量体温 (摄氏度)\r
         //33,132:温补用的参数,此处不用,可以用0 来代替。\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTP))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APTP),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTP))\r
                 .append(CMDSPLIT).append(String.format("%1$.2f",wrist_temp))\r
                 .append(CMDSPLIT).append(String.format("%1$.2f",body_temp))\r
                 .append(CMDSPLIT).append(0)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBPTP(){\r
@@ -1719,12 +1719,12 @@ public class protocol_ic {
     }\r
 \r
 \r
-    public static String APX1(String id){\r
+    public static StringMessage APX1(String id){\r
         //设备响应:      IWAPX1, 080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APX1))\r
+        return genStringMessage("APX1",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APX1))\r
                 .append(CMDSPLIT).append(id)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     /**\r
@@ -1753,7 +1753,7 @@ public class protocol_ic {
             String strBPL=list[5];\r
             String strSpO2=list[6];\r
 \r
-            connection.send(genStringMessage("APJZ",APX1(index)));\r
+            connection.send(APX1(index));\r
 \r
             int ppg_adjust,bph_adjust,bpl_adjust,spo2_adjust;\r
             ppg_adjust=Integer.parseInt(strXL);\r
@@ -1780,12 +1780,12 @@ public class protocol_ic {
 \r
 \r
 \r
-    public static String APS4(String id){\r
+    public static StringMessage APS4(String id){\r
         //设备响应:      IWAPS4,080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APS4))\r
+        return genStringMessage("APS4",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APS4))\r
                 .append(CMDSPLIT).append(id)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     /**\r
@@ -1809,7 +1809,7 @@ public class protocol_ic {
 \r
             String index=list[2];\r
             String imei=list[1];\r
-            connection.send(genStringMessage("APS4",APS4(index)));\r
+            connection.send(APS4(index));\r
 \r
             String setting1;\r
             switch(list.length){\r
@@ -1843,7 +1843,7 @@ public class protocol_ic {
         }\r
     }\r
 \r
-    public static String APHP(Runtime ds){\r
+    public static StringMessage APHP(Runtime ds){\r
         //IWAPHP,60,130,85,95,90, , , , , , , , #\r
         //IW:标识符\r
         //APHT : 命令字符\r
@@ -1853,7 +1853,7 @@ public class protocol_ic {
         //95:血氧\r
         //90:血糖\r
 //        本消息适用所有终端,其中需要每项指标不一定全部有值,如果无值,则留空\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APHP),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP))\r
                 .append(CMDSPLIT).append(ds.getHRS().getPPG())\r
                 .append(CMDSPLIT).append(ds.getHRS().getBPH())\r
                 .append(CMDSPLIT).append(ds.getHRS().getBPL())\r
@@ -1867,9 +1867,9 @@ public class protocol_ic {
                 .append(CMDSPLIT)\r
                 .append(CMDSPLIT)\r
                 .append(CMDSPLIT)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
-    public static String APHP(int ppg,int bph, int bpl, int spo2){\r
+    public static StringMessage APHP(int ppg,int bph, int bpl, int spo2){\r
         //IWAPHP,60,130,85,95,90, , , , , , , , #\r
         //IW:标识符\r
         //APHT : 命令字符\r
@@ -1879,7 +1879,7 @@ public class protocol_ic {
         //95:血氧\r
         //90:血糖\r
 //        本消息适用所有终端,其中需要每项指标不一定全部有值,如果无值,则留空\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APHP),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP))\r
                 .append(CMDSPLIT).append(ppg)\r
                 .append(CMDSPLIT).append(bph)\r
                 .append(CMDSPLIT).append(bpl)\r
@@ -1893,7 +1893,7 @@ public class protocol_ic {
                 .append(CMDSPLIT)\r
                 .append(CMDSPLIT)\r
                 .append(CMDSPLIT)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
 \r
@@ -1903,16 +1903,16 @@ public class protocol_ic {
 \r
     }\r
 \r
-    public static String APDE(String id){\r
+    public static StringMessage APDE(String id){\r
         /***\r
          * 示例:\r
         * 设备响应:      IWAPDE,080835#\r
          * 080835:指令流水号\r
          * 说明:   本消息适用所有终端\r
          */\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDE))\r
+        return genStringMessage("APDE",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDE))\r
                 .append(CMDSPLIT).append(id)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBPDE(Connection connection,String cmd,Runtime runtime){\r
@@ -1935,7 +1935,7 @@ public class protocol_ic {
 \r
             String index=list[2];\r
             String msg=list[3];\r
-            connection.send(genStringMessage("APDE",APDE(index)));\r
+            connection.send(APDE(index));\r
             if ( Integer.parseInt(msg) == 0) {\r
                 ICLogger.i("Handle BPDE index " + index + ", 进入禁止区域 ");\r
                 runtime.Fence_Warning_flag=1;\r
@@ -1953,10 +1953,10 @@ public class protocol_ic {
 \r
 \r
     }\r
-    public static String APDG(String id){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDG))\r
+    public static StringMessage APDG(String id){\r
+        return genStringMessage("APDG",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDG))\r
                 .append(CMDSPLIT).append(id)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBPDG(Connection connection,String cmd,Runtime runtime){\r
@@ -1980,7 +1980,7 @@ public class protocol_ic {
             String switch_on=list[3];\r
             String min_temp=list[4];\r
             String max_temp=list[5];\r
-            connection.send(genStringMessage("APDG",APDG(index)));\r
+            connection.send(APDG(index));\r
             if ( Integer.parseInt(switch_on) == 1) {\r
                 ICLogger.i("Handle BPDG index " + index + ", 体温报警阈值开 min="+min_temp+",max="+max_temp);\r
                 runtime.tempInfo.setBodyTempThreshold(Double.valueOf(max_temp),Double.valueOf(min_temp));\r
@@ -2091,7 +2091,7 @@ public class protocol_ic {
         }\r
     }\r
 \r
-    public static String APSL(String date,int deepsleep,int lightsleep,int score){\r
+    public static StringMessage APSL(String date,int deepsleep,int lightsleep,int score){\r
 /***\r
  * 示例:\r
  * IWAPSL,202008003,240,120,90#\r
@@ -2116,15 +2116,15 @@ public class protocol_ic {
                 .append(CMDSPLIT).append(lightsleep)\r
                 .append(CMDSPLIT).append(score)\r
                 .append(CMDEND).toString();\r
-        return sb;\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APSL),sb);\r
     }\r
 \r
-    public static String AP46(String id,String cmd)\r
+    public static StringMessage AP46(String id,String cmd)\r
     {\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP46))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP46),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP46))\r
                 .append(CMDSPLIT).append(id)\r
                 .append(CMDSPLIT).append(cmd)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBP46(String cmd , Connection connection,Runtime runtime) {\r
@@ -2152,7 +2152,7 @@ public class protocol_ic {
             if (cmdlist.length==5) {\r
                 String tmp = cmdlist[4];\r
             }\r
-            connection.send(genStringMessage("AP46",AP46(id,cdd)));\r
+            connection.send(AP46(id,cdd));\r
 \r
             if (cdd.equals("1")) {\r
                 //delay 启动\r
@@ -2171,12 +2171,12 @@ public class protocol_ic {
     }\r
 \r
 \r
-    public static String APDH(String id,String cmd)\r
+    public static StringMessage APDH(String id,String cmd)\r
     {\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDH))\r
+        return genStringMessage("APDH",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDH))\r
                 .append(CMDSPLIT).append(id)\r
                 .append(CMDSPLIT).append(cmd)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
 \r
@@ -2207,7 +2207,7 @@ public class protocol_ic {
             tmp=tmp.replace(CMDEND,"").trim();\r
 \r
             if (tmp.isEmpty()) tmp="15";\r
-            connection.send(genStringMessage("APDH",APDH(id,cdd)));\r
+            connection.send(APDH(id,cdd));\r
 \r
             if (cdd.equals("1")) {\r
                 //delay 启动\r
index a0f094b..57a1953 100644 (file)
@@ -64,6 +64,8 @@ public class protocol_jiai {
         BPHT,\r
         APTM,//基站校时及获取定位\r
         BPTM,\r
+        AP94,//消息已读\r
+        BP94,\r
         /* 服务器发起*/\r
         AP12,\r
         BP12,//SOS 号码设置\r
@@ -101,6 +103,8 @@ public class protocol_jiai {
         BP86,//心率血压测试周期\r
         AP89,\r
         BP89,//心率血压阀值设置\r
+        AP93,\r
+        BP93,//服务器下发文本\r
         UNKNOWN_CMD,\r
     }\r
 \r
@@ -130,6 +134,8 @@ public class protocol_jiai {
         cmdMap.put(CMD_TYPE.BPHT, "BPHT");\r
         cmdMap.put(CMD_TYPE.APTM, "APTM");\r
         cmdMap.put(CMD_TYPE.BPTM, "BPTM");\r
+        cmdMap.put(CMD_TYPE.AP94, "AP94");\r
+        cmdMap.put(CMD_TYPE.BP94, "BP94");\r
         cmdMap.put(CMD_TYPE.AP12, "AP12");\r
         cmdMap.put(CMD_TYPE.BP12, "BP12");\r
         cmdMap.put(CMD_TYPE.AP14, "AP14");\r
@@ -166,6 +172,8 @@ public class protocol_jiai {
         cmdMap.put(CMD_TYPE.BP86, "BP86");\r
         cmdMap.put(CMD_TYPE.AP89, "AP89");\r
         cmdMap.put(CMD_TYPE.BP89, "BP89");\r
+        cmdMap.put(CMD_TYPE.AP93, "AP93");\r
+        cmdMap.put(CMD_TYPE.BP93, "BP93");\r
     }\r
 \r
     private Connection mConnection=null;\r
@@ -309,9 +317,9 @@ public class protocol_jiai {
         return -1;\r
     }\r
     /*登录*/\r
-    public static String AP00(Runtime ds) {\r
+    public static StringMessage AP00(Runtime ds) {\r
         //示例数据:IWAP00867155030001063#\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.IMEI()).append(CMDEND).toString();\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP00),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.IMEI()).append(CMDEND).toString());\r
     }\r
 \r
     //处理 登录 BP00\r
@@ -345,12 +353,12 @@ public class protocol_jiai {
     }\r
 \r
 \r
-    public static String AP03(Runtime ds) {\r
+    public static StringMessage AP03(Runtime ds) {\r
         //示例数据:IWAP03,06000908000102,5555,30#  IWAP03,000000null00000,0,0#\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d",abs(ds.getSignalStrength())))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP03),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d",abs(ds.getSignalStrength())))\r
                 .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
                 .append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)\r
-                .append(ds.getTotalStepCount()).append(CMDSPLIT).append(ds.getRolltimes()).append(CMDEND).toString();\r
+                .append(ds.getTotalStepCount()).append(CMDSPLIT).append(ds.getRolltimes()).append(CMDEND).toString());\r
     }\r
     //处理 心跳 BP03\r
     public void handleBP03(String cmd){\r
@@ -359,7 +367,7 @@ public class protocol_jiai {
     }\r
 \r
 \r
-    public static String AP10(Runtime ds){\r
+    public static StringMessage AP10(Runtime ds){\r
 \r
         /**\r
          * IWAP10080524A2232.9806N11404.9355E000.1  061830  323.87  060 009 080 0 05 02,\r
@@ -382,7 +390,7 @@ public class protocol_jiai {
          * zh-cn:设备语言\r
          * 00:第一个0:是否需要回复地址信息,0:不回复,1回复.\r
          */\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP10)).append(TimeUtil.getShortDate())\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP10),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP10)).append(TimeUtil.getShortDate())\r
                 .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading()).append(String.format("%03d",abs(ds.getSignalStrength())))\r
                 .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
                 .append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)\r
@@ -390,21 +398,21 @@ public class protocol_jiai {
                 .append(ds.getAlarmType()).append(CMDSPLIT)\r
                 .append(ds.getLanguage()).append(CMDSPLIT)\r
                 .append("00").append(CMDSPLIT)  //不回复地址\r
-                .append(ds.getWifiInfo()).append(CMDEND).toString();\r
+                .append(ds.getWifiInfo()).append(CMDEND).toString());\r
 \r
     }\r
 \r
     /*LBS+GPS混合定位*/\r
-    public static String AP01(Runtime ds) {\r
+    public static StringMessage AP01(Runtime ds) {\r
         //示例数据:IWAP01080524A2232.9806N11404.9355E000.1061830323.8706000908000102,\r
         // 460,0,9520,3671,\r
         // Home|74-DE-2B-44-88-8C|97& Home1|74-DE-2B-44-88-8C|97&Home2|74-DE-2B-44-88-8C|97& Home3|74-DE-2B-44-88-8C|97#\r
 //        IWAP01191230A2232.9807N11404.9355E000.1161320000.0006000910000000,460,00,9520,3671,#\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP01)).append(TimeUtil.getShortDate())\r
+        return genStringMessage( cmdMap.get(CMD_TYPE.AP01),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP01)).append(TimeUtil.getShortDate())\r
                 .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading()).append(String.format("%03d",abs(ds.getSignalStrength())))\r
                 .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
                 .append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)\r
-                .append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString();\r
+                .append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString());\r
     }\r
 \r
     //处理 定位 BP01\r
@@ -415,7 +423,7 @@ public class protocol_jiai {
 \r
 \r
     /*LBS+WiFi混合定位*/\r
-    public static String AP02(Runtime ds) {\r
+    public static StringMessage AP02(Runtime ds) {\r
         //示例数据:IWAP02,\r
         // zh_cn,\r
         // 0,\r
@@ -443,11 +451,11 @@ public class protocol_jiai {
         }\r
 \r
         ICLogger.i("Wifi ap sum "+apsum);\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP02)).append(CMDSPLIT)\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP02),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP02)).append(CMDSPLIT)\r
                 .append(ds.getLanguage()).append(CMDSPLIT)\r
                 .append(0).append(CMDSPLIT) //为0时不回复地址\r
                 .append(ds.getLBSMultiStationData()).append(CMDSPLIT)  //基站信息数据\r
-                .append(apsum).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString();  //wifi信息数据\r
+                .append(apsum).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString());  //wifi信息数据\r
     }\r
 \r
     //处理 定位 BP01\r
@@ -457,12 +465,12 @@ public class protocol_jiai {
 \r
 \r
 \r
-    public static String APXL(String id){\r
+    public static StringMessage APXL(String id){\r
 //设备响应:      IWAPXL,080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL))\r
+        return genStringMessage("APXL",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL))\r
                 .append(CMDSPLIT).append(id)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     /**\r
@@ -484,19 +492,19 @@ public class protocol_jiai {
             String index=list[2];\r
             String imei=list[1];\r
             ICLogger.i("Handle BPXL IMEI "+imei+",index "+index);\r
-            connection.send(genStringMessage("APXL",APXL(index)));\r
+            connection.send(APXL(index));\r
         }else{\r
             ICLogger.i("BPXL format error!");\r
         }\r
 \r
     }\r
 \r
-    public static String APXY(String id){\r
+    public static StringMessage APXY(String id){\r
 //设备响应:      IWAPXY,080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY))\r
+        return genStringMessage("APXY",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY))\r
                 .append(CMDSPLIT).append(id)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     /**\r
@@ -518,7 +526,7 @@ public class protocol_jiai {
             String index=list[2];\r
             String imei=list[1];\r
             ICLogger.i("Handle BPXY IMEI "+imei+",index "+index);\r
-            connection.send(genStringMessage("APXY",APXY(index)));\r
+            connection.send(APXY(index));\r
         }else{\r
             ICLogger.i("BPXY format error!");\r
         }\r
@@ -527,17 +535,17 @@ public class protocol_jiai {
 \r
 \r
 \r
-    public static String APJZ(String id,String BPH,String BPL,String Age,String Sex){\r
+    public static StringMessage APJZ(String id,String BPH,String BPL,String Age,String Sex){\r
         //设备响应:      IWAPJZ,792997,120,85,42,1#\r
         //792997:指令流水号\r
         // 高压120,低压85,年龄42,1 男性\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APJZ))\r
+        return genStringMessage("APJZ",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APJZ))\r
                 .append(CMDSPLIT).append(id)\r
                 .append(CMDSPLIT).append(BPH)\r
                 .append(CMDSPLIT).append(BPL)\r
                 .append(CMDSPLIT).append(Age)\r
                 .append(CMDSPLIT).append(Sex)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     /**\r
@@ -568,7 +576,7 @@ public class protocol_jiai {
             String strAge=list[5];\r
             String strSex=list[6];\r
 \r
-            connection.send(genStringMessage("APJZ",APJZ(index,strBPH,strBPL,strAge,strSex)));\r
+            connection.send(APJZ(index,strBPH,strBPL,strAge,strSex));\r
             runtime.getHRS().setXY_Ref(Integer.parseInt(strBPH),Integer.parseInt(strBPL),Integer.parseInt(strAge),Integer.parseInt(strSex));\r
             ICLogger.i("Handle BPJZ IMEI "+imei+",index "+index+", BPH "+strBPH+", BPL "+strBPL+", Age "+ strAge +", Sex "+ (strSex.equals("1")?"男":"女"));\r
         }else{\r
@@ -581,10 +589,10 @@ public class protocol_jiai {
     //重启\r
 \r
 \r
-    public static String AP18(String index){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP18))\r
+    public static StringMessage AP18(String index){\r
+        return genStringMessage("AP18",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP18))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBP18(Connection connection,String cmd) {\r
@@ -593,16 +601,16 @@ public class protocol_jiai {
         String[] cmdlist=cmd.split(CMDSPLIT);\r
         if (cmdlist.length==3) {\r
 \r
-            connection.send(genStringMessage("AP18",AP18(cmdlist[2])));\r
+            connection.send(AP18(cmdlist[2]));\r
 \r
         }\r
     }\r
     //恢复出厂设置\r
 \r
-    public static String AP17(String index){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP17))\r
+    public static StringMessage AP17(String index){\r
+        return genStringMessage("AP17",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP17))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
     public void handleBP17(Connection connection,String cmd) {\r
 \r
@@ -610,7 +618,7 @@ public class protocol_jiai {
         String[] cmdlist=cmd.split(CMDSPLIT);\r
         if (cmdlist.length==3) {\r
 \r
-            connection.send(genStringMessage("AP17",AP17(cmdlist[2])));\r
+            connection.send(AP17(cmdlist[2]));\r
 \r
         }\r
     }\r
@@ -618,10 +626,10 @@ public class protocol_jiai {
     //关机\r
 \r
 \r
-    public static String AP31(String index){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP31))\r
+    public static StringMessage AP31(String index){\r
+        return genStringMessage("AP31",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP31))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
     public void handleBP31(Connection connection,String cmd) {\r
 \r
@@ -629,19 +637,19 @@ public class protocol_jiai {
         String[] cmdlist=cmd.split(CMDSPLIT);\r
         if (cmdlist.length==3) {\r
 \r
-            connection.send(genStringMessage("AP31",AP31(cmdlist[2])));\r
+            connection.send(AP31(cmdlist[2]));\r
 \r
         }\r
     }\r
 \r
     //设置SOS号码\r
-    public static String AP12(String index,String phNum1,String phNum2,String phNum3){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP12))\r
+    public static StringMessage AP12(String index,String phNum1,String phNum2,String phNum3){\r
+        return genStringMessage("AP12",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP12))\r
                 .append(CMDSPLIT).append(index)\r
                 .append(CMDSPLIT).append(phNum1)\r
                 .append(CMDSPLIT).append(phNum2)\r
                 .append(CMDSPLIT).append(phNum3)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     //设置SOS号码\r
@@ -654,7 +662,7 @@ public class protocol_jiai {
             String phNum2=cmdlist.length>3?(cmdlist.length==4?"":cmdlist[4]):"";\r
             String phNum3=(cmdlist.length>4)?(cmdlist.length==5? "":cmdlist[5]):"";\r
             ICLogger.i(new StringBuffer().append("get Emegency Numbs "+phNum1+","+phNum2+","+phNum3).toString());\r
-            connection.send(genStringMessage("AP12",AP12(index,phNum1,phNum2,phNum3)));\r
+            connection.send(AP12(index,phNum1,phNum2,phNum3));\r
 \r
             ArrayList<Contact> contactArray=new ArrayList<Contact>();\r
             if (!phNum1.isEmpty())  contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos1",phNum1));\r
@@ -669,8 +677,8 @@ public class protocol_jiai {
     }\r
 \r
 \r
-    public static String  AP14(String index,String[] phnumbs){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))\r
+    public static StringMessage  AP14(String index,String[] phnumbs){\r
+        return genStringMessage("AP14",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))\r
                 .append(CMDSPLIT).append(index)\r
                 .append(CMDSPLIT).append(phnumbs[0])\r
                 .append(CMDSPLIT).append(phnumbs[1])\r
@@ -682,7 +690,7 @@ public class protocol_jiai {
                 .append(CMDSPLIT).append(phnumbs[7])\r
                 .append(CMDSPLIT).append(phnumbs[8])\r
                 .append(CMDSPLIT).append(phnumbs[9])\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
     //设置通讯录,白名单(10个)\r
     public void handleBP14(Connection connection,String cmd , Runtime runtime){\r
@@ -740,7 +748,7 @@ public class protocol_jiai {
 \r
             String index=cmdlist[2];\r
             ICLogger.i(sb.toString());\r
-            connection.send(genStringMessage("AP14",AP14(index,phnums)));\r
+            connection.send(AP14(index,phnums));\r
             ArrayList<Contact> contactArray=new ArrayList<Contact>();\r
             for (int i=0; i< phnums.length;i++){\r
                 String[] tmp= phnums[i].split("\\|");\r
@@ -769,11 +777,11 @@ public class protocol_jiai {
 \r
 \r
 \r
-    public static String AP85(Runtime ds,String cmddata){\r
+    public static StringMessage AP85(Runtime ds,String cmddata){\r
 //示例数据:IWAP49,68##\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85))\r
+        return genStringMessage("AP85",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85))\r
                 .append(CMDSPLIT).append(cmddata)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
 \r
     }\r
     //设置闹钟\r
@@ -871,7 +879,7 @@ public class protocol_jiai {
         String replacement=new StringBuilder("IWBP85,").append(imei).append(",").toString();\r
         String replycmd = cmd.replace(replacement,"");\r
         ICLogger.i("gen reply "+replacement+" "+replycmd);\r
-        connection.send(genStringMessage("AP85",AP85(runtime,replycmd)));\r
+        connection.send(AP85(runtime,replycmd));\r
     }\r
 \r
 \r
@@ -957,14 +965,14 @@ public class protocol_jiai {
 \r
 \r
 \r
-    public static String AP33(String cmdindex,int workMode){\r
+    public static StringMessage AP33(String cmdindex,int workMode){\r
 //IWAP33,080835,1#\r
 //080835:指令流水号\r
 //1:设置信息,供服务器同步\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP33))\r
+        return genStringMessage("AP33",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP33))\r
                 .append(CMDSPLIT).append(cmdindex)\r
                 .append(CMDSPLIT).append(workMode)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     //设置工作模式\r
@@ -998,10 +1006,10 @@ public class protocol_jiai {
 \r
             }\r
 \r
-            String msg=AP33(cmdlist[2],mod);\r
+            StringMessage msg=AP33(cmdlist[2],mod);\r
             //设定当前工作模式及循环频率\r
-            connection.send(genStringMessage("AP33",msg));\r
-            log("reply msg "+msg);\r
+            connection.send(msg);\r
+            log("reply msg "+msg.isFromCache());\r
             log("LOCATION_MODE  "+LOCATION_MODE+" mod "+ mod);\r
             Config.setLocationMode(runtime.getContextProxy().context,mod);\r
             Config.setLocationCycle(runtime.getContextProxy().context,Cycle);\r
@@ -1014,14 +1022,14 @@ public class protocol_jiai {
     }\r
 \r
 \r
-    public static String AP34(String cmdindex,int workMode){\r
+    public static StringMessage AP34(String cmdindex,int workMode){\r
 //IWAP34,588854,1#\r
 //080835:指令流水号\r
 //8:模式\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34))\r
+        return genStringMessage("AP34",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34))\r
                 .append(CMDSPLIT).append(cmdindex)\r
                 .append(CMDSPLIT).append(workMode)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     //设置自定义工作模式\r
@@ -1043,16 +1051,16 @@ public class protocol_jiai {
             int Cycle=Integer.parseInt(cmdlist[4]);\r
             int gpson=Integer.parseInt(cmdlist[5]);\r
 \r
-            String msg=AP34(cmdlist[2],mod);\r
+            StringMessage msg=AP34(cmdlist[2],mod);\r
             //设定当前工作模式及循环频率\r
-            connection.send(genStringMessage("AP34",msg));\r
+            connection.send(msg);\r
 \r
             if(gpson==1){\r
                 mod=ICLocation.CUSTOM_MOD8_GPS;\r
             }else{\r
                 mod=ICLocation.CUSTOM_MOD8_WIFI;\r
             }\r
-            log("reply msg "+msg);\r
+            log("reply msg "+msg.isFromCache());\r
             log("LOCATION_MODE  "+LOCATION_MODE+" mod "+ mod + ", cycle = "+Cycle+", GPS On= "+gpson);\r
             Config.setLocationMode(runtime.getContextProxy().context,mod);\r
             Config.setLocationCycle(runtime.getContextProxy().context,Cycle);\r
@@ -1069,11 +1077,11 @@ public class protocol_jiai {
      * @param ds\r
      * @return\r
      */\r
-    public static String AP49(Runtime ds){\r
+    public static StringMessage AP49(Runtime ds){\r
         //示例数据:IWAP49,68##\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP49),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49))\r
                 .append(CMDSPLIT).append(ds.getHRS().getPPG())\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
 \r
     }\r
 \r
@@ -1085,7 +1093,7 @@ public class protocol_jiai {
      * @param ds\r
      * @return\r
      */\r
-    public static String APHT(Runtime ds){\r
+    public static StringMessage APHT(Runtime ds){\r
         //IWAPHT,60,130,85#\r
         //说明:\r
         //IW:标识符\r
@@ -1095,13 +1103,13 @@ public class protocol_jiai {
         //85 : 血压低压 [舒张压]\r
         //平台响应:      IWBPHT#\r
         //表示平台已接收,可不作响应\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APHT),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
                 .append(CMDSPLIT).append(ds.getHRS().getPPG())\r
                 .append(CMDSPLIT).append(ds.getHRS().getBPH())\r
                 .append(CMDSPLIT).append(ds.getHRS().getBPL())\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
-    public static String APHT(int  ppg,int bph,int bpl){\r
+    public static StringMessage APHT(int  ppg,int bph,int bpl){\r
         //IWAPHT,60,130,85#\r
         //说明:\r
         //IW:标识符\r
@@ -1111,21 +1119,21 @@ public class protocol_jiai {
         //85 : 血压低压 [舒张压]\r
         //平台响应:      IWBPHT#\r
         //表示平台已接收,可不作响应\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APHT),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
                 .append(CMDSPLIT).append(ppg)\r
                 .append(CMDSPLIT).append(bph)\r
                 .append(CMDSPLIT).append(bpl)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
 \r
     //立即定位反馈\r
-    public static String AP16(String  cmdindex){\r
+    public static StringMessage AP16(String  cmdindex){\r
 //IWAP16,080835#\r
 //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP16))\r
+        return genStringMessage("AP16",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP16))\r
                 .append(CMDSPLIT).append(cmdindex)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
     //    立即定位指令(长链接有效)\r
     public void handleBP16(Connection connection,Runtime runtime,String cmd){\r
@@ -1140,7 +1148,7 @@ public class protocol_jiai {
         if(cmdlist.length==3){\r
             log("imei "+cmdlist[1]+", cmdindex "+cmdlist[2]);\r
 \r
-            connection.send(genStringMessage("AP16",AP16(cmdlist[2])));\r
+            connection.send(AP16(cmdlist[2]));\r
         }else{\r
             log("error BP16 format");\r
         }\r
@@ -1148,7 +1156,7 @@ public class protocol_jiai {
 \r
 \r
     /*通过基站获取时间和坐标*/\r
-    public static String APTM(Runtime ds){\r
+    public static StringMessage APTM(Runtime ds){\r
         //示例数据:IWAPTM,460,0,9750,3613#\r
         //说明:\r
         //IW:标识符\r
@@ -1158,12 +1166,12 @@ public class protocol_jiai {
         //9750: LAC\r
         //3613: CID\r
 \r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTM))\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.APTM),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTM))\r
                 .append(CMDSPLIT).append(ds.getLocationInstance().getMCC())\r
                 .append(CMDSPLIT).append(ds.getLocationInstance().getMNC())\r
                 .append(CMDSPLIT).append(ds.getLocationInstance().getLAC())\r
                 .append(CMDSPLIT).append(ds.getLocationInstance().getGSMStationCID())\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
 \r
     }\r
 \r
@@ -1186,12 +1194,12 @@ public class protocol_jiai {
 \r
     }\r
 \r
-    public static String AP15(String index){\r
+    public static StringMessage AP15(String index){\r
 //IWAP15, 080835#\r
 //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP15))\r
+        return genStringMessage("AP15",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP15))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     //设置定位周期\r
@@ -1206,7 +1214,7 @@ public class protocol_jiai {
         if(list.length==4){\r
             String index=list[2];\r
             String time=list[3];\r
-            connection.send(genStringMessage("AP15",AP15(index)));\r
+            connection.send(AP15(index));\r
             ICLogger.i("BP15 , 定位周期="+time+"秒");\r
 \r
             Config.setLocationMode(runtime.getContextProxy().context, ICLocation.CUSTOM_MOD8_GPS);\r
@@ -1227,15 +1235,15 @@ public class protocol_jiai {
 \r
 \r
     /*语音下行反馈*/\r
-    public static String AP28(String name, String msg, int packagecount, int currentpackageindex, int received_success) {\r
+    public static StringMessage AP28(String name, String msg, int packagecount, int currentpackageindex, int received_success) {\r
         //示例数据:IWAP28,D3590D54,xxxx,6,1,1#\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28))\r
+        return genStringMessage("AP28",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28))\r
                 .append(CMDSPLIT).append(name)\r
                 .append(CMDSPLIT).append(msg)\r
                 .append(CMDSPLIT).append(packagecount)\r
                 .append(CMDSPLIT).append(currentpackageindex)\r
                 .append(CMDSPLIT).append(received_success)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     //处理 BP28 语音消息\r
@@ -1289,7 +1297,7 @@ public class protocol_jiai {
                     .append(",packetDatalen = ").append(packetData.length);\r
 \r
             log( stringBuffer.toString());\r
-            connection.send(genStringMessage("AP28",AP28(Name,appendIndex,packetCount,currentId,1)));\r
+            connection.send(AP28(Name,appendIndex,packetCount,currentId,1));\r
             voicePacket.getInstance().appendVoice(Name,appendIndex,packetCount,currentId,packetLen,packetData);\r
             log("================"+voicePacket.getInstance().toString());\r
             if (voicePacket.getInstance().isFinished())\r
@@ -1335,15 +1343,15 @@ public class protocol_jiai {
     }\r
 \r
     //白名单开关(下行协议号:BP84,响应:AP84)\r
-    public static String AP84(String index,int success){\r
+    public static StringMessage AP84(String index,int success){\r
 \r
         //设备响应:      IWAP80,080835,1#\r
         //080835:指令流水号\r
         //1:表示设备执行成功,0 表示设备执行失败\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP84))\r
+        return genStringMessage("AP84",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP84))\r
                 .append(CMDSPLIT).append(index)\r
                 .append(CMDSPLIT).append(success)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBP84(String cmd,Connection connection){\r
@@ -1360,7 +1368,7 @@ public class protocol_jiai {
         if (list.length==4){\r
             String index=list[2];\r
             String whitelist_switch=list[3];\r
-            connection.send(genStringMessage("AP84",AP84(index,1)));\r
+            connection.send(AP84(index,1));\r
 \r
             if (whitelist_switch.equals("1")){\r
                 Util.setSystemProperties("persist.sys.whitelist.enable","true");\r
@@ -1377,13 +1385,13 @@ public class protocol_jiai {
     }\r
 \r
     //17.设置心率/血压测量周期(下行协议号:BP86,响应:AP86)\r
-    public static String AP86(String index){\r
+    public static StringMessage AP86(String index){\r
 \r
         //设备响应:      IWAP86, 080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP86))\r
+        return genStringMessage("AP86",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP86))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBP86(String cmd,Connection connection,Runtime runtime){\r
@@ -1404,7 +1412,7 @@ public class protocol_jiai {
             String index=list[2];\r
             String type=list[3];\r
             String cycle=list[4];\r
-            connection.send(genStringMessage("AP86",AP86(index)));\r
+            connection.send(AP86(index));\r
             ICLogger.i("收到服务器指令:设置"+(type.equals("1")?"心率周期 ":"血压周期 ")+cycle+"分钟");\r
 \r
             //发送重置PPGCycle的广播,会在CoreServer里面执行\r
@@ -1418,13 +1426,13 @@ public class protocol_jiai {
     }\r
 \r
     //18.18.设置心率/血压阀值(下行协议号:BP89,响应:AP89)\r
-    public static String AP89(String index){\r
+    public static StringMessage AP89(String index){\r
 \r
         //设备响应:      IWAP89, 080835#\r
         //080835:指令流水号\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP89))\r
+        return genStringMessage("AP89",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP89))\r
                 .append(CMDSPLIT).append(index)\r
-                .append(CMDEND).toString();\r
+                .append(CMDEND).toString());\r
     }\r
 \r
     public void handleBP89(String cmd,Connection connection){\r
@@ -1451,13 +1459,104 @@ public class protocol_jiai {
             String BPH_L=list[6];\r
             String BPL_H=list[7];\r
             String BPL_L=list[8];\r
-            connection.send(genStringMessage("AP89",AP89(index)));\r
+            connection.send(AP89(index));\r
             ICLogger.i("收到服务器指令:心率/血压阀值 "+PPGH+","+PPGL+","+BPH_H+","+BPH_L+","+BPL_H+","+BPL_L);\r
         }else{\r
             ICLogger.i("BP89 format error!");\r
         }\r
 \r
     }\r
+\r
+    public static StringMessage AP93(String index){\r
+        /***\r
+         * 20.发送文字到手环(下行协议号:BP93,响应:AP93)\r
+         * 示例:\r
+         * IWBP93, 353456789012345, 080835,123456, 8fd9662f4f8b5b50,2,3#\r
+         * 说明:\r
+         * IW:标识符\r
+         * BP93 : 命令字符\r
+         * 353456789012345:IMEI号,设备唯一ID\r
+         * 080835 :指令流水号\r
+         * 123456:文字来源系统流水号\r
+         * 8fd9662f4f8b5b50: 这是例子(文字内容)\r
+         * 2:语音播报次数,取值范围0-3,0为不播报\r
+         * 3:震动次数,取值范围为0-4, 0为不震动\r
+         * 设备响应:     IWAP93,080835#\r
+         * 080835: 设备响应的时候带上响应流水号\r
+         * 说明:   本消息适用所有终端\r
+         */\r
+        return genStringMessage("AP93",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP93))\r
+                .append(CMDSPLIT).append(index)\r
+                .append(CMDEND).toString());\r
+\r
+    }\r
+\r
+    public void handleBP93(Connection connection,Runtime runtime , String cmd){\r
+        /***\r
+         * 20.发送文字到手环(下行协议号:BP93,响应:AP93)\r
+         * 示例:\r
+         * IWBP93, 353456789012345, 080835,123456, 8fd9662f4f8b5b50,2,3#\r
+         * 说明:\r
+         * IW:标识符\r
+         * BP93 : 命令字符\r
+         * 353456789012345:IMEI号,设备唯一ID\r
+         * 080835 :指令流水号\r
+         * 123456:文字来源系统流水号\r
+         * 8fd9662f4f8b5b50: 这是例子(文字内容)\r
+         * 2:语音播报次数,取值范围0-3,0为不播报\r
+         * 3:震动次数,取值范围为0-4, 0为不震动\r
+         * 设备响应:     IWAP93,080835#\r
+         * 080835: 设备响应的时候带上响应流水号\r
+         * 说明:   本消息适用所有终端\r
+         */\r
+        String[] cmdlist=cmd.split(",");\r
+        if (cmdlist.length == 7){\r
+            String cmdindex=cmdlist[2];\r
+            String msg_index_no=cmdlist[3];\r
+            String txtmsg=cmdlist[4];\r
+            String play_time=cmdlist[5];\r
+            String vib_time=cmdlist[6];\r
+            ICLogger.i("收到服务器文本 "+txtmsg+" 序号 "+msg_index_no+" , 播放 "+play_time+" 次,震动 "+vib_time+" 次!");\r
+            txtmsg=Util.UrlGB2312ToUTF8(txtmsg);\r
+            StringMessage msg=AP93(cmdindex);\r
+            //设定当前工作模式及循环频率\r
+            connection.send(msg);\r
+            ICLogger.i("received Txt Msg "+txtmsg);\r
+            runtime.getContextProxy().sendMsgBroadcast(txtmsg,0);\r
+            runtime.getContextProxy().saveMstToSMSDB(txtmsg);\r
+        }else{\r
+            ICLogger.i("BP40 format error!");\r
+        }\r
+\r
+    }\r
+\r
+    public static StringMessage AP94(Runtime runtime , String index_of_msg ){\r
+        /***\r
+         * 15确认已读文字(上行协议号:AP94,响应:BP94)\r
+         * 示例:\r
+         * IWAP94,123456,1#\r
+         * 说明:\r
+         * IWAP94:标识符\r
+         * APHCI: 命令字符\r
+         * 123456: 文字来源系统流水号\r
+         * 1:确认阅读、0:取消阅读\r
+         * 平台响应:     IWBP94#\r
+         * 表示平台已接收,可不作响应\r
+         * 说明:   本消息适用所有终端\r
+         */\r
+\r
+        //在UI逻辑中,只要有处理就都是已经阅读。所以不存在取消阅读的说法。\r
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP94),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP94))\r
+                .append(CMDSPLIT).append(index_of_msg)\r
+                .append(CMDSPLIT).append("1")\r
+                .append(CMDEND).toString());\r
+\r
+    }\r
+\r
+    public void handleBP94(){\r
+\r
+    }\r
+\r
     public boolean handleCmd(CMD_TYPE type, String cmd) {\r
 \r
         //普通非二进制命令用此函数处理\r
@@ -1594,6 +1693,14 @@ public class protocol_jiai {
                 //心率/血压阀值\r
                 handleBP89(cmd,mConnection);\r
                 break;\r
+\r
+            case BP94:\r
+                handleBP94();\r
+                break;\r
+            case BP93:\r
+                //服务器下发文版\r
+                handleBP93(mConnection,mRuntime,cmd);\r
+                break;\r
         }\r
 \r
         return ret;\r
index 380afad..a42384b 100644 (file)
@@ -39,6 +39,7 @@ public class protocol_mqtt {
     public static final String projName="WBG100";\r
     public static final String protocolVersion="v1";\r
     public static final String mqttKey="QWER15WTF156OQRT1230";\r
+    public static String MQTT_CLIENT_TOPIC_HEADER="";\r
     public enum CMD_TYPE {\r
      //   cmd_type     含义\r
       //          终端主动上传\r
@@ -122,11 +123,16 @@ public class protocol_mqtt {
 \r
 \r
     public static String isCmdStr(StringMessage msg){\r
-        ICLogger.i("mqtt isCmdStr cmd "+msg.cmd());\r
+\r
+        String imei="";\r
+        if(CoreService.getInstance()!=null)\r
+            imei=CoreService.getInstance().getRuntime().IMEI();\r
+        String cmdtype = msg.cmd().replace(projName+"/"+protocolVersion+"/","").replace("/"+imei,"");\r
+        ICLogger.i("mqtt isCmdStr topic "+msg.cmd()+" ,cmd "+cmdtype);\r
         for (CMD_TYPE key : cmdMap.keySet()) {\r
             ICLogger.i("mqtt isCmdStr cmd "+msg.cmd()+" key "+cmdMap.get(key));\r
-            if (cmdMap.get(key).equals(msg.cmd())){\r
-                return msg.cmd();\r
+            if (cmdMap.get(key).equals(cmdtype)){\r
+                return cmdtype;\r
             }\r
         }\r
         return "";\r
@@ -175,6 +181,7 @@ public class protocol_mqtt {
                  .append("/").append(protocolVersion)\r
                  .append("/").append(cmdtype)\r
                  .append("/").append(imei);\r
+\r
         return genStringMessage(sbtopic.toString(),sb.toString());\r
     }\r
 \r