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
|