class library to access fischertechnik interfaces via USB

Dependencies:   FatFileSystem mbed myBlueUSB neigbourhood rfcomm sdp

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?

UserRevisionLine numberNew 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