diff --git a/README.md b/README.md
index 78c49b1..06df6ba 100644
--- a/README.md
+++ b/README.md
@@ -18,6 +18,12 @@ See INSTALL.md for instructions
## Features
+### Hardware timestamps
+
+Hardware timestamps (if supported) can offer more accurate timestamps.
+
+To enable hardware timestamps check the box in Settings --> Backend --> General --> Enable Hardware timestamps.
+
### Pre SoC Cycles
In some scenarios debugging the network traffic that came before
diff --git a/external/EPL_DataCollect b/external/EPL_DataCollect
index 9946b38..006e060 160000
--- a/external/EPL_DataCollect
+++ b/external/EPL_DataCollect
@@ -1 +1 @@
-Subproject commit 9946b38a1bdf0acc3cfd81933daf9206bb258e33
+Subproject commit 006e060654f1ba3761e5b4cfa68540d0ec900ea9
diff --git a/libEPLViz/src/settings/SettingsProfileItem.cpp b/libEPLViz/src/settings/SettingsProfileItem.cpp
index e9946a7..98506c5 100644
--- a/libEPLViz/src/settings/SettingsProfileItem.cpp
+++ b/libEPLViz/src/settings/SettingsProfileItem.cpp
@@ -51,6 +51,7 @@ QString SettingsProfileItem::getName() { return name; }
bool SettingsProfileItem::writeCfg(AbstractWriter *writer) {
writer->setValue("EPL_DC/xddDir", cfg.backConf.xddDir.c_str());
+ writer->setValue("EPL_DC/enableHardwareTimestamps", cfg.backConf.enableHardwareTimestamps);
writer->setValue("pauseWhilePlayingFile", cfg.pauseWhilePlayingFile);
writer->setValue("immidiateCycleChange", cfg.immidiateCycleChange);
writer->setValue("invertTimeLineZoom", cfg.invertTimeLineZoom);
@@ -141,6 +142,7 @@ bool SettingsProfileItem::writeCfg(AbstractWriter *writer) {
bool SettingsProfileItem::readCfg(AbstractWriter *writer) {
cfg.backConf.xddDir = writer->value("EPL_DC/xddDir").toString().toStdString();
+ cfg.backConf.enableHardwareTimestamps = writer->value("EPL_DC/enableHardwareTimestamps").toBool();
cfg.pauseWhilePlayingFile = writer->value("pauseWhilePlayingFile").toBool();
cfg.immidiateCycleChange = writer->value("immidiateCycleChange").toBool();
cfg.invertTimeLineZoom = writer->value("invertTimeLineZoom").toBool();
diff --git a/libEPLViz/src/settings/SettingsWindow.cpp b/libEPLViz/src/settings/SettingsWindow.cpp
index 8b0dc16..8bcd982 100644
--- a/libEPLViz/src/settings/SettingsWindow.cpp
+++ b/libEPLViz/src/settings/SettingsWindow.cpp
@@ -153,6 +153,7 @@ SettingsWindow::~SettingsWindow() {
void SettingsWindow::updateView(bool updateNodes) {
SettingsProfileItem *prof = profiles[currentProfile].get();
ui->G_XDDDir->setText(prof->cfg.backConf.xddDir.c_str());
+ ui->G_EnableHWTs->setCheckState(prof->cfg.backConf.enableHardwareTimestamps ? Qt::Checked : Qt::Unchecked);
ui->G_PausePlay->setCheckState(prof->cfg.pauseWhilePlayingFile ? Qt::Checked : Qt::Unchecked);
ui->TL_ChancheCycleImm->setCheckState(prof->cfg.immidiateCycleChange ? Qt::Checked : Qt::Unchecked);
ui->TL_Invert->setCheckState(prof->cfg.invertTimeLineZoom ? Qt::Checked : Qt::Unchecked);
@@ -237,6 +238,7 @@ void SettingsWindow::updateView(bool updateNodes) {
void SettingsWindow::saveIntoProfiles() {
SettingsProfileItem *prof = profiles[currentProfile].get();
prof->cfg.backConf.xddDir = ui->G_XDDDir->text().toStdString();
+ prof->cfg.backConf.enableHardwareTimestamps = ui->G_EnableHWTs->checkState() == Qt::Checked;
prof->cfg.pauseWhilePlayingFile = ui->G_PausePlay->checkState() == Qt::Checked;
prof->cfg.immidiateCycleChange = ui->TL_ChancheCycleImm->checkState() == Qt::Checked;
prof->cfg.invertTimeLineZoom = ui->TL_Invert->checkState() == Qt::Checked;
diff --git a/libEPLViz/ui/settingswindow.ui b/libEPLViz/ui/settingswindow.ui
index 9de145b..43ca14f 100644
--- a/libEPLViz/ui/settingswindow.ui
+++ b/libEPLViz/ui/settingswindow.ui
@@ -3027,6 +3027,32 @@
+ -
+
+
+ Enable Hardware timestamps in live capture
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
-
+
+
+
+
+
+
+
+
+