Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
21d9ae69
Commit
21d9ae69
authored
Dec 22, 2018
by
Gus Grubba
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Initial work on POST settings (not done yet)
parent
58fd244a
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
157 additions
and
25 deletions
+157
-25
TaisyncManager.cc
src/Taisync/TaisyncManager.cc
+52
-4
TaisyncManager.h
src/Taisync/TaisyncManager.h
+25
-17
TaisyncSettings.cc
src/Taisync/TaisyncSettings.cc
+25
-4
TaisyncSettings.h
src/Taisync/TaisyncSettings.h
+2
-0
TaisyncSettings.qml
src/Taisync/TaisyncSettings.qml
+53
-0
No files found.
src/Taisync/TaisyncManager.cc
View file @
21d9ae69
...
@@ -13,6 +13,14 @@
...
@@ -13,6 +13,14 @@
#include "QGCApplication.h"
#include "QGCApplication.h"
#include "VideoManager.h"
#include "VideoManager.h"
static
const
char
*
kRADIO_MODE
=
"RadioMode"
;
static
const
char
*
kRadioModeValues
[]
=
{
"auto"
,
"manual"
};
static
const
char
*
kRADIO_CHANNEL
=
"RadioChannel"
;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
TaisyncManager
::
TaisyncManager
(
QGCApplication
*
app
,
QGCToolbox
*
toolbox
)
TaisyncManager
::
TaisyncManager
(
QGCApplication
*
app
,
QGCToolbox
*
toolbox
)
:
QGCTool
(
app
,
toolbox
)
:
QGCTool
(
app
,
toolbox
)
...
@@ -26,6 +34,15 @@ TaisyncManager::TaisyncManager(QGCApplication* app, QGCToolbox* toolbox)
...
@@ -26,6 +34,15 @@ TaisyncManager::TaisyncManager(QGCApplication* app, QGCToolbox* toolbox)
_rateList
.
append
(
tr
(
"High"
));
_rateList
.
append
(
tr
(
"High"
));
}
}
//-----------------------------------------------------------------------------
void
TaisyncManager
::
_radioSettingsChanged
(
QVariant
)
{
if
(
_taiSettings
)
{
_taiSettings
->
setRadioSettings
(
kRadioModeValues
[
_radioMode
->
rawValue
().
toInt
()],
_radioChannel
->
enumStringValue
());
}
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
TaisyncManager
::~
TaisyncManager
()
TaisyncManager
::~
TaisyncManager
()
{
{
...
@@ -85,6 +102,37 @@ void
...
@@ -85,6 +102,37 @@ void
TaisyncManager
::
setToolbox
(
QGCToolbox
*
toolbox
)
TaisyncManager
::
setToolbox
(
QGCToolbox
*
toolbox
)
{
{
QGCTool
::
setToolbox
(
toolbox
);
QGCTool
::
setToolbox
(
toolbox
);
{
//-- Radio Mode
FactMetaData
*
metaData
=
new
FactMetaData
(
FactMetaData
::
valueTypeUint32
,
kRADIO_MODE
,
this
);
QQmlEngine
::
setObjectOwnership
(
metaData
,
QQmlEngine
::
CppOwnership
);
metaData
->
setShortDescription
(
kRADIO_MODE
);
metaData
->
setLongDescription
(
kRADIO_MODE
);
metaData
->
setRawDefaultValue
(
QVariant
(
0
));
metaData
->
setHasControl
(
true
);
metaData
->
setReadOnly
(
false
);
metaData
->
addEnumInfo
(
tr
(
"Auto"
),
QVariant
(
0
));
metaData
->
addEnumInfo
(
tr
(
"Manual"
),
QVariant
(
1
));
_radioMode
=
new
Fact
(
"Taisync"
,
metaData
,
this
);
QQmlEngine
::
setObjectOwnership
(
_radioMode
,
QQmlEngine
::
CppOwnership
);
connect
(
_radioMode
,
&
Fact
::
rawValueChanged
,
this
,
&
TaisyncManager
::
_radioSettingsChanged
);
}
{
//-- Radio Channel
FactMetaData
*
metaData
=
new
FactMetaData
(
FactMetaData
::
valueTypeUint32
,
kRADIO_CHANNEL
,
this
);
QQmlEngine
::
setObjectOwnership
(
metaData
,
QQmlEngine
::
CppOwnership
);
metaData
->
setShortDescription
(
kRADIO_CHANNEL
);
metaData
->
setLongDescription
(
kRADIO_CHANNEL
);
metaData
->
setRawDefaultValue
(
QVariant
(
0
));
metaData
->
setHasControl
(
true
);
metaData
->
setReadOnly
(
false
);
for
(
int
i
=
0
;
i
<
13
;
i
++
)
{
metaData
->
addEnumInfo
(
QString
(
"ch%1"
).
arg
(
i
),
QVariant
(
i
));
}
_radioChannel
=
new
Fact
(
"Taisync"
,
metaData
,
this
);
QQmlEngine
::
setObjectOwnership
(
_radioChannel
,
QQmlEngine
::
CppOwnership
);
connect
(
_radioChannel
,
&
Fact
::
rawValueChanged
,
this
,
&
TaisyncManager
::
_radioSettingsChanged
);
}
_reset
();
_reset
();
}
}
...
@@ -266,7 +314,6 @@ TaisyncManager::_checkTaisync()
...
@@ -266,7 +314,6 @@ TaisyncManager::_checkTaisync()
void
void
TaisyncManager
::
_updateSettings
(
QByteArray
jSonData
)
TaisyncManager
::
_updateSettings
(
QByteArray
jSonData
)
{
{
qDebug
()
<<
jSonData
;
QJsonParseError
jsonParseError
;
QJsonParseError
jsonParseError
;
QJsonDocument
doc
=
QJsonDocument
::
fromJson
(
jSonData
,
&
jsonParseError
);
QJsonDocument
doc
=
QJsonDocument
::
fromJson
(
jSonData
,
&
jsonParseError
);
if
(
jsonParseError
.
error
!=
QJsonParseError
::
NoError
)
{
if
(
jsonParseError
.
error
!=
QJsonParseError
::
NoError
)
{
...
@@ -301,9 +348,10 @@ TaisyncManager::_updateSettings(QByteArray jSonData)
...
@@ -301,9 +348,10 @@ TaisyncManager::_updateSettings(QByteArray jSonData)
}
}
//-- Radio Settings?
//-- Radio Settings?
}
else
if
(
jSonData
.
contains
(
"
\"
freq
\"
:"
))
{
}
else
if
(
jSonData
.
contains
(
"
\"
freq
\"
:"
))
{
// {\"mode\":\"auto\",\"freq\":\"ch12\"}
QString
mode
=
jObj
[
"mode"
].
toString
(
_radioMode
->
enumStringValue
());
QString
channel
=
jObj
[
"freq"
].
toString
(
_radioChannel
->
enumStringValue
());
_radioMode
->
_containerSetRawValue
(
mode
);
_radioChannel
->
_containerSetRawValue
(
channel
);
//-- Video Settings?
//-- Video Settings?
}
else
if
(
jSonData
.
contains
(
"
\"
maxbitrate
\"
:"
))
{
}
else
if
(
jSonData
.
contains
(
"
\"
maxbitrate
\"
:"
))
{
//{\"decode\":\"phone\",\"mode\":\"h264\",\"maxbitrate\":\"high\"}
//{\"decode\":\"phone\",\"mode\":\"h264\",\"maxbitrate\":\"high\"}
...
...
src/Taisync/TaisyncManager.h
View file @
21d9ae69
...
@@ -12,6 +12,7 @@
...
@@ -12,6 +12,7 @@
#include "QGCToolbox.h"
#include "QGCToolbox.h"
#include "QGCLoggingCategory.h"
#include "QGCLoggingCategory.h"
#include "TaisyncSettings.h"
#include "TaisyncSettings.h"
#include "Fact.h"
#if defined(__ios__) || defined(__android__)
#if defined(__ios__) || defined(__android__)
#include "TaisyncTelemetry.h"
#include "TaisyncTelemetry.h"
#include "TaisyncVideoReceiver.h"
#include "TaisyncVideoReceiver.h"
...
@@ -39,6 +40,8 @@ public:
...
@@ -39,6 +40,8 @@ public:
Q_PROPERTY
(
int
decodeIndex
READ
decodeIndex
WRITE
setDecodeIndex
NOTIFY
decodeIndexChanged
)
Q_PROPERTY
(
int
decodeIndex
READ
decodeIndex
WRITE
setDecodeIndex
NOTIFY
decodeIndexChanged
)
Q_PROPERTY
(
QStringList
rateList
READ
rateList
NOTIFY
rateIndexChanged
)
Q_PROPERTY
(
QStringList
rateList
READ
rateList
NOTIFY
rateIndexChanged
)
Q_PROPERTY
(
int
rateIndex
READ
rateIndex
WRITE
setRateIndex
NOTIFY
rateIndexChanged
)
Q_PROPERTY
(
int
rateIndex
READ
rateIndex
WRITE
setRateIndex
NOTIFY
rateIndexChanged
)
Q_PROPERTY
(
Fact
*
radioMode
READ
radioMode
CONSTANT
)
Q_PROPERTY
(
Fact
*
radioChannel
READ
radioChannel
CONSTANT
)
explicit
TaisyncManager
(
QGCApplication
*
app
,
QGCToolbox
*
toolbox
);
explicit
TaisyncManager
(
QGCApplication
*
app
,
QGCToolbox
*
toolbox
);
~
TaisyncManager
()
override
;
~
TaisyncManager
()
override
;
...
@@ -58,6 +61,8 @@ public:
...
@@ -58,6 +61,8 @@ public:
QStringList
rateList
()
{
return
_rateList
;
}
QStringList
rateList
()
{
return
_rateList
;
}
int
rateIndex
()
{
return
_rateIndex
;
}
int
rateIndex
()
{
return
_rateIndex
;
}
void
setRateIndex
(
int
idx
);
void
setRateIndex
(
int
idx
);
Fact
*
radioMode
()
{
return
_radioMode
;
}
Fact
*
radioChannel
()
{
return
_radioChannel
;
}
signals:
signals:
void
linkChanged
();
void
linkChanged
();
...
@@ -74,6 +79,7 @@ private slots:
...
@@ -74,6 +79,7 @@ private slots:
void
_updateSettings
(
QByteArray
jSonData
);
void
_updateSettings
(
QByteArray
jSonData
);
void
_setEnabled
();
void
_setEnabled
();
void
_setVideoEnabled
();
void
_setVideoEnabled
();
void
_radioSettingsChanged
(
QVariant
);
#if defined(__ios__) || defined(__android__)
#if defined(__ios__) || defined(__android__)
void
_readUDPBytes
();
void
_readUDPBytes
();
void
_readTelemBytes
(
QByteArray
bytesIn
);
void
_readTelemBytes
(
QByteArray
bytesIn
);
...
@@ -122,4 +128,6 @@ private:
...
@@ -122,4 +128,6 @@ private:
QVariant
_savedAR
;
QVariant
_savedAR
;
QString
_serialNumber
;
QString
_serialNumber
;
QString
_fwVersion
;
QString
_fwVersion
;
Fact
*
_radioMode
=
nullptr
;
Fact
*
_radioChannel
=
nullptr
;
};
};
src/Taisync/TaisyncSettings.cc
View file @
21d9ae69
...
@@ -13,15 +13,14 @@
...
@@ -13,15 +13,14 @@
#include "QGCApplication.h"
#include "QGCApplication.h"
#include "VideoManager.h"
#include "VideoManager.h"
/*
static
const
char
*
kPostReq
=
static
const
char
*
kPostReq
=
"POST %1 HTTP/1.1
\r\n
"
"POST %1 HTTP/1.1
\r\n
"
"Content-Type: application/json
\r\n
"
"Content-Type: application/json
\r\n
"
"Content-Length: %2
\r\n\r\n
"
"Content-Length: %2
\r\n\r\n
"
"%3"
;
"%3"
;
*/
static
const
char
*
kGetReq
=
"GET %1 HTTP/1.1
\r\n\r\n
"
;
static
const
char
*
kGetReq
=
"GET %1 HTTP/1.1
\r\n\r\n
"
;
static
const
char
*
kRadioURI
=
"/v1/radio.json"
;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
TaisyncSettings
::
TaisyncSettings
(
QObject
*
parent
)
TaisyncSettings
::
TaisyncSettings
(
QObject
*
parent
)
...
@@ -72,7 +71,7 @@ TaisyncSettings::requestVideoSettings()
...
@@ -72,7 +71,7 @@ TaisyncSettings::requestVideoSettings()
bool
bool
TaisyncSettings
::
requestRadioSettings
()
TaisyncSettings
::
requestRadioSettings
()
{
{
return
_request
(
"/v1/radio.json"
);
return
_request
(
kRadioURI
);
}
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
...
@@ -88,6 +87,28 @@ TaisyncSettings::_request(const QString& request)
...
@@ -88,6 +87,28 @@ TaisyncSettings::_request(const QString& request)
return
false
;
return
false
;
}
}
//-----------------------------------------------------------------------------
bool
TaisyncSettings
::
_post
(
const
QString
&
post
,
const
QString
&
postPayload
)
{
if
(
_tcpSocket
)
{
QString
req
=
QString
(
kPostReq
).
arg
(
post
).
arg
(
postPayload
.
size
()).
arg
(
postPayload
);
qCDebug
(
TaisyncVerbose
)
<<
"Request"
<<
req
;
_tcpSocket
->
write
(
req
.
toUtf8
());
return
true
;
}
return
false
;
}
//-----------------------------------------------------------------------------
bool
TaisyncSettings
::
setRadioSettings
(
const
QString
&
mode
,
const
QString
&
channel
)
{
static
const
char
*
kRadioPost
=
"{
\"
mode
\"
:
\"
%1
\"
,
\"
freq
\"
:
\"
%2
\"
}"
;
QString
post
=
QString
(
kRadioPost
).
arg
(
mode
.
size
()).
arg
(
channel
);
return
_post
(
kRadioURI
,
post
);
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void
void
TaisyncSettings
::
_readBytes
()
TaisyncSettings
::
_readBytes
()
...
...
src/Taisync/TaisyncSettings.h
View file @
21d9ae69
...
@@ -22,6 +22,7 @@ public:
...
@@ -22,6 +22,7 @@ public:
bool
requestFreqScan
();
bool
requestFreqScan
();
bool
requestVideoSettings
();
bool
requestVideoSettings
();
bool
requestRadioSettings
();
bool
requestRadioSettings
();
bool
setRadioSettings
(
const
QString
&
mode
,
const
QString
&
channel
);
signals:
signals:
void
updateSettings
(
QByteArray
jSonData
);
void
updateSettings
(
QByteArray
jSonData
);
...
@@ -31,4 +32,5 @@ protected slots:
...
@@ -31,4 +32,5 @@ protected slots:
private:
private:
bool
_request
(
const
QString
&
request
);
bool
_request
(
const
QString
&
request
);
bool
_post
(
const
QString
&
post
,
const
QString
&
postPayload
);
};
};
src/Taisync/TaisyncSettings.qml
View file @
21d9ae69
...
@@ -207,6 +207,59 @@ QGCView {
...
@@ -207,6 +207,59 @@ QGCView {
}
}
}
}
}
}
//-----------------------------------------------------------------
//-- Radio Settings
Item
{
width
:
_panelWidth
height
:
radioSettingsLabel
.
height
anchors.margins
:
ScreenTools
.
defaultFontPixelWidth
anchors.horizontalCenter
:
parent
.
horizontalCenter
visible
:
_taisyncEnabled
QGCLabel
{
id
:
radioSettingsLabel
text
:
qsTr
(
"
Radio Settings
"
)
font.family
:
ScreenTools
.
demiboldFontFamily
}
}
Rectangle
{
height
:
radioSettingsCol
.
height
+
(
ScreenTools
.
defaultFontPixelHeight
*
2
)
width
:
_panelWidth
color
:
qgcPal
.
windowShade
visible
:
_taisyncEnabled
anchors.margins
:
ScreenTools
.
defaultFontPixelWidth
anchors.horizontalCenter
:
parent
.
horizontalCenter
Column
{
id
:
radioSettingsCol
spacing
:
ScreenTools
.
defaultFontPixelHeight
*
0.5
width
:
parent
.
width
anchors.centerIn
:
parent
GridLayout
{
anchors.margins
:
ScreenTools
.
defaultFontPixelHeight
columnSpacing
:
ScreenTools
.
defaultFontPixelWidth
*
2
anchors.horizontalCenter
:
parent
.
horizontalCenter
columns
:
2
QGCLabel
{
text
:
qsTr
(
"
Radio Mode:
"
)
Layout.minimumWidth
:
_labelWidth
}
FactComboBox
{
fact
:
QGroundControl
.
taisyncManager
.
radioMode
indexModel
:
true
enabled
:
QGroundControl
.
taisyncManager
.
linkConnected
Layout.minimumWidth
:
_valueWidth
}
QGCLabel
{
text
:
qsTr
(
"
Radio Frequency:
"
)
}
FactComboBox
{
fact
:
QGroundControl
.
taisyncManager
.
radioChannel
indexModel
:
true
enabled
:
QGroundControl
.
taisyncManager
.
linkConnected
&&
QGroundControl
.
taisyncManager
.
radioMode
.
rawValue
>
0
Layout.minimumWidth
:
_valueWidth
}
}
}
}
}
}
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment