/** * @brief Retrieve device name * * @param devId uint8_t, ID of DPDK device * @param name char*, pointer to buffer where device name will be stored * * @return char* pointer to buffer where device name is stored if success and NULL otherwice */ char* DPDKAdapter::getDevName(uint8_t devId, char* name) { if(devId > RTE_MAX_ETHPORTS) { qCritical("Device ID is out of range"); sprintf(name, "Unknown device"); return name; } EthDevInfo_t info; if(!getDevInfo(devId, &info)) { sprintf(name, "Unknown device"); return name; } if(info.pci_dev == NULL) { sprintf(name, "Unknown device"); return name; } snprintf(name, sizeof(name), "dpdk%d", devId); return name; }
static void sendArp(char *srcDev, char *destDev) { int sock; struct arpMsg arp; unsigned char br_macaddr[ETH_ALEN]; unsigned char eth_macaddr[ETH_ALEN]; unsigned int br_ipAddr; struct sockaddr_ll sll; struct ifreq ifr; int flag; if ((getDevInfo(srcDev, IFIPADDR, (char *)&br_ipAddr) == 0) && (getDevInfo(srcDev, IFHWADDR, (char *)br_macaddr) == 0) && (getDevInfo(destDev, IFHWADDR, (char *)eth_macaddr) == 0)) { /* create device level socket */ if ((sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))) < 0) { perror("cannot open socket "); return; } memset(&sll, 0, sizeof(sll)); sll.sll_family = AF_PACKET; sll.sll_protocol = htons(ETH_P_ALL); /* get interface index number */ memset(&ifr, 0, sizeof(struct ifreq)); strcpy(ifr.ifr_name, destDev); if (ioctl(sock, SIOCGIFINDEX, &ifr) < 0) { perror("SIOCGIFINDEX(): "); close(sock); return; } sll.sll_ifindex = ifr.ifr_ifindex; /* bind the socket to the interface */ if (bind(sock, (struct sockaddr *)&sll, sizeof(sll)) == -1) { perror("bind(): "); close(sock); return; } /* set socket to non-blocking operation */ if ((flag = fcntl(sock, F_GETFL, 0)) >= 0) { fcntl(sock, F_SETFL, flag | O_NONBLOCK); } mkArpMsg(ARPOP_REQUEST, br_ipAddr, NULL, br_ipAddr, br_macaddr, &arp); sendto(sock, &arp, sizeof(arp), 0, (struct sockaddr *)&sll, sizeof(sll)); close(sock); } }
static int mmap_dgaDev(SolarisDgaLibInfo *libInfo, Dga_drawable dgadraw) { if (!libInfo->devInfo) { libInfo->devInfo = getDevInfo(dgadraw); if (!libInfo->devInfo) { return JDGA_FAILED; } } return (*libInfo->devInfo->function->winopen)(&(libInfo->winInfo)); }
static jboolean Solaris_DGA_Available(Display *display) { Window root; int screen; Dga_drawable dgaDrawable; SolarisJDgaDevInfo * devinfo; /* return true if any screen supports DGA and we have a library for this type of framebuffer */ for (screen = 0; screen < XScreenCount(display); screen++) { root = RootWindow(display, screen); dgaDrawable = XDgaGrabDrawable(display, root); if (dgaDrawable != 0) { devinfo = getDevInfo(dgaDrawable); XDgaUnGrabDrawable(dgaDrawable); if (devinfo != NULL) { return JNI_TRUE; } } } return JNI_FALSE; }
void MainWindow::initWidgets() { tabwidget = new QTabWidget(this); QWidget *widget = new QWidget(this); QGridLayout *layout = new QGridLayout(widget); QScrollArea *areasettings = new QScrollArea(this); #if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS) && !defined(Q_OS_WINPHONE) areasettings->setWidgetResizable(true); areasettings->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); #endif #ifndef Q_OS_ANDROID m_ffmpeg = new FFMPEGClass(this); #endif m_ffmpeg_terminating = false; m_ffmpeg_playing = false; QWidget *widgetsettings = new QWidget(this); QGridLayout *layout1 = new QGridLayout(widgetsettings); comboboxaudioinput = new QComboBox(this); boxlisteninput = new QCheckBox(this); boxlisteninput->setText("Listen"); listconnections = new QListWidget(this); lineport = new QLineEdit(this); linemaxconnections = new QLineEdit(this); linesamplerate = new QLineEdit(this); linechannels = new QLineEdit(this); buttonstart = new QPushButton(this); buttonstart->setText("Start Server"); lineid = new QLineEdit(this); linepassword = new QLineEdit(this); linepassword->setEchoMode(QLineEdit::Password); labelvolume = new QLabel(this); slidervolume = new QSlider(Qt::Horizontal, this); slidervolume->setRange(0, 100); buttonstart->setDefault(true); texteditsettings = new QPlainTextEdit(this); layout1->addWidget(new QLabel("Input device:", this), 0, 0); layout1->addWidget(comboboxaudioinput, 0, 1); layout1->addWidget(boxlisteninput, 0, 2); layout1->addWidget(new QLabel("Port:", this), 1, 0); layout1->addWidget(lineport, 1, 1); layout1->addWidget(buttonstart, 1, 2); layout1->addWidget(new QLabel("Maximum connections:", this), 2, 0); layout1->addWidget(linemaxconnections, 2, 1, 1, 2); layout1->addWidget(new QLabel("ID:", this), 3, 0); layout1->addWidget(lineid, 3, 1, 1, 2); layout1->addWidget(new QLabel("Password:"******"Sample rate:", this), 5, 0); layout1->addWidget(linesamplerate, 5, 1, 1, 2); layout1->addWidget(new QLabel("Channels:", this), 6, 0); layout1->addWidget(linechannels, 6, 1, 1, 2); areasettings->setWidget(widgetsettings); bars = new BarsWidget(this); waveform = new WaveFormWidget(this); level = new LevelWidget(this); waveform->setMinimumHeight(10); waveform->setMaximumHeight(100); bars->setMinimumHeight(100); QWidget *analyzer = new QWidget(this); QGridLayout *layout_analyzer = new QGridLayout(analyzer); layout_analyzer->setMargin(0); layout_analyzer->addWidget(waveform, 0, 0); layout_analyzer->addWidget(bars, 1, 0); linerecordpath = new QLineEdit(this); buttonsearch = new QPushButton(this); buttonrecord = new QPushButton(this); buttonrecordstop = new QPushButton(this); lcdtime = new QLCDNumber(this); boxautostart = new QCheckBox("Auto start recording when server starts", this); QWidget *recorder = new QWidget(this); QGridLayout *layout_record = new QGridLayout(recorder); layout_record->addWidget(new QLabel("Audio file:", this), 0, 0); layout_record->addWidget(linerecordpath, 0, 1); layout_record->addWidget(buttonsearch, 0, 2); layout_record->addWidget(buttonrecord, 0, 3); layout_record->addWidget(buttonrecordstop, 0, 4); layout_record->addWidget(lcdtime, 1, 0, 1, 5); layout_record->addWidget(boxautostart, 2, 0, 1, 5); texteditlog = new QPlainTextEdit(this); texteditlog->setMaximumBlockCount(10000); debug_edit = texteditlog; tabwidget->addTab(areasettings," Settings"); #ifndef Q_OS_ANDROID tabwidget->addTab(m_ffmpeg, "FFMPEG"); #else tabwidget->addTab(new QWidget(this), "FFMPEG"); tabwidget->setTabEnabled(1, false); #endif tabwidget->addTab(analyzer, "Analyzer"); tabwidget->addTab(listconnections, "Connections"); tabwidget->addTab(recorder, "Record"); tabwidget->addTab(texteditsettings, "Info"); tabwidget->addTab(texteditlog, "Log"); layout->addWidget(tabwidget, 0, 0, 1, 1); layout->addWidget(labelvolume, 1, 0, 1, 1); layout->addWidget(slidervolume, 2, 0, 1, 1); layout->addWidget(level, 0, 1, 3, 1); slidervolume->setEnabled(false); texteditsettings->setReadOnly(true); texteditlog->setReadOnly(true); connect(boxlisteninput, &QCheckBox::clicked, this, &MainWindow::boxListenInputClicked); connect(slidervolume, &QSlider::valueChanged, this, &MainWindow::volumeChanged); connect(lineport, &QLineEdit::returnPressed, this, &MainWindow::start); connect(linemaxconnections, &QLineEdit::returnPressed, this, &MainWindow::start); connect(lineid, &QLineEdit::returnPressed, this, &MainWindow::start); connect(linepassword, &QLineEdit::returnPressed, this, &MainWindow::start); connect(buttonstart, &QPushButton::clicked, this, &MainWindow::start); connect(buttonsearch, &QPushButton::clicked, this, &MainWindow::setRecordPath); connect(buttonrecord, &QPushButton::clicked, this, &MainWindow::startPauseRecord); connect(buttonrecordstop, &QPushButton::clicked, this, &MainWindow::stopRecord); resetRecordPage(); #ifndef Q_OS_ANDROID connect(m_ffmpeg, &FFMPEGClass::rawAudio, this, &MainWindow::ffmpegdata); connect(m_ffmpeg, &FFMPEGClass::mediaPlay, this, &MainWindow::ffmpegplay); connect(m_ffmpeg, &FFMPEGClass::mediaPause, this, &MainWindow::ffmpegpause); connect(m_ffmpeg, &FFMPEGClass::mediaStop, this, &MainWindow::ffmpegstop); connect(m_ffmpeg, &FFMPEGClass::allFinished, this, &MainWindow::ffmpegallfinished); #endif lineport->setText("1024"); linemaxconnections->setText("10"); slidervolume->setValue(100); widgetsettings->setFixedHeight(widgetsettings->sizeHint().height()); setCentralWidget(widget); getDevInfo(); }