/*
    Original information:
    https://wiki.dfrobot.com/Voice_Module_SKU__DFR0534
 */

Three types
    SIMPLE
    PARAMETER
    ANSWER

---------- COMMREQ -------------------------------------------------------------
--------------------------------------------------------------------------------
<<ANSWER>>
Check Playback Status(0x01)
    Command: AA 01 00 AB
    Return: AA 01 01 Playback status SM
    Explanation: You can check the play status at any time.
--------------------------------------------------------------------------------
<<SIMPLE>>
Play(0x02)
    Command: AA 02 00 AC
    Return: None
    Explanation: Play the current track from the beginning at any time.
--------------------------------------------------------------------------------
<<SIMPLE>>
Pause(0x03)
    Command: AA 03 00 AD
    Return: None
--------------------------------------------------------------------------------
<<SIMPLE>>
Playstop(0x04)
    Command: AA 04 00 AE
    Return: None
--------------------------------------------------------------------------------
<<SIMPLE>>
Prev Audio(0x05)
    Command: AA 05 00 AF
    Return: None
--------------------------------------------------------------------------------
<<SIMPLE>>
Next Audio(0x06)
    Command: AA 06 00 B0
    Return: None
--------------------------------------------------------------------------------
<<PARAMETER>>
Specified Audio:(0x07)
    Command: AA 07 02 Upper-Byte Lower-Byte SM
    Return: None
    E.g. AA 07 02 00 08 BB
        will specify to play the eighth audio in the current drive,
        and the audio number is from 1 to 65535.
--------------------------------------------------------------------------------
<<PARAMETER>>
Play the audio in specified drive of specified path.(0x08)
    Command: AA 08 length drive path SM
    Return: None
    Explanation: length= drive length + path length=1+ path length
--------------------------------------------------------------------------------
<<ANSWER>>
Check the current online drive.(0x09)
    Command: AA 09 00 B3
    Return: AA 09 01 Drive SM
    Explanation: The online drive is differentiated
        by bitwise usb:bit (0) sd:bit (1) flash:bit (2)
        It can check the current online drive.
        It is recommended that you check the current online drive
         before switching the drive.
--------------------------------------------------------------------------------
<<ANSWER>>
Check the current drive(0x0A) to play
    Command: AA 0A 00 84
    Return: AA 0A 01 Drive SM
--------------------------------------------------------------------------------
<<PARAMETER>>    
Switch to the specified drive(0x0B)
    Command: AA 0B 01 drive SM
    Return: None
    Explanation: It is drive switching command. If the current drive is online,
        you can switch it to the corresponding drive and wait to play.
        After switching, the module plays the first audio of this drive.
        It is recommended to check whether the drive is online before you switch.
--------------------------------------------------------------------------------
<<ANSWER>>
Check the total audios(0x0C)
    Command: AA 0C 00 B6
    Return: AA 0C 02 Upper-byte Lower-byte SM
--------------------------------------------------------------------------------
<<ANSWER>>
Check the current audio(0x0D)
    Command: AA 0D 00 B7
    Return: AA 0D 02 upper-byte lower-byte SM
--------------------------------------------------------------------------------
<<SIMPLE>>
The Directory of the previous folder(0x0E)
    Command: AA 0E 00 B8
    Return: None
    Explanation: The first audio in the folder will be played after switching.
--------------------------------------------------------------------------------
<<SIMPLE>>
The directory of the next folder(0x0F)
    Command: AA 0F 00 B9
    Return: None
    Explanation: The first audio in the folder will be played after switching.
--------------------------------------------------------------------------------
<<SIMPLE>>
End to play(0x10)
    Command: AA 10 00 BA
    Explanation: This command can end the current operations in advance.
        If the command end a cut-in,
        it will end in advance and return to the original status.
--------------------------------------------------------------------------------
<<ANSWER>>
Check the first audio in the folder(0x11)
    Command: AA 11 00 BB
    Return: AA 11 02 Upper-byte Lower-byte SM
    Explanation: It is the sequence number of the first audio.
--------------------------------------------------------------------------------
<<ANSWER>>
Check the total numbers of audio in all folders(0x12)
    Command: AA 12 00 BC
    Return: AA 12 02 Upper-byte Lower-byte SM
    Explanation:
        This number does not contain the number of files in subdirectories.
--------------------------------------------------------------------------------
<<PARAMETER>>
Volume settings(0x13)
    Command: AA 13 01 VOL SM
    Return: None
    Explanation: AA 13 01 14 D2 Set volume to level 20.
--------------------------------------------------------------------------------
<<SIMPLE>>
Increase the volume(0x14)
    Command: AA 14 00 BE
    Return: None
--------------------------------------------------------------------------------
<<SIMPLE>>   
Reduce the volume(0x15)
    Command: AA 15 00 BF
    Return: None
--------------------------------------------------------------------------------
<<PARAMETER>>    
Cut-in a specific audio(0x16)
    Command: AA 16 03 drive Upper-byte Lower-byte SM
    Return: None
    E.g. AA 16 03 00 00 09 CC Cut-in the 9th audio in the USB flash drive.
    Explanation:
        Continue to play the original audio when cut-in audio is played.
--------------------------------------------------------------------------------
<<PARAMETER>> 
Cut-in the audio on the specified path(0x17)
    Command: AA 17 Length Drive Path SM
    Return: None
    Explanation: length= drive length + path length=1+ path length
--------------------------------------------------------------------------------
<<PARAMETER>> 
Set the loop mode(0x18)
    Command: AA 18 01 loop mode
    Return: None
    E.g. Set to end single play AA 18 01 03 C6
--------------------------------------------------------------------------------
<<PARAMETER>>
Set the number of loop times(0x19)
    Command: AA 19 02 Upper-byte Lower-byte SM
    Return: None
    Explain: This command is only valid when the loop mode is Full Loop,
         Single Loop, Catalog Loop.
    E.g. AA 19 02 00 06 CB Repeat 6 times.
--------------------------------------------------------------------------------
<<PARAMETER>>
EQ Setting (0x1A)
    Command: AA 1A 01 EQ SM
    Return: None
    E.g. AA 1A 01 02 C7 Set EQ to ROCK
--------------------------------------------------------------------------------
<<PARAMETER>>  
Combination Play(0x1B)
    Command: AA 1B Upper-byte of the audio 1,
         Lower-byte of the audio 1...Upper-byte of the audio n,
         Lower byte of the audio n.
    Return: None
    E.g. AA1B04303130328C,
        audios with file names of 01 and 02 are grouped together to play
    Explanation: The combination of file names is very convenient, 
        more accurate than combined file numbers,
        and is not restricted by the copy order limitation.
--------------------------------------------------------------------------------
<<SIMPLE>>
End Combination Play(0x1C)
    Command: AA 1C 00 C6
    Return: None
    Explanation: End combination playback,
         and return the play state before the combination.
--------------------------------------------------------------------------------
<<PARAMETER>>  
Set channels(0x1D)
    Command: AA 1D 01 channels SM
    Return: None
--------------------------------------------------------------------------------
<<ANSWER>>    
Check the short-file name(0x1E)
    Command: AA 1E 00 C8
    Return: AA 1E The length of short-file name Short-file name SM
--------------------------------------------------------------------------------
<<PARAMETER>>  
Select audio but do not play(0x1F)
    Command: AA 1F 02 Upper-byte Lower-byte SM
    Return: None
--------------------------------------------------------------------------------
<<PARAMETER>>
Control of Repetition(0x20)
    Command: AA 20 04 beginning-minute beginning-second
         ending-minute ending-second SM
    Return: None
--------------------------------------------------------------------------------
<<SIMPLE>>
End repetition(0x21)
    Command: AA 21 00 CB
    Return: None
--------------------------------------------------------------------------------
<<PARAMETER>>
Specify the time to rewind(0x22)
    Command: AA 22 02 Upper-byte Lower-byte SM
    Return: None
    Explanation: The unit is seconds
--------------------------------------------------------------------------------
<<PARAMETER>>
Specify the time to wind(0x23)
    Command: AA 23 02 Upper-byte Lower-byte SM
    Return: None
    Explanation: The unit is seconds
--------------------------------------------------------------------------------
<<ANSWER>>
Get the total time of the current audio(0x24)
    Command: AA 24 00 CE
    Return: AA 24 03 hour minute second SM
--------------------------------------------------------------------------------
<<ANSWER>>
Start the playback time sending(0x25)
    Command: AA 25 00 CF
    Return: AA 25 03 hour minute second SM
    Explanation: Start to send playing time,
         Return automatically when the time is updated.
--------------------------------------------------------------------------------
<<SIMPLE>>
End to send the playing time(0x26)
    Command: AA 26 00 D0
    Return: None
    Explanation: End the playback time sending.
--------------------------------------------------------------------------------