Just a simple library for VLSI's mp3/midi codec chip

Dependents:   IsuProject_LPC1768

Revision:
0:708868399033
Child:
1:00c19f771676
diff -r 000000000000 -r 708868399033 VS1053.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/VS1053.h	Fri Nov 08 10:41:54 2013 +0000
@@ -0,0 +1,52 @@
+// ==================================================== Nov 04 2013, kayeks ==
+// VS1053.h
+// ===========================================================================
+// Just a simple library for VLSI's mp3/midi codec chip
+//   - Minimal and simple implementation (and dirty too)
+
+#ifndef KAYX_VS1053_H_
+#define KAYX_VS1053_H_
+
+class VS1053 {
+private:
+    SPI spi;
+    DigitalOut cs;
+    DigitalOut bsync;
+    DigitalIn dreq;
+    DigitalOut rst;
+
+public:
+    static const uint8_t SCI_MODE        = 0x00;
+    static const uint8_t SCI_STATUS      = 0x01;
+    static const uint8_t SCI_BASS        = 0x02;
+    static const uint8_t SCI_CLOCKF      = 0x03;
+    static const uint8_t SCI_DECODE_TIME = 0x04;
+    static const uint8_t SCI_AUDATA      = 0x05;
+    static const uint8_t SCI_WRAM        = 0x06;
+    static const uint8_t SCI_WRAMADDR    = 0x07;
+    static const uint8_t SCI_HDAT0       = 0x08;
+    static const uint8_t SCI_HDAT1       = 0x09;
+    static const uint8_t SCI_AIADDR      = 0x0a;
+    static const uint8_t SCI_VOL         = 0x0b;
+    static const uint8_t SCI_AICTRL0     = 0x0c;
+    static const uint8_t SCI_AICTRL1     = 0x0d;
+    static const uint8_t SCI_AICTRL2     = 0x0e;
+    static const uint8_t SCI_AICTRL3     = 0x0f;
+    
+    VS1053(PinName mosiPin, PinName misoPin, PinName sckPin,
+           PinName cs, PinName bsync, PinName dreq, PinName rstPin,
+           uint32_t spiFrequency=1000000);
+    ~VS1053();
+    void hardwareReset();
+    void sendDataByte(uint8_t);
+    size_t sendDataBlock(uint8_t*, size_t);
+    void clockUp();
+    bool sendCancel();
+    bool stop();
+    
+private:
+    void writeReg(uint8_t, uint16_t);
+    uint16_t readReg(uint8_t);
+};
+
+#endif