/* * ftdi_d2xx.c * * Header for FTDI D2XX serial port access library * * Created on: 19.8.2017 * Author: Tero Kontkanen */ #include "drivers/ftdi_d2xx/sm_d2xx.h" #include "simplemotion_private.h" //needed for timeout variable #include "drivers/ftdi_d2xx/third_party/ftd2xx.h" #include #include smbool handles_initialized=smfalse; FT_HANDLE handles[MAX_OPEN_PORTS];//FT_HANDLE type is just a pointer static int stringToNumber( const char *str, smbool *ok ) { int len=strlen(str); int i, number=0, decade=1; if(len<1) { *ok=smfalse; return 0; } for(i=len-1;i>=0;i--) { if(str[i]<'0' || str[i]>'9')//non-numeric char->fail { *ok=smfalse; return 0; } number+=decade*(str[i]-'0'); decade*=10; } *ok=smtrue; return number; } smint32 d2xxPortOpen(const char *port_device_name, smint32 baudrate_bps) { //init array of handles if not done yet if(handles_initialized==smfalse) { int i; for(i=0;iis_simplemotion_device=compatible; if(compatible==smtrue) { sprintf(info->description,"SimpleMotion USB (%s)",description); sprintf(info->device_name,"FTDI%d",index); } else//some unknown device with FTDI chip { sprintf(info->description,"Unknown FTDI device (%s)",description); sprintf(info->device_name,"FTDI%d",index); } return smtrue; } else { return smfalse; } return smfalse; }