aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTero Kontkanen <tero.kontkanen@granitedevices.fi>2017-08-23 13:41:12 +0300
committerTero Kontkanen <tero.kontkanen@granitedevices.fi>2017-08-23 13:41:12 +0300
commitf5bd9539db2202e2677fd119f5c153edb2f51819 (patch)
tree3bfe3b04171be80811597744db9a13733c64e5b9
parent2dfdc771b531716f2547c38864a1ea3ab549808c (diff)
downloadSimpleMotionV2-f5bd9539db2202e2677fd119f5c153edb2f51819.tar.gz
SimpleMotionV2-f5bd9539db2202e2677fd119f5c153edb2f51819.zip
Additional intializations for FTDI D2XX driver
-rw-r--r--drivers/ftdi_d2xx/sm_d2xx.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/ftdi_d2xx/sm_d2xx.c b/drivers/ftdi_d2xx/sm_d2xx.c
index 5b6a578..aa5eef7 100644
--- a/drivers/ftdi_d2xx/sm_d2xx.c
+++ b/drivers/ftdi_d2xx/sm_d2xx.c
@@ -81,6 +81,12 @@ smint32 d2xxPortOpen(const char *port_device_name, smint32 baudrate_bps)
{
if(handles[i]==NULL)
{
+ if(FT_ResetDevice(h)!=FT_OK)
+ {
+ smDebug( -1, Low, "FTDI port error: failed to reset USB chip\n");
+ goto error;
+ }
+
//init port settings
s=FT_SetBaudRate(h,baudrate_bps);
if(s!=FT_OK)
@@ -95,12 +101,30 @@ smint32 d2xxPortOpen(const char *port_device_name, smint32 baudrate_bps)
goto error;
}
+ if(FT_SetFlowControl(h,FT_FLOW_NONE,0,0)!=FT_OK)
+ {
+ smDebug( -1, Low, "FTDI port error: failed to set flow control\n");
+ goto error;
+ }
+
+ if(FT_SetDataCharacteristics(h,FT_BITS_8,FT_STOP_BITS_1,FT_PARITY_NONE)!=FT_OK)
+ {
+ smDebug( -1, Low, "FTDI port error: failed to set data characteristics\n");
+ goto error;
+ }
+
if(FT_SetTimeouts(h,readTimeoutMs,readTimeoutMs)!=FT_OK)
{
smDebug( -1, Low, "FTDI port error: failed to set timeout\n");
goto error;
}
+ if(FT_Purge(h,FT_PURGE_RX|FT_PURGE_TX)!=FT_OK)
+ {
+ smDebug( -1, Low, "FTDI port error: failed to set purge\n");
+ goto error;
+ }
+
smDebug( -1, Mid, "FTDI port opened\n");
handles[i]=h;
return i;