}\r
\r
public static void setTemperatureTestCycle(Runtime runtime,int cycle_minutes) {\r
- SharPreferenceUtil.setPrefInt(runtime.getContextProxy().context,KeyLocationCycle,cycle_minutes);\r
+ SharPreferenceUtil.setPrefInt(runtime.getContextProxy().context,KeyTempTestCycle,cycle_minutes);\r
loadTemperatureSettings(runtime);\r
}\r
public static boolean isUsingCustomServer=false;\r
resetStepCount();\r
}\r
\r
- Config.setHeartBeatCycle(this,3);\r
+ Config.setHeartBeatCycle(this,3); //临时设置为3分钟,给L03测试用。\r
//初始化ServerHeartBeat Cycle\r
Config.loadHearBeatSetting(runtime);\r
//初始化PPG,LocationMod,LocationCycle\r
if (connection.isServerConnected() && runtime.isServerProtocolConnected()) {\r
//测试温度并上报\r
String temperatureMsg=protocolAPIHelper.getTemperatureMSG(TemperatureUtil.get_temp_value_adjusted());\r
+ ICLogger.i("发送体温测量值 "+temperatureMsg);\r
Deliver.sendLocationMSG(temperatureMsg);\r
}\r
setTempAlarm();\r
int cycle=runtime.temp_test_Cycle;\r
\r
AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,cycle, TEMP_ALARM);\r
- sb.append(" setHeartAlarm "+TEMP_ALARM+", cycle "+cycle);\r
+ sb.append(" setTempAlarm "+TEMP_ALARM+", cycle "+cycle);\r
// locationClient.triggerLocationProcess();\r
ICLogger.i(sb.toString());\r
FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString());\r
case ICLocation.EMERGNECY_MOD:\r
cycle = 60;\r
break;\r
+ case ICLocation.CUSTOM_MOD:\r
+ case ICLocation.CUSTOM_MOD8_GPS:\r
+ case ICLocation.CUSTOM_MOD8_WIFI:\r
+ break;\r
+ default:\r
+ sendSMS(phonenumber, "set to Location Failed ,value range should be Mod in (1,2,3,4,5,8,9) and cycle >=30!");\r
+ return true;\r
}\r
LocationClient.setForceLocation(1); //短信设置的至少强制执行第一次定位。否则NORMAL_MOD和LOWPOWER_MOD如果没有运动就无法正常定位\r
runtime.getLocationInstance().setLocation_cycle(cycle);\r
}\r
sendSMS(phonenumber, "set to Location Mode=" + runtime.getLocationInstance().getWorkingMod() + ", Cycle=" + runtime.getLocationInstance().getLocation_cycle());\r
} else {\r
- sendSMS(phonenumber, "set to Location Failed ,value range should be 1<= Mode <=5 and cycle >=30!");\r
+ sendSMS(phonenumber, "set to Location Failed ,value range should be Mod in (1,2,3,4,5,8,9) and cycle >=30!");\r
}\r
\r
} else {\r
.append(runtime.IMEI())\r
.append("\n Srv [").append(runtime.getHost()).append(":").append(runtime.getPort()).append("]").append(KeepAlive.isConnected).append(" , HBcycle ").append(runtime.getHeartBeatCycle())\r
.append("\n ServerConnected is ").append(runtime.isServerProtocolConnected())\r
- .append(",Temp ").append(String.format("%1$.2f",TemperatureUtil.get_temp_value_adjusted())).append(",TA ").append(String.format("%1$.2f",runtime.temperature_adjustValue))\r
+ .append(",Temp ").append(String.format("%1$.2f",TemperatureUtil.get_temp_value_adjusted())).append(",TA ").append(String.format("%1$.2f",TemperatureUtil.getTempAdjustValue()))\r
.append(" \n Bat ").append(runtime.getBattery()).append(",").append(runtime.getBatteryVotage())\r
.append(" charged ").append(runtime.isPowerConnected())\r
.append(" StepCount ").append(runtime.getTotalStepCount())\r
.append(",H").append(runtime.getHRS().getBPH())\r
.append(",L").append(runtime.getHRS().getBPL())\r
.append(",T").append(String.format("%1$.2f",TemperatureUtil.get_temp_value_adjusted()))\r
- .append(",TA").append(String.format("%1$.2f",runtime.temperature_adjustValue))\r
+ .append(",TA").append(String.format("%1$.2f",TemperatureUtil.getTempAdjustValue()))\r
.append(",").append(runtime.getHRS().getTestTime()).append("]")\r
.toString();\r
}\r
private static double temp_adjust_value=0.0f;\r
public static double get_temp_value_origin()\r
{\r
-\r
temp_value_orig= ICJniUtils.getTemperature();\r
+ ICLogger.i("测量体温 原始值 "+temp_value_orig);\r
return temp_value_orig;\r
}\r
public static double get_temp_value_adjusted()\r
{\r
- get_temp_value_origin();\r
- return (temp_value_orig-temp_adjust_value);\r
+ return ICJniUtils.getTemperature();\r
}\r
\r
public static double getTempAdjustValue(){\r
\r
- String tmpstr= FileUtil.readFileLine(new File("/productinfo/temp_adjust_37.txt"));\r
-\r
- double tmp=0.0f;\r
-\r
- if (tmpstr==null || tmpstr.isEmpty())\r
- {\r
- tmpstr="0.0";\r
- }\r
- tmp=Double.valueOf(tmpstr);\r
-\r
- temp_adjust_value=tmp;\r
- ICLogger.i("get Temperature Adjust Value from /productinfo/temp_adjust_37.txt , value="+tmpstr);\r
- return tmp;\r
+ temp_adjust_value=ICJniUtils.getTemperatureAdjustValue();\r
+ ICLogger.i("get Temperature Adjust value="+temp_adjust_value);\r
+ return temp_adjust_value;\r
\r
}\r
}\r
public static native int getSPO2();\r
\r
\r
+ /*获取温度校准后= getTemperatureOrigin - adjustValue */\r
public static native double getTemperature();\r
\r
- }\r
+ /*获取温度校准前*/\r
+ public static native double getTemperatureOrigin();\r
+\r
+ /*设置校准参数*/\r
+ public static native int setTemperatureAdjustValue(double value);\r
+\r
+ /*设置校准参数*/\r
+ public static native double getTemperatureAdjustValue();\r
+\r
+ /*设置当前温度标志位,实际上就是按照二进制位来定义的。\r
+ 0、可以测温\r
+ 第一位为1,0x1、充电超过2分钟或者充电超过2分钟后拔除5分钟内 0001\r
+ 第二位为1,0x2、亮屏超过5分钟或者亮屏超过5分钟后灭屏5分钟内 0010\r
+ 第三位为1,0x4、通话超过2分钟或者通话超过2分钟后挂断5分钟内 0100\r
+ 所有大于0的都不能测温 */\r
+ public static native int setTemperatureValidFlag(int flag);\r
+\r
+ /*此操作仅仅为了检查标志状态设置成功与否,标志已经在内部被使用*/\r
+ public static native int getTemperatureValidFlag();\r
+\r
+\r
+}\r
import com.enqualcomm.support.utils.Connection;\r
import com.enqualcomm.support.utils.ICLogger;\r
import com.enqualcomm.support.utils.NettyConnection;\r
+import com.enqualcomm.support.utils.TemperatureUtil;\r
import com.enqualcomm.support.utils.TimeUtil;\r
import com.enqualcomm.support.utils.Util;\r
\r
import static java.lang.Math.abs;\r
\r
public class protocol_beehome {\r
- private static final String TAG = "ICSrv." + protocol_jiai.class.getSimpleName();\r
+ private static final String TAG = "ICSrv." + protocol_beehome.class.getSimpleName();\r
\r
private static final String CMDHEADER = "IW";\r
private static final String CMDEND = "#";\r
BP34,//自定义工作模式\r
AP40,\r
BP40,//下发文本\r
+ AP68,\r
+ BP68,//绑定解绑\r
APXL,\r
BPXL,//测量心率\r
APXY,\r
cmdMap.put(CMD_TYPE.BP34, "BP34");\r
cmdMap.put(CMD_TYPE.AP40, "AP40");\r
cmdMap.put(CMD_TYPE.BP40, "BP40");\r
+ cmdMap.put(CMD_TYPE.AP68, "AP68");\r
+ cmdMap.put(CMD_TYPE.BP68, "BP68");\r
cmdMap.put(CMD_TYPE.APXL, "APXL");\r
cmdMap.put(CMD_TYPE.BPXL, "BPXL");\r
cmdMap.put(CMD_TYPE.APXY, "APXY");\r
cmdMap.put(CMD_TYPE.BP89, "BP89");\r
cmdMap.put(CMD_TYPE.APTE, "APTE");\r
cmdMap.put(CMD_TYPE.BPTE, "BPTE");\r
+ cmdMap.put(CMD_TYPE.APTP, "APTP");\r
+ cmdMap.put(CMD_TYPE.BPTP, "BPTP");\r
}\r
\r
\r
log("handleBP00", "Set Datetime " + msg[1]);\r
log("handleBP00", "Set TimeZone " + msg[2]);\r
\r
- Date datetime= TimeUtil.parseDatetiime(msg[1]);\r
- int timezone=Integer.parseInt(msg[2]);\r
- if (datetime!=null){\r
- ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
- TimeUtil.setTimeZone(timezone);\r
-\r
-\r
- ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
- TimeUtil.setSysDateTime(runtime.getContextProxy().context,datetime,timezone);\r
- ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
-\r
- }\r
+// Date datetime= TimeUtil.parseDatetiime(msg[1]);\r
+// int timezone=Integer.parseInt(msg[2]);\r
+// if (datetime!=null){\r
+// ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
+// TimeUtil.setTimeZone(timezone);\r
+//\r
+//\r
+// ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
+// TimeUtil.setSysDateTime(runtime.getContextProxy().context,datetime,timezone);\r
+// ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
+//\r
+// }\r
// Set Datetime 20200505112734\r
// Set TimeZone 8\r
\r
\r
}\r
\r
- //17.绑定解绑(下行协议号:BP86,响应:AP86)\r
+ //17.绑定解绑(下行协议号:BP68,响应:AP68)\r
+ public static String AP68(String index){\r
+\r
+ //设备响应: IWAP86, 080835#\r
+ //080835:指令流水号\r
+ return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP68))\r
+ .append(CMDSPLIT).append(index)\r
+ .append(CMDEND).toString();\r
+ }\r
+\r
+ public void handleBP68(String cmd,Connection connection,Runtime runtime){\r
+\r
+ //示例:\r
+ //IWBP68,353456789012345,080835,1#\r
+ //说明:\r
+ //IW:标识符\r
+ //BP68 : 命令字符\r
+ //353456789012345:IMEI号,设备唯一ID\r
+ //080835 :指令流水号\r
+ //1 : 表示设备为激活状态(绑定成功) 0:表示设备为未激活状态(解绑成功)\r
+\r
+ String[] list=cmd.split(CMDSPLIT);\r
+\r
+ if (list.length==4){\r
+ String index=list[2];\r
+ String type=list[3];\r
+ connection.send(genStringMessage("AP86",AP68(index)));\r
+ ICLogger.i("收到服务器消息:"+(type.equals("1")?"绑定成功 ":"未激活或者解绑"));\r
+\r
+ }else{\r
+ ICLogger.i("BP86 format error!");\r
+ }\r
+\r
+ }\r
+ //17.设置心率/血压测量周期(下行协议号:BP86,响应:AP86)\r
public static String AP86(String index){\r
\r
//设备响应: IWAP86, 080835#\r
public void handleBP86(String cmd,Connection connection,Runtime runtime){\r
\r
//示例:\r
- //IWBP86, 353456789012345, 080835,1#\r
+ //IWBP86, 353456789012345, 080835,1,720#\r
//说明:\r
//IW:标识符\r
//BP86 : 命令字符\r
//353456789012345:IMEI号,设备唯一ID\r
//080835 :指令流水号\r
- //1 : 表示设备为激活状态(绑定成功) 0:表示设备为未激活状态(解绑成功)\r
+ //1: 表示心率周期;2 :表示血压周期\r
+ //720: 表示720分钟\r
\r
String[] list=cmd.split(CMDSPLIT);\r
\r
- if (list.length==4){\r
+ if (list.length==5){\r
String index=list[2];\r
String type=list[3];\r
+ String cycle=list[4];\r
connection.send(genStringMessage("AP86",AP86(index)));\r
- ICLogger.i("æ\94¶å\88°æ\9c\8då\8a¡å\99¨æ¶\88æ\81¯ï¼\9a"+(type.equals("1")?"ç»\91å®\9aæ\88\90å\8a\9f ":"æ\9cªæ¿\80æ´»æ\88\96è\80\85è§£ç»\91"));\r
+ ICLogger.i("æ\94¶å\88°æ\9c\8då\8a¡å\99¨æ\8c\87令ï¼\9a设置"+(type.equals("1")?"å¿\83ç\8e\87å\91¨æ\9c\9f ":"è¡\80å\8e\8bå\91¨æ\9c\9f ")+cycle+"å\88\86é\92\9f");\r
\r
+ //发送重置PPGCycle的广播,会在CoreServer里面执行\r
+ Intent intent = new Intent();\r
+ intent.putExtra("PPGTestCycle",Integer.valueOf(cycle));\r
+ runtime.getContextProxy().sendBrodcast(ACTION_HEATR_RATE_START,intent);\r
}else{\r
ICLogger.i("BP86 format error!");\r
}\r
\r
}\r
-\r
public static String AP88(String index){\r
//设备响应: IWAP88, 080835#\r
//080835:指令流水号\r
ICLogger.i("收到服务器指令:测量体温 "+freq+"分钟一次。");\r
Config.setTemperatureTestCycle(runtime,freq);\r
CoreService.getInstance().setTempAlarm();\r
+ String temperatureMsg=APTP(TemperatureUtil.get_temp_value_adjusted());\r
+ connection.send(genStringMessage("APTP",temperatureMsg));\r
+ ICLogger.i("发送体温测量值 "+temperatureMsg);\r
}else{\r
ICLogger.i("BP89 format error!");\r
}\r
case BP86:\r
//绑定解绑消息\r
handleBP86(cmd,mConnection,mRuntime);\r
+ mConnection.DeliverCMDMessageToSystem("AP86",cmd);//通知下面线程状态变化\r
\r
break;\r
\r
case BP89:\r
//心率/血压阀值\r
handleBP89(cmd,mConnection);\r
+ mConnection.DeliverCMDMessageToSystem("AP89",cmd);//通知下面线程状态变化\r
break;\r
\r
case BPTE: //设置测试体温\r
handleBPTE(cmd,mConnection,mRuntime);\r
+ mConnection.DeliverCMDMessageToSystem("APTE",cmd);//通知下面线程状态变化\r
break;\r
\r
case BPTP:\r
handleBPTP();\r
+ mConnection.DeliverCMDMessageToSystem("APTP",cmd);//通知下面线程状态变化\r
break;\r
}\r
\r
log("handleBP00", "Set Datetime " + msg[1]);\r
log("handleBP00", "Set TimeZone " + msg[2]);\r
\r
- Date datetime= TimeUtil.parseDatetiime(msg[1]);\r
- int timezone=Integer.parseInt(msg[2]);\r
- if (datetime!=null){\r
- ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
- TimeUtil.setTimeZone(timezone);\r
-\r
-\r
- ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
- TimeUtil.setSysDateTime(runtime.getContextProxy().context,datetime,timezone);\r
- ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
-\r
- }\r
+// Date datetime= TimeUtil.parseDatetiime(msg[1]);\r
+// int timezone=Integer.parseInt(msg[2]);\r
+// if (datetime!=null){\r
+// ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
+// TimeUtil.setTimeZone(timezone);\r
+//\r
+//\r
+// ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
+// TimeUtil.setSysDateTime(runtime.getContextProxy().context,datetime,timezone);\r
+// ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
+//\r
+// }\r
// Set Datetime 20200505112734\r
// Set TimeZone 8\r
\r
+++ /dev/null
-/* DO NOT EDIT THIS FILE - it is machine generated */\r
-#include <jni.h>\r
-/* Header for class com_ic_jni_ICJniUtils */\r
-\r
-#ifndef _Included_com_ic_jni_ICJniUtils\r
-#define _Included_com_ic_jni_ICJniUtils\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: resetStepCount\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_resetStepCount\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: getStepCount\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_getStepCount\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: enablePedometer\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_enablePedometer\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: disablePedometer\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_disablePedometer\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: isPedometerEnabled\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_isPedometerEnabled\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: saveStepCount\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_saveStepCount\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: recoverStepCount\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_recoverStepCount\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: isPPGavailable\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_isPPGavailable\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: enablePPG\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_enablePPG\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: disablePPG\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_disablePPG\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: getPPG\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_getPPG\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: isPPGStarted\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_isPPGStarted\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: isWeared\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_isWeared\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: getHighBloodPressure\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_getHighBloodPressure\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: getLowBloodPressure\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_getLowBloodPressure\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: getSPO2\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_getSPO2\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: getTemperature\r
- * Signature: ()D\r
- */\r
-JNIEXPORT jdouble JNICALL Java_com_ic_jni_ICJniUtils_getTemperature\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: enable_ps\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_enable_1ps\r
- (JNIEnv *, jclass);\r
-\r
-/*\r
- * Class: com_ic_jni_ICJniUtils\r
- * Method: get_ps_data\r
- * Signature: ()I\r
- */\r
-JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_get_1ps_1data\r
- (JNIEnv *, jclass);\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-#endif\r
-#Sat Jun 27 17:08:46 CST 2020\r
-VERSION_CODE=429\r
+#Tue Jun 30 18:16:52 CST 2020\r
+VERSION_CODE=430\r