|
|
|
@ -494,8 +494,6 @@ CPhoneDevice::CPhoneDevice(JavaVM* vm, jobject service, const std::string& appPa
|
|
|
|
|
m_signalLevel = 0;
|
|
|
|
|
m_signalLevelUpdateTime = time(NULL);
|
|
|
|
|
mBuildTime = 0;
|
|
|
|
|
m_cameraStatus = false;
|
|
|
|
|
m_sensorsStatus = false;
|
|
|
|
|
m_lastTime = 0;
|
|
|
|
|
m_shouldStopWaiting = false;
|
|
|
|
|
m_collecting = false;
|
|
|
|
@ -1527,8 +1525,10 @@ bool CPhoneDevice::TakePhotoWithNetCamera(IDevice::PHOTO_INFO& localPhotoInfo, c
|
|
|
|
|
uint32_t waitTime = localPhotoInfo.selfTestingTime;
|
|
|
|
|
if(!GpioControl::GetSelftestStatus(waitTime))
|
|
|
|
|
{
|
|
|
|
|
m_isSelfTesting.store(true);
|
|
|
|
|
waitTime = (waitTime != 0) ? (waitTime * 1024) : 10240;
|
|
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(waitTime));
|
|
|
|
|
m_isSelfTesting.store(false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "Ethernet Power ON");
|
|
|
|
@ -1950,9 +1950,12 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector<
|
|
|
|
|
uint32_t waitTime = localPhotoInfo.selfTestingTime;
|
|
|
|
|
if(!GpioControl::GetSelftestStatus(waitTime))
|
|
|
|
|
{
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "Camera is SeltTesting, selfTestingtime=%u", waitTime);
|
|
|
|
|
waitTime = (waitTime != 0) ? (waitTime * 1024) : 10240;
|
|
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(waitTime));
|
|
|
|
|
pThis->m_isSelfTesting.store(true);
|
|
|
|
|
time_t remaintime = GpioControl::GetSelfTestRemain(waitTime);
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "Camera is SeltTesting,remaining selfTestingtime=%u", remaintime);
|
|
|
|
|
remaintime = (remaintime != 0) ? (remaintime * 1024) : 10240;
|
|
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(remaintime));
|
|
|
|
|
pThis->m_isSelfTesting.store(false);
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "Camera SeltTesting is over");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -2054,25 +2057,20 @@ bool CPhoneDevice::OpenPTZSensors(uint32_t sec)
|
|
|
|
|
{
|
|
|
|
|
uint64_t wid = RequestWakelock(0);
|
|
|
|
|
unsigned long long time_now = GetMicroTimeStamp();
|
|
|
|
|
{
|
|
|
|
|
std::lock_guard<std::mutex> lock(m_cameraLocker);
|
|
|
|
|
if(time_now < localDelayTime-1000)
|
|
|
|
|
{
|
|
|
|
|
m_sensorsStatus = true;
|
|
|
|
|
m_cameraStatus = true;
|
|
|
|
|
OpenSensors(MAIN_POWER_OPEN);
|
|
|
|
|
OpenSensors(CAMERA_SENSOR_OPEN);
|
|
|
|
|
}else if (!m_cameraStatus && !m_sensorsStatus)
|
|
|
|
|
{
|
|
|
|
|
m_sensorsStatus = true;
|
|
|
|
|
OpenSensors(MAIN_POWER_OPEN);
|
|
|
|
|
OpenSensors(CAMERA_SENSOR_OPEN);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
OpenSensors(MAIN_POWER_OPEN);
|
|
|
|
|
OpenSensors(CAMERA_SENSOR_OPEN);
|
|
|
|
|
|
|
|
|
|
if (m_isSelfTesting.load() || (GpioControl::GetCamerastatus() && GpioControl::GetSelftestStatus(sec)))
|
|
|
|
|
{
|
|
|
|
|
ReleaseWakelock(wid);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(m_sensorsStatus && !m_cameraStatus)
|
|
|
|
|
|
|
|
|
|
if(GpioControl::GetCamerastatus() && !GpioControl::GetSelftestStatus(sec))
|
|
|
|
|
{
|
|
|
|
|
m_isSelfTesting.store(true);
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "Camera is SeltTesting, selfTestingtime=%u", sec);
|
|
|
|
|
auto start = std::chrono::steady_clock::now();
|
|
|
|
|
while (std::chrono::steady_clock::now() - start < std::chrono::seconds(sec))
|
|
|
|
@ -2081,62 +2079,45 @@ bool CPhoneDevice::OpenPTZSensors(uint32_t sec)
|
|
|
|
|
{
|
|
|
|
|
CloseSensors(CAMERA_SENSOR_OPEN, 0);
|
|
|
|
|
CloseSensors(MAIN_POWER_OPEN, 0);
|
|
|
|
|
m_cameraStatus = false;
|
|
|
|
|
m_sensorsStatus = false;
|
|
|
|
|
m_shouldStopWaiting.store(false);
|
|
|
|
|
m_isSelfTesting.store(false);
|
|
|
|
|
ReleaseWakelock(wid);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(200));
|
|
|
|
|
}
|
|
|
|
|
m_isSelfTesting.store(false);
|
|
|
|
|
m_shouldStopWaiting.store(false);
|
|
|
|
|
unsigned long long time_over = GetMicroTimeStamp();
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "Camera SeltTesting is over, selfTestingtime=%u", (time_over - time_now)/1000);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// if(m_sensorsStatus && !m_cameraStatus)
|
|
|
|
|
// std::this_thread::sleep_for(std::chrono::seconds(sec));
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
std::lock_guard<std::mutex> lock(m_cameraLocker);
|
|
|
|
|
// std::unique_lock<std::mutex> lock(m_cameraLocker);
|
|
|
|
|
if (!m_cameraStatus && m_sensorsStatus)
|
|
|
|
|
{
|
|
|
|
|
m_cameraStatus = true;
|
|
|
|
|
unsigned long long time_over = GetMicroTimeStamp();
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "Camera SeltTesting is over, selfTestingtime=%u", (time_over - time_now)/1000);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ReleaseWakelock(wid);
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
return m_cameraStatus;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CPhoneDevice::ClosePTZSensors(uint32_t delayedCloseTime)
|
|
|
|
|
{
|
|
|
|
|
localDelayTime = GetMicroTimeStamp() + delayedCloseTime*1000;
|
|
|
|
|
|
|
|
|
|
if(m_sensorsStatus && !m_cameraStatus)
|
|
|
|
|
if(m_isSelfTesting.load())
|
|
|
|
|
{
|
|
|
|
|
localDelayTime = GetMicroTimeStamp();
|
|
|
|
|
m_shouldStopWaiting.store(true);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
}else
|
|
|
|
|
{
|
|
|
|
|
std::lock_guard<std::mutex> lock(m_cameraLocker);
|
|
|
|
|
// std::unique_lock<std::mutex> lock(m_cameraLocker);
|
|
|
|
|
CloseSensors(CAMERA_SENSOR_OPEN, delayedCloseTime);
|
|
|
|
|
CloseSensors(MAIN_POWER_OPEN, delayedCloseTime);
|
|
|
|
|
m_cameraStatus = false;
|
|
|
|
|
m_sensorsStatus = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CPhoneDevice::GetPTZSensorsStatus()
|
|
|
|
|
bool CPhoneDevice::GetPTZSensorsStatus(time_t waittime)
|
|
|
|
|
{
|
|
|
|
|
return m_sensorsStatus;
|
|
|
|
|
return GpioControl::GetSelftestStatus(waittime);
|
|
|
|
|
}
|
|
|
|
|
bool CPhoneDevice::GetCameraStatus()
|
|
|
|
|
{
|
|
|
|
|
return m_cameraStatus;
|
|
|
|
|
return GpioControl::GetCamerastatus();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CPhoneDevice::CloseCamera()
|
|
|
|
@ -3959,7 +3940,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) && GpioControl::GetCamerastatus()) {
|
|
|
|
|
if(GpioControl::GetSelftestStatus(waitTime) && GpioControl::GetCamerastatus()) {
|
|
|
|
|
CPhoneDevice *pThis = this;
|
|
|
|
|
string serfileStr(serfile);
|
|
|
|
|
std::thread ctrlThread([pThis, waitTime, delayTime, cmdidx, channel, preset, serfileStr, baud,
|
|
|
|
|