Udated for memory management
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit

This commit is contained in:
2022-03-01 17:41:58 +01:00
parent 81915f1772
commit 711732ccd6
5 changed files with 36 additions and 8 deletions

View File

@ -10,11 +10,12 @@
#include <string>
#include <utility>
#include "definitions.h"
#include "events/subsystemIdRanges.h"
#include "fsfw/events/Event.h"
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
#include "fsfw_hal/linux/CommandExecutor.h"
#include "mission/memory/SdCardMountedIF.h"
#include "mission/memory/definitions.h"
#include "returnvalues/classIds.h"
class MutexIF;
@ -23,10 +24,12 @@ class MutexIF;
* @brief Manages handling of SD cards like switching them on or off or getting the current
* state
*/
class SdCardManager : public SystemObject {
class SdCardManager : public SystemObject, public SdCardMountedIF {
friend class SdCardAccess;
public:
using mountInitCb = ReturnValue_t (*)(void* args);
enum class Operations { SWITCHING_ON, SWITCHING_OFF, MOUNTING, UNMOUNTING, IDLE };
enum class OpStatus { IDLE, TIMEOUT, ONGOING, SUCCESS, FAIL };
@ -88,7 +91,7 @@ class SdCardManager : public SystemObject {
* @param sdCard
* @return
*/
ReturnValue_t getPreferredSdCard(sd::SdCard& sdCard) const;
ReturnValue_t getPreferredSdCard(sd::SdCard& sdCard) const override;
/**
* Switch on the specified SD card.
@ -170,7 +173,7 @@ class SdCardManager : public SystemObject {
* @param prefSdCardPtr
* @return
*/
std::string getCurrentMountPrefix(sd::SdCard prefSdCardPtr = sd::SdCard::NONE);
std::string getCurrentMountPrefix(sd::SdCard prefSdCardPtr = sd::SdCard::NONE) override;
OpStatus checkCurrentOp(Operations& currentOp);
@ -183,19 +186,20 @@ class SdCardManager : public SystemObject {
void setPrintCommandOutput(bool print);
/**
* @brief Checks if an SD card is mounted
* @brief Checks if an SD card is mounted.
*
* @param sdCard The SD card to check
*
* @return true if mounted, otherwise false
*/
bool isSdCardMounted(sd::SdCard sdCard);
bool isSdCardMounted(sd::SdCard sdCard) override;
private:
CommandExecutor cmdExecutor;
Operations currentOp = Operations::IDLE;
bool blocking = false;
bool printCmdOutput = true;
MutexIF* mutex = nullptr;
SdCardManager();