OpenCores
URL https://opencores.org/ocsvn/riscv_vhdl/riscv_vhdl/trunk

Subversion Repositories riscv_vhdl

[/] [riscv_vhdl/] [trunk/] [debugger/] [src/] [gui_plugin/] [PeriphWidgets/] [GpioWidget.cpp] - Rev 4

Compare with Previous | Blame | View Log

#include "LedArea.h"
#include "DipArea.h"
#include "GpioWidget.h"
#include "moc_GpioWidget.h"
 
#include <QtCore/QDate>
#include <QtGui/QPainter>
#include <QtWidgets/QScrollBar>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QLabel>
#include <memory>
 
namespace debugger {
 
GpioWidget::GpioWidget(IGui *igui, QWidget *parent)
    : QWidget(parent) {
    igui_ = igui;
    newValue_.u.val[0] = 0;
 
    //setMinimumWidth(150);
    //setMinimumHeight(100); 
 
 
    QGridLayout *layout = new QGridLayout(this);
 
    // Row 0:
    QLabel *lbl1 = new QLabel(this);
    lbl1->setText(tr("User defined LEDs"));
    layout->addWidget(lbl1, 0, 0, 1, 2, Qt::AlignCenter);
 
    // Row 1
    LedArea *ledArea = new LedArea(this);
    layout->addWidget(ledArea, 1, 0, Qt::AlignCenter);
    connect(this, SIGNAL(signalLedValue(uint32_t)),
            ledArea, SLOT(slotUpdate(uint32_t)));
 
    QLabel *lbl2 = new QLabel(this);
    lbl2->setText(tr("xx"));
    layout->addWidget(lbl2, 1, 1, Qt::AlignLeft);
 
    // Row 2:
    QLabel *lbl3 = new QLabel(this);
    lbl3->setText(tr("User defined DIPs"));
    layout->addWidget(lbl3, 2, 0, 1, 2, Qt::AlignCenter);
 
    // Row 3:
    DipArea *dipArea = new DipArea(this);
    layout->addWidget(dipArea, 3, 0, Qt::AlignCenter);
    connect(this, SIGNAL(signalDipValue(uint32_t)),
            dipArea, SLOT(slotUpdate(uint32_t)));
 
    QLabel *lbl4 = new QLabel(this);
    lbl4->setText(tr("xx"));
    layout->addWidget(lbl4, 3, 1, Qt::AlignLeft);
 
    setLayout(layout);
 
    char tstr[64];
    uint32_t addr_gpio = 0x80000000;
    RISCV_sprintf(tstr, sizeof(tstr), "read 0x%08x 8", addr_gpio);
    cmdRd_.make_string(tstr);
}
 
GpioWidget::~GpioWidget() {
    igui_->removeFromQueue(static_cast<IGuiCmdHandler *>(this));
}
 
void GpioWidget::handleResponse(AttributeType *req, AttributeType *resp) {
    newValue_.u.val[0] = resp->to_uint64();
}
 
void GpioWidget::slotUpdateByTimer() {
    if (!isVisible()) {
        return;
    }
    value_ = newValue_;
    emit signalLedValue(value_.u.map.led);
    emit signalDipValue(value_.u.map.dip);
 
    igui_->registerCommand(static_cast<IGuiCmdHandler *>(this), &cmdRd_, true);
}
 
}  // namespace debugger
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.