Webcam Server.

Dependencies:   uvchost FatFileSystem mbed HTTPServer NetServicesMin

Committer:
va009039
Date:
Wed Jun 06 11:47:06 2012 +0000
Revision:
0:2b4ea8a138e5

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 0:2b4ea8a138e5 1
va009039 0:2b4ea8a138e5 2 /*
va009039 0:2b4ea8a138e5 3 Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
va009039 0:2b4ea8a138e5 4
va009039 0:2b4ea8a138e5 5 Permission is hereby granted, free of charge, to any person obtaining a copy
va009039 0:2b4ea8a138e5 6 of this software and associated documentation files (the "Software"), to deal
va009039 0:2b4ea8a138e5 7 in the Software without restriction, including without limitation the rights
va009039 0:2b4ea8a138e5 8 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
va009039 0:2b4ea8a138e5 9 copies of the Software, and to permit persons to whom the Software is
va009039 0:2b4ea8a138e5 10 furnished to do so, subject to the following conditions:
va009039 0:2b4ea8a138e5 11
va009039 0:2b4ea8a138e5 12 The above copyright notice and this permission notice shall be included in
va009039 0:2b4ea8a138e5 13 all copies or substantial portions of the Software.
va009039 0:2b4ea8a138e5 14
va009039 0:2b4ea8a138e5 15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
va009039 0:2b4ea8a138e5 16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
va009039 0:2b4ea8a138e5 17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
va009039 0:2b4ea8a138e5 18 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
va009039 0:2b4ea8a138e5 19 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
va009039 0:2b4ea8a138e5 20 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
va009039 0:2b4ea8a138e5 21 THE SOFTWARE.
va009039 0:2b4ea8a138e5 22 */
va009039 0:2b4ea8a138e5 23
va009039 0:2b4ea8a138e5 24 #ifndef USB_ENDPOINT_H
va009039 0:2b4ea8a138e5 25 #define USB_ENDPOINT_H
va009039 0:2b4ea8a138e5 26
va009039 0:2b4ea8a138e5 27 #include "mbed.h"
va009039 0:2b4ea8a138e5 28 #include "UsbInc.h"
va009039 0:2b4ea8a138e5 29 #include "Usb_td.h"
va009039 0:2b4ea8a138e5 30
va009039 0:2b4ea8a138e5 31 class UsbDevice;
va009039 0:2b4ea8a138e5 32
va009039 0:2b4ea8a138e5 33 enum UsbEndpointType
va009039 0:2b4ea8a138e5 34 {
va009039 0:2b4ea8a138e5 35 USB_CONTROL,
va009039 0:2b4ea8a138e5 36 USB_BULK,
va009039 0:2b4ea8a138e5 37 USB_INT,
va009039 0:2b4ea8a138e5 38 USB_ISO
va009039 0:2b4ea8a138e5 39 };
va009039 0:2b4ea8a138e5 40
va009039 0:2b4ea8a138e5 41 class UsbEndpoint
va009039 0:2b4ea8a138e5 42 {
va009039 0:2b4ea8a138e5 43 public:
va009039 0:2b4ea8a138e5 44 UsbEndpoint( UsbDevice* pDevice, uint8_t ep, bool dir, UsbEndpointType type, uint16_t size, int addr = -1 );
va009039 0:2b4ea8a138e5 45 ~UsbEndpoint();
va009039 0:2b4ea8a138e5 46 void UsbEndpoint_iso(UsbDevice* pDevice, uint8_t ep, bool dir, UsbEndpointType type, uint16_t size, int addr);
va009039 0:2b4ea8a138e5 47
va009039 0:2b4ea8a138e5 48 void setNextToken(uint32_t token); //Only for control Eps
va009039 0:2b4ea8a138e5 49
va009039 0:2b4ea8a138e5 50 UsbErr transfer(volatile uint8_t* buf, uint32_t len);
va009039 0:2b4ea8a138e5 51 UsbErr transfer(uint16_t frame, int count, volatile uint8_t* buf, int len); // for isochronous
va009039 0:2b4ea8a138e5 52 int m_itdActive;
va009039 0:2b4ea8a138e5 53 tdqueue <HCITD*> queue_done_itd;
va009039 0:2b4ea8a138e5 54 int status(); //return UsbErr or transfered len
va009039 0:2b4ea8a138e5 55
va009039 0:2b4ea8a138e5 56 void updateAddr(int addr);
va009039 0:2b4ea8a138e5 57 void updateSize(uint16_t size);
va009039 0:2b4ea8a138e5 58
va009039 0:2b4ea8a138e5 59 //void setOnCompletion( void(*pCb)completed() );
va009039 0:2b4ea8a138e5 60 class CDummy;
va009039 0:2b4ea8a138e5 61 template <class T>
va009039 0:2b4ea8a138e5 62 void setOnCompletion( T* pCbItem, void (T::*pCbMeth)() )
va009039 0:2b4ea8a138e5 63 {
va009039 0:2b4ea8a138e5 64 m_pCbItem = (CDummy*) pCbItem;
va009039 0:2b4ea8a138e5 65 m_pCbMeth = (void (CDummy::*)()) pCbMeth;
va009039 0:2b4ea8a138e5 66 }
va009039 0:2b4ea8a138e5 67
va009039 0:2b4ea8a138e5 68 //static void completed(){}
va009039 0:2b4ea8a138e5 69
va009039 0:2b4ea8a138e5 70 protected:
va009039 0:2b4ea8a138e5 71 void onCompletion();
va009039 0:2b4ea8a138e5 72 public:
va009039 0:2b4ea8a138e5 73 static void sOnCompletion(uint32_t pTd);
va009039 0:2b4ea8a138e5 74
va009039 0:2b4ea8a138e5 75 private:
va009039 0:2b4ea8a138e5 76 friend class UsbDevice;
va009039 0:2b4ea8a138e5 77
va009039 0:2b4ea8a138e5 78 UsbDevice* m_pDevice;
va009039 0:2b4ea8a138e5 79
va009039 0:2b4ea8a138e5 80 bool m_dir;
va009039 0:2b4ea8a138e5 81 bool m_setup;
va009039 0:2b4ea8a138e5 82 UsbEndpointType m_type;
va009039 0:2b4ea8a138e5 83
va009039 0:2b4ea8a138e5 84 //bool m_done;
va009039 0:2b4ea8a138e5 85 volatile bool m_result;
va009039 0:2b4ea8a138e5 86 volatile int m_status;
va009039 0:2b4ea8a138e5 87
va009039 0:2b4ea8a138e5 88 volatile uint32_t m_len;
va009039 0:2b4ea8a138e5 89
va009039 0:2b4ea8a138e5 90 volatile uint8_t* m_pBufStartPtr;
va009039 0:2b4ea8a138e5 91
va009039 0:2b4ea8a138e5 92 volatile HCED* m_pEd; //Ep descriptor
va009039 0:2b4ea8a138e5 93
va009039 0:2b4ea8a138e5 94 volatile HCTD* m_pTdHead; //Head trf descriptor
va009039 0:2b4ea8a138e5 95 volatile HCTD* m_pTdTail; //Tail trf descriptor
va009039 0:2b4ea8a138e5 96
va009039 0:2b4ea8a138e5 97 CDummy* m_pCbItem;
va009039 0:2b4ea8a138e5 98 void (CDummy::*m_pCbMeth)();
va009039 0:2b4ea8a138e5 99 };
va009039 0:2b4ea8a138e5 100 #endif