Skip to content

Commit 2dff81f

Browse files
committed
feat(gpio): Enhance camera startup by checking availability and triggering wake-up if necessary
1 parent e205ac1 commit 2dff81f

1 file changed

Lines changed: 24 additions & 3 deletions

File tree

src/gphotocamera.cpp

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,30 @@ void GPhotoCameraWorker::triggerCameraWakeup() {
140140
}
141141

142142
void GPhotoCameraWorker::startCamera(const QString &cameraName) {
143-
// Trigger camera wake-up GPIO before starting camera
144-
triggerCameraWakeup();
145-
143+
auto isCameraAvailable = [this](const QString &fullName) {
144+
if (fullName.isEmpty()) {
145+
return false;
146+
}
147+
const auto cameras = availableCameras();
148+
for (const auto &entryVar : cameras) {
149+
const auto entry = entryVar.toMap();
150+
if (entry.value("value").toString() == fullName) {
151+
return true;
152+
}
153+
}
154+
return false;
155+
};
156+
157+
// camera may be in stand by. If not found, trigger wake-up and try again after a short delay
158+
if (!isCameraAvailable(cameraName)) {
159+
triggerCameraWakeup();
160+
std::this_thread::sleep_for(std::chrono::milliseconds(200));
161+
if (!isCameraAvailable(cameraName)) {
162+
emit errorOccurred(tr("Camera %1 not found").arg(cameraName));
163+
return;
164+
}
165+
}
166+
146167
if (mCameraStarted) {
147168
stopCamera();
148169
}

0 commit comments

Comments
 (0)