|
|
@ -60,8 +60,9 @@ void MainWindow::doinui_slot(QFunction func) { |
|
|
|
if (func.get()) func.get()(); |
|
|
|
} |
|
|
|
|
|
|
|
void MainWindow::push_reg(QWidget *parent, int off, const char *regname, int32_t regadd, int32_t rwflag) { |
|
|
|
void MainWindow::push_reg(QWidget *parent, int off, const char *regname, int32_t regadd, int32_t rwflag, reg_val_type_t regvaltype) { |
|
|
|
DispalyRegIterm *regitem = new DispalyRegIterm(); |
|
|
|
regitem->regvaltype = regvaltype; |
|
|
|
{ |
|
|
|
auto *label = new QLabel(parent); |
|
|
|
label->setObjectName(QString::fromUtf8("label")); |
|
|
@ -71,7 +72,7 @@ void MainWindow::push_reg(QWidget *parent, int off, const char *regname, int32_t |
|
|
|
sizePolicy1.setVerticalStretch(0); |
|
|
|
sizePolicy1.setHeightForWidth(label->sizePolicy().hasHeightForWidth()); |
|
|
|
label->setSizePolicy(sizePolicy1); |
|
|
|
label->setMinimumSize(QSize(200, 0)); |
|
|
|
label->setMinimumSize(QSize(250, 0)); |
|
|
|
label->setMaximumSize(QSize(16777215, 16777215)); |
|
|
|
ui->reg_table->addWidget(label, off, 0, 1, 1); |
|
|
|
regitem->label = label; |
|
|
@ -80,7 +81,7 @@ void MainWindow::push_reg(QWidget *parent, int off, const char *regname, int32_t |
|
|
|
auto *textbrowser = new QTextBrowser(parent); |
|
|
|
textbrowser->setObjectName(QString::fromUtf8("textbrowser")); |
|
|
|
textbrowser->setEnabled(true); |
|
|
|
textbrowser->setText(QString("demo")); |
|
|
|
textbrowser->setText(QString("unset")); |
|
|
|
QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); |
|
|
|
sizePolicy.setHorizontalStretch(0); |
|
|
|
sizePolicy.setVerticalStretch(0); |
|
|
@ -129,8 +130,8 @@ void MainWindow::push_reg(QWidget *parent, int off, const char *regname, int32_t |
|
|
|
auto ecode = Xsync::Ins().reg_write(regadd, regval, readbackval); |
|
|
|
if (ecode == kxs_ec_success) { |
|
|
|
ZLOGI(TAG, "write reg 0x%04x %d success", regadd, regval); |
|
|
|
m_regdisplayer[regadd]->regvalcache = regval; |
|
|
|
m_regdisplayer[regadd]->regBrowser->setText(QString::number(regval, 16)); |
|
|
|
m_regdisplayer[regadd]->regvalcache = readbackval; |
|
|
|
updateUI_timeCodeInfo(regadd); |
|
|
|
} else { |
|
|
|
ZLOGE(TAG, "write reg 0x%04x %d fail,ecode:%s", regadd, regval, xs_error_code_2_str(ecode)); |
|
|
|
} |
|
|
@ -143,18 +144,52 @@ void MainWindow::push_reg(QWidget *parent, int off, const char *regname, int32_t |
|
|
|
m_regdisplayer[regadd] = regitem; |
|
|
|
} |
|
|
|
|
|
|
|
void MainWindow::updateUI_timeCodeInfo(uint32_t regoff) { |
|
|
|
// m_regdisplayer[regoff]->regBrowser->setText("0x" + QString::number(regValue, 16));
|
|
|
|
|
|
|
|
uint32_t regval = m_regdisplayer[regoff]->regvalcache; |
|
|
|
auto *regBrowser = m_regdisplayer[regoff]->regBrowser; |
|
|
|
reg_val_type_t regvaltype = m_regdisplayer[regoff]->regvaltype; |
|
|
|
|
|
|
|
if (regvaltype == kreg_val_type_dotted_hex) { |
|
|
|
regBrowser->setText(QString(fmt("%02x.%02x.%02x.%02x", (regval >> 0) & 0xff, (regval >> 8) & 0xff, (regval >> 16) & 0xff, (regval >> 24) & 0xff))); |
|
|
|
} else if (regvaltype == kreg_val_type_dotted_decimal) { |
|
|
|
regBrowser->setText(QString(fmt("%d.%d.%d.%d", (regval >> 0) & 0xff, (regval >> 8) & 0xff, (regval >> 16) & 0xff, (regval >> 24) & 0xff))); |
|
|
|
} else if (regvaltype == kreg_val_type_str) { |
|
|
|
char text[5] = {0}; |
|
|
|
memcpy(text, ®val, 4); |
|
|
|
regBrowser->setText(QString(text)); |
|
|
|
} else if (regvaltype == kreg_val_type_hex) { |
|
|
|
regBrowser->setText(QString(fmt("0x%08x", regval))); |
|
|
|
} else if (regvaltype == kreg_val_type_decimal) { |
|
|
|
regBrowser->setText(QString::number(regval, 10)); |
|
|
|
} else if (regvaltype == kreg_val_type_binary) { |
|
|
|
regBrowser->setText(QString::number(regval, 2)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void MainWindow::construct_reg_table() { //
|
|
|
|
int regoff = 1; |
|
|
|
|
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "software_version", kxsync_reg_software_version, 0); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "manufacturer0", kxsync_reg_manufacturer0, 0); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "manufacturer1", kxsync_reg_manufacturer1, 0); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "product_type_id", kxsync_reg_product_type_id, 0); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "sn_id0", kxsync_reg_sn_id0, 0); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "sn_id1", kxsync_reg_sn_id1, 0); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "sn_id2", kxsync_reg_sn_id2, 0); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "mac0", kxsync_reg_mac0, 0); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "mac1", kxsync_reg_mac1, 0); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "software_version", kxsync_reg_software_version, 0, kreg_val_type_dotted_decimal); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "manufacturer0", kxsync_reg_manufacturer0, 0, kreg_val_type_str); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "manufacturer1", kxsync_reg_manufacturer1, 0, kreg_val_type_str); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "product_type_id", kxsync_reg_product_type_id, 0, kreg_val_type_decimal); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "sn_id0", kxsync_reg_sn_id0, 0, kreg_val_type_dotted_hex); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "sn_id1", kxsync_reg_sn_id1, 0, kreg_val_type_dotted_hex); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "sn_id2", kxsync_reg_sn_id2, 0, kreg_val_type_dotted_hex); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "mac0", kxsync_reg_mac0, 0, kreg_val_type_dotted_hex); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "mac1", kxsync_reg_mac1, 0, kreg_val_type_dotted_hex); |
|
|
|
|
|
|
|
// kxsync_reg_stm32_ip
|
|
|
|
// kxsync_reg_stm32_gw
|
|
|
|
// kxsync_reg_stm32_netmask
|
|
|
|
// kxsync_reg_stm32_camera_sync_signal_count
|
|
|
|
|
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "stm32_ip", kxsync_reg_stm32_ip, 0, kreg_val_type_dotted_decimal); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "stm32_gw", kxsync_reg_stm32_gw, 0, kreg_val_type_dotted_decimal); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "stm32_netmask", kxsync_reg_stm32_netmask, 0, kreg_val_type_dotted_decimal); |
|
|
|
push_reg(ui->gridLayoutWidget, regoff++, "stm32_camera_sync_signal_count", kxsync_reg_stm32_camera_sync_signal_count, 0, kreg_val_type_decimal); |
|
|
|
|
|
|
|
// 设置table的高度
|
|
|
|
auto qrect = ui->gridLayoutWidget->geometry(); |
|
|
@ -222,26 +257,16 @@ void MainWindow::on_RefreshRegsButton_clicked() { // |
|
|
|
|
|
|
|
if (ecode == kxs_ec_success) { |
|
|
|
ZLOGI(TAG, "reg_read %x success", reg.first); |
|
|
|
emit doinui_signal(QFunction([this, regoff, regValue]() { |
|
|
|
m_regdisplayer[regoff]->regvalcache = regValue; |
|
|
|
m_regdisplayer[regoff]->regBrowser->setText("0x" + QString::number(regValue, 16)); |
|
|
|
})); |
|
|
|
emit doinui_signal(QFunction([this, regoff, regValue]() { updateUI_timeCodeInfo(regoff); })); |
|
|
|
} else { |
|
|
|
ZLOGE(TAG, "reg_read %x fail,ecode:%s", reg.first, xs_error_code_2_str(ecode)); |
|
|
|
suc = false; |
|
|
|
break; |
|
|
|
} |
|
|
|
emit doinui_signal(QFunction([this, regoff, regValue]() { |
|
|
|
m_regdisplayer[regoff]->regvalcache = 0; |
|
|
|
m_regdisplayer[regoff]->regBrowser->setText("error"); |
|
|
|
})); |
|
|
|
} |
|
|
|
|
|
|
|
if (suc) { |
|
|
|
ZLOGI(TAG, "readreg end..."); |
|
|
|
} else { |
|
|
|
ZLOGI(TAG, "readreg error"); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
// xs_error_code_t ecode = Xsync::Ins().reg_write(0xABCDDCBA, 0x12345678);
|
|
|
|
// ZLOGI(TAG, "reg_write ecode:%s", xs_error_code_2_str(ecode));
|
|
|
|
} |
|
|
|
void MainWindow::on_ClearLogButton_clicked() { //
|
|
|
|
ui->logbrowser->clear(); |
|
|
@ -260,3 +285,40 @@ void MainWindow::mainWindowsRun() { // |
|
|
|
// xsudp->sendto(from, "hello\n", 5, NULL);
|
|
|
|
// });
|
|
|
|
} |
|
|
|
|
|
|
|
#define DO_XSYNC_FUNC(exptr) \
|
|
|
|
{ \ |
|
|
|
auto ecode = exptr; \ |
|
|
|
if (!(ecode == kxs_ec_success)) { \ |
|
|
|
ZLOGE(TAG, "do: %s fail,ecode:[%d](%s)", #exptr, ecode, xs_error_code_2_str(ecode)); \ |
|
|
|
return; \ |
|
|
|
} else { \ |
|
|
|
ZLOGI(TAG, "do: %s success", #exptr); \ |
|
|
|
} \ |
|
|
|
} |
|
|
|
|
|
|
|
void MainWindow::on_GenNewMac_clicked() { DO_XSYNC_FUNC(Xsync::Ins().generatorNewMac()); } |
|
|
|
void MainWindow::on_FactoryReset_clicked() { DO_XSYNC_FUNC(Xsync::Ins().factoryReset()); } |
|
|
|
void MainWindow::on_Reboot_clicked() { DO_XSYNC_FUNC(Xsync::Ins().reboot()); } |
|
|
|
void MainWindow::on_ChangeNetCfg_clicked() { //
|
|
|
|
DO_XSYNC_FUNC(Xsync::Ins().changeNetworkConfig(ui->ChangeNetCfg_ip->text().toStdString(), ui->ChangeNetCfg_mask->text().toStdString(), ui->ChangeNetCfg_gateway->text().toStdString())); |
|
|
|
} |
|
|
|
|
|
|
|
void MainWindow::on_WriteReg_clicked() { |
|
|
|
uint32_t regadd = str2int(ui->RegAdd->text()); |
|
|
|
uint32_t regval = str2int(ui->RegVal->text()); |
|
|
|
|
|
|
|
ZLOGI(TAG, "write reg 0x%08x %d", regadd, regval); |
|
|
|
uint32_t readbakval = 0; |
|
|
|
DO_XSYNC_FUNC(Xsync::Ins().reg_write(regadd, regval, readbakval)); |
|
|
|
|
|
|
|
ZLOGI(TAG, "write reg 0x%08x 0x%08x ,readback:0x%08x success", regadd, regval, readbakval); |
|
|
|
ui->RegVal->setText(QString(fmt("0x%08x", readbakval))); |
|
|
|
} |
|
|
|
void MainWindow::on_ReadReg_clicked() { |
|
|
|
uint32_t regadd = str2int(ui->RegAdd->text()); |
|
|
|
uint32_t regval = 0; |
|
|
|
DO_XSYNC_FUNC(Xsync::Ins().reg_read(regadd, regval)); |
|
|
|
ZLOGI(TAG, "read reg 0x%08x 0x%08x success", regadd, regval); |
|
|
|
ui->RegVal->setText(QString(fmt("0x%08x", regval))); |
|
|
|
} |