Skip to content

Commit 697132c

Browse files
authored
Get rid of the EDU program status history (#481)
Fixes #480
2 parents 4b395e8 + 8b18686 commit 697132c

File tree

13 files changed

+11
-189
lines changed

13 files changed

+11
-189
lines changed

Sts1CobcSw/Edu/CMakeLists.txt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
target_sources(Sts1CobcSw_Edu PRIVATE ProgramStatusHistory.cpp)
21
target_link_libraries(
32
Sts1CobcSw_Edu PUBLIC Sts1CobcSw_FileSystem Sts1CobcSw_FramSections Sts1CobcSw_Outcome
43
Sts1CobcSw_Serial Sts1CobcSw_Vocabulary
@@ -17,8 +16,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL Generic)
1716
Sts1CobcSw_Vocabulary
1817
)
1918
set_target_properties(Sts1CobcSw_Edu PROPERTIES INTERPROCEDURAL_OPTIMIZATION_MINSIZEREL OFF)
20-
endif()
21-
if(CMAKE_SYSTEM_NAME STREQUAL Linux)
19+
else()
2220
target_sources(Sts1CobcSw_Edu PRIVATE EduMock.cpp)
2321
target_link_libraries(Sts1CobcSw_Edu PRIVATE Sts1CobcSw_RealTime)
2422
endif()

Sts1CobcSw/Edu/ProgramStatusHistory.cpp

Lines changed: 0 additions & 18 deletions
This file was deleted.

Sts1CobcSw/Edu/ProgramStatusHistory.hpp

Lines changed: 0 additions & 23 deletions
This file was deleted.

Sts1CobcSw/Edu/Types.hpp

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,6 @@ struct ProgramQueueEntry
5050
};
5151

5252

53-
struct ProgramStatusHistoryEntry
54-
{
55-
ProgramId programId = ProgramId(0);
56-
RealTime startTime = RealTime(0);
57-
ProgramStatus status = ProgramStatus::programRunning;
58-
};
59-
60-
6153
struct StoreProgramData
6254
{
6355
static constexpr auto id = 0x01_b;
@@ -159,12 +151,6 @@ inline constexpr std::size_t serialSize<edu::ProgramQueueEntry> =
159151
decltype(edu::ProgramQueueEntry::startTime),
160152
decltype(edu::ProgramQueueEntry::timeout)>;
161153

162-
template<>
163-
inline constexpr std::size_t serialSize<edu::ProgramStatusHistoryEntry> =
164-
totalSerialSize<decltype(edu::ProgramStatusHistoryEntry::programId),
165-
decltype(edu::ProgramStatusHistoryEntry::startTime),
166-
decltype(edu::ProgramStatusHistoryEntry::status)>;
167-
168154
template<>
169155
inline constexpr std::size_t serialSize<edu::StoreProgramData> =
170156
totalSerialSize<decltype(edu::StoreProgramData::id),
@@ -226,9 +212,6 @@ namespace edu
226212
template<std::endian endianness>
227213
[[nodiscard]] auto SerializeTo(void * destination, ProgramQueueEntry const & data) -> void *;
228214
template<std::endian endianness>
229-
[[nodiscard]] auto SerializeTo(void * destination, ProgramStatusHistoryEntry const & data)
230-
-> void *;
231-
template<std::endian endianness>
232215
[[nodiscard]] auto SerializeTo(void * destination, StoreProgramData const & data) -> void *;
233216
template<std::endian endianness>
234217
[[nodiscard]] auto SerializeTo(void * destination, ExecuteProgramData const & data) -> void *;
@@ -244,9 +227,6 @@ template<std::endian endianness>
244227
template<std::endian endianness>
245228
[[nodiscard]] auto DeserializeFrom(void const * source, ProgramQueueEntry * data) -> void const *;
246229
template<std::endian endianness>
247-
[[nodiscard]] auto DeserializeFrom(void const * source, ProgramStatusHistoryEntry * data)
248-
-> void const *;
249-
template<std::endian endianness>
250230
[[nodiscard]] auto DeserializeFrom(void const * source, NoEventData * data) -> void const *;
251231
template<std::endian endianness>
252232
[[nodiscard]] auto DeserializeFrom(void const * source, ProgramFinishedData * data) -> void const *;

Sts1CobcSw/Edu/Types.ipp

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,6 @@ auto SerializeTo(void * destination, ProgramQueueEntry const & data) -> void *
1818
}
1919

2020

21-
template<std::endian endianness>
22-
auto SerializeTo(void * destination, ProgramStatusHistoryEntry const & data) -> void *
23-
{
24-
using sts1cobcsw::SerializeTo;
25-
26-
destination = SerializeTo<endianness>(destination, data.programId);
27-
destination = SerializeTo<endianness>(destination, data.startTime);
28-
destination = SerializeTo<endianness>(destination, data.status);
29-
return destination;
30-
}
31-
32-
3321
template<std::endian endianness>
3422
auto SerializeTo(void * destination, StoreProgramData const & data) -> void *
3523
{
@@ -109,18 +97,6 @@ auto DeserializeFrom(void const * source, ProgramQueueEntry * data) -> void cons
10997
}
11098

11199

112-
template<std::endian endianness>
113-
auto DeserializeFrom(void const * source, ProgramStatusHistoryEntry * data) -> void const *
114-
{
115-
using sts1cobcsw::DeserializeFrom;
116-
117-
source = DeserializeFrom<endianness>(source, &(data->programId));
118-
source = DeserializeFrom<endianness>(source, &(data->startTime));
119-
source = DeserializeFrom<endianness>(source, &(data->status));
120-
return source;
121-
}
122-
123-
124100
template<std::endian endianness>
125101
auto DeserializeFrom(void const * source, [[maybe_unused]] NoEventData * data) -> void const *
126102
{

Sts1CobcSw/Firmware/EduListenerThread.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#include <Sts1CobcSw/Edu/Edu.hpp>
2-
#include <Sts1CobcSw/Edu/ProgramStatusHistory.hpp>
32
#include <Sts1CobcSw/Edu/Types.hpp>
43
#include <Sts1CobcSw/Firmware/EduPowerManagementThread.hpp>
54
#include <Sts1CobcSw/Firmware/EduProgramQueueThread.hpp>
@@ -97,13 +96,9 @@ auto ProcessEduUpdate() -> Result<void>
9796
{
9897
case edu::StatusType::programFinished:
9998
{
100-
auto programStatus = status.exitCode == 0
101-
? edu::ProgramStatus::programExecutionSucceeded
102-
: edu::ProgramStatus::programExecutionFailed;
10399
DEBUG_PRINT("EDU program %i finished with exit code %i\n",
104100
value_of(status.programId),
105101
status.exitCode);
106-
edu::UpdateProgramStatusHistory(status.programId, status.startTime, programStatus);
107102
ResumeEduProgramQueueThread();
108103
break;
109104
}
@@ -123,8 +118,6 @@ auto ProcessEduUpdate() -> Result<void>
123118
value_of(status.programId),
124119
static_cast<unsigned>(value_of(status.startTime)));
125120
persistentVariables.Store<"newEduResultIsAvailable">(true);
126-
edu::UpdateProgramStatusHistory(
127-
status.programId, status.startTime, edu::ProgramStatus::resultStoredInFileSystem);
128121
break;
129122
}
130123
case edu::StatusType::enableDosimeter:

Sts1CobcSw/Firmware/EduProgramQueueThread.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@
22

33
#include <Sts1CobcSw/Edu/Edu.hpp>
44
#include <Sts1CobcSw/Edu/ProgramQueue.hpp>
5-
#include <Sts1CobcSw/Edu/ProgramStatusHistory.hpp>
65
#include <Sts1CobcSw/Edu/Types.hpp>
76
#include <Sts1CobcSw/Firmware/EduPowerManagementThread.hpp>
87
#include <Sts1CobcSw/Firmware/StartupAndSpiSupervisorThread.hpp>
98
#include <Sts1CobcSw/Firmware/ThreadPriorities.hpp>
109
#include <Sts1CobcSw/Firmware/TopicsAndSubscribers.hpp>
1110
#include <Sts1CobcSw/FramSections/FramLayout.hpp>
12-
#include <Sts1CobcSw/FramSections/FramRingArray.hpp>
1311
#include <Sts1CobcSw/FramSections/FramVector.hpp>
1412
#include <Sts1CobcSw/FramSections/PersistentVariables.hpp>
1513
#include <Sts1CobcSw/Outcome/Outcome.hpp>
@@ -163,8 +161,6 @@ auto ProcessQueueEntry() -> Result<void>
163161
}
164162
OUTCOME_TRY(
165163
edu::ExecuteProgram({queueEntry.programId, queueEntry.startTime, queueEntry.timeout}));
166-
edu::programStatusHistory.PushBack(
167-
{queueEntry.programId, queueEntry.startTime, edu::ProgramStatus::programRunning});
168164
SuspendFor(queueEntry.timeout * s + eduCommunicationMargin);
169165
if(persistentVariables.Load<"eduProgramQueueIndex">() == eduProgramQueueIndexResetValue)
170166
{

Sts1CobcSw/FramSections/FramLayout.hpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,15 @@ namespace sts1cobcsw
1616
{
1717
inline constexpr auto persistentVariablesSize = fram::Size(300);
1818
inline constexpr auto eduProgramQueueSize = fram::Size(24 * 8 + 12);
19-
inline constexpr auto eduProgramStatusHistorySize = fram::Size(50 * 7);
2019
inline constexpr auto testMemorySize = fram::Size(1000);
21-
inline constexpr auto telemetrySize = fram::memorySize - persistentVariablesSize
22-
- eduProgramQueueSize - eduProgramStatusHistorySize
23-
- testMemorySize;
20+
inline constexpr auto telemetrySize =
21+
fram::memorySize - persistentVariablesSize - eduProgramQueueSize - testMemorySize;
2422

2523
inline constexpr auto framMemory = Section<fram::Address(0), fram::memorySize>{};
2624
inline constexpr auto framSections =
2725
Subsections<framMemory,
2826
SubsectionInfo<"persistentVariables", persistentVariablesSize>,
2927
SubsectionInfo<"eduProgramQueue", eduProgramQueueSize>,
30-
SubsectionInfo<"eduProgramStatusHistory", eduProgramStatusHistorySize>,
3128
SubsectionInfo<"testMemory", testMemorySize>,
3229
SubsectionInfo<"telemetry", telemetrySize>>{};
3330
inline constexpr auto persistentVariables =

Sts1CobcSw/Utility/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ endif()
99
if(BUILD_BOOTLOADER)
1010
target_compile_definitions(Sts1CobcSw_Utility INTERFACE BUILD_BOOTLOADER)
1111
else()
12-
target_link_libraries(Sts1CobcSw_Utility INTERFACE rodos::rodos)
12+
target_link_libraries(Sts1CobcSw_Utility INTERFACE rodos::rodos Sts1CobcSw_RodosTime)
1313
if(ENABLE_DEBUG_PRINT_STACK_USAGE)
1414
target_compile_definitions(Sts1CobcSw_Utility INTERFACE ENABLE_DEBUG_PRINT_STACK_USAGE)
1515
endif()

Sts1CobcSw/Utility/DebugPrint.hpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#pragma once
22

33
#ifndef BUILD_BOOTLOADER
4+
#include <Sts1CobcSw/RodosTime/RodosTime.hpp>
5+
46
#include <rodos_no_using_namespace.h>
57

68

@@ -15,6 +17,7 @@ inline auto uciUartSemaphore = RODOS::Semaphore{};
1517
{ \
1618
auto uciUartProtector = RODOS::ScopeProtector(&uciUartSemaphore); \
1719
RODOS::PRINTF(fmt, ##__VA_ARGS__); \
20+
BusyWaitFor(2 * ms); \
1821
} while(false)
1922
// NOLINTEND(cppcoreguidelines-macro-usage, *variadic-macro-arguments)
2023
#pragma GCC diagnostic pop
@@ -41,7 +44,8 @@ inline auto uciUartSemaphore = RODOS::Semaphore{};
4144
DEBUG_PRINT("[%s#%i] max. stack usage = %5u B\n", \
4245
__FILE_NAME__, \
4346
__LINE__, \
44-
RODOS::Thread::getCurrentThread()->getMaxStackUsage())
47+
RODOS::Thread::getCurrentThread()->getMaxStackUsage()); \
48+
BusyWaitFor(2 * ms)
4549
#else
4650
#define DEBUG_PRINT_STACK_USAGE()
4751
#endif
@@ -51,5 +55,6 @@ inline auto uciUartSemaphore = RODOS::Semaphore{};
5155
PROTECTED_PRINTF("[%s#%i] max. stack usage = %5u B\n", \
5256
__FILE_NAME__, \
5357
__LINE__, \
54-
RODOS::Thread::getCurrentThread()->getMaxStackUsage())
58+
RODOS::Thread::getCurrentThread()->getMaxStackUsage()); \
59+
BusyWaitFor(2 * ms)
5560
#endif

0 commit comments

Comments
 (0)