#ifndef BSP_Q7S_MEMORY_FILESYSTEMHELPER_H_
#define BSP_Q7S_MEMORY_FILESYSTEMHELPER_H_

#include <string>

#include "commonClassIds.h"
#include "fsfw/returnvalues/HasReturnvaluesIF.h"

/**
 * @brief   This class implements often used functions related to the file system management.
 *
 * @author  J. Meier
 */
class FilesystemHelper : public HasReturnvaluesIF {
 public:
  static const uint8_t INTERFACE_ID = CLASS_ID::FILE_SYSTEM_HELPER;

  //! [EXPORT] : [COMMENT] SD card specified with path string not mounted
  static const ReturnValue_t SD_NOT_MOUNTED = MAKE_RETURN_CODE(0xA0);
  //! [EXPORT] : [COMMENT] Specified file does not exist on filesystem
  static const ReturnValue_t FILE_NOT_EXISTS = MAKE_RETURN_CODE(0xA1);

  /**
   * @brief   In case the path points to a directory on the sd card, the function checks if the
   *          appropriate SD card is mounted.
   *
   * @param path  Path to check
   *
   * @return  RETURN_OK if path points to SD card and the appropriate SD card is mounted or if
   *          path does not point to SD card.
   *          Return error code if path points to SD card and the corresponding SD card is not
   *          mounted.
   */
  static ReturnValue_t checkPath(std::string path);

  /**
   * @brief   Checks if the file exists on the filesystem.
   *
   * @param file   File to check
   *
   * @return  RETURN_OK if file exists, otherwise return error code.
   */
  static ReturnValue_t fileExists(std::string file);

 private:
  FilesystemHelper();
};

#endif /* BSP_Q7S_MEMORY_FILESYSTEMHELPER_H_ */