Skip to content

Commit

Permalink
update to 1.0.1 Fix the compiling error on Arduino.org IDE
Browse files Browse the repository at this point in the history
  • Loading branch information
jimaobian committed Dec 13, 2016
1 parent 483c5f5 commit fabbb01
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 67 deletions.
52 changes: 26 additions & 26 deletions DFRobotDFPlayerMini.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ void DFRobotDFPlayerMini::uint16ToArray(uint16_t value, uint8_t *array){

uint16_t DFRobotDFPlayerMini::calculateCheckSum(uint8_t *buffer){
uint16_t sum = 0;
for (int i=Stack::Version; i<Stack::CheckSum; i++) {
for (int i=Stack_Version; i<Stack_CheckSum; i++) {
sum += buffer[i];
}
return -sum;
}

void DFRobotDFPlayerMini::sendStack(){
if (_sending[Stack::ACK]) {
if (_sending[Stack_ACK]) {
while (_isSending) {
available();
}
Expand All @@ -51,17 +51,17 @@ void DFRobotDFPlayerMini::sendStack(){
#endif
_serial->write(_sending, DFPLAYER_SEND_LENGTH);
_timeOutTimer = millis();
_isSending = _sending[Stack::ACK];
_isSending = _sending[Stack_ACK];
}

void DFRobotDFPlayerMini::sendStack(uint8_t command){
sendStack(command, 0);
}

void DFRobotDFPlayerMini::sendStack(uint8_t command, uint16_t argument){
_sending[Stack::Command] = command;
uint16ToArray(argument, _sending+Stack::Parameter);
uint16ToArray(calculateCheckSum(_sending), _sending+Stack::CheckSum);
_sending[Stack_Command] = command;
uint16ToArray(argument, _sending+Stack_Parameter);
uint16ToArray(calculateCheckSum(_sending), _sending+Stack_CheckSum);
sendStack();
}

Expand All @@ -72,17 +72,17 @@ void DFRobotDFPlayerMini::sendStack(uint8_t command, uint8_t argumentHigh, uint8
}

void DFRobotDFPlayerMini::enableACK(){
_sending[Stack::ACK] = 0x01;
_sending[Stack_ACK] = 0x01;
}

void DFRobotDFPlayerMini::disableACK(){
_sending[Stack::ACK] = 0x00;
_sending[Stack_ACK] = 0x00;
}

bool DFRobotDFPlayerMini::waitAvailable(){
_isSending = true;
while (!available());
return _handleType != HandleType::TimeOut;
return _handleType != TimeOut;
}

bool DFRobotDFPlayerMini::begin(Stream &stream, bool isACK){
Expand All @@ -102,7 +102,7 @@ bool DFRobotDFPlayerMini::begin(Stream &stream, bool isACK){
return (readType() == DFPlayerCardOnline) || !isACK;
}

HandleType DFRobotDFPlayerMini::readType(){
uint8_t DFRobotDFPlayerMini::readType(){
_isAvailable = false;
return _handleType;
}
Expand All @@ -112,15 +112,15 @@ uint16_t DFRobotDFPlayerMini::read(){
return _handleParameter;
}

bool DFRobotDFPlayerMini::handleMessage(HandleType type, uint16_t parameter){
bool DFRobotDFPlayerMini::handleMessage(uint8_t type, uint16_t parameter){
_receivedIndex = 0;
_handleType = type;
_handleParameter = parameter;
_isAvailable = true;
return _isAvailable;
}

bool DFRobotDFPlayerMini::handleError(HandleType type, uint16_t parameter){
bool DFRobotDFPlayerMini::handleError(uint8_t type, uint16_t parameter){
handleMessage(type, parameter);
_isSending = false;
}
Expand All @@ -131,30 +131,30 @@ uint8_t DFRobotDFPlayerMini::readCommand(){
}

void DFRobotDFPlayerMini::parseStack(){
_handleCommand = *(_received + Stack::Command);
_handleParameter = arrayToUint16(_received + Stack::Parameter);
_handleCommand = *(_received + Stack_Command);
_handleParameter = arrayToUint16(_received + Stack_Parameter);

switch (_handleCommand) {
case 0x3D:
handleMessage(HandleType::DFPlayerPlayFinished, _handleParameter);
handleMessage(DFPlayerPlayFinished, _handleParameter);
break;
case 0x3F:
if (_handleParameter & 0x02) {
handleMessage(HandleType::DFPlayerCardOnline, _handleParameter);
handleMessage(DFPlayerCardOnline, _handleParameter);
}
break;
case 0x3A:
if (_handleParameter & 0x02) {
handleMessage(HandleType::DFPlayerCardInserted, _handleParameter);
handleMessage(DFPlayerCardInserted, _handleParameter);
}
break;
case 0x3B:
if (_handleParameter & 0x02) {
handleMessage(HandleType::DFPlayerCardRemoved, _handleParameter);
handleMessage(DFPlayerCardRemoved, _handleParameter);
}
break;
case 0x40:
handleMessage(HandleType::DFPlayerError, _handleParameter);
handleMessage(DFPlayerError, _handleParameter);
break;
case 0x41:
_isSending = false;
Expand Down Expand Up @@ -190,19 +190,19 @@ uint16_t DFRobotDFPlayerMini::arrayToUint16(uint8_t *array){
}

bool DFRobotDFPlayerMini::validateStack(){
return calculateCheckSum(_received) == arrayToUint16(_received+Stack::CheckSum);
return calculateCheckSum(_received) == arrayToUint16(_received+Stack_CheckSum);
}

bool DFRobotDFPlayerMini::available(){
while (_serial->available()) {
if (_receivedIndex == 0) {
_received[Stack::Header] = _serial->read();
_received[Stack_Header] = _serial->read();
#ifdef _DEBUG
Serial.print(F("received:"));
Serial.print(_received[_receivedIndex],HEX);
Serial.print(F(" "));
#endif
if (_received[Stack::Header] == 0x7E) {
if (_received[Stack_Header] == 0x7E) {
_isAvailable = false;
_receivedIndex ++;
}
Expand All @@ -214,17 +214,17 @@ bool DFRobotDFPlayerMini::available(){
Serial.print(F(" "));
#endif
switch (_receivedIndex) {
case Stack::Version:
case Stack_Version:
if (_received[_receivedIndex] != 0xFF) {
return handleError(WrongStack);
}
break;
case Stack::Length:
case Stack_Length:
if (_received[_receivedIndex] != 0x06) {
return handleError(WrongStack);
}
break;
case Stack::End:
case Stack_End:
#ifdef _DEBUG
Serial.println();
#endif
Expand All @@ -235,7 +235,7 @@ bool DFRobotDFPlayerMini::available(){
if (validateStack()) {
_receivedIndex = 0;
parseStack();
if (_isAvailable && !_sending[Stack::ACK]) {
if (_isAvailable && !_sending[Stack_ACK]) {
_isSending = false;
}
return _isAvailable;
Expand Down
64 changes: 28 additions & 36 deletions DFRobotDFPlayerMini.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,26 +35,30 @@

//#define _DEBUG

enum HandleType{
TimeOut,
WrongStack,
DFPlayerCardInserted,
DFPlayerCardRemoved,
DFPlayerCardOnline,
DFPlayerPlayFinished,
DFPlayerError
};

enum DFPlayerErrorType{
Busy = 1,
Sleeping,
SerialWrongStack,
CheckSumNotMatch,
FileIndexOut,
FileMismatch,
Advertise
};

#define TimeOut 0
#define WrongStack 1
#define DFPlayerCardInserted 2
#define DFPlayerCardRemoved 3
#define DFPlayerCardOnline 4
#define DFPlayerPlayFinished 5
#define DFPlayerError 6

#define Busy 1
#define Sleeping 2
#define SerialWrongStack 3
#define CheckSumNotMatch 4
#define FileIndexOut 5
#define FileMismatch 6
#define Advertise 7

#define Stack_Header 0
#define Stack_Version 1
#define Stack_Length 2
#define Stack_Command 3
#define Stack_ACK 4
#define Stack_Parameter 5
#define Stack_CheckSum 7
#define Stack_End 9

class DFRobotDFPlayerMini {
Stream* _serial;
Expand Down Expand Up @@ -88,28 +92,16 @@ class DFRobotDFPlayerMini {

uint8_t device = DFPLAYER_DEVICE_SD;


enum Stack{
Header = 0,
Version = 1,
Length = 2,
Command = 3,
ACK = 4,
Parameter = 5,
CheckSum = 7,
End = 9
};

public:

HandleType _handleType;
uint8_t _handleType;
uint8_t _handleCommand;
uint16_t _handleParameter;
bool _isAvailable = false;
bool _isSending = false;

bool handleMessage(HandleType type, uint16_t parameter = 0);
bool handleError(HandleType type, uint16_t parameter = 0);
bool handleMessage(uint8_t type, uint16_t parameter = 0);
bool handleError(uint8_t type, uint16_t parameter = 0);

uint8_t readCommand();

Expand All @@ -119,7 +111,7 @@ class DFRobotDFPlayerMini {

bool available();

HandleType readType();
uint8_t readType();

uint16_t read();

Expand Down
4 changes: 1 addition & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# DFPlayer - A Mini MP3 Player For Arduino
DFPlayer - A Mini MP3 Player For Arduino

https://www.dfrobot.com/index.php?route=product/product&product_id=1121

This example shows the all the function of library for DFPlayer.
Expand All @@ -16,5 +15,4 @@ Notice and Trouble shooting

1.Connection and Diagram can be found here
https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299#Connection_Diagram

2.This code is tested on Arduino Uno, Leonardo, Mega boards.
2.This code is tested on Arduino Uno, Leonardo, Mega boards.
4 changes: 2 additions & 2 deletions library.properties
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
name=DFRobotDFPlayerMini
version=1.0.0
version=1.0.1
author=DFRobot
maintainer=Angelo <[email protected]>
sentence=Driver for DFPlayer Mini from DFRobot
paragraph=Easy-to-use and reliable library for DFPlayer Mini
paragraph=Easy-to-use and reliable library for DFPlayer Mini
category=Sensors
url=https://github.com/DFRobot/DFRobotDFPlayerMini
architectures=*

0 comments on commit fabbb01

Please sign in to comment.