DFPlayerMini Library porting from Arduino Library (www.github.com/dfrobot/DFPlayer_Mini_Mp3)

Files at this revision

API Documentation at this revision

Comitter:
kysiki
Date:
Tue Nov 22 17:00:13 2016 +0000
Commit message:
DFPlayerMini?????????

Changed in this revision

DFPlayerMini.cpp Show annotated file Show diff for this revision Revisions of this file
DFPlayerMini.h Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 62b52a8325e3 DFPlayerMini.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DFPlayerMini.cpp	Tue Nov 22 17:00:13 2016 +0000
@@ -0,0 +1,206 @@
+/*******************************************************************************
+ * Copyright (C) 2014 DFRobot                              *
+ *                                         *
+ * DFPlayer_Mini_Mp3, This library provides a quite complete function for      * 
+ * DFPlayer mini mp3 module.                                                   *
+ * www.github.com/dfrobot/DFPlayer_Mini_Mp3 (github as default source provider)*
+ *  DFRobot-A great source for opensource hardware and robot.                  *
+ *                                                                             *
+ * This file is part of the DFplayer_Mini_Mp3 library.                         *
+ *                                                                             *
+ * DFPlayer_Mini_Mp3 is free software: you can redistribute it and/or          *
+ * modify it under the terms of the GNU Lesser General Public License as       *
+ * published by the Free Software Foundation, either version 3 of              *
+ * the License, or any later version.                                          *
+ *                                                                             *
+ * DFPlayer_Mini_Mp3 is distributed in the hope that it will be useful,        *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of              *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               *
+ * GNU Lesser General Public License for more details.                         *
+ *                                                                             *
+ * DFPlayer_Mini_Mp3 is distributed in the hope that it will be useful,        *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of              *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               *
+ * GNU Lesser General Public License for more details.                         *
+ *                                                                             *
+ * You should have received a copy of the GNU Lesser General Public            *
+ * License along with DFPlayer_Mini_Mp3. If not, see                           *
+ * <http://www.gnu.org/licenses/>.                                             *
+ ******************************************************************************/
+ 
+// ===========================================================================
+// DFPlayerMini.cpp
+// Nov 23 2016, kysiki
+// ===========================================================================
+// Just a simple library for DFPlayer Mini porting from DFPlayer library V2.0.
+// (https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299)
+
+#include "DFPlayerMini.h"
+#include "mbed.h"
+
+DFPlayerMini::DFPlayerMini(PinName txPin, PinName rxPin)
+: 
+    mp3(txPin, rxPin)
+{
+    uint8_t tmp[10] = {0x7E, 0xFF, 06, 00, 00, 00, 00, 00, 00, 0xEF};
+    memcpy(send_buf, tmp, 10);
+    is_reply = 0;
+    mp3.format(8,Serial::None,1);
+    mp3.baud(9600);
+}
+
+void DFPlayerMini::mp3_set_reply (uint8_t state) {
+    is_reply = state;
+    send_buf[4] = is_reply;
+}
+
+void DFPlayerMini::fill_uint16_bigend (uint8_t *thebuf, uint16_t data) {
+    *thebuf =   (uint8_t)(data>>8);
+    *(thebuf+1) =   (uint8_t)data;
+}
+
+//calc checksum (1~6 byte)
+uint16_t DFPlayerMini::mp3_get_checksum (uint8_t *thebuf) {
+    uint16_t sum = 0;
+    for (int i=1; i<7; i++) {
+        sum += thebuf[i];
+    }
+    return -sum;
+}
+
+//fill checksum to send_buf (7~8 byte)
+void DFPlayerMini::mp3_fill_checksum () {
+    uint16_t checksum = mp3_get_checksum (send_buf);
+    fill_uint16_bigend (send_buf+7, checksum);
+}
+
+void DFPlayerMini::send_func () {
+    int i;
+    for (i = 0; i < 10; i++) {
+        mp3.putc(send_buf[i]);
+    } 
+}
+
+void DFPlayerMini::mp3_send_cmd (uint8_t cmd, uint16_t arg) {
+    send_buf[3] = cmd;
+    fill_uint16_bigend ((send_buf+5), arg);
+    mp3_fill_checksum ();
+    send_func ();
+}
+
+void DFPlayerMini::mp3_send_cmd (uint8_t cmd) {
+    send_buf[3] = cmd;
+    fill_uint16_bigend ((send_buf+5), 0);
+    mp3_fill_checksum ();
+    send_func ();
+}
+
+
+void DFPlayerMini::mp3_play_physical (uint16_t num) {
+    mp3_send_cmd (0x03, num);
+}
+
+void DFPlayerMini::mp3_play_physical () {
+    mp3_send_cmd (0x03);
+}
+
+void DFPlayerMini::mp3_next () {
+    mp3_send_cmd (0x01);
+}
+
+void DFPlayerMini::mp3_prev () {
+    mp3_send_cmd (0x02);
+}
+
+//0x06 set volume 0-30
+void DFPlayerMini::mp3_set_volume (uint16_t volume) {
+    mp3_send_cmd (0x06, volume);
+}
+
+//0x07 set EQ0/1/2/3/4/5    Normal/Pop/Rock/Jazz/Classic/Bass
+void DFPlayerMini::mp3_set_EQ (uint16_t eq) {
+    mp3_send_cmd (0x07, eq);
+}
+
+//0x09 set device 1/2/3/4/5 U/SD/AUX/SLEEP/FLASH
+void DFPlayerMini::mp3_set_device (uint16_t device) {
+    mp3_send_cmd (0x09, device);
+}
+
+void DFPlayerMini::mp3_sleep () {
+    mp3_send_cmd (0x0a);
+}
+
+void DFPlayerMini::mp3_reset () {
+    mp3_send_cmd (0x0c);
+}
+
+void DFPlayerMini::mp3_play () {
+    mp3_send_cmd (0x0d);
+}
+
+void DFPlayerMini::mp3_pause () {
+    mp3_send_cmd (0x0e);
+}
+
+void DFPlayerMini::mp3_stop () {
+    mp3_send_cmd (0x16);
+}
+
+// play mp3 file in mp3 folder in your tf card
+void DFPlayerMini::mp3_play (uint16_t num) {
+    mp3_send_cmd (0x12, num);
+}
+
+void DFPlayerMini::mp3_get_state () {
+    mp3_send_cmd (0x42);
+}
+
+void DFPlayerMini::mp3_get_volume () {
+    mp3_send_cmd (0x43);
+}
+
+void DFPlayerMini::mp3_get_u_sum () {
+    mp3_send_cmd (0x47);
+}
+
+void DFPlayerMini::mp3_get_tf_sum () {
+    mp3_send_cmd (0x48);
+}
+
+void DFPlayerMini::mp3_get_flash_sum () {
+    mp3_send_cmd (0x49);
+}
+
+void DFPlayerMini::mp3_get_tf_current () {
+    mp3_send_cmd (0x4c);
+}
+
+void DFPlayerMini::mp3_get_u_current () {
+    mp3_send_cmd (0x4b);
+}
+
+
+//
+void DFPlayerMini::mp3_get_flash_current () {
+    mp3_send_cmd (0x4d);
+}
+
+void DFPlayerMini::mp3_single_loop (uint8_t state) {
+    mp3_send_cmd (0x19, !state);
+}
+
+void DFPlayerMini::mp3_single_play (uint16_t num) {
+    mp3_play (num);
+    wait_ms (10);
+    mp3_single_loop (true); 
+}
+
+void DFPlayerMini::mp3_DAC (uint8_t state) {
+    mp3_send_cmd (0x1a, !state);
+}
+
+//
+void DFPlayerMini::mp3_random_play () {
+    mp3_send_cmd (0x18);
+}
\ No newline at end of file
diff -r 000000000000 -r 62b52a8325e3 DFPlayerMini.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DFPlayerMini.h	Tue Nov 22 17:00:13 2016 +0000
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (C) 2014 DFRobot                              *
+ *                                         *
+ * DFPlayer_Mini_Mp3, This library provides a quite complete function for      * 
+ * DFPlayer mini mp3 module.                                                   *
+ * www.github.com/dfrobot/DFPlayer_Mini_Mp3 (github as default source provider)*
+ *  DFRobot-A great source for opensource hardware and robot.                  *
+ *                                                                             *
+ * This file is part of the DFplayer_Mini_Mp3 library.                         *
+ *                                                                             *
+ * DFPlayer_Mini_Mp3 is free software: you can redistribute it and/or          *
+ * modify it under the terms of the GNU Lesser General Public License as       *
+ * published by the Free Software Foundation, either version 3 of              *
+ * the License, or any later version.                                          *
+ *                                                                             *
+ * DFPlayer_Mini_Mp3 is distributed in the hope that it will be useful,        *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of              *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               *
+ * GNU Lesser General Public License for more details.                         *
+ *                                                                             *
+ * DFPlayer_Mini_Mp3 is distributed in the hope that it will be useful,        *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of              *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               *
+ * GNU Lesser General Public License for more details.                         *
+ *                                                                             *
+ * You should have received a copy of the GNU Lesser General Public            *
+ * License along with DFPlayer_Mini_Mp3. If not, see                           *
+ * <http://www.gnu.org/licenses/>.                                             *
+ ******************************************************************************/
+ 
+// ===========================================================================
+// DFPlayerMini.cpp
+// Nov 23 2016, kysiki
+// ===========================================================================
+// Just a simple library for DFPlayer Mini porting from DFPlayer library V2.0.
+// (https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299)
+#ifndef MBED_SHIFTREG_H
+#define MBED_DFPLAYERMINI_H
+
+class DFPlayerMini {
+public:
+    DFPlayerMini(PinName txPin, PinName rxPin);
+    void mp3_set_reply (uint8_t state);
+    void mp3_play_physical (uint16_t num);
+    void mp3_play_physical ();
+    void mp3_next ();
+    void mp3_prev ();
+    void mp3_set_volume (uint16_t volume);
+    void mp3_set_EQ (uint16_t eq);
+    void mp3_set_device (uint16_t device);
+    void mp3_sleep ();
+    void mp3_reset ();
+    void mp3_play ();
+    void mp3_pause ();
+    void mp3_stop ();
+    void mp3_play (uint16_t num);
+    void mp3_get_state ();
+    void mp3_get_volume ();
+    void mp3_get_u_sum ();
+    void mp3_get_tf_sum ();
+    void mp3_get_flash_sum ();
+    void mp3_get_tf_current ();
+    void mp3_get_u_current ();
+    void mp3_get_flash_current ();
+    void mp3_single_loop (uint8_t state);
+    void mp3_single_play (uint16_t num);
+    void mp3_DAC (uint8_t state);
+    void mp3_random_play ();
+  
+private:
+    Serial mp3;  
+    uint8_t send_buf[10];
+    uint8_t recv_buf[10];
+    uint8_t is_reply;
+    static void fill_uint16_bigend (uint8_t *thebuf, uint16_t data);
+    uint16_t mp3_get_checksum (uint8_t *thebuf);
+    void mp3_fill_checksum ();
+    void send_func ();
+    void mp3_send_cmd (uint8_t cmd, uint16_t arg);
+    void mp3_send_cmd (uint8_t cmd);
+};
+ 
+#endif
\ No newline at end of file