A class to communicate a USB dac (send:only 48kHz,16bit,2ch , receive:only 48kHz,16bit,1ch). Need "USBHost_AddIso" library.

Dependents:   USBHostDac_Audio_in_out

Fork of USBHostDac by GR-PEACH_producer_meeting

Revision:
1:9ff4cba6524d
Parent:
0:3a3146f89bcc
Child:
2:4afe26b3d48b
--- a/USBHostDac.h	Wed Apr 01 10:29:31 2015 +0000
+++ b/USBHostDac.h	Wed Sep 30 06:04:31 2015 +0000
@@ -30,6 +30,8 @@
 
 #define USBDAC_DATA_SIZE       (192 * 8)
 
+#define USBDAC_
+
 /**
  * A class to communicate a USB dac (only 48kHz,16bit,2ch)
  */
@@ -41,6 +43,11 @@
     */
     USBHostDac();
 
+    /** Destructor
+     *
+     */
+    virtual ~USBHostDac();
+
     /**
      * Try to connect a audio device
      *
@@ -66,6 +73,16 @@
     */
     uint32_t send(uint8_t* buf, uint32_t len, bool flush = true);
 
+    /**
+    * Data receive
+    *
+    * @param buf pointer on a buffer which will be read
+    * @param len length of the transfer
+    *
+    * @returns the number of bytes read is returned
+    */
+    uint32_t receive(uint8_t* buf, uint32_t len);
+
 protected:
     //From IUSBEnumerator
     virtual void setVidPid(uint16_t vid, uint16_t pid);
@@ -73,6 +90,17 @@
     virtual bool useEndpoint(uint8_t intf_nb, ENDPOINT_TYPE type, ENDPOINT_DIRECTION dir); //Must return true if the endpoint will be used
 
 private:
+    typedef struct {
+        IsochronousEp* m_isoEp;
+        uint16_t wMaxPacketSize;
+        uint8_t  bEndpointAddress;
+        uint8_t  bInterfaceNumber;
+        uint8_t  bAlternateSetting;
+        uint8_t* p_rest_data;
+        uint32_t rest_data_index;
+        uint32_t rest_data_size;
+    } iso_if_t;
+
     USBHost * host;
     USBDeviceConnected * dev;
 
@@ -81,18 +109,13 @@
     int audio_intf;
     int audio_intf_cnt;
 
-    IsochronousEp* m_isoEp;
-    uint16_t wMaxPacketSize;
-    uint8_t  bEndpointAddress;
-    uint8_t  bInterfaceNumber;
-    uint8_t  bAlternateSetting;
-    uint8_t* p_rest_data;
-    uint32_t rest_data_index;
+    iso_if_t iso_send;
+    iso_if_t iso_recv;
 
     void init();
     void onDisconnect();
     bool chkAudioStreaming();
     USB_TYPE setInterface(uint16_t alt, uint16_t index);
-    void setSamplingRate(uint32_t sampling_rate);
+    void setSamplingRate(uint8_t endpoint_adder, uint32_t sampling_rate);
 };
 #endif