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 #include "mbed.h"
networker 0:7da612835693 2 #include "ftlib.h"
networker 0:7da612835693 3 #include "ftlibclass.h"
networker 0:7da612835693 4 #include "ftlibclasscom.h"
networker 0:7da612835693 5 #include "ftlibclassusb.h"
networker 0:7da612835693 6
networker 0:7da612835693 7
networker 0:7da612835693 8
networker 0:7da612835693 9 ftlib* ftlib::lib = 0;
networker 0:7da612835693 10
networker 0:7da612835693 11 unsigned ftlib::InitFtLib() {
networker 0:7da612835693 12 lib = new ftlib;
networker 0:7da612835693 13 return FTLIB_ERR_SUCCESS;
networker 0:7da612835693 14 }
networker 0:7da612835693 15
networker 0:7da612835693 16 void ftlib::onTick() {
networker 0:7da612835693 17 ftusbdev::onTick();
networker 0:7da612835693 18 ftcommdev::onTick();
networker 0:7da612835693 19 }
networker 0:7da612835693 20
networker 0:7da612835693 21 void ftlib::poll() {
networker 0:7da612835693 22 ftusbdev::poll(); //this function should be called repetetively from the main event loop
networker 0:7da612835693 23 ftcommdev::poll();
networker 0:7da612835693 24 }
networker 0:7da612835693 25
networker 0:7da612835693 26 unsigned ftlib::CloseFtLib() {
networker 0:7da612835693 27 delete lib;
networker 0:7da612835693 28 lib = 0;
networker 0:7da612835693 29 return FTLIB_ERR_SUCCESS;
networker 0:7da612835693 30 }
networker 0:7da612835693 31
networker 0:7da612835693 32 unsigned ftlib::IsFtLibInit() {
networker 0:7da612835693 33 return lib ? FTLIB_ERR_LIB_IS_INITIALIZED : FTLIB_ERR_LIB_IS_NOT_INITIALIZED;
networker 0:7da612835693 34 }
networker 0:7da612835693 35
networker 0:7da612835693 36 unsigned ftlib::CloseAllFtDevices() {
networker 0:7da612835693 37 ftusbdev::CloseAllFtDevices();
networker 0:7da612835693 38 ftcommdev::CloseAllFtDevices();
networker 0:7da612835693 39 return FTLIB_ERR_SUCCESS;
networker 0:7da612835693 40 }
networker 0:7da612835693 41
networker 0:7da612835693 42 int ftlib::FtproductIDToInterfaceID(int iProductID) {
networker 0:7da612835693 43 switch (iProductID) {
networker 0:7da612835693 44 case ROBO_IF_PRODUCT_ID:
networker 0:7da612835693 45 return FT_ROBO_IF_USB;
networker 0:7da612835693 46 case EXT_IF_PRODUCT_ID:
networker 0:7da612835693 47 return FT_ROBO_IO_EXTENSION;
networker 0:7da612835693 48 case RF_DATA_LINK_PRODUCT_ID:
networker 0:7da612835693 49 return FT_ROBO_RF_DATA_LINK;
networker 0:7da612835693 50 }
networker 0:7da612835693 51
networker 0:7da612835693 52 return 0;
networker 0:7da612835693 53 }
networker 0:7da612835693 54
networker 0:7da612835693 55 char * ftlib::GetFtLibErrorString(unsigned dwErrorCode, unsigned dwTyp) {
networker 0:7da612835693 56 char *buffer = new char[128];
networker 0:7da612835693 57
networker 0:7da612835693 58 switch (dwErrorCode) {
networker 0:7da612835693 59 case FTLIB_ERR_IF_NO_PROGRAM:
networker 0:7da612835693 60 if (dwTyp) strncpy(buffer, "There is no program stored to work with", 128);
networker 0:7da612835693 61 else strncpy(buffer, "FTLIB_ERR_IF_NO_PROGRAM", 128);
networker 0:7da612835693 62 break;
networker 0:7da612835693 63 case FTLIB_ERR_SUCCESS:
networker 0:7da612835693 64 if (dwTyp) strncpy(buffer, "Everything is fine", 128);
networker 0:7da612835693 65 else strncpy(buffer, "FTLIB_ERR_SUCCESS", 128);
networker 0:7da612835693 66 break;
networker 0:7da612835693 67 case FTLIB_ERR_THREAD_IS_RUNNING:
networker 0:7da612835693 68 if (dwTyp) strncpy(buffer, "Thread has been started successfully", 128);
networker 0:7da612835693 69 else strncpy(buffer, "FTLIB_ERR_THREAD_IS_RUNNING", 128);
networker 0:7da612835693 70 break;
networker 0:7da612835693 71 case FTLIB_ERR_DOWNLOAD:
networker 0:7da612835693 72 if (dwTyp) strncpy(buffer, "Failed to upload the program", 128);
networker 0:7da612835693 73 else strncpy(buffer, "FTLIB_ERR_DOWNLOAD", 128);
networker 0:7da612835693 74 break;
networker 0:7da612835693 75 case FTLIB_ERR_DOWNLOAD_WRONG_MEM_BLOCK:
networker 0:7da612835693 76 if (dwTyp) strncpy(buffer, "Bad target to upload the program to", 128);
networker 0:7da612835693 77 else strncpy(buffer, "FTLIB_ERR_DOWNLOAD_WRONG_MEM_BLOCK", 128);
networker 0:7da612835693 78 break;
networker 0:7da612835693 79 case FTLIB_ERR_INVALID_PARAM:
networker 0:7da612835693 80 if (dwTyp) strncpy(buffer, "A parameter specified has a wrong value", 128);
networker 0:7da612835693 81 else strncpy(buffer, "FTLIB_ERR_INVALID_PARAM", 128);
networker 0:7da612835693 82 break;
networker 0:7da612835693 83 case FTLIB_ERR_LIB_IS_INITIALIZED:
networker 0:7da612835693 84 if (dwTyp) strncpy(buffer, "This library has been initialized", 128);
networker 0:7da612835693 85 else strncpy(buffer, "FTLIB_ERR_LIB_IS_INITIALIZED", 128);
networker 0:7da612835693 86 break;
networker 0:7da612835693 87 case FTLIB_ERR_NOT_SUPPORTED:
networker 0:7da612835693 88 if (dwTyp) strncpy(buffer, "The requested action is not supported", 128);
networker 0:7da612835693 89 else strncpy(buffer, "FTLIB_ERR_NOT_SUPPORTED", 128);
networker 0:7da612835693 90 break;
networker 0:7da612835693 91 case FTLIB_ERR_PORT_NUMBER_IS_NULL:
networker 0:7da612835693 92 if (dwTyp) strncpy(buffer, "No handle given", 128);
networker 0:7da612835693 93 else strncpy(buffer, "FTLIB_ERR_PORT_NUMBER_IS_NULL", 128);
networker 0:7da612835693 94 break;
networker 0:7da612835693 95 case FTLIB_ERR_THREAD_NOT_RUNNING:
networker 0:7da612835693 96 if (dwTyp) strncpy(buffer, "Unable to start the thread", 128);
networker 0:7da612835693 97 else strncpy(buffer, "FTLIB_ERR_THREAD_NOT_RUNNING", 128);
networker 0:7da612835693 98 break;
networker 0:7da612835693 99 default:
networker 0:7da612835693 100 strncpy(buffer, "Unknown", 128);
networker 0:7da612835693 101 }
networker 0:7da612835693 102
networker 0:7da612835693 103 return buffer;
networker 0:7da612835693 104 }
networker 0:7da612835693 105