libftdi-git Archives

Subject: A library to talk to FTDI chips branch, master, updated. v0.15-36-gd0def04

From: libftdi-git@xxxxxxxxxxxxxxxxxxxxxxx
To: libftdi-git@xxxxxxxxxxxxxxxxxxxxxxx
Date: Tue, 7 Apr 2009 13:23:54 +0200 (CEST)
The branch, master has been updated
       via  d0def041c8e0ad368c4556baef2b7f126ae34e80 (commit)
       via  f2f00cb562550c876da2119edeb1dd228aa2abfa (commit)
      from  0beb9686957ae9b04d4678bbdc2800938beffcf1 (commit)


- Log -----------------------------------------------------------------
commit d0def041c8e0ad368c4556baef2b7f126ae34e80
Author: Thomas Jarosch <thomas.jarosch@xxxxxxxxxxxxx>
Date:   Tue Apr 7 13:23:40 2009 +0200

    Updated ChangeLog, added David Challis to AUTHORS

commit f2f00cb562550c876da2119edeb1dd228aa2abfa
Author: David Challis <dchallis@xxxxxxxxxxxxx>
Date:   Tue Apr 7 13:19:41 2009 +0200

    Added FT2232H and FT4232H support to ftdi_read_data

-----------------------------------------------------------------------

Summary of changes:
 AUTHORS    |    1 +
 ChangeLog  |    1 +
 src/ftdi.c |   23 +++++++++++++++--------
 3 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/AUTHORS b/AUTHORS
index 6dca656..1f89dc0 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -9,6 +9,7 @@ see Changelog for full details:
   Andrew John Rogers <andrew@xxxxxxxxxxxxxxxx>
   Arnim Läuger <arnim.laeuger@xxxxxxx>
   Daniel Kirkham <d.kirkham@xxxxxxxxxxx>
+  David Challis <dchallis@xxxxxxxxxxxxx>
   Emil <emil@xxxxxxxxxxx>
   Evan Nemerson <evan@xxxxxxxxxxxxxxx>
   Evgeny Sinelnikov <sin@xxxxxxxx>
diff --git a/ChangeLog b/ChangeLog
index ba194a8..398783f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 New in 0.16 - 2009-XX-XX
 ------------------------
+* Support for FT2232H and FT4232H (David Challis and Intra2net)
 * Support for mingw cross compile (Uwe Bonnes)
 * Minor autoconf cleanup (Tarek Heiland)
 * Code cleanup in various places (Intra2net)
diff --git a/src/ftdi.c b/src/ftdi.c
index a00e951..27600d6 100644
--- a/src/ftdi.c
+++ b/src/ftdi.c
@@ -1206,6 +1206,13 @@ int ftdi_write_data_get_chunksize(struct ftdi_context 
*ftdi, unsigned int *chunk
 int ftdi_read_data(struct ftdi_context *ftdi, unsigned char *buf, int size)
 {
     int offset = 0, ret = 1, i, num_of_chunks, chunk_remains;
+    int packet_size;
+
+    // New hi-speed devices from FTDI use a packet size of 512 bytes
+    if (ftdi->type == TYPE_2232H || ftdi->type == TYPE_4232H)
+        packet_size = 512;
+    else
+        packet_size = 64;
 
     // everything we want is still in the readbuffer?
     if (size <= ftdi->readbuffer_remaining)
@@ -1242,23 +1249,23 @@ int ftdi_read_data(struct ftdi_context *ftdi, unsigned 
char *buf, int size)
         {
             // skip FTDI status bytes.
             // Maybe stored in the future to enable modem use
-            num_of_chunks = ret / 64;
-            chunk_remains = ret % 64;
+            num_of_chunks = ret / packet_size;
+            chunk_remains = ret % packet_size;
             //printf("ret = %X, num_of_chunks = %X, chunk_remains = %X, 
readbuffer_offset = %X\n", ret, num_of_chunks, chunk_remains, 
ftdi->readbuffer_offset);
 
             ftdi->readbuffer_offset += 2;
             ret -= 2;
 
-            if (ret > 62)
+            if (ret > packet_size - 2)
             {
                 for (i = 1; i < num_of_chunks; i++)
-                    memmove (ftdi->readbuffer+ftdi->readbuffer_offset+62*i,
-                             ftdi->readbuffer+ftdi->readbuffer_offset+64*i,
-                             62);
+                    memmove 
(ftdi->readbuffer+ftdi->readbuffer_offset+(packet_size - 2)*i,
+                             
ftdi->readbuffer+ftdi->readbuffer_offset+packet_size*i,
+                             packet_size - 2);
                 if (chunk_remains > 2)
                 {
-                    memmove (ftdi->readbuffer+ftdi->readbuffer_offset+62*i,
-                             ftdi->readbuffer+ftdi->readbuffer_offset+64*i,
+                    memmove 
(ftdi->readbuffer+ftdi->readbuffer_offset+(packet_size - 2)*i,
+                             
ftdi->readbuffer+ftdi->readbuffer_offset+packet_size*i,
                              chunk_remains-2);
                     ret -= 2*num_of_chunks;
                 }


hooks/post-receive
-- 
A library to talk to FTDI chips

--
libftdi-git - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi-git+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx   

Current Thread
  • A library to talk to FTDI chips branch, master, updated. v0.15-36-gd0def04, libftdi-git <=