diff --git a/ify_hrs_protocol b/ify_hrs_protocol
index a1fda58..c5a8617 160000
--- a/ify_hrs_protocol
+++ b/ify_hrs_protocol
@@ -1 +1 @@
-Subproject commit a1fda58c30f6bb892c9f503280b3896c67e00dda
+Subproject commit c5a86174de8f27f4c8ab6c18dd131effa7b43ea5
diff --git a/mainwindow.cpp b/mainwindow.cpp
index 29e8484..17b06da 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -577,18 +577,18 @@ void MainWindow::on_TestCmd_readSubIcRegs_clicked() {
instructionPreviewClear();
try {
uint8_t data[12];
- data[ADS129X_REG_ID] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_ID);
- data[ADS129X_REG_CONFIG1] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_CONFIG1);
- data[ADS129X_REG_CONFIG2] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_CONFIG2);
- data[ADS129X_REG_LOFF] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_LOFF);
- data[ADS129X_REG_CH1SET] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_CH1SET);
- data[ADS129X_REG_CH2SET] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_CH2SET);
- data[ADS129X_REG_RLDSENS] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_RLDSENS);
- data[ADS129X_REG_LOFFSENS] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_LOFFSENS);
- data[ADS129X_REG_LOFFSTAT] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_LOFFSTAT);
- data[ADS129X_REG_RESP1] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_RESP1);
- data[ADS129X_REG_RESP2] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_RESP2);
- data[ADS129X_REG_GPIO] = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_GPIO);
+ data[ADS129X_REG_ID] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_ID);
+ data[ADS129X_REG_CONFIG1] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_CONFIG1);
+ data[ADS129X_REG_CONFIG2] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_CONFIG2);
+ data[ADS129X_REG_LOFF] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_LOFF);
+ data[ADS129X_REG_CH1SET] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_CH1SET);
+ data[ADS129X_REG_CH2SET] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_CH2SET);
+ data[ADS129X_REG_RLDSENS] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_RLDSENS);
+ data[ADS129X_REG_LOFFSENS] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_LOFFSENS);
+ data[ADS129X_REG_LOFFSTAT] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_LOFFSTAT);
+ data[ADS129X_REG_RESP1] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_RESP1);
+ data[ADS129X_REG_RESP2] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_RESP2);
+ data[ADS129X_REG_GPIO] = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_GPIO);
ishow("reg %10s %02d: 0x%02x", "ID", ADS129X_REG_ID, data[ADS129X_REG_ID]);
ishow("reg %10s %02d: 0x%02x", "CONFIG1", ADS129X_REG_CONFIG1, data[ADS129X_REG_CONFIG1]);
@@ -615,7 +615,7 @@ void MainWindow::on_TestCmd_writeSubICReg_clicked() {
uint32_t val = str2int(ui->TestCmd_writeSubICReg_p1->toPlainText());
instructionPreviewClear();
try {
- ElectrocardiographTester::ins()->testCmdWriteReg(add, val);
+ ElectrocardiographTester::ins()->ecg_subic_write_reg(add, val);
ishow("write reg %d: 0x%02x success", add, val);
} catch (zexception &exception) {
processException(exception);
@@ -629,13 +629,13 @@ void MainWindow::on_TestCmd_writeSubICRegMask_clicked() {
instructionPreviewClear();
try {
- uint8_t regval = ElectrocardiographTester::ins()->testCmdReadReg(add);
+ uint8_t regval = ElectrocardiographTester::ins()->ecg_subic_read_reg(add);
uint8_t oldval = regval;
uint8_t mask = (1 << bitnum) - 1;
mask = mask << off;
regval = regval & (~mask);
regval = regval | (val << off);
- ElectrocardiographTester::ins()->testCmdWriteReg(add, regval);
+ ElectrocardiographTester::ins()->ecg_subic_write_reg(add, regval);
ishow("write reg %d: 0x%02x -> 0x%02x success", add, oldval, regval);
} catch (const std::exception &e) {
std::cerr << e.what() << '\n';
@@ -666,15 +666,15 @@ void MainWindow::on_TestCmd_stopCapture_clicked() {
void MainWindow::on_TestCmd_changeECGSrcToSquareWave_clicked() {
instructionPreviewClear();
try {
- uint8_t cfg2 = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_CONFIG2);
- uint8_t ch1set = ElectrocardiographTester::ins()->testCmdReadReg(ADS129X_REG_CH1SET);
+ uint8_t cfg2 = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_CONFIG2);
+ uint8_t ch1set = ElectrocardiographTester::ins()->ecg_subic_read_reg(ADS129X_REG_CH1SET);
cfg2 = ADS129X_SET_BITS(cfg2, ADS129X_INT_TEST, ADS129X_INT_TEST_ON);
cfg2 = ADS129X_SET_BITS(cfg2, ADS129X_INT_FREQ, ADS129X_INT_FREQ_AC);
ch1set = ADS129X_SET_BITS(ch1set, ADS129X_MUXx, ADS129X_CHx_INPUT_TEST);
- ElectrocardiographTester::ins()->testCmdWriteReg(ADS129X_REG_CONFIG2, cfg2);
- ElectrocardiographTester::ins()->testCmdWriteReg(ADS129X_REG_CH1SET, ch1set);
+ ElectrocardiographTester::ins()->ecg_subic_write_reg(ADS129X_REG_CONFIG2, cfg2);
+ ElectrocardiographTester::ins()->ecg_subic_write_reg(ADS129X_REG_CH1SET, ch1set);
ishow("call change ECG src to square wave success");
} catch (zexception &exception) {
@@ -748,7 +748,7 @@ void MainWindow::on_TestCmd_writeSubICAllReg_clicked() {
data[i] = str2int(reglist[i]);
}
for (size_t i = 0; i < 12; i++) {
- ElectrocardiographTester::ins()->testCmdWriteReg(i, data[i]);
+ ElectrocardiographTester::ins()->ecg_subic_write_reg(i, data[i]);
ishow("write reg %d: 0x%02x success", i, data[i]);
}
ishow("write all reg success");
diff --git a/mainwindow.ui b/mainwindow.ui
index ad10c45..0416db3 100644
--- a/mainwindow.ui
+++ b/mainwindow.ui
@@ -903,7 +903,7 @@ p, li { white-space: pre-wrap; }
- 0
+ 2
@@ -916,8 +916,8 @@ p, li { white-space: pre-wrap; }
设备基本操作
- -
-
+
-
+
1
@@ -931,12 +931,12 @@ p, li { white-space: pre-wrap; }
- 读取设备状态信息
+ 读取设备SN
- -
-
+
-
+
1
@@ -950,12 +950,25 @@ p, li { white-space: pre-wrap; }
- 同步时间
+ 读取设备版本信息
- -
-
+
-
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
1
@@ -969,12 +982,12 @@ p, li { white-space: pre-wrap; }
- 读取设备SN
+ 同步时间
- -
-
+
-
+
1
@@ -988,12 +1001,12 @@ p, li { white-space: pre-wrap; }
- 读取传感器信息
+ 读取设备状态信息
-
-
+
1
@@ -1007,12 +1020,12 @@ p, li { white-space: pre-wrap; }
- 设置ECG为正常模式
+ 失能ECG上报数据算法
- -
-
+
-
+
1
@@ -1026,12 +1039,12 @@ p, li { white-space: pre-wrap; }
- 复位设备
+ 读取设备时间
- -
-
+
-
+
1
@@ -1045,12 +1058,12 @@ p, li { white-space: pre-wrap; }
- 读取设备版本信息
+ 读取传感器信息
- -
-
+
-
+
1
@@ -1064,38 +1077,50 @@ p, li { white-space: pre-wrap; }
- 读取设备时间
+ 使能ECG上报数据算法
- -
-
-
- Qt::Horizontal
+
-
+
+
+
+ 1
+ 0
+
-
+
- 40
- 20
+ 0
+ 30
-
+
+ 测试-设置ECG为测试模式
+
+
- -
-
-
- Qt::Vertical
+
-
+
+
+
+ 1
+ 0
+
-
+
- 20
- 40
+ 0
+ 30
-
+
+ 测试-设置ECG为正常模式
+
+
- -
-
+
-
+
1
@@ -1109,7 +1134,7 @@ p, li { white-space: pre-wrap; }
- 设置ECG为正常模式
+ 复位设备
@@ -1815,415 +1840,417 @@ p, li { white-space: pre-wrap; }
滤波器配置
-
-
-
- 10
- 10
- 650
- 371
-
-
-
- 滤波器配置
-
-
- -
-
-
- 低通滤波器
-
-
-
-
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
- 截至频率(HZ)
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
-
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
-
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
- 使能
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
- 阶级
-
-
-
-
-
-
- -
-
-
- 陷波滤波器(带阻)
-
-
-
-
-
-
-
- 1
- 0
-
-
-
- 中心频率(HZ)
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
- 窗口宽度(HZ)
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
-
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
- 使能
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
- 阶级
-
-
-
-
-
-
- -
-
-
- 高通滤波器
-
-
-
-
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
- 截至频率(HZ)
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
-
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
-
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
- 使能
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
- 阶级
-
-
-
-
-
-
- -
-
-
-
- 0
- 150
-
-
-
- 通用参数
-
-
-
-
-
-
-
- 1
- 0
-
-
-
-
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
- 数据采样周期(ms)
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 300
- 20
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
-
-
-
-
-
-
-
-
- 540
- 400
- 111
- 41
-
-
-
- 更新滤波器参数
-
-
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 滤波器配置
+
+
+
-
+
+
+ 低通滤波器
+
+
+
-
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+ 截至频率(HZ)
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+ 使能
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+ 阶级
+
+
+
+
+
+
+ -
+
+
+ 陷波滤波器(带阻)
+
+
+
-
+
+
+
+ 1
+ 0
+
+
+
+ 中心频率(HZ)
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+ 窗口宽度(HZ)
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+ 使能
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+ 阶级
+
+
+
+
+
+
+ -
+
+
+ 高通滤波器
+
+
+
-
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+ 截至频率(HZ)
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+ 使能
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+ 阶级
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 150
+
+
+
+ 通用参数
+
+
+
-
+
+
+
+ 1
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+ 数据采样周期(ms)
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 50
+
+
+
+ 更新滤波器参数
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
diff --git a/src/electrocardiograph_tester.cpp b/src/electrocardiograph_tester.cpp
index d2717f2..92a1bdb 100644
--- a/src/electrocardiograph_tester.cpp
+++ b/src/electrocardiograph_tester.cpp
@@ -382,29 +382,27 @@ void ElectrocardiographTester::testCmdStopCapture() {
throw zexception(kifyhrs_ecode_cmd_not_support, "not implement");
}
-uint8_t ElectrocardiographTester::testCmdReadReg(uint8_t addr) {
+
+
+uint8_t ElectrocardiographTester::ecg_subic_read_reg(uint8_t addr) {
lock_guard lock(m_tx_lock);
- throw zexception(kifyhrs_ecode_cmd_not_support, "not implement");
-#if 0
- m_txcmd->cmd = ify_hrs_test_cmd_read_reg;
+#if 1
+ m_txcmd->cmd = ify_hrs_cmd_ecg_subic_read_reg;
m_txcmd->data[0] = addr;
- m_txcmd->cmd = ify_hrs_test_cmd_read_reg;
sendCmd(m_txcmd, sizeof(ify_hrs_packet_t) + 1, m_rxcmd, &m_rxsize, 100);
return m_rxcmd->data[0];
#endif
}
-void ElectrocardiographTester::testCmdWriteReg(uint8_t addr, uint8_t val) {
+void ElectrocardiographTester::ecg_subic_write_reg(uint8_t addr, uint8_t val) {
lock_guard lock(m_tx_lock);
- throw zexception(kifyhrs_ecode_cmd_not_support, "not implement");
-#if 0
+#if 1
- m_txcmd->cmd = ify_hrs_test_cmd_write_reg;
+ m_txcmd->cmd = ify_hrs_cmd_ecg_subic_write_reg;
m_txcmd->data[0] = addr;
m_txcmd->data[1] = val;
- m_txcmd->cmd = ify_hrs_test_cmd_write_reg;
sendCmd(m_txcmd, sizeof(ify_hrs_packet_t) + 2, m_rxcmd, &m_rxsize, 100);
#endif
}
@@ -412,7 +410,6 @@ void ElectrocardiographTester::testCmdWriteReg(uint8_t addr, uint8_t val) {
void ElectrocardiographTester::set_ecg_in_test_mode(int32_t testmode) {
lock_guard lock(m_tx_lock);
-
int32_t *para = (int32_t *)m_txcmd->data;
para[0] = testmode;
@@ -420,3 +417,14 @@ void ElectrocardiographTester::set_ecg_in_test_mode(int32_t testmode) {
sendCmd(m_txcmd, sizeof(ify_hrs_packet_t) + sizeof(int32_t), m_rxcmd, &m_rxsize, 100);
return;
}
+
+void ElectrocardiographTester::set_ecg_report_data_in_raw_mode(int32_t rawmode) {
+ lock_guard lock(m_tx_lock);
+
+ int32_t *para = (int32_t *)m_txcmd->data;
+ para[0] = rawmode;
+
+ m_txcmd->cmd = ify_hrs_cmd_set_ecg_report_data_in_raw_mode;
+ sendCmd(m_txcmd, sizeof(ify_hrs_packet_t) + sizeof(int32_t), m_rxcmd, &m_rxsize, 100);
+ return;
+}
diff --git a/src/electrocardiograph_tester.hpp b/src/electrocardiograph_tester.hpp
index fcf5ded..d134a2f 100644
--- a/src/electrocardiograph_tester.hpp
+++ b/src/electrocardiograph_tester.hpp
@@ -108,11 +108,12 @@ class ElectrocardiographTester {
void reset(); // 重置设备
void set_ecg_in_test_mode(int32_t testmode);
+ void set_ecg_report_data_in_raw_mode(int32_t rawmode);
void testCmdStartCapture();
void testCmdStopCapture();
- uint8_t testCmdReadReg(uint8_t addr);
- void testCmdWriteReg(uint8_t addr, uint8_t val);
+ uint8_t ecg_subic_read_reg(uint8_t addr);
+ void ecg_subic_write_reg(uint8_t addr, uint8_t val);
private:
void sendCmd(ify_hrs_packet_t *tx, int32_t txlen, ify_hrs_packet_t *rx, int32_t *rxlen, int32_t overtime);