From 06b8185a0af500cab6f98ae0d5c0c2e0402f7345 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Tue, 17 Dec 2024 19:23:04 +0800 Subject: [PATCH 01/82] Update version to 1.1.21 Based Core Version to 1.2.16 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 89d04459..1d722428 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 = 1 -def AppBuildNumber = 20 +def AppBuildNumber = 21 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From da14135af30221f8461bc5f9c7f77bcc4e3e8794 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Tue, 17 Dec 2024 19:26:44 +0800 Subject: [PATCH 02/82] =?UTF-8?q?=E4=B8=B2=E5=8F=A3=E6=8B=8D=E7=85=A7?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B0=B4=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 99c828ae..4cc3c4a2 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1770,8 +1770,10 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< IDevice::PHOTO_INFO localPhotoInfo = mPhotoInfo; IDevice::SerialsPhotoParam param = { "", 0, 0 }; GetPhotoSerialsParamCb(param); + vector osds; + osds.swap(mOsds); - std::thread t([localPhotoInfo, param, pThis,wid_serial]() mutable + std::thread t([localPhotoInfo, param, pThis, osds, wid_serial]() mutable { if (localPhotoInfo.preset != 0 && localPhotoInfo.preset != 0xFF) { @@ -1785,7 +1787,27 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< } CameraPhotoCmd(ts, localPhotoInfo.channel, 0, localPhotoInfo.resolution, 0, param.serfile, param.baud, param.addr); XYLOG(XYLOG_SEVERITY_INFO, "Taking photo over"); - pThis->TakePTZPhotoCb(3, localPhotoInfo); + + IMAGE_DEF photo = { 0 }; + std::vector objects; + GetImage(0, &photo); + if(photo.state == 5){ + XYLOG(XYLOG_SEVERITY_INFO,"Get Serials Photo, PhotoID = %s", photo.photoname); + + cv::Mat img = cv::imread(photo.photoname, cv::IMREAD_COLOR); + if (!img.empty()) + { + int result = std::remove(photo.photoname); + pThis->TakePhotoCb(1, localPhotoInfo, "", photo.phototime - 28800, objects); + pThis->PostProcessPhoto(localPhotoInfo, osds, photo.photoname, "", img); + } + + }else + { + XYLOG(XYLOG_SEVERITY_WARNING,"Get Serials Photo Failed"); + pThis->TakePhotoCb(0, localPhotoInfo, photo.photoname, photo.phototime - 28800, objects); + } +// pThis->TakePTZPhotoCb(3, localPhotoInfo); pThis->ClosePTZSensors(localPhotoInfo.closeDelayTime); GpioControl::setCam3V3Enable(false, localPhotoInfo.closeDelayTime); pThis->ReleaseWakelock(wid_serial); From 2445315c5d3ca33166a90aa4f9aca3a6a399b079 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Tue, 17 Dec 2024 20:20:44 +0800 Subject: [PATCH 03/82] Update version to 1.1.22 Based Core Version to 1.2.17 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 1d722428..b57fc5cb 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 = 1 -def AppBuildNumber = 21 +def AppBuildNumber = 22 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From d435bab3c2d5d14eea26b2182ddbaede281713ca Mon Sep 17 00:00:00 2001 From: Matthew Date: Tue, 17 Dec 2024 22:53:54 +0800 Subject: [PATCH 04/82] =?UTF-8?q?=E4=BC=A0=E6=84=9F=E5=99=A8=E9=87=87?= =?UTF-8?q?=E6=A0=B7=E5=A4=8D=E7=94=A8=E6=8B=8D=E7=85=A7=E7=9A=84=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E5=99=A8=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/MicroPhoto.cpp | 92 ++++--------------- app/src/main/cpp/PhoneDevice.cpp | 36 ++++---- .../com/xypower/mpapp/MicroPhotoService.java | 8 +- 3 files changed, 38 insertions(+), 98 deletions(-) diff --git a/app/src/main/cpp/MicroPhoto.cpp b/app/src/main/cpp/MicroPhoto.cpp index 2306bcfd..2d0e18d9 100644 --- a/app/src/main/cpp/MicroPhoto.cpp +++ b/app/src/main/cpp/MicroPhoto.cpp @@ -358,7 +358,7 @@ Java_com_xypower_mpapp_MicroPhotoService_notifyToTakePhoto( JNIEnv* env, jobject pThis, jlong handler, jint channel, jint preset, jlong scheduleTime, jboolean photoOrVideo) { - if (channel < 1 || channel > 0xFF) + if (channel < 1 || channel > 0x1FF) { return JNI_FALSE; } @@ -371,7 +371,16 @@ Java_com_xypower_mpapp_MicroPhotoService_notifyToTakePhoto( unsigned char type = photoOrVideo ? 0 : 1; // std::thread th(&Runner::RequestCapture, pTerminal, (unsigned int)channel, (unsigned int)preset, type, (unsigned long)scheduleTime, 0, true); // th.detach(); - pTerminal->RequestCapture((unsigned int)channel, (unsigned int)preset, type, (unsigned long)scheduleTime, 0, true); + if (channel < 0x100) + { + pTerminal->RequestCapture((uint32_t)channel, (unsigned int)preset, type, (unsigned long)scheduleTime, 0, true); + } + else + { + uint32_t packetType = channel; + packetType &= 0xFF; + pTerminal->RequestSampling(packetType, (unsigned long)scheduleTime, 0); + } return JNI_TRUE; } @@ -612,7 +621,7 @@ Java_com_xypower_mpapp_MicroPhotoService_getPhotoTimeData( unsigned int scheduleTime = 0; time_t zeroPointTime = 0; - std::vector > channelsAndPresets; + std::vector > channelsAndPresets; if (!pTerminal->GetAndRefreshLatestScheduleTime(startTime, zeroPointTime, scheduleTime, channelsAndPresets)) { return NULL; @@ -631,13 +640,13 @@ Java_com_xypower_mpapp_MicroPhotoService_getPhotoTimeData( dataArray.push_back((jlong)channelsAndPresets.size()); unsigned long val = 0; - for (std::vector >::const_iterator it = channelsAndPresets.cbegin(); it != channelsAndPresets.cend(); ++it) + for (std::vector >::const_iterator it = channelsAndPresets.cbegin(); it != channelsAndPresets.cend(); ++it) { - val = (unsigned long)scheduleTime << 24; + val = (unsigned long)scheduleTime << 28; // channel - val |= ((unsigned long)(it->first)) << 16; + val |= ((unsigned long)(it->first)) << 12; // preset - val |= ((unsigned long)(it->second)) << 8; + val |= ((unsigned long)(it->second)) << 4; dataArray.push_back((jlong)val); } @@ -735,75 +744,6 @@ Java_com_xypower_mpapp_MicroPhotoService_recoganizePicture( return data; } - -/* -extern "C" JNIEXPORT jlongArray JNICALL -Java_com_xypower_mpapp_MicroPhotoService_getNextScheduleItem( - JNIEnv* env, - jobject pThis, jlong handler) { - - CTerminal* pTerminal = reinterpret_cast(handler); - if (pTerminal == NULL) - { - return NULL; - } - - map> photoTime; - if (!pTerminal->GetPhotoTime(photoTime) || photoTime.empty()) - { - return NULL; - } - - size_t numberOfData = photoTime.size() * photoTime.begin()->second.size(); - if (numberOfData == 0) - { - return NULL; - } - - vector dataArray; - dataArray.reserve(numberOfData); - - unsigned long val = 0; - jint channel = 0; - for (map>::const_iterator it = photoTime.cbegin(); it != photoTime.cend(); ++it) - { - if (it->second.empty()) - { - continue; - } - - channel = (jint)((unsigned short)it->first); - // dataArray.push_back(channel); - - // val = (jint)it->second.size(); - // dataArray.push_back(val); - for (vector::const_iterator it2 = it->second.cbegin(); it2 != it->second.cend(); ++it2) - { - // time - val = ((unsigned long)((*it2) & 0xFFFFFF00)) << 24; - // channel - val |= ((unsigned long)channel) << 16; - // preset - val |= ((unsigned long)((*it2) & 0xFF)) << 8; - - dataArray.push_back((jlong)val); - } - } - - std::sort(dataArray.begin(), dataArray.end()); - - jlongArray data = env->NewLongArray(dataArray.size()); - if (data == NULL) { - return NULL; - } - - env->SetLongArrayRegion(data, 0, dataArray.size(), &dataArray[0]); - - return data; -} - */ - - extern "C" JNIEXPORT void JNICALL Java_com_xypower_mpapp_MicroPhotoService_captureFinished( JNIEnv* env, diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 99c828ae..196ce40d 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1772,24 +1772,24 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< GetPhotoSerialsParamCb(param); std::thread t([localPhotoInfo, param, pThis,wid_serial]() mutable - { - if (localPhotoInfo.preset != 0 && localPhotoInfo.preset != 0xFF) - { - CameraPhotoCmd(time(NULL), localPhotoInfo.channel, MOVE_PRESETNO, 0, localPhotoInfo.preset, param.serfile, param.baud, param.addr); - std::this_thread::sleep_for(std::chrono::seconds(3)); - } - time_t ts = time(NULL); - if(!pThis->GetPTZSensorsStatus() && !pThis->GetCameraStatus()) - { - pThis->OpenPTZSensors(localPhotoInfo.selfTestingTime); - } - CameraPhotoCmd(ts, localPhotoInfo.channel, 0, localPhotoInfo.resolution, 0, param.serfile, param.baud, param.addr); - XYLOG(XYLOG_SEVERITY_INFO, "Taking photo over"); - pThis->TakePTZPhotoCb(3, localPhotoInfo); - pThis->ClosePTZSensors(localPhotoInfo.closeDelayTime); - GpioControl::setCam3V3Enable(false, localPhotoInfo.closeDelayTime); - pThis->ReleaseWakelock(wid_serial); - }); + { + if (localPhotoInfo.preset != 0 && localPhotoInfo.preset != 0xFF) + { + CameraPhotoCmd(time(NULL), localPhotoInfo.channel, MOVE_PRESETNO, 0, localPhotoInfo.preset, param.serfile, param.baud, param.addr); + std::this_thread::sleep_for(std::chrono::seconds(3)); + } + time_t ts = time(NULL); + if(!pThis->GetPTZSensorsStatus() && !pThis->GetCameraStatus()) + { + pThis->OpenPTZSensors(localPhotoInfo.selfTestingTime); + } + CameraPhotoCmd(ts, localPhotoInfo.channel, 0, localPhotoInfo.resolution, 0, param.serfile, param.baud, param.addr); + XYLOG(XYLOG_SEVERITY_INFO, "Taking photo over"); + pThis->TakePTZPhotoCb(3, localPhotoInfo); + pThis->ClosePTZSensors(localPhotoInfo.closeDelayTime); + GpioControl::setCam3V3Enable(false, localPhotoInfo.closeDelayTime); + pThis->ReleaseWakelock(wid_serial); + }); t.detach(); } diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index 7de2ceaf..3a3ae1a4 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -449,9 +449,9 @@ public class MicroPhotoService extends Service { for (int idx = 0; idx < cnt; idx++) { long val = intent.getLongExtra(EXTRA_PARAM_SCHEDULE + idx, 0); - int channel = (int) ((val & 0xFF0000L) >> 16); - int preset = (int) ((val & 0xFF00L) >> 8); - boolean photoOrVideo = ((val & 0xFFL) == 0); + int channel = (int) ((val & 0xFF000L) >> 12); + int preset = (int) ((val & 0xFF0L) >> 4); + boolean photoOrVideo = ((val & 0xFL) == 0); Log.i(TAG, "PhotoTimer Fired: CH=" + channel + " PR=" + preset); mService.notifyToTakePhoto(mService.mNativeHandle, channel, preset, ts, photoOrVideo); @@ -664,7 +664,7 @@ public class MicroPhotoService extends Service { for (int idx = 0; idx < cnt; idx++) { val = schedules.get(idx).longValue(); intent.putExtra(EXTRA_PARAM_SCHEDULE + idx, schedules.get(idx).longValue()); - channelStr.append("(" + ((val & 0XFF0000) >> 16) + "-" + Long.toString (((val & 0XFF00) >> 8), 16).toUpperCase() + ") "); + channelStr.append("(" + ((val & 0XFF000) >> 12) + "-" + Long.toString (((val & 0XFF0) >> 4), 16).toUpperCase() + ") "); } intent.putExtra(EXTRA_PARAM_TIME, scheduleTime); From 1633412d1793556e58c6835c04c87bb4fbba7c45 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Wed, 18 Dec 2024 09:25:27 +0800 Subject: [PATCH 05/82] =?UTF-8?q?=E5=BB=B6=E9=95=BF=E9=A2=84=E7=BD=AE?= =?UTF-8?q?=E4=BD=8D=E8=BD=AC=E5=8A=A8=E7=AD=89=E5=BE=85=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 4cc3c4a2..ec6e3e09 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1778,7 +1778,7 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< if (localPhotoInfo.preset != 0 && localPhotoInfo.preset != 0xFF) { CameraPhotoCmd(time(NULL), localPhotoInfo.channel, MOVE_PRESETNO, 0, localPhotoInfo.preset, param.serfile, param.baud, param.addr); - std::this_thread::sleep_for(std::chrono::seconds(3)); + std::this_thread::sleep_for(std::chrono::seconds(5)); } time_t ts = time(NULL); if(!pThis->GetPTZSensorsStatus() && !pThis->GetCameraStatus()) From 93864e30b98628212135f9077328ef2731060044 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Wed, 18 Dec 2024 09:33:43 +0800 Subject: [PATCH 06/82] Update version to 1.1.23 Based Core Version to 1.2.18 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index b57fc5cb..254a1e12 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 = 1 -def AppBuildNumber = 22 +def AppBuildNumber = 23 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From 8d059473954897145a3d50acf82b9889a2f612af Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 18 Dec 2024 11:31:22 +0800 Subject: [PATCH 07/82] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 4cc3c4a2..e4972132 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1773,7 +1773,7 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< vector osds; osds.swap(mOsds); - std::thread t([localPhotoInfo, param, pThis, osds, wid_serial]() mutable + std::thread t([localPhotoInfo, param, pThis, path, osds, wid_serial]() mutable { if (localPhotoInfo.preset != 0 && localPhotoInfo.preset != 0xFF) { @@ -1799,13 +1799,13 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< { int result = std::remove(photo.photoname); pThis->TakePhotoCb(1, localPhotoInfo, "", photo.phototime - 28800, objects); - pThis->PostProcessPhoto(localPhotoInfo, osds, photo.photoname, "", img); + pThis->PostProcessPhoto(localPhotoInfo, osds, path, "", img); } }else { XYLOG(XYLOG_SEVERITY_WARNING,"Get Serials Photo Failed"); - pThis->TakePhotoCb(0, localPhotoInfo, photo.photoname, photo.phototime - 28800, objects); + pThis->TakePhotoCb(0, localPhotoInfo, path, photo.phototime - 28800, objects); } // pThis->TakePTZPhotoCb(3, localPhotoInfo); pThis->ClosePTZSensors(localPhotoInfo.closeDelayTime); From 99ee66139bd95d6fd31c7c9752af27f0d4254c65 Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 18 Dec 2024 14:48:51 +0800 Subject: [PATCH 08/82] =?UTF-8?q?=E5=AE=8C=E5=96=84=E9=87=87=E6=A0=B7?= =?UTF-8?q?=E5=91=A8=E6=9C=9F=E8=AE=BE=E7=BD=AE=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/MicroPhoto.cpp | 36 ++++++++++++++++---------------- app/src/main/cpp/PhoneDevice.cpp | 20 +++++++++--------- app/src/main/cpp/PhoneDevice.h | 12 +++++------ 3 files changed, 34 insertions(+), 34 deletions(-) diff --git a/app/src/main/cpp/MicroPhoto.cpp b/app/src/main/cpp/MicroPhoto.cpp index 2d0e18d9..5f290e1e 100644 --- a/app/src/main/cpp/MicroPhoto.cpp +++ b/app/src/main/cpp/MicroPhoto.cpp @@ -154,9 +154,9 @@ void posix_signal_handler(int sig, siginfo_t *siginfo, void *context) class Runner { public: - static void RequestCapture(CTerminal* pTerminal, unsigned int channel, unsigned int preset, unsigned int type, unsigned long scheduleTime); + static void RequestCapture(CTerminal* pTerminal, unsigned int channel, unsigned int preset, unsigned int type, uint64_t scheduleTime); }; -void Runner::RequestCapture(CTerminal* pTerminal, unsigned int channel, unsigned int preset, unsigned int type, unsigned long scheduleTime) +void Runner::RequestCapture(CTerminal* pTerminal, unsigned int channel, unsigned int preset, unsigned int type, uint64_t scheduleTime) { pTerminal->RequestCapture(channel, preset, type, scheduleTime); } @@ -369,17 +369,17 @@ Java_com_xypower_mpapp_MicroPhotoService_notifyToTakePhoto( } unsigned char type = photoOrVideo ? 0 : 1; - // std::thread th(&Runner::RequestCapture, pTerminal, (unsigned int)channel, (unsigned int)preset, type, (unsigned long)scheduleTime, 0, true); + // std::thread th(&Runner::RequestCapture, pTerminal, (unsigned int)channel, (unsigned int)preset, type, (uint64_t)scheduleTime, 0, true); // th.detach(); if (channel < 0x100) { - pTerminal->RequestCapture((uint32_t)channel, (unsigned int)preset, type, (unsigned long)scheduleTime, 0, true); + pTerminal->RequestCapture((uint32_t)channel, (unsigned int)preset, type, (uint64_t)scheduleTime, 0, true); } else { uint32_t packetType = channel; packetType &= 0xFF; - pTerminal->RequestSampling(packetType, (unsigned long)scheduleTime, 0); + pTerminal->RequestSampling(packetType, (uint64_t)scheduleTime, 0); } return JNI_TRUE; @@ -568,7 +568,7 @@ Java_com_xypower_mpapp_MicroPhotoService_getPhotoTimeData2( vector dataArray; dataArray.reserve(numberOfData); - unsigned long val = 0; + uint64_t val = 0; jint channel = 0; for (map>::const_iterator it = photoTime.cbegin(); it != photoTime.cend(); ++it) { @@ -585,11 +585,11 @@ Java_com_xypower_mpapp_MicroPhotoService_getPhotoTimeData2( for (vector::const_iterator it2 = it->second.cbegin(); it2 != it->second.cend(); ++it2) { // time - val = ((unsigned long)((*it2) & 0xFFFFFF00)) << 24; + val = ((uint64_t)((*it2) & 0xFFFFFF00)) << 24; // channel - val |= ((unsigned long)channel) << 16; + val |= ((uint64_t)channel) << 16; // preset - val |= ((unsigned long)((*it2) & 0xFF)) << 8; + val |= ((uint64_t)((*it2) & 0xFF)) << 8; dataArray.push_back((jlong)val); } @@ -639,14 +639,14 @@ Java_com_xypower_mpapp_MicroPhotoService_getPhotoTimeData( dataArray.push_back((jlong)scheduleTime); dataArray.push_back((jlong)channelsAndPresets.size()); - unsigned long val = 0; + uint64_t val = 0; for (std::vector >::const_iterator it = channelsAndPresets.cbegin(); it != channelsAndPresets.cend(); ++it) { - val = (unsigned long)scheduleTime << 28; + val = (((uint64_t)scheduleTime) << 28); // channel - val |= ((unsigned long)(it->first)) << 12; + val |= (((uint64_t)(it->first)) << 12); // preset - val |= ((unsigned long)(it->second)) << 4; + val |= (((uint64_t)(it->second)) << 4); dataArray.push_back((jlong)val); } @@ -761,7 +761,7 @@ Java_com_xypower_mpapp_MicroPhotoService_captureFinished( if (result == JNI_FALSE || bitmap == NULL) { cv::Mat mat; - ((CPhoneDevice *)dev)->OnCaptureReady(photoOrVideo != JNI_FALSE, result != JNI_FALSE, mat, (unsigned long)photoId); + ((CPhoneDevice *)dev)->OnCaptureReady(photoOrVideo != JNI_FALSE, result != JNI_FALSE, mat, (uint64_t)photoId); return; } AndroidBitmapInfo info = { 0 }; @@ -785,7 +785,7 @@ Java_com_xypower_mpapp_MicroPhotoService_captureFinished( cv::cvtColor(mat, mat, cv::COLOR_RGB2BGR); - ((CPhoneDevice *)dev)->OnCaptureReady(photoOrVideo != JNI_FALSE, result != JNI_FALSE, mat, (unsigned long)photoId); + ((CPhoneDevice *)dev)->OnCaptureReady(photoOrVideo != JNI_FALSE, result != JNI_FALSE, mat, (uint64_t)photoId); #endif // 0 } else { @@ -802,7 +802,7 @@ Java_com_xypower_mpapp_MicroPhotoService_captureFinished( AndroidBitmap_unlockPixels(env, bitmap); - ((CPhoneDevice *)dev)->OnCaptureReady(photoOrVideo != JNI_FALSE, result != JNI_FALSE, mat, (unsigned long)photoId); + ((CPhoneDevice *)dev)->OnCaptureReady(photoOrVideo != JNI_FALSE, result != JNI_FALSE, mat, (uint64_t)photoId); } } } @@ -830,7 +830,7 @@ Java_com_xypower_mpapp_MicroPhotoService_burstCaptureFinished( if (result == JNI_FALSE) { cv::Mat mat; - ((CPhoneDevice *)dev)->OnCaptureReady(true, false, mat, (unsigned long)photoId); + ((CPhoneDevice *)dev)->OnCaptureReady(true, false, mat, (uint64_t)photoId); return; } @@ -863,7 +863,7 @@ Java_com_xypower_mpapp_MicroPhotoService_recordingFinished( } // camera->Open(pathStr, fileNameStr); - unsigned long photoId = videoId; + uint64_t photoId = videoId; ((CPhoneDevice *)dev)->OnVideoReady(photoOrVideo != JNI_FALSE, result != JNI_FALSE, pathStr, photoId); if (path != NULL) { diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 3151b6b8..ec9c468e 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -552,8 +552,8 @@ CPhoneDevice::CPhoneDevice(JavaVM* vm, jobject service, const std::string& appPa } m_timerUidFeed = time(NULL) * 1000; - m_wakelockIdFeed = (unsigned long)m_timerUidFeed; - m_uniqueIdFeed = (unsigned long)m_timerUidFeed; + m_wakelockIdFeed = (uint64_t)m_timerUidFeed; + m_uniqueIdFeed = (uint64_t)m_timerUidFeed; #ifdef USING_NRSEC GpioControl::setCam3V3Enable(true); @@ -1321,7 +1321,7 @@ void CPhoneDevice::handleRebootTimer(union sigval v) // { // } -IDevice::timer_uid_t CPhoneDevice::RegisterTimer(unsigned int timerType, unsigned int timeout, void* data, unsigned long times/* = 0*/) +IDevice::timer_uid_t CPhoneDevice::RegisterTimer(unsigned int timerType, unsigned int timeout, void* data, uint64_t times/* = 0*/) { struct sigevent evp = { 0 }; struct itimerspec ts = { 0 }; @@ -1351,7 +1351,7 @@ IDevice::timer_uid_t CPhoneDevice::RegisterTimer(unsigned int timerType, unsigne return INVALID_TIMER_UID; } - context->uid = (unsigned long)timer; + context->uid = (uint64_t)timer; ts.it_value.tv_sec = (timeout / 1000); ts.it_value.tv_nsec = (timeout % 1000) * 1000; if (times != 1) @@ -1393,9 +1393,9 @@ bool CPhoneDevice::UnregisterTimer(IDevice::timer_uid_t uid) return false; } -unsigned long CPhoneDevice::RequestWakelock(unsigned long timeout) +uint64_t CPhoneDevice::RequestWakelock(uint64_t timeout) { - unsigned long wakelockId = m_wakelockIdFeed.fetch_add(1); + uint64_t wakelockId = m_wakelockIdFeed.fetch_add(1); std::string name = WAKELOCK_NAME; name += to_string(wakelockId); @@ -1425,7 +1425,7 @@ unsigned long CPhoneDevice::RequestWakelock(unsigned long timeout) return wakelockId; } -bool CPhoneDevice::ReleaseWakelock(unsigned long wakelock) +bool CPhoneDevice::ReleaseWakelock(uint64_t wakelock) { // ALOGI("ReleaseWakelock=%lld", wakelock); std::string name = WAKELOCK_NAME; @@ -1765,7 +1765,7 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< } else if (mPhotoInfo.mediaType == 0 && (mPhotoInfo.cameraType == CAM_TYPE_SERIAL)) { - unsigned long wid_serial = RequestWakelock(0); + uint64_t wid_serial = RequestWakelock(0); CPhoneDevice* pThis = this; IDevice::PHOTO_INFO localPhotoInfo = mPhotoInfo; IDevice::SerialsPhotoParam param = { "", 0, 0 }; @@ -1878,7 +1878,7 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< int orientation = mPhotoInfo.orientation == 0 ? -1 : (mPhotoInfo.orientation - 1) * 90; jboolean photoOrVideo = mPhotoInfo.mediaType == 0 ? JNI_TRUE : JNI_FALSE; - env->CallVoidMethod(m_javaService, mStartRecordingMid, photoOrVideo, mPhotoInfo.cameraId, (unsigned long)mPhotoInfo.photoId, + env->CallVoidMethod(m_javaService, mStartRecordingMid, photoOrVideo, mPhotoInfo.cameraId, (uint64_t)mPhotoInfo.photoId, mPhotoInfo.duration, mPhotoInfo.width, mPhotoInfo.height, mPhotoInfo.duration, orientation, leftTopOSD, rightTopOSD, rightBottomOSD, leftBottomOSD); @@ -1898,7 +1898,7 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< bool CPhoneDevice::OpenPTZSensors(uint32_t sec) { - unsigned long wid = RequestWakelock(0); + uint64_t wid = RequestWakelock(0); unsigned long long time_now = GetMicroTimeStamp(); if(time_now < localDelayTime-1000) { diff --git a/app/src/main/cpp/PhoneDevice.h b/app/src/main/cpp/PhoneDevice.h index ee444c0d..2c3aa177 100644 --- a/app/src/main/cpp/PhoneDevice.h +++ b/app/src/main/cpp/PhoneDevice.h @@ -202,10 +202,10 @@ public: { CPhoneDevice* device; unsigned int timerType; - unsigned long times; + uint64_t times; void* data; - unsigned long expectedTimes; - unsigned long uid; + uint64_t expectedTimes; + uint64_t uid; }; CPhoneDevice(JavaVM* vm, jobject service, const std::string& appPath, unsigned int netId, unsigned int versionCode, const std::string& nativeLibDir); @@ -226,10 +226,10 @@ public: virtual timer_uid_t RegisterHeartbeat(unsigned int timerType, unsigned int timeout, time_t tsForNextPhoto); virtual bool TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector& osds, const std::string& path); virtual bool CloseCamera(); - virtual timer_uid_t RegisterTimer(unsigned int timerType, unsigned int timeout, void* data, unsigned long times = 0); + virtual timer_uid_t RegisterTimer(unsigned int timerType, unsigned int timeout, void* data, uint64_t times = 0); virtual bool UnregisterTimer(timer_uid_t uid); - virtual unsigned long RequestWakelock(unsigned long timeout); - virtual bool ReleaseWakelock(unsigned long wakelock); + virtual uint64_t RequestWakelock(uint64_t timeout); + virtual bool ReleaseWakelock(uint64_t wakelock); virtual int GetWData(WEATHER_INFO *weatherInfo); virtual int GetIceData(ICE_INFO *iceInfo, ICE_TAIL *icetail, D_SENSOR_PARAM *sensorParam); From 467d042a7b38edfa8bbf86ed6c79d88190508cde Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Wed, 18 Dec 2024 15:33:10 +0800 Subject: [PATCH 09/82] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=87=8D=E5=90=AF?= =?UTF-8?q?=E5=90=8E=E5=A4=9A=E6=8B=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 47 +++++++++++++++++++------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index ec9c468e..5108a00b 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1781,35 +1781,44 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< std::this_thread::sleep_for(std::chrono::seconds(5)); } time_t ts = time(NULL); - if(!pThis->GetPTZSensorsStatus() && !pThis->GetCameraStatus()) - { - pThis->OpenPTZSensors(localPhotoInfo.selfTestingTime); - } + + pThis->OpenPTZSensors(localPhotoInfo.selfTestingTime); + CameraPhotoCmd(ts, localPhotoInfo.channel, 0, localPhotoInfo.resolution, 0, param.serfile, param.baud, param.addr); XYLOG(XYLOG_SEVERITY_INFO, "Taking photo over"); + pThis->ClosePTZSensors(localPhotoInfo.closeDelayTime); + GpioControl::setCam3V3Enable(false, localPhotoInfo.closeDelayTime); + + time_t takingTime = time(NULL); + if (localPhotoInfo.remedy != 0) + { + if ((takingTime - localPhotoInfo.scheduleTime) > 30) + { + takingTime = localPhotoInfo.scheduleTime + localPhotoInfo.channel * 2; + } + } IMAGE_DEF photo = { 0 }; std::vector objects; GetImage(0, &photo); - if(photo.state == 5){ + if(photo.state == 5) + { XYLOG(XYLOG_SEVERITY_INFO,"Get Serials Photo, PhotoID = %s", photo.photoname); - + localPhotoInfo.photoTime = takingTime; cv::Mat img = cv::imread(photo.photoname, cv::IMREAD_COLOR); if (!img.empty()) { int result = std::remove(photo.photoname); - pThis->TakePhotoCb(1, localPhotoInfo, "", photo.phototime - 28800, objects); + pThis->TakePhotoCb(1, localPhotoInfo, "", takingTime, objects); pThis->PostProcessPhoto(localPhotoInfo, osds, path, "", img); } }else { XYLOG(XYLOG_SEVERITY_WARNING,"Get Serials Photo Failed"); - pThis->TakePhotoCb(0, localPhotoInfo, path, photo.phototime - 28800, objects); + pThis->TakePhotoCb(0, localPhotoInfo, path, takingTime, objects); } // pThis->TakePTZPhotoCb(3, localPhotoInfo); - pThis->ClosePTZSensors(localPhotoInfo.closeDelayTime); - GpioControl::setCam3V3Enable(false, localPhotoInfo.closeDelayTime); pThis->ReleaseWakelock(wid_serial); }); @@ -1900,17 +1909,17 @@ bool CPhoneDevice::OpenPTZSensors(uint32_t sec) { uint64_t wid = RequestWakelock(0); unsigned long long time_now = GetMicroTimeStamp(); - if(time_now < localDelayTime-1000) { std::lock_guard lock(m_cameraLocker); - m_sensorsStatus = true; - m_cameraStatus = true; - OpenSensors(MAIN_POWER_OPEN); - OpenSensors(CAMERA_SENSOR_OPEN); - } - { - std::lock_guard lock(m_cameraLocker); -// std::unique_lock lock(m_cameraLocker); + if(time_now < localDelayTime-1000) + { + std::lock_guard lock(m_cameraLocker); + m_sensorsStatus = true; + m_cameraStatus = true; + OpenSensors(MAIN_POWER_OPEN); + OpenSensors(CAMERA_SENSOR_OPEN); + } + if (!m_cameraStatus && !m_sensorsStatus) { m_sensorsStatus = true; From 20f93c20bf5423eab517c25ea3a6cde3683fe26e Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Wed, 18 Dec 2024 16:21:41 +0800 Subject: [PATCH 10/82] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=87=87=E6=A0=B7?= =?UTF-8?q?=E5=91=A8=E6=9C=9F=E8=AE=BE=E7=BD=AE=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/xypower/mpapp/MicroPhotoService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index 3a3ae1a4..773674fd 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -449,7 +449,7 @@ public class MicroPhotoService extends Service { for (int idx = 0; idx < cnt; idx++) { long val = intent.getLongExtra(EXTRA_PARAM_SCHEDULE + idx, 0); - int channel = (int) ((val & 0xFF000L) >> 12); + int channel = (int) ((val & 0xFFFF000L) >> 12); int preset = (int) ((val & 0xFF0L) >> 4); boolean photoOrVideo = ((val & 0xFL) == 0); @@ -664,7 +664,7 @@ public class MicroPhotoService extends Service { for (int idx = 0; idx < cnt; idx++) { val = schedules.get(idx).longValue(); intent.putExtra(EXTRA_PARAM_SCHEDULE + idx, schedules.get(idx).longValue()); - channelStr.append("(" + ((val & 0XFF000) >> 12) + "-" + Long.toString (((val & 0XFF0) >> 4), 16).toUpperCase() + ") "); + channelStr.append("(" + ((val & 0XFFFF000) >> 12) + "-" + Long.toString (((val & 0XFF0) >> 4), 16).toUpperCase() + ") "); } intent.putExtra(EXTRA_PARAM_TIME, scheduleTime); @@ -687,7 +687,7 @@ public class MicroPhotoService extends Service { long currentTimeMillis = System.currentTimeMillis(); Date date = new Date(currentTimeMillis + timeout); String dateStr = (String) DateFormat.format("MM-dd kk:mm:ss", date); - Log.d(TAG, "PhotoTimer Reg: " + dateStr + " currentTimeMillis=" + currentTimeMillis + " timeout=" + timeout + " CH-PR=" + channelStr.toString()); + infoLog( "Timer Reg: " + dateStr + " currentTimeMillis=" + currentTimeMillis + " timeout=" + timeout + " CH-PR=" + channelStr.toString()); alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeout, pendingIntent); } From dc69600477bb477f82c34e41af60dcf3765426ea Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 18 Dec 2024 18:52:11 +0800 Subject: [PATCH 11/82] =?UTF-8?q?=E6=9C=89=E6=95=88=E6=80=A7=E6=A3=80?= =?UTF-8?q?=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/MicroPhoto.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/cpp/MicroPhoto.cpp b/app/src/main/cpp/MicroPhoto.cpp index 5f290e1e..cabd07d1 100644 --- a/app/src/main/cpp/MicroPhoto.cpp +++ b/app/src/main/cpp/MicroPhoto.cpp @@ -358,7 +358,7 @@ Java_com_xypower_mpapp_MicroPhotoService_notifyToTakePhoto( JNIEnv* env, jobject pThis, jlong handler, jint channel, jint preset, jlong scheduleTime, jboolean photoOrVideo) { - if (channel < 1 || channel > 0x1FF) + if (channel < 0 || channel > 0xFFFF) { return JNI_FALSE; } From bec5b74a4f1389dfb4db10a35b7e9ed4843caf93 Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 18 Dec 2024 19:03:08 +0800 Subject: [PATCH 12/82] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xypower/mpapp/MicroPhotoService.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index 773674fd..4c38d99f 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -661,10 +661,20 @@ public class MicroPhotoService extends Service { intent.putExtra(EXTRA_PARAM_SCHEDULES, cnt); StringBuilder channelStr = new StringBuilder(); long val = 0; + long channel = 0; for (int idx = 0; idx < cnt; idx++) { val = schedules.get(idx).longValue(); + channel = ((val & 0XFFFF000) >> 12); intent.putExtra(EXTRA_PARAM_SCHEDULE + idx, schedules.get(idx).longValue()); - channelStr.append("(" + ((val & 0XFFFF000) >> 12) + "-" + Long.toString (((val & 0XFF0) >> 4), 16).toUpperCase() + ") "); + if (channel > 0xFF) + { + channel &= 0xFF; + channelStr.append("(" + channel + "-" + Long.toString (((val & 0XFF0) >> 4), 16).toUpperCase() + "/SERIAL) "); + } + else + { + channelStr.append("(" + channel + "-" + Long.toString (((val & 0XFF0) >> 4), 16).toUpperCase() + "/IMG) "); + } } intent.putExtra(EXTRA_PARAM_TIME, scheduleTime); @@ -687,7 +697,7 @@ public class MicroPhotoService extends Service { long currentTimeMillis = System.currentTimeMillis(); Date date = new Date(currentTimeMillis + timeout); String dateStr = (String) DateFormat.format("MM-dd kk:mm:ss", date); - infoLog( "Timer Reg: " + dateStr + " currentTimeMillis=" + currentTimeMillis + " timeout=" + timeout + " CH-PR=" + channelStr.toString()); + infoLog( "Timer Reg: " + dateStr + " TS=" + currentTimeMillis + " Timeout=" + timeout + " " + channelStr.toString()); alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeout, pendingIntent); } From 56c1394bce1f65025b12a566c07588ae7cdc6457 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Wed, 18 Dec 2024 19:44:06 +0800 Subject: [PATCH 13/82] Update version to 1.1.24 Based Core Version to 1.2.19 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 254a1e12..d67160aa 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 = 1 -def AppBuildNumber = 23 +def AppBuildNumber = 24 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From 99c8e158c2b717ce8b817e8c0259c3b5db983b4e Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 18 Dec 2024 20:12:34 +0800 Subject: [PATCH 14/82] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xypower/mpapp/MicroPhotoService.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index 4c38d99f..311a71df 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -453,7 +453,14 @@ public class MicroPhotoService extends Service { int preset = (int) ((val & 0xFF0L) >> 4); boolean photoOrVideo = ((val & 0xFL) == 0); - Log.i(TAG, "PhotoTimer Fired: CH=" + channel + " PR=" + preset); + if (channel >= 256) + { + infoLog("SERIAL Timer Fired: CH=" + (channel - 256) + " PR=" + preset); + } + else + { + infoLog("IMG Timer Fired: CH=" + channel + " PR=" + preset); + } mService.notifyToTakePhoto(mService.mNativeHandle, channel, preset, ts, photoOrVideo); } } From fcd78f02a6c44f919ba7288dfdd7c877a7a5e63d Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Wed, 18 Dec 2024 22:11:18 +0800 Subject: [PATCH 15/82] =?UTF-8?q?=E4=BA=91=E5=8F=B0=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 108 +++++++++++++++++-------------- 1 file changed, 59 insertions(+), 49 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 5108a00b..854f47fa 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -3681,64 +3681,74 @@ void CPhoneDevice::ConvertDngToPng(const std::string& dngPath, const std::string void CPhoneDevice::CameraCtrl(unsigned char waitTime, unsigned char delayTime, unsigned char channel, int cmdidx, unsigned char preset, const char *serfile, unsigned int baud, int addr) { - switch (cmdidx) { - case 2:{ + if(!(m_sensorsStatus && !m_cameraStatus)) { + CPhoneDevice *pThis = this; + std::thread ctrlThread([pThis, waitTime, delayTime, cmdidx, channel, preset, serfile, baud, + addr]() mutable { + switch (cmdidx) { + case 2: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(time(NULL), channel, MOVE_PRESETNO, 0, preset, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } - case 3:{ + + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(time(NULL), channel, MOVE_PRESETNO, 0, preset, serfile, baud, + addr); + pThis->ClosePTZSensors(delayTime); + break; + } + case 3: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, MOVE_UP, 0, 0, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } - case 4:{ + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(0, channel, MOVE_UP, 0, 0, serfile, baud, addr); + pThis->ClosePTZSensors(delayTime); + break; + } + case 4: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, MOVE_DOWN, 0, 0, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } - case 5:{ + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(0, channel, MOVE_DOWN, 0, 0, serfile, baud, addr); + pThis->ClosePTZSensors(delayTime); + break; + } + case 5: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, MOVE_LEFT, 0, 0, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } - case 6:{ + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(0, channel, MOVE_LEFT, 0, 0, serfile, baud, addr); + pThis->ClosePTZSensors(delayTime); + break; + } + case 6: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, MOVE_RIGHT, 0, 0, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } - case 7:{ + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(0, channel, MOVE_RIGHT, 0, 0, serfile, baud, addr); + pThis->ClosePTZSensors(delayTime); + break; + } + case 7: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, ZOOM_WIDE, 0, 0, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } - case 8:{ + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(0, channel, ZOOM_WIDE, 0, 0, serfile, baud, addr); + pThis->ClosePTZSensors(delayTime); + break; + } + case 8: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, ZOOM_TELE, 0, 0, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } - case 9:{ + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(0, channel, ZOOM_TELE, 0, 0, serfile, baud, addr); + pThis->ClosePTZSensors(delayTime); + break; + } + case 9: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(time(NULL), channel, SAVE_PRESETNO, 0, preset, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(time(NULL), channel, SAVE_PRESETNO, 0, preset, serfile, baud, + addr); + pThis->ClosePTZSensors(delayTime); + break; + } + } + }); + ctrlThread.detach(); } } From c2687cc87e40b54c6b3904057a8b8cba0a79c43a Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 18 Dec 2024 23:05:58 +0800 Subject: [PATCH 16/82] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=88=AA=E7=85=9C?= =?UTF-8?q?=E6=96=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 5108a00b..e86d8e78 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1691,6 +1691,13 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< int streamSid = 0; // should put into config snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/LAPI/V1.0/Channels/%u/Media/Video/Streams/%d/Snapshot", (uint32_t)localPhotoInfo.channel, streamSid); } + else if (localPhotoInfo.vendor == 5) + { + // Hang Yu - New + // http://192.168.1.46/Snapshot/%u/RemoteImageCapture?ImageFormat=2&HorizontalPixel=1920&VerticalPixel=1080 + snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/Snapshot/%u/RemoteImageCapture?ImageFormat=2&HorizontalPixel=%u&VerticalPixel=%u", + (uint32_t)localPhotoInfo.channel, (uint32_t)localPhotoInfo.width, (uint32_t)localPhotoInfo.height); + } else { XYLOG(XYLOG_SEVERITY_ERROR, "Vendor(%u) not Supported CH=%u PR=%X PHOTOID=%u", (uint32_t)localPhotoInfo.vendor, (uint32_t)localPhotoInfo.channel, (unsigned int)localPhotoInfo.preset, localPhotoInfo.photoId); From 0b69dc75bcb290f868bea88c53cda2225dffd1cf Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 18 Dec 2024 23:24:08 +0800 Subject: [PATCH 17/82] Update version to 1.1.25 Based Core Version to 1.2.19 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index d67160aa..a101fd0b 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 = 1 -def AppBuildNumber = 24 +def AppBuildNumber = 25 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From ab9ba337dca3f5b941dc5d45a431111b7cd452f5 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 19 Dec 2024 09:24:25 +0800 Subject: [PATCH 18/82] =?UTF-8?q?=E4=BA=91=E5=8F=B0=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E6=98=A0=E5=B0=84=E5=85=B3=E7=B3=BB=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 65 ++------------------------------ 1 file changed, 4 insertions(+), 61 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index ac43c561..a50cf7fc 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -3692,68 +3692,11 @@ void CPhoneDevice::CameraCtrl(unsigned char waitTime, unsigned char delayTime, u CPhoneDevice *pThis = this; std::thread ctrlThread([pThis, waitTime, delayTime, cmdidx, channel, preset, serfile, baud, addr]() mutable { - switch (cmdidx) { - case 2: { -// if(GetCameraStatus()) - - pThis->OpenPTZSensors(waitTime); - CameraPhotoCmd(time(NULL), channel, MOVE_PRESETNO, 0, preset, serfile, baud, - addr); - pThis->ClosePTZSensors(delayTime); - break; - } - case 3: { -// if(GetCameraStatus()) - pThis->OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, MOVE_UP, 0, 0, serfile, baud, addr); - pThis->ClosePTZSensors(delayTime); - break; - } - case 4: { -// if(GetCameraStatus()) - pThis->OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, MOVE_DOWN, 0, 0, serfile, baud, addr); - pThis->ClosePTZSensors(delayTime); - break; - } - case 5: { -// if(GetCameraStatus()) - pThis->OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, MOVE_LEFT, 0, 0, serfile, baud, addr); - pThis->ClosePTZSensors(delayTime); - break; - } - case 6: { -// if(GetCameraStatus()) - pThis->OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, MOVE_RIGHT, 0, 0, serfile, baud, addr); - pThis->ClosePTZSensors(delayTime); - break; - } - case 7: { -// if(GetCameraStatus()) - pThis->OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, ZOOM_WIDE, 0, 0, serfile, baud, addr); - pThis->ClosePTZSensors(delayTime); - break; - } - case 8: { -// if(GetCameraStatus()) - pThis->OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, ZOOM_TELE, 0, 0, serfile, baud, addr); - pThis->ClosePTZSensors(delayTime); - break; - } - case 9: { -// if(GetCameraStatus()) - pThis->OpenPTZSensors(waitTime); - CameraPhotoCmd(time(NULL), channel, SAVE_PRESETNO, 0, preset, serfile, baud, - addr); - pThis->ClosePTZSensors(delayTime); - break; - } - } + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(time(NULL), channel, cmdidx, 0, preset, serfile, baud, + addr); + pThis->ClosePTZSensors(delayTime); }); ctrlThread.detach(); } From b2d2100dfc8049e86f0119b9dea09891a557567a Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 19 Dec 2024 09:47:01 +0800 Subject: [PATCH 19/82] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=91=E5=8F=B0?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E9=98=BB=E5=A1=9E=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index a50cf7fc..45d9cc6a 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1920,7 +1920,6 @@ bool CPhoneDevice::OpenPTZSensors(uint32_t sec) std::lock_guard lock(m_cameraLocker); if(time_now < localDelayTime-1000) { - std::lock_guard lock(m_cameraLocker); m_sensorsStatus = true; m_cameraStatus = true; OpenSensors(MAIN_POWER_OPEN); From d6392eb1d3c48e7b02311778eaf83487d0f442c4 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 19 Dec 2024 10:02:13 +0800 Subject: [PATCH 20/82] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=BA=91=E5=8F=B0?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E4=BC=A0=E5=85=A5=E6=96=87=E4=BB=B6=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 45d9cc6a..f08a162e 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -3689,11 +3689,12 @@ void CPhoneDevice::CameraCtrl(unsigned char waitTime, unsigned char delayTime, u { if(!(m_sensorsStatus && !m_cameraStatus)) { CPhoneDevice *pThis = this; - std::thread ctrlThread([pThis, waitTime, delayTime, cmdidx, channel, preset, serfile, baud, + string serfileStr(serfile); + std::thread ctrlThread([pThis, waitTime, delayTime, cmdidx, channel, preset, serfileStr, baud, addr]() mutable { pThis->OpenPTZSensors(waitTime); - CameraPhotoCmd(time(NULL), channel, cmdidx, 0, preset, serfile, baud, + CameraPhotoCmd(time(NULL), channel, cmdidx, 0, preset, serfileStr.c_str(), baud, addr); pThis->ClosePTZSensors(delayTime); }); From bf3cb6416fc2100b44151b14170a38f935268cb0 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 19 Dec 2024 10:05:37 +0800 Subject: [PATCH 21/82] Update version to 1.1.26 Based Core Version to 1.2.20 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index a101fd0b..37ec9dc8 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 = 1 -def AppBuildNumber = 25 +def AppBuildNumber = 26 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From 09c7af69477b4ce769c2acf19cfed1c6891f0549 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2024 10:06:45 +0800 Subject: [PATCH 22/82] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/xypower/mpapp/MicroPhotoService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index 311a71df..a401fea5 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -416,7 +416,7 @@ public class MicroPhotoService extends Service { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (TextUtils.equals(ACTION_HEARTBEAT, action)) { - Log.i(TAG, "HB Timer Fired ACTION=" + action); + infoLog("HB Timer Fired ACTION=" + action); Runnable runnable = new Runnable() { public void run() { mService.sendHeartbeat(mService.mNativeHandle, mService.getSignalLevel()); @@ -655,6 +655,10 @@ public class MicroPhotoService extends Service { alarmIntent.putExtra("HeartbeatTime", triggerTime); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); + Date date = new Date(triggerTime); + String dateStr = (String) DateFormat.format("kk:mm:ss", date); + infoLog( "HB Reg: " + dateStr + " Time=" + dateStr); + AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, triggerTime, pendingIntent); } From fa08064340abea069a9234557046315735c15f51 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2024 10:23:18 +0800 Subject: [PATCH 23/82] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BF=83=E8=B7=B3?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=92=8C=E7=9B=B8=E5=85=B3=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xypower/mpapp/MicroPhotoService.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index a401fea5..c2baf2ee 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -101,6 +101,10 @@ public class MicroPhotoService extends Service { public final static int MSG_WHAT_MAX = 1000; + public final static int BROADCAST_REQUEST_CODE_HEARTBEAT = 1; + public final static int BROADCAST_REQUEST_CODE_TAKING_PHOTO = 2; + public final static int BROADCAST_REQUEST_CODE_GPS = 2; + public static final int NOTIFICATION_ID_FOREGROUND_SERVICE = 8466503; public static final String ACTION_MSG_BROADCAST = "ACT_MSG_BROADCAST"; @@ -422,11 +426,12 @@ public class MicroPhotoService extends Service { mService.sendHeartbeat(mService.mNativeHandle, mService.getSignalLevel()); } }; - Thread th = new Thread(runnable); th.start(); - - mService.registerHeartbeatTimer(mService.mHeartbeatDuration); + + long expectedHbTime = intent.getLongExtra("HeartbeatTime", 0); + long timeout = (expectedHbTime != 0) ? (expectedHbTime + mService.mHeartbeatDuration - System.currentTimeMillis()) : mService.mHeartbeatDuration; + mService.registerHeartbeatTimer(timeout); try { @@ -653,7 +658,7 @@ public class MicroPhotoService extends Service { alarmIntent.setAction(ACTION_HEARTBEAT); alarmIntent.putExtra("HeartbeatDuration", mHeartbeatDuration); alarmIntent.putExtra("HeartbeatTime", triggerTime); - PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); + PendingIntent pendingIntent = PendingIntent.getBroadcast(this, BROADCAST_REQUEST_CODE_HEARTBEAT, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); Date date = new Date(triggerTime); String dateStr = (String) DateFormat.format("kk:mm:ss", date); @@ -696,7 +701,7 @@ public class MicroPhotoService extends Service { LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context); localBroadcastManager.sendBroadcast(intent); } else { - PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); + PendingIntent pendingIntent = PendingIntent.getBroadcast(context, BROADCAST_REQUEST_CODE_TAKING_PHOTO, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE); try { @@ -705,12 +710,12 @@ public class MicroPhotoService extends Service { ex.printStackTrace(); } + alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeout, pendingIntent); + long currentTimeMillis = System.currentTimeMillis(); Date date = new Date(currentTimeMillis + timeout); String dateStr = (String) DateFormat.format("MM-dd kk:mm:ss", date); infoLog( "Timer Reg: " + dateStr + " TS=" + currentTimeMillis + " Timeout=" + timeout + " " + channelStr.toString()); - - alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeout, pendingIntent); } } @@ -1405,7 +1410,7 @@ public class MicroPhotoService extends Service { Intent intent = new Intent(); intent.setAction(ACTION_GPS_TIMEOUT); - mPreviousGpsTimer = PendingIntent.getBroadcast(this, 0, intent, 0); + mPreviousGpsTimer = PendingIntent.getBroadcast(this, BROADCAST_REQUEST_CODE_GPS, intent, 0); alarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + mGpsTimeout, mPreviousGpsTimer); } catch (Exception ex) { From 224659c1637a1909f29eb98d4682785adef8cf2d Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2024 10:25:30 +0800 Subject: [PATCH 24/82] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/xypower/mpapp/MicroPhotoService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index c2baf2ee..e161036b 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -662,7 +662,7 @@ public class MicroPhotoService extends Service { Date date = new Date(triggerTime); String dateStr = (String) DateFormat.format("kk:mm:ss", date); - infoLog( "HB Reg: " + dateStr + " Time=" + dateStr); + infoLog( "HB Reg at " + dateStr); AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, triggerTime, pendingIntent); From feadee8ae4c392653378e0c6ae9bccd570eb88f6 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2024 10:29:34 +0800 Subject: [PATCH 25/82] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/xypower/mpapp/MicroPhotoService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index e161036b..345067fc 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -662,7 +662,7 @@ public class MicroPhotoService extends Service { Date date = new Date(triggerTime); String dateStr = (String) DateFormat.format("kk:mm:ss", date); - infoLog( "HB Reg at " + dateStr); + infoLog( "HB Reg " + Long.toString(triggerTime) + " at " + dateStr); AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, triggerTime, pendingIntent); From bc01722f5dfdddfa8b69a0f140cf9bccdc38271f Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2024 10:35:17 +0800 Subject: [PATCH 26/82] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BF=83=E8=B7=B3?= =?UTF-8?q?=E5=91=A8=E6=9C=9F=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/xypower/mpapp/MicroPhotoService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index 345067fc..e330c52b 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -638,7 +638,7 @@ public class MicroPhotoService extends Service { nextPhotoTime *= 1000; if (nextPhotoTime > ts) { mHeartbeatDuration = duration; - registerHeartbeatTimer((int) ((nextPhotoTime - ts) % duration) + 999); + registerHeartbeatTimer((int) ((nextPhotoTime - ts) % duration)); } else { mHeartbeatDuration = duration; From e2455cfd5a24c05027bf42e5003bc03460caa184 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 19 Dec 2024 11:42:51 +0800 Subject: [PATCH 27/82] =?UTF-8?q?=E8=BF=90=E7=BB=B4=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E6=97=A0=E6=8B=8D=E7=85=A7=E9=87=8D=E5=90=AF=EF=BC=88=E4=B8=B4?= =?UTF-8?q?=E6=97=B6=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xypower/mpmaster/MpMasterService.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java index 1030a698..7068d558 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java @@ -440,9 +440,10 @@ public class MpMasterService extends Service { final long modifiedTimeOfPhoto = getFileModificationTime(appPath + "data/alive/taking"); final long modifiedTimeOfUpload = getFileModificationTime(appPath + "data/alive/upload"); - if (((ts - modifiedTimeOfHb) > mTimeOfMpAppAlive) || - ((ts - modifiedTimeOfPhoto) > mTimeOfMpAppAlive * 4) || - ((ts - modifiedTimeOfUpload) > mTimeOfMpAppAlive * 4)) { + if (((ts - modifiedTimeOfHb) > mTimeOfMpAppAlive) //|| +// ((ts - modifiedTimeOfPhoto) > mTimeOfMpAppAlive * 4) || +// ((ts - modifiedTimeOfUpload) > mTimeOfMpAppAlive * 4) + ) { if (ts - mTimeToStartMpApp >= 1800000) { String msg = "Restart MpAPP as it is NOT Running hb=" + Long.toString(ts - modifiedTimeOfHb) + From 7d8c5d2342e83aa38f8cf1bee36776ad7ece4849 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 19 Dec 2024 11:44:36 +0800 Subject: [PATCH 28/82] Update MpMaster version to 1.0.89 --- mpmaster/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mpmaster/build.gradle b/mpmaster/build.gradle index 362a334d..dea51ff9 100644 --- a/mpmaster/build.gradle +++ b/mpmaster/build.gradle @@ -4,7 +4,7 @@ plugins { def AppMajorVersion = 1 def AppMinorVersion = 0 -def AppBuildNumber = 88 +def AppBuildNumber = 89 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From d92bc6760683ad75a74774a707fa173158f2170a Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2024 11:56:31 +0800 Subject: [PATCH 29/82] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/MicroPhoto.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/cpp/MicroPhoto.cpp b/app/src/main/cpp/MicroPhoto.cpp index cabd07d1..a5b03ead 100644 --- a/app/src/main/cpp/MicroPhoto.cpp +++ b/app/src/main/cpp/MicroPhoto.cpp @@ -510,6 +510,7 @@ Java_com_xypower_mpapp_MicroPhotoService_uninit( return JNI_FALSE; } + XYLOG(XYLOG_SEVERITY_WARNING, "Will uninit service"); IDevice* dev = pTerminal->GetDevice(); if (dev != NULL) { From fc7a00d10c2a38e7c9e3e6b2f50beef366b17c88 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2024 12:52:41 +0800 Subject: [PATCH 30/82] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BF=83=E8=B7=B3?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E5=99=A8=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xypower/mpapp/MicroPhotoService.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index e330c52b..5ecf5dae 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -429,8 +429,13 @@ public class MicroPhotoService extends Service { Thread th = new Thread(runnable); th.start(); - long expectedHbTime = intent.getLongExtra("HeartbeatTime", 0); - long timeout = (expectedHbTime != 0) ? (expectedHbTime + mService.mHeartbeatDuration - System.currentTimeMillis()) : mService.mHeartbeatDuration; + long ts = System.currentTimeMillis(); + long expectedHbTime = intent.getLongExtra("HeartbeatTime", ts); + long nextHbTime = expectedHbTime + mService.mHeartbeatDuration; + while (nextHbTime <= ts) { + nextHbTime += mService.mHeartbeatDuration; + } + long timeout = (expectedHbTime != 0) ? (nextHbTime - System.currentTimeMillis()) : mService.mHeartbeatDuration; mService.registerHeartbeatTimer(timeout); try { From b73c3953575c7c4e3ed7033dcaf44e98fa97879b Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2024 12:53:04 +0800 Subject: [PATCH 31/82] Update version to 1.1.27 Based Core Version to 1.2.20 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 37ec9dc8..9fe2b985 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 = 1 -def AppBuildNumber = 26 +def AppBuildNumber = 27 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From 8311ad8ba94139122d718baa0ff8912125184143 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2024 12:54:18 +0800 Subject: [PATCH 32/82] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xypower/mpapp/MicroPhotoService.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index 5ecf5dae..b113323b 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -420,7 +420,10 @@ public class MicroPhotoService extends Service { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (TextUtils.equals(ACTION_HEARTBEAT, action)) { - infoLog("HB Timer Fired ACTION=" + action); + long ts = System.currentTimeMillis(); + long expectedHbTime = intent.getLongExtra("HeartbeatTime", ts); + + infoLog("HB Timer Fired ACTION=" + action + " ExpTS=" + Long.toString(expectedHbTime)); Runnable runnable = new Runnable() { public void run() { mService.sendHeartbeat(mService.mNativeHandle, mService.getSignalLevel()); @@ -428,9 +431,7 @@ public class MicroPhotoService extends Service { }; Thread th = new Thread(runnable); th.start(); - - long ts = System.currentTimeMillis(); - long expectedHbTime = intent.getLongExtra("HeartbeatTime", ts); + long nextHbTime = expectedHbTime + mService.mHeartbeatDuration; while (nextHbTime <= ts) { nextHbTime += mService.mHeartbeatDuration; From 2ddb82a34559c2d334a969499db0b3453854bcd9 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2024 12:54:49 +0800 Subject: [PATCH 33/82] Update version to 1.1.28 Based Core Version to 1.2.20 --- app/build.gradle | 2 +- app/src/main/java/com/xypower/mpapp/MicroPhotoService.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9fe2b985..c45a443e 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 = 1 -def AppBuildNumber = 27 +def AppBuildNumber = 28 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index b113323b..50c1964b 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -431,7 +431,7 @@ public class MicroPhotoService extends Service { }; Thread th = new Thread(runnable); th.start(); - + long nextHbTime = expectedHbTime + mService.mHeartbeatDuration; while (nextHbTime <= ts) { nextHbTime += mService.mHeartbeatDuration; From 7ae11e40fec414419a5d5db49e207c1f8e152f57 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2024 13:12:57 +0800 Subject: [PATCH 34/82] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +++- app/src/main/java/com/xypower/mpapp/MicroPhotoService.java | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index c45a443e..abcda8dc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -96,12 +96,14 @@ android { variant.outputs.all { output -> if (outputFileName.endsWith('.apk')) { def buildTypeFlag = "dbg" + def prevFileName = "mpapp" if(variant.buildType.name.equals('release')) { buildTypeFlag = "rel" } def abi = output.getFilter(com.android.build.OutputFile.ABI) if (abi == null) abi = "all" - def fileName = "mpapp_v${defaultConfig.versionName}_${buildTypeFlag}_${new Date(System.currentTimeMillis()).format("yyyyMMdd")}_${abi}.apk" + if (abi.contains("v7a")) prevFileName = "N938" + def fileName = "${prevFileName}_v${defaultConfig.versionName}_${buildTypeFlag}_${new Date(System.currentTimeMillis()).format("yyyyMMdd")}_${abi}.apk" outputFileName = fileName } } diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index 50c1964b..0600515f 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -322,6 +322,7 @@ public class MicroPhotoService extends Service { getApplicationContext().registerReceiver(mNetworkChangedReceiver, filter); } + /* AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(ALARM_SERVICE); while (true) { @@ -331,6 +332,8 @@ public class MicroPhotoService extends Service { } } + */ + enableGps(true); requestPosition(); } From 77aa96252153fbcf170f47231fe08c34c9d733a9 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2024 14:02:39 +0800 Subject: [PATCH 35/82] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=97=B9=E9=92=9F?= =?UTF-8?q?=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xypower/mpapp/MicroPhotoService.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index 0600515f..fe728ae2 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -86,6 +86,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; public class MicroPhotoService extends Service { public static final String TAG = "MPLOG"; @@ -161,6 +162,8 @@ public class MicroPhotoService extends Service { private ServiceHandler mHander = null; private Messenger mMessenger = null; + private static AtomicInteger mPendingIntentFeed = new AtomicInteger(); + private String mModelName = null; public static boolean isRunning = false; @@ -659,15 +662,16 @@ public class MicroPhotoService extends Service { } } - private void registerHeartbeatTimer(long timeout) { + private void registerHeartbeatTimer(long timeoutMs) { // 创建延迟意图 - long triggerTime = System.currentTimeMillis() + timeout; + long triggerTime = System.currentTimeMillis() + timeoutMs; + triggerTime -= (triggerTime % 1000); Intent alarmIntent = new Intent(); alarmIntent.setAction(ACTION_HEARTBEAT); alarmIntent.putExtra("HeartbeatDuration", mHeartbeatDuration); alarmIntent.putExtra("HeartbeatTime", triggerTime); - PendingIntent pendingIntent = PendingIntent.getBroadcast(this, BROADCAST_REQUEST_CODE_HEARTBEAT, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); + PendingIntent pendingIntent = PendingIntent.getBroadcast(this, mPendingIntentFeed.getAndIncrement(), alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); Date date = new Date(triggerTime); String dateStr = (String) DateFormat.format("kk:mm:ss", date); @@ -710,7 +714,7 @@ public class MicroPhotoService extends Service { LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context); localBroadcastManager.sendBroadcast(intent); } else { - PendingIntent pendingIntent = PendingIntent.getBroadcast(context, BROADCAST_REQUEST_CODE_TAKING_PHOTO, intent, PendingIntent.FLAG_UPDATE_CURRENT); + PendingIntent pendingIntent = PendingIntent.getBroadcast(context, mPendingIntentFeed.getAndIncrement(), intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE); try { @@ -1017,7 +1021,7 @@ public class MicroPhotoService extends Service { alarmIntent.setPackage(context.getPackageName()); alarmIntent.setAction(ACTION_STOP); - PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), 0, alarmIntent, 0); + PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), mPendingIntentFeed.getAndIncrement(), alarmIntent, 0); AlarmManager alarmManager = (AlarmManager) context.getApplicationContext().getSystemService(ALARM_SERVICE); alarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 100, pendingIntent); @@ -1419,7 +1423,7 @@ public class MicroPhotoService extends Service { Intent intent = new Intent(); intent.setAction(ACTION_GPS_TIMEOUT); - mPreviousGpsTimer = PendingIntent.getBroadcast(this, BROADCAST_REQUEST_CODE_GPS, intent, 0); + mPreviousGpsTimer = PendingIntent.getBroadcast(this, mPendingIntentFeed.getAndIncrement(), intent, 0); alarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + mGpsTimeout, mPreviousGpsTimer); } catch (Exception ex) { From fd8b9c093e1462188031af7d7344a4ad232d1a30 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2024 14:03:18 +0800 Subject: [PATCH 36/82] Update version to 1.1.29 Based Core Version to 1.2.20 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index abcda8dc..b464eb44 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 = 1 -def AppBuildNumber = 28 +def AppBuildNumber = 29 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From 7aa553b1fa3eb79e1d078a82792c313cca69c116 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 19 Dec 2024 14:41:45 +0800 Subject: [PATCH 37/82] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=A7=84=E7=BA=A6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=97=B6=E9=97=B4=E4=B8=8E=E6=B0=B4=E5=8D=B0?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E4=B8=8D=E4=B8=80=E8=87=B4=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index f08a162e..59554c9e 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1797,7 +1797,7 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< pThis->ClosePTZSensors(localPhotoInfo.closeDelayTime); GpioControl::setCam3V3Enable(false, localPhotoInfo.closeDelayTime); - time_t takingTime = time(NULL); + time_t takingTime = ts; if (localPhotoInfo.remedy != 0) { if ((takingTime - localPhotoInfo.scheduleTime) > 30) From 4af9c9244010f7017fbdc0f80e2b911ea92e2768 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 19 Dec 2024 16:03:03 +0800 Subject: [PATCH 38/82] =?UTF-8?q?PendingIntent=E8=AF=B7=E6=B1=82=E7=A0=81?= =?UTF-8?q?=E6=94=B9=E5=9B=9E=E5=9B=BA=E5=AE=9A=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/xypower/mpapp/MicroPhotoService.java | 4 ++-- .../src/main/java/com/xypower/mpmaster/MpMasterService.java | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index fe728ae2..5811e499 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -671,7 +671,7 @@ public class MicroPhotoService extends Service { alarmIntent.setAction(ACTION_HEARTBEAT); alarmIntent.putExtra("HeartbeatDuration", mHeartbeatDuration); alarmIntent.putExtra("HeartbeatTime", triggerTime); - PendingIntent pendingIntent = PendingIntent.getBroadcast(this, mPendingIntentFeed.getAndIncrement(), alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); + PendingIntent pendingIntent = PendingIntent.getBroadcast(this, BROADCAST_REQUEST_CODE_HEARTBEAT, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); Date date = new Date(triggerTime); String dateStr = (String) DateFormat.format("kk:mm:ss", date); @@ -714,7 +714,7 @@ public class MicroPhotoService extends Service { LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context); localBroadcastManager.sendBroadcast(intent); } else { - PendingIntent pendingIntent = PendingIntent.getBroadcast(context, mPendingIntentFeed.getAndIncrement(), intent, PendingIntent.FLAG_UPDATE_CURRENT); + PendingIntent pendingIntent = PendingIntent.getBroadcast(context, BROADCAST_REQUEST_CODE_TAKING_PHOTO, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE); try { diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java index 7068d558..e2517422 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java @@ -812,9 +812,8 @@ public class MpMasterService extends Service { if (keepAlive) { alarmIntent.putExtra("keepAlive", keepAlive); } - int uniqueReqCode = reqCode.getAndIncrement(); - PendingIntent pendingIntent = PendingIntent.getBroadcast(this, uniqueReqCode, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); -// PendingIntent pendingIntent = PendingIntent.getBroadcast(this, keepAlive ? 0 : 1, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); +// PendingIntent pendingIntent = PendingIntent.getBroadcast(this, uniqueReqCode, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); + PendingIntent pendingIntent = PendingIntent.getBroadcast(this, keepAlive ? 0 : 1, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); Date dt = new Date(triggerTime); From 3a98b0a451ae07067a755c2b914f42983b935b5c Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2024 16:34:06 +0800 Subject: [PATCH 39/82] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/xypower/mpapp/MicroPhotoService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index fe728ae2..0f1b810e 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -206,7 +206,7 @@ public class MicroPhotoService extends Service { @Override public void onTrimMemory(int level) { - Log.w(TAG, "onTrimMemory level=" + level); + infoLog("Event onTrimMemory level=" + level); if (level >= ComponentCallbacks2.TRIM_MEMORY_BACKGROUND) { // Clear the caches. Note all pending requests will be removed too. final Context context = getApplicationContext(); From a4deb30423011ac109e914f19c02bed3cffce6f1 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 19 Dec 2024 17:25:33 +0800 Subject: [PATCH 40/82] =?UTF-8?q?=E4=BA=91=E5=8F=B0=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=94=A4=E9=86=92=E9=94=81=EF=BC=8C=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E5=88=A4=E6=96=AD=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 59554c9e..f6c5e9de 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1924,9 +1924,7 @@ bool CPhoneDevice::OpenPTZSensors(uint32_t sec) m_cameraStatus = true; OpenSensors(MAIN_POWER_OPEN); OpenSensors(CAMERA_SENSOR_OPEN); - } - - if (!m_cameraStatus && !m_sensorsStatus) + }else if (!m_cameraStatus && !m_sensorsStatus) { m_sensorsStatus = true; OpenSensors(MAIN_POWER_OPEN); @@ -1996,12 +1994,10 @@ bool CPhoneDevice::ClosePTZSensors(uint32_t delayedCloseTime) bool CPhoneDevice::GetPTZSensorsStatus() { - std::lock_guard lock(m_cameraLocker); return m_sensorsStatus; } bool CPhoneDevice::GetCameraStatus() { - std::lock_guard lock(m_cameraLocker); return m_cameraStatus; } @@ -3692,11 +3688,12 @@ void CPhoneDevice::CameraCtrl(unsigned char waitTime, unsigned char delayTime, u string serfileStr(serfile); std::thread ctrlThread([pThis, waitTime, delayTime, cmdidx, channel, preset, serfileStr, baud, addr]() mutable { - + uint64_t wid = pThis->RequestWakelock(0); pThis->OpenPTZSensors(waitTime); CameraPhotoCmd(time(NULL), channel, cmdidx, 0, preset, serfileStr.c_str(), baud, addr); pThis->ClosePTZSensors(delayTime); + pThis->ReleaseWakelock(wid); }); ctrlThread.detach(); } From d671565f0b0a6a629ffaf8f2f6f9ad94c054fde5 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 19 Dec 2024 18:45:50 +0800 Subject: [PATCH 41/82] Update version to 1.1.30 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index b464eb44..6ee8f6cc 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 = 1 -def AppBuildNumber = 29 +def AppBuildNumber = 30 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From c3f7d99a0b30e6a039853b30b314a9cf3670e58a Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 19 Dec 2024 19:33:08 +0800 Subject: [PATCH 42/82] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=91=E5=8F=B0?= =?UTF-8?q?=E7=94=B5=E6=BA=90=E5=85=B3=E9=97=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index f6c5e9de..97394a6f 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1980,7 +1980,7 @@ bool CPhoneDevice::ClosePTZSensors(uint32_t delayedCloseTime) { m_shouldStopWaiting.store(true); } - else if(m_sensorsStatus && m_cameraStatus) + else { std::lock_guard lock(m_cameraLocker); // std::unique_lock lock(m_cameraLocker); From 2b26a090a030558153b15c2823bee742da23a4ce Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2024 19:44:52 +0800 Subject: [PATCH 43/82] =?UTF-8?q?=E8=88=AA=E7=85=9C=E6=96=B0=E6=AC=BE?= =?UTF-8?q?=E6=91=84=E5=83=8F=E5=A4=B4=E7=9A=84=E6=8E=A5=E5=8F=A3=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/CMakeLists.txt | 2 +- app/src/main/cpp/PhoneDevice.cpp | 8 ++- app/src/main/cpp/netcamera/httpclient.cpp | 80 ++++++++++++++++------- app/src/main/cpp/netcamera/httpclient.h | 4 +- app/src/main/cpp/netcamera/netcamera.h | 3 + 5 files changed, 70 insertions(+), 27 deletions(-) diff --git a/app/src/main/cpp/CMakeLists.txt b/app/src/main/cpp/CMakeLists.txt index cb99ef6f..736422ad 100644 --- a/app/src/main/cpp/CMakeLists.txt +++ b/app/src/main/cpp/CMakeLists.txt @@ -47,7 +47,7 @@ add_definitions(-DUSING_EXEC_HDRP=1) set(USING_EXEC_HDRP 1) -add_definitions(-DUSING_PLZ) +# add_definitions(-DUSING_PLZ) if(ANDROID_ABI STREQUAL "armeabi-v7a") add_definitions(-DUSING_N938) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 59554c9e..f404f027 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1678,6 +1678,7 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< if (localPhotoInfo.vendor == 1) { // Hai Kang + netPhotoInfo.authType = HTTP_AUTH_TYPE_DIGEST; snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/ISAPI/Streaming/channels/%u/picture", (uint32_t)localPhotoInfo.channel); } else if (localPhotoInfo.vendor == 2) @@ -1688,15 +1689,18 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< else if (localPhotoInfo.vendor == 3) { // Yu Shi + netPhotoInfo.authType = HTTP_AUTH_TYPE_DIGEST; int streamSid = 0; // should put into config snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/LAPI/V1.0/Channels/%u/Media/Video/Streams/%d/Snapshot", (uint32_t)localPhotoInfo.channel, streamSid); } else if (localPhotoInfo.vendor == 5) { // Hang Yu - New + netPhotoInfo.authType = HTTP_AUTH_TYPE_BASIC; // http://192.168.1.46/Snapshot/%u/RemoteImageCapture?ImageFormat=2&HorizontalPixel=1920&VerticalPixel=1080 - snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/Snapshot/%u/RemoteImageCapture?ImageFormat=2&HorizontalPixel=%u&VerticalPixel=%u", - (uint32_t)localPhotoInfo.channel, (uint32_t)localPhotoInfo.width, (uint32_t)localPhotoInfo.height); + // http://192.168.1.101/Snapshot/1/2/RemoteImageCaptureV2?ImageFormat=jpg + // http://192.168.1.101/Snapshot/1/1/RemoteImageCaptureV2?ImageFormat=jpg + snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/Snapshot/%u/1/RemoteImageCaptureV2?ImageFormat=jpg", (uint32_t)localPhotoInfo.channel); } else { diff --git a/app/src/main/cpp/netcamera/httpclient.cpp b/app/src/main/cpp/netcamera/httpclient.cpp index b5d256c9..2f16d3b3 100644 --- a/app/src/main/cpp/netcamera/httpclient.cpp +++ b/app/src/main/cpp/netcamera/httpclient.cpp @@ -29,7 +29,7 @@ static int SockOptCallback(void *clientp, curl_socket_t curlfd, curlsocktype pur return res == 0 ? CURL_SOCKOPT_OK : CURL_SOCKOPT_ERROR; } -int DoGetRequest(const char* url, const char* userName, const char* password, net_handle_t netHandle, std::vector& data) +int DoGetRequest(const char* url, int authType, const char* userName, const char* password, net_handle_t netHandle, std::vector& data) { CURLcode nRet; std::string auth; @@ -37,14 +37,24 @@ int DoGetRequest(const char* url, const char* userName, const char* password, ne CURL *curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "GET"); curl_easy_setopt(curl, CURLOPT_URL, url); - if (userName != NULL && password != NULL && strlen(userName) > 0) + if (authType != HTTP_AUTH_TYPE_NONE) { - auth = userName; - auth += ":"; - auth += password; - curl_easy_setopt(curl, CURLOPT_USERPWD, auth.c_str()); - // DIGEST Auth - curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); + if (userName != NULL && password != NULL && strlen(userName) > 0) + { + auth = userName; + auth += ":"; + auth += password; + curl_easy_setopt(curl, CURLOPT_USERPWD, auth.c_str()); + // DIGEST Auth + if (authType == HTTP_AUTH_TYPE_BASIC) + { + curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); + } + else if (authType == HTTP_AUTH_TYPE_DIGEST) + { + curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); + } + } } if (netHandle != NETWORK_UNSPECIFIED) @@ -69,30 +79,56 @@ int DoGetRequest(const char* url, const char* userName, const char* password, ne curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10); nRet = curl_easy_perform(curl); - if (CURLE_OK != nRet) + + long responseCode = 0; + if (CURLE_OK == nRet) + { + curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &responseCode); + if (responseCode != 200) + { +#ifdef _DEBUG + char * log = new char[data.size() + 1]; + log[data.size()] = 0; + memcpy(log, &data[0], data.size()); + printf(log); + delete[] log; +#endif + } + } + else { printf("GET err=%d", nRet); } curl_easy_cleanup(curl); - return (0 == nRet) ? 0 : 1; + return ((0 == nRet) && (responseCode == 200)) ? 0 : 1; } -int DoPutRequest(const char* url, const char* userName, const char* password, net_handle_t netHandle, const char* contents, std::vector& data) +int DoPutRequest(const char* url, int authType, const char* userName, const char* password, net_handle_t netHandle, const char* contents, std::vector& data) { std::string auth; CURL *curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT"); curl_easy_setopt(curl, CURLOPT_URL, url); - if (userName != NULL && password != NULL && strlen(userName) > 0) + if (authType != HTTP_AUTH_TYPE_NONE) { - auth = userName; - auth += ":"; - auth += password; - curl_easy_setopt(curl, CURLOPT_USERPWD, auth.c_str()); - // DIGEST Auth - curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); + if (userName != NULL && password != NULL && strlen(userName) > 0) + { + auth = userName; + auth += ":"; + auth += password; + curl_easy_setopt(curl, CURLOPT_USERPWD, auth.c_str()); + // DIGEST Auth + if (authType == HTTP_AUTH_TYPE_BASIC) + { + curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); + } + else if (authType == HTTP_AUTH_TYPE_DIGEST) + { + curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); + } + } } if (netHandle != NETWORK_UNSPECIFIED) @@ -137,7 +173,7 @@ bool requestCapture(uint8_t channel, uint8_t preset, const NET_PHOTO_INFO& photo url += photoInfo.ip; url += photoInfo.url; - int nRet = DoGetRequest(url.c_str(), userName, password, photoInfo.netHandle, data); + int nRet = DoGetRequest(url.c_str(), photoInfo.authType, userName, password, photoInfo.netHandle, data); if (0 == nRet) { if (!data.empty()) @@ -170,7 +206,7 @@ bool requestCapture(uint8_t channel, uint8_t preset, const NET_PHOTO_INFO& photo url += photoInfo.ip; url += photoInfo.url; - int nRet = DoGetRequest(url.c_str(), userName, password, photoInfo.netHandle, img); + int nRet = DoGetRequest(url.c_str(), photoInfo.authType, userName, password, photoInfo.netHandle, img); return (0 == nRet); } @@ -191,7 +227,7 @@ namespace nc_hk url += photoInfo.ip; url += photoInfo.url; - int nRet = DoGetRequest(url.c_str(), userName, password, photoInfo.netHandle, img); + int nRet = DoGetRequest(url.c_str(), photoInfo.authType, userName, password, photoInfo.netHandle, img); #ifdef _DEBUG if (0 == nRet) { @@ -225,7 +261,7 @@ namespace nc_ys url += photoInfo.ip; url += photoInfo.url; - int nRet = DoGetRequest(url.c_str(), userName, password, photoInfo.netHandle, img); + int nRet = DoGetRequest(url.c_str(), photoInfo.authType, userName, password, photoInfo.netHandle, img); #ifdef _DEBUG if (0 == nRet) { diff --git a/app/src/main/cpp/netcamera/httpclient.h b/app/src/main/cpp/netcamera/httpclient.h index e1cc05d9..71af1a76 100644 --- a/app/src/main/cpp/netcamera/httpclient.h +++ b/app/src/main/cpp/netcamera/httpclient.h @@ -16,7 +16,7 @@ bool setIPAddress(const char *if_name, const char *ip_addr, const char *net_mask, const char *gateway_addr); -int DoGetRequest(const char* url, const char* userName, const char* password, net_handle_t netHandle, std::vector& data); -int DoPutRequest(const char* url, const char* userName, const char* password, net_handle_t netHandle, const char* contents, std::vector& data); +int DoGetRequest(const char* url, int authType, const char* userName, const char* password, net_handle_t netHandle, std::vector& data); +int DoPutRequest(const char* url, int authType, const char* userName, const char* password, net_handle_t netHandle, const char* contents, std::vector& data); #endif // __HTTP_CLIENT__ \ No newline at end of file diff --git a/app/src/main/cpp/netcamera/netcamera.h b/app/src/main/cpp/netcamera/netcamera.h index c5326734..9f0ab52e 100644 --- a/app/src/main/cpp/netcamera/netcamera.h +++ b/app/src/main/cpp/netcamera/netcamera.h @@ -5,6 +5,9 @@ #ifndef __NET_CAMERA__ #define __NET_CAMERA__ +#define HTTP_AUTH_TYPE_NONE 0 +#define HTTP_AUTH_TYPE_BASIC 1 +#define HTTP_AUTH_TYPE_DIGEST 2 struct NET_PHOTO_INFO { From 7cc3de572bacd0810b78d6dc75e639353c662e55 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 19 Dec 2024 19:46:07 +0800 Subject: [PATCH 44/82] =?UTF-8?q?=E7=BD=91=E7=BB=9C=E6=91=84=E5=83=8F?= =?UTF-8?q?=E6=9C=BA=E8=A7=84=E7=BA=A6=E4=B8=8A=E4=BC=A0=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E4=B8=8E=E6=B0=B4=E5=8D=B0=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 97394a6f..1e3ce7c9 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1639,6 +1639,7 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< std::thread t([localPhotoInfo, path, pThis, osds, powerCtrlPtr]() mutable { // AutoEnv autoEnv(pThis->m_vm); + time_t ts = time(NULL); uint32_t waitTime = localPhotoInfo.selfTestingTime; waitTime = (waitTime!= 0) ? (waitTime * 1024) : 10240; std::this_thread::sleep_for(std::chrono::milliseconds(waitTime)); @@ -1740,7 +1741,7 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< if (netCaptureResult) { - time_t takingTime = time(NULL); + time_t takingTime = ts; if (localPhotoInfo.remedy != 0) { if ((takingTime - localPhotoInfo.scheduleTime) > 30) From 6940c89caf06fae11d11d1a625fcab75c39e19ee Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 19 Dec 2024 19:47:06 +0800 Subject: [PATCH 45/82] Update version to 1.1.31 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 6ee8f6cc..367e4c73 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 = 1 -def AppBuildNumber = 30 +def AppBuildNumber = 31 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From ebe0def611217f303c2e239132ab458cd3e359ed Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 19 Dec 2024 20:46:43 +0800 Subject: [PATCH 46/82] =?UTF-8?q?=E5=8A=A0=E9=95=BF=E4=BA=91=E5=8F=B0?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=8E=A7=E5=88=B6=E7=B1=BB=E5=9E=8B?= 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/PhoneDevice.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 1e3ce7c9..d0765301 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -3682,7 +3682,7 @@ void CPhoneDevice::ConvertDngToPng(const std::string& dngPath, const std::string } } -void CPhoneDevice::CameraCtrl(unsigned char waitTime, unsigned char delayTime, unsigned char channel, int cmdidx, unsigned char preset, const char *serfile, unsigned int baud, int addr) +void CPhoneDevice::CameraCtrl(unsigned short waitTime, unsigned short delayTime, unsigned char channel, int cmdidx, unsigned char preset, const char *serfile, unsigned int baud, int addr) { if(!(m_sensorsStatus && !m_cameraStatus)) { CPhoneDevice *pThis = this; diff --git a/app/src/main/cpp/PhoneDevice.h b/app/src/main/cpp/PhoneDevice.h index 2c3aa177..7af28b0d 100644 --- a/app/src/main/cpp/PhoneDevice.h +++ b/app/src/main/cpp/PhoneDevice.h @@ -239,7 +239,7 @@ public: virtual bool ClosePTZSensors(uint32_t delayedCloseTime); virtual bool GetPTZSensorsStatus(); virtual bool GetCameraStatus(); - virtual void CameraCtrl(unsigned char waitTime, unsigned char delayTime, unsigned char channel, int cmdidx, unsigned char presetno, const char *serfile, unsigned int baud, int addr); + virtual void CameraCtrl(unsigned short waitTime, unsigned short delayTime, unsigned char channel, int cmdidx, unsigned char presetno, const char *serfile, unsigned int baud, int addr); virtual int GetSerialPhoto(int devno, D_IMAGE_DEF *photo); virtual void InitSerialComm(D_SENSOR_PARAM *sensorParam, char *filedir); From 1195bb01a1ec8cad07ee22c55dee8dd28179462e Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 19 Dec 2024 21:00:58 +0800 Subject: [PATCH 47/82] Update version to 1.1.32 Based Core Version to 1.2.22 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 367e4c73..7a3552de 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 = 1 -def AppBuildNumber = 31 +def AppBuildNumber = 32 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From ddff8bdaca59d489d39ad5802e987ce75f47df2b Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Fri, 20 Dec 2024 13:52:03 +0800 Subject: [PATCH 48/82] =?UTF-8?q?=E4=B8=B2=E5=8F=A3=E6=8B=8D=E7=85=A7?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E9=A2=84=E7=BD=AE=E4=BD=8DBUG=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index dc0e911c..d9d3940a 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1787,16 +1787,17 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< std::thread t([localPhotoInfo, param, pThis, path, osds, wid_serial]() mutable { + time_t ts = time(NULL); + pThis->OpenPTZSensors(localPhotoInfo.selfTestingTime); + if (localPhotoInfo.preset != 0 && localPhotoInfo.preset != 0xFF) { + XYLOG(XYLOG_SEVERITY_INFO,"Recv CameraCtrl Command, action= MOVE_PRESETNO, preset = %u", localPhotoInfo.preset); CameraPhotoCmd(time(NULL), localPhotoInfo.channel, MOVE_PRESETNO, 0, localPhotoInfo.preset, param.serfile, param.baud, param.addr); std::this_thread::sleep_for(std::chrono::seconds(5)); } - time_t ts = time(NULL); - - pThis->OpenPTZSensors(localPhotoInfo.selfTestingTime); - CameraPhotoCmd(ts, localPhotoInfo.channel, 0, localPhotoInfo.resolution, 0, param.serfile, param.baud, param.addr); + CameraPhotoCmd(ts, localPhotoInfo.channel, 0, localPhotoInfo.resolution, localPhotoInfo.preset, param.serfile, param.baud, param.addr); XYLOG(XYLOG_SEVERITY_INFO, "Taking photo over"); pThis->ClosePTZSensors(localPhotoInfo.closeDelayTime); From a3291e2dd200a44473c10006074fdb9d45ddf97e Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Fri, 20 Dec 2024 14:06:05 +0800 Subject: [PATCH 49/82] Update version to 1.1.33 Based Core Version to 1.2.23 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 7a3552de..a8e71455 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 = 1 -def AppBuildNumber = 32 +def AppBuildNumber = 33 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From 99efe9c91f272f94d429d9acc92ce0b877547600 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Fri, 20 Dec 2024 14:55:24 +0800 Subject: [PATCH 50/82] =?UTF-8?q?=E5=8A=A0=E9=95=BF=E6=8B=8D=E7=85=A7?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E8=A1=A8=E6=9B=B4=E6=96=B0=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E7=B1=BB=E5=9E=8B=E9=95=BF=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index d9d3940a..21ced7ed 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -831,7 +831,7 @@ bool CPhoneDevice::UpdateSchedules() { ALOGE("Failed to get JNI Env"); } - time_t ts = time(NULL); + int64_t ts = time(NULL); ret = env->CallBooleanMethod(m_javaService, mUpdateCaptureScheduleMid, ts); if (didAttachThread) { From 162d7624afb8532b462d951243466a2631ae464b Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Fri, 20 Dec 2024 15:25:14 +0800 Subject: [PATCH 51/82] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E9=95=BF=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 21ced7ed..25f9fccf 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -831,7 +831,7 @@ bool CPhoneDevice::UpdateSchedules() { ALOGE("Failed to get JNI Env"); } - int64_t ts = time(NULL); + jlong ts = time(NULL); ret = env->CallBooleanMethod(m_javaService, mUpdateCaptureScheduleMid, ts); if (didAttachThread) { @@ -1167,7 +1167,7 @@ void CPhoneDevice::RestartApp(int resetType, long timeout, const std::string& re { jreason = env->NewStringUTF(reason.c_str()); } - env->CallVoidMethod(m_javaService, mRebootMid, resetType, timeout, jreason); + env->CallVoidMethod(m_javaService, mRebootMid, resetType, (jlong)timeout, jreason); if (didAttachThread) { m_vm->DetachCurrentThread(); From c501b689de457912182a71d3e0adb263e2d83a84 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Fri, 20 Dec 2024 16:19:26 +0800 Subject: [PATCH 52/82] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=AB=8B=E5=8D=B3?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E6=91=84=E5=83=8F=E6=9C=BA=E7=94=B5=E6=BA=90?= =?UTF-8?q?=E5=87=BD=E6=95=B0=EF=BC=8C=E5=AE=9E=E7=8E=B0=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E5=85=B3=E9=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/GPIOControl.cpp | 24 ++++++++++++++++++++++++ app/src/main/cpp/GPIOControl.h | 20 +++++++++++++++++++- app/src/main/cpp/PhoneDevice.cpp | 31 ++++++++++++++++++++++++------- 3 files changed, 67 insertions(+), 8 deletions(-) diff --git a/app/src/main/cpp/GPIOControl.cpp b/app/src/main/cpp/GPIOControl.cpp index e17bd754..bef5b2ab 100644 --- a/app/src/main/cpp/GPIOControl.cpp +++ b/app/src/main/cpp/GPIOControl.cpp @@ -198,6 +198,30 @@ size_t GpioControl::TurnOn(const std::vector& cmds) return 0; } +size_t GpioControl::TurnOffImmediately(int cmd) +{ + time_t ts = time(NULL) + 2; + size_t ref = 0; + std::vector::iterator it; + m_locker.lock(); + for (it = m_items.begin(); it != m_items.end(); ++it) + { + if (it->cmd == cmd) + { + ref = it->references; + it->closeCmds++; + it->closeTime = ts; + break; + } + } + m_locker.unlock(); + m_semaphore.release(); +#ifdef _DEBUG + ALOGI("PWR TurnOffNow cmd=%d ref=%u", cmd, (uint32_t)ref); +#endif + return 0; +} + size_t GpioControl::TurnOff(int cmd, uint32_t delayedCloseTime/* = 0*/) { time_t ts = 0; diff --git a/app/src/main/cpp/GPIOControl.h b/app/src/main/cpp/GPIOControl.h index 8083e095..2918d61e 100644 --- a/app/src/main/cpp/GPIOControl.h +++ b/app/src/main/cpp/GPIOControl.h @@ -177,6 +177,7 @@ public: static size_t TurnOff(int cmd, uint32_t delayedCloseTime = 0); static size_t TurnOff(const std::vector& cmds, uint32_t delayedCloseTime = 0); static size_t TurnOff(const std::vector >& cmds); + static size_t TurnOffImmediately(int cmd); static void PowerControlThreadProc(); @@ -532,7 +533,24 @@ public: #ifdef USING_PLZ PowerControl(CMD_SET_PTZ_PWR_ENABLE, CMD_SET_100M_ENABLE, CMD_SET_100M_SWITCH_PWR_ENABLE, CMD_SET_12V_EN_STATE, closeDelayTime) #else // USING_PLZ - PowerControl(CMD_SET_OTG_STATE, CMD_SET_12V_EN_STATE, closeDelayTime) + PowerControl(CMD_SET_OTG_STATE, CMD_SET_12V_EN_STATE, closeDelayTime) +#endif // USING_PLZ +#endif // USING_N938 + { + } +}; + +class SerialCameraPowerCtrl : public PowerControl +{ +public: + SerialCameraPowerCtrl(uint32_t closeDelayTime) : +#ifdef USING_N938 + PowerControl(CMD_SET_SPI_POWER, CMD_SPI2SERIAL_POWER_EN, CMD_RS485_3V3_EN, CMD_SET_PIC1_POWER, CMD_SET_485_EN4, closeDelayTime) +#else // USING_N938 +#ifdef USING_PLZ + PowerControl(CMD_SET_12V_EN_STATE, CMD_SET_485_ENABLE, CMD_SET_3V3_PWR_EN, CMD_SET_SPI_POWER, CMD_SET_PTZ_PWR_ENABLE, closeDelayTime) +#else // USING_PLZ + PowerControl(CMD_SET_12V_EN_STATE, CMD_SET_3V3_PWR_EN, CMD_SET_SPI_POWER, CMD_SET_485_EN_STATE, closeDelayTime) #endif // USING_PLZ #endif // USING_N938 { diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 25f9fccf..04485234 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -4171,19 +4171,36 @@ bool CPhoneDevice::CloseSensors(int sensortype, uint32_t delayedCloseTime) } if(sensortype == CAMERA_SENSOR_OPEN) { + if(delayedCloseTime ==0) + { #ifdef USING_N938 - GpioControl::TurnOff(CMD_SET_PIC1_POWER, delayedCloseTime); - GpioControl::TurnOff(CMD_SET_485_EN4, delayedCloseTime); + GpioControl::TurnOffImmediately(CMD_SET_PIC1_POWER); + GpioControl::TurnOffImmediately(CMD_SET_485_EN4); +#endif + +#ifndef USING_N938 + // GpioControl::TurnOff(CMD_SET_3V3_PWR_ENABLE); +#ifndef USING_PLZ +#else + GpioControl::TurnOffImmediately(CMD_SET_PTZ_PWR_ENABLE); +#endif +#endif + }else + { +#ifdef USING_N938 + GpioControl::TurnOff(CMD_SET_PIC1_POWER, delayedCloseTime); + GpioControl::TurnOff(CMD_SET_485_EN4, delayedCloseTime); // GpioControl::TurnOff(CMD_SET_CAM_3V3_EN_STATE); #endif #ifndef USING_N938 - // GpioControl::TurnOff(CMD_SET_3V3_PWR_ENABLE); - #ifndef USING_PLZ - #else - GpioControl::TurnOff(CMD_SET_PTZ_PWR_ENABLE, delayedCloseTime); - #endif + // GpioControl::TurnOff(CMD_SET_3V3_PWR_ENABLE); +#ifndef USING_PLZ +#else + GpioControl::TurnOff(CMD_SET_PTZ_PWR_ENABLE, delayedCloseTime); +#endif #endif + } } if(sensortype == WEATHER_SENSOR_OPEN ) { From 9facbf3c558c79e55e71e80dbbc11c6c92cee529 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Fri, 20 Dec 2024 16:27:30 +0800 Subject: [PATCH 53/82] Update version to 1.1.34 Based Core Version to 1.2.24 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index a8e71455..ce4dc7b7 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 = 1 -def AppBuildNumber = 33 +def AppBuildNumber = 34 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From eebf9b5a0347d4c789634a7ea315653f9288496c Mon Sep 17 00:00:00 2001 From: Matthew Date: Sat, 21 Dec 2024 23:07:21 +0800 Subject: [PATCH 54/82] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=91=E5=8F=B0?= =?UTF-8?q?=E6=91=84=E5=83=8F=E6=9C=BA=E7=9A=84=E6=8B=8D=E7=85=A7=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/GPIOControl.h | 19 +- app/src/main/cpp/PhoneDevice.cpp | 305 +++++++++++++++++-------------- app/src/main/cpp/PhoneDevice.h | 1 + 3 files changed, 191 insertions(+), 134 deletions(-) diff --git a/app/src/main/cpp/GPIOControl.h b/app/src/main/cpp/GPIOControl.h index 2918d61e..45363f28 100644 --- a/app/src/main/cpp/GPIOControl.h +++ b/app/src/main/cpp/GPIOControl.h @@ -514,7 +514,24 @@ public: PowerControl(CMD_SET_OTG_STATE, CMD_SET_NETWORK_POWER_EN, CMD_SET_PIC1_POWER, CMD_SET_485_EN_STATE, closeDelayTime) #else // USING_N938 #ifdef USING_PLZ - PowerControl(CMD_SET_PTZ_PWR_ENABLE, CMD_SET_100M_ENABLE, CMD_SET_100M_SWITCH_PWR_ENABLE, CMD_SET_12V_EN_STATE, closeDelayTime) + PowerControl(CMD_SET_OTG_STATE, CMD_SET_100M_ENABLE, CMD_SET_100M_SWITCH_PWR_ENABLE, CMD_SET_12V_EN_STATE, closeDelayTime) +#else // USING_PLZ + PowerControl(CMD_SET_OTG_STATE, CMD_SET_12V_EN_STATE, closeDelayTime) +#endif // USING_PLZ +#endif // USING_N938 + { + } +}; + +class PlzCameraPowerCtrl : public PowerControl +{ +public: + PlzCameraPowerCtrl(uint32_t closeDelayTime) : +#ifdef USING_N938 + PowerControl(CMD_SET_OTG_STATE, CMD_SET_NETWORK_POWER_EN, CMD_SET_PIC1_POWER, CMD_SET_485_EN_STATE, closeDelayTime) +#else // USING_N938 +#ifdef USING_PLZ + PowerControl(CMD_SET_OTG_STATE, CMD_SET_PTZ_PWR_ENABLE, CMD_SET_100M_ENABLE, CMD_SET_100M_SWITCH_PWR_ENABLE, CMD_SET_12V_EN_STATE, closeDelayTime) #else // USING_PLZ PowerControl(CMD_SET_OTG_STATE, CMD_SET_12V_EN_STATE, closeDelayTime) #endif // USING_PLZ diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 04485234..88a333ed 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1482,6 +1482,145 @@ IDevice::timer_uid_t CPhoneDevice::RegisterHeartbeat(unsigned int timerType, uns return uid; } +bool CPhoneDevice::TakePhotoWithNetCamera(IDevice::PHOTO_INFO& localPhotoInfo, const std::string& path, std::vector& osds, std::shared_ptr powerCtrlPtr) +{ + // AutoEnv autoEnv(pThis->m_vm); + time_t ts = time(NULL); + uint32_t waitTime = localPhotoInfo.selfTestingTime; + waitTime = (waitTime!= 0) ? (waitTime * 1024) : 10240; + std::this_thread::sleep_for(std::chrono::milliseconds(waitTime)); + + SetStaticIp(); + std::this_thread::sleep_for(std::chrono::milliseconds(256)); + + net_handle_t netHandle = GetNetHandle(); + + if (netHandle == 0) + { + // Wait about 10s + for (int idx = 0; idx < 84; idx++) + { + std::this_thread::sleep_for(std::chrono::milliseconds(128)); + netHandle = GetNetHandle(); + + if (netHandle != 0) + { + break; + } + } + } + + if (netHandle == 0) + { + // timeout + XYLOG(XYLOG_SEVERITY_ERROR, "Ethernet not existing CH=%u PR=%X PHOTOID=%u", (uint32_t)localPhotoInfo.channel, (uint32_t)localPhotoInfo.preset, localPhotoInfo.photoId); + TakePhotoCb(0, localPhotoInfo, "", 0); + return false; + } + else + { + XYLOG(XYLOG_SEVERITY_INFO, "Ethernet is Available CH=%u PR=%X PHOTOID=%u", (uint32_t)localPhotoInfo.channel, (uint32_t)localPhotoInfo.preset, localPhotoInfo.photoId); + } + NET_PHOTO_INFO netPhotoInfo = { netHandle, 0 }; + if (localPhotoInfo.vendor == 1) + { + // Hai Kang + netPhotoInfo.authType = HTTP_AUTH_TYPE_DIGEST; + snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/ISAPI/Streaming/channels/%u/picture", (uint32_t)localPhotoInfo.channel); + } + else if (localPhotoInfo.vendor == 2) + { + // Hang Yu + strcpy(netPhotoInfo.url, "/cgi-bin/snapshot.cgi"); + } + else if (localPhotoInfo.vendor == 3) + { + // Yu Shi + netPhotoInfo.authType = HTTP_AUTH_TYPE_DIGEST; + int streamSid = 0; // should put into config + snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/LAPI/V1.0/Channels/%u/Media/Video/Streams/%d/Snapshot", (uint32_t)localPhotoInfo.channel, streamSid); + } + else if (localPhotoInfo.vendor == 5) + { + // Hang Yu - New + netPhotoInfo.authType = HTTP_AUTH_TYPE_BASIC; + // http://192.168.1.46/Snapshot/%u/RemoteImageCapture?ImageFormat=2&HorizontalPixel=1920&VerticalPixel=1080 + // http://192.168.1.101/Snapshot/1/2/RemoteImageCaptureV2?ImageFormat=jpg + // http://192.168.1.101/Snapshot/1/1/RemoteImageCaptureV2?ImageFormat=jpg + snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/Snapshot/%u/1/RemoteImageCaptureV2?ImageFormat=jpg", (uint32_t)localPhotoInfo.channel); + } + else + { + XYLOG(XYLOG_SEVERITY_ERROR, "Vendor(%u) not Supported CH=%u PR=%X PHOTOID=%u", (uint32_t)localPhotoInfo.vendor, (uint32_t)localPhotoInfo.channel, (unsigned int)localPhotoInfo.preset, localPhotoInfo.photoId); + TakePhotoCb(0, localPhotoInfo, "", 0); + return false; + } + + struct in_addr addr; + addr.s_addr = localPhotoInfo.ip; + strcpy(netPhotoInfo.ip, inet_ntoa(addr)); + strcpy(netPhotoInfo.outputPath, path.c_str()); + if (!localPhotoInfo.userName.empty()) + { + size_t len = std::min(sizeof(netPhotoInfo.userName) - 1, localPhotoInfo.userName.size()); + strncpy(netPhotoInfo.userName, localPhotoInfo.userName.c_str(), len); + } + if (!localPhotoInfo.password.empty()) + { + size_t len = std::min(sizeof(netPhotoInfo.password) - 1, localPhotoInfo.password.size()); + strncpy(netPhotoInfo.password, localPhotoInfo.password.c_str(), len); + } + // strcpy(netPhotoInfo.interface, "eth0"); + + std::vector img; + + bool netCaptureResult = false; + for (int idx = 0; idx < 3; idx++) + { + netHandle = GetNetHandle(); + netPhotoInfo.netHandle = netHandle; + + XYLOG(XYLOG_SEVERITY_INFO, "NetCapture %d NetHandle=%lld PHOTOID=%u", idx, netHandle, localPhotoInfo.photoId); + + netCaptureResult = requestCapture(localPhotoInfo.channel, localPhotoInfo.preset, netPhotoInfo, img); + if (netCaptureResult) + { + break; + } + } + + if (netCaptureResult) + { + time_t takingTime = ts; + if (localPhotoInfo.remedy != 0) + { + if ((takingTime - localPhotoInfo.scheduleTime) > 30) + { + takingTime = localPhotoInfo.scheduleTime + localPhotoInfo.channel * 2; + } + } + + localPhotoInfo.photoTime = takingTime; + + // Notify to take next photo + TakePhotoCb(1, localPhotoInfo, "", takingTime); + + cv::Mat rgb = cv::imdecode(cv::Mat(img), cv::IMREAD_COLOR); +#ifdef _DEBUG + // cv::imwrite("/sdcard/com.xypower.mpapp/tmp/netimg2.jpg", rgb); +#endif + netCaptureResult = PostProcessPhoto(localPhotoInfo, osds, path, "", rgb); + } + else + { + XYLOG(XYLOG_SEVERITY_ERROR, "Faile to TP on NET Camera CH=%u PR=%X PHOTOID=%u URL=http://%s%s", (uint32_t)localPhotoInfo.channel, (uint32_t)localPhotoInfo.preset, + localPhotoInfo.photoId, netPhotoInfo.ip, netPhotoInfo.url); + TakePhotoCb(0, localPhotoInfo, "", 0); + } + + return true; +} + bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector& osds, const std::string& path) { if (photoInfo.width == 0 || photoInfo.height == 0) @@ -1544,6 +1683,10 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< { powerCtrlPtr = std::shared_ptr(new NetCameraPowerCtrl(mPhotoInfo.closeDelayTime)); } + else if (photoInfo.cameraType == CAM_TYPE_PLZ) + { + powerCtrlPtr = std::shared_ptr(new PlzCameraPowerCtrl(mPhotoInfo.closeDelayTime)); + } res = true; if ((mPhotoInfo.mediaType == 0) && ((mPhotoInfo.cameraType == CAM_TYPE_MIPI) || (mPhotoInfo.cameraType == CAM_TYPE_USB))) @@ -1638,139 +1781,7 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< std::thread t([localPhotoInfo, path, pThis, osds, powerCtrlPtr]() mutable { - // AutoEnv autoEnv(pThis->m_vm); - time_t ts = time(NULL); - uint32_t waitTime = localPhotoInfo.selfTestingTime; - waitTime = (waitTime!= 0) ? (waitTime * 1024) : 10240; - std::this_thread::sleep_for(std::chrono::milliseconds(waitTime)); - - pThis->SetStaticIp(); - std::this_thread::sleep_for(std::chrono::milliseconds(256)); - - net_handle_t netHandle = pThis->GetNetHandle(); - - if (netHandle == 0) - { - // Wait about 10s - for (int idx = 0; idx < 84; idx++) - { - std::this_thread::sleep_for(std::chrono::milliseconds(128)); - netHandle = pThis->GetNetHandle(); - - if (netHandle != 0) - { - break; - } - } - } - - if (netHandle == 0) - { - // timeout - XYLOG(XYLOG_SEVERITY_ERROR, "Ethernet not existing CH=%u PR=%X PHOTOID=%u", (uint32_t)localPhotoInfo.channel, (uint32_t)localPhotoInfo.preset, localPhotoInfo.photoId); - pThis->TakePhotoCb(0, localPhotoInfo, "", 0); - return; - } - else - { - XYLOG(XYLOG_SEVERITY_INFO, "Ethernet is Available CH=%u PR=%X PHOTOID=%u", (uint32_t)localPhotoInfo.channel, (uint32_t)localPhotoInfo.preset, localPhotoInfo.photoId); - } - NET_PHOTO_INFO netPhotoInfo = { netHandle, 0 }; - if (localPhotoInfo.vendor == 1) - { - // Hai Kang - netPhotoInfo.authType = HTTP_AUTH_TYPE_DIGEST; - snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/ISAPI/Streaming/channels/%u/picture", (uint32_t)localPhotoInfo.channel); - } - else if (localPhotoInfo.vendor == 2) - { - // Hang Yu - strcpy(netPhotoInfo.url, "/cgi-bin/snapshot.cgi"); - } - else if (localPhotoInfo.vendor == 3) - { - // Yu Shi - netPhotoInfo.authType = HTTP_AUTH_TYPE_DIGEST; - int streamSid = 0; // should put into config - snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/LAPI/V1.0/Channels/%u/Media/Video/Streams/%d/Snapshot", (uint32_t)localPhotoInfo.channel, streamSid); - } - else if (localPhotoInfo.vendor == 5) - { - // Hang Yu - New - netPhotoInfo.authType = HTTP_AUTH_TYPE_BASIC; - // http://192.168.1.46/Snapshot/%u/RemoteImageCapture?ImageFormat=2&HorizontalPixel=1920&VerticalPixel=1080 - // http://192.168.1.101/Snapshot/1/2/RemoteImageCaptureV2?ImageFormat=jpg - // http://192.168.1.101/Snapshot/1/1/RemoteImageCaptureV2?ImageFormat=jpg - snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/Snapshot/%u/1/RemoteImageCaptureV2?ImageFormat=jpg", (uint32_t)localPhotoInfo.channel); - } - else - { - XYLOG(XYLOG_SEVERITY_ERROR, "Vendor(%u) not Supported CH=%u PR=%X PHOTOID=%u", (uint32_t)localPhotoInfo.vendor, (uint32_t)localPhotoInfo.channel, (unsigned int)localPhotoInfo.preset, localPhotoInfo.photoId); - pThis->TakePhotoCb(0, localPhotoInfo, "", 0); - return; - } - - struct in_addr addr; - addr.s_addr = localPhotoInfo.ip; - strcpy(netPhotoInfo.ip, inet_ntoa(addr)); - strcpy(netPhotoInfo.outputPath, path.c_str()); - if (!localPhotoInfo.userName.empty()) - { - size_t len = std::min(sizeof(netPhotoInfo.userName) - 1, localPhotoInfo.userName.size()); - strncpy(netPhotoInfo.userName, localPhotoInfo.userName.c_str(), len); - } - if (!localPhotoInfo.password.empty()) - { - size_t len = std::min(sizeof(netPhotoInfo.password) - 1, localPhotoInfo.password.size()); - strncpy(netPhotoInfo.password, localPhotoInfo.password.c_str(), len); - } - // strcpy(netPhotoInfo.interface, "eth0"); - - std::vector img; - - bool netCaptureResult = false; - for (int idx = 0; idx < 3; idx++) - { - netHandle = pThis->GetNetHandle(); - netPhotoInfo.netHandle = netHandle; - - XYLOG(XYLOG_SEVERITY_INFO, "NetCapture %d NetHandle=%lld PHOTOID=%u", idx, netHandle, localPhotoInfo.photoId); - - netCaptureResult = requestCapture(localPhotoInfo.channel, localPhotoInfo.preset, netPhotoInfo, img); - if (netCaptureResult) - { - break; - } - } - - if (netCaptureResult) - { - time_t takingTime = ts; - if (localPhotoInfo.remedy != 0) - { - if ((takingTime - localPhotoInfo.scheduleTime) > 30) - { - takingTime = localPhotoInfo.scheduleTime + localPhotoInfo.channel * 2; - } - } - - localPhotoInfo.photoTime = takingTime; - - // Notify to take next photo - pThis->TakePhotoCb(1, localPhotoInfo, "", takingTime); - - cv::Mat rgb = cv::imdecode(cv::Mat(img), cv::IMREAD_COLOR); -#ifdef _DEBUG - // cv::imwrite("/sdcard/com.xypower.mpapp/tmp/netimg2.jpg", rgb); -#endif - netCaptureResult = pThis->PostProcessPhoto(localPhotoInfo, osds, path, "", rgb); - } - else - { - XYLOG(XYLOG_SEVERITY_ERROR, "Faile to TP on NET Camera CH=%u PR=%X PHOTOID=%u URL=http://%s%s", (uint32_t)localPhotoInfo.channel, (uint32_t)localPhotoInfo.preset, - localPhotoInfo.photoId, netPhotoInfo.ip, netPhotoInfo.url); - pThis->TakePhotoCb(0, localPhotoInfo, "", 0); - } + pThis->TakePhotoWithNetCamera(localPhotoInfo, path, osds, powerCtrlPtr); }); t.detach(); @@ -1837,6 +1848,34 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< t.detach(); } + else if (mPhotoInfo.mediaType == 0 && (mPhotoInfo.cameraType == CAM_TYPE_PLZ)) + { + uint64_t wid_serial = RequestWakelock(0); + CPhoneDevice* pThis = this; + IDevice::PHOTO_INFO localPhotoInfo = mPhotoInfo; + IDevice::SerialsPhotoParam param = { "", 0, 0 }; + GetPhotoSerialsParamCb(param); + vector osds; + osds.swap(mOsds); + + std::thread t([localPhotoInfo, param, pThis, path, osds, wid_serial, powerCtrlPtr]() mutable + { + time_t ts = time(NULL); + pThis->OpenPTZSensors(localPhotoInfo.selfTestingTime); + + if (localPhotoInfo.preset != 0 && localPhotoInfo.preset != 0xFF) + { + XYLOG(XYLOG_SEVERITY_INFO,"Recv CameraCtrl Command, action= MOVE_PRESETNO, preset = %u", localPhotoInfo.preset); + CameraPhotoCmd(time(NULL), localPhotoInfo.channel, MOVE_PRESETNO, 0, localPhotoInfo.preset, param.serfile, param.baud, param.addr); + std::this_thread::sleep_for(std::chrono::seconds(5)); + } + + pThis->TakePhotoWithNetCamera(localPhotoInfo, path, osds, powerCtrlPtr); + pThis->ReleaseWakelock(wid_serial); + }); + + t.detach(); + } else if (mPhotoInfo.usingSysCamera == 1) { JNIEnv* env = NULL; diff --git a/app/src/main/cpp/PhoneDevice.h b/app/src/main/cpp/PhoneDevice.h index 7af28b0d..5c879db7 100644 --- a/app/src/main/cpp/PhoneDevice.h +++ b/app/src/main/cpp/PhoneDevice.h @@ -272,6 +272,7 @@ protected: bool SendBroadcastMessage(std::string action, int value); // bool MatchCaptureSizeRequest(ACameraManager *cameraManager, const char *selectedCameraId, unsigned int width, unsigned int height, uint32_t cameraOrientation_, + bool TakePhotoWithNetCamera(IDevice::PHOTO_INFO& localPhotoInfo, const std::string& path, std::vector& osds, std::shared_ptr powerCtrlPtr); bool PostProcessPhoto(const PHOTO_INFO& photoInfo, const vector& osds, const std::string& path, const std::string& cameraInfo, cv::Mat& mat); inline bool TakePhotoCb(int res, const IDevice::PHOTO_INFO& photoInfo, const string& path, time_t photoTime, const std::vector& objects) const { From 56ceb40f6d18b0193ea0baccf9275794a0e17e4a Mon Sep 17 00:00:00 2001 From: Matthew Date: Sun, 22 Dec 2024 08:48:08 +0800 Subject: [PATCH 55/82] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.h b/app/src/main/cpp/PhoneDevice.h index 5c879db7..e4893d3d 100644 --- a/app/src/main/cpp/PhoneDevice.h +++ b/app/src/main/cpp/PhoneDevice.h @@ -387,9 +387,9 @@ protected: unsigned int mVersionCode; time_t mBuildTime; - atomic_ulong m_timerUidFeed; - atomic_ulong m_wakelockIdFeed; - atomic_ulong m_uniqueIdFeed; + atomic_ullong m_timerUidFeed; + atomic_ullong m_wakelockIdFeed; + atomic_ullong m_uniqueIdFeed; std::map mTimers; mutable CPhoneCamera* mCamera; From 23f2ab7527a8864d9097d89ba6438cdca1f6dad2 Mon Sep 17 00:00:00 2001 From: Matthew Date: Sun, 22 Dec 2024 20:46:07 +0800 Subject: [PATCH 56/82] =?UTF-8?q?=E6=9A=82=E6=97=B6=E7=A6=81=E7=94=A8?= =?UTF-8?q?=E8=BF=90=E7=BB=B4=E4=BF=9D=E6=B4=BB=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xypower/mpmaster/MpMasterService.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java index e2517422..9d5393cd 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java @@ -390,6 +390,9 @@ public class MpMasterService extends Service { public boolean shouldSyncTime() { return mSyncTime; } public void startMpApp() { + if (true) { + return; + } try { final Context context = getApplicationContext(); long ts = System.currentTimeMillis(); From 61402ee8cbc250bdb16536a73a02cd4037ea310a Mon Sep 17 00:00:00 2001 From: Matthew Date: Sun, 22 Dec 2024 20:46:41 +0800 Subject: [PATCH 57/82] Update MpMaster version to 1.0.90 --- mpmaster/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mpmaster/build.gradle b/mpmaster/build.gradle index dea51ff9..68de669a 100644 --- a/mpmaster/build.gradle +++ b/mpmaster/build.gradle @@ -4,7 +4,7 @@ plugins { def AppMajorVersion = 1 def AppMinorVersion = 0 -def AppBuildNumber = 89 +def AppBuildNumber = 90 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From 470d2be42a893a2ee44867717f26c87d00a483cf Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Mon, 23 Dec 2024 14:04:35 +0800 Subject: [PATCH 58/82] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=91=84=E5=83=8F?= =?UTF-8?q?=E6=9C=BA=E6=89=8B=E5=8A=A8=E7=94=B5=E6=BA=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/GPIOControl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/cpp/GPIOControl.cpp b/app/src/main/cpp/GPIOControl.cpp index bef5b2ab..83492d05 100644 --- a/app/src/main/cpp/GPIOControl.cpp +++ b/app/src/main/cpp/GPIOControl.cpp @@ -200,7 +200,7 @@ size_t GpioControl::TurnOn(const std::vector& cmds) size_t GpioControl::TurnOffImmediately(int cmd) { - time_t ts = time(NULL) + 2; + time_t ts = time(NULL); size_t ref = 0; std::vector::iterator it; m_locker.lock(); From 23877165ab79c946ca05c44a4e3a04a165671c68 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Mon, 23 Dec 2024 14:05:05 +0800 Subject: [PATCH 59/82] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=B2=E5=8F=A3?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=B3=BB=E6=95=B0=E5=92=8C=E5=81=8F=E7=A7=BB?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/SensorsProtocol.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/cpp/SensorsProtocol.h b/app/src/main/cpp/SensorsProtocol.h index a7f45c93..5d265089 100644 --- a/app/src/main/cpp/SensorsProtocol.h +++ b/app/src/main/cpp/SensorsProtocol.h @@ -193,6 +193,8 @@ typedef struct SENSOR_PARAM uint8_t IsNoInsta; /* 装置没有安装或者已经坏了(1:正常, 0:无效,坏了或没有安装)*/ uint8_t CameraChannel; /* 像机的通道号*/ uint8_t Phase; /* 传感器所安装相别,指拉力和倾角11表示A1....*/ + float multiple; /*系数*/ + float offset; /*偏移值*/ } SENSOR_PARAM; // 需要配置的串口装置参数 From 907836d3d6cb7f8f85287b18213a5a4976b37fc4 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Mon, 23 Dec 2024 15:13:18 +0800 Subject: [PATCH 60/82] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=B5=E6=BA=90?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=85=B3=E9=97=AD=E8=AE=A1=E6=95=B0=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/GPIOControl.cpp | 14 ++++++++++---- app/src/main/cpp/PhoneDevice.cpp | 3 +-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/src/main/cpp/GPIOControl.cpp b/app/src/main/cpp/GPIOControl.cpp index 83492d05..0316084a 100644 --- a/app/src/main/cpp/GPIOControl.cpp +++ b/app/src/main/cpp/GPIOControl.cpp @@ -209,7 +209,8 @@ size_t GpioControl::TurnOffImmediately(int cmd) if (it->cmd == cmd) { ref = it->references; - it->closeCmds++; + if(it->closeCmds < it->references) + it->closeCmds++; it->closeTime = ts; break; } @@ -237,7 +238,8 @@ size_t GpioControl::TurnOff(int cmd, uint32_t delayedCloseTime/* = 0*/) if (it->cmd == cmd) { ref = it->references; - it->closeCmds++; + if(it->closeCmds < it->references) + it->closeCmds++; if (ts > it->closeTime) { it->closeTime = ts; @@ -270,7 +272,8 @@ size_t GpioControl::TurnOff(const std::vector& cmds, uint32_t delayedCloseT { if (it->cmd == *itCmd) { - it->closeCmds++; + if(it->closeCmds < it->references) + it->closeCmds++; if (ts > it->closeTime) { it->closeTime = ts; @@ -298,7 +301,8 @@ size_t GpioControl::TurnOff(const std::vector >& cmds) { if (it->cmd == itCmd->first) { - it->closeCmds++; + if(it->closeCmds < it->references) + it->closeCmds++; if (itCmd->second != 0) { ts2 = itCmd->second + ts; @@ -354,6 +358,8 @@ void GpioControl::PowerControlThreadProc() else { it->references -= it->closeCmds; + if(it->references < 0) + it->references = 0; } it->closeCmds = 0; } diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 88a333ed..21b0ae43 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -2013,8 +2013,6 @@ bool CPhoneDevice::OpenPTZSensors(uint32_t sec) ReleaseWakelock(wid); return m_cameraStatus; - - } bool CPhoneDevice::ClosePTZSensors(uint32_t delayedCloseTime) @@ -2023,6 +2021,7 @@ bool CPhoneDevice::ClosePTZSensors(uint32_t delayedCloseTime) if(m_sensorsStatus && !m_cameraStatus) { + localDelayTime = GetMicroTimeStamp(); m_shouldStopWaiting.store(true); } else From 92781524d7b7c9c640ea8b8020d0b0d62d67fed1 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Mon, 23 Dec 2024 15:14:33 +0800 Subject: [PATCH 61/82] Update version to 1.1.35 Based Core Version to 1.2.25 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index ce4dc7b7..2d822b10 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 = 1 -def AppBuildNumber = 34 +def AppBuildNumber = 35 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From e0d926efb129e659be81e4190aab1d7b59169a24 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Mon, 23 Dec 2024 16:14:29 +0800 Subject: [PATCH 62/82] =?UTF-8?q?=E6=9C=AA=E5=BC=80=E5=90=AF=E7=94=B5?= =?UTF-8?q?=E6=BA=90=E6=97=B6=EF=BC=8C=E6=8E=A7=E5=88=B6=E4=BA=91=E5=8F=B0?= =?UTF-8?q?=E4=B8=8D=E4=BC=9A=E6=89=93=E5=BC=80=E7=94=B5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/GPIOControl.cpp | 33 ++++++++++++++++++++++++-------- app/src/main/cpp/GPIOControl.h | 3 +++ app/src/main/cpp/PhoneDevice.cpp | 2 +- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/app/src/main/cpp/GPIOControl.cpp b/app/src/main/cpp/GPIOControl.cpp index 0316084a..5e9f1893 100644 --- a/app/src/main/cpp/GPIOControl.cpp +++ b/app/src/main/cpp/GPIOControl.cpp @@ -27,6 +27,7 @@ CSemaphore GpioControl::m_semaphore; std::vector GpioControl::m_items; std::thread GpioControl::m_thread; bool GpioControl::m_exitSignal = false; +bool GpioControl::m_cameraPowerStatus = false; size_t GpioControl::turnOnImpl(const IOT_PARAM& param) { @@ -48,6 +49,7 @@ size_t GpioControl::turnOnImpl(const IOT_PARAM& param) it->references++; it->closeTime = 0; references = it->references; + SetCamerastatus(it->cmd, true); break; } } @@ -209,8 +211,7 @@ size_t GpioControl::TurnOffImmediately(int cmd) if (it->cmd == cmd) { ref = it->references; - if(it->closeCmds < it->references) - it->closeCmds++; + it->closeCmds++; it->closeTime = ts; break; } @@ -238,8 +239,7 @@ size_t GpioControl::TurnOff(int cmd, uint32_t delayedCloseTime/* = 0*/) if (it->cmd == cmd) { ref = it->references; - if(it->closeCmds < it->references) - it->closeCmds++; + it->closeCmds++; if (ts > it->closeTime) { it->closeTime = ts; @@ -272,8 +272,7 @@ size_t GpioControl::TurnOff(const std::vector& cmds, uint32_t delayedCloseT { if (it->cmd == *itCmd) { - if(it->closeCmds < it->references) - it->closeCmds++; + it->closeCmds++; if (ts > it->closeTime) { it->closeTime = ts; @@ -301,8 +300,8 @@ size_t GpioControl::TurnOff(const std::vector >& cmds) { if (it->cmd == itCmd->first) { - if(it->closeCmds < it->references) - it->closeCmds++; + + it->closeCmds++; if (itCmd->second != 0) { ts2 = itCmd->second + ts; @@ -320,6 +319,22 @@ size_t GpioControl::TurnOff(const std::vector >& cmds) return 0; } +bool GpioControl::SetCamerastatus(int cmd, bool status) +{ +#ifdef USING_N938 + if(cmd == CMD_SET_PIC1_POWER) + m_cameraPowerStatus = status; +#endif +#ifdef USING_PLZ + if(cmd == CMD_SET_PTZ_PWR_ENABLE) + m_cameraPowerStatus = status; +#endif + return true; +} +bool GpioControl::GetCamerastatus() +{ + return m_cameraPowerStatus; +} void GpioControl::PowerControlThreadProc() { @@ -330,6 +345,7 @@ void GpioControl::PowerControlThreadProc() time_t delayTime = 0; int fd = -1; int res = -1; + m_cameraPowerStatus = 0; while(1) { @@ -375,6 +391,7 @@ void GpioControl::PowerControlThreadProc() #ifdef _DEBUG ALOGI("PWR TH DO TurnOff cmd=%d", it->cmd); #endif + SetCamerastatus(it->cmd, false); } else { diff --git a/app/src/main/cpp/GPIOControl.h b/app/src/main/cpp/GPIOControl.h index 45363f28..49c9d5e9 100644 --- a/app/src/main/cpp/GPIOControl.h +++ b/app/src/main/cpp/GPIOControl.h @@ -164,6 +164,7 @@ private: static std::vector m_items; static bool m_exitSignal; static std::thread m_thread; + static bool m_cameraPowerStatus; protected: static size_t turnOnImpl(const IOT_PARAM& param); @@ -178,6 +179,8 @@ public: static size_t TurnOff(const std::vector& cmds, uint32_t delayedCloseTime = 0); static size_t TurnOff(const std::vector >& cmds); static size_t TurnOffImmediately(int cmd); + static bool SetCamerastatus(int cmd, bool status); + static bool GetCamerastatus(); static void PowerControlThreadProc(); diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 21b0ae43..b21cdc18 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -3727,7 +3727,7 @@ void CPhoneDevice::ConvertDngToPng(const std::string& dngPath, const std::string void CPhoneDevice::CameraCtrl(unsigned short waitTime, unsigned short delayTime, unsigned char channel, int cmdidx, unsigned char preset, const char *serfile, unsigned int baud, int addr) { - if(!(m_sensorsStatus && !m_cameraStatus)) { + if(!(m_sensorsStatus && !m_cameraStatus) && GpioControl::GetCamerastatus()) { CPhoneDevice *pThis = this; string serfileStr(serfile); std::thread ctrlThread([pThis, waitTime, delayTime, cmdidx, channel, preset, serfileStr, baud, From f0ed4adea3d2a61aa53e26933c4675c4ebc2a75e Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Mon, 23 Dec 2024 16:15:21 +0800 Subject: [PATCH 63/82] Update version to 1.1.36 Based Core Version to 1.2.25 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 2d822b10..6fdc8861 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 = 1 -def AppBuildNumber = 35 +def AppBuildNumber = 36 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From bf9ee3aea8c664c7ddd1ff69610f981ade2a16c4 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Mon, 23 Dec 2024 17:33:58 +0800 Subject: [PATCH 64/82] =?UTF-8?q?=E5=BF=83=E8=B7=B3=E5=91=A8=E6=9C=9F?= =?UTF-8?q?=E5=B0=8F=E4=BA=8E10min=E6=97=B6=EF=BC=8C10=E5=88=86=E9=92=9F?= =?UTF-8?q?=E6=94=B6=E4=B8=8D=E5=88=B0=E5=BF=83=E8=B7=B3=E6=89=8D=E4=BC=9A?= =?UTF-8?q?=E9=87=8D=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xypower/mpmaster/MpMasterService.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java index 9d5393cd..0b9219f2 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java @@ -420,7 +420,10 @@ public class MpMasterService extends Service { ex.printStackTrace(); } - if (mPreviousMpHbTime <= ts && ts - mPreviousMpHbTime > mMpHeartbeatDuration * 2) { + long tempduration = mMpHeartbeatDuration; + if(mMpHeartbeatDuration < 600000) + tempduration = 300000; + if (mPreviousMpHbTime <= ts && ts - mPreviousMpHbTime > tempduration * 2) { // MpApp is not running if (ts - mTimeToStartMpApp >= 1800000) { MicroPhotoContext.restartMpApp(context, "MpMST Keep Alive Detection"); From c410e1e6a951edc36db2ea5f76f17c0e74efef34 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Mon, 23 Dec 2024 17:49:12 +0800 Subject: [PATCH 65/82] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E6=8B=8D=E7=85=A7?= =?UTF-8?q?=E4=B8=8D=E4=BC=9A=E5=BB=B6=E6=97=B6=E5=85=B3=E9=97=AD=E6=91=84?= =?UTF-8?q?=E5=83=8F=E6=9C=BA=E7=94=B5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index b21cdc18..6cc564ce 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1811,7 +1811,10 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< CameraPhotoCmd(ts, localPhotoInfo.channel, 0, localPhotoInfo.resolution, localPhotoInfo.preset, param.serfile, param.baud, param.addr); XYLOG(XYLOG_SEVERITY_INFO, "Taking photo over"); - pThis->ClosePTZSensors(localPhotoInfo.closeDelayTime); + if(localPhotoInfo.scheduleTime == 0) + pThis->ClosePTZSensors(localPhotoInfo.closeDelayTime); + else + pThis->ClosePTZSensors(2); GpioControl::setCam3V3Enable(false, localPhotoInfo.closeDelayTime); time_t takingTime = ts; From ce4f7358b4554fe58ab19c32d41b55e8b7e22a39 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Mon, 23 Dec 2024 17:50:19 +0800 Subject: [PATCH 66/82] Update version to 1.1.37 Based Core Version to 1.2.25 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 6fdc8861..a821adad 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 = 1 -def AppBuildNumber = 36 +def AppBuildNumber = 37 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From 816881fd899e13c2b5d70250b00ad6f00f45653e Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Mon, 23 Dec 2024 17:54:47 +0800 Subject: [PATCH 67/82] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E6=8B=8D=E7=85=A7=E4=B8=8D=E5=BB=B6=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 6cc564ce..4cde521e 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1811,11 +1811,15 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< CameraPhotoCmd(ts, localPhotoInfo.channel, 0, localPhotoInfo.resolution, localPhotoInfo.preset, param.serfile, param.baud, param.addr); XYLOG(XYLOG_SEVERITY_INFO, "Taking photo over"); - if(localPhotoInfo.scheduleTime == 0) + if(localPhotoInfo.scheduleTime == 0) { pThis->ClosePTZSensors(localPhotoInfo.closeDelayTime); - else + GpioControl::setCam3V3Enable(false, localPhotoInfo.closeDelayTime); + } + else { pThis->ClosePTZSensors(2); - GpioControl::setCam3V3Enable(false, localPhotoInfo.closeDelayTime); + GpioControl::setCam3V3Enable(false, 2); + } + time_t takingTime = ts; if (localPhotoInfo.remedy != 0) From a24345e01fa007d09e7028b8ba35625c217de723 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Tue, 24 Dec 2024 16:43:48 +0800 Subject: [PATCH 68/82] =?UTF-8?q?=E7=A6=81=E7=94=A8=E4=BC=A0=E6=84=9F?= =?UTF-8?q?=E5=99=A8=E5=90=8E=E4=B8=8D=E5=AF=BC=E8=87=B4=E9=87=8D=E9=87=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 644 +++++++++++++++++++------------ app/src/main/cpp/PhoneDevice.h | 2 +- 2 files changed, 399 insertions(+), 247 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 4cde521e..fac3f61a 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -3792,69 +3792,99 @@ int CPhoneDevice::GetIceData(IDevice::ICE_INFO *iceInfo, IDevice::ICE_TAIL *iceT int angleno = 0; for(int num = 0; num < MAX_SERIAL_DEV_NUM; num++) { - if(sensorParam[num].SensorsType == RALLY_PROTOCOL && sensorParam[num].IsNoInsta == 1) + if(sensorParam[num].SensorsType == RALLY_PROTOCOL) { - GetPullValue(num, &airt); - if(airt.AiState == 255 || airt.AiState == -1) + if(sensorParam[num].IsNoInsta == 0) { iceInfo->t_sensor_data[pullno].original_tension = 0xff; - XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,拉力未接传感器", - sensorParam[num].devaddr, airt.AiState); + XYLOG(XYLOG_SEVERITY_INFO, "地址%d,拉力传感器未启用", + sensorParam[num].devaddr); }else { - iceInfo->t_sensor_data[pullno].original_tension = airt.EuValue; - XYLOG(XYLOG_SEVERITY_INFO,"地址%d,采样状态 = %d,拉力 = %f", sensorParam[num].devaddr, airt.AiState, iceInfo->t_sensor_data[pullno].original_tension); - if(airt.AiState != 2 && iceInfo->t_sensor_data[pullno].original_tension == 0) + GetPullValue(num, &airt); + if(airt.AiState == 255 || airt.AiState == -1) { - XYLOG(XYLOG_SEVERITY_INFO,"地址%d,采样状态 = %d,拉力未采集到数据,重新采样", sensorParam[num].devaddr, airt.AiState); - status = 0; + iceInfo->t_sensor_data[pullno].original_tension = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,拉力未接传感器", + sensorParam[num].devaddr, airt.AiState); }else { - if(iceInfo->tension == 0xff) - iceInfo->tension =0; - iceInfo->tension = iceInfo->tension + iceInfo->t_sensor_data[pullno].original_tension; + iceInfo->t_sensor_data[pullno].original_tension = airt.EuValue; + XYLOG(XYLOG_SEVERITY_INFO,"地址%d,采样状态 = %d,拉力 = %f", sensorParam[num].devaddr, airt.AiState, iceInfo->t_sensor_data[pullno].original_tension); + if(airt.AiState != 2 && iceInfo->t_sensor_data[pullno].original_tension == 0) + { + XYLOG(XYLOG_SEVERITY_INFO,"地址%d,采样状态 = %d,拉力未采集到数据,重新采样", sensorParam[num].devaddr, airt.AiState); + status = 0; + }else + { + if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0) + iceInfo->t_sensor_data[pullno].original_tension = iceInfo->t_sensor_data[pullno].original_tension * sensorParam[num].multiple; + if(sensorParam[num].offset != 0) + iceInfo->t_sensor_data[pullno].original_tension = iceInfo->t_sensor_data[pullno].original_tension + sensorParam[num].offset; + if(iceInfo->tension == 0xff) + iceInfo->tension =0; + iceInfo->tension = iceInfo->tension + iceInfo->t_sensor_data[pullno].original_tension; + } } } pullno++; - } else if(sensorParam[num].SensorsType == SLANT_PROTOCOL && sensorParam[num].IsNoInsta == 1) + } else if(sensorParam[num].SensorsType == SLANT_PROTOCOL) { - GetAngleValue(num, &airt, 0); - if(airt.AiState == 255 || airt.AiState == -1) + if(sensorParam[num].IsNoInsta == 0) { iceInfo->t_sensor_data[angleno].deflection_angle = 0xff; - XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,倾角x未接传感器", - sensorParam[num].devaddr, airt.AiState); + iceInfo->t_sensor_data[angleno].windage_yaw_angle = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "地址%d,倾角传感器未启用", + sensorParam[num].devaddr); }else { - iceInfo->t_sensor_data[angleno].deflection_angle = airt.EuValue; - XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,x = %f", sensorParam[num].devaddr, - airt.AiState, iceInfo->t_sensor_data[angleno].deflection_angle); - if (airt.AiState != 2 && iceInfo->t_sensor_data[angleno].deflection_angle == 0) - { - XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,倾角x未采集到数据,重新采样", + GetAngleValue(num, &airt, 0); + if (airt.AiState == 255 || airt.AiState == -1) { + iceInfo->t_sensor_data[angleno].deflection_angle = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,倾角x未接传感器", sensorParam[num].devaddr, airt.AiState); - status = 0; + } else { + iceInfo->t_sensor_data[angleno].deflection_angle = airt.EuValue; + XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,x = %f", + sensorParam[num].devaddr, + airt.AiState, iceInfo->t_sensor_data[angleno].deflection_angle); + if (airt.AiState != 2 && iceInfo->t_sensor_data[angleno].deflection_angle == 0) + { + XYLOG(XYLOG_SEVERITY_INFO, + "地址%d,采样状态 = %d,倾角x未采集到数据,重新采样", + sensorParam[num].devaddr, airt.AiState); + status = 0; + } else{ + if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0) + iceInfo->t_sensor_data[angleno].deflection_angle = iceInfo->t_sensor_data[angleno].deflection_angle * sensorParam[num].multiple; + if(sensorParam[num].offset != 0) + iceInfo->t_sensor_data[angleno].deflection_angle = iceInfo->t_sensor_data[angleno].deflection_angle + sensorParam[num].offset; + } } - } - GetAngleValue(num, &airt, 1); - if(airt.AiState == 255 || airt.AiState == -1) - { - iceInfo->t_sensor_data[angleno].windage_yaw_angle =0xff; - XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,倾角y未接传感器", - sensorParam[num].devaddr, airt.AiState); - }else - { - iceInfo->t_sensor_data[angleno].windage_yaw_angle = airt.EuValue; - XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,y = %f", sensorParam[num].devaddr, - airt.AiState, iceInfo->t_sensor_data[angleno].windage_yaw_angle); - if (airt.AiState != 2 && iceInfo->t_sensor_data[angleno].windage_yaw_angle == 0) - { - XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,倾角y未采集到数据,重新采样", + GetAngleValue(num, &airt, 1); + if (airt.AiState == 255 || airt.AiState == -1) { + iceInfo->t_sensor_data[angleno].windage_yaw_angle = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,倾角y未接传感器", sensorParam[num].devaddr, airt.AiState); - status = 0; + } else { + iceInfo->t_sensor_data[angleno].windage_yaw_angle = airt.EuValue; + XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,y = %f", + sensorParam[num].devaddr, + airt.AiState, iceInfo->t_sensor_data[angleno].windage_yaw_angle); + if (airt.AiState != 2 && + iceInfo->t_sensor_data[angleno].windage_yaw_angle == 0) { + XYLOG(XYLOG_SEVERITY_INFO, + "地址%d,采样状态 = %d,倾角y未采集到数据,重新采样", + sensorParam[num].devaddr, airt.AiState); + status = 0; + }else{ + if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0) + iceInfo->t_sensor_data[angleno].windage_yaw_angle = iceInfo->t_sensor_data[angleno].windage_yaw_angle * sensorParam[num].multiple; + if(sensorParam[num].offset != 0) + iceInfo->t_sensor_data[angleno].windage_yaw_angle = iceInfo->t_sensor_data[angleno].windage_yaw_angle + sensorParam[num].offset; + } } } - angleno++; } } @@ -3867,98 +3897,138 @@ int CPhoneDevice::GetIceData(IDevice::ICE_INFO *iceInfo, IDevice::ICE_TAIL *iceT { std::lock_guard lock(m_dataLocker); - GetWindSpeedData(&airt); - if(airt.AiState == 255 || airt.AiState == -1) - { - iceTail->instantaneous_windspeed = 0xff; - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风速未接传感器", - airt.AiState); - }else - { - iceTail->instantaneous_windspeed = airt.EuValue; - if (airt.AiState != 2 && iceTail->instantaneous_windspeed == 0 && m_tempData.instantaneous_windspeed == 0xff) - { - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风速未采集到数据,重新采样", airt.AiState); - status = 0; - } else if (airt.AiState == 2 && m_tempData.instantaneous_windspeed == 0xff) - { - m_tempData.instantaneous_windspeed = iceTail->instantaneous_windspeed; - } else if (iceTail->instantaneous_windspeed == 0 && m_tempData.instantaneous_windspeed != 0xff) - { - iceTail->instantaneous_windspeed = m_tempData.instantaneous_windspeed; - } - } + for (int num = 0; num < MAX_SERIAL_DEV_NUM; num++) { + if (sensorParam[num].SensorsType == WIND_PROTOCOL && sensorParam[num].IsNoInsta == 0) { + iceTail->instantaneous_windspeed = 0xff; + iceTail->instantaneous_winddirection = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "地址%d,风速风向传感器未启用", + sensorParam[num].devaddr); + break; + } else if (sensorParam[num].SensorsType == WIND_PROTOCOL && + sensorParam[num].IsNoInsta == 1) { + GetWindSpeedData(&airt); + if (airt.AiState == 255 || airt.AiState == -1) { + iceTail->instantaneous_windspeed = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风速未接传感器", + airt.AiState); + } else { + iceTail->instantaneous_windspeed = airt.EuValue; + if (airt.AiState != 2 && iceTail->instantaneous_windspeed == 0 && + m_tempData.instantaneous_windspeed == 0xff) + { + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风速未采集到数据,重新采样", + airt.AiState); + status = 0; + } else + { + if (airt.AiState == 2 && m_tempData.instantaneous_windspeed == 0xff) + { + m_tempData.instantaneous_windspeed = iceTail->instantaneous_windspeed; + } else if (iceTail->instantaneous_windspeed == 0 && m_tempData.instantaneous_windspeed != 0xff) + { + iceTail->instantaneous_windspeed = m_tempData.instantaneous_windspeed; + } + if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0) + iceTail->instantaneous_windspeed = iceTail->instantaneous_windspeed * sensorParam[num].multiple; + if(sensorParam[num].offset != 0) + iceTail->instantaneous_windspeed = iceTail->instantaneous_windspeed + sensorParam[num].offset; + } + } - GetWindDirectionData(&airt); - if(airt.AiState == 255 || airt.AiState == -1) - { - iceTail->instantaneous_winddirection = 0xff; - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风向未接传感器", - airt.AiState); - }else - { - iceTail->instantaneous_winddirection = airt.EuValue; - if (airt.AiState != 2 && iceTail->instantaneous_winddirection == 0 && - m_tempData.instantaneous_winddirection == 0xff) - { - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风向未采集到数据,重新采样", airt.AiState); - status = 0; - } else if (airt.AiState == 2 && m_tempData.instantaneous_winddirection == 0xff) - { - m_tempData.instantaneous_winddirection = iceTail->instantaneous_winddirection; - } else if (iceTail->instantaneous_winddirection == 0 && m_tempData.instantaneous_winddirection != 0xff) - { - iceTail->instantaneous_winddirection = m_tempData.instantaneous_winddirection; + GetWindDirectionData(&airt); + if (airt.AiState == 255 || airt.AiState == -1) { + iceTail->instantaneous_winddirection = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风向未接传感器", + airt.AiState); + } else { + iceTail->instantaneous_winddirection = airt.EuValue; + if (airt.AiState != 2 && iceTail->instantaneous_winddirection == 0 && + m_tempData.instantaneous_winddirection == 0xff) { + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风向未采集到数据,重新采样", + airt.AiState); + status = 0; + } else { + if (airt.AiState == 2 && m_tempData.instantaneous_winddirection == 0xff) + { + m_tempData.instantaneous_winddirection = iceTail->instantaneous_winddirection; + } else if (iceTail->instantaneous_winddirection == 0 && m_tempData.instantaneous_winddirection != 0xff) + { + iceTail->instantaneous_winddirection = m_tempData.instantaneous_winddirection; + } + if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0) + iceTail->instantaneous_winddirection = iceTail->instantaneous_winddirection * sensorParam[num].multiple; + if(sensorParam[num].offset != 0) + iceTail->instantaneous_winddirection = iceTail->instantaneous_winddirection + sensorParam[num].offset; + } + } + break; } } - GetAirTempData(&airt); - if(airt.AiState == 255 || airt.AiState == -1) - { - iceTail->air_temperature = 0xff; - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰温度未接传感器", - airt.AiState); - }else - { - iceTail->air_temperature = airt.EuValue; - if (airt.AiState != 2 && iceTail->air_temperature == 0 && - m_tempData.air_temperature == 0xff) - { - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰温度未采集到数据,重新采样", - airt.AiState); - status = 0; - } else if (airt.AiState == 2 && m_tempData.air_temperature == 0xff) - { - m_tempData.air_temperature = iceTail->air_temperature; - } else if (iceTail->air_temperature == 0 && m_tempData.air_temperature != 0xff) + for (int num = 0; num < MAX_SERIAL_DEV_NUM; num++) { + if (sensorParam[num].SensorsType == WEATHER_PROTOCOL && sensorParam[num].IsNoInsta == 0) { - iceTail->air_temperature = m_tempData.air_temperature; - } - } + iceTail->air_temperature = 0xff; + iceTail->humidity = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "地址%d,温湿度传感器未启用", + sensorParam[num].devaddr); + break; + } else if (sensorParam[num].SensorsType == WEATHER_PROTOCOL && sensorParam[num].IsNoInsta == 1) { + GetAirTempData(&airt); + if (airt.AiState == 255 || airt.AiState == -1) { + iceTail->air_temperature = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰温度未接传感器", + airt.AiState); + } else { + iceTail->air_temperature = airt.EuValue; + if (airt.AiState != 2 && iceTail->air_temperature == 0 && + m_tempData.air_temperature == 0xff) { + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰温度未采集到数据,重新采样", + airt.AiState); + status = 0; + } else { + if (airt.AiState == 2 && m_tempData.air_temperature == 0xff) + { + m_tempData.air_temperature = iceTail->air_temperature; + } else if (iceTail->air_temperature == 0 && + m_tempData.air_temperature != 0xff) + { + iceTail->air_temperature = m_tempData.air_temperature; + } + if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0) + iceTail->air_temperature = iceTail->air_temperature * sensorParam[num].multiple; + if(sensorParam[num].offset != 0) + iceTail->air_temperature = iceTail->air_temperature + sensorParam[num].offset; + } + } - GetHumidityData(&airt); - if(airt.AiState == 255 || airt.AiState == -1) - { - iceTail->humidity = 0xff; - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰湿度未接传感器", - airt.AiState); - }else - { - iceTail->humidity = airt.EuValue; - if (airt.AiState != 2 && iceTail->humidity == 0 && m_tempData.humidity == 0xff) - { - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰湿度未采集到数据,重新采样", - airt.AiState); - status = 0; - } else if (airt.AiState == 2 && m_tempData.humidity == 0xff) - { - m_tempData.humidity = iceTail->humidity; - } else if (iceTail->humidity == 0 && m_tempData.humidity != 0xff) - { - iceTail->humidity = m_tempData.humidity; + GetHumidityData(&airt); + if (airt.AiState == 255 || airt.AiState == -1) { + iceTail->humidity = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰湿度未接传感器", + airt.AiState); + } else { + iceTail->humidity = airt.EuValue; + if (airt.AiState != 2 && iceTail->humidity == 0 && + m_tempData.humidity == 0xff) { + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰湿度未采集到数据,重新采样", + airt.AiState); + status = 0; + } else { + if (airt.AiState == 2 && m_tempData.humidity == 0xff) { + m_tempData.humidity = iceTail->humidity; + } else if (iceTail->humidity == 0 && m_tempData.humidity != 0xff) { + iceTail->humidity = m_tempData.humidity; + } + if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0) + iceTail->humidity = iceTail->humidity * sensorParam[num].multiple; + if(sensorParam[num].offset != 0) + iceTail->humidity = iceTail->humidity + sensorParam[num].offset; + } + } + break; } } - } if(status) @@ -3967,7 +4037,7 @@ int CPhoneDevice::GetIceData(IDevice::ICE_INFO *iceInfo, IDevice::ICE_TAIL *iceT return false; } -int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo) +int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo, D_SENSOR_PARAM *sensorParam) { m_tempData.instantaneous_windspeed = 0xff; m_tempData.air_temperature = 0xff; @@ -3992,137 +4062,219 @@ int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo) Data_DEF airt; { std::lock_guard lock(m_dataLocker); - GetWeatherData(&airt, 2); - if(airt.AiState == 255 || airt.AiState == -1) + for (int num = 0; num < MAX_SERIAL_DEV_NUM; num++) { - weatherInfo->avg_windspeed_10min = 0xff; - weatherInfo->extreme_windspeed = 0xff; - weatherInfo->standard_windspeed = 0xff; - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风速未接传感器", airt.AiState); - }else - { - weatherInfo->avg_windspeed_10min = airt.EuValue; - weatherInfo->extreme_windspeed = airt.EuValue; - weatherInfo->standard_windspeed = airt.EuValue; - if (airt.AiState != 2 && weatherInfo->avg_windspeed_10min == 0 && - m_tempData.instantaneous_windspeed == 0xff) - { - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风速未采集到数据,重新采样", - airt.AiState); - status = 0; - } else if (airt.AiState == 2 && m_tempData.instantaneous_windspeed == 0xff) + if (sensorParam[num].SensorsType == WIND_PROTOCOL && sensorParam[num].IsNoInsta == 0) { - m_tempData.instantaneous_windspeed = weatherInfo->avg_windspeed_10min; - } else if (weatherInfo->avg_windspeed_10min == 0 && - m_tempData.instantaneous_windspeed != 0xff) + weatherInfo->avg_windspeed_10min = 0xff; + weatherInfo->extreme_windspeed = 0xff; + weatherInfo->standard_windspeed = 0xff; + weatherInfo->avg_winddirection_10min = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "地址%d,风速风向传感器未启用", + sensorParam[num].devaddr); + break; + } else if (sensorParam[num].SensorsType == WIND_PROTOCOL && sensorParam[num].IsNoInsta == 1) { - weatherInfo->avg_windspeed_10min = m_tempData.instantaneous_windspeed; - weatherInfo->extreme_windspeed = m_tempData.instantaneous_windspeed; - weatherInfo->standard_windspeed = m_tempData.instantaneous_windspeed; - } - } + GetWeatherData(&airt, 2); + if (airt.AiState == 255 || airt.AiState == -1) + { + weatherInfo->avg_windspeed_10min = 0xff; + weatherInfo->extreme_windspeed = 0xff; + weatherInfo->standard_windspeed = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风速未接传感器", airt.AiState); + } else + { + weatherInfo->avg_windspeed_10min = airt.EuValue; + weatherInfo->extreme_windspeed = airt.EuValue; + weatherInfo->standard_windspeed = airt.EuValue; + if (airt.AiState != 2 && weatherInfo->avg_windspeed_10min == 0 && m_tempData.instantaneous_windspeed == 0xff) + { + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风速未采集到数据,重新采样", + airt.AiState); + status = 0; + } else { + if (airt.AiState == 2 && m_tempData.instantaneous_windspeed == 0xff) + { + m_tempData.instantaneous_windspeed = weatherInfo->avg_windspeed_10min; + } else if (weatherInfo->avg_windspeed_10min == 0 && + m_tempData.instantaneous_windspeed != 0xff) + { + weatherInfo->avg_windspeed_10min = m_tempData.instantaneous_windspeed; + weatherInfo->extreme_windspeed = m_tempData.instantaneous_windspeed; + weatherInfo->standard_windspeed = m_tempData.instantaneous_windspeed; + } + if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0) + { + weatherInfo->avg_windspeed_10min = weatherInfo->avg_windspeed_10min * sensorParam[num].multiple; + weatherInfo->extreme_windspeed = weatherInfo->avg_windspeed_10min; + weatherInfo->standard_windspeed = weatherInfo->avg_windspeed_10min; + } + if(sensorParam[num].offset != 0) + { + weatherInfo->avg_windspeed_10min = weatherInfo->avg_windspeed_10min + sensorParam[num].offset; + weatherInfo->extreme_windspeed = weatherInfo->avg_windspeed_10min; + weatherInfo->standard_windspeed = weatherInfo->avg_windspeed_10min; + } + } + } - GetWeatherData(&airt, 3); - if(airt.AiState == 255 || airt.AiState == -1) - { - weatherInfo->avg_winddirection_10min = 0xff; - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风向未接传感器", airt.AiState); - }else - { - weatherInfo->avg_winddirection_10min = airt.EuValue; - if (airt.AiState != 2 && weatherInfo->avg_winddirection_10min == 0 && - m_tempData.instantaneous_winddirection == 0xff) - { - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风向未采集到数据,重新采样", airt.AiState); - status = 0; - } else if(airt.AiState == 2 && m_tempData.instantaneous_winddirection == 0xff) - { - m_tempData.instantaneous_winddirection = weatherInfo->avg_winddirection_10min; - }else if(weatherInfo->winddirection == 0 && m_tempData.instantaneous_winddirection != 0xff) - { - weatherInfo->winddirection = m_tempData.instantaneous_winddirection; - } - } - GetWeatherData(&airt, 0); - if(airt.AiState == 255 || airt.AiState == -1) - { - weatherInfo->air_temperature = 0xff; - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象温度未接传感器", airt.AiState); - }else - { - weatherInfo->air_temperature = airt.EuValue; - if (airt.AiState != 2 && weatherInfo->air_temperature == 0 && - m_tempData.air_temperature == 0xff) - { - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象温度未采集到数据,重新采样", - airt.AiState); - status = 0; - } else if (airt.AiState == 2 && m_tempData.air_temperature == 0xff) - { - m_tempData.air_temperature = weatherInfo->air_temperature; - } else if (weatherInfo->air_temperature == 0 && m_tempData.air_temperature != 0xff) - { - weatherInfo->air_temperature = m_tempData.air_temperature; + GetWeatherData(&airt, 3); + if (airt.AiState == 255 || airt.AiState == -1) + { + weatherInfo->avg_winddirection_10min = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风向未接传感器", airt.AiState); + } else + { + weatherInfo->avg_winddirection_10min = airt.EuValue; + if (airt.AiState != 2 && weatherInfo->avg_winddirection_10min == 0 && m_tempData.instantaneous_winddirection == 0xff) + { + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风向未采集到数据,重新采样", airt.AiState); + status = 0; + } else { + if (airt.AiState == 2 && m_tempData.instantaneous_winddirection == 0xff) { + m_tempData.instantaneous_winddirection = weatherInfo->avg_winddirection_10min; + } else if (weatherInfo->winddirection == 0 && m_tempData.instantaneous_winddirection != 0xff) { + weatherInfo->avg_winddirection_10min = m_tempData.instantaneous_winddirection; + } + if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0) + weatherInfo->avg_winddirection_10min = weatherInfo->avg_winddirection_10min * sensorParam[num].multiple; + if(sensorParam[num].offset != 0) + weatherInfo->avg_winddirection_10min = weatherInfo->avg_winddirection_10min + sensorParam[num].offset; + } + } + + GetWeatherData(&airt, 4); + weatherInfo->precipitation = airt.EuValue; + if(airt.AiState == 255 || airt.AiState == -1) + { + weatherInfo->precipitation = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,降雨量未接传感器", airt.AiState); + }else if (airt.AiState != 2 && weatherInfo->precipitation == 0) + { + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,降雨量未采集到数据,重新采样", + weatherInfo->precipitation, airt.AiState); + status = 0; + } else + { + if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0) + weatherInfo->precipitation = weatherInfo->precipitation * sensorParam[num].multiple; + if(sensorParam[num].offset != 0) + weatherInfo->precipitation = weatherInfo->precipitation + sensorParam[num].offset; + } + + GetWeatherData(&airt, 5); + weatherInfo->air_pressure = airt.EuValue; + if(airt.AiState == 255 || airt.AiState == -1) + { + weatherInfo->air_pressure = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气压未接传感器", airt.AiState); + }else if (airt.AiState != 2 && weatherInfo->air_pressure == 0) { + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气压未采集到数据,重新采样", + weatherInfo->air_pressure, airt.AiState); + status = 0; + } else + { + if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0) + weatherInfo->air_pressure = weatherInfo->air_pressure * sensorParam[num].multiple; + if(sensorParam[num].offset != 0) + weatherInfo->air_pressure = weatherInfo->air_pressure + sensorParam[num].offset; + } + + GetWeatherData(&airt, 6); + weatherInfo->radiation_intensity = airt.EuValue; + if(airt.AiState == 255 || airt.AiState == -1) + { + weatherInfo->radiation_intensity = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,光照强度未接传感器", airt.AiState); + }else if (airt.AiState != 2 && weatherInfo->radiation_intensity == 0) { + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,光照强度未采集到数据,重新采样", + weatherInfo->radiation_intensity, airt.AiState); + status = 0; + } else + { + if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0) + weatherInfo->radiation_intensity = weatherInfo->radiation_intensity * sensorParam[num].multiple; + if(sensorParam[num].offset != 0) + weatherInfo->radiation_intensity = weatherInfo->radiation_intensity + sensorParam[num].offset; + } + break; } } - GetWeatherData(&airt, 1); - if(airt.AiState == 255 || airt.AiState == -1) - { - weatherInfo->humidity = 0xff; - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象湿度未接传感器", airt.AiState); - }else - { - weatherInfo->humidity = airt.EuValue; - if (airt.AiState != 2 && weatherInfo->humidity == 0 && m_tempData.humidity == 0xff) + for (int num = 0; num < MAX_SERIAL_DEV_NUM; num++) { + if (sensorParam[num].SensorsType == WEATHER_PROTOCOL && sensorParam[num].IsNoInsta == 0) { - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象湿度未采集到数据,重新采样", airt.AiState); - status = 0; - } else if(airt.AiState == 2 && m_tempData.humidity == 0xff) - { - m_tempData.humidity = weatherInfo->humidity; - }else if(weatherInfo->humidity == 0 && m_tempData.humidity != 0xff) + weatherInfo->air_temperature = 0xff; + weatherInfo->humidity = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "地址%d,温湿度传感器未启用", + sensorParam[num].devaddr); + break; + } else if (sensorParam[num].SensorsType == WEATHER_PROTOCOL && + sensorParam[num].IsNoInsta == 1) { - weatherInfo->humidity = m_tempData.humidity; - } - } - - GetWeatherData(&airt, 4); - weatherInfo->precipitation = airt.EuValue; - if(airt.AiState == 255 || airt.AiState == -1) - { - weatherInfo->precipitation = 0xff; - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,降雨量未接传感器", airt.AiState); - }else if (airt.AiState != 2 && weatherInfo->precipitation == 0) - { - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,降雨量未采集到数据,重新采样", - weatherInfo->precipitation, airt.AiState); - status = 0; - } + GetWeatherData(&airt, 0); + if (airt.AiState == 255 || airt.AiState == -1) + { + weatherInfo->air_temperature = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象温度未接传感器", airt.AiState); + } else + { + weatherInfo->air_temperature = airt.EuValue; + if (airt.AiState != 2 && weatherInfo->air_temperature == 0 && + m_tempData.air_temperature == 0xff) + { + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象温度未采集到数据,重新采样", + airt.AiState); + status = 0; + } else + { + if (airt.AiState == 2 && m_tempData.air_temperature == 0xff) + { + m_tempData.air_temperature = weatherInfo->air_temperature; + } else if (weatherInfo->air_temperature == 0 && m_tempData.air_temperature != 0xff) + { + weatherInfo->air_temperature = m_tempData.air_temperature; + } + if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0) + weatherInfo->air_temperature = weatherInfo->air_temperature * sensorParam[num].multiple; + if(sensorParam[num].offset != 0) + weatherInfo->air_temperature = weatherInfo->air_temperature + sensorParam[num].offset; + } + } - GetWeatherData(&airt, 5); - weatherInfo->air_pressure = airt.EuValue; - if(airt.AiState == 255 || airt.AiState == -1) - { - weatherInfo->air_pressure = 0xff; - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气压未接传感器", airt.AiState); - }else if (airt.AiState != 2 && weatherInfo->air_pressure == 0) { - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气压未采集到数据,重新采样", - weatherInfo->air_pressure, airt.AiState); - status = 0; + GetWeatherData(&airt, 1); + if (airt.AiState == 255 || airt.AiState == -1) + { + weatherInfo->humidity = 0xff; + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象湿度未接传感器", airt.AiState); + } else + { + weatherInfo->humidity = airt.EuValue; + if (airt.AiState != 2 && weatherInfo->humidity == 0 && + m_tempData.humidity == 0xff) + { + XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象湿度未采集到数据,重新采样", + airt.AiState); + status = 0; + } else + { + if (airt.AiState == 2 && m_tempData.humidity == 0xff) + { + m_tempData.humidity = weatherInfo->humidity; + } else if (weatherInfo->humidity == 0 && m_tempData.humidity != 0xff) + { + weatherInfo->humidity = m_tempData.humidity; + } + if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0) + weatherInfo->humidity = weatherInfo->humidity * sensorParam[num].multiple; + if(sensorParam[num].offset != 0) + weatherInfo->humidity = weatherInfo->humidity + sensorParam[num].offset; + } + } + break; + } } - GetWeatherData(&airt, 6); - weatherInfo->radiation_intensity = airt.EuValue; - if(airt.AiState == 255 || airt.AiState == -1) - { - weatherInfo->radiation_intensity = 0xff; - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,光照强度未接传感器", airt.AiState); - }else if (airt.AiState != 2 && weatherInfo->radiation_intensity == 0) { - XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,光照强度未采集到数据,重新采样", - weatherInfo->radiation_intensity, airt.AiState); - status = 0; - } if (status) return true; else diff --git a/app/src/main/cpp/PhoneDevice.h b/app/src/main/cpp/PhoneDevice.h index e4893d3d..e20bf433 100644 --- a/app/src/main/cpp/PhoneDevice.h +++ b/app/src/main/cpp/PhoneDevice.h @@ -231,7 +231,7 @@ public: virtual uint64_t RequestWakelock(uint64_t timeout); virtual bool ReleaseWakelock(uint64_t wakelock); - virtual int GetWData(WEATHER_INFO *weatherInfo); + virtual int GetWData(WEATHER_INFO *weatherInfo, D_SENSOR_PARAM *sensorParam); virtual int GetIceData(ICE_INFO *iceInfo, ICE_TAIL *icetail, D_SENSOR_PARAM *sensorParam); virtual bool OpenSensors(int sensortype); virtual bool CloseSensors(int sensortype, uint32_t delayedCloseTime); From b5413de4176154a9d3449184bc1a00521fc08a4e Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Tue, 24 Dec 2024 17:13:12 +0800 Subject: [PATCH 69/82] Update version to 1.1.38 Based Core Version to 1.2.26 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index a821adad..d533898d 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 = 1 -def AppBuildNumber = 37 +def AppBuildNumber = 38 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From af0de16a67f7a4a5ab233ef92fe8be326c0c091e Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Tue, 24 Dec 2024 17:28:18 +0800 Subject: [PATCH 70/82] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=87=8A=E6=94=BE?= =?UTF-8?q?=E5=94=A4=E9=86=92=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index fac3f61a..e6f7965d 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1998,6 +1998,7 @@ bool CPhoneDevice::OpenPTZSensors(uint32_t sec) m_cameraStatus = false; m_sensorsStatus = false; m_shouldStopWaiting.store(false); + ReleaseWakelock(wid); return false; } std::this_thread::sleep_for(std::chrono::milliseconds(200)); From a6134b860db14e63f1d4f15daac990a6177d2046 Mon Sep 17 00:00:00 2001 From: jxjajs Date: Wed, 25 Dec 2024 14:33:34 +0800 Subject: [PATCH 71/82] =?UTF-8?q?=E6=B0=94=E8=B1=A1=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/SensorsProtocol.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/cpp/SensorsProtocol.cpp b/app/src/main/cpp/SensorsProtocol.cpp index a7ed0966..767d371d 100644 --- a/app/src/main/cpp/SensorsProtocol.cpp +++ b/app/src/main/cpp/SensorsProtocol.cpp @@ -3093,7 +3093,7 @@ void ShxyProtocolDataProcess(int devno) //g_SelfTest.SensorsFault |= (0x10); //if ((gDisSunRain & 0x80) == 0x80) { - sprintf(szbuf, "气压:%0.3f ", fvalue); + sprintf(szbuf, "%s气压:%0.3f ", szbuf, fvalue); DebugLog(devparam[devno].commid, szbuf, 'V'); } break; From e07de45f59895cc5ee0f21a4fe918f2ba06aaa1f Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Wed, 25 Dec 2024 17:19:14 +0800 Subject: [PATCH 72/82] =?UTF-8?q?=E6=B0=94=E8=B1=A1=E9=87=87=E9=9B=86?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index e6f7965d..1c1bbf01 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -4076,7 +4076,7 @@ int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo, D_SENSOR_PARAM *s break; } else if (sensorParam[num].SensorsType == WIND_PROTOCOL && sensorParam[num].IsNoInsta == 1) { - GetWeatherData(&airt, 2); + GetWindSpeedData(&airt); if (airt.AiState == 255 || airt.AiState == -1) { weatherInfo->avg_windspeed_10min = 0xff; @@ -4119,7 +4119,7 @@ int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo, D_SENSOR_PARAM *s } } - GetWeatherData(&airt, 3); + GetWindDirectionData(&airt); if (airt.AiState == 255 || airt.AiState == -1) { weatherInfo->avg_winddirection_10min = 0xff; @@ -4144,7 +4144,7 @@ int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo, D_SENSOR_PARAM *s } } - GetWeatherData(&airt, 4); + GetRainfallData(&airt); weatherInfo->precipitation = airt.EuValue; if(airt.AiState == 255 || airt.AiState == -1) { @@ -4163,7 +4163,7 @@ int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo, D_SENSOR_PARAM *s weatherInfo->precipitation = weatherInfo->precipitation + sensorParam[num].offset; } - GetWeatherData(&airt, 5); + GetAtmosData(&airt); weatherInfo->air_pressure = airt.EuValue; if(airt.AiState == 255 || airt.AiState == -1) { @@ -4181,7 +4181,7 @@ int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo, D_SENSOR_PARAM *s weatherInfo->air_pressure = weatherInfo->air_pressure + sensorParam[num].offset; } - GetWeatherData(&airt, 6); + GetOpticalRadiationData(&airt); weatherInfo->radiation_intensity = airt.EuValue; if(airt.AiState == 255 || airt.AiState == -1) { @@ -4202,6 +4202,7 @@ int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo, D_SENSOR_PARAM *s } } + for (int num = 0; num < MAX_SERIAL_DEV_NUM; num++) { if (sensorParam[num].SensorsType == WEATHER_PROTOCOL && sensorParam[num].IsNoInsta == 0) { @@ -4213,7 +4214,7 @@ int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo, D_SENSOR_PARAM *s } else if (sensorParam[num].SensorsType == WEATHER_PROTOCOL && sensorParam[num].IsNoInsta == 1) { - GetWeatherData(&airt, 0); + GetAirTempData(&airt); if (airt.AiState == 255 || airt.AiState == -1) { weatherInfo->air_temperature = 0xff; @@ -4243,7 +4244,7 @@ int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo, D_SENSOR_PARAM *s } } - GetWeatherData(&airt, 1); + GetHumidityData(&airt); if (airt.AiState == 255 || airt.AiState == -1) { weatherInfo->humidity = 0xff; From 2f176a0a3393aa2a99a6f46c4ba89acfb8da37bc Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Wed, 25 Dec 2024 17:20:32 +0800 Subject: [PATCH 73/82] =?UTF-8?q?=E7=BD=91=E7=BB=9C=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E6=8B=8D=E7=85=A7=E7=94=B5=E6=BA=90=E5=85=B3=E9=97=AD=E4=B8=8D?= =?UTF-8?q?=E5=BB=B6=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 1c1bbf01..6996daac 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1681,11 +1681,17 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< } else if (photoInfo.cameraType == CAM_TYPE_NET) { - powerCtrlPtr = std::shared_ptr(new NetCameraPowerCtrl(mPhotoInfo.closeDelayTime)); + if(mPhotoInfo.scheduleTime == 0) + powerCtrlPtr = std::shared_ptr(new NetCameraPowerCtrl(mPhotoInfo.closeDelayTime)); + else + powerCtrlPtr = std::shared_ptr(new NetCameraPowerCtrl(2)); } else if (photoInfo.cameraType == CAM_TYPE_PLZ) { - powerCtrlPtr = std::shared_ptr(new PlzCameraPowerCtrl(mPhotoInfo.closeDelayTime)); + if(mPhotoInfo.scheduleTime == 0) + powerCtrlPtr = std::shared_ptr(new PlzCameraPowerCtrl(mPhotoInfo.closeDelayTime)); + else + powerCtrlPtr = std::shared_ptr(new PlzCameraPowerCtrl(2)); } res = true; @@ -1813,11 +1819,9 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< if(localPhotoInfo.scheduleTime == 0) { pThis->ClosePTZSensors(localPhotoInfo.closeDelayTime); - GpioControl::setCam3V3Enable(false, localPhotoInfo.closeDelayTime); } else { pThis->ClosePTZSensors(2); - GpioControl::setCam3V3Enable(false, 2); } @@ -1867,9 +1871,6 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< std::thread t([localPhotoInfo, param, pThis, path, osds, wid_serial, powerCtrlPtr]() mutable { - time_t ts = time(NULL); - pThis->OpenPTZSensors(localPhotoInfo.selfTestingTime); - if (localPhotoInfo.preset != 0 && localPhotoInfo.preset != 0xFF) { XYLOG(XYLOG_SEVERITY_INFO,"Recv CameraCtrl Command, action= MOVE_PRESETNO, preset = %u", localPhotoInfo.preset); From 4cca774a098f62f6c69b117efeeca4c1a74c9623 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Wed, 25 Dec 2024 17:22:58 +0800 Subject: [PATCH 74/82] =?UTF-8?q?=E4=B8=B2=E5=8F=A3=E8=A7=84=E7=BA=A6?= =?UTF-8?q?=E4=B8=8A=E9=80=81=E6=97=B6=E9=97=B4=E4=B8=8E=E6=B0=B4=E5=8D=B0?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 6996daac..2c3738ee 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1805,6 +1805,8 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< std::thread t([localPhotoInfo, param, pThis, path, osds, wid_serial]() mutable { time_t ts = time(NULL); + if(localPhotoInfo.scheduleTime != 0) + ts = localPhotoInfo.scheduleTime; pThis->OpenPTZSensors(localPhotoInfo.selfTestingTime); if (localPhotoInfo.preset != 0 && localPhotoInfo.preset != 0xFF) From a6d4e065b307b51ac2ed2408a7a85ef086e963ff Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 26 Dec 2024 11:07:11 +0800 Subject: [PATCH 75/82] =?UTF-8?q?=E7=BD=91=E7=BB=9C=E6=8B=8D=E7=85=A7?= =?UTF-8?q?=E8=A7=84=E7=BA=A6=E4=B8=8A=E9=80=81=E6=97=B6=E9=97=B4=E4=B8=8E?= =?UTF-8?q?=E6=B0=B4=E5=8D=B0=E6=97=B6=E9=97=B4=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 2c3738ee..8eb5b2c8 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1592,6 +1592,8 @@ bool CPhoneDevice::TakePhotoWithNetCamera(IDevice::PHOTO_INFO& localPhotoInfo, c if (netCaptureResult) { time_t takingTime = ts; + if(localPhotoInfo.scheduleTime != 0) + takingTime = localPhotoInfo.scheduleTime; if (localPhotoInfo.remedy != 0) { if ((takingTime - localPhotoInfo.scheduleTime) > 30) From c2d4c3d296b6fe040186e5c3795244bdc15e0af3 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 26 Dec 2024 11:08:18 +0800 Subject: [PATCH 76/82] Update version to 1.1.39 Based Core Version to 1.2.27 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index d533898d..fa511335 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 = 1 -def AppBuildNumber = 38 +def AppBuildNumber = 39 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From 09073b86b0df20aa983d403cffd58c346d75f3c0 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 26 Dec 2024 16:48:04 +0800 Subject: [PATCH 77/82] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=9A=E5=90=88?= =?UTF-8?q?=E4=B8=80=E6=B0=94=E8=B1=A1=E4=BC=A0=E6=84=9F=E5=99=A8=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 16 ++++++++-------- app/src/main/cpp/SensorsProtocol.cpp | 10 +++++++++- app/src/main/cpp/SensorsProtocol.h | 1 + 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 8eb5b2c8..6af7fc80 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -3909,8 +3909,8 @@ int CPhoneDevice::GetIceData(IDevice::ICE_INFO *iceInfo, IDevice::ICE_TAIL *iceT iceTail->instantaneous_winddirection = 0xff; XYLOG(XYLOG_SEVERITY_INFO, "地址%d,风速风向传感器未启用", sensorParam[num].devaddr); - break; - } else if (sensorParam[num].SensorsType == WIND_PROTOCOL && + continue; + } else if ((sensorParam[num].SensorsType == WIND_PROTOCOL || sensorParam[num].SensorsType == MUTIWEATHER_PROTOCOL) && sensorParam[num].IsNoInsta == 1) { GetWindSpeedData(&airt); if (airt.AiState == 255 || airt.AiState == -1) { @@ -3978,8 +3978,8 @@ int CPhoneDevice::GetIceData(IDevice::ICE_INFO *iceInfo, IDevice::ICE_TAIL *iceT iceTail->humidity = 0xff; XYLOG(XYLOG_SEVERITY_INFO, "地址%d,温湿度传感器未启用", sensorParam[num].devaddr); - break; - } else if (sensorParam[num].SensorsType == WEATHER_PROTOCOL && sensorParam[num].IsNoInsta == 1) { + continue; + } else if ((sensorParam[num].SensorsType == WEATHER_PROTOCOL || sensorParam[num].SensorsType == MUTIWEATHER_PROTOCOL) && sensorParam[num].IsNoInsta == 1) { GetAirTempData(&airt); if (airt.AiState == 255 || airt.AiState == -1) { iceTail->air_temperature = 0xff; @@ -4078,8 +4078,8 @@ int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo, D_SENSOR_PARAM *s weatherInfo->avg_winddirection_10min = 0xff; XYLOG(XYLOG_SEVERITY_INFO, "地址%d,风速风向传感器未启用", sensorParam[num].devaddr); - break; - } else if (sensorParam[num].SensorsType == WIND_PROTOCOL && sensorParam[num].IsNoInsta == 1) + continue; + } else if ((sensorParam[num].SensorsType == WIND_PROTOCOL || sensorParam[num].SensorsType == MUTIWEATHER_PROTOCOL) && sensorParam[num].IsNoInsta == 1) { GetWindSpeedData(&airt); if (airt.AiState == 255 || airt.AiState == -1) @@ -4215,8 +4215,8 @@ int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo, D_SENSOR_PARAM *s weatherInfo->humidity = 0xff; XYLOG(XYLOG_SEVERITY_INFO, "地址%d,温湿度传感器未启用", sensorParam[num].devaddr); - break; - } else if (sensorParam[num].SensorsType == WEATHER_PROTOCOL && + continue; + } else if ((sensorParam[num].SensorsType == WEATHER_PROTOCOL || sensorParam[num].SensorsType == MUTIWEATHER_PROTOCOL) && sensorParam[num].IsNoInsta == 1) { GetAirTempData(&airt); diff --git a/app/src/main/cpp/SensorsProtocol.cpp b/app/src/main/cpp/SensorsProtocol.cpp index 767d371d..9b36c861 100644 --- a/app/src/main/cpp/SensorsProtocol.cpp +++ b/app/src/main/cpp/SensorsProtocol.cpp @@ -1020,6 +1020,9 @@ void Gm_InitSerialComm(SENSOR_PARAM *sensorParam, char *filedir) case RESERVE5_PROTOCOL: sprintf(szbuf, "传感器%d接的是加密芯片", i + 1); break; + case MUTIWEATHER_PROTOCOL: + sprintf(szbuf, "传感器%d接的是多合一气象传感器", i + 1); + break; default: sprintf(szbuf, "传感器%d没有接!", i + 1); break; @@ -1180,6 +1183,7 @@ void FindDevUseSerialCommNo() { case WEATHER_PROTOCOL: case WIND_PROTOCOL: + case MUTIWEATHER_PROTOCOL: //memset(devparam[i].pathname, 0, sizeof(devparam[i].pathname)); /* 目前还不确定具体串口分配,暂时默认使用串口1*/ //sprintf(devparam[i].pathname, "/dev/swk3"); @@ -1271,6 +1275,7 @@ void GM_StartSerialComm() switch (devparam[i].ProtocolIdx) { case WEATHER_PROTOCOL: // 气象 + case MUTIWEATHER_PROTOCOL: memset(weatherpntmsg, 0, sizeof(AI_DEF)*WEATHER_DATA_NUM); memset(szbuf, 0, sizeof(szbuf)); sprintf(szbuf, "%s", "气象"); @@ -1433,6 +1438,7 @@ void Gm_FindAllSensorsCommand() case RALLY_PROTOCOL: /* 拉力*/ case WIND_PROTOCOL: /* 风速风向*/ case SLANT_PROTOCOL: /* 倾角*/ + case MUTIWEATHER_PROTOCOL: flag = FindNextShxyProtocolCommand(curidx); break; case RESERVE2_PROTOCOL: @@ -1480,6 +1486,7 @@ void GM_IsCloseSensors() case RALLY_PROTOCOL: /* 拉力*/ case WIND_PROTOCOL: /* 风速风向*/ case SLANT_PROTOCOL: /* 倾角*/ + case MUTIWEATHER_PROTOCOL: if ((lctime - srdt.ms_dev[i].FirstCmdTimeCnt > 50 * 1000) || (lctime - srdt.ms_dev[i].FirstCmdTimeCnt < 0)) { srdt.ms_dev[i].FirstCmdTimeCnt = lctime; @@ -1498,7 +1505,7 @@ void GM_IsCloseSensors() else if (SER_SAMPLE == srdt.ms_dev[i].aiValue[j].AiState) srdt.ms_dev[i].aiValue[j].AiState = SAMPLINGSUCCESS; } - if((devparam[i].ProtocolIdx == WIND_PROTOCOL) || (WEATHER_PROTOCOL == devparam[i].ProtocolIdx)) + if((devparam[i].ProtocolIdx == WIND_PROTOCOL) || (WEATHER_PROTOCOL == devparam[i].ProtocolIdx)|| (MUTIWEATHER_PROTOCOL == devparam[i].ProtocolIdx)) { for (j = 0; j < WEATHER_DATA_NUM; j++) { @@ -1606,6 +1613,7 @@ void SerialDataProcess(int devidx, u_char *buf, int len) case RALLY_PROTOCOL: /* 拉力*/ case WIND_PROTOCOL: /* 风速风向*/ case SLANT_PROTOCOL: /* 倾角*/ + case MUTIWEATHER_PROTOCOL: ShxyProtocolRecvData(devidx, buf, len); break; case RESERVE2_PROTOCOL: /* 意科电池电量读取协议*/ diff --git a/app/src/main/cpp/SensorsProtocol.h b/app/src/main/cpp/SensorsProtocol.h index 5d265089..4618dcca 100644 --- a/app/src/main/cpp/SensorsProtocol.h +++ b/app/src/main/cpp/SensorsProtocol.h @@ -38,6 +38,7 @@ #define PELCO_P_PROTOCOL 5 /* 摄像机Pelco_P协议序号*/ #define PELCO_D_PROTOCOL 6 /* 摄像机Pelco_D协议序号*/ #define SERIALCAMERA_PROTOCOL 8 /* 串口摄像机协议序号*/ +#define MUTIWEATHER_PROTOCOL 9 /*多合一气象*/ #define RESERVE2_PROTOCOL 17 /* 备用2协议序号*/ #define RESERVE4_PROTOCOL 19 /* 备用4协议序号*/ #define RESERVE5_PROTOCOL 20 /* 备用5协议序号*/ From b73e58bfe7cd0a65009d605ad3009780dd68763c Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Thu, 26 Dec 2024 16:49:16 +0800 Subject: [PATCH 78/82] Update version to 1.1.40 Based Core Version to 1.2.28 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index fa511335..1eb51d1a 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 = 1 -def AppBuildNumber = 39 +def AppBuildNumber = 40 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber From ef1a061fadf54d7f7c3881c9d531bb9166dd0821 Mon Sep 17 00:00:00 2001 From: jxjajs Date: Thu, 26 Dec 2024 17:42:18 +0800 Subject: [PATCH 79/82] =?UTF-8?q?=E6=B0=94=E8=B1=A1=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/SensorsProtocol.cpp | 46 ++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/app/src/main/cpp/SensorsProtocol.cpp b/app/src/main/cpp/SensorsProtocol.cpp index 767d371d..e321e78e 100644 --- a/app/src/main/cpp/SensorsProtocol.cpp +++ b/app/src/main/cpp/SensorsProtocol.cpp @@ -692,7 +692,7 @@ void Gm_OpenSerialPort(int devidx) fd = ::open(devparam[devidx].pathname, O_RDWR | O_NDELAY); if (fd < 0) { - sprintf(szbuf, "装置%d 打开串口%d %s失败!fd=%d", devidx+1, devparam[devidx].pathname, devparam[devidx].commid+1, fd); + sprintf(szbuf, "装置%d 打开串口%d %s失败!fd=%d", devidx+1, devparam[devidx].commid+1, devparam[devidx].pathname, fd); DebugLog(devparam[devidx].commid, szbuf, 'E'); return; } @@ -3094,7 +3094,7 @@ void ShxyProtocolDataProcess(int devno) //if ((gDisSunRain & 0x80) == 0x80) { sprintf(szbuf, "%s气压:%0.3f ", szbuf, fvalue); - DebugLog(devparam[devno].commid, szbuf, 'V'); + //DebugLog(devparam[devno].commid, szbuf, 'V'); } break; case 3: /*湿度*/ @@ -3115,12 +3115,52 @@ void ShxyProtocolDataProcess(int devno) //if ((gDisSunRain & 0x80) == 0x80) { sprintf(szbuf, "%s湿度:%0.3f ", szbuf, fvalue); - DebugLog(devparam[devno].commid, szbuf, 'V'); + if(datanum < 6) + DebugLog(devparam[devno].commid, szbuf, 'V'); } break; case 4: /*雨量*/ + if ((fvalue < 0) || (fvalue > 10000)) + { + frnb = (GeneratingRandomNumber() % 41 - 20) / 1000.0; + pPortParam->aiValue[RainfallNo].EuValue *= (1 + frnb); + weatherpntmsg[RainfallNo].EuValue *= (1 + frnb); + } + else + { + pPortParam->aiValue[RainfallNo].EuValue = fvalue;/*pPortParam->aiValue[1].AiParam.fFactor + pPortParam->aiValue[1].AiParam.EuValueDelta;*/ + weatherpntmsg[RainfallNo].EuValue = fvalue;/*weatherpntmsg[HumidityNo].AiParam.fFactor + weatherpntmsg[HumidityNo].AiParam.EuValueDelta;*/ + } + pPortParam->aiValue[RainfallNo].AiState = SER_SAMPLE; + weatherpntmsg[RainfallNo].AiState = SER_SAMPLE; + //g_SelfTest.SensorsFault |= (0x02); + //if ((gDisSunRain & 0x80) == 0x80) + { + sprintf(szbuf, "%s雨量:%0.3f ", szbuf, fvalue); + if(datanum < 7) + DebugLog(devparam[devno].commid, szbuf, 'V'); + } break; case 5: /*日照*/ + if ((fvalue < 0) || (fvalue > 10000)) + { + frnb = (GeneratingRandomNumber() % 41 - 20) / 1000.0; + pPortParam->aiValue[OpticalRadiationNo].EuValue *= (1 + frnb); + weatherpntmsg[OpticalRadiationNo].EuValue *= (1 + frnb); + } + else + { + pPortParam->aiValue[OpticalRadiationNo].EuValue = fvalue;/*pPortParam->aiValue[1].AiParam.fFactor + pPortParam->aiValue[1].AiParam.EuValueDelta;*/ + weatherpntmsg[OpticalRadiationNo].EuValue = fvalue;/*weatherpntmsg[HumidityNo].AiParam.fFactor + weatherpntmsg[HumidityNo].AiParam.EuValueDelta;*/ + } + pPortParam->aiValue[OpticalRadiationNo].AiState = SER_SAMPLE; + weatherpntmsg[OpticalRadiationNo].AiState = SER_SAMPLE; + //g_SelfTest.SensorsFault |= (0x02); + //if ((gDisSunRain & 0x80) == 0x80) + { + sprintf(szbuf, "%s日照:%0.3f ", szbuf, fvalue); + DebugLog(devparam[devno].commid, szbuf, 'V'); + } break; case 6: /*风速*/ if ((fvalue < 0) || (fvalue > 80)) From b482a184a0eda5821f2b5b98845373f302382a9e Mon Sep 17 00:00:00 2001 From: jxjajs Date: Thu, 26 Dec 2024 17:46:07 +0800 Subject: [PATCH 80/82] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B0=94=E8=B1=A1?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=A8=E9=87=8F=E3=80=81=E6=97=A5=E7=85=A7?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=EF=BC=8C=E5=8F=8A=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=A4=84=E7=90=86=E6=97=A5=E5=BF=97=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/SensorsProtocol.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/cpp/SensorsProtocol.cpp b/app/src/main/cpp/SensorsProtocol.cpp index e321e78e..2ad2e7e6 100644 --- a/app/src/main/cpp/SensorsProtocol.cpp +++ b/app/src/main/cpp/SensorsProtocol.cpp @@ -3155,8 +3155,6 @@ void ShxyProtocolDataProcess(int devno) } pPortParam->aiValue[OpticalRadiationNo].AiState = SER_SAMPLE; weatherpntmsg[OpticalRadiationNo].AiState = SER_SAMPLE; - //g_SelfTest.SensorsFault |= (0x02); - //if ((gDisSunRain & 0x80) == 0x80) { sprintf(szbuf, "%s日照:%0.3f ", szbuf, fvalue); DebugLog(devparam[devno].commid, szbuf, 'V'); From 3b03dce9e461b385420261237a14dba14e313f10 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Fri, 27 Dec 2024 16:13:05 +0800 Subject: [PATCH 81/82] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BC=93=E5=86=B2=E5=8C=BA=E5=A4=AA=E5=B0=8F=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/SensorsProtocol.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/cpp/SensorsProtocol.cpp b/app/src/main/cpp/SensorsProtocol.cpp index c57bff12..7c0c97b7 100644 --- a/app/src/main/cpp/SensorsProtocol.cpp +++ b/app/src/main/cpp/SensorsProtocol.cpp @@ -2969,7 +2969,7 @@ void ShxyProtocolDataProcess(int devno) int i, j, aipnt, datanum; SERIAL_DEV_DEF *pPortParam; SIO_PARAM_SERIAL_DEF *curserial; - char szbuf[64]; + char szbuf[128]; pPortParam = &srdt.ms_dev[devno]; curserial = &serialport[devparam[devno].commid]; From 2354403941c79337c1712950cf9f93765c9f2ce6 Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Fri, 27 Dec 2024 17:20:18 +0800 Subject: [PATCH 82/82] Update version to 1.1.41 Based Core Version to 1.2.28 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 1eb51d1a..c736fd9a 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 = 1 -def AppBuildNumber = 40 +def AppBuildNumber = 41 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber