1*4882a593Smuzhiyun #ifndef QTBT_H 2*4882a593Smuzhiyun #define QTBT_H 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #include <QDebug> 5*4882a593Smuzhiyun #include <QLabel> 6*4882a593Smuzhiyun #include <QListWidget> 7*4882a593Smuzhiyun #include <QMutex> 8*4882a593Smuzhiyun #include <QPushButton> 9*4882a593Smuzhiyun #include <QProcess> 10*4882a593Smuzhiyun #include <QTextStream> 11*4882a593Smuzhiyun #include <QThread> 12*4882a593Smuzhiyun #include <QTimer> 13*4882a593Smuzhiyun #include <QWidget> 14*4882a593Smuzhiyun #ifdef RKWIFIBTAPP 15*4882a593Smuzhiyun #include <RkBtSource.h> 16*4882a593Smuzhiyun #include <RkBtBase.h> 17*4882a593Smuzhiyun #else 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun typedef enum { 20*4882a593Smuzhiyun RK_BT_STATE_OFF, 21*4882a593Smuzhiyun RK_BT_STATE_ON, 22*4882a593Smuzhiyun RK_BT_STATE_TURNING_ON, 23*4882a593Smuzhiyun RK_BT_STATE_TURNING_OFF, 24*4882a593Smuzhiyun } RK_BT_STATE; 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun typedef enum { 27*4882a593Smuzhiyun RK_BT_BOND_STATE_NONE, 28*4882a593Smuzhiyun RK_BT_BOND_STATE_BONDING, 29*4882a593Smuzhiyun RK_BT_BOND_STATE_BONDED, 30*4882a593Smuzhiyun } RK_BT_BOND_STATE; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun typedef enum { 33*4882a593Smuzhiyun RK_BT_DISC_STARTED, 34*4882a593Smuzhiyun RK_BT_DISC_STOPPED_AUTO, 35*4882a593Smuzhiyun RK_BT_DISC_START_FAILED, 36*4882a593Smuzhiyun RK_BT_DISC_STOPPED_BY_USER, 37*4882a593Smuzhiyun } RK_BT_DISCOVERY_STATE; 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun typedef enum { 40*4882a593Smuzhiyun BT_SOURCE_EVENT_CONNECT_FAILED, 41*4882a593Smuzhiyun BT_SOURCE_EVENT_CONNECTED, 42*4882a593Smuzhiyun BT_SOURCE_EVENT_DISCONNECTED, 43*4882a593Smuzhiyun BT_SOURCE_EVENT_RC_PLAY, /* remote control command */ 44*4882a593Smuzhiyun BT_SOURCE_EVENT_RC_STOP, 45*4882a593Smuzhiyun BT_SOURCE_EVENT_RC_PAUSE, 46*4882a593Smuzhiyun BT_SOURCE_EVENT_RC_FORWARD, 47*4882a593Smuzhiyun BT_SOURCE_EVENT_RC_BACKWARD, 48*4882a593Smuzhiyun BT_SOURCE_EVENT_RC_VOL_UP, 49*4882a593Smuzhiyun BT_SOURCE_EVENT_RC_VOL_DOWN, 50*4882a593Smuzhiyun } RK_BT_SOURCE_EVENT; 51*4882a593Smuzhiyun #endif 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun class qtBT : public QListWidget 54*4882a593Smuzhiyun { 55*4882a593Smuzhiyun Q_OBJECT 56*4882a593Smuzhiyun struct bt_dev_info{ 57*4882a593Smuzhiyun const char *address; 58*4882a593Smuzhiyun const char *name; 59*4882a593Smuzhiyun unsigned int bt_class; 60*4882a593Smuzhiyun int rssi; 61*4882a593Smuzhiyun }; 62*4882a593Smuzhiyun public: 63*4882a593Smuzhiyun qtBT(QWidget *parent = nullptr, QLabel *label = nullptr, QPushButton *btn = nullptr, bool on = false); 64*4882a593Smuzhiyun ~qtBT(); 65*4882a593Smuzhiyun static qtBT* getInstance(QWidget *parent = nullptr, QLabel *label = nullptr, QPushButton *btn = nullptr, bool on = false) 66*4882a593Smuzhiyun { 67*4882a593Smuzhiyun if (!_instance) { 68*4882a593Smuzhiyun _instance = new qtBT(parent, label, btn, on); 69*4882a593Smuzhiyun } 70*4882a593Smuzhiyun return _instance; 71*4882a593Smuzhiyun } 72*4882a593Smuzhiyun static void state_cb(RK_BT_STATE state); 73*4882a593Smuzhiyun static void bond_cb(const char *bd_addr, const char *name, RK_BT_BOND_STATE state); 74*4882a593Smuzhiyun static void scan_status_cb(RK_BT_DISCOVERY_STATE status); 75*4882a593Smuzhiyun static void source_connect_cb(void *userdata, const char *bd_addr, const char *name, const RK_BT_SOURCE_EVENT enEvent); 76*4882a593Smuzhiyun static void scan_cb(const char *address,const char *name, unsigned int bt_class, int rssi, int change); 77*4882a593Smuzhiyun void open(); 78*4882a593Smuzhiyun void close(); 79*4882a593Smuzhiyun bool isOn(); 80*4882a593Smuzhiyun void turnOn(); 81*4882a593Smuzhiyun void turnOff(); 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun public slots: 84*4882a593Smuzhiyun void on_btnClicked(); 85*4882a593Smuzhiyun void on_itemClicked(QListWidgetItem *item); 86*4882a593Smuzhiyun private: 87*4882a593Smuzhiyun #ifdef RKWIFIBTAPP 88*4882a593Smuzhiyun RkBtContent bt_content; 89*4882a593Smuzhiyun #endif 90*4882a593Smuzhiyun QList<struct bt_dev_info*> dev_list; 91*4882a593Smuzhiyun QMutex btmutex; 92*4882a593Smuzhiyun static class qtBT* _instance; 93*4882a593Smuzhiyun QLabel *text; 94*4882a593Smuzhiyun QPushButton *switchBtn; 95*4882a593Smuzhiyun }; 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun #endif // QTBT_H 98