From 3a8ef64e2fe8d8e4c0887ed9d428d3c4d58898c7 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Thu, 13 Mar 2025 11:27:55 +0800 Subject: [PATCH 1/3] =?UTF-8?q?Revert=20"perf:=20=E8=B0=83=E6=95=B4registe?= =?UTF-8?q?rHeartbeatTimer=E6=96=B9=E6=B3=95"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit b82fe124d8360f97442e43d5dd4372f2906743a6. --- .../com/xypower/mpmaster/MpMasterService.java | 93 ++++++++++--------- 1 file changed, 47 insertions(+), 46 deletions(-) diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java index bc85bb0f..da06972b 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java @@ -50,7 +50,6 @@ import java.lang.reflect.Method; import java.nio.channels.FileLock; import java.text.SimpleDateFormat; import java.util.Arrays; -import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.logging.Level; @@ -765,65 +764,67 @@ public class MpMasterService extends Service { } private void registerHeartbeatTimer() { - long delaySec = 20; // 比i1延迟20秒 - long interval = mHeartbeatDuration; // 距离下一次间隔,默认10分钟 - boolean keepAlive = false; - long currentSec = System.currentTimeMillis() / 1000; + long timeout = mHeartbeatDuration; + boolean keepAlive = false; + long currentTimeMs = System.currentTimeMillis(); if (mMntnMode) { - // 无延迟 - delaySec = 0; if (mQuickHbMode) { - interval = mQuickHeartbeatDuration; + timeout = mQuickHeartbeatDuration; } - registerHeartbeatTimer((currentSec + interval + delaySec) * 1000, keepAlive); + registerHeartbeatTimer(currentTimeMs + timeout * 1000, keepAlive); } else { + long closestTime = -1; if (mUsingAbsHbTime) { - long expandSec = 120; // 扩展2分钟之内的都触发 - Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MILLISECOND, 0); - long todayZero = calendar.getTimeInMillis() / 1000; - long todaySec = currentSec - todayZero; - - long nextAbsSec = this.getNextAbsSec(todaySec); - if (nextAbsSec - todaySec > interval + expandSec) { + Date dt = new Date(); + long ts = dt.getTime(); + ts -= ts % 1000; + + dt.setHours(0); + dt.setMinutes(0); + dt.setSeconds(0); + + long zeroPoint = dt.getTime(); + zeroPoint -= zeroPoint % 1000; + long offsetTs = (ts - zeroPoint) / 1000; + + if (mAbsHeartbeatTimes != null && mAbsHeartbeatTimes.length > 0) { + + for (int i = 0; i < mAbsHeartbeatTimes.length; i++) { + if (mAbsHeartbeatTimes[i] > offsetTs) { + closestTime = mAbsHeartbeatTimes[i]; + break; + } + } + + if (closestTime == -1) { + // next day + closestTime = mAbsHeartbeatTimes[0] + 86400; + } + } else { + closestTime = 9 * 3600 + 13 * 60; + if (offsetTs > closestTime) { + closestTime += 86400; + } + } + + if (zeroPoint + closestTime * 1000 > currentTimeMs + mMpHeartbeatDuration) { keepAlive = true; - registerHeartbeatTimer((currentSec + interval + delaySec) * 1000, keepAlive); + registerHeartbeatTimer(currentTimeMs + mMpHeartbeatDuration + 5000, keepAlive); } else { - registerHeartbeatTimer((todayZero + nextAbsSec) * 1000, keepAlive); + registerHeartbeatTimer(zeroPoint + closestTime * 1000, keepAlive); } } else { - // mUsingAbsHbTime=false,间隔10分钟 + 延迟 - registerHeartbeatTimer((currentSec + interval + delaySec) * 1000, keepAlive); - } - } - } - - private long getNextAbsSec(long todaySec) { - long nextAbsSec = -1; - if (mAbsHeartbeatTimes != null && mAbsHeartbeatTimes.length > 0) { - for (int i = 0; i < mAbsHeartbeatTimes.length; i++) { - if (mAbsHeartbeatTimes[i] > todaySec) { - nextAbsSec = mAbsHeartbeatTimes[i]; - break; + // mUsingAbsHbTime: false + if ((mPreviousHeartbeatTime != 0) && (mPreviousHeartbeatTime - currentTimeMs < mHeartbeatDuration * 1000)) { + registerHeartbeatTimer(mPreviousHeartbeatTime + mHeartbeatDuration * 1000, keepAlive); + } else { + registerHeartbeatTimer(currentTimeMs + timeout * 1000, keepAlive); } } - - if (nextAbsSec == -1) { - // next day - nextAbsSec = mAbsHeartbeatTimes[0] + 24 * 3600; - } - } else { - nextAbsSec = 9 * 3600 + 13 * 60; - if (todaySec > nextAbsSec) { - nextAbsSec += 24 * 3600; - } } - return nextAbsSec; } + private void registerHeartbeatTimer(long triggerTime, boolean keepAlive) { AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); From 5734762c07f4d026ce935c3d90c647a0c9ff889f Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 13 Mar 2025 11:30:20 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=B2=E5=8F=A3?= =?UTF-8?q?=E6=8B=8D=E7=85=A7=E6=8C=87=E4=BB=A4=E5=AE=8F=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 2 +- app/src/main/cpp/SensorsProtocol.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index ce492feb..bfc0e992 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -2099,7 +2099,7 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< std::this_thread::sleep_for(std::chrono::seconds(5)); } - CameraPhotoCmd(ts, localPhotoInfo.channel, 0, localPhotoInfo.resolution, localPhotoInfo.preset, param.serfile, param.baud, param.addr); + CameraPhotoCmd(ts, localPhotoInfo.channel, TAKE_PHOTO, localPhotoInfo.resolution, localPhotoInfo.preset, param.serfile, param.baud, param.addr); XYLOG(XYLOG_SEVERITY_INFO, "Taking photo over"); if(localPhotoInfo.scheduleTime == 0) { diff --git a/app/src/main/cpp/SensorsProtocol.h b/app/src/main/cpp/SensorsProtocol.h index 7a5b648b..034e2985 100644 --- a/app/src/main/cpp/SensorsProtocol.h +++ b/app/src/main/cpp/SensorsProtocol.h @@ -106,7 +106,7 @@ #define D_OPEN_MODULE_POWER 0x0009000C /* 打开机芯电源(1 有效)*/ /* 摄像机下发命令宏定义*/ -#define TAKE_PHOTO 0 /* 拍照*/ +#define TAKE_PHOTO 20000 /* 拍照*/ #define SET_BAUD 10000 /* 设置球机波特率*/ #define STOP_CMD 10005 /* 取消或停止指令*/ #define AUTO_SCAN 10006 /* 自动扫描功能控制(1/0 打开/关闭该功能)*/ From 216a053086272d6733b0e0fa7b420736ac19a77d Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 13 Mar 2025 11:31:14 +0800 Subject: [PATCH 3/3] Update version to 1.3.71 Based Core Version to 1.4.39 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 489eae03..ff17f1e0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ plugins { // 10,00,000 major-minor-build def AppMajorVersion = 1 def AppMinorVersion = 3 -def AppBuildNumber = 70 +def AppBuildNumber = 71 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber