#ifndef BSP_Q7S_MEMORY_FILESYSTEMHELPER_H_
#define BSP_Q7S_MEMORY_FILESYSTEMHELPER_H_

#include <string>
#include "fsfw/returnvalues/HasReturnvaluesIF.h"

/**
 * @brief   This class implements often used functions concerning 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);

    FilesystemHelper();
    virtual ~FilesystemHelper();

    /**
     * @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 fiel exists, otherwise return error code.
     */
    static ReturnValue_t fileExists(std::string file);
};

#endif /* BSP_Q7S_MEMORY_FILESYSTEMHELPER_H_ */