Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
a7f039bf
Commit
a7f039bf
authored
May 05, 2014
by
Lorenz Meier
Browse files
Operational toy examples
parent
c1f0d707
Changes
6
Show whitespace changes
Inline
Side-by-side
src/uas/QGCMAVLinkUASFactory.cc
View file @
a7f039bf
...
...
@@ -30,6 +30,7 @@ UASInterface* QGCMAVLinkUASFactory::createUAS(MAVLinkProtocol* mavlink, LinkInte
mav
->
setSystemType
((
int
)
heartbeat
->
type
);
// Connect this robot to the UAS object
connect
(
mavlink
,
SIGNAL
(
messageReceived
(
LinkInterface
*
,
mavlink_message_t
)),
mav
,
SLOT
(
receiveMessage
(
LinkInterface
*
,
mavlink_message_t
)));
connect
(
mavlink
,
SIGNAL
(
messageReceived
(
LinkInterface
*
,
mavlink_message_t
)),
mav
->
getFileManager
(),
SLOT
(
receiveMessage
(
LinkInterface
*
,
mavlink_message_t
)));
#ifdef QGC_PROTOBUF_ENABLED
connect
(
mavlink
,
SIGNAL
(
extendedMessageReceived
(
LinkInterface
*
,
std
::
tr1
::
shared_ptr
<
google
::
protobuf
::
Message
>
)),
mav
,
SLOT
(
receiveExtendedMessage
(
LinkInterface
*
,
std
::
tr1
::
shared_ptr
<
google
::
protobuf
::
Message
>
)));
#endif
...
...
src/uas/QGCUASFileManager.cc
View file @
a7f039bf
#include
"QGCUASFileManager.h"
#include
"QGC.h"
#include
"MAVLinkProtocol.h"
#include
<QFile>
#include
<QDir>
static
const
quint32
crctab
[]
=
{
0x00000000
,
0x77073096
,
0xee0e612c
,
0x990951ba
,
0x076dc419
,
0x706af48f
,
0xe963a535
,
0x9e6495a3
,
0x0edb8832
,
0x79dcb8a4
,
0xe0d5e91e
,
0x97d2d988
,
0x09b64c2b
,
0x7eb17cbd
,
0xe7b82d07
,
0x90bf1d91
,
0x1db71064
,
0x6ab020f2
,
0xf3b97148
,
0x84be41de
,
0x1adad47d
,
0x6ddde4eb
,
0xf4d4b551
,
0x83d385c7
,
0x136c9856
,
0x646ba8c0
,
0xfd62f97a
,
0x8a65c9ec
,
0x14015c4f
,
0x63066cd9
,
0xfa0f3d63
,
0x8d080df5
,
0x3b6e20c8
,
0x4c69105e
,
0xd56041e4
,
0xa2677172
,
0x3c03e4d1
,
0x4b04d447
,
0xd20d85fd
,
0xa50ab56b
,
0x35b5a8fa
,
0x42b2986c
,
0xdbbbc9d6
,
0xacbcf940
,
0x32d86ce3
,
0x45df5c75
,
0xdcd60dcf
,
0xabd13d59
,
0x26d930ac
,
0x51de003a
,
0xc8d75180
,
0xbfd06116
,
0x21b4f4b5
,
0x56b3c423
,
0xcfba9599
,
0xb8bda50f
,
0x2802b89e
,
0x5f058808
,
0xc60cd9b2
,
0xb10be924
,
0x2f6f7c87
,
0x58684c11
,
0xc1611dab
,
0xb6662d3d
,
0x76dc4190
,
0x01db7106
,
0x98d220bc
,
0xefd5102a
,
0x71b18589
,
0x06b6b51f
,
0x9fbfe4a5
,
0xe8b8d433
,
0x7807c9a2
,
0x0f00f934
,
0x9609a88e
,
0xe10e9818
,
0x7f6a0dbb
,
0x086d3d2d
,
0x91646c97
,
0xe6635c01
,
0x6b6b51f4
,
0x1c6c6162
,
0x856530d8
,
0xf262004e
,
0x6c0695ed
,
0x1b01a57b
,
0x8208f4c1
,
0xf50fc457
,
0x65b0d9c6
,
0x12b7e950
,
0x8bbeb8ea
,
0xfcb9887c
,
0x62dd1ddf
,
0x15da2d49
,
0x8cd37cf3
,
0xfbd44c65
,
0x4db26158
,
0x3ab551ce
,
0xa3bc0074
,
0xd4bb30e2
,
0x4adfa541
,
0x3dd895d7
,
0xa4d1c46d
,
0xd3d6f4fb
,
0x4369e96a
,
0x346ed9fc
,
0xad678846
,
0xda60b8d0
,
0x44042d73
,
0x33031de5
,
0xaa0a4c5f
,
0xdd0d7cc9
,
0x5005713c
,
0x270241aa
,
0xbe0b1010
,
0xc90c2086
,
0x5768b525
,
0x206f85b3
,
0xb966d409
,
0xce61e49f
,
0x5edef90e
,
0x29d9c998
,
0xb0d09822
,
0xc7d7a8b4
,
0x59b33d17
,
0x2eb40d81
,
0xb7bd5c3b
,
0xc0ba6cad
,
0xedb88320
,
0x9abfb3b6
,
0x03b6e20c
,
0x74b1d29a
,
0xead54739
,
0x9dd277af
,
0x04db2615
,
0x73dc1683
,
0xe3630b12
,
0x94643b84
,
0x0d6d6a3e
,
0x7a6a5aa8
,
0xe40ecf0b
,
0x9309ff9d
,
0x0a00ae27
,
0x7d079eb1
,
0xf00f9344
,
0x8708a3d2
,
0x1e01f268
,
0x6906c2fe
,
0xf762575d
,
0x806567cb
,
0x196c3671
,
0x6e6b06e7
,
0xfed41b76
,
0x89d32be0
,
0x10da7a5a
,
0x67dd4acc
,
0xf9b9df6f
,
0x8ebeeff9
,
0x17b7be43
,
0x60b08ed5
,
0xd6d6a3e8
,
0xa1d1937e
,
0x38d8c2c4
,
0x4fdff252
,
0xd1bb67f1
,
0xa6bc5767
,
0x3fb506dd
,
0x48b2364b
,
0xd80d2bda
,
0xaf0a1b4c
,
0x36034af6
,
0x41047a60
,
0xdf60efc3
,
0xa867df55
,
0x316e8eef
,
0x4669be79
,
0xcb61b38c
,
0xbc66831a
,
0x256fd2a0
,
0x5268e236
,
0xcc0c7795
,
0xbb0b4703
,
0x220216b9
,
0x5505262f
,
0xc5ba3bbe
,
0xb2bd0b28
,
0x2bb45a92
,
0x5cb36a04
,
0xc2d7ffa7
,
0xb5d0cf31
,
0x2cd99e8b
,
0x5bdeae1d
,
0x9b64c2b0
,
0xec63f226
,
0x756aa39c
,
0x026d930a
,
0x9c0906a9
,
0xeb0e363f
,
0x72076785
,
0x05005713
,
0x95bf4a82
,
0xe2b87a14
,
0x7bb12bae
,
0x0cb61b38
,
0x92d28e9b
,
0xe5d5be0d
,
0x7cdcefb7
,
0x0bdbdf21
,
0x86d3d2d4
,
0xf1d4e242
,
0x68ddb3f8
,
0x1fda836e
,
0x81be16cd
,
0xf6b9265b
,
0x6fb077e1
,
0x18b74777
,
0x88085ae6
,
0xff0f6a70
,
0x66063bca
,
0x11010b5c
,
0x8f659eff
,
0xf862ae69
,
0x616bffd3
,
0x166ccf45
,
0xa00ae278
,
0xd70dd2ee
,
0x4e048354
,
0x3903b3c2
,
0xa7672661
,
0xd06016f7
,
0x4969474d
,
0x3e6e77db
,
0xaed16a4a
,
0xd9d65adc
,
0x40df0b66
,
0x37d83bf0
,
0xa9bcae53
,
0xdebb9ec5
,
0x47b2cf7f
,
0x30b5ffe9
,
0xbdbdf21c
,
0xcabac28a
,
0x53b39330
,
0x24b4a3a6
,
0xbad03605
,
0xcdd70693
,
0x54de5729
,
0x23d967bf
,
0xb3667a2e
,
0xc4614ab8
,
0x5d681b02
,
0x2a6f2b94
,
0xb40bbe37
,
0xc30c8ea1
,
0x5a05df1b
,
0x2d02ef8d
};
QGCUASFileManager
::
QGCUASFileManager
(
QObject
*
parent
,
UASInterface
*
uas
)
:
QObject
(
parent
),
_mav
(
uas
)
_mav
(
uas
),
_encdata_seq
(
0
)
{
}
quint32
QGCUASFileManager
::
crc32
(
const
uint8_t
*
src
,
unsigned
len
,
unsigned
state
)
{
for
(
unsigned
i
=
0
;
i
<
len
;
i
++
)
state
=
crctab
[(
state
^
src
[
i
])
&
0xff
]
^
(
state
>>
8
);
return
state
;
}
void
QGCUASFileManager
::
nothingMessage
()
{
void
QGCUASFileManager
::
nothingMessage
()
{
mavlink_message_t
message
;
unsigned
crcstate
=
0
;
RequestHeader
hdr
;
hdr
.
magic
=
9
;
crcstate
=
crc32
((
uint8_t
*
)
&
hdr
,
4
,
crcstate
);
hdr
.
crc32
=
crcstate
;
mavlink_msg_encapsulated_data_pack
(
250
,
0
,
&
message
,
_encdata_seq
,
(
uint8_t
*
)
&
hdr
);
_mav
->
sendMessage
(
message
);
qDebug
()
<<
"Sent message!"
;
}
void
QGCUASFileManager
::
receiveMessage
(
LinkInterface
*
link
,
mavlink_message_t
message
)
{
switch
(
message
.
msgid
)
{
case
MAVLINK_MSG_ID_ENCAPSULATED_DATA
:
emit
statusMessage
(
"GOT ENC DATA"
);
break
;
}
}
void
QGCUASFileManager
::
listRecursively
(
const
QString
&
from
)
{
// This sends out one line to the text area
emit
statusMessage
(
"/"
);
emit
statusMessage
(
" fs/"
);
emit
statusMessage
(
" microsd/"
);
emit
statusMessage
(
" log001.bin"
);
}
void
QGCUASFileManager
::
downloadPath
(
const
QString
&
from
,
const
QString
&
to
)
{
// Send path, e.g. /fs/microsd and download content
// recursively into a local directory
char
buf
[
255
];
unsigned
len
=
10
;
QByteArray
data
(
buf
,
len
);
QString
filename
=
"log001.bin"
;
// XXX get this from onboard
// Qt takes care of slash conversions in paths
QFile
file
(
to
+
QDir
::
separator
()
+
filename
);
file
.
open
(
QIODevice
::
WriteOnly
);
file
.
write
(
data
);
file
.
close
();
emit
statusMessage
(
QString
(
"Downloaded: %1 to directory %2"
).
arg
(
filename
).
arg
(
to
));
}
src/uas/QGCUASFileManager.h
View file @
a7f039bf
...
...
@@ -11,12 +11,30 @@ public:
QGCUASFileManager
(
QObject
*
parent
,
UASInterface
*
uas
);
signals:
void
statusMessage
(
const
QString
&
msg
);
public
slots
:
void
receiveMessage
(
LinkInterface
*
link
,
mavlink_message_t
message
);
void
nothingMessage
();
void
listRecursively
(
const
QString
&
from
);
void
downloadPath
(
const
QString
&
from
,
const
QString
&
to
);
protected:
UASInterface
*
_mav
;
quint16
_encdata_seq
;
struct
RequestHeader
{
uint8_t
magic
;
uint8_t
session
;
uint8_t
opcode
;
uint8_t
size
;
uint32_t
crc32
;
uint32_t
offset
;
uint8_t
data
[];
};
static
quint32
crc32
(
const
uint8_t
*
src
,
unsigned
len
,
unsigned
state
);
};
...
...
src/ui/QGCUASFileView.cc
View file @
a7f039bf
...
...
@@ -2,6 +2,9 @@
#include
"uas/QGCUASFileManager.h"
#include
"ui_QGCUASFileView.h"
#include
<QFileDialog>
#include
<QDir>
QGCUASFileView
::
QGCUASFileView
(
QWidget
*
parent
,
QGCUASFileManager
*
manager
)
:
QWidget
(
parent
),
_manager
(
manager
),
...
...
@@ -10,9 +13,28 @@ QGCUASFileView::QGCUASFileView(QWidget *parent, QGCUASFileManager *manager) :
ui
->
setupUi
(
this
);
connect
(
ui
->
testButton
,
SIGNAL
(
clicked
()),
_manager
,
SLOT
(
nothingMessage
()));
connect
(
ui
->
listFilesButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
listFiles
()));
connect
(
ui
->
downloadButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
downloadFiles
()));
connect
(
_manager
,
SIGNAL
(
statusMessage
(
QString
)),
ui
->
messageArea
,
SLOT
(
appendPlainText
(
QString
)));
}
QGCUASFileView
::~
QGCUASFileView
()
{
delete
ui
;
}
void
QGCUASFileView
::
listFiles
()
{
_manager
->
listRecursively
(
ui
->
pathLineEdit
->
text
());
}
void
QGCUASFileView
::
downloadFiles
()
{
QString
dir
=
QFileDialog
::
getExistingDirectory
(
this
,
tr
(
"Open Directory"
),
QDir
::
homePath
(),
QFileDialog
::
ShowDirsOnly
|
QFileDialog
::
DontResolveSymlinks
);
// And now download to this location
_manager
->
downloadPath
(
ui
->
pathLineEdit
->
text
(),
dir
);
}
src/ui/QGCUASFileView.h
View file @
a7f039bf
...
...
@@ -16,6 +16,10 @@ public:
explicit
QGCUASFileView
(
QWidget
*
parent
,
QGCUASFileManager
*
manager
);
~
QGCUASFileView
();
public
slots
:
void
listFiles
();
void
downloadFiles
();
protected:
QGCUASFileManager
*
_manager
;
...
...
src/ui/QGCUASFileView.ui
View file @
a7f039bf
...
...
@@ -6,26 +6,58 @@
<rect>
<x>
0
</x>
<y>
0
</y>
<width>
4
00
</width>
<height>
300
</height>
<width>
4
14
</width>
<height>
518
</height>
</rect>
</property>
<property
name=
"windowTitle"
>
<string>
Form
</string>
</property>
<layout
class=
"QGridLayout"
name=
"gridLayout"
>
<item
row=
"3"
column=
"1"
>
<widget
class=
"QPushButton"
name=
"listFilesButton"
>
<property
name=
"text"
>
<string>
List Files
</string>
</property>
</widget>
</item>
<item
row=
"0"
column=
"0"
colspan=
"3"
>
<widget
class=
"QPlainTextEdit"
name=
"messageArea"
/>
</item>
<item
row=
"1"
column=
"0"
colspan=
"3"
>
<widget
class=
"QTreeWidget"
name=
"treeWidget"
>
<column>
<property
name=
"text"
>
<string
notr=
"true"
>
1
</string>
</property>
</column>
</widget>
</item>
<item
row=
"3"
column=
"0"
>
<widget
class=
"QPushButton"
name=
"testButton"
>
<property
name=
"geometry"
>
<rect>
<x>
30
</x>
<y>
20
</y>
<width>
114
</width>
<height>
32
</height>
</rect>
<property
name=
"text"
>
<string>
Null Message
</string>
</property>
</widget>
</item>
<item
row=
"3"
column=
"2"
>
<widget
class=
"QPushButton"
name=
"downloadButton"
>
<property
name=
"text"
>
<string>
Download File
</string>
</property>
</widget>
</item>
<item
row=
"2"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label"
>
<property
name=
"text"
>
<string>
Test
</string>
<string>
Path:
</string>
</property>
</widget>
</item>
<item
row=
"2"
column=
"1"
colspan=
"2"
>
<widget
class=
"QLineEdit"
name=
"pathLineEdit"
/>
</item>
</layout>
</widget>
<resources/>
<connections/>
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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