zhaohe 1 year ago
parent
commit
100f3b734b
  1. 1
      CMakeLists.txt
  2. 6
      CMakeLists.txt.user
  3. 176
      mainwindow.cpp
  4. 9
      mainwindow.h
  5. 83
      mainwindow.ui
  6. 39
      src/camera_light_src_timing_controller/clst_controler.cpp
  7. 16
      src/camera_light_src_timing_controller/clst_controler.hpp
  8. 81
      src/camera_light_src_timing_controller/clst_controler_sig_type.cpp
  9. 419
      src/camera_light_src_timing_controller/reginfo.cpp
  10. 38
      src/camera_light_src_timing_controller/reginfo.hpp
  11. 2
      src/version.h

1
CMakeLists.txt

@ -34,6 +34,7 @@ set(PROJECT_SOURCES
src/camera_light_src_timing_controller/clst_controler.cpp
src/camera_light_src_timing_controller/qt_serial_datachannel.cpp
src/camera_light_src_timing_controller/clst_controler_sig_type.cpp
src/camera_light_src_timing_controller/reginfo.cpp
zaf_protocol/zaf_ecode.c
zaf_protocol/zaf_protocol.c

6
CMakeLists.txt.user

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 5.0.2, 2024-03-12T16:21:53. -->
<!-- Written by QtCreator 5.0.2, 2024-04-23T18:31:00. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
@ -94,7 +94,7 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.12.12 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.12.12 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.51212.win64_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">2</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
@ -262,7 +262,7 @@
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/workspace/p_camera_light_source_timing_controller/build-camera_light_src_timing_controller_pc-Desktop_Qt_5_12_12_MinGW_64_bit-Release</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/workspace/p_camera_light_source_timing_controller/build-camera_light_src_timing_controller_pc-Desktop_Qt_5_12_12_MinGW_64_bit-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>

176
mainwindow.cpp

@ -66,7 +66,7 @@ static const QString zaferror_to_str(zaf_error_code_t value) {
return "未知错误";
}
}
#if 1
#define DO_NO_RET(action) \
{ \
zaf_error_code_t ecode = action; \
@ -76,6 +76,15 @@ static const QString zaferror_to_str(zaf_error_code_t value) {
return; \
} \
}
#endif
#define DO_NO_RET_AND_NOLOG(action) \
{ \
zaf_error_code_t ecode = action; \
if (ecode != kaf_ec_success) { \
return; \
} \
}
#define DO(action) \
{ \
@ -219,7 +228,7 @@ void MainWindow::refreshReadonlyPage0() {
{
float TriOutSignalFreq;
DO_NO_RET(m_clstc->InterClk_readTriOutSignalFreq(TriOutSignalFreq));
DO_NO_RET_AND_NOLOG(m_clstc->InterClk_readTriOutSignalFreq(TriOutSignalFreq));
emit doinui_signal(QFunction([this, TriOutSignalFreq]() { //
ui->InterClk_TriOutSignalFreq_Text->setText(QString::number(TriOutSignalFreq, 'f', 2));
}));
@ -235,8 +244,8 @@ void MainWindow::refreshReadonlyPage1() {
float outfreq;
#define UPDATE(index) \
DO_NO_RET(m_clstc->TriInX_readInSignalFreq(index, infreq)); \
DO_NO_RET(m_clstc->TriInX_readOutSignalFreq(index, outfreq)); \
DO_NO_RET_AND_NOLOG(m_clstc->TriInX_readInSignalFreq(index, infreq)); \
DO_NO_RET_AND_NOLOG(m_clstc->TriInX_readOutSignalFreq(index, outfreq)); \
{ \
emit doinui_signal(QFunction([this, infreq, outfreq]() { \
ui->TriInX_OutSignalFreq_Val_##index->setText(QString::number(outfreq, 'f', 2)); \
@ -263,9 +272,9 @@ void MainWindow::refreshReadonlyPage2() {
uint32_t state;
#define UPDATE(index) \
DO_NO_RET(m_clstc->LightSrcX_readInSigFreqDetect(index, infreq)); \
DO_NO_RET(m_clstc->LightSrcX_readOutSigFreqDetect(index, outfreq)); \
DO_NO_RET(m_clstc->LightSrcX_readLightSrcErrorState(index, state)); \
DO_NO_RET_AND_NOLOG(m_clstc->LightSrcX_readInSigFreqDetect(index, infreq)); \
DO_NO_RET_AND_NOLOG(m_clstc->LightSrcX_readOutSigFreqDetect(index, outfreq)); \
DO_NO_RET_AND_NOLOG(m_clstc->LightSrcX_readLightSrcErrorState(index, state)); \
{ \
emit doinui_signal(QFunction([this, infreq, outfreq, state]() { \
ui->LightSrcX_InSigFreqDetect_##index->setText(QString::number(infreq, 'f', 2)); \
@ -305,16 +314,15 @@ zaf_error_code_t MainWindow::refreshPage() {
{
uint32_t upperVersion = VERSION;
uint32_t FPGAVersion = 0;
uint32_t ARMVersion = 0;
uint32_t FPGAVersion = 0;
uint32_t ARMVersion = 0;
DO(m_clstc->reg_read(kreg_fpga_version, FPGAVersion));
DO(m_clstc->reg_read(kreg_fpga_version, FPGAVersion));
DO(m_clstc->reg_read(kreg_software_version, ARMVersion));
ui->UpperVersion->setText(QString::number(upperVersion));
ui->FPGAVersion->setText(QString::number(FPGAVersion));
ui->ARMVersion->setText(QString::number(ARMVersion));
}
/*******************************************************************************
@ -540,10 +548,11 @@ void MainWindow::constructUI() {
ecode = refreshPage();
if (ecode != kaf_ec_success) return;
DO_NO_RET(m_clstc->InterClk_trigger());
dumpLog("提交成功");
displayInfo(true, "提交成功");
QMessageBox::about(NULL, "消息", "提交成功");
// QMessageBox::about(NULL, "消息", "提交成功");
});
/*******************************************************************************
@ -573,6 +582,7 @@ void MainWindow::constructUI() {
*******************************************************************************/
connect(ui->factoryResetKey, &QPushButton::clicked, this, [=](bool check) { //
DO_NO_RET(m_clstc->factoryReset());
dumpLog("恢复出厂设置成功");
displayInfo(true, "恢复出厂设置成功");
QMessageBox::about(NULL, "消息", "恢复出厂设置成功");
@ -657,28 +667,29 @@ void MainWindow::constructUI() {
QStringList LightSrcX_TriSrc_QStringList;
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::LOGIC0).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::LOGIC1).toString()));
// LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::LOGIC1).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::INTERNAL_TRIGGER).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_1).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_2).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_3).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_4).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::INTERNAL_TRIGGER_I1).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::INTERNAL_TRIGGER_I2).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::INTERNAL_TRIGGER_I3).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::INTERNAL_TRIGGER_I4).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_1).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_1_I1).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_1_I2).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_1_I3).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_1_I4).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_2).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_2_I1).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_2_I2).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_2_I3).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_2_I4).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_3).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_3_I1).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_3_I2).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_3_I3).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_3_I4).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_4).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_4_I1).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_4_I2).toString()));
LightSrcX_TriSrc_QStringList.append(QString::fromStdString(InternalSig(InternalSig::EXT_TRIGGER_4_I3).toString()));
@ -731,6 +742,112 @@ void MainWindow::constructUI() {
ui->InterClk_TriOutSignalFreq_Text->setDisabled(true);
}
void MainWindow::enterProfessionalModel() {
ui->refreshPageKey->show();
ui->TriInX_FreqDetectBias_Lable_1->show();
ui->TriInX_FreqDetectBias_Lable_2->show();
ui->TriInX_FreqDetectBias_Lable_3->show();
ui->TriInX_FreqDetectBias_Lable_4->show();
ui->TriInX_FreqDetectBias_Val_1->show();
ui->TriInX_FreqDetectBias_Val_2->show();
ui->TriInX_FreqDetectBias_Val_3->show();
ui->TriInX_FreqDetectBias_Val_4->show();
ui->TriInX_Mode_Lable_1->show();
ui->TriInX_Mode_Lable_2->show();
ui->TriInX_Mode_Lable_3->show();
ui->TriInX_Mode_Lable_4->show();
ui->TriInX_Mode_Val_1->show();
ui->TriInX_Mode_Val_2->show();
ui->TriInX_Mode_Val_3->show();
ui->TriInX_Mode_Val_4->show();
ui->LightSrcX_LightDriverFreq_Lable_1->show();
ui->LightSrcX_LightDriverFreq_Lable_2->show();
ui->LightSrcX_LightDriverFreq_Lable_3->show();
ui->LightSrcX_LightDriverFreq_Lable_4->show();
ui->LightSrcX_LightDriverFreq_1->show();
ui->LightSrcX_LightDriverFreq_2->show();
ui->LightSrcX_LightDriverFreq_3->show();
ui->LightSrcX_LightDriverFreq_4->show();
ui->ShutterX_OutputCtrlMode_Lable_1->show();
ui->ShutterX_OutputCtrlMode_Lable_2->show();
ui->ShutterX_OutputCtrlMode_Lable_3->show();
ui->ShutterX_OutputCtrlMode_Lable_4->show();
ui->ShutterX_OutputCtrlMode_1->show();
ui->ShutterX_OutputCtrlMode_2->show();
ui->ShutterX_OutputCtrlMode_3->show();
ui->ShutterX_OutputCtrlMode_4->show();
ui->ShutterX_InSigSelect_Lable_1->show();
ui->ShutterX_InSigSelect_Lable_2->show();
ui->ShutterX_InSigSelect_Lable_3->show();
ui->ShutterX_InSigSelect_Lable_4->show();
ui->ShutterX_InSigSelect_1->show();
ui->ShutterX_InSigSelect_2->show();
ui->ShutterX_InSigSelect_3->show();
ui->ShutterX_InSigSelect_4->show();
ui->LOGBOX->show();
ui->RegOpeation->show();
}
void MainWindow::exitProfessionalModel() {
ui->refreshPageKey->hide();
ui->TriInX_FreqDetectBias_Lable_1->hide();
ui->TriInX_FreqDetectBias_Lable_2->hide();
ui->TriInX_FreqDetectBias_Lable_3->hide();
ui->TriInX_FreqDetectBias_Lable_4->hide();
ui->TriInX_FreqDetectBias_Val_1->hide();
ui->TriInX_FreqDetectBias_Val_2->hide();
ui->TriInX_FreqDetectBias_Val_3->hide();
ui->TriInX_FreqDetectBias_Val_4->hide();
ui->TriInX_Mode_Lable_1->hide();
ui->TriInX_Mode_Lable_2->hide();
ui->TriInX_Mode_Lable_3->hide();
ui->TriInX_Mode_Lable_4->hide();
ui->TriInX_Mode_Val_1->hide();
ui->TriInX_Mode_Val_2->hide();
ui->TriInX_Mode_Val_3->hide();
ui->TriInX_Mode_Val_4->hide();
ui->LightSrcX_LightDriverFreq_Lable_1->hide();
ui->LightSrcX_LightDriverFreq_Lable_2->hide();
ui->LightSrcX_LightDriverFreq_Lable_3->hide();
ui->LightSrcX_LightDriverFreq_Lable_4->hide();
ui->LightSrcX_LightDriverFreq_1->hide();
ui->LightSrcX_LightDriverFreq_2->hide();
ui->LightSrcX_LightDriverFreq_3->hide();
ui->LightSrcX_LightDriverFreq_4->hide();
ui->ShutterX_OutputCtrlMode_Lable_1->hide();
ui->ShutterX_OutputCtrlMode_Lable_2->hide();
ui->ShutterX_OutputCtrlMode_Lable_3->hide();
ui->ShutterX_OutputCtrlMode_Lable_4->hide();
ui->ShutterX_OutputCtrlMode_1->hide();
ui->ShutterX_OutputCtrlMode_2->hide();
ui->ShutterX_OutputCtrlMode_3->hide();
ui->ShutterX_OutputCtrlMode_4->hide();
ui->ShutterX_InSigSelect_Lable_1->hide();
ui->ShutterX_InSigSelect_Lable_2->hide();
ui->ShutterX_InSigSelect_Lable_3->hide();
ui->ShutterX_InSigSelect_Lable_4->hide();
ui->ShutterX_InSigSelect_1->hide();
ui->ShutterX_InSigSelect_2->hide();
ui->ShutterX_InSigSelect_3->hide();
ui->ShutterX_InSigSelect_4->hide();
ui->LOGBOX->hide();
ui->RegOpeation->hide();
}
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
// G_SerialPort.moveToThread();
// QObject::connect(&G_SerialPortThread, &QThread::started, &G_SerialPort, &QSerialPort::open);
@ -751,6 +868,11 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
connect(this, SIGNAL(doinui_signal(QFunction)), this, SLOT(doinui_slot(QFunction)));
constructUI();
// 隐藏部分控件
exitProfessionalModel();
// 创建定时器
timer0 = new QTimer(this);
timer1 = new QTimer(this);
@ -780,10 +902,12 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
}));
}
refreshReadonlyPage0();
refreshReadonlyPage1();
refreshReadonlyPage2();
refreshReadonlyPage3();
if (connect) {
refreshReadonlyPage0();
refreshReadonlyPage1();
refreshReadonlyPage2();
refreshReadonlyPage3();
}
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
}
@ -841,3 +965,11 @@ void MainWindow::displayInfo(bool suc, QString info) {
}
MainWindow::~MainWindow() { delete ui; }
void MainWindow::on_ProfessionalModel_toggled(bool arg1) {
if (arg1) {
enterProfessionalModel();
} else {
exitProfessionalModel();
}
}

9
mainwindow.h

@ -29,10 +29,10 @@
#include <vector>
//
#include "camera_light_src_timing_controller/clst_controler.hpp"
#include "logger.hpp"
#include "qfunction.hpp"
#include "zqthread.hpp"
#include "camera_light_src_timing_controller/clst_controler.hpp"
QT_BEGIN_NAMESPACE
namespace Ui {
@ -84,11 +84,16 @@ class MainWindow : public QMainWindow {
bool checkConnected();
void enterProfessionalModel();
void exitProfessionalModel();
private slots:
/**
* @brief UI方法
*/
void doinui_slot(QFunction);
void on_ProfessionalModel_toggled(bool arg1);
signals:
void doinui_signal(QFunction);
@ -96,6 +101,6 @@ class MainWindow : public QMainWindow {
static void log_output(QtMsgType type, const QMessageLogContext &context, const QString &msg);
void constructUI();
void dumpLog(const char *fmt, ...);
void displayInfo(bool suc,QString info);
void displayInfo(bool suc, QString info);
};
#endif // MAINWINDOW_H

83
mainwindow.ui

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>1106</width>
<height>1058</height>
<height>966</height>
</rect>
</property>
<property name="sizePolicy">
@ -938,7 +938,7 @@ QGroupBox:title {
<widget class="QLabel" name="RegAddLable">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
@ -1037,6 +1037,12 @@ QGroupBox:title {
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="RegAdd">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
@ -1206,7 +1212,7 @@ QGroupBox:title {
<widget class="QWidget" name="content" native="true">
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QTabWidget" name="contentTab">
<widget class="QTabWidget" name="tabs">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
@ -1220,12 +1226,12 @@ QGroupBox:title {
</size>
</property>
<property name="currentIndex">
<number>0</number>
<number>3</number>
</property>
<property name="tabBarAutoHide">
<bool>true</bool>
</property>
<widget class="QWidget" name="tab0">
<widget class="QWidget" name="TriInXtab">
<attribute name="title">
<string>外部触发源配置</string>
</attribute>
@ -1495,7 +1501,7 @@ QGroupBox:title {
</size>
</property>
<property name="text">
<string>顺序触发最大计数</string>
<string>子信号数量</string>
</property>
</widget>
</item>
@ -1997,7 +2003,7 @@ QGroupBox:title {
</size>
</property>
<property name="text">
<string>顺序触发最大计数</string>
<string>子信号数量</string>
</property>
</widget>
</item>
@ -2111,7 +2117,7 @@ QGroupBox:title {
</size>
</property>
<property name="text">
<string>顺序触发最大计数</string>
<string>子信号数量</string>
</property>
</widget>
</item>
@ -2754,7 +2760,7 @@ QGroupBox:title {
</size>
</property>
<property name="text">
<string>顺序触发最大计数</string>
<string>子信号数量</string>
</property>
</widget>
</item>
@ -2849,7 +2855,7 @@ QGroupBox:title {
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<widget class="QWidget" name="InterClkTab">
<attribute name="title">
<string>内部触发源配置</string>
</attribute>
@ -3015,7 +3021,7 @@ QGroupBox:title {
</layout>
</widget>
</widget>
<widget class="QWidget" name="tab1">
<widget class="QWidget" name="LightSrcTab">
<attribute name="title">
<string>光源时序配置</string>
</attribute>
@ -4356,7 +4362,7 @@ QGroupBox:title {
</item>
</layout>
</widget>
<widget class="QWidget" name="tab">
<widget class="QWidget" name="ShutterXtab">
<attribute name="title">
<string>快门时序配置</string>
</attribute>
@ -5286,19 +5292,40 @@ QGroupBox:title {
</widget>
</item>
<item>
<widget class="QTextBrowser" name="instructionPreview">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<widget class="QGroupBox" name="LOGBOX">
<property name="maximumSize">
<size>
<width>0</width>
<height>100</height>
<width>16777215</width>
<height>0</height>
</size>
</property>
<property name="title">
<string>日志</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QTextBrowser" name="instructionPreview">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>0</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
@ -5324,10 +5351,22 @@ QGroupBox:title {
<property name="title">
<string>IFLYTOP</string>
</property>
<addaction name="ProfessionalModel"/>
</widget>
<addaction name="menu123"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="ProfessionalModel">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>专业模式</string>
</property>
<property name="toolTip">
<string>专业模式</string>
</property>
</action>
</widget>
<resources/>
<connections/>

39
src/camera_light_src_timing_controller/clst_controler.cpp

@ -4,6 +4,7 @@
#include <string.h>
#include "logger.hpp"
#include "reginfo.hpp"
using namespace iflytop;
using namespace clst;
@ -180,7 +181,41 @@ zaf_error_code_t CLSTControler::sendPacket(zaf_packet_header_t *packet, uint32_t
return kaf_ec_overtime;
}
zaf_error_code_t CLSTControler::reg_write(uint32_t regadd, uint32_t regvalue, uint32_t &regbackvalue, int32_t overtime_ms) { //
zaf_error_code_t CLSTControler::reg_write(uint32_t regadd, uint32_t regvalue, uint32_t &regbackvalue, int32_t overtime_ms) {
Reginfo *reg = GetRegInfo(regadd);
if (reg == nullptr) {
return kaf_ec_param_error;
}
if (!reg->dirty && reg->regshadow == regvalue) {
return kaf_ec_success;
}
reg->dirty = true;
return _reg_write(regadd, regvalue, regbackvalue, overtime_ms);
}
zaf_error_code_t CLSTControler::reg_read(uint32_t regadd, uint32_t &regvalue, int32_t overtime_ms) {
Reginfo *reg = GetRegInfo(regadd);
if (reg == nullptr) {
return kaf_ec_param_error;
}
if (!reg->dirty && !(reg->flag & kreg_flag_volatile)) {
regvalue = reg->regshadow;
return kaf_ec_success;
}
uint32_t regbackvalue = 0;
zaf_error_code_t ecode = _reg_read(regadd, regbackvalue, overtime_ms);
if (ecode == kaf_ec_success) {
reg->dirty = false;
reg->regshadow = regbackvalue;
regvalue = regbackvalue;
}
return ecode;
}
zaf_error_code_t CLSTControler::_reg_write(uint32_t regadd, uint32_t regvalue, uint32_t &regbackvalue, int32_t overtime_ms) { //
lock_guard<mutex> lock(m_tx_lock);
uint8_t txdata[128] = {0};
@ -219,7 +254,7 @@ uint32_t CLSTControler::reg_read_v2(uint32_t regadd) {
return regvalue;
}
zaf_error_code_t CLSTControler::reg_read(uint32_t regadd, uint32_t &regvalue, int32_t overtime_ms) {
zaf_error_code_t CLSTControler::_reg_read(uint32_t regadd, uint32_t &regvalue, int32_t overtime_ms) {
lock_guard<mutex> lock(m_tx_lock);
uint8_t txdata[128] = {0};

16
src/camera_light_src_timing_controller/clst_controler.hpp

@ -80,18 +80,21 @@ class CLSTControler {
void initDevice();
public:
zaf_error_code_t _reg_write(uint32_t regadd, uint32_t regvalue, uint32_t &regbackvalue, int32_t overtime_ms = 30);
zaf_error_code_t _reg_read(uint32_t regadd, uint32_t &regvalue, int32_t overtime_ms = 30);
zaf_error_code_t reg_write(uint32_t regadd, uint32_t regvalue, uint32_t &regbackvalue, int32_t overtime_ms = 30);
zaf_error_code_t reg_read(uint32_t regadd, uint32_t &regvalue, int32_t overtime_ms = 30);
zaf_error_code_t reg_write(uint32_t regadd, uint32_t regvalue) {
uint32_t regbackvalue;
return reg_write(regadd, regvalue, regbackvalue, 30);
}
zaf_error_code_t reg_read(uint32_t regadd, uint32_t &regvalue, int32_t overtime_ms = 30);
uint32_t reg_read_v2(uint32_t regadd);
uint32_t reg_read_v2(uint32_t regadd);
public:
zaf_error_code_t readFPGAVersion(uint32_t& freq);
zaf_error_code_t readStm32Version(uint32_t& freq);
zaf_error_code_t readFPGAVersion(uint32_t &freq);
zaf_error_code_t readStm32Version(uint32_t &freq);
/*******************************************************************************
* *
@ -128,8 +131,7 @@ class CLSTControler {
zaf_error_code_t TriInX_getTriggerModeTriggerEdge(int32_t index, TriggerEdge &edge);
zaf_error_code_t TriInX_getTriggerModeFreqDivision(int32_t index, uint32_t &division);
zaf_error_code_t TriInX_getTriggerModeFreqMultiplication(int32_t index, uint32_t &multiplication);
zaf_error_code_t TriInX_getSequentialControlPluseCntMax(int32_t index, uint32_t& cnt);
zaf_error_code_t TriInX_getSequentialControlPluseCntMax(int32_t index, uint32_t &cnt);
zaf_error_code_t TriInX_readInSignalFreq(int32_t index, float &freq);
zaf_error_code_t TriInX_readOutSignalFreq(int32_t index, float &freq);

81
src/camera_light_src_timing_controller/clst_controler_sig_type.cpp

@ -4,54 +4,55 @@ using namespace iflytop;
using namespace clst;
map<string, ExtTriggerSrcType::EnumType_t> ExtTriggerSrcType::emap = {
{"OPTOCOUPLER_INPUT", OPTOCOUPLER_INPUT}, //
{"DIFF_INPUT", DIFF_INPUT}, //
{"光耦输入", OPTOCOUPLER_INPUT}, //
{"差分输入", DIFF_INPUT}, //
};
map<string, TriggerEdge::EnumType_t> TriggerEdge::emap = {
{"RISING", RISING}, //
{"FALLING", FALLING}, //
{"BOTH", BOTH} //
{"上升沿", RISING}, //
{"下降沿", FALLING}, //
{"双边沿", BOTH} //
};
map<string, SigProcessMode::EnumType_t> SigProcessMode::emap = {
{"TRIGGER_MODE", TRIGGER_MODE}, //
{"TRANSPARENT_MODE", TRANSPARENT_MODE}, //
{"BIND_MODE", BIND_MODE} //
{"触发模式", TRIGGER_MODE}, //
{"转发模式", TRANSPARENT_MODE}, //
{"绑定模式", BIND_MODE} //
};
map<string, InternalSig::EnumType_t> InternalSig::emap = {
{"LOGIC0", LOGIC0}, //
{"LOGIC1", LOGIC1}, //
{"INTERNAL_TRIGGER", INTERNAL_TRIGGER}, //
{"INTERNAL_TRIGGER_I1", INTERNAL_TRIGGER_I1}, //
{"INTERNAL_TRIGGER_I2", INTERNAL_TRIGGER_I2}, //
{"INTERNAL_TRIGGER_I3", INTERNAL_TRIGGER_I3}, //
{"INTERNAL_TRIGGER_I4", INTERNAL_TRIGGER_I4}, //
{"EXT_TRIGGER_1", EXT_TRIGGER_1}, //
{"EXT_TRIGGER_1_I1", EXT_TRIGGER_1_I1}, //
{"EXT_TRIGGER_1_I2", EXT_TRIGGER_1_I2}, //
{"EXT_TRIGGER_1_I3", EXT_TRIGGER_1_I3}, //
{"EXT_TRIGGER_1_I4", EXT_TRIGGER_1_I4}, //
{"EXT_TRIGGER_2", EXT_TRIGGER_2}, //
{"EXT_TRIGGER_2_I1", EXT_TRIGGER_2_I1}, //
{"EXT_TRIGGER_2_I2", EXT_TRIGGER_2_I2}, //
{"EXT_TRIGGER_2_I3", EXT_TRIGGER_2_I3}, //
{"EXT_TRIGGER_2_I4", EXT_TRIGGER_2_I4}, //
{"EXT_TRIGGER_3", EXT_TRIGGER_3}, //
{"EXT_TRIGGER_3_I1", EXT_TRIGGER_3_I1}, //
{"EXT_TRIGGER_3_I2", EXT_TRIGGER_3_I2}, //
{"EXT_TRIGGER_3_I3", EXT_TRIGGER_3_I3}, //
{"EXT_TRIGGER_3_I4", EXT_TRIGGER_3_I4}, //
{"EXT_TRIGGER_4", EXT_TRIGGER_4}, //
{"EXT_TRIGGER_4_I1", EXT_TRIGGER_4_I1}, //
{"EXT_TRIGGER_4_I2", EXT_TRIGGER_4_I2}, //
{"EXT_TRIGGER_4_I3", EXT_TRIGGER_4_I3}, //
{"EXT_TRIGGER_4_I4", EXT_TRIGGER_4_I4}, //
{"", LOGIC0}, //
{"逻辑1", LOGIC1}, //
{"内部触发", INTERNAL_TRIGGER}, //
{"外部触发1", EXT_TRIGGER_1}, //
{"外部触发2", EXT_TRIGGER_2}, //
{"外部触发3", EXT_TRIGGER_3}, //
{"外部触发4", EXT_TRIGGER_4}, //
{"内部触发_子信号1", INTERNAL_TRIGGER_I1}, //
{"内部触发_子信号2", INTERNAL_TRIGGER_I2}, //
{"内部触发_子信号3", INTERNAL_TRIGGER_I3}, //
{"内部触发_子信号4", INTERNAL_TRIGGER_I4}, //
{"外部触发1_子信号1", EXT_TRIGGER_1_I1}, //
{"外部触发1_子信号2", EXT_TRIGGER_1_I2}, //
{"外部触发1_子信号3", EXT_TRIGGER_1_I3}, //
{"外部触发1_子信号4", EXT_TRIGGER_1_I4}, //
{"外部触发2_子信号1", EXT_TRIGGER_2_I1}, //
{"外部触发2_子信号2", EXT_TRIGGER_2_I2}, //
{"外部触发2_子信号3", EXT_TRIGGER_2_I3}, //
{"外部触发2_子信号4", EXT_TRIGGER_2_I4}, //
{"外部触发3_子信号1", EXT_TRIGGER_3_I1}, //
{"外部触发3_子信号2", EXT_TRIGGER_3_I2}, //
{"外部触发3_子信号3", EXT_TRIGGER_3_I3}, //
{"外部触发3_子信号4", EXT_TRIGGER_3_I4}, //
{"外部触发4_子信号1", EXT_TRIGGER_4_I1}, //
{"外部触发4_子信号2", EXT_TRIGGER_4_I2}, //
{"外部触发4_子信号3", EXT_TRIGGER_4_I3}, //
{"外部触发4_子信号4", EXT_TRIGGER_4_I4}, //
};

419
src/camera_light_src_timing_controller/reginfo.cpp

@ -0,0 +1,419 @@
#include "reginfo.hpp"
#include "zaf_protocol\zaf_regs.hpp"
using namespace iflytop;
namespace iflytop {
namespace clst {
using namespace std;
// kreg_software_version = 0,
// kreg_manufacturer0 = 1,
// kreg_manufacturer1 = 2,
// kreg_product_type_id = 3,
// kreg_sn_id0 = 4,
// kreg_sn_id1 = 5,
// kreg_sn_id2 = 6,
// kreg_mac0 = 7,
// kreg_mac1 = 8,
// kreg_fpga_version = REGADDOFF__FPGA_INFO + 1,
// /**
// * @brief
// * REG 16(32) STM32配置寄存器0
// */
// kreg_stm32_obtaining_ip_mode = REGADD__STM32_COMMON + 0,
// kreg_stm32_ip = REGADD__STM32_COMMON + 1,
// kreg_stm32_gw = REGADD__STM32_COMMON + 2,
// kreg_stm32_netmask = REGADD__STM32_COMMON + 3,
// kreg_stm32_config0 = REGADD__STM32_COMMON + 4, // bit0: timecode report enable, bit1: camera sync report enable
// kreg_stm32_action0 = REGADD__STM32_COMMON + 14, // action reg
// kreg_stm32_action_val0 = REGADD__STM32_COMMON + 15, // action val reg
// kreg_stm32_temperature = REGADD__STM32_BUSINESS + 0,
// kreg_stm32_fan0_error_flag = REGADD__STM32_BUSINESS + 1,
// /*******************************************************************************
// * 内部时钟源 *
// *******************************************************************************/
// kreg_internal_clk_module = REGADDOFF__INTERNAL_CLK,
// kreg_internal_clk_ctrl = REGADDOFF__INTERNAL_CLK + 1,
// kreg_internal_clk_freq_cnt = REGADDOFF__INTERNAL_CLK + 2,
// kreg_internal_clk_pluse_cnt = REGADDOFF__INTERNAL_CLK + 3,
// kreg_internal_clk_output_sig_detect = REGADDOFF__INTERNAL_CLK + 15,
// kreg_internal_clk_tri_module = REGADDOFF__INTERNAL_TRIGGER,
// kreg_internal_clk_tri_src_slect = REGADDOFF__INTERNAL_TRIGGER + 1,
// kreg_internal_clk_tri_fileter_coefficient = REGADDOFF__INTERNAL_TRIGGER + 2,
// kreg_internal_clk_tri_freq_detect_bias = REGADDOFF__INTERNAL_TRIGGER + 3,
// kreg_internal_clk_tri_mode = REGADDOFF__INTERNAL_TRIGGER + 4,
// kreg_internal_clk_tri_trigger_mode_trigger_edge = REGADDOFF__INTERNAL_TRIGGER + 5,
// kreg_internal_clk_tri_trigger_mode_freq_division = REGADDOFF__INTERNAL_TRIGGER + 6,
// kreg_internal_clk_tri_trigger_mode_freq_multiplication = REGADDOFF__INTERNAL_TRIGGER + 7,
// kreg_internal_clk_tri_sequential_control_pluse_cnt_max = REGADDOFF__INTERNAL_TRIGGER + 10,
// kreg_internal_clk_tri_in_signal_freq = REGADDOFF__INTERNAL_TRIGGER + 14,
// kreg_internal_clk_tri_out_signal_freq = REGADDOFF__INTERNAL_TRIGGER + 15,
// /*******************************************************************************
// * reg_trigger_in *
// *******************************************************************************/
// kreg_trigger_in1_module = REGADDOFF__TRIGGER_IN1,
// kreg_trigger_in1_src_slect = REGADDOFF__TRIGGER_IN1 + 1,
// kreg_trigger_in1_fileter_coefficient = REGADDOFF__TRIGGER_IN1 + 2, // 滤波系数,单位是10ns
// kreg_trigger_in1_freq_detect_bias = REGADDOFF__TRIGGER_IN1 + 3,
// kreg_trigger_in1_mode = REGADDOFF__TRIGGER_IN1 + 4, // mode 0:触发 1:转发模式
// kreg_trigger_in1_trigger_mode_trigger_edge = REGADDOFF__TRIGGER_IN1 + 5,
// kreg_trigger_in1_trigger_mode_freq_division = REGADDOFF__TRIGGER_IN1 + 6,
// kreg_trigger_in1_trigger_mode_freq_multiplication = REGADDOFF__TRIGGER_IN1 + 7,
// kreg_trigger_in1_sequential_control_pluse_cnt_max = REGADDOFF__TRIGGER_IN1 + 10, // 顺序控制信号最大计数
// kreg_trigger_in1_in_signal_freq = REGADDOFF__TRIGGER_IN1 + 14,
// kreg_trigger_in1_out_signal_freq = REGADDOFF__TRIGGER_IN1 + 15,
// kreg_trigger_in2_module = REGADDOFF__TRIGGER_IN2,
// kreg_trigger_in2_src_slect = REGADDOFF__TRIGGER_IN2 + 1,
// kreg_trigger_in2_fileter_coefficient = REGADDOFF__TRIGGER_IN2 + 2,
// kreg_trigger_in2_freq_detect_bias = REGADDOFF__TRIGGER_IN2 + 3,
// kreg_trigger_in2_mode = REGADDOFF__TRIGGER_IN2 + 4,
// kreg_trigger_in2_trigger_mode_trigger_edge = REGADDOFF__TRIGGER_IN2 + 5,
// kreg_trigger_in2_trigger_mode_freq_division = REGADDOFF__TRIGGER_IN2 + 6,
// kreg_trigger_in2_trigger_mode_freq_multiplication = REGADDOFF__TRIGGER_IN2 + 7,
// kreg_trigger_in2_sequential_control_pluse_cnt_max = REGADDOFF__TRIGGER_IN2 + 10,
// kreg_trigger_in2_in_signal_freq = REGADDOFF__TRIGGER_IN2 + 14,
// kreg_trigger_in2_out_signal_freq = REGADDOFF__TRIGGER_IN2 + 15,
// kreg_trigger_in3_module = REGADDOFF__TRIGGER_IN3,
// kreg_trigger_in3_src_slect = REGADDOFF__TRIGGER_IN3 + 1,
// kreg_trigger_in3_fileter_coefficient = REGADDOFF__TRIGGER_IN3 + 2,
// kreg_trigger_in3_freq_detect_bias = REGADDOFF__TRIGGER_IN3 + 3,
// kreg_trigger_in3_mode = REGADDOFF__TRIGGER_IN3 + 4,
// kreg_trigger_in3_trigger_mode_trigger_edge = REGADDOFF__TRIGGER_IN3 + 5,
// kreg_trigger_in3_trigger_mode_freq_division = REGADDOFF__TRIGGER_IN3 + 6,
// kreg_trigger_in3_trigger_mode_freq_multiplication = REGADDOFF__TRIGGER_IN3 + 7,
// kreg_trigger_in3_sequential_control_pluse_cnt_max = REGADDOFF__TRIGGER_IN3 + 10,
// kreg_trigger_in3_in_signal_freq = REGADDOFF__TRIGGER_IN3 + 14,
// kreg_trigger_in3_out_signal_freq = REGADDOFF__TRIGGER_IN3 + 15,
// kreg_trigger_in4_module = REGADDOFF__TRIGGER_IN4,
// kreg_trigger_in4_src_slect = REGADDOFF__TRIGGER_IN4 + 1,
// kreg_trigger_in4_fileter_coefficient = REGADDOFF__TRIGGER_IN4 + 2,
// kreg_trigger_in4_freq_detect_bias = REGADDOFF__TRIGGER_IN4 + 3,
// kreg_trigger_in4_mode = REGADDOFF__TRIGGER_IN4 + 4,
// kreg_trigger_in4_trigger_mode_trigger_edge = REGADDOFF__TRIGGER_IN4 + 5,
// kreg_trigger_in4_trigger_mode_freq_division = REGADDOFF__TRIGGER_IN4 + 6,
// kreg_trigger_in4_trigger_mode_freq_multiplication = REGADDOFF__TRIGGER_IN4 + 7,
// kreg_trigger_in4_sequential_control_pluse_cnt_max = REGADDOFF__TRIGGER_IN4 + 10,
// kreg_trigger_in4_in_signal_freq = REGADDOFF__TRIGGER_IN4 + 14,
// kreg_trigger_in4_out_signal_freq = REGADDOFF__TRIGGER_IN4 + 15,
// /*******************************************************************************
// * 快门控制输出 *
// *******************************************************************************/
// kreg_ttl_output_module1 = REGADDOFF__TTL_OUTPUT_MODULE1,
// kreg_ttl_output_module1_output_ctrl_mode = REGADDOFF__TTL_OUTPUT_MODULE1 + 1,
// kreg_ttl_output_module1_lt_en_bind = REGADDOFF__TTL_OUTPUT_MODULE1 + 2,
// kreg_ttl_output_module1_lt_en_offset = REGADDOFF__TTL_OUTPUT_MODULE1 + 3,
// kreg_ttl_output_module1_in_sig_select = REGADDOFF__TTL_OUTPUT_MODULE1 + 4,
// kreg_ttl_output_module1_out_polarity_reversal = REGADDOFF__TTL_OUTPUT_MODULE1 + 5,
// kreg_ttl_output_module2 = REGADDOFF__TTL_OUTPUT_MODULE2,
// kreg_ttl_output_module2_output_ctrl_mode = REGADDOFF__TTL_OUTPUT_MODULE2 + 1,
// kreg_ttl_output_module2_lt_en_bind = REGADDOFF__TTL_OUTPUT_MODULE2 + 2,
// kreg_ttl_output_module2_lt_en_offset = REGADDOFF__TTL_OUTPUT_MODULE2 + 3,
// kreg_ttl_output_module2_in_sig_select = REGADDOFF__TTL_OUTPUT_MODULE2 + 4,
// kreg_ttl_output_module2_out_polarity_reversal = REGADDOFF__TTL_OUTPUT_MODULE2 + 5,
// kreg_ttl_output_module3 = REGADDOFF__TTL_OUTPUT_MODULE3,
// kreg_ttl_output_module3_output_ctrl_mode = REGADDOFF__TTL_OUTPUT_MODULE3 + 1,
// kreg_ttl_output_module3_lt_en_bind = REGADDOFF__TTL_OUTPUT_MODULE3 + 2,
// kreg_ttl_output_module3_lt_en_offset = REGADDOFF__TTL_OUTPUT_MODULE3 + 3,
// kreg_ttl_output_module3_in_sig_select = REGADDOFF__TTL_OUTPUT_MODULE3 + 4,
// kreg_ttl_output_module3_out_polarity_reversal = REGADDOFF__TTL_OUTPUT_MODULE3 + 5,
// kreg_ttl_output_module4 = REGADDOFF__TTL_OUTPUT_MODULE4,
// kreg_ttl_output_module4_output_ctrl_mode = REGADDOFF__TTL_OUTPUT_MODULE4 + 1,
// kreg_ttl_output_module4_lt_en_bind = REGADDOFF__TTL_OUTPUT_MODULE4 + 2,
// kreg_ttl_output_module4_lt_en_offset = REGADDOFF__TTL_OUTPUT_MODULE4 + 3,
// kreg_ttl_output_module4_in_sig_select = REGADDOFF__TTL_OUTPUT_MODULE4 + 4,
// kreg_ttl_output_module4_out_polarity_reversal = REGADDOFF__TTL_OUTPUT_MODULE4 + 5,
// /*******************************************************************************
// * 光源控制 *
// *******************************************************************************/
// kreg_light_ctrol_module1 = REGADDOFF__LIGHT_CTROL_MODULE1,
// kreg_light_ctrol_module1_source_select = REGADDOFF__LIGHT_CTROL_MODULE1 + 1,
// kreg_light_ctrol_module1_en_sig_ctrl_mode = REGADDOFF__LIGHT_CTROL_MODULE1 + 2,
// kreg_light_ctrol_module1_light_intensity_ctrl_mode = REGADDOFF__LIGHT_CTROL_MODULE1 + 3,
// kreg_light_ctrol_module1_trigger_mode_pluse_num = REGADDOFF__LIGHT_CTROL_MODULE1 + 4,
// kreg_light_ctrol_module1_trigger_mode_pluse_interval = REGADDOFF__LIGHT_CTROL_MODULE1 + 5,
// kreg_light_ctrol_module1_trigger_mode_pluse_width = REGADDOFF__LIGHT_CTROL_MODULE1 + 6,
// kreg_light_ctrol_module1_trigger_mode_first_pluse_offset = REGADDOFF__LIGHT_CTROL_MODULE1 + 7,
// kreg_light_ctrol_module1_trigger_mode_output_polarity = REGADDOFF__LIGHT_CTROL_MODULE1 + 8, // 无用
// kreg_light_ctrol_module1_light_intensity_cnt = REGADDOFF__LIGHT_CTROL_MODULE1 + 9,
// kreg_light_ctrol_module1_light_driver_freq_cnt = REGADDOFF__LIGHT_CTROL_MODULE1 + 10,
// kreg_light_ctrol_module1_freq_detect_bias = REGADDOFF__LIGHT_CTROL_MODULE1 + 12,
// kreg_light_ctrol_module1_light_src_error_state = REGADDOFF__LIGHT_CTROL_MODULE1 + 13,
// kreg_light_ctrol_module1_in_sig_freq_detect = REGADDOFF__LIGHT_CTROL_MODULE1 + 14,
// kreg_light_ctrol_module1_out_sig_freq_detect = REGADDOFF__LIGHT_CTROL_MODULE1 + 15,
// kreg_light_ctrol_module2 = REGADDOFF__LIGHT_CTROL_MODULE2,
// kreg_light_ctrol_module2_source_select = REGADDOFF__LIGHT_CTROL_MODULE2 + 1,
// kreg_light_ctrol_module2_en_sig_ctrl_mode = REGADDOFF__LIGHT_CTROL_MODULE2 + 2,
// kreg_light_ctrol_module2_light_intensity_ctrl_mode = REGADDOFF__LIGHT_CTROL_MODULE2 + 3,
// kreg_light_ctrol_module2_trigger_mode_pluse_num = REGADDOFF__LIGHT_CTROL_MODULE2 + 4,
// kreg_light_ctrol_module2_trigger_mode_pluse_interval = REGADDOFF__LIGHT_CTROL_MODULE2 + 5,
// kreg_light_ctrol_module2_trigger_mode_pluse_width = REGADDOFF__LIGHT_CTROL_MODULE2 + 6,
// kreg_light_ctrol_module2_trigger_mode_first_pluse_offset = REGADDOFF__LIGHT_CTROL_MODULE2 + 7,
// kreg_light_ctrol_module2_trigger_mode_output_polarity = REGADDOFF__LIGHT_CTROL_MODULE2 + 8,
// kreg_light_ctrol_module2_light_intensity_cnt = REGADDOFF__LIGHT_CTROL_MODULE2 + 9,
// kreg_light_ctrol_module2_light_driver_freq_cnt = REGADDOFF__LIGHT_CTROL_MODULE2 + 10,
// kreg_light_ctrol_module2_freq_detect_bias = REGADDOFF__LIGHT_CTROL_MODULE2 + 12,
// kreg_light_ctrol_module2_light_src_error_state = REGADDOFF__LIGHT_CTROL_MODULE2 + 13,
// kreg_light_ctrol_module2_in_sig_freq_detect = REGADDOFF__LIGHT_CTROL_MODULE2 + 14,
// kreg_light_ctrol_module2_out_sig_freq_detect = REGADDOFF__LIGHT_CTROL_MODULE2 + 15,
// kreg_light_ctrol_module3 = REGADDOFF__LIGHT_CTROL_MODULE3,
// kreg_light_ctrol_module3_source_select = REGADDOFF__LIGHT_CTROL_MODULE3 + 1,
// kreg_light_ctrol_module3_en_sig_ctrl_mode = REGADDOFF__LIGHT_CTROL_MODULE3 + 2,
// kreg_light_ctrol_module3_light_intensity_ctrl_mode = REGADDOFF__LIGHT_CTROL_MODULE3 + 3,
// kreg_light_ctrol_module3_trigger_mode_pluse_num = REGADDOFF__LIGHT_CTROL_MODULE3 + 4,
// kreg_light_ctrol_module3_trigger_mode_pluse_interval = REGADDOFF__LIGHT_CTROL_MODULE3 + 5,
// kreg_light_ctrol_module3_trigger_mode_pluse_width = REGADDOFF__LIGHT_CTROL_MODULE3 + 6,
// kreg_light_ctrol_module3_trigger_mode_first_pluse_offset = REGADDOFF__LIGHT_CTROL_MODULE3 + 7,
// kreg_light_ctrol_module3_trigger_mode_output_polarity = REGADDOFF__LIGHT_CTROL_MODULE3 + 8,
// kreg_light_ctrol_module3_light_intensity_cnt = REGADDOFF__LIGHT_CTROL_MODULE3 + 9,
// kreg_light_ctrol_module3_light_driver_freq_cnt = REGADDOFF__LIGHT_CTROL_MODULE3 + 10,
// kreg_light_ctrol_module3_freq_detect_bias = REGADDOFF__LIGHT_CTROL_MODULE3 + 12,
// kreg_light_ctrol_module3_light_src_error_state = REGADDOFF__LIGHT_CTROL_MODULE3 + 13,
// kreg_light_ctrol_module3_in_sig_freq_detect = REGADDOFF__LIGHT_CTROL_MODULE3 + 14,
// kreg_light_ctrol_module3_out_sig_freq_detect = REGADDOFF__LIGHT_CTROL_MODULE3 + 15,
// kreg_light_ctrol_module4 = REGADDOFF__LIGHT_CTROL_MODULE4,
// kreg_light_ctrol_module4_source_select = REGADDOFF__LIGHT_CTROL_MODULE4 + 1,
// kreg_light_ctrol_module4_en_sig_ctrl_mode = REGADDOFF__LIGHT_CTROL_MODULE4 + 2,
// kreg_light_ctrol_module4_light_intensity_ctrl_mode = REGADDOFF__LIGHT_CTROL_MODULE4 + 3,
// kreg_light_ctrol_module4_trigger_mode_pluse_num = REGADDOFF__LIGHT_CTROL_MODULE4 + 4,
// kreg_light_ctrol_module4_trigger_mode_pluse_interval = REGADDOFF__LIGHT_CTROL_MODULE4 + 5,
// kreg_light_ctrol_module4_trigger_mode_pluse_width = REGADDOFF__LIGHT_CTROL_MODULE4 + 6,
// kreg_light_ctrol_module4_trigger_mode_first_pluse_offset = REGADDOFF__LIGHT_CTROL_MODULE4 + 7,
// kreg_light_ctrol_module4_trigger_mode_output_polarity = REGADDOFF__LIGHT_CTROL_MODULE4 + 8,
// kreg_light_ctrol_module4_light_intensity_cnt = REGADDOFF__LIGHT_CTROL_MODULE4 + 9,
// kreg_light_ctrol_module4_light_driver_freq_cnt = REGADDOFF__LIGHT_CTROL_MODULE4 + 10,
// kreg_light_ctrol_module4_freq_detect_bias = REGADDOFF__LIGHT_CTROL_MODULE4 + 12,
// kreg_light_ctrol_module4_light_src_error_state = REGADDOFF__LIGHT_CTROL_MODULE4 + 13,
// kreg_light_ctrol_module4_in_sig_freq_detect = REGADDOFF__LIGHT_CTROL_MODULE4 + 14,
// kreg_light_ctrol_module4_out_sig_freq_detect = REGADDOFF__LIGHT_CTROL_MODULE4 + 15,
static map<uint32_t, Reginfo> reginfo_map = {
{kreg_software_version, {}},
{kreg_manufacturer0, {}},
{kreg_manufacturer1, {}},
{kreg_product_type_id, {}},
{kreg_sn_id0, {}},
{kreg_sn_id1, {}},
{kreg_sn_id2, {}},
{kreg_mac0, {}},
{kreg_mac1, {}},
{kreg_fpga_version, {}},
{kreg_stm32_obtaining_ip_mode, {}},
{kreg_stm32_ip, {}},
{kreg_stm32_gw, {}},
{kreg_stm32_netmask, {}},
{kreg_stm32_config0, {}},
{kreg_stm32_action0, {}},
{kreg_stm32_action_val0, {}},
{kreg_stm32_temperature, {}},
{kreg_stm32_fan0_error_flag, {}},
{kreg_internal_clk_module, {}},
{kreg_internal_clk_ctrl, {}},
{kreg_internal_clk_freq_cnt, {}},
{kreg_internal_clk_pluse_cnt, {}},
{kreg_internal_clk_output_sig_detect, {}},
{kreg_internal_clk_tri_module, {}},
{kreg_internal_clk_tri_src_slect, {}},
{kreg_internal_clk_tri_fileter_coefficient, {}},
{kreg_internal_clk_tri_freq_detect_bias, {}},
{kreg_internal_clk_tri_mode, {}},
{kreg_internal_clk_tri_trigger_mode_trigger_edge, {}},
{kreg_internal_clk_tri_trigger_mode_freq_division, {}},
{kreg_internal_clk_tri_trigger_mode_freq_multiplication, {}},
{kreg_internal_clk_tri_sequential_control_pluse_cnt_max, {}},
{kreg_internal_clk_tri_in_signal_freq, {}},
{kreg_internal_clk_tri_out_signal_freq, {}},
{kreg_trigger_in1_module, {}},
{kreg_trigger_in1_src_slect, {}},
{kreg_trigger_in1_fileter_coefficient, {}},
{kreg_trigger_in1_freq_detect_bias, {}},
{kreg_trigger_in1_mode, {}},
{kreg_trigger_in1_trigger_mode_trigger_edge, {}},
{kreg_trigger_in1_trigger_mode_freq_division, {}},
{kreg_trigger_in1_trigger_mode_freq_multiplication, {}},
{kreg_trigger_in1_sequential_control_pluse_cnt_max, {}},
{kreg_trigger_in1_in_signal_freq, {}},
{kreg_trigger_in1_out_signal_freq, {}},
{kreg_trigger_in2_module, {}},
{kreg_trigger_in2_src_slect, {}},
{kreg_trigger_in2_fileter_coefficient, {}},
{kreg_trigger_in2_freq_detect_bias, {}},
{kreg_trigger_in2_mode, {}},
{kreg_trigger_in2_trigger_mode_trigger_edge, {}},
{kreg_trigger_in2_trigger_mode_freq_division, {}},
{kreg_trigger_in2_trigger_mode_freq_multiplication, {}},
{kreg_trigger_in2_sequential_control_pluse_cnt_max, {}},
{kreg_trigger_in2_in_signal_freq, {}},
{kreg_trigger_in2_out_signal_freq, {}},
{kreg_trigger_in3_module, {}},
{kreg_trigger_in3_src_slect, {}},
{kreg_trigger_in3_fileter_coefficient, {}},
{kreg_trigger_in3_freq_detect_bias, {}},
{kreg_trigger_in3_mode, {}},
{kreg_trigger_in3_trigger_mode_trigger_edge, {}},
{kreg_trigger_in3_trigger_mode_freq_division, {}},
{kreg_trigger_in3_trigger_mode_freq_multiplication, {}},
{kreg_trigger_in3_sequential_control_pluse_cnt_max, {}},
{kreg_trigger_in3_in_signal_freq, {}},
{kreg_trigger_in3_out_signal_freq, {}},
{kreg_trigger_in4_module, {}},
{kreg_trigger_in4_src_slect, {}},
{kreg_trigger_in4_fileter_coefficient, {}},
{kreg_trigger_in4_freq_detect_bias, {}},
{kreg_trigger_in4_mode, {}},
{kreg_trigger_in4_trigger_mode_trigger_edge, {}},
{kreg_trigger_in4_trigger_mode_freq_division, {}},
{kreg_trigger_in4_trigger_mode_freq_multiplication, {}},
{kreg_trigger_in4_sequential_control_pluse_cnt_max, {}},
{kreg_trigger_in4_in_signal_freq, {}},
{kreg_trigger_in4_out_signal_freq, {}},
{kreg_ttl_output_module1, {}},
{kreg_ttl_output_module1_output_ctrl_mode, {}},
{kreg_ttl_output_module1_lt_en_bind, {}},
{kreg_ttl_output_module1_lt_en_offset, {}},
{kreg_ttl_output_module1_in_sig_select, {}},
{kreg_ttl_output_module1_out_polarity_reversal, {}},
{kreg_ttl_output_module2, {}},
{kreg_ttl_output_module2_output_ctrl_mode, {}},
{kreg_ttl_output_module2_lt_en_bind, {}},
{kreg_ttl_output_module2_lt_en_offset, {}},
{kreg_ttl_output_module2_in_sig_select, {}},
{kreg_ttl_output_module2_out_polarity_reversal, {}},
{kreg_ttl_output_module3, {}},
{kreg_ttl_output_module3_output_ctrl_mode, {}},
{kreg_ttl_output_module3_lt_en_bind, {}},
{kreg_ttl_output_module3_lt_en_offset, {}},
{kreg_ttl_output_module3_in_sig_select, {}},
{kreg_ttl_output_module3_out_polarity_reversal, {}},
{kreg_ttl_output_module4, {}},
{kreg_ttl_output_module4_output_ctrl_mode, {}},
{kreg_ttl_output_module4_lt_en_bind, {}},
{kreg_ttl_output_module4_lt_en_offset, {}},
{kreg_ttl_output_module4_in_sig_select, {}},
{kreg_ttl_output_module4_out_polarity_reversal, {}},
{kreg_light_ctrol_module1, {}},
{kreg_light_ctrol_module1_source_select, {}},
{kreg_light_ctrol_module1_en_sig_ctrl_mode, {}},
{kreg_light_ctrol_module1_light_intensity_ctrl_mode, {}},
{kreg_light_ctrol_module1_trigger_mode_pluse_num, {}},
{kreg_light_ctrol_module1_trigger_mode_pluse_interval, {}},
{kreg_light_ctrol_module1_trigger_mode_pluse_width, {}},
{kreg_light_ctrol_module1_trigger_mode_first_pluse_offset, {}},
{kreg_light_ctrol_module1_trigger_mode_output_polarity, {}},
{kreg_light_ctrol_module1_light_intensity_cnt, {}},
{kreg_light_ctrol_module1_light_driver_freq_cnt, {}},
{kreg_light_ctrol_module1_freq_detect_bias, {}},
{kreg_light_ctrol_module1_light_src_error_state, {}},
{kreg_light_ctrol_module1_in_sig_freq_detect, {}},
{kreg_light_ctrol_module1_out_sig_freq_detect, {}},
{kreg_light_ctrol_module2, {}},
{kreg_light_ctrol_module2_source_select, {}},
{kreg_light_ctrol_module2_en_sig_ctrl_mode, {}},
{kreg_light_ctrol_module2_light_intensity_ctrl_mode, {}},
{kreg_light_ctrol_module2_trigger_mode_pluse_num, {}},
{kreg_light_ctrol_module2_trigger_mode_pluse_interval, {}},
{kreg_light_ctrol_module2_trigger_mode_pluse_width, {}},
{kreg_light_ctrol_module2_trigger_mode_first_pluse_offset, {}},
{kreg_light_ctrol_module2_trigger_mode_output_polarity, {}},
{kreg_light_ctrol_module2_light_intensity_cnt, {}},
{kreg_light_ctrol_module2_light_driver_freq_cnt, {}},
{kreg_light_ctrol_module2_freq_detect_bias, {}},
{kreg_light_ctrol_module2_light_src_error_state, {}},
{kreg_light_ctrol_module2_in_sig_freq_detect, {}},
{kreg_light_ctrol_module2_out_sig_freq_detect, {}},
{kreg_light_ctrol_module3, {}},
{kreg_light_ctrol_module3_source_select, {}},
{kreg_light_ctrol_module3_en_sig_ctrl_mode, {}},
{kreg_light_ctrol_module3_light_intensity_ctrl_mode, {}},
{kreg_light_ctrol_module3_trigger_mode_pluse_num, {}},
{kreg_light_ctrol_module3_trigger_mode_pluse_interval, {}},
{kreg_light_ctrol_module3_trigger_mode_pluse_width, {}},
{kreg_light_ctrol_module3_trigger_mode_first_pluse_offset, {}},
{kreg_light_ctrol_module3_trigger_mode_output_polarity, {}},
{kreg_light_ctrol_module3_light_intensity_cnt, {}},
{kreg_light_ctrol_module3_light_driver_freq_cnt, {}},
{kreg_light_ctrol_module3_freq_detect_bias, {}},
{kreg_light_ctrol_module3_light_src_error_state, {}},
{kreg_light_ctrol_module3_in_sig_freq_detect, {}},
{kreg_light_ctrol_module3_out_sig_freq_detect, {}},
{kreg_light_ctrol_module4, {}},
{kreg_light_ctrol_module4_source_select, {}},
{kreg_light_ctrol_module4_en_sig_ctrl_mode, {}},
{kreg_light_ctrol_module4_light_intensity_ctrl_mode, {}},
{kreg_light_ctrol_module4_trigger_mode_pluse_num, {}},
{kreg_light_ctrol_module4_trigger_mode_pluse_interval, {}},
{kreg_light_ctrol_module4_trigger_mode_pluse_width, {}},
{kreg_light_ctrol_module4_trigger_mode_first_pluse_offset, {}},
{kreg_light_ctrol_module4_trigger_mode_output_polarity, {}},
{kreg_light_ctrol_module4_light_intensity_cnt, {}},
{kreg_light_ctrol_module4_light_driver_freq_cnt, {}},
{kreg_light_ctrol_module4_freq_detect_bias, {}},
{kreg_light_ctrol_module4_light_src_error_state, {}},
{kreg_light_ctrol_module4_in_sig_freq_detect, {}},
{kreg_light_ctrol_module4_out_sig_freq_detect, {}},
};
static bool reginfo_initialized = false;
void RegInfoInitialize() {
reginfo_map[kreg_internal_clk_freq_cnt].flag |= kreg_flag_volatile;
reginfo_map[kreg_internal_clk_tri_out_signal_freq].flag |= kreg_flag_volatile;
reginfo_map[kreg_trigger_in1_in_signal_freq].flag |= kreg_flag_volatile;
reginfo_map[kreg_trigger_in2_in_signal_freq].flag |= kreg_flag_volatile;
reginfo_map[kreg_trigger_in3_in_signal_freq].flag |= kreg_flag_volatile;
reginfo_map[kreg_trigger_in4_in_signal_freq].flag |= kreg_flag_volatile;
reginfo_map[kreg_trigger_in1_out_signal_freq].flag |= kreg_flag_volatile;
reginfo_map[kreg_trigger_in2_out_signal_freq].flag |= kreg_flag_volatile;
reginfo_map[kreg_trigger_in3_out_signal_freq].flag |= kreg_flag_volatile;
reginfo_map[kreg_trigger_in4_out_signal_freq].flag |= kreg_flag_volatile;
reginfo_map[kreg_light_ctrol_module1_light_driver_freq_cnt].flag |= kreg_flag_volatile;
reginfo_map[kreg_light_ctrol_module2_light_driver_freq_cnt].flag |= kreg_flag_volatile;
reginfo_map[kreg_light_ctrol_module3_light_driver_freq_cnt].flag |= kreg_flag_volatile;
reginfo_map[kreg_light_ctrol_module4_light_driver_freq_cnt].flag |= kreg_flag_volatile;
reginfo_map[kreg_light_ctrol_module1_in_sig_freq_detect].flag |= kreg_flag_volatile;
reginfo_map[kreg_light_ctrol_module2_in_sig_freq_detect].flag |= kreg_flag_volatile;
reginfo_map[kreg_light_ctrol_module3_in_sig_freq_detect].flag |= kreg_flag_volatile;
reginfo_map[kreg_light_ctrol_module4_in_sig_freq_detect].flag |= kreg_flag_volatile;
reginfo_map[kreg_light_ctrol_module1_out_sig_freq_detect].flag |= kreg_flag_volatile;
reginfo_map[kreg_light_ctrol_module2_out_sig_freq_detect].flag |= kreg_flag_volatile;
reginfo_map[kreg_light_ctrol_module3_out_sig_freq_detect].flag |= kreg_flag_volatile;
reginfo_map[kreg_light_ctrol_module4_out_sig_freq_detect].flag |= kreg_flag_volatile;
}
Reginfo* GetRegInfo(uint32_t add) {
if (!reginfo_initialized) {
RegInfoInitialize();
}
auto it = reginfo_map.find(add);
if (it != reginfo_map.end()) {
return &it->second;
}
return nullptr;
}
} // namespace clst
} // namespace iflytop

38
src/camera_light_src_timing_controller/reginfo.hpp

@ -0,0 +1,38 @@
#pragma once
#include <fstream>
#include <functional>
#include <iostream>
#include <list>
#include <map>
#include <memory>
#include <set>
#include <sstream>
#include <string>
#include <vector>
namespace iflytop {
namespace clst {
using namespace std;
typedef enum {
kreg_flag_r = 0x01, // 可读
kreg_flag_w = 0x01 << 1, // 可写
kreg_flag_volatile = 0x01 << 2, // 易变寄存器
kreg_flag_rw = kreg_flag_r | kreg_flag_w,
} reg_flag_t;
class Reginfo {
public:
uint32_t regadd = 0;
uint32_t flag = kreg_flag_rw;
uint32_t regshadow = 0;
bool dirty = true;
public:
};
Reginfo* GetRegInfo(uint32_t add);
} // namespace clst
} // namespace iflytop

2
src/version.h

@ -1,4 +1,4 @@
#pragma once
#define VERSION 7
#define VERSION 8
#define MAUFACTURER "iflytop"
Loading…
Cancel
Save