Skip to content

Commit

Permalink
WIP Create a class to handle ProgramStatusHistory Cache
Browse files Browse the repository at this point in the history
  • Loading branch information
jeromehue committed Jun 3, 2024
1 parent c62b806 commit 5faf8d9
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 17 deletions.
4 changes: 2 additions & 2 deletions Sts1CobcSw/Edu/ProgramStatusHistory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ sts1cobcsw::fram::RingBuffer<ProgramStatusHistoryEntry, programStatusHistorySize
programStatusHistory =
sts1cobcsw::fram::RingBuffer<ProgramStatusHistoryEntry, programStatusHistorySize>(0);

// ProgramStatusHistoryClass<programStatusHistorySize> programStatusHistoryClass;
//
ProgramStatusHistoryClass<programStatusHistorySize> pObject =
ProgramStatusHistoryClass<programStatusHistorySize>();
}

namespace sts1cobcsw::edu
Expand Down
22 changes: 13 additions & 9 deletions Sts1CobcSw/Edu/ProgramStatusHistory.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ template<std::size_t size>
class ProgramStatusHistoryClass
{
public:
ProgramStatusHistoryClass();
ProgramStatusHistoryClass() = default;

auto Put(ProgramStatusHistoryEntry const & programStatusHistoryEntry) -> void
{
Expand All @@ -69,14 +69,16 @@ class ProgramStatusHistoryClass
auto Update(ProgramId programId, std::int32_t startTime, ProgramStatus newStatus) -> void
{
// Update FRAM ringbuffer
for(std::uint32_t i = 0; i < framProgramStatusHistory_.occupiedCnt; ++i)
{
if(framProgramStatusHistory_.vals[i].startTime == startTime
and framProgramStatusHistory_.vals[i].programId == programId)
{
framProgramStatusHistory_.vals[i].status = newStatus;
}
}
// TODO: Make it work, there is no vals_ array in a fram ringbuffer so we need something
// else.
// for(std::uint32_t i = 0; i < framProgramStatusHistory_.occupiedCnt; ++i)
//{
// if(framProgramStatusHistory_.vals[i].startTime == startTime
// and framProgramStatusHistory_.vals[i].programId == programId)
// {
// framProgramStatusHistory_.vals[i].status = newStatus;
// }
//}

// Update RAM ringbuffer
for(std::uint32_t i = 0; i < ramProgramStatusHistory_.occupiedCnt; ++i)
Expand All @@ -93,6 +95,8 @@ class ProgramStatusHistoryClass
sts1cobcsw::fram::RingBuffer<ProgramStatusHistoryEntry, size> framProgramStatusHistory_;
RODOS::RingBuffer<ProgramStatusHistoryEntry, size> ramProgramStatusHistory_;
};

extern ProgramStatusHistoryClass<programStatusHistorySize> pObject;
}
}

Expand Down
14 changes: 9 additions & 5 deletions Sts1CobcSw/EduListenerThread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@ class EduListenerThread : public RODOS::StaticThread<>
// queue thread
if(status.exitCode == 0)
{
edu::pObject.Update(status.programId,
status.startTime,
edu::ProgramStatus::programExecutionSucceeded);
// FIXME: Update
// edu::UpdateProgramStatusHistory(
// status.programId,
Expand All @@ -87,6 +90,9 @@ class EduListenerThread : public RODOS::StaticThread<>
}
else
{
edu::pObject.Update(status.programId,
status.startTime,
edu::ProgramStatus::programExecutionFailed);
// FIXME: Update
// edu::UpdateProgramStatusHistory(
// status.programId,
Expand Down Expand Up @@ -123,11 +129,9 @@ class EduListenerThread : public RODOS::StaticThread<>
}
// break;

// FIXME: Update
// edu::UpdateProgramStatusHistory(
// status.programId,
// status.startTime,
// edu::ProgramStatus::resultFileTransfered);
edu::pObject.Update(status.programId,
status.startTime,
edu::ProgramStatus::resultFileTransfered);
break;
}
case edu::StatusType::invalid:
Expand Down
2 changes: 1 addition & 1 deletion Sts1CobcSw/EduProgramQueueThread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ class EduProgramQueueThread : public RODOS::StaticThread<stackSize>
}
else
{
edu::programStatusHistory.Put(
edu::pObject.Put(
edu::ProgramStatusHistoryEntry{.programId = programId,
.startTime = startTime,
.status = edu::ProgramStatus::programRunning});
Expand Down
2 changes: 2 additions & 0 deletions Sts1CobcSw/Periphery/FramRingBuffer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ class RingBuffer
{
}

RingBuffer() : startAddress_(0){};

void Put(T const & newdata)
{
currentWrite_ = writeIndex_;
Expand Down

0 comments on commit 5faf8d9

Please sign in to comment.