ret = protocol_s123.AP10(runtime);
break;
case Config.PROTOCOL_GATOR:
- ret = null;
+ ret = protocol_gator.BP30(runtime);
break;
}
return ret;
}
return ret;
}
- public static void sendVoice(int duration, String remoteNum, String content, String voiceId){
- if (is_protocol_not_Initialled()) return ;
+
+ public static void sendVoice(int duration, String remoteNum, String content, String voiceId) {
+ if (is_protocol_not_Initialled()) return;
switch (Config.protocol_no) {
case Config.PROTOCOL_JIAI:
case Config.PROTOCOL_IC:
break;
case Config.PROTOCOL_FZD:
- protocolfzd_handler.sendVoice(duration,remoteNum,content,voiceId);
+ protocolfzd_handler.sendVoice(duration, remoteNum, content, voiceId);
break;
case Config.PROTOCOL_MQTT:
break;
case Config.PROTOCOL_GATOR:
- protocolgator_handler.sendVoicePackage(duration,remoteNum,content,voiceId);
+ protocolgator_handler.sendVoicePackage(duration, remoteNum, content, voiceId);
break;
}
}
+
public static void sendPicture(String remoteNum, String imagePath, String imageId) {
- if (is_protocol_not_Initialled()) return ;
+ if (is_protocol_not_Initialled()) return;
switch (Config.protocol_no) {
case Config.PROTOCOL_JIAI:
case Config.PROTOCOL_IC:
break;
case Config.PROTOCOL_FZD:
- protocolfzd_handler.sendPicture(remoteNum,imagePath,imageId);
+ protocolfzd_handler.sendPicture(remoteNum, imagePath, imageId);
break;
case Config.PROTOCOL_MQTT:
}
}
+
public static byte[] getVoicePacketItem(String sender,
String durationHEX,
String packetTime,
}
break;
case Config.PROTOCOL_GATOR:
- ret = protocol_gator.BP34_Raw(sender,packetTime,durationHEX,count,index,datalen,amrdata);
+ ret = protocol_gator.BP34_Raw(sender, packetTime, durationHEX, count, index, datalen, amrdata);
break;
}
return ret;
/**
* 获取VideoCall 联系人列表
+ *
* @param runtime
* @return
*/
return ret;
}
- public static void requestServerReady(){
+ public static void requestServerReady() {
if (is_protocol_not_Initialled()) return;
- switch (Config.protocol_no){
+ switch (Config.protocol_no) {
case Config.PROTOCOL_FZD:
protocolfzd_handler.getServerReady();
return;
/**
* 获取VideoCall ID
+ *
* @param runtime
* @return
*/
/**
* 拒接VideoCall
+ *
* @param runtime
* @param remoteId
* @param type
* @return
*/
- public static StringMessage rejectVideoCall(Runtime runtime,String remoteId, int type) {
+ public static StringMessage rejectVideoCall(Runtime runtime, String remoteId, int type) {
if (is_protocol_not_Initialled()) return null;
StringMessage ret = null;
switch (Config.protocol_no) {
}
return ret;
}
- public static StringMessage dialVideoCall(Runtime runtime,int type, int remoteUserId) {
+
+ public static StringMessage dialVideoCall(Runtime runtime, int type, int remoteUserId) {
if (is_protocol_not_Initialled()) return null;
StringMessage ret = null;
switch (Config.protocol_no) {
}
public static void updateEnvState(Runtime runtime, int state) {
- if (is_protocol_not_Initialled()) return ;
+ if (is_protocol_not_Initialled()) return;
switch (Config.protocol_no) {
case Config.PROTOCOL_JIAI:
break;
case Config.PROTOCOL_FZD:
- protocolfzd_handler.updateEnvState(state);
+ protocolfzd_handler.updateEnvState(state);
break;
case Config.PROTOCOL_MQTT:
import android.os.Environment;
import android.os.Handler;
import android.os.HandlerThread;
+import android.util.Log;
import com.enqualcomm.support.Config;
import com.enqualcomm.support.CoreService;
int alarmswitch = 1 /*1为开,0 为关*/;
int alarmcount = 0 /*表示闹钟个数*/;
String alarmtime = "";//0900表示早上09:00
- StringBuilder repeat = new StringBuilder();// //0:一次,不重复;0x01:星期日;0x02:星期一;0x04:星期二;0x08:星期三;0x10:星期四;0x20:星期五;0x40星期六
// 0x01|0x02|0x04|0x08|0x10|0x20|0x40=0x7F
do_cmd = cmdlist[1];//0删除、1添加(修改)闹钟功能
alarmtime = cmdlist[5]; //HHMMSS
alarmindex = Integer.parseInt(cmdlist[2]);
String repeatStr = cmdlist[3];
- //转成int,再转成2进进制,1表示开启,0表示不开启,111111表示7天都开启,0000001表示周一开启
- int repeatInt = Integer.parseInt(repeatStr);
- StringBuilder repeatCountStr = new StringBuilder(Integer.toBinaryString(repeatInt));
- int repeatLen = 7 - repeatCountStr.length();
- for (int i = 0; i < repeatLen; i++) {
- repeatCountStr.insert(0, "0");
- }
- String repeatStrRev = repeatCountStr.reverse().toString();
- char[] chars = repeatStrRev.toCharArray();
- for (int i = 0; i < chars.length; i++) {
- // ICLogger.d("item ==> " + chars[i]);
- //第一个如果是1,直接插入7
- if (i == 0 && '1' == chars[i]) {
- repeat.insert(0, "7");
- } else if ('1' == chars[i]) {
- repeat.append(i);
- }
- }
- if (repeat.length() == 0) {
- repeat.append("0");
- }
- ICLogger.d("repeatCount == > " + repeat.toString());
+ String repeat = parseWeek(repeatStr);
ArrayList<Alarm> alarmList = new ArrayList<>();
if ("1".equals(do_cmd)) {
- alarmList.add(new Alarm("ST" + alarmtime.substring(0, 2) + "." + alarmtime.substring(2), "W" + repeat.toString(), "CON", alarmswitch == 1 ? "ON" : "OFF", "闹铃"));
+ alarmList.add(new Alarm("ST" + alarmtime.substring(0, 2) + "." + alarmtime.substring(2), "W" + repeat, "CON", alarmswitch == 1 ? "ON" : "OFF", "闹铃"));
}
//do clean and set alarm things
runtime.getDbHelper().saveAlarm(alarmList);
}
+ private String parseWeek(String repeatStr) {
+ ICLogger.d("repeatStr == > " + repeatStr);
+ StringBuilder repeat = new StringBuilder();// //0:一次,不重复;0x01:星期日;0x02:星期一;0x04:星期二;0x08:星期三;0x10:星期四;0x20:星期五;0x40星期六
+ //转成int,再转成2进进制,1表示开启,0表示不开启,111111表示7天都开启,0000001表示周一开启
+ int repeatInt = Integer.parseInt(repeatStr);
+ StringBuilder repeatCountStr = new StringBuilder(Integer.toBinaryString(repeatInt));
+ int repeatLen = 7 - repeatCountStr.length();
+ for (int i = 0; i < repeatLen; i++) {
+ repeatCountStr.insert(0, "0");
+ }
+ String repeatStrRev = repeatCountStr.reverse().toString();
+ char[] chars = repeatStrRev.toCharArray();
+ for (int i = 0; i < chars.length; i++) {
+ // ICLogger.d("item ==> " + chars[i]);
+ //第一个如果是1,直接插入7
+ if (i == 0 && '1' == chars[i]) {
+ repeat.insert(0, "7");
+ } else if ('1' == chars[i]) {
+ repeat.append(i);
+ }
+ }
+ if (repeat.length() == 0) {
+ repeat.append("0");
+ }
+ ICLogger.d("repeatCount == > " + repeat.toString());
+ return repeat.toString();
+ }
+
//静音设置
public void handleAP10(Runtime ds, Connection connection, String cmd) {
//状态上报,当做心跳用
public static StringMessage BP33(Runtime ds) {
-//(00520106357593060153353BP33,0,000000FF,5,46000024820000DE127,151028,163100,0,0,0)
-//报警类型:0x0 无报警;0x02 SOS报警;0x08 电池低电量报警;0x20 设备脱离
-//总步数:000000FF
-//电量等级:5
-//基站接入点:46000024820000DE127
-//日期时间:151028,163100
+ //(00520106357593060153353BP33,0,000000FF,5,46000024820000DE127,151028,163100,0,0,0)
+ //报警类型:0x0 无报警;0x02 SOS报警;0x08 电池低电量报警;0x20 设备脱离
+ //总步数:000000FF
+ //电量等级:5
+ //基站接入点:46000024820000DE127
+ //日期时间:151028,163100
int batstat = 0;
int batlevel = ds.getBatterylevel();
if (batlevel > 0 && batlevel <= 15) {
//隐身时段
public void handleAP22(Runtime runtime, Connection connection, String cmd) {
- ICLogger.d(cmd);
//AP22,A,B,起始时间(HHMM),结束时间(HHMM) ,C
//A:总开关,分别用0、1表示(类型%d)
//B: 对应时间段小开关,分别用0、1表示(类型%d)
//4、14:00-15:00开启隐身时段,周一、二、三、四、五重复
//5、15:30-16:00开启隐身时段,周一、二、三、四、五重复
String[] silent_items = cmd.split(CMDSPLIT);
- ArrayList<Silent> slist = new ArrayList<>();
+ ArrayList<Silent> sList = new ArrayList<>();
+ Log.d(TAG, "handleAP22 cmd == > " + cmd);
- if (silent_items.length == 19) {
+ if (silent_items.length == 3) {
+ //关闭的,它只给了3个长度
+// 002C357593061269893AP22,0,1696323A43B1F744
+ String index = silent_items[2];
+ connection.send(BPXX_REPLY(runtime, CMD_TYPE.BP22, index, true));
+ } else if (silent_items.length == 19) {
String index = silent_items[18];
-// for (String si : silent_items) {
-// String[] sl = si.split("-");
-// if (sl.length == 4) {
-// String start, end, status;
-// start = "ST" + sl[0];
-// end = "ST" + sl[1];
-// status = sl[2].equals("1") ? "ON" : "OFF";
-// char[] week = sl[3].toCharArray();
-// StringBuilder week_sb = new StringBuilder();
-// for (int i = 0; i < week.length; i++) {
-// if (week[i] == '1') {
-// week_sb.append(i + 1);
-// }
-// }
-// Silent silent = new Silent(start, end, week_sb.toString(), status);
-// slist.add(silent);
-// ICLogger.i("set silence " + start + " " + end + " " + week_sb.toString() + " " + status);
-// } else {
-// ICLogger.i("免打扰时间格式错误,skip");
-// }
-// }
+ //0066357593061269893AP22,
+ // 1//总开关
+ // 1,0000,0000,10,//小段开关,0000开始时间,0000结束时间,10循环周期,1,2,4,8,16,32,64
+ // 1,0000,0004,2,
+ // 1,0004,0000,48,
+ // 0,0000,0000,0,
+ // 16963269728F25A4
+ if ("1".equals(silent_items[1])) {
+ //需要开的才去解析,否则就是关的,那么干掉所有的数据
+ int startI = 2;
+ for (int i = 0; i < 4; i++) {
+ //解析数据
+ String trigger = silent_items[startI];
+ String startTime = silent_items[startI + 1];
+ String endTime = silent_items[startI + 2];
+ String weekValue = silent_items[startI + 3];
+ String weekStr = parseWeek(weekValue);
+ ICLogger.d("weekValue ==> " + weekValue);
+ ICLogger.d("weekStr ==> " + weekStr);
+ Silent silent = new Silent("ST" + startTime, "ST" + endTime,
+ weekStr, trigger.equals("1") ? "ON" : "OFF");
+ startI += 4;
+ }
+ }
connection.send(BPXX_REPLY(runtime, CMD_TYPE.BP22, index, true));
} else {
ICLogger.i("免打扰时间格式错误,skip");
}
- runtime.getDbHelper().saveSilent(slist);
+ runtime.getDbHelper().saveSilent(sList);
}