From 30a1706af54be6e3d0a519b91c04b23869339a6c Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Wed, 11 Dec 2024 19:32:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=B5=E6=BA=90=E5=BB=B6?= =?UTF-8?q?=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/GPIOControl.cpp | 1 + app/src/main/cpp/GPIOControl.h | 19 ++++++++++++ app/src/main/cpp/PhoneDevice.cpp | 50 ++++++++++++++++---------------- app/src/main/cpp/PhoneDevice.h | 4 +-- 4 files changed, 47 insertions(+), 27 deletions(-) diff --git a/app/src/main/cpp/GPIOControl.cpp b/app/src/main/cpp/GPIOControl.cpp index 3ff387a8..ffeb5746 100644 --- a/app/src/main/cpp/GPIOControl.cpp +++ b/app/src/main/cpp/GPIOControl.cpp @@ -337,6 +337,7 @@ void GpioControl::PowerControlThreadProc() if (it->references == 0) { // Should turn off the power + time_t tt = it->closeTime; if ((it->closeTime == 0) || (it->closeTime <= ts)) { // close it directly diff --git a/app/src/main/cpp/GPIOControl.h b/app/src/main/cpp/GPIOControl.h index d6d72b93..4025647c 100644 --- a/app/src/main/cpp/GPIOControl.h +++ b/app/src/main/cpp/GPIOControl.h @@ -185,6 +185,11 @@ public: #endif } + static void setCam3V3Enable(bool enabled, uint32_t delayedCloseTime) + { + enabled ? TurnOn(CMD_SET_CAM_3V3_EN_STATE) : TurnOff(CMD_SET_CAM_3V3_EN_STATE, delayedCloseTime); + } + static void setCam3V3Enable(bool enabled) { enabled ? TurnOn(CMD_SET_CAM_3V3_EN_STATE) : TurnOff(CMD_SET_CAM_3V3_EN_STATE); @@ -212,6 +217,20 @@ public: } } + static void setRS485Enable(bool z, uint32_t delayedCloseTime) + { +#ifndef USING_N938 + z ? TurnOn(CMD_SET_485_EN_STATE) : TurnOff(CMD_SET_485_EN_STATE, delayedCloseTime); +#endif + } + + static void set12VEnable(bool z, uint32_t delayedCloseTime) + { +#ifndef USING_N938 + z ? TurnOn(CMD_SET_12V_EN_STATE) : TurnOff(CMD_SET_12V_EN_STATE, delayedCloseTime); +#endif + } + static void setRS485Enable(bool z) { #ifndef USING_N938 diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index d6322365..2d8171d3 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1852,8 +1852,8 @@ bool CPhoneDevice::OpenPTZSensors(int sec) { if (m_shouldStopWaiting.load()) { - CloseSensors(CAMERA_SENSOR_OPEN); - CloseSensors(MAIN_POWER_OPEN); + CloseSensors(CAMERA_SENSOR_OPEN, 0); + CloseSensors(MAIN_POWER_OPEN, 0); m_cameraStatus = false; m_sensorsStatus = false; m_shouldStopWaiting.store(false); @@ -1880,7 +1880,7 @@ bool CPhoneDevice::OpenPTZSensors(int sec) } -bool CPhoneDevice::ClosePTZSensors() +bool CPhoneDevice::ClosePTZSensors(uint32_t delayedCloseTime) { if(m_sensorsStatus && !m_cameraStatus) { @@ -1890,8 +1890,8 @@ bool CPhoneDevice::ClosePTZSensors() { std::lock_guard lock(m_cameraLocker); // std::unique_lock lock(m_cameraLocker); - CloseSensors(CAMERA_SENSOR_OPEN); - CloseSensors(MAIN_POWER_OPEN); + CloseSensors(CAMERA_SENSOR_OPEN, delayedCloseTime); + CloseSensors(MAIN_POWER_OPEN, delayedCloseTime); m_cameraStatus = false; m_sensorsStatus = false; } @@ -3917,32 +3917,32 @@ bool CPhoneDevice::OpenSensors(int sensortype) return 0; } -bool CPhoneDevice::CloseSensors(int sensortype) +bool CPhoneDevice::CloseSensors(int sensortype, uint32_t delayedCloseTime) { if(sensortype == MAIN_POWER_OPEN) { - GpioControl::set12VEnable(false); - GpioControl::setRS485Enable(false); - GpioControl::setCam3V3Enable(false); - GpioControl::TurnOff(CMD_SET_SPI_POWER); + GpioControl::set12VEnable(false, delayedCloseTime); + GpioControl::setRS485Enable(false, delayedCloseTime); + GpioControl::setCam3V3Enable(false, delayedCloseTime); + GpioControl::TurnOff(CMD_SET_SPI_POWER, delayedCloseTime); // GpioControl::TurnOff(CMD_SET_485_EN_STATE); #ifndef USING_N938 #ifndef USING_PLZ - GpioControl::TurnOff(CMD_SET_485_EN_STATE); + GpioControl::TurnOff(CMD_SET_485_EN_STATE, delayedCloseTime); #else - GpioControl::TurnOff(CMD_SET_485_ENABLE); + GpioControl::TurnOff(CMD_SET_485_ENABLE, delayedCloseTime); #endif #else - GpioControl::TurnOff(CMD_SPI2SERIAL_POWER_EN); - GpioControl::TurnOff(CMD_RS485_3V3_EN); + GpioControl::TurnOff(CMD_SPI2SERIAL_POWER_EN, delayedCloseTime); + GpioControl::TurnOff(CMD_RS485_3V3_EN, delayedCloseTime); #endif } if(sensortype == CAMERA_SENSOR_OPEN) { #ifdef USING_N938 - GpioControl::TurnOff(CMD_SET_PIC1_POWER); - GpioControl::TurnOff(CMD_SET_485_EN4); + GpioControl::TurnOff(CMD_SET_PIC1_POWER, delayedCloseTime); + GpioControl::TurnOff(CMD_SET_485_EN4, delayedCloseTime); // GpioControl::TurnOff(CMD_SET_CAM_3V3_EN_STATE); #endif @@ -3950,7 +3950,7 @@ bool CPhoneDevice::CloseSensors(int sensortype) // GpioControl::TurnOff(CMD_SET_3V3_PWR_ENABLE); #ifndef USING_PLZ #else - GpioControl::TurnOff(CMD_SET_PTZ_PWR_ENABLE); + GpioControl::TurnOff(CMD_SET_PTZ_PWR_ENABLE, delayedCloseTime); #endif #endif } @@ -3958,26 +3958,26 @@ bool CPhoneDevice::CloseSensors(int sensortype) { #ifndef USING_N938 #else - GpioControl::TurnOff(CMD_SET_WTH_POWER); - GpioControl::TurnOff(CMD_SET_485_EN3); + GpioControl::TurnOff(CMD_SET_WTH_POWER, delayedCloseTime); + GpioControl::TurnOff(CMD_SET_485_EN3, delayedCloseTime); #endif } if(sensortype == ICETHICK_SENSOR_OPEN) { #ifndef USING_N938 #else - GpioControl::TurnOff(CMD_SET_PULL_POWER); - GpioControl::TurnOff(CMD_SET_ANGLE_POWER); - GpioControl::TurnOff(CMD_SET_485_EN1); - GpioControl::TurnOff(CMD_SET_485_EN0); + GpioControl::TurnOff(CMD_SET_PULL_POWER, delayedCloseTime); + GpioControl::TurnOff(CMD_SET_ANGLE_POWER, delayedCloseTime); + GpioControl::TurnOff(CMD_SET_485_EN1, delayedCloseTime); + GpioControl::TurnOff(CMD_SET_485_EN0, delayedCloseTime); #endif } if(sensortype == OTHER_SENSOR) { #ifndef USING_N938 #else - GpioControl::TurnOff(CMD_SET_OTHER_POWER); - GpioControl::TurnOff(CMD_SET_485_EN2); + GpioControl::TurnOff(CMD_SET_OTHER_POWER, delayedCloseTime); + GpioControl::TurnOff(CMD_SET_485_EN2, delayedCloseTime); #endif } return 0; diff --git a/app/src/main/cpp/PhoneDevice.h b/app/src/main/cpp/PhoneDevice.h index 31458f3e..02883e40 100644 --- a/app/src/main/cpp/PhoneDevice.h +++ b/app/src/main/cpp/PhoneDevice.h @@ -230,9 +230,9 @@ public: virtual int GetWData(WEATHER_INFO *weatherInfo); virtual int GetIceData(ICE_INFO *iceInfo, ICE_TAIL *icetail, SENSOR_PARAM *sensorParam); virtual bool OpenSensors(int sensortype); - virtual bool CloseSensors(int sensortype); + virtual bool CloseSensors(int sensortype, uint32_t delayedCloseTime); virtual bool OpenPTZSensors(int sec); - virtual bool ClosePTZSensors(); + virtual bool ClosePTZSensors(uint32_t delayedCloseTime); virtual bool GetPTZSensorsStatus(); virtual bool GetCameraStatus();