diff --git a/app/src/main/cpp/GPIOControl.cpp b/app/src/main/cpp/GPIOControl.cpp index 134f7ace..1a85feb6 100644 --- a/app/src/main/cpp/GPIOControl.cpp +++ b/app/src/main/cpp/GPIOControl.cpp @@ -356,9 +356,9 @@ bool GpioControl::GetSelftestStatus(time_t wait_time) std::vector::iterator it; for (it = m_items.begin(); it != m_items.end(); ++it) { - if (it->cmd == cmd && (now - it->openTime >= wait_time)) + if (it->cmd == cmd && it->openTime!=0 && (now - it->openTime >= wait_time)) { - return true; + return true;//自检完成 } } return false; diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 942f0d1a..7faf19f0 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1900,11 +1900,20 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< std::thread t([localPhotoInfo, param, pThis, path, osds, wid_serial, powerCtrlPtr]() mutable { + 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)); + XYLOG(XYLOG_SEVERITY_INFO, "Camera SeltTesting is over"); + } + 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)); + 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);