• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

gui/main.cpp (r4864/r4195)

Go to the documentation of this file.
00001 #include <QtGui>
00002 
00003 #include <stdio.h>
00004 #include <string.h>
00005 
00006 #include <QMainWindow>
00007 #include <QStatusBar>
00008 #include <QPushButton>
00009 
00010 #include "roc/Board.h"
00011 #include "roc/UdpBoard.h"
00012 #include "roc/I2cDevice.h"
00013 #include "base/Gpio.h"
00014 #include "nxyter/RocNx.h"
00015 #include "nxyter/MainAdc.h"
00016 #include "feet/RocFeet.h"
00017 
00018 #include "roctabswidget.h"
00019 #include "boardwidget.h"
00020 #include "rocmainwidget.h"
00021 #include "datawidget.h"
00022 #include "gpiowidget.h"
00023 #include "udpwidget.h"
00024 #include "opticwidget.h"
00025 #include "rocnxwidget.h"
00026 #include "rocfeetwidget.h"
00027 
00028 
00029 int main(int argc, char *argv[])
00030 {
00031    printf("rocGui v2.0, S.Linev, December 2009\n");
00032 
00033    if (argc<2) {
00034       printf("No board address was specified\n\n");
00035 
00036       printf("Usage: \n");
00037       printf("   rocGui brdaddr [-feb [febname]] [-detect]\n");
00038       printf("       brdaddr - address of the board like cbmtest01, or optic://abb1, or udp://ip.addr\n");
00039       printf("       -feb    - create widget for feb configuration\n");
00040       printf("       febname - name of the feb like 'Feb1nxGenB:0' or 'Feb1nxGenC:1' or 'Feb4nxBT'\n");
00041       printf("       -detect - detecting connected febs automatically\n");
00042       return 1;
00043    }
00044 
00045    const char* brdname = argv[1];
00046 
00047    printf("Connecting to %s\n", brdname);
00048 
00049    base::Board* gbrd = base::Board::Connect(brdname, base::roleControl);
00050 
00051    if (gbrd==0) {
00052       printf("Cannot connect to board %s\n", brdname);
00053       return 1;
00054    }
00055 
00056    uint32_t hw_kind = gbrd->getFrontendKind();
00057 
00058    uint32_t hw_ver = gbrd->getHardwareVersion();
00059 
00060    roc::Board* brd = dynamic_cast<roc::Board*> (gbrd);
00061 
00062    roc::I2cDevice::addAddrMap(gbrd);
00063    base::Gpio::addAddrMap(gbrd);
00064 
00065    nxyter::RocNx::addAddrMap(gbrd, hw_kind);
00066    nxyter::MainAdc::addAddrMap(gbrd);
00067 
00068   feet::RocFeet::addAddrMap(gbrd, hw_kind);
00069 
00070    int appargc = 1;
00071 
00072    QApplication app(appargc, argv);
00073 
00074    QMainWindow main;
00075    main.resize(800,600);
00076 
00077    QStatusBar* status = new QStatusBar(&main);
00078    main.setStatusBar(status);
00079 
00080    QPushButton* btn1 = new QPushButton("&Get", status);
00081    btn1->setMaximumHeight(20); btn1->setMaximumWidth(50);
00082    btn1->setToolTip("Get registers values for current selected widget (Alt+G)");
00083    btn1->setShortcut(Qt::ALT + Qt::Key_G);
00084    status->addPermanentWidget(btn1);
00085 
00086    QPushButton* btn2 = new QPushButton("&Set", status);
00087    btn2->setMaximumHeight(20); btn2->setMaximumWidth(50);
00088    btn2->setToolTip("Set registers values for current selected widget (Alt+S)");
00089    btn2->setShortcut(Qt::ALT + Qt::Key_S);
00090    status->addPermanentWidget(btn2);
00091 
00092    QPushButton* btn3 = new QPushButton("&Dflt", status);
00093    btn3->setMaximumHeight(20); btn3->setMaximumWidth(50);
00094    btn3->setToolTip("Set registers in current widget to default values (Alt-D)");
00095    btn3->setShortcut(Qt::ALT + Qt::Key_D);
00096    status->addPermanentWidget(btn3);
00097 
00098    QPushButton* btn4 = new QPushButton("Get &all", status);
00099    btn4->setMaximumHeight(20);
00100    btn4->setToolTip("Get registers values for all widgets (Alt-A)");
00101    btn4->setShortcut(Qt::ALT + Qt::Key_A);
00102    status->addPermanentWidget(btn4);
00103 
00104    QPushButton* btn5 = new QPushButton("Se&t all", status);
00105    btn5->setMaximumHeight(20);
00106    btn5->setToolTip("Set registers values for all widgets (Alt-T)");
00107    btn5->setShortcut(Qt::ALT + Qt::Key_T);
00108    status->addPermanentWidget(btn5);
00109 
00110    QPushButton* btn6 = new QPushButton("Sav&e", status);
00111    btn6->setMaximumHeight(20); btn6->setMaximumWidth(50);
00112    btn6->setToolTip("&Export registers values in form of rocutil macro (Alt-E)");
00113    btn6->setShortcut(Qt::ALT + Qt::Key_E);
00114    status->addPermanentWidget(btn6);
00115 
00116    status->showMessage("Test");
00117 
00118    RocTabsWidget* tabs = new RocTabsWidget(&main, brd);
00119 
00120    BoardWidget* bw = new BoardWidget(tabs, gbrd);
00121    tabs->addTab(bw, "Board");
00122 
00123    RocNxWidget* nxwidg = 0;
00124    RocFeetWidget* feetwidg = 0;
00125 
00126    if (brd!=0) {
00127 
00128       RocMainWidget* roc_mw = new RocMainWidget(tabs, brd);
00129 
00130       tabs->addTab(roc_mw,"ROC");
00131 
00132       roc::UdpBoard* udp = dynamic_cast<roc::UdpBoard*> (brd);
00133       if (udp!=0) tabs->addTab(new UdpWidget(tabs, udp), "UDP");
00134 
00135       roc::OpticBoard* optic = dynamic_cast<roc::OpticBoard*> (brd);
00136       if (optic!=0) tabs->addTab(new OpticWidget(tabs, optic), "Optics");
00137    }
00138 
00139    if ((hw_kind == base::kind_nXYTER) || (hw_kind == base::kind_newNX)) {
00140       tabs->addTab(new GpioWidget(tabs, gbrd), "GPIO");
00141       nxwidg = new RocNxWidget(tabs, gbrd);
00142       tabs->addTab(nxwidg, "RocNx");
00143    }
00144 
00145    if ((hw_kind == base::kind_FEET) || (hw_kind == base::kind_oldFEET))
00146       if (brd!=0) {
00147          feetwidg = new RocFeetWidget(tabs, brd);
00148          if (feetwidg->isSupportGpio())
00149             tabs->addTab(new GpioWidget(tabs, brd), "GPIO");
00150          tabs->addTab(feetwidg, "RocFeet");
00151          tabs->addTab(new DataWidget(tabs, brd), "FeetData");
00152       }
00153 
00154    main.setCentralWidget(tabs);
00155 
00156    main.setWindowTitle(brdname);
00157 
00158    tabs->connect(btn1, SIGNAL(clicked()), tabs, SLOT(getCurrConfig()));
00159    tabs->connect(btn2, SIGNAL(clicked()), tabs, SLOT(setCurrConfig()));
00160    tabs->connect(btn3, SIGNAL(clicked()), tabs, SLOT(setCurrDefault()));
00161 
00162    tabs->connect(btn4, SIGNAL(clicked()), tabs, SLOT(getFullConfig()));
00163    tabs->connect(btn5, SIGNAL(clicked()), tabs, SLOT(setFullConfig()));
00164    tabs->connect(btn6, SIGNAL(clicked()), tabs, SLOT(saveFullConfig()));
00165 
00166    tabs->setStatusBar(status);
00167 
00168 
00169    int num = 2;
00170    while (num < argc) {
00171       if ((strcmp(argv[num],"-feb")==0) && (nxwidg!=0)) {
00172          num++;
00173 
00174          if ((num<argc) && (argv[num][0] != '-'))
00175             nxwidg->selectFeb(argv[num++]);
00176 
00177          nxwidg->addFeb();
00178          continue;
00179       }
00180 
00181       if ((strcmp(argv[num],"-detect")==0) && (nxwidg!=0)) {
00182          num++;
00183          nxwidg->detectFebs();
00184          continue;
00185       }
00186 
00187       printf("Unknown argument %s\n", argv[num]);
00188       num++;
00189    }
00190 
00191 
00192    main.show();
00193 
00194    int ret = app.exec();
00195 
00196    printf("Close connection to %s\n", brdname);
00197    roc::Board::Close(brd);
00198 
00199    return ret;
00200 }

Generated on Tue Dec 10 2013 04:52:22 for ROCsoft by  doxygen 1.7.1