|
|
|
@ -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<IDevice::RECOG_OBJECT> 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<std::mutex> lock(m_cameraLocker);
|
|
|
|
|
m_sensorsStatus = true;
|
|
|
|
|
m_cameraStatus = true;
|
|
|
|
|
OpenSensors(MAIN_POWER_OPEN);
|
|
|
|
|
OpenSensors(CAMERA_SENSOR_OPEN);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
std::lock_guard<std::mutex> lock(m_cameraLocker);
|
|
|
|
|
// std::unique_lock<std::mutex> lock(m_cameraLocker);
|
|
|
|
|
if(time_now < localDelayTime-1000)
|
|
|
|
|
{
|
|
|
|
|
std::lock_guard<std::mutex> 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;
|
|
|
|
|