![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
BaseUsbHost example program
Dependencies: BaseUsbHost FATFileSystem mbed mbed-rtos
LogitechC270/LogitechC270.h@0:2a9734a95d55, 2012-12-04 (annotated)
- Committer:
- va009039
- Date:
- Tue Dec 04 13:39:57 2012 +0000
- Revision:
- 0:2a9734a95d55
- Child:
- 1:80205a2de336
first commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
va009039 | 0:2a9734a95d55 | 1 | #ifndef LOGITECH_C270_H |
va009039 | 0:2a9734a95d55 | 2 | #define LOGITECH_C270_H |
va009039 | 0:2a9734a95d55 | 3 | |
va009039 | 0:2a9734a95d55 | 4 | #define C270_160x120 2 |
va009039 | 0:2a9734a95d55 | 5 | #define C270_176x144 3 |
va009039 | 0:2a9734a95d55 | 6 | #define C270_320x176 4 |
va009039 | 0:2a9734a95d55 | 7 | #define C270_320x240 5 |
va009039 | 0:2a9734a95d55 | 8 | #define C270_352x288 6 |
va009039 | 0:2a9734a95d55 | 9 | #define C270_432x240 7 |
va009039 | 0:2a9734a95d55 | 10 | #define C270_640x480 1 |
va009039 | 0:2a9734a95d55 | 11 | #define C270_544x288 8 |
va009039 | 0:2a9734a95d55 | 12 | #define C270_640x360 9 |
va009039 | 0:2a9734a95d55 | 13 | #define C270_752x416 10 |
va009039 | 0:2a9734a95d55 | 14 | #define C270_800x448 11 |
va009039 | 0:2a9734a95d55 | 15 | #define C270_800x600 12 |
va009039 | 0:2a9734a95d55 | 16 | |
va009039 | 0:2a9734a95d55 | 17 | #define _30FPS 333333 |
va009039 | 0:2a9734a95d55 | 18 | #define _25FPS 400000 |
va009039 | 0:2a9734a95d55 | 19 | #define _20FPS 500000 |
va009039 | 0:2a9734a95d55 | 20 | #define _15FPS 666666 |
va009039 | 0:2a9734a95d55 | 21 | #define _10FPS 1000000 |
va009039 | 0:2a9734a95d55 | 22 | #define _5FPS 2000000 |
va009039 | 0:2a9734a95d55 | 23 | |
va009039 | 0:2a9734a95d55 | 24 | #define C270_MJPEG 2 |
va009039 | 0:2a9734a95d55 | 25 | #define C270_YUV2 1 |
va009039 | 0:2a9734a95d55 | 26 | |
va009039 | 0:2a9734a95d55 | 27 | #define SET_CUR 0x01 |
va009039 | 0:2a9734a95d55 | 28 | #define GET_CUR 0x81 |
va009039 | 0:2a9734a95d55 | 29 | #define GET_MIN 0x82 |
va009039 | 0:2a9734a95d55 | 30 | #define GET_MAX 0x83 |
va009039 | 0:2a9734a95d55 | 31 | #define GET_RES 0x84 |
va009039 | 0:2a9734a95d55 | 32 | #define GET_LEN 0x85 |
va009039 | 0:2a9734a95d55 | 33 | #define GET_INFO 0x86 |
va009039 | 0:2a9734a95d55 | 34 | #define GET_DEF 0x87 |
va009039 | 0:2a9734a95d55 | 35 | |
va009039 | 0:2a9734a95d55 | 36 | #define VS_PROBE_CONTROL 0x01 |
va009039 | 0:2a9734a95d55 | 37 | #define VS_COMMIT_CONTROL 0x02 |
va009039 | 0:2a9734a95d55 | 38 | |
va009039 | 0:2a9734a95d55 | 39 | class LogitechC270 { |
va009039 | 0:2a9734a95d55 | 40 | public: |
va009039 | 0:2a9734a95d55 | 41 | LogitechC270(int frame = C270_160x120, uint32_t interval = _5FPS, ControlEp* ctlEp = NULL); |
va009039 | 0:2a9734a95d55 | 42 | void poll(); |
va009039 | 0:2a9734a95d55 | 43 | int Control(int req, int cs, int index, uint8_t* buf, int size); |
va009039 | 0:2a9734a95d55 | 44 | uint16_t vid; |
va009039 | 0:2a9734a95d55 | 45 | uint16_t pid; |
va009039 | 0:2a9734a95d55 | 46 | ControlEp* m_ctlEp; |
va009039 | 0:2a9734a95d55 | 47 | IsochronousEp* m_isoEp; |
va009039 | 0:2a9734a95d55 | 48 | uint32_t report_cc_count[16]; // ConditionCode |
va009039 | 0:2a9734a95d55 | 49 | uint32_t report_ps_cc_count[16]; // Packt Status ConditionCode |
va009039 | 0:2a9734a95d55 | 50 | // callback |
va009039 | 0:2a9734a95d55 | 51 | void onResult(uint16_t frame, uint8_t* buf, int len); |
va009039 | 0:2a9734a95d55 | 52 | void setOnResult( void (*pMethod)(uint16_t, uint8_t*, int) ) |
va009039 | 0:2a9734a95d55 | 53 | { |
va009039 | 0:2a9734a95d55 | 54 | m_pCb = pMethod; |
va009039 | 0:2a9734a95d55 | 55 | m_pCbItem = NULL; |
va009039 | 0:2a9734a95d55 | 56 | m_pCbMeth = NULL; |
va009039 | 0:2a9734a95d55 | 57 | } |
va009039 | 0:2a9734a95d55 | 58 | |
va009039 | 0:2a9734a95d55 | 59 | class CDummy; |
va009039 | 0:2a9734a95d55 | 60 | template<class T> |
va009039 | 0:2a9734a95d55 | 61 | void setOnResult( T* pItem, void (T::*pMethod)(uint16_t, uint8_t*, int) ) |
va009039 | 0:2a9734a95d55 | 62 | { |
va009039 | 0:2a9734a95d55 | 63 | m_pCb = NULL; |
va009039 | 0:2a9734a95d55 | 64 | m_pCbItem = (CDummy*) pItem; |
va009039 | 0:2a9734a95d55 | 65 | m_pCbMeth = (void (CDummy::*)(uint16_t, uint8_t*, int)) pMethod; |
va009039 | 0:2a9734a95d55 | 66 | } |
va009039 | 0:2a9734a95d55 | 67 | void clearOnResult() |
va009039 | 0:2a9734a95d55 | 68 | { |
va009039 | 0:2a9734a95d55 | 69 | m_pCb = NULL; |
va009039 | 0:2a9734a95d55 | 70 | m_pCbItem = NULL; |
va009039 | 0:2a9734a95d55 | 71 | m_pCbMeth = NULL; |
va009039 | 0:2a9734a95d55 | 72 | } |
va009039 | 0:2a9734a95d55 | 73 | CDummy* m_pCbItem; |
va009039 | 0:2a9734a95d55 | 74 | void (CDummy::*m_pCbMeth)(uint16_t, uint8_t*, int); |
va009039 | 0:2a9734a95d55 | 75 | void (*m_pCb)(uint16_t, uint8_t*, int); |
va009039 | 0:2a9734a95d55 | 76 | }; |
va009039 | 0:2a9734a95d55 | 77 | #endif //LOGITECH_C270_H |