Go to the documentation of this file.00001
00010 #include "UrgPortsWidget.h"
00011 #include "UrgUsbCom.h"
00012 #include "FindComPorts.h"
00013 #include <QShortcut>
00014
00015 using namespace qrk;
00016 using namespace std;
00017
00018
00019 struct UrgPortsWidget::pImpl
00020 {
00021 void initializeForm(UrgPortsWidget* parent)
00022 {
00023
00024 connect(parent->rescan_button_, SIGNAL(clicked()),
00025 parent, SLOT(rescanHandler()));
00026 }
00027
00028
00029 void rescanPorts(UrgPortsWidget* parent)
00030 {
00031 FindComPorts urg_finder;
00032 urg_finder.addBaseName("/dev/ttyACM");
00033 urg_finder.addBaseName("/dev/tty.usbmodem");
00034 urg_finder.addDriverName("URG Series USB Device Driver");
00035 urg_finder.addDriverName("URG-X002 USB Device Driver");
00036
00037 vector<string> urg_ports;
00038 urg_finder.find(urg_ports);
00039
00040 parent->ports_list_widget_->clear();
00041
00042 UrgUsbCom urg_usb;
00043 for (vector<string>::iterator it = urg_ports.begin();
00044 it != urg_ports.end(); ++it) {
00045 string name = *it
00046 + (urg_usb.isUsbCom(it->c_str()) ? " [URG]" : "");
00047
00048 parent->ports_list_widget_->addItem(name.c_str());
00049 }
00050 }
00051 };
00052
00053
00054 UrgPortsWidget::UrgPortsWidget(QWidget* parent)
00055 : QWidget(parent), pimpl(new pImpl)
00056 {
00057 setupUi(this);
00058
00059
00060 pimpl->initializeForm(this);
00061 pimpl->rescanPorts(this);
00062
00063
00064 (void) new QShortcut(Qt::CTRL + Qt::Key_Q, this, SLOT(close()));
00065 (void) new QShortcut(Qt::ALT + Qt::Key_F4, this, SLOT(close()));
00066 }
00067
00068
00069 UrgPortsWidget::~UrgPortsWidget(void)
00070 {
00071 }
00072
00073
00074 void UrgPortsWidget::rescanHandler(void)
00075 {
00076 pimpl->rescanPorts(this);
00077 }