diff --git a/CHANGELOG.md b/CHANGELOG.md
index 118b667c..57355ad0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,12 +16,15 @@ will consitute of a breaking change warranting a new major release:
# [unreleased]
-# [v4.0.1] to be released
-
-## Changed
-
- Internal error reporter set is now enabled by defalt and generated every 120 seconds.
+# [v4.0.1] 2023-06-24
+
+## Fixed
+
+- `PusLiveDemux` packet demultiplexing bugfix where the demultiplexing did not work when there was
+ only one destination available.
+
# [v4.0.0] 2023-06-22
- `eive-tmtc` version v5.0.0
@@ -51,6 +54,17 @@ will consitute of a breaking change warranting a new major release:
restore the PL I2C.
- Core controller now announces firmware version as well when requesting a version info event
+# [v3.3.1] 2023-06-22
+
+## Fixed
+
+- `PusLiveDemux` packet demultiplexing bugfix where the demultiplexing did not work when there was
+ only one destination available.
+
+## Fixed
+
+- Fixed H parameter in SUS converter from 1 mm to 2.5 mm.
+
# [v3.3.0] 2023-06-21
Like v3.2.0 but without the custom FM changes related to VC0.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3c7e1c1e..9e234cae 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,7 +11,7 @@ cmake_minimum_required(VERSION 3.13)
set(OBSW_VERSION_MAJOR 4)
set(OBSW_VERSION_MINOR 0)
-set(OBSW_VERSION_REVISION 0)
+set(OBSW_VERSION_REVISION 1)
# set(CMAKE_VERBOSE TRUE)
diff --git a/misc/eclipse/.cproject b/misc/eclipse/.cproject
index 4cfe3fa1..154cb27e 100644
--- a/misc/eclipse/.cproject
+++ b/misc/eclipse/.cproject
@@ -57,7 +57,8 @@
-
+
+
@@ -119,7 +120,8 @@
-
+
+
@@ -187,7 +189,8 @@
-
+
+
@@ -255,7 +258,8 @@
-
+
+
@@ -418,7 +422,8 @@
-
+
+
@@ -580,7 +585,8 @@
-
+
+
@@ -750,7 +756,8 @@
-
+
+
@@ -917,7 +924,8 @@
-
+
+
@@ -1084,7 +1092,8 @@
-
+
+
@@ -1149,7 +1158,8 @@
-
+
+
@@ -1172,7 +1182,7 @@
-
+
@@ -1317,7 +1327,9 @@
-
+
+
+
@@ -1386,7 +1398,8 @@
-
+
+
diff --git a/mission/tmtc/PusLiveDemux.cpp b/mission/tmtc/PusLiveDemux.cpp
index bbe1be4f..8ba69e07 100644
--- a/mission/tmtc/PusLiveDemux.cpp
+++ b/mission/tmtc/PusLiveDemux.cpp
@@ -11,23 +11,20 @@ ReturnValue_t PusLiveDemux::demultiplexPackets(StorageManagerIF& tmStore,
ReturnValue_t result = returnvalue::OK;
for (unsigned int idx = 0; idx < destinations.size(); idx++) {
const auto& dest = destinations[idx];
- if (destinations.size() > 1) {
- if (idx < destinations.size() - 1) {
- // Create copy of data to ensure each TM recipient has its own copy. That way, we don't need
- // to bother with send order and where the data is deleted.
- store_address_t storeId;
- result = tmStore.addData(&storeId, tmData, tmSize);
- if (result == returnvalue::OK) {
- message.setStorageId(storeId);
- } else {
-#if FSFW_CPP_OSTREAM_ENABLED == 1
- sif::error << "PusLiveDemux::handlePacket: Store too full to create data copy"
- << std::endl;
-#endif
- }
+ if ((destinations.size() > 1) and (idx < (destinations.size() - 1))) {
+ // Create copy of data to ensure each TM recipient has its own copy. That way, we don't need
+ // to bother with send order and where the data is deleted.
+ store_address_t storeId;
+ result = tmStore.addData(&storeId, tmData, tmSize);
+ if (result == returnvalue::OK) {
+ message.setStorageId(storeId);
} else {
- message.setStorageId(origStoreId);
+#if FSFW_CPP_OSTREAM_ENABLED == 1
+ sif::error << "PusLiveDemux::handlePacket: Store too full to create data copy" << std::endl;
+#endif
}
+ } else {
+ message.setStorageId(origStoreId);
}
result = ownerQueue.sendMessage(dest.queueId, &message);
if (result != returnvalue::OK) {
diff --git a/tmtc b/tmtc
index c9f4a807..ec0ebc36 160000
--- a/tmtc
+++ b/tmtc
@@ -1 +1 @@
-Subproject commit c9f4a8070d20bc659809d5b822ac5a17548f57a4
+Subproject commit ec0ebc365308198046addc94909b1bca8678aa5a