Commit 6184126f authored by Don Gagne's avatar Don Gagne

Add requiresUSBMavlinkStart support

parent be4e5dc3
...@@ -125,6 +125,9 @@ public: ...@@ -125,6 +125,9 @@ public:
/// set into the link when it is added to LinkManager /// set into the link when it is added to LinkManager
uint8_t getMavlinkChannel(void) const { Q_ASSERT(_mavlinkChannelSet); return _mavlinkChannel; } uint8_t getMavlinkChannel(void) const { Q_ASSERT(_mavlinkChannelSet); return _mavlinkChannel; }
/// @return true: "sh /etc/init.d/rc.usb" must be sent on link to start mavlink
virtual bool requiresUSBMavlinkStart(void) const { return false; }
// These are left unimplemented in order to cause linker errors which indicate incorrect usage of // These are left unimplemented in order to cause linker errors which indicate incorrect usage of
// connect/disconnect on link directly. All connect/disconnect calls should be made through LinkManager. // connect/disconnect on link directly. All connect/disconnect calls should be made through LinkManager.
bool connect(void); bool connect(void);
......
...@@ -200,14 +200,16 @@ void MAVLinkProtocol::_linkStatusChanged(LinkInterface* link, bool connected) ...@@ -200,14 +200,16 @@ void MAVLinkProtocol::_linkStatusChanged(LinkInterface* link, bool connected)
// Use the same shared pointer as LinkManager // Use the same shared pointer as LinkManager
_connectedLinks.append(_linkMgr->sharedPointerForLink(link)); _connectedLinks.append(_linkMgr->sharedPointerForLink(link));
// Send command to start MAVLink if (link->requiresUSBMavlinkStart()) {
// XXX hacky but safe // Send command to start MAVLink
// Start NSH // XXX hacky but safe
const char init[] = {0x0d, 0x0d, 0x0d, 0x0d}; // Start NSH
link->writeBytes(init, sizeof(init)); const char init[] = {0x0d, 0x0d, 0x0d, 0x0d};
const char* cmd = "sh /etc/init.d/rc.usb\n"; link->writeBytes(init, sizeof(init));
link->writeBytes(cmd, strlen(cmd)); const char* cmd = "sh /etc/init.d/rc.usb\n";
link->writeBytes(init, 4); link->writeBytes(cmd, strlen(cmd));
link->writeBytes(init, 4);
}
} else { } else {
bool found = false; bool found = false;
for (int i=0; i<_connectedLinks.count(); i++) { for (int i=0; i<_connectedLinks.count(); i++) {
......
...@@ -15,10 +15,8 @@ ...@@ -15,10 +15,8 @@
#ifdef __android__ #ifdef __android__
#include "qserialport.h" #include "qserialport.h"
#include "qserialportinfo.h"
#else #else
#include <QSerialPort> #include <QSerialPort>
#include <QSerialPortInfo>
#endif #endif
#include "SerialLink.h" #include "SerialLink.h"
...@@ -26,6 +24,7 @@ ...@@ -26,6 +24,7 @@
#include "MG.h" #include "MG.h"
#include "QGCLoggingCategory.h" #include "QGCLoggingCategory.h"
#include "QGCApplication.h" #include "QGCApplication.h"
#include "QGCSerialPortInfo.h"
QGC_LOGGING_CATEGORY(SerialLinkLog, "SerialLinkLog") QGC_LOGGING_CATEGORY(SerialLinkLog, "SerialLinkLog")
...@@ -380,6 +379,15 @@ LinkConfiguration* SerialLink::getLinkConfiguration() ...@@ -380,6 +379,15 @@ LinkConfiguration* SerialLink::getLinkConfiguration()
return _config; return _config;
} }
bool SerialLink::requiresUSBMavlinkStart(void) const
{
if (_port) {
return QGCSerialPortInfo(*_port).boardTypePixhawk();
} else {
return false;
}
}
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
//-- SerialConfiguration //-- SerialConfiguration
......
...@@ -119,7 +119,8 @@ public: ...@@ -119,7 +119,8 @@ public:
void requestReset(); void requestReset();
bool isConnected() const; bool isConnected() const;
qint64 getConnectionSpeed() const; qint64 getConnectionSpeed() const;
bool requiresUSBMavlinkStart(void) const;
// These are left unimplemented in order to cause linker errors which indicate incorrect usage of // These are left unimplemented in order to cause linker errors which indicate incorrect usage of
// connect/disconnect on link directly. All connect/disconnect calls should be made through LinkManager. // connect/disconnect on link directly. All connect/disconnect calls should be made through LinkManager.
bool connect(void); bool connect(void);
......
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