#ifndef FPGARFIFFLASHENGINE_H
#define FPGARFIFFLASHENGINE_H

#include <stdint.h>
#include <exception>
#include "fpgaflashconfig.h"
#include "mydebug.h"
#include "fpgaflashprofile.h"
#include "FpgaFlashInterface.h"

class FpgaFlashEngineRFIF
{
public:
    FpgaFlashEngineRFIF();

    void setProfile(const FpgaFlashProfile& profile);

    void setInterface(FpgaFlashInterface* flashInterface);

    bool fpgaErase(unsigned int size);

    bool fpgaProgram(const void* data, unsigned int size);

    bool fpgaReset();

    bool fpgaTerminate();

    bool readFlashID();

    bool readStatusSPI();

    bool simulateWrite(uint32_t address, const void* data, unsigned int len);
    bool simulateRead(uint32_t address, void *data, unsigned int len);
    bool simulateErase(uint32_t address, void *data, unsigned int len);
    bool simulateReset();
    bool simulateReadStatusSPI();
    bool simulateTerminate();
    unsigned int simulateReadFlashID();

    bool getEnableMsgBlk();

};

#endif // FPGARFIFFLASHENGINE_H
