diff --git a/CMakeLists.txt b/CMakeLists.txt index 831a443..1b723cd 100644 --- a/CMakeLists.txt +++ b/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 diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user index 8bd1465..c316def 100644 --- a/CMakeLists.txt.user +++ b/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -94,7 +94,7 @@ Desktop Qt 5.12.12 MinGW 64-bit Desktop Qt 5.12.12 MinGW 64-bit qt.qt5.51212.win64_mingw73_kit - 2 + 0 0 0 @@ -262,7 +262,7 @@ true false true - D:/workspace/p_camera_light_source_timing_controller/build-camera_light_src_timing_controller_pc-Desktop_Qt_5_12_12_MinGW_64_bit-Release + D:/workspace/p_camera_light_source_timing_controller/build-camera_light_src_timing_controller_pc-Desktop_Qt_5_12_12_MinGW_64_bit-Debug 1 diff --git a/mainwindow.cpp b/mainwindow.cpp index fcec81e..5da8f21 100644 --- a/mainwindow.cpp +++ b/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(); + } +} diff --git a/mainwindow.h b/mainwindow.h index d05fad9..1b5f8ab 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -29,10 +29,10 @@ #include // +#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 diff --git a/mainwindow.ui b/mainwindow.ui index b2fe07f..e129426 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -7,7 +7,7 @@ 0 0 1106 - 1058 + 966 @@ -938,7 +938,7 @@ QGroupBox:title { - 0 + 1 0 @@ -1037,6 +1037,12 @@ QGroupBox:title { + + + 1 + 0 + + 0 @@ -1206,7 +1212,7 @@ QGroupBox:title { - + 0 @@ -1220,12 +1226,12 @@ QGroupBox:title { - 0 + 3 true - + 外部触发源配置 @@ -1495,7 +1501,7 @@ QGroupBox:title { - 顺序触发最大计数 + 子信号数量 @@ -1997,7 +2003,7 @@ QGroupBox:title { - 顺序触发最大计数 + 子信号数量 @@ -2111,7 +2117,7 @@ QGroupBox:title { - 顺序触发最大计数 + 子信号数量 @@ -2754,7 +2760,7 @@ QGroupBox:title { - 顺序触发最大计数 + 子信号数量 @@ -2849,7 +2855,7 @@ QGroupBox:title { - + 内部触发源配置 @@ -3015,7 +3021,7 @@ QGroupBox:title { - + 光源时序配置 @@ -4356,7 +4362,7 @@ QGroupBox:title { - + 快门时序配置 @@ -5286,19 +5292,40 @@ QGroupBox:title { - - - - 0 - 1 - - - + + - 0 - 100 + 16777215 + 0 + + 日志 + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 16777215 + 0 + + + + + @@ -5324,10 +5351,22 @@ QGroupBox:title { IFLYTOP + + + + true + + + 专业模式 + + + 专业模式 + + diff --git a/src/camera_light_src_timing_controller/clst_controler.cpp b/src/camera_light_src_timing_controller/clst_controler.cpp index 320faa6..84ee083 100644 --- a/src/camera_light_src_timing_controller/clst_controler.cpp +++ b/src/camera_light_src_timing_controller/clst_controler.cpp @@ -4,6 +4,7 @@ #include #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 ®backvalue, int32_t overtime_ms) { // +zaf_error_code_t CLSTControler::reg_write(uint32_t regadd, uint32_t regvalue, uint32_t ®backvalue, 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 ®value, 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 ®backvalue, int32_t overtime_ms) { // lock_guard 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 ®value, int32_t overtime_ms) { +zaf_error_code_t CLSTControler::_reg_read(uint32_t regadd, uint32_t ®value, int32_t overtime_ms) { lock_guard lock(m_tx_lock); uint8_t txdata[128] = {0}; diff --git a/src/camera_light_src_timing_controller/clst_controler.hpp b/src/camera_light_src_timing_controller/clst_controler.hpp index e846218..b72da6d 100644 --- a/src/camera_light_src_timing_controller/clst_controler.hpp +++ b/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 ®backvalue, int32_t overtime_ms = 30); + zaf_error_code_t _reg_read(uint32_t regadd, uint32_t ®value, int32_t overtime_ms = 30); + zaf_error_code_t reg_write(uint32_t regadd, uint32_t regvalue, uint32_t ®backvalue, int32_t overtime_ms = 30); + zaf_error_code_t reg_read(uint32_t regadd, uint32_t ®value, 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 ®value, 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); diff --git a/src/camera_light_src_timing_controller/clst_controler_sig_type.cpp b/src/camera_light_src_timing_controller/clst_controler_sig_type.cpp index 2d87637..7b2b738 100644 --- a/src/camera_light_src_timing_controller/clst_controler_sig_type.cpp +++ b/src/camera_light_src_timing_controller/clst_controler_sig_type.cpp @@ -4,54 +4,55 @@ using namespace iflytop; using namespace clst; map ExtTriggerSrcType::emap = { - {"OPTOCOUPLER_INPUT", OPTOCOUPLER_INPUT}, // - {"DIFF_INPUT", DIFF_INPUT}, // + {"光耦输入", OPTOCOUPLER_INPUT}, // + {"差分输入", DIFF_INPUT}, // }; map TriggerEdge::emap = { - {"RISING", RISING}, // - {"FALLING", FALLING}, // - {"BOTH", BOTH} // + {"上升沿", RISING}, // + {"下降沿", FALLING}, // + {"双边沿", BOTH} // }; map SigProcessMode::emap = { - {"TRIGGER_MODE", TRIGGER_MODE}, // - {"TRANSPARENT_MODE", TRANSPARENT_MODE}, // - {"BIND_MODE", BIND_MODE} // + {"触发模式", TRIGGER_MODE}, // + {"转发模式", TRANSPARENT_MODE}, // + {"绑定模式", BIND_MODE} // }; map 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}, // }; \ No newline at end of file diff --git a/src/camera_light_src_timing_controller/reginfo.cpp b/src/camera_light_src_timing_controller/reginfo.cpp new file mode 100644 index 0000000..c069a4b --- /dev/null +++ b/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 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 \ No newline at end of file diff --git a/src/camera_light_src_timing_controller/reginfo.hpp b/src/camera_light_src_timing_controller/reginfo.hpp new file mode 100644 index 0000000..e006a3c --- /dev/null +++ b/src/camera_light_src_timing_controller/reginfo.hpp @@ -0,0 +1,38 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +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 \ No newline at end of file diff --git a/src/version.h b/src/version.h index 96a4837..413277a 100644 --- a/src/version.h +++ b/src/version.h @@ -1,4 +1,4 @@ #pragma once -#define VERSION 7 +#define VERSION 8 #define MAUFACTURER "iflytop" \ No newline at end of file