Unverified Commit ca2a9db5 authored by Gus Grubba's avatar Gus Grubba Committed by GitHub

Merge pull request #7964 from olliw42/pr-batterystatus

CameraManager: Add support for BATTERY_STATUS
parents 901e895d 598d1464
...@@ -263,6 +263,16 @@ QGCCameraControl::storageFreeStr() ...@@ -263,6 +263,16 @@ QGCCameraControl::storageFreeStr()
return QGCMapEngine::storageFreeSizeToString(static_cast<quint64>(_storageFree)); return QGCMapEngine::storageFreeSizeToString(static_cast<quint64>(_storageFree));
} }
//-----------------------------------------------------------------------------
QString
QGCCameraControl::batteryRemainingStr()
{
if(_batteryRemaining >= 0) {
return QGCMapEngine::numberToString(static_cast<quint64>(_batteryRemaining)) + " %";
}
return "";
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void void
QGCCameraControl::setCameraMode(CameraMode mode) QGCCameraControl::setCameraMode(CameraMode mode)
...@@ -1490,6 +1500,17 @@ QGCCameraControl::handleStorageInfo(const mavlink_storage_information_t& st) ...@@ -1490,6 +1500,17 @@ QGCCameraControl::handleStorageInfo(const mavlink_storage_information_t& st)
} }
} }
//-----------------------------------------------------------------------------
void
QGCCameraControl::handleBatteryStatus(const mavlink_battery_status_t& bs)
{
qCDebug(CameraControlLog) << "handleBatteryStatus:" << bs.battery_remaining;
if(bs.battery_remaining >= 0 && _batteryRemaining != static_cast<int>(bs.battery_remaining)) {
_batteryRemaining = static_cast<int>(bs.battery_remaining);
emit batteryRemainingChanged();
}
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void void
QGCCameraControl::handleCaptureStatus(const mavlink_camera_capture_status_t& cap) QGCCameraControl::handleCaptureStatus(const mavlink_camera_capture_status_t& cap)
......
...@@ -155,6 +155,8 @@ public: ...@@ -155,6 +155,8 @@ public:
Q_PROPERTY(quint32 storageFree READ storageFree NOTIFY storageFreeChanged) Q_PROPERTY(quint32 storageFree READ storageFree NOTIFY storageFreeChanged)
Q_PROPERTY(QString storageFreeStr READ storageFreeStr NOTIFY storageFreeChanged) Q_PROPERTY(QString storageFreeStr READ storageFreeStr NOTIFY storageFreeChanged)
Q_PROPERTY(quint32 storageTotal READ storageTotal NOTIFY storageTotalChanged) Q_PROPERTY(quint32 storageTotal READ storageTotal NOTIFY storageTotalChanged)
Q_PROPERTY(int batteryRemaining READ batteryRemaining NOTIFY batteryRemainingChanged)
Q_PROPERTY(QString batteryRemainingStr READ batteryRemainingStr NOTIFY batteryRemainingChanged)
Q_PROPERTY(bool paramComplete READ paramComplete NOTIFY parametersReady) Q_PROPERTY(bool paramComplete READ paramComplete NOTIFY parametersReady)
Q_PROPERTY(qreal zoomLevel READ zoomLevel WRITE setZoomLevel NOTIFY zoomLevelChanged) Q_PROPERTY(qreal zoomLevel READ zoomLevel WRITE setZoomLevel NOTIFY zoomLevelChanged)
...@@ -232,6 +234,8 @@ public: ...@@ -232,6 +234,8 @@ public:
virtual quint32 storageFree () { return _storageFree; } virtual quint32 storageFree () { return _storageFree; }
virtual QString storageFreeStr (); virtual QString storageFreeStr ();
virtual quint32 storageTotal () { return _storageTotal; } virtual quint32 storageTotal () { return _storageTotal; }
virtual int batteryRemaining () { return _batteryRemaining; }
virtual QString batteryRemainingStr ();
virtual bool paramComplete () { return _paramComplete; } virtual bool paramComplete () { return _paramComplete; }
virtual qreal zoomLevel () { return _zoomLevel; } virtual qreal zoomLevel () { return _zoomLevel; }
virtual qreal focusLevel () { return _focusLevel; } virtual qreal focusLevel () { return _focusLevel; }
...@@ -273,6 +277,7 @@ public: ...@@ -273,6 +277,7 @@ public:
virtual void handleParamAck (const mavlink_param_ext_ack_t& ack); virtual void handleParamAck (const mavlink_param_ext_ack_t& ack);
virtual void handleParamValue (const mavlink_param_ext_value_t& value); virtual void handleParamValue (const mavlink_param_ext_value_t& value);
virtual void handleStorageInfo (const mavlink_storage_information_t& st); virtual void handleStorageInfo (const mavlink_storage_information_t& st);
virtual void handleBatteryStatus (const mavlink_battery_status_t& bs);
virtual void handleVideoInfo (const mavlink_video_stream_information_t *vi); virtual void handleVideoInfo (const mavlink_video_stream_information_t *vi);
virtual void handleVideoStatus (const mavlink_video_stream_status_t *vs); virtual void handleVideoStatus (const mavlink_video_stream_status_t *vs);
...@@ -303,6 +308,7 @@ signals: ...@@ -303,6 +308,7 @@ signals:
void activeSettingsChanged (); void activeSettingsChanged ();
void storageFreeChanged (); void storageFreeChanged ();
void storageTotalChanged (); void storageTotalChanged ();
void batteryRemainingChanged ();
void dataReady (QByteArray data); void dataReady (QByteArray data);
void parametersReady (); void parametersReady ();
void zoomLevelChanged (); void zoomLevelChanged ();
...@@ -373,6 +379,7 @@ protected: ...@@ -373,6 +379,7 @@ protected:
qreal _focusLevel = 0.0; qreal _focusLevel = 0.0;
uint32_t _storageFree = 0; uint32_t _storageFree = 0;
uint32_t _storageTotal = 0; uint32_t _storageTotal = 0;
int _batteryRemaining = -1;
QNetworkAccessManager* _netManager = nullptr; QNetworkAccessManager* _netManager = nullptr;
QString _modelName; QString _modelName;
QString _vendor; QString _vendor;
......
...@@ -97,6 +97,9 @@ QGCCameraManager::_mavlinkMessageReceived(const mavlink_message_t& message) ...@@ -97,6 +97,9 @@ QGCCameraManager::_mavlinkMessageReceived(const mavlink_message_t& message)
case MAVLINK_MSG_ID_VIDEO_STREAM_STATUS: case MAVLINK_MSG_ID_VIDEO_STREAM_STATUS:
_handleVideoStreamStatus(message); _handleVideoStreamStatus(message);
break; break;
case MAVLINK_MSG_ID_BATTERY_STATUS:
_handleBatteryStatus(message);
break;
} }
} }
} }
...@@ -360,6 +363,18 @@ QGCCameraManager::_handleVideoStreamStatus(const mavlink_message_t& message) ...@@ -360,6 +363,18 @@ QGCCameraManager::_handleVideoStreamStatus(const mavlink_message_t& message)
} }
} }
//-----------------------------------------------------------------------------
void
QGCCameraManager::_handleBatteryStatus(const mavlink_message_t& message)
{
QGCCameraControl* pCamera = _findCamera(message.compid);
if(pCamera) {
mavlink_battery_status_t batteryStatus;
mavlink_msg_battery_status_decode(&message, &batteryStatus);
pCamera->handleBatteryStatus(batteryStatus);
}
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void void
QGCCameraManager::_requestCameraInfo(int compID) QGCCameraManager::_requestCameraInfo(int compID)
......
...@@ -35,7 +35,7 @@ public: ...@@ -35,7 +35,7 @@ public:
//-- Return a list of cameras provided by this vehicle //-- Return a list of cameras provided by this vehicle
virtual QmlObjectListModel* cameras () { return &_cameras; } virtual QmlObjectListModel* cameras () { return &_cameras; }
//-- Camera names to show the user (for selection) //-- Camera names to show the user (for selection)
virtual QStringList cameraLabels () { return _cameraLabels; } virtual QStringList cameraLabels () { return _cameraLabels; }
//-- Current selected camera //-- Current selected camera
virtual int currentCamera () { return _currentCamera; } virtual int currentCamera () { return _currentCamera; }
virtual QGCCameraControl* currentCameraInstance(); virtual QGCCameraControl* currentCameraInstance();
...@@ -79,6 +79,7 @@ protected: ...@@ -79,6 +79,7 @@ protected:
virtual void _handleCaptureStatus (const mavlink_message_t& message); virtual void _handleCaptureStatus (const mavlink_message_t& message);
virtual void _handleVideoStreamInfo (const mavlink_message_t& message); virtual void _handleVideoStreamInfo (const mavlink_message_t& message);
virtual void _handleVideoStreamStatus(const mavlink_message_t& message); virtual void _handleVideoStreamStatus(const mavlink_message_t& message);
virtual void _handleBatteryStatus (const mavlink_message_t& message);
protected: protected:
......
...@@ -46,6 +46,7 @@ Column { ...@@ -46,6 +46,7 @@ Column {
property bool _videoRecording: _camera && _camera.videoStatus === QGCCameraControl.VIDEO_CAPTURE_STATUS_RUNNING property bool _videoRecording: _camera && _camera.videoStatus === QGCCameraControl.VIDEO_CAPTURE_STATUS_RUNNING
property bool _photoIdle: _camera && _camera.photoStatus === QGCCameraControl.PHOTO_CAPTURE_IDLE property bool _photoIdle: _camera && _camera.photoStatus === QGCCameraControl.PHOTO_CAPTURE_IDLE
property bool _storageReady: _camera && _camera.storageStatus === QGCCameraControl.STORAGE_READY property bool _storageReady: _camera && _camera.storageStatus === QGCCameraControl.STORAGE_READY
property bool _batteryReady: _camera && _camera.batteryRemaining >= 0
property bool _storageIgnored: _camera && _camera.storageStatus === QGCCameraControl.STORAGE_NOT_SUPPORTED property bool _storageIgnored: _camera && _camera.storageStatus === QGCCameraControl.STORAGE_NOT_SUPPORTED
property bool _canShoot: !_cameraModeUndefined && !_videoRecording && _photoIdle && ((_storageReady && _camera.storageFree > 0) || _storageIgnored) property bool _canShoot: !_cameraModeUndefined && !_videoRecording && _photoIdle && ((_storageReady && _camera.storageFree > 0) || _storageIgnored)
...@@ -67,14 +68,20 @@ Column { ...@@ -67,14 +68,20 @@ Column {
id: cameraLabel id: cameraLabel
text: _camera ? _camera.modelName : qsTr("Camera") text: _camera ? _camera.modelName : qsTr("Camera")
visible: _camera visible: _camera
font.pointSize: ScreenTools.smallFontPointSize font.pointSize: ScreenTools.defaultFontPointSize
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
} }
QGCLabel { QGCLabel {
text: _camera ? qsTr("Free Space: ") + _camera.storageFreeStr : "" text: _camera ? qsTr("Free Space: ") + _camera.storageFreeStr : ""
font.pointSize: ScreenTools.smallFontPointSize font.pointSize: ScreenTools.defaultFontPointSize
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
visible: _camera && _storageReady visible: _storageReady
}
QGCLabel {
text: _camera ? qsTr("Battery: ") + _camera.batteryRemainingStr : ""
font.pointSize: ScreenTools.defaultFontPointSize
anchors.horizontalCenter: parent.horizontalCenter
visible: _batteryReady
} }
//-- Camera Mode (visible only if camera has modes) //-- Camera Mode (visible only if camera has modes)
Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.75; visible: camMode.visible; } Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.75; visible: camMode.visible; }
...@@ -179,13 +186,13 @@ Column { ...@@ -179,13 +186,13 @@ Column {
Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.75; visible: _camera; } Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.75; visible: _camera; }
QGCLabel { QGCLabel {
text: (_cameraVideoMode && _camera.videoStatus === QGCCameraControl.VIDEO_CAPTURE_STATUS_RUNNING) ? _camera.recordTimeStr : "00:00:00" text: (_cameraVideoMode && _camera.videoStatus === QGCCameraControl.VIDEO_CAPTURE_STATUS_RUNNING) ? _camera.recordTimeStr : "00:00:00"
font.pointSize: ScreenTools.smallFontPointSize font.pointSize: ScreenTools.defaultFontPointSize
visible: _cameraVideoMode visible: _cameraVideoMode
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
} }
QGCLabel { QGCLabel {
text: activeVehicle && _cameraPhotoMode ? ('00000' + activeVehicle.cameraTriggerPoints.count).slice(-5) : "00000" text: activeVehicle && _cameraPhotoMode ? ('00000' + activeVehicle.cameraTriggerPoints.count).slice(-5) : "00000"
font.pointSize: ScreenTools.smallFontPointSize font.pointSize: ScreenTools.defaultFontPointSize
visible: _cameraPhotoMode visible: _cameraPhotoMode
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
} }
......
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