USB Host WAN Dongle library

Fork of USBHostWANDongle_bleedingedge by Donatien Garnier

Revision:
2:a8b2d0cd9bbd
Parent:
0:ae46a0638b2c
Child:
3:4394986752db
--- a/USB3GModule/WANDongle.h	Fri May 25 09:31:41 2012 +0000
+++ b/USB3GModule/WANDongle.h	Tue Jun 26 13:43:54 2012 +0000
@@ -28,10 +28,12 @@
 #define WANDONGLE_MAX_OUTEP_SIZE 64
 #define WANDONGLE_MAX_INEP_SIZE 64
 
+#define WANDONGLE_MAX_SERIAL_PORTS 2
+
 /** A class to use a WAN (3G/LTE) access dongle
  *
  */
-class WANDongle : public IUSBHostSerial {
+class WANDongle {
 public:
     /*
     * Constructor
@@ -53,88 +55,19 @@
      * * @return true if connection was successful
      */
     bool tryConnect();
-
-    /*
-    * Get a char from the dongle's serial interface
-    */
-    virtual int getc();
-
-    /*
-    * Put a char to the dongle's serial interface
-    */
-    virtual int putc(int c);
     
-    //void test();
-
-    /*
-     *  Read a packet from the dongle's serial interface, to be called after multiple getc() calls
-     */
-    virtual int readPacket();
-
-    /*
-     *  Write a packet to the dongle's serial interface, to be called after multiple putc() calls
-     */
-    virtual int writePacket();
-
-    /**
-    * Check the number of bytes available.
-    *
-    * @returns the number of bytes available
-    */
-    virtual int readable();
-
-    /**
-    * Check the free space in output.
-    *
-    * @returns the number of bytes available
-    */
-    virtual int writeable();
-
-    /**
-     *  Attach a handler to call when a packet is received / when a packet has been transmitted.
-     *
-     *  @param pListener instance of the listener deriving from the IUSBHostSerialListener
-     */
-    virtual void attach(IUSBHostSerialListener* pListener);
-    
-    /**
-     * Enable or disable readable/writeable callbacks
-     */
-    virtual void setupIrq(bool en, IrqType irq = RxIrq);
-
+    IUSBHostSerial* getSerial(int index);
+    int getSerialCount();
     
 protected:
-    Endpoint * bulk_in;
-    Endpoint * bulk_out;
     USBHost * host;
     USBDeviceConnected * dev;
     bool dev_connected;
 
-    uint8_t buf_out[WANDONGLE_MAX_OUTEP_SIZE];
-    volatile uint32_t buf_out_len;
-    uint32_t max_out_size;
-    volatile bool lock_tx;
-    //Mutex lock_tx;
-    volatile bool cb_tx_en;
-    volatile bool cb_tx_pending;
-    Mutex tx_mtx;
-
-    uint8_t buf_in[WANDONGLE_MAX_INEP_SIZE];
-    volatile uint32_t buf_in_len;
-    volatile uint32_t buf_in_read_pos;
-    volatile bool lock_rx;
-    //Mutex lock_rx;
-    volatile bool cb_rx_en;
-    volatile bool cb_rx_pending;
-    Mutex rx_mtx;
+    void init();
     
-    IUSBHostSerialListener* listener;
-    
-    void init();
-    void rxHandler();
-    void txHandler();
-    bool fetchEndpoints();
-
+    WANDongleSerialPort m_serial[WANDONGLE_MAX_SERIAL_PORTS];
+    int m_serialCount;
 };
 
 #endif