    //#New(backend):  N                                               //- [Y]  if new (backend) to add
    //#Init_Base:                                                    //- parameter to add at launch of library in case of backend
    //#Init_Include:                                                 //- function added at initialization (it can be Loop_Base)
    //#Loop_Base:                                                    //- function launched at loop start and activation callback function on event
    //#Loop1_Event:                                                  //- event to monitor in a loop
    //#Loop1_Config: SubVoid_Void  0 DataAvailableSub                //- parameters of callback created: CallbackType EndPar callbacksub
    //#Loop2_Event:                                                  //- event to monitor in a loop
    //#Loop2_Config: SubVoid_Void  0 DataAvailableSub                //- parameters of callback created: CallbackType EndPar callbacksub
    //#Loop3_Event:                                                  //- event to monitor in a loop
    //#Loop3_Config: SubVoid_Void  0 DataAvailableSub                //- parameters of callback created: CallbackType EndPar callbacksub
    //#CallBack1_Base:                                               //- callback on arduino side
    //#CallBack1_Config: SubVoid_BArray 0 MessageArrivedSub          //- CallbackType Par1 EndPar callbacksub
    //#CallBack2_Base:                                               //- callback on arduino side
    //#CallBack2_Config: SubVoid_StringBArray 0 2 NewMessageSub      //- CallbackType Par1 Par2 EndPar callbacksub
    //#CallBack3_Base:                                               //- callback on arduino side
    //#CallBack3_Config: SubVoid_StringBArray 0 2 NewMessageSub      //- CallbackType Par1 Par2 EndPar callbacksub
    //#

#include "B4RDefines.h"
#include "rDFRobotDFPlayerMini.h"

namespace B4R
{

    DFRobotDFPlayerMini dfrobotdfplayermini;

    // byte _handleType
    // byte _handleCommand
    // uint16_t _handleParameter
    // bool _isAvailable = false
    // bool _isSending = false
    bool B4RDFRobotDFPlayerMini::handleMessage(byte type, uint16_t parameter)
    {
       return dfrobotdfplayermini.handleMessage(type, parameter);
    }

    bool B4RDFRobotDFPlayerMini::handleError(byte type, uint16_t parameter)
    {
       return dfrobotdfplayermini.handleError(type, parameter);
    }

    byte B4RDFRobotDFPlayerMini::readCommand()
    {
       return dfrobotdfplayermini.readCommand();
    }

    bool B4RDFRobotDFPlayerMini::begin(B4RStream* stream, bool isACK, bool doReset)
    {
       return dfrobotdfplayermini.begin(*stream->wrappedClient, isACK, doReset);
    }

    bool B4RDFRobotDFPlayerMini::waitAvailable(uint32_t duration)
    {
       return dfrobotdfplayermini.waitAvailable(duration);
    }

    bool B4RDFRobotDFPlayerMini::available()
    {
       return dfrobotdfplayermini.available();
    }

    byte B4RDFRobotDFPlayerMini::readType()
    {
       return dfrobotdfplayermini.readType();
    }

    uint16_t B4RDFRobotDFPlayerMini::read()
    {
       return dfrobotdfplayermini.read();
    }

    void B4RDFRobotDFPlayerMini::setTimeOut(uint32_t timeOutDuration)
    {
       dfrobotdfplayermini.setTimeOut(timeOutDuration);
    }

    void B4RDFRobotDFPlayerMini::next()
    {
       dfrobotdfplayermini.next();
    }

    void B4RDFRobotDFPlayerMini::previous()
    {
       dfrobotdfplayermini.previous();
    }

    void B4RDFRobotDFPlayerMini::play(int16_t fileNumber)
    {
       dfrobotdfplayermini.play(fileNumber);
    }

    void B4RDFRobotDFPlayerMini::volumeUp()
    {
       dfrobotdfplayermini.volumeUp();
    }

    void B4RDFRobotDFPlayerMini::volumeDown()
    {
       dfrobotdfplayermini.volumeDown();
    }

    void B4RDFRobotDFPlayerMini::volume(byte volume)
    {
       dfrobotdfplayermini.volume(volume);
    }

    void B4RDFRobotDFPlayerMini::EQ(byte eq)
    {
       dfrobotdfplayermini.EQ(eq);
    }

    void B4RDFRobotDFPlayerMini::loop(int16_t fileNumber)
    {
       dfrobotdfplayermini.loop(fileNumber);
    }

    void B4RDFRobotDFPlayerMini::outputDevice(byte device)
    {
       dfrobotdfplayermini.outputDevice(device);
    }

    void B4RDFRobotDFPlayerMini::sleep()
    {
       dfrobotdfplayermini.sleep();
    }

    void B4RDFRobotDFPlayerMini::reset()
    {
       dfrobotdfplayermini.reset();
    }

    void B4RDFRobotDFPlayerMini::start()
    {
       dfrobotdfplayermini.start();
    }

    void B4RDFRobotDFPlayerMini::pause()
    {
       dfrobotdfplayermini.pause();
    }

    void B4RDFRobotDFPlayerMini::playFolder(byte folderNumber, byte fileNumber)
    {
       dfrobotdfplayermini.playFolder(folderNumber, fileNumber);
    }

    void B4RDFRobotDFPlayerMini::outputSetting(bool enable, byte gain)
    {
       dfrobotdfplayermini.outputSetting(enable, gain);
    }

    void B4RDFRobotDFPlayerMini::enableLoopAll()
    {
       dfrobotdfplayermini.enableLoopAll();
    }

    void B4RDFRobotDFPlayerMini::disableLoopAll()
    {
       dfrobotdfplayermini.disableLoopAll();
    }

    void B4RDFRobotDFPlayerMini::playMp3Folder(int16_t fileNumber)
    {
       dfrobotdfplayermini.playMp3Folder(fileNumber);
    }

    void B4RDFRobotDFPlayerMini::advertise(int16_t fileNumber)
    {
       dfrobotdfplayermini.advertise(fileNumber);
    }

    void B4RDFRobotDFPlayerMini::playLargeFolder(byte folderNumber, uint16_t fileNumber)
    {
       dfrobotdfplayermini.playLargeFolder(folderNumber, fileNumber);
    }

    void B4RDFRobotDFPlayerMini::stopAdvertise()
    {
       dfrobotdfplayermini.stopAdvertise();
    }

    void B4RDFRobotDFPlayerMini::stop()
    {
       dfrobotdfplayermini.stop();
    }

    void B4RDFRobotDFPlayerMini::loopFolder(int16_t folderNumber)
    {
       dfrobotdfplayermini.loopFolder(folderNumber);
    }

    void B4RDFRobotDFPlayerMini::randomAll()
    {
       dfrobotdfplayermini.randomAll();
    }

    void B4RDFRobotDFPlayerMini::enableLoop()
    {
       dfrobotdfplayermini.enableLoop();
    }

    void B4RDFRobotDFPlayerMini::disableLoop()
    {
       dfrobotdfplayermini.disableLoop();
    }

    void B4RDFRobotDFPlayerMini::enableDAC()
    {
       dfrobotdfplayermini.enableDAC();
    }

    void B4RDFRobotDFPlayerMini::disableDAC()
    {
       dfrobotdfplayermini.disableDAC();
    }

    int16_t B4RDFRobotDFPlayerMini::readState()
    {
       return dfrobotdfplayermini.readState();
    }

    int16_t B4RDFRobotDFPlayerMini::readVolume()
    {
       return dfrobotdfplayermini.readVolume();
    }

    int16_t B4RDFRobotDFPlayerMini::readEQ()
    {
       return dfrobotdfplayermini.readEQ();
    }

    int16_t B4RDFRobotDFPlayerMini::readFileCounts(byte device)
    {
       return dfrobotdfplayermini.readFileCounts(device);
    }

    int16_t B4RDFRobotDFPlayerMini::readCurrentFileNumber(byte device)
    {
       return dfrobotdfplayermini.readCurrentFileNumber(device);
    }

    int16_t B4RDFRobotDFPlayerMini::readFileCountsInFolder(int16_t folderNumber)
    {
       return dfrobotdfplayermini.readFileCountsInFolder(folderNumber);
    }

    int16_t B4RDFRobotDFPlayerMini::readFileCounts1()
    {
       return dfrobotdfplayermini.readFileCounts();
    }

    int16_t B4RDFRobotDFPlayerMini::readFolderCounts()
    {
       return dfrobotdfplayermini.readFolderCounts();
    }

    int16_t B4RDFRobotDFPlayerMini::readCurrentFileNumber1()
    {
       return dfrobotdfplayermini.readCurrentFileNumber();
    }

}
