00001 #ifndef SEGWAYRMP_GUI_H 00002 #define SEGWAYRMP_GUI_H 00003 00004 #include <QtGui/QMainWindow> 00005 #include <QtCore/QMutex> 00006 00007 #include <SDL/SDL.h> 00008 00009 #include <segwayrmp/segwayrmp.h> 00010 00011 namespace Ui { 00012 class MainWindow; 00013 } 00014 00015 class MainWindow : public QMainWindow 00016 { 00017 Q_OBJECT 00018 00019 public slots: 00020 void onConnectClicked(); 00021 void connectionTypeChanged(QString); 00022 void rmpTypeChanged(QString); 00023 void USBListUpdated(); 00024 void updateUSBList(); 00025 00026 void updateJoysticks(); 00027 void onJoystickChanged(int); 00028 void commandPoll(); 00029 00030 void handleSegwayLog(QString); 00031 void handleSegwayStatus(QString); 00032 00033 void onResetIntegrators(); 00034 void onDisableMotors(); 00035 void onRequestTractor(); 00036 void onRequestBalance(); 00037 void onRequestPowerDown(); 00038 void onBalanceLockout(); 00039 void onBalanceUnlock(); 00040 void onSendConfig(); 00041 00042 signals: 00043 void USBUpdateComplete(); 00044 void segwayLog(QString); 00045 void segwayStatus(QString); 00046 00047 public: 00048 explicit MainWindow(QWidget *parent = 0); 00049 ~MainWindow(); 00050 00051 void onSegwayLog(QString, const std::string&); 00052 void onSegwayStatus(segwayrmp::SegwayStatus::Ptr); 00053 00054 private: 00055 Ui::MainWindow *ui; 00056 bool connected_; 00057 QVector<QString> usb_devices_; 00058 segwayrmp::SegwayRMP * rmp_; 00059 segwayrmp::InterfaceType interface_type_; 00060 segwayrmp::SegwayRMPType rmp_type_; 00061 SDL_Joystick * joystick_; 00062 QMutex joy_mutex_; 00063 bool running_; 00064 00065 void updateUSBList_(); 00066 00067 protected: 00068 void closeEvent(QCloseEvent*); 00069 }; 00070 00071 #endif // SEGWAYRMP_GUI_H