class library to access fischertechnik interfaces via USB
Dependencies: FatFileSystem mbed myBlueUSB neigbourhood rfcomm sdp
ftlib/ftlibclassusb.h@1:4676e8b9b357, 2013-03-11 (annotated)
- Committer:
- networker
- Date:
- Mon Mar 11 08:04:37 2013 +0000
- Revision:
- 1:4676e8b9b357
- Parent:
- 0:7da612835693
first publication of this experimental class, just for sharing wip
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
networker |
0:7da612835693 | 1 | #ifndef FTLIBCLASSUSB_H |
networker |
0:7da612835693 | 2 | #define FTLIBCLASSUSB_H |
networker |
0:7da612835693 | 3 | |
networker |
0:7da612835693 | 4 | #include <vector> |
networker |
0:7da612835693 | 5 | #include "ftlibclassdev.h" |
networker |
0:7da612835693 | 6 | |
networker |
0:7da612835693 | 7 | #define FT_VENDOR_ID 0x146a |
networker |
0:7da612835693 | 8 | #define ROBO_IF_PRODUCT_ID 0x1 |
networker |
0:7da612835693 | 9 | #define EXT_IF_PRODUCT_ID 0x2 |
networker |
0:7da612835693 | 10 | #define RF_DATA_LINK_PRODUCT_ID 0x3 |
networker |
0:7da612835693 | 11 | /* |
networker |
0:7da612835693 | 12 | #define usleep(x) wait_us(x) |
networker |
0:7da612835693 | 13 | #define sleep(x) wait(x) |
networker |
0:7da612835693 | 14 | */ |
networker |
0:7da612835693 | 15 | class ftlib; |
networker |
0:7da612835693 | 16 | |
networker |
0:7da612835693 | 17 | class ftusbdev: public ftdev { |
networker |
0:7da612835693 | 18 | friend ftlib; |
networker |
0:7da612835693 | 19 | virtual unsigned pgm_message(unsigned code, unsigned dwMemBlock); |
networker |
0:7da612835693 | 20 | protected: |
networker |
0:7da612835693 | 21 | static vector<ftusbdev*> devs; |
networker |
0:7da612835693 | 22 | int device; //usb device nr |
networker |
0:7da612835693 | 23 | int rf; //rf call nr |
networker |
0:7da612835693 | 24 | int usb_endpoint_read, usb_endpoint_write; |
networker |
0:7da612835693 | 25 | ftusbdev() {} |
networker |
0:7da612835693 | 26 | ftusbdev(int d, int t, int s = 0, int r = -1): ftdev(t, s), device(d), rf(r) {} |
networker |
0:7da612835693 | 27 | static int GetNumFtDevicesFromRF(int device); |
networker |
0:7da612835693 | 28 | static void onTick() { |
networker |
0:7da612835693 | 29 | for (int i = 0; i < devs.size(); i++) devs[i]->trigger(); |
networker |
0:7da612835693 | 30 | } |
networker |
0:7da612835693 | 31 | static void CloseAllFtDevices() { |
networker |
0:7da612835693 | 32 | for (int i = 0; i < devs.size(); i++) devs[i]->CloseFtDevice(); |
networker |
0:7da612835693 | 33 | } |
networker |
0:7da612835693 | 34 | static void read_finished_cb(int device, int endpoint, int status, unsigned char* data, int len, void* userData); |
networker |
0:7da612835693 | 35 | static void write_finished_cb(int device, int endpoint, int status, unsigned char* data, int len, void* userData); |
networker |
0:7da612835693 | 36 | virtual void FtThreadInit(); |
networker |
0:7da612835693 | 37 | virtual void FtThreadBegin(); |
networker |
0:7da612835693 | 38 | // virtual void FtThreadEnd(); |
networker |
0:7da612835693 | 39 | virtual void FtThreadFinish(); |
networker |
0:7da612835693 | 40 | public: |
networker |
0:7da612835693 | 41 | static void poll(); |
networker |
0:7da612835693 | 42 | //public API: These functions match those of the original ftlib |
networker |
0:7da612835693 | 43 | static unsigned InitFtUsbDeviceList(); |
networker |
0:7da612835693 | 44 | static unsigned GetNumFtUsbDevice() { |
networker |
0:7da612835693 | 45 | return devs.size(); |
networker |
0:7da612835693 | 46 | } |
networker |
0:7da612835693 | 47 | virtual unsigned OpenFtUsbDevice(); |
networker |
0:7da612835693 | 48 | static ftusbdev* GetFtUsbDeviceHandle(unsigned DevNr); |
networker |
0:7da612835693 | 49 | static ftusbdev* GetFtUsbDeviceHandleSerialNr(unsigned dwSN, unsigned dwTyp); |
networker |
0:7da612835693 | 50 | unsigned SetFtDeviceCommMode (unsigned dwMode, unsigned dwParameter, unsigned short *puiValue); |
networker |
0:7da612835693 | 51 | virtual unsigned CloseFtDevice(); |
networker |
0:7da612835693 | 52 | virtual unsigned GetFtFirmware(); |
networker |
0:7da612835693 | 53 | virtual char* GetFtManufacturerStrg(); |
networker |
0:7da612835693 | 54 | virtual char* GetFtShortNameStrg(); |
networker |
0:7da612835693 | 55 | virtual char* GetFtLongNameStrg(); |
networker |
0:7da612835693 | 56 | virtual unsigned SetFtDistanceSensorMode(unsigned dwMode, unsigned dwTol1, unsigned dwTol2, |
networker |
0:7da612835693 | 57 | unsigned dwSchwell1, unsigned dwSchwell2, unsigned dwRepeat1, unsigned dwRepeat2); |
networker |
0:7da612835693 | 58 | /* |
networker |
0:7da612835693 | 59 | virtual unsigned GetFtDeviceSetting(FT_SETTING *pSet); |
networker |
0:7da612835693 | 60 | virtual unsigned SetFtDeviceSetting(FT_SETTING *pSet); |
networker |
0:7da612835693 | 61 | */ |
networker |
0:7da612835693 | 62 | virtual unsigned StartFtProgram(unsigned dwMemBlock) { |
networker |
0:7da612835693 | 63 | return pgm_message(0x12, dwMemBlock); |
networker |
0:7da612835693 | 64 | } |
networker |
0:7da612835693 | 65 | virtual unsigned StopFtProgram() { |
networker |
0:7da612835693 | 66 | return pgm_message(0x13, 0); |
networker |
0:7da612835693 | 67 | } |
networker |
0:7da612835693 | 68 | }; |
networker |
0:7da612835693 | 69 | |
networker |
0:7da612835693 | 70 | class ftusbdevext: public ftusbdev { |
networker |
0:7da612835693 | 71 | friend ftusbdev; |
networker |
0:7da612835693 | 72 | ftusbdevext() {} |
networker |
0:7da612835693 | 73 | ftusbdevext(int d, int t, int s): ftusbdev(d, t, s) {} |
networker |
0:7da612835693 | 74 | virtual void FtThreadInit(); |
networker |
0:7da612835693 | 75 | virtual void FtThreadEnd(); |
networker |
0:7da612835693 | 76 | }; |
networker |
0:7da612835693 | 77 | |
networker |
0:7da612835693 | 78 | #endif |