diff options
| author | Tero Kontkanen <tero.kontkanen@granitedevices.fi> | 2017-08-23 13:41:12 +0300 |
|---|---|---|
| committer | Tero Kontkanen <tero.kontkanen@granitedevices.fi> | 2017-08-23 13:41:12 +0300 |
| commit | f5bd9539db2202e2677fd119f5c153edb2f51819 (patch) | |
| tree | 3bfe3b04171be80811597744db9a13733c64e5b9 | |
| parent | 2dfdc771b531716f2547c38864a1ea3ab549808c (diff) | |
| download | SimpleMotionV2-f5bd9539db2202e2677fd119f5c153edb2f51819.tar.gz SimpleMotionV2-f5bd9539db2202e2677fd119f5c153edb2f51819.zip | |
Additional intializations for FTDI D2XX driver
| -rw-r--r-- | drivers/ftdi_d2xx/sm_d2xx.c | 24 |
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; |
