From: snickersun Date: Wed, 12 Aug 2020 01:16:27 +0000 (+0800) Subject: protocol_ic AP10 报警类型添加到18种 X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=100bc0d08f3d57180f8032f02d40ea50d904ae11;p=protocol_srv.git protocol_ic AP10 报警类型添加到18种 添加血压,心率高低压 超阈值报警 添加体温阈值设置及报警 优化体温检测,统一接口。 --- diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index 68837ef3..89cf000b 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -918,11 +918,12 @@ public class CoreService extends Service { if (this.mKeepAlive != null) { if (connection.isServerConnected() && runtime.isServerProtocolConnected()) { //测试温度并上报 - double wrist_temp=TemperatureUtil.get_temp_value_adjusted(); - double body_temp=TemperatureUtil.getBodyTemp(wrist_temp,26.0f); - String temperatureMsg=getTemperatureMSG(wrist_temp,body_temp); - ICLogger.i("发送体温测量值 "+temperatureMsg); - Deliver.sendLocationMSG(temperatureMsg); + TemperatureUtil.doTempTestInThread(); +// double wrist_temp=TemperatureUtil.get_temp_value_adjusted(); +// double body_temp=TemperatureUtil.getBodyTemp(wrist_temp,26.0f); +// String temperatureMsg=getTemperatureMSG(wrist_temp,body_temp); +// ICLogger.i("发送体温测量值 "+temperatureMsg); +// Deliver.sendLocationMSG(temperatureMsg); } setTempAlarm(); if (Config.LOG_TOFILE) diff --git a/app/src/main/java/com/enqualcomm/support/bean/Runtime.java b/app/src/main/java/com/enqualcomm/support/bean/Runtime.java index 145a3805..fb9da504 100644 --- a/app/src/main/java/com/enqualcomm/support/bean/Runtime.java +++ b/app/src/main/java/com/enqualcomm/support/bean/Runtime.java @@ -22,8 +22,9 @@ public class Runtime { public int temp_test_Cycle=60*60; public int anti_test_cycle=30; - public int SignalStrength; + public int SignalStrength; + public TemperatureInfo tempInfo=new TemperatureInfo(); public boolean BindingStatus=false; private String battery="000"; @@ -152,11 +153,28 @@ public class Runtime { ALARM_LOWBATTERY, ALARM_ANTIOFF, ALARM_WEARED, + ALARM_CUTOFF,//剪断报警 ALARM_FALL, + ALARM_ABNORMAL_HEART_RATE, + ALARM_HEART_RATE_HIGH, + ALARM_HEART_RATE_LOW, + ALARM_BPH_HIGH, + ALARM_BPH_LOW, + ALARM_BPL_HIGH, + ALARM_BPL_LOW, + ALARM_SEDENTARY, //久坐提醒 + ALARM_ILLEGAL_CUTOFF, + ALARM_LOCK_WATCH, + ALARM_TEMP_HIGH, + ALARM_TEMP_LOW, ALARM_NONE, }; -// 00为无任何报警(01:SOS,02:低电,03:脱落报警,04:佩戴提醒,05/06:跌倒报警)) - public void setAlarmType(AlarmType alarm){ +/*** + * 00为报警状态,00为无任何报警(01:SOS,02:低电,03:脱落报警,04:佩戴提醒,05:剪断报警,06:跌倒报警, + * 07:心率异常, 08:心率过高, 09:心率过低,10:收缩压过高,11:收缩压过低,12:舒张压过高,13:舒张压过低, + * 14:久坐提醒,15:非法解锁(剪断报警),16:锁定提醒(佩戴提醒),17:体温过高,18体温过低) + */ + public void setAlarmType(AlarmType alarm){ // if ( !fall && !lowbattery && !sos && antioff) switch (alarm){ @@ -172,9 +190,60 @@ public class Runtime { case ALARM_WEARED: alarmType="04"; break; - case ALARM_FALL: + case ALARM_CUTOFF: alarmType="05"; break; + case ALARM_FALL: + alarmType="06"; + break; + + case ALARM_ABNORMAL_HEART_RATE: + alarmType="07"; + break; + + case ALARM_HEART_RATE_HIGH: + alarmType="08"; + break; + + case ALARM_HEART_RATE_LOW: + alarmType="09"; + break; + + case ALARM_BPH_HIGH: + alarmType="10"; + break; + + case ALARM_BPH_LOW: + alarmType="11"; + break; + + case ALARM_BPL_HIGH: + alarmType="12"; + break; + + case ALARM_BPL_LOW: + alarmType="13"; + break; + + case ALARM_SEDENTARY: + alarmType="14"; + break; + + case ALARM_ILLEGAL_CUTOFF: + alarmType="15"; + break; + + case ALARM_LOCK_WATCH: + alarmType="16"; + break; + + case ALARM_TEMP_HIGH: + alarmType="17"; + break; + + case ALARM_TEMP_LOW: + alarmType="18"; + break; case ALARM_NONE: default: alarmType="00"; diff --git a/app/src/main/java/com/enqualcomm/support/bean/TemperatureInfo.java b/app/src/main/java/com/enqualcomm/support/bean/TemperatureInfo.java new file mode 100644 index 00000000..349e31a2 --- /dev/null +++ b/app/src/main/java/com/enqualcomm/support/bean/TemperatureInfo.java @@ -0,0 +1,33 @@ +package com.enqualcomm.support.bean; + +public class TemperatureInfo { + + public double currentBodyTemp; + public double currentWristTemp; + public String measureTime; + public double bodyTempThresholdMax=0; + public double bodyTempThresholdMin=0; + + public void setBodyTempThreshold(double max,double min){ + bodyTempThresholdMax=max; + bodyTempThresholdMin=min; + } + + public void setTemp(double bodytemp,double wristtemp){ + currentBodyTemp=bodytemp; + currentWristTemp=wristtemp; + } + /*** + * + * @return 0 normal , 1 过高,2 过低 + */ + public int isBodyTempAbnormal(){ + if( bodyTempThresholdMax >0 && currentBodyTemp >bodyTempThresholdMax){ + return 1; + }else if (bodyTempThresholdMin>0 && currentBodyTemp < bodyTempThresholdMin){ + return 2; + }else { + return 0; + } + } +} diff --git a/app/src/main/java/com/enqualcomm/support/bean/heartRateStatus.java b/app/src/main/java/com/enqualcomm/support/bean/heartRateStatus.java index dea43c1f..6881146a 100644 --- a/app/src/main/java/com/enqualcomm/support/bean/heartRateStatus.java +++ b/app/src/main/java/com/enqualcomm/support/bean/heartRateStatus.java @@ -19,6 +19,13 @@ public class heartRateStatus { private int bph_adjust=0; private int bpl_adjust=0; + public int ppg_threshold_max=0; + public int ppg_threshold_min=0; + public int bph_threshold_max=0; + public int bph_threshold_min=0; + public int bpl_threshold_max=0; + public int bpl_threshold_min=0; + public void setXY_Ref(int refBPH,int refBPL,int refSex,int refAge){ BPH_ref=refBPH; BPL_ref=refBPL; @@ -122,4 +129,19 @@ public class heartRateStatus { lastBPL=bpl; lastSpo2=sp02; } + +//心率低阀值,低于该阀值上传心率,如果未设置,则留空 +//心率高阀值,高于该阀值上传心率,如果未设置,则留空 +//低压阀值,低压低于该阀值上传血压,如果未设置,则留空 +//低压阀值,低压高于该阀值上传血压,如果未设置,则留空 +//高压阀值,高压低于该阀值上传血压,如果未设置,则留空 +//高压阀值,高压高于该阀值上传血压,如果未设置,则留空 + public void setWarningThreshold(int _ppg_threshold_max,int _ppg_threshold_min,int _bph_threshold_max,int _bph_threshold_min,int _bpl_threshold_max,int _bpl_threshold_min){ + ppg_threshold_max=_ppg_threshold_max; + ppg_threshold_min=_ppg_threshold_min; + bph_threshold_max=_bph_threshold_max; + bph_threshold_min=_bph_threshold_min; + bpl_threshold_max=_bpl_threshold_max; + bpl_threshold_min=_bpl_threshold_min; + } } diff --git a/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java b/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java index 21afdc8b..6168d7ec 100644 --- a/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java +++ b/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java @@ -17,6 +17,7 @@ import android.os.PowerManager; import com.enqualcomm.support.Config; import com.enqualcomm.support.Constants; import com.enqualcomm.support.CoreService; +import com.enqualcomm.support.utils.Util; import com.ic.jni.ICJniUtils; import com.ic.protocols.protocolAPIHelper; import com.enqualcomm.support.bean.Runtime; @@ -52,7 +53,48 @@ public class HeartRateManager extends AbstractInvokeHandlerService implements Se private ScheduledThreadPoolExecutor timerPPG=null; private static Handler mHandler=null; + private void checkWarning(){ + //ppg + if(runtime.getHRS().ppg_threshold_max>0 && runtime.getHRS().getPPG() >runtime.getHRS().ppg_threshold_max){ + runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_HIGH); + //trigger AP10 报警定位 + CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime))); + + }else if ( runtime.getHRS().ppg_threshold_min>0 && runtime.getHRS().getPPG()0 && runtime.getHRS().getBPH() >runtime.getHRS().bph_threshold_max){ + + runtime.setAlarmType(Runtime.AlarmType.ALARM_BPH_HIGH); + //trigger AP10 报警定位 + CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime))); + + }else if ( runtime.getHRS().bph_threshold_min>0 && runtime.getHRS().getBPH()0 && runtime.getHRS().getBPL() >runtime.getHRS().bpl_threshold_max){ + + runtime.setAlarmType(Runtime.AlarmType.ALARM_BPL_HIGH); + //trigger AP10 报警定位 + CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime))); + + }else if ( runtime.getHRS().bpl_threshold_min>0 && runtime.getHRS().getBPL() 0) { currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS; - } else { currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_WARED_AND_TESTING; } diff --git a/app/src/main/java/com/enqualcomm/support/utils/TemperatureUtil.java b/app/src/main/java/com/enqualcomm/support/utils/TemperatureUtil.java index d3799902..07eae293 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/TemperatureUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/TemperatureUtil.java @@ -5,6 +5,7 @@ import android.content.Intent; import com.enqualcomm.support.Constants; import com.enqualcomm.support.CoreService; +import com.enqualcomm.support.bean.Runtime; import com.ic.jni.ICJniUtils; import com.ic.protocols.protocolAPIHelper; import com.sina.util.dnscache.log.FileUtil; @@ -66,11 +67,30 @@ public class TemperatureUtil { wrist_temp=TemperatureUtil.get_temp_value_adjusted(); body_temp=TemperatureUtil.getBodyTemp(wrist_temp,26.0f); + ICJniUtils.disableTemperature(); + String temperatureMsg= protocolAPIHelper.getTemperatureMSG(wrist_temp, body_temp); CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("APTP",temperatureMsg)); ICLogger.i("发送体温测量值 "+temperatureMsg); - ICJniUtils.disableTemperature(); + Runtime runtime=CoreService.getInstance().getRuntime(); + runtime.tempInfo.setTemp(body_temp,wrist_temp); + + switch( runtime.tempInfo.isBodyTempAbnormal()){ + case 0: + break; + case 1: + runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_HIGH); + //trigger AP10 报警定位 + CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime))); + break; + case 2: + runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_LOW); + //trigger AP10 报警定位 + CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime))); + break; + } + }else{ double wrist_temp,body_temp; @@ -79,6 +99,24 @@ public class TemperatureUtil { String temperatureMsg= protocolAPIHelper.getTemperatureMSG(wrist_temp, body_temp); CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("APTP",temperatureMsg)); ICLogger.i("发送体温测量值 "+temperatureMsg); + + Runtime runtime=CoreService.getInstance().getRuntime(); + runtime.tempInfo.setTemp(body_temp,wrist_temp); + + switch( runtime.tempInfo.isBodyTempAbnormal()){ + case 0: + break; + case 1: + runtime.setAlarmType(Runtime.AlarmType.ALARM_TEMP_HIGH); + //trigger AP10 报警定位 + CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime))); + break; + case 2: + runtime.setAlarmType(Runtime.AlarmType.ALARM_TEMP_LOW); + //trigger AP10 报警定位 + CoreService.getInstance().getConnection().send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime))); + break; + } } } diff --git a/app/src/main/java/com/ic/protocols/protocol_beehome.java b/app/src/main/java/com/ic/protocols/protocol_beehome.java index 3ff7a931..5aa37f0a 100644 --- a/app/src/main/java/com/ic/protocols/protocol_beehome.java +++ b/app/src/main/java/com/ic/protocols/protocol_beehome.java @@ -1621,12 +1621,15 @@ public class protocol_beehome { ICLogger.i("收到服务器指令:测量体温 "+freq+"分钟一次。"); Config.setTemperatureTestCycle(runtime,freq*60); CoreService.getInstance().setTempAlarm(); - double wrist_temp,body_temp; - wrist_temp=TemperatureUtil.get_temp_value_adjusted(); - body_temp=TemperatureUtil.getBodyTemp(wrist_temp,26.0f); - String temperatureMsg=APTP(wrist_temp,body_temp); - connection.send(genStringMessage("APTP",temperatureMsg)); - ICLogger.i("发送体温测量值 "+temperatureMsg); + + TemperatureUtil.doTempTestInThread(); + +// double wrist_temp,body_temp; +// wrist_temp=TemperatureUtil.get_temp_value_adjusted(); +// body_temp=TemperatureUtil.getBodyTemp(wrist_temp,26.0f); +// String temperatureMsg=APTP(wrist_temp,body_temp); +// connection.send(genStringMessage("APTP",temperatureMsg)); +// ICLogger.i("发送体温测量值 "+temperatureMsg); }else{ ICLogger.i("BP89 format error!"); } diff --git a/app/src/main/java/com/ic/protocols/protocol_fzd.java b/app/src/main/java/com/ic/protocols/protocol_fzd.java index 993f87ef..3cb26339 100644 --- a/app/src/main/java/com/ic/protocols/protocol_fzd.java +++ b/app/src/main/java/com/ic/protocols/protocol_fzd.java @@ -1,12 +1,12 @@ package com.ic.protocols; import android.content.ComponentName; -import android.content.IClipboard; +//import android.content.IClipboard; import android.content.Intent; import android.net.Uri; import android.os.Environment; -import com.android.internal.telephony.uicc.RuimFileHandler; +//import com.android.internal.telephony.uicc.RuimFileHandler; import com.enqualcomm.support.Config; import com.enqualcomm.support.CoreService; import com.enqualcomm.support.bean.Alarm; @@ -528,11 +528,14 @@ public class protocol_fzd { Config.setTemperatureTestCycle(runtime,freq); CoreService.getInstance().setTempAlarm(); - double wrist_temp,body_temp; - wrist_temp= TemperatureUtil.get_temp_value_adjusted(); - body_temp=TemperatureUtil.getBodyTemp(wrist_temp,26.0f); - String temperatureMsg=temp(body_temp); - connection.send(genStringMessage("temp",temperatureMsg)); + + TemperatureUtil.doTempTestInThread(); +// +// double wrist_temp,body_temp; +// wrist_temp= TemperatureUtil.get_temp_value_adjusted(); +// body_temp=TemperatureUtil.getBodyTemp(wrist_temp,26.0f); +// String temperatureMsg=temp(body_temp); +// connection.send(genStringMessage("temp",temperatureMsg)); } public static String hrtstart(){ return genFZDCMD(cmdMap.get(CMD_TYPE.hrtstart)); diff --git a/app/src/main/java/com/ic/protocols/protocol_ic.java b/app/src/main/java/com/ic/protocols/protocol_ic.java index e6bceca4..7e842106 100644 --- a/app/src/main/java/com/ic/protocols/protocol_ic.java +++ b/app/src/main/java/com/ic/protocols/protocol_ic.java @@ -450,7 +450,7 @@ public class protocol_ic { * IWAP10080524A2232.9806N11404.9355E000.1061830323.8706000908000502, * 460,0,9520,3671, * 00,zh-cn,00, - * 00为报警状态,00为无任何报警(01:SOS,02:低电,03:脱落报警,04:佩戴提醒,05/06:跌倒报警)) + * 00为报警状态,00为无任何报警(01:SOS,02:低电,03:脱落报警,04:佩戴提醒,05:剪断报警,06:跌倒报警,07:心率异常, 08:心率过高, 09:心率过低,10:收缩压过高,11:收缩压过低,12:舒张压过高,13:舒张压过低,14:久坐提醒,15:非法解锁(剪断报警),16:锁定提醒(佩戴提醒),17:体温过高,18体温过低) * zh-cn:设备语言 * 00:第一个0:是否需要回复地址信息,0:不回复,1回复. * 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# @@ -1627,6 +1627,9 @@ public class protocol_ic { String BPL_H=list[7]; String BPL_L=list[8]; connection.send(genStringMessage("AP89",AP89(index))); + + + ICLogger.i("收到服务器指令:心率/血压阀值 "+PPGH+","+PPGL+","+BPH_H+","+BPH_L+","+BPL_H+","+BPL_L); }else{ ICLogger.i("BP89 format error!");