Commit a9d5a133 authored by Gus Grubba's avatar Gus Grubba

Properly handle camera info request and response.

parent 72367459
...@@ -78,7 +78,7 @@ QGCCameraManager::_handleHeartbeat(const mavlink_message_t &message) ...@@ -78,7 +78,7 @@ QGCCameraManager::_handleHeartbeat(const mavlink_message_t &message)
mavlink_msg_heartbeat_decode(&message, &heartbeat); mavlink_msg_heartbeat_decode(&message, &heartbeat);
//-- If this heartbeat is from a different node within the vehicle //-- If this heartbeat is from a different node within the vehicle
if(_vehicleReadyState && _vehicle->id() == message.sysid && _vehicle->defaultComponentId() != message.compid) { if(_vehicleReadyState && _vehicle->id() == message.sysid && _vehicle->defaultComponentId() != message.compid) {
if(!_cameraInfoRequested[message.compid]) { if(!_cameraInfoRequested.contains(message.compid)) {
_cameraInfoRequested[message.compid] = true; _cameraInfoRequested[message.compid] = true;
//-- Request camera info //-- Request camera info
_requestCameraInfo(message.compid); _requestCameraInfo(message.compid);
...@@ -110,14 +110,19 @@ QGCCameraManager::_findCamera(int id) ...@@ -110,14 +110,19 @@ QGCCameraManager::_findCamera(int id)
void void
QGCCameraManager::_handleCameraInfo(const mavlink_message_t& message) QGCCameraManager::_handleCameraInfo(const mavlink_message_t& message)
{ {
mavlink_camera_information_t info; //-- Have we requested it?
mavlink_msg_camera_information_decode(&message, &info); if(_cameraInfoRequested.contains(message.compid) && _cameraInfoRequested[message.compid]) {
qCDebug(CameraManagerLog) << "_handleCameraInfo:" << (const char*)(void*)&info.model_name[0] << (const char*)(void*)&info.vendor_name[0] << "Comp ID:" << message.compid; //-- Flag it as done
QGCCameraControl* pCamera = _vehicle->firmwarePlugin()->createCameraControl(&info, _vehicle, message.compid, this); _cameraInfoRequested[message.compid] = false;
if(pCamera) { mavlink_camera_information_t info;
QQmlEngine::setObjectOwnership(pCamera, QQmlEngine::CppOwnership); mavlink_msg_camera_information_decode(&message, &info);
_cameras.append(pCamera); qCDebug(CameraManagerLog) << "_handleCameraInfo:" << (const char*)(void*)&info.model_name[0] << (const char*)(void*)&info.vendor_name[0] << "Comp ID:" << message.compid;
emit camerasChanged(); QGCCameraControl* pCamera = _vehicle->firmwarePlugin()->createCameraControl(&info, _vehicle, message.compid, this);
if(pCamera) {
QQmlEngine::setObjectOwnership(pCamera, QQmlEngine::CppOwnership);
_cameras.append(pCamera);
emit camerasChanged();
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment