see: http://mbed.org/users/okini3939/notebook/wifi_webcam/

Dependencies:   GSwifiInterface_ap_webcam USBHost mbed

Committer:
okini3939
Date:
Fri Jun 06 00:44:06 2014 +0000
Revision:
0:8558bdecb0fa
1st build

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:8558bdecb0fa 1 #include "USBHostConf.h"
okini3939 0:8558bdecb0fa 2 #include "USBHost.h"
okini3939 0:8558bdecb0fa 3 #include "BaseUvc.h"
okini3939 0:8558bdecb0fa 4 #include "decodeMJPEG.h"
okini3939 0:8558bdecb0fa 5
okini3939 0:8558bdecb0fa 6 // Logitech C270
okini3939 0:8558bdecb0fa 7 #define C270_VID 0x046d
okini3939 0:8558bdecb0fa 8 #define C270_PID 0x0825
okini3939 0:8558bdecb0fa 9 #define C270_160x120 2
okini3939 0:8558bdecb0fa 10 #define C270_176x144 3
okini3939 0:8558bdecb0fa 11 #define C270_320x176 4
okini3939 0:8558bdecb0fa 12 #define C270_320x240 5
okini3939 0:8558bdecb0fa 13 #define C270_352x288 6
okini3939 0:8558bdecb0fa 14 #define C270_432x240 7
okini3939 0:8558bdecb0fa 15 #define C270_640x480 1
okini3939 0:8558bdecb0fa 16 #define C270_544x288 8
okini3939 0:8558bdecb0fa 17 #define C270_640x360 9
okini3939 0:8558bdecb0fa 18 #define C270_752x416 10
okini3939 0:8558bdecb0fa 19 #define C270_800x448 11
okini3939 0:8558bdecb0fa 20 #define C270_800x600 12
okini3939 0:8558bdecb0fa 21
okini3939 0:8558bdecb0fa 22 #define C270_MJPEG 2
okini3939 0:8558bdecb0fa 23 #define C270_YUV2 1
okini3939 0:8558bdecb0fa 24
okini3939 0:8558bdecb0fa 25 #define C270_EN 0x81
okini3939 0:8558bdecb0fa 26 #define C270_MPS 192
okini3939 0:8558bdecb0fa 27 #define C270_IF_ALT 1
okini3939 0:8558bdecb0fa 28
okini3939 0:8558bdecb0fa 29 #define TEST_ASSERT(A) while(!(A)){fprintf(stderr,"\n\n%s@%d %s ASSERT!\n\n",__PRETTY_FUNCTION__,__LINE__,#A);exit(1);};
okini3939 0:8558bdecb0fa 30
okini3939 0:8558bdecb0fa 31 class IsochronousEp;
okini3939 0:8558bdecb0fa 32 class BaseUvc;
okini3939 0:8558bdecb0fa 33 /**
okini3939 0:8558bdecb0fa 34 * A class to communicate a C270
okini3939 0:8558bdecb0fa 35 */
okini3939 0:8558bdecb0fa 36 class USBHostC270 : public IUSBEnumerator, public BaseUvc, public decodeMJPEG {
okini3939 0:8558bdecb0fa 37 public:
okini3939 0:8558bdecb0fa 38 /**
okini3939 0:8558bdecb0fa 39 * Constructor
okini3939 0:8558bdecb0fa 40 *
okini3939 0:8558bdecb0fa 41 */
okini3939 0:8558bdecb0fa 42 USBHostC270(int formatIndex = C270_MJPEG, int frameIndex = C270_160x120, uint32_t interval = _5FPS);
okini3939 0:8558bdecb0fa 43
okini3939 0:8558bdecb0fa 44 /**
okini3939 0:8558bdecb0fa 45 * Check if a C270 device is connected
okini3939 0:8558bdecb0fa 46 *
okini3939 0:8558bdecb0fa 47 * @return true if a MSD device is connected
okini3939 0:8558bdecb0fa 48 */
okini3939 0:8558bdecb0fa 49 bool connected();
okini3939 0:8558bdecb0fa 50
okini3939 0:8558bdecb0fa 51 /**
okini3939 0:8558bdecb0fa 52 * Try to connect to a C270 device
okini3939 0:8558bdecb0fa 53 *
okini3939 0:8558bdecb0fa 54 * @return true if connection was successful
okini3939 0:8558bdecb0fa 55 */
okini3939 0:8558bdecb0fa 56 bool connect();
okini3939 0:8558bdecb0fa 57
okini3939 0:8558bdecb0fa 58 /**
okini3939 0:8558bdecb0fa 59 * read jpeg image
okini3939 0:8558bdecb0fa 60 *
okini3939 0:8558bdecb0fa 61 * @param buf read buffer
okini3939 0:8558bdecb0fa 62 * @param size buffer size
okini3939 0:8558bdecb0fa 63 * @param timeout_ms timeout default 15sec
okini3939 0:8558bdecb0fa 64 * @return jpeg size if read success else -1
okini3939 0:8558bdecb0fa 65 */
okini3939 0:8558bdecb0fa 66 int readJPEG(uint8_t* buf, int size, int timeout_ms = 15*1000);
okini3939 0:8558bdecb0fa 67
okini3939 0:8558bdecb0fa 68 protected:
okini3939 0:8558bdecb0fa 69 //From IUSBEnumerator
okini3939 0:8558bdecb0fa 70 virtual void setVidPid(uint16_t vid, uint16_t pid);
okini3939 0:8558bdecb0fa 71 virtual bool parseInterface(uint8_t intf_nb, uint8_t intf_class, uint8_t intf_subclass, uint8_t intf_protocol); //Must return true if the interface should be parsed
okini3939 0:8558bdecb0fa 72 virtual bool useEndpoint(uint8_t intf_nb, ENDPOINT_TYPE type, ENDPOINT_DIRECTION dir); //Must return true if the endpoint will be used
okini3939 0:8558bdecb0fa 73
okini3939 0:8558bdecb0fa 74 private:
okini3939 0:8558bdecb0fa 75 bool dev_connected;
okini3939 0:8558bdecb0fa 76
okini3939 0:8558bdecb0fa 77 int c270_intf;
okini3939 0:8558bdecb0fa 78 bool c270_device_found;
okini3939 0:8558bdecb0fa 79 bool c270_vid_pid_found;
okini3939 0:8558bdecb0fa 80 int _formatIndex;
okini3939 0:8558bdecb0fa 81 int _frameIndex;
okini3939 0:8558bdecb0fa 82 uint32_t _interval;
okini3939 0:8558bdecb0fa 83 uint8_t _seq;
okini3939 0:8558bdecb0fa 84 uint8_t* _buf;
okini3939 0:8558bdecb0fa 85 int _pos;
okini3939 0:8558bdecb0fa 86 int _size;
okini3939 0:8558bdecb0fa 87
okini3939 0:8558bdecb0fa 88 virtual void outputJPEG(uint8_t c, int status); // from decodeMJPEG
okini3939 0:8558bdecb0fa 89 void callback_motion_jpeg(uint16_t frame, uint8_t* buf, int len);
okini3939 0:8558bdecb0fa 90 void init();
okini3939 0:8558bdecb0fa 91 void onDisconnect();
okini3939 0:8558bdecb0fa 92 };