In the DFRobot_DF1201S library, the getPlayMode() method has an improper type
cast. Edit/replace the function directly in DFRobot_DF1201S.cpp as shown:
// ORIGINAL FUNCTION:
DFRobot_DF1201S::ePlayMode_t DFRobot_DF1201S::getPlayMode(){
String playMode = "";
sPacket_t cmd;
cmd = pack("PLAYMODE","?");
writeATCommand(cmd.str,cmd.length);
String str = readAck(13);
playMode = str[10];
//Serial.println(str);
if(str[11] == '\r' && str[12] == '\n')
return (ePlayMode_t)atoi(playMode.c_str());
else
return ERROR;
}
// REPLACEMENT FROM
// https://forum.arduino.cc/t/dfrobot-player-pro-df1201s-issues/1337419/6
DFRobot_DF1201S::ePlayMode_t DFRobot_DF1201S::getPlayMode()
{
String playMode = "";
sPacket_t cmd;
cmd = pack("PLAYMODE", "?");
writeATCommand(cmd.str, cmd.length);
String str = readAck(13);
playMode = String(str[10]); // <<<=== CHANGE THIS LINE AS SHOWN
//Serial.println(str);
if (str[11] == '\r' && str[12] == '\n')
return (ePlayMode_t)atoi(playMode.c_str());
else
return ERROR;
}