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
1f9fede7
Unverified
Commit
1f9fede7
authored
Jul 22, 2019
by
Gus Grubba
Committed by
GitHub
Jul 22, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #7601 from MatejFranceskin/pr-microhard-improvements
Microhard improvements
parents
146adfa5
30c9678b
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
88 additions
and
52 deletions
+88
-52
MicrohardHandler.cc
src/Microhard/MicrohardHandler.cc
+1
-2
MicrohardHandler.h
src/Microhard/MicrohardHandler.h
+1
-2
MicrohardManager.cc
src/Microhard/MicrohardManager.cc
+17
-13
MicrohardManager.h
src/Microhard/MicrohardManager.h
+28
-24
MicrohardSettings.cc
src/Microhard/MicrohardSettings.cc
+9
-5
MicrohardSettings.qml
src/Microhard/MicrohardSettings.qml
+32
-6
No files found.
src/Microhard/MicrohardHandler.cc
View file @
1f9fede7
...
...
@@ -13,7 +13,6 @@
#include "VideoManager.h"
QGC_LOGGING_CATEGORY
(
MicrohardLog
,
"MicrohardLog"
)
QGC_LOGGING_CATEGORY
(
MicrohardVerbose
,
"MicrohardVerbose"
)
//-----------------------------------------------------------------------------
MicrohardHandler
::
MicrohardHandler
(
QObject
*
parent
)
...
...
@@ -53,10 +52,10 @@ MicrohardHandler::_start(uint16_t port, QHostAddress addr)
qCDebug
(
MicrohardLog
)
<<
"Connecting to"
<<
addr
;
_tcpSocket
->
connectToHost
(
addr
,
port
);
if
(
!
_tcpSocket
->
waitForConnected
(
1000
))
{
emit
connected
(
0
);
close
();
return
false
;
}
emit
connected
();
return
true
;
}
src/Microhard/MicrohardHandler.h
View file @
1f9fede7
...
...
@@ -17,7 +17,6 @@
#define MICROHARD_SETTINGS_PORT 23
Q_DECLARE_LOGGING_CATEGORY
(
MicrohardLog
)
Q_DECLARE_LOGGING_CATEGORY
(
MicrohardVerbose
)
class
MicrohardHandler
:
public
QObject
{
...
...
@@ -36,7 +35,7 @@ protected slots:
virtual
void
_readBytes
()
=
0
;
signals:
void
connected
();
void
connected
(
int
status
);
void
rssiUpdated
(
int
rssi
);
protected:
...
...
src/Microhard/MicrohardManager.cc
View file @
1f9fede7
...
...
@@ -22,6 +22,7 @@ static const char *kMICROHARD_GROUP = "Microhard";
static
const
char
*
kLOCAL_IP
=
"LocalIP"
;
static
const
char
*
kREMOTE_IP
=
"RemoteIP"
;
static
const
char
*
kNET_MASK
=
"NetMask"
;
static
const
char
*
kCFG_USERNAME
=
"ConfigUserName"
;
static
const
char
*
kCFG_PASSWORD
=
"ConfigPassword"
;
static
const
char
*
kENC_KEY
=
"EncryptionKey"
;
...
...
@@ -38,6 +39,7 @@ MicrohardManager::MicrohardManager(QGCApplication* app, QGCToolbox* toolbox)
_localIPAddr
=
settings
.
value
(
kLOCAL_IP
,
QString
(
"192.168.168.1"
)).
toString
();
_remoteIPAddr
=
settings
.
value
(
kREMOTE_IP
,
QString
(
"192.168.168.2"
)).
toString
();
_netMask
=
settings
.
value
(
kNET_MASK
,
QString
(
"255.255.255.0"
)).
toString
();
_configUserName
=
settings
.
value
(
kCFG_USERNAME
,
QString
(
"admin"
)).
toString
();
_configPassword
=
settings
.
value
(
kCFG_PASSWORD
,
QString
(
"admin"
)).
toString
();
_encryptionKey
=
settings
.
value
(
kENC_KEY
,
QString
(
"1234567890"
)).
toString
();
settings
.
endGroup
();
...
...
@@ -73,9 +75,9 @@ void
MicrohardManager
::
_reset
()
{
_close
();
_
isConnected
=
false
;
_
connectedStatus
=
0
;
emit
connectedChanged
();
_linkConnected
=
false
;
_linkConnected
Status
=
0
;
emit
linkConnectedChanged
();
if
(
!
_appSettings
)
{
_appSettings
=
_toolbox
->
settingsManager
()
->
appSettings
();
...
...
@@ -114,10 +116,10 @@ MicrohardManager::setToolbox(QGCToolbox* toolbox)
//-----------------------------------------------------------------------------
bool
MicrohardManager
::
setIPSettings
(
QString
localIP_
,
QString
remoteIP_
,
QString
netMask_
,
QString
cfgPassword_
,
QString
encryptionKey_
)
MicrohardManager
::
setIPSettings
(
QString
localIP_
,
QString
remoteIP_
,
QString
netMask_
,
QString
cfg
UserName_
,
QString
cfg
Password_
,
QString
encryptionKey_
)
{
if
(
_localIPAddr
!=
localIP_
||
_remoteIPAddr
!=
remoteIP_
||
_netMask
!=
netMask_
||
_configPassword
!=
cfgPassword_
||
_encryptionKey
!=
encryptionKey_
)
_config
UserName
!=
cfgUserName_
||
_config
Password
!=
cfgPassword_
||
_encryptionKey
!=
encryptionKey_
)
{
if
(
_mhSettingsLoc
&&
_encryptionKey
!=
encryptionKey_
)
{
_mhSettingsLoc
->
setEncryptionKey
(
encryptionKey_
);
...
...
@@ -126,6 +128,7 @@ MicrohardManager::setIPSettings(QString localIP_, QString remoteIP_, QString net
_localIPAddr
=
localIP_
;
_remoteIPAddr
=
remoteIP_
;
_netMask
=
netMask_
;
_configUserName
=
cfgUserName_
;
_configPassword
=
cfgPassword_
;
_encryptionKey
=
encryptionKey_
;
...
...
@@ -134,6 +137,7 @@ MicrohardManager::setIPSettings(QString localIP_, QString remoteIP_, QString net
settings
.
setValue
(
kLOCAL_IP
,
localIP_
);
settings
.
setValue
(
kREMOTE_IP
,
remoteIP_
);
settings
.
setValue
(
kNET_MASK
,
netMask_
);
settings
.
setValue
(
kCFG_USERNAME
,
cfgUserName_
);
settings
.
setValue
(
kCFG_PASSWORD
,
cfgPassword_
);
settings
.
setValue
(
kENC_KEY
,
encryptionKey_
);
settings
.
endGroup
();
...
...
@@ -172,20 +176,20 @@ MicrohardManager::_setEnabled()
//-----------------------------------------------------------------------------
void
MicrohardManager
::
_connectedLoc
()
MicrohardManager
::
_connectedLoc
(
int
status
)
{
qCDebug
(
MicrohardLog
)
<<
"GND Microhard Settings Connected"
;
_
isConnected
=
true
;
_
connectedStatus
=
status
;
_locTimer
.
start
(
LONG_TIMEOUT
);
emit
connectedChanged
();
}
//-----------------------------------------------------------------------------
void
MicrohardManager
::
_connectedRem
()
MicrohardManager
::
_connectedRem
(
int
status
)
{
qCDebug
(
MicrohardLog
)
<<
"AIR Microhard Settings Connected"
;
_linkConnected
=
true
;
_linkConnected
Status
=
status
;
_remTimer
.
start
(
LONG_TIMEOUT
);
emit
linkConnectedChanged
();
}
...
...
@@ -217,7 +221,7 @@ void
MicrohardManager
::
_locTimeout
()
{
_locTimer
.
stop
();
_
isConnected
=
false
;
_
connectedStatus
=
0
;
if
(
_mhSettingsLoc
)
{
_mhSettingsLoc
->
close
();
_mhSettingsLoc
->
deleteLater
();
...
...
@@ -231,7 +235,7 @@ void
MicrohardManager
::
_remTimeout
()
{
_remTimer
.
stop
();
_linkConnected
=
false
;
_linkConnected
Status
=
0
;
if
(
_mhSettingsRem
)
{
_mhSettingsRem
->
close
();
_mhSettingsRem
->
deleteLater
();
...
...
@@ -250,16 +254,16 @@ MicrohardManager::_checkMicrohard()
return
;
}
if
(
!
_isConnected
)
{
if
(
_connectedStatus
<=
0
)
{
_mhSettingsLoc
->
start
();
}
else
{
_mhSettingsLoc
->
getStatus
();
}
if
(
!
_linkConnected
)
{
if
(
_linkConnectedStatus
<=
0
)
{
_mhSettingsRem
->
start
();
}
else
{
_mhSettingsRem
->
getStatus
();
}
}
_workTimer
.
start
(
_
isConnected
?
SHORT_TIMEOUT
:
LONG_TIMEOUT
);
_workTimer
.
start
(
_
connectedStatus
>
0
?
SHORT_TIMEOUT
:
LONG_TIMEOUT
);
}
src/Microhard/MicrohardManager.h
View file @
1f9fede7
...
...
@@ -26,30 +26,32 @@ class MicrohardManager : public QGCTool
Q_OBJECT
public:
Q_PROPERTY
(
bool
connected
READ
connected
NOTIFY
connectedChanged
)
Q_PROPERTY
(
bool
linkConnected
READ
linkConnected
NOTIFY
linkConnectedChanged
)
Q_PROPERTY
(
int
connected
READ
connected
NOTIFY
connectedChanged
)
Q_PROPERTY
(
int
linkConnected
READ
linkConnected
NOTIFY
linkConnectedChanged
)
Q_PROPERTY
(
int
uplinkRSSI
READ
uplinkRSSI
NOTIFY
linkChanged
)
Q_PROPERTY
(
int
downlinkRSSI
READ
downlinkRSSI
NOTIFY
linkChanged
)
Q_PROPERTY
(
QString
localIPAddr
READ
localIPAddr
NOTIFY
localIPAddrChanged
)
Q_PROPERTY
(
QString
remoteIPAddr
READ
remoteIPAddr
NOTIFY
remoteIPAddrChanged
)
Q_PROPERTY
(
QString
netMask
READ
netMask
NOTIFY
netMaskChanged
)
Q_PROPERTY
(
QString
configUserName
READ
configUserName
NOTIFY
configUserNameChanged
)
Q_PROPERTY
(
QString
configPassword
READ
configPassword
NOTIFY
configPasswordChanged
)
Q_PROPERTY
(
QString
encryptionKey
READ
encryptionKey
NOTIFY
encryptionKeyChanged
)
Q_INVOKABLE
bool
setIPSettings
(
QString
localIP
,
QString
remoteIP
,
QString
netMask
,
QString
cfgPassword
,
QString
encyrptionKey
);
Q_INVOKABLE
bool
setIPSettings
(
QString
localIP
,
QString
remoteIP
,
QString
netMask
,
QString
cfg
UserName
,
QString
cfg
Password
,
QString
encyrptionKey
);
explicit
MicrohardManager
(
QGCApplication
*
app
,
QGCToolbox
*
toolbox
);
~
MicrohardManager
()
override
;
void
setToolbox
(
QGCToolbox
*
toolbox
)
override
;
bool
connected
()
{
return
_isConnected
&&
_mhSettingsLoc
&&
_mhSettingsLoc
->
loggedIn
()
;
}
bool
linkConnected
()
{
return
_linkConnected
&&
_mhSettingsRem
&&
_mhSettingsRem
->
loggedIn
()
;
}
int
connected
()
{
return
_connectedStatus
;
}
int
linkConnected
()
{
return
_linkConnectedStatus
;
}
int
uplinkRSSI
()
{
return
_downlinkRSSI
;
}
int
downlinkRSSI
()
{
return
_uplinkRSSI
;
}
QString
localIPAddr
()
{
return
_localIPAddr
;
}
QString
remoteIPAddr
()
{
return
_remoteIPAddr
;
}
QString
netMask
()
{
return
_netMask
;
}
QString
configUserName
()
{
return
_configUserName
;
}
QString
configPassword
()
{
return
_configPassword
;
}
QString
encryptionKey
()
{
return
_encryptionKey
;
}
...
...
@@ -60,13 +62,14 @@ signals:
void
localIPAddrChanged
();
void
remoteIPAddrChanged
();
void
netMaskChanged
();
void
configUserNameChanged
();
void
configPasswordChanged
();
void
encryptionKeyChanged
();
private
slots
:
void
_connectedLoc
();
void
_connectedLoc
(
int
status
);
void
_rssiUpdatedLoc
(
int
rssi
);
void
_connectedRem
();
void
_connectedRem
(
int
status
);
void
_rssiUpdatedRem
(
int
rssi
);
void
_checkMicrohard
();
void
_setEnabled
();
...
...
@@ -79,21 +82,22 @@ private:
FactMetaData
*
_createMetadata
(
const
char
*
name
,
QStringList
enums
);
private:
bool
_isConnected
=
false
;
AppSettings
*
_appSettings
=
nullptr
;
MicrohardSettings
*
_mhSettingsLoc
=
nullptr
;
MicrohardSettings
*
_mhSettingsRem
=
nullptr
;
bool
_enabled
=
true
;
bool
_linkConnected
=
false
;
QTimer
_workTimer
;
QTimer
_locTimer
;
QTimer
_remTimer
;
int
_downlinkRSSI
=
0
;
int
_uplinkRSSI
=
0
;
QString
_localIPAddr
;
QString
_remoteIPAddr
;
QString
_netMask
;
QString
_configPassword
;
QString
_encryptionKey
;
QTime
_timeoutTimer
;
int
_connectedStatus
=
0
;
AppSettings
*
_appSettings
=
nullptr
;
MicrohardSettings
*
_mhSettingsLoc
=
nullptr
;
MicrohardSettings
*
_mhSettingsRem
=
nullptr
;
bool
_enabled
=
true
;
int
_linkConnectedStatus
=
0
;
QTimer
_workTimer
;
QTimer
_locTimer
;
QTimer
_remTimer
;
int
_downlinkRSSI
=
0
;
int
_uplinkRSSI
=
0
;
QString
_localIPAddr
;
QString
_remoteIPAddr
;
QString
_netMask
;
QString
_configUserName
;
QString
_configPassword
;
QString
_encryptionKey
;
QTime
_timeoutTimer
;
};
src/Microhard/MicrohardSettings.cc
View file @
1f9fede7
...
...
@@ -45,7 +45,7 @@ MicrohardSettings::setEncryptionKey(QString key)
{
QString
cmd
=
"AT+MWVENCRYPT=1,"
+
key
+
"
\n
"
;
_tcpSocket
->
write
(
cmd
.
toStdString
().
c_str
());
qCDebug
(
MicrohardLog
)
<<
"
setEncryptionKey: "
<<
cmd
;
qCDebug
(
MicrohardLog
)
<<
"
Set encryption key."
;
}
//-----------------------------------------------------------------------------
...
...
@@ -54,7 +54,7 @@ MicrohardSettings::_readBytes()
{
QByteArray
bytesIn
=
_tcpSocket
->
read
(
_tcpSocket
->
bytesAvailable
());
// qCDebug(MicrohardVerbose
) << "Read bytes: " << bytesIn;
//qCDebug(MicrohardLog
) << "Read bytes: " << bytesIn;
if
(
_loggedIn
)
{
int
i1
=
bytesIn
.
indexOf
(
"RSSI (dBm)"
);
...
...
@@ -69,16 +69,20 @@ MicrohardSettings::_readBytes()
}
}
}
}
else
if
(
bytesIn
.
contains
(
"UserDevice login:"
))
{
_tcpSocket
->
write
(
"admin
\n
"
);
}
else
if
(
bytesIn
.
contains
(
"login:"
))
{
std
::
string
userName
=
qgcApp
()
->
toolbox
()
->
microhardManager
()
->
configUserName
().
toStdString
()
+
"
\n
"
;
_tcpSocket
->
write
(
userName
.
c_str
());
}
else
if
(
bytesIn
.
contains
(
"Password:"
))
{
std
::
string
pwd
=
qgcApp
()
->
toolbox
()
->
microhardManager
()
->
configPassword
().
toStdString
()
+
"
\n
"
;
_tcpSocket
->
write
(
pwd
.
c_str
());
}
else
if
(
bytesIn
.
contains
(
"UserDevice>"
))
{
}
else
if
(
bytesIn
.
contains
(
"Login incorrect"
))
{
emit
connected
(
-
1
);
}
else
if
(
bytesIn
.
contains
(
"Entering"
))
{
if
(
!
loggedIn
()
&&
_setEncryptionKey
)
{
setEncryptionKey
(
qgcApp
()
->
toolbox
()
->
microhardManager
()
->
encryptionKey
());
}
_loggedIn
=
true
;
emit
connected
(
1
);
}
emit
rssiUpdated
(
_rssiVal
);
...
...
src/Microhard/MicrohardSettings.qml
View file @
1f9fede7
...
...
@@ -121,16 +121,32 @@ Rectangle {
Layout.minimumWidth
:
_labelWidth
}
QGCLabel
{
text
:
QGroundControl
.
microhardManager
.
connected
?
qsTr
(
"
Connected
"
)
:
qsTr
(
"
Not Connected
"
)
color
:
QGroundControl
.
microhardManager
.
connected
?
qgcPal
.
colorGreen
:
qgcPal
.
colorRed
function
getStatus
(
status
)
{
if
(
status
===
1
)
return
qsTr
(
"
Connected
"
);
else
if
(
status
===
-
1
)
return
qsTr
(
"
Login Error
"
)
else
return
qsTr
(
"
Not Connected
"
)
}
text
:
getStatus
(
QGroundControl
.
microhardManager
.
connected
)
color
:
QGroundControl
.
microhardManager
.
connected
===
1
?
qgcPal
.
colorGreen
:
qgcPal
.
colorRed
Layout.minimumWidth
:
_valueWidth
}
QGCLabel
{
text
:
qsTr
(
"
Air Unit:
"
)
}
QGCLabel
{
text
:
QGroundControl
.
microhardManager
.
linkConnected
?
qsTr
(
"
Connected
"
)
:
qsTr
(
"
Not Connected
"
)
color
:
QGroundControl
.
microhardManager
.
linkConnected
?
qgcPal
.
colorGreen
:
qgcPal
.
colorRed
function
getStatus
(
status
)
{
if
(
status
===
1
)
return
qsTr
(
"
Connected
"
);
else
if
(
status
===
-
1
)
return
qsTr
(
"
Login Error
"
)
else
return
qsTr
(
"
Not Connected
"
)
}
text
:
getStatus
(
QGroundControl
.
microhardManager
.
linkConnected
)
color
:
QGroundControl
.
microhardManager
.
linkConnected
===
1
?
qgcPal
.
colorGreen
:
qgcPal
.
colorRed
}
QGCLabel
{
text
:
qsTr
(
"
Uplink RSSI:
"
)
...
...
@@ -210,7 +226,16 @@ Rectangle {
Layout.minimumWidth
:
_valueWidth
}
QGCLabel
{
text
:
qsTr
(
"
Configuration password:
"
)
text
:
qsTr
(
"
Configuration User Name:
"
)
}
QGCTextField
{
id
:
configUserName
text
:
QGroundControl
.
microhardManager
.
configUserName
enabled
:
true
Layout.minimumWidth
:
_valueWidth
}
QGCLabel
{
text
:
qsTr
(
"
Configuration Password:
"
)
}
QGCTextField
{
id
:
configPassword
...
...
@@ -244,6 +269,7 @@ Rectangle {
if
(
localIP
.
text
===
QGroundControl
.
microhardManager
.
localIPAddr
&&
remoteIP
.
text
===
QGroundControl
.
microhardManager
.
remoteIPAddr
&&
netMask
.
text
===
QGroundControl
.
microhardManager
.
netMask
&&
configUserName
.
text
===
QGroundControl
.
microhardManager
.
configUserName
&&
configPassword
.
text
===
QGroundControl
.
microhardManager
.
configPassword
&&
encryptionKey
.
text
===
QGroundControl
.
microhardManager
.
encryptionKey
)
return
false
...
...
@@ -256,7 +282,7 @@ Rectangle {
text
:
qsTr
(
"
Apply
"
)
anchors.horizontalCenter
:
parent
.
horizontalCenter
onClicked
:
{
QGroundControl
.
microhardManager
.
setIPSettings
(
localIP
.
text
,
remoteIP
.
text
,
netMask
.
text
,
configPassword
.
text
,
encryptionKey
.
text
)
QGroundControl
.
microhardManager
.
setIPSettings
(
localIP
.
text
,
remoteIP
.
text
,
netMask
.
text
,
config
UserName
.
text
,
config
Password
.
text
,
encryptionKey
.
text
)
}
}
...
...
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