QGCSerialPortInfo.h 3.83 KB
Newer Older
1 2 3 4 5 6 7 8 9
/****************************************************************************
 *
 *   (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
 *
 * QGroundControl is licensed according to the terms in the file
 * COPYING.md in the root of the source code directory.
 *
 ****************************************************************************/

10

11 12
#ifndef QGCSerialPortInfo_H
#define QGCSerialPortInfo_H
13

14 15 16 17 18 19 20 21 22
#ifdef __android__
    #include "qserialportinfo.h"
#else
    #include <QSerialPortInfo>
#endif

#include "QGCLoggingCategory.h"

Q_DECLARE_LOGGING_CATEGORY(QGCSerialPortInfoLog)
23

24 25 26 27
/// QGC's version of Qt QSerialPortInfo. It provides additional information about board types
/// that QGC cares about.
class QGCSerialPortInfo : public QSerialPortInfo
{
28
public:
29 30 31
    typedef enum {
        BoardTypePX4FMUV1,
        BoardTypePX4FMUV2,
32
        BoardTypePX4FMUV4,
33
        BoardTypePX4Flow,
Don Gagne's avatar
Don Gagne committed
34
        BoardTypeSikRadio,
35
        BoardTypeAeroCore,
36
        BoardTypeRTKGPS,
Henry Zhang's avatar
Henry Zhang committed
37
        BoardTypeMINDPXFMUV2,
38 39
        BoardTypeTAPV1,
        BoardTypeASCV1,
40
        BoardTypeLibrePilot,
41 42 43 44 45
        BoardTypeUnknown
    } BoardType_t;

    // Vendor and products ids for the boards we care about

Don Gagne's avatar
Don Gagne committed
46
    static const int px4VendorId =                          9900;   ///< Vendor ID for Pixhawk board (V2 and V1) and PX4 Flow
47

48
    static const int pixhawkFMUV4ProductId =                18;     ///< Product ID for Pixhawk V2 board
Don Gagne's avatar
Don Gagne committed
49 50 51
    static const int pixhawkFMUV2ProductId =                17;     ///< Product ID for Pixhawk V2 board
    static const int pixhawkFMUV2OldBootloaderProductId =   22;     ///< Product ID for Bootloader on older Pixhawk V2 boards
    static const int pixhawkFMUV1ProductId =                16;     ///< Product ID for PX4 FMU V1 board
52

Don Gagne's avatar
Don Gagne committed
53
    static const int AeroCoreProductId =                    4097;   ///< Product ID for the AeroCore board
54
    
Don Gagne's avatar
Don Gagne committed
55
    static const int px4FlowProductId =                     21;     ///< Product ID for PX4 Flow board
56

Henry Zhang's avatar
Henry Zhang committed
57
    static const int MindPXFMUV2ProductId =                 48;     ///< Product ID for the MindPX V2 board
58 59
    static const int TAPV1ProductId =                       64;     ///< Product ID for the TAP V1 board
    static const int ASCV1ProductId =                       65;     ///< Product ID for the ASC V1 board
Henry Zhang's avatar
Henry Zhang committed
60

Don Gagne's avatar
Don Gagne committed
61 62
    static const int threeDRRadioVendorId =                 1027;   ///< Vendor ID for 3DR Radio
    static const int threeDRRadioProductId =                24597;  ///< Product ID for 3DR Radio
63

Don Gagne's avatar
Don Gagne committed
64 65 66
    static const int siLabsRadioVendorId =                  0x10c4; ///< Vendor ID for SILabs Radio
    static const int siLabsRadioProductId =                 0xea60; ///< Product ID for SILabs Radio

67 68 69
    static const int ubloxRTKVendorId =                     5446;   ///< Vendor ID for ublox RTK
    static const int ubloxRTKProductId =                    424;    ///< Product ID for ublox RTK

70 71 72 73 74 75
    static const int openpilotVendorId =                    0x20A0; ///< Vendor ID for OpenPilot
    static const int revolutionProductId =                  0x415E; ///< Product ID for OpenPilot Revolution
    static const int oplinkProductId =                      0x415C; ///< Product ID for OpenPilot OPLink
    static const int sparky2ProductId =                     0x41D0; ///< Product ID for Taulabs Sparky2
    static const int CC3DProductId =                        0x415D; ///< Product ID for OpenPilot CC3D

Don Gagne's avatar
Don Gagne committed
76
    QGCSerialPortInfo(void);
77 78 79 80 81 82 83
    QGCSerialPortInfo(const QSerialPort & port);

    /// Override of QSerialPortInfo::availablePorts
    static QList<QGCSerialPortInfo> availablePorts(void);

    BoardType_t boardType(void) const;

84 85 86
    /// @return true: we can flash this board type
    bool canFlash(void);

87 88 89 90 91 92
    /// @return true: board is a Pixhawk board
    bool boardTypePixhawk(void) const;

    /// @return true: Board is currently in bootloader
    bool isBootloader(void) const;

Don Gagne's avatar
Don Gagne committed
93
private:
94 95
};

Don Gagne's avatar
Don Gagne committed
96
#endif