From b790d38e9fac3e2144293a84bfc6de72b01a6c6d Mon Sep 17 00:00:00 2001 From: Uwe Bonnes Date: Thu, 29 Sep 2011 18:28:25 +0200 Subject: [PATCH] Use a private header for the private EEPROM structures I added the ftdi_i.h header to bindings/ftdi.i. Noe the bindings compile again. Other things are untouched. --- TODO | 1 - bindings/ftdi.i | 5 ++ ftdipp/ftdi.cpp | 1 + src/ftdi.c | 1 + src/ftdi.h | 103 ---------------------------------------------- src/ftdi_i.h | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 130 insertions(+), 104 deletions(-) create mode 100644 src/ftdi_i.h diff --git a/TODO b/TODO index cdc0409..adafdc2 100644 --- a/TODO +++ b/TODO @@ -4,7 +4,6 @@ Build related: so libftdi 0.x and 1.x can co-exist API extentions: -- Make EEPROM structure opaque - TO DECIDE: Make ftdi structure opaque? Misc: diff --git a/bindings/ftdi.i b/bindings/ftdi.i index b1d550a..2903924 100644 --- a/bindings/ftdi.i +++ b/bindings/ftdi.i @@ -15,6 +15,11 @@ #include %} +%include ftdi_i.h +%{ +#include +%} + extern "C" { %apply char *OUTPUT { unsigned char *buf }; diff --git a/ftdipp/ftdi.cpp b/ftdipp/ftdi.cpp index 2754033..18dd81c 100644 --- a/ftdipp/ftdi.cpp +++ b/ftdipp/ftdi.cpp @@ -27,6 +27,7 @@ This exception does not invalidate any other reasons why a work based on this file might be covered by the GNU General Public License. */ #include "ftdi.hpp" +#include "ftdi_i.h" #include "ftdi.h" namespace Ftdi diff --git a/src/ftdi.c b/src/ftdi.c index de5ded1..17d1d0f 100644 --- a/src/ftdi.c +++ b/src/ftdi.c @@ -34,6 +34,7 @@ #include #include +#include "ftdi_i.h" #include "ftdi.h" #include "ftdi_version_i.h" diff --git a/src/ftdi.h b/src/ftdi.h index 759e61b..03a7d52 100644 --- a/src/ftdi.h +++ b/src/ftdi.h @@ -19,9 +19,6 @@ #include -/* Even on 93xx66 at max 256 bytes are used (AN_121)*/ -#define FTDI_MAX_EEPROM_SIZE 256 - /** FTDI chip type */ enum ftdi_chip_type { TYPE_AM=0, TYPE_BM=1, TYPE_2232C=2, TYPE_R=3, TYPE_2232H=4, TYPE_4232H=5, TYPE_232H=6 }; /** Parity mode for ftdi_set_line_property() */ @@ -192,106 +189,6 @@ struct ftdi_transfer_control }; /** - \brief FTDI eeprom structure -*/ -struct ftdi_eeprom -{ - /** vendor id */ - int vendor_id; - /** product id */ - int product_id; - - /** Was the eeprom structure initialized for the actual - connected device? **/ - int initialized_for_connected_device; - - /** self powered */ - int self_powered; - /** remote wakeup */ - int remote_wakeup; - - int is_not_pnp; - - /* Suspend on DBUS7 Low */ - int suspend_dbus7; - - /** input in isochronous transfer mode */ - int in_is_isochronous; - /** output in isochronous transfer mode */ - int out_is_isochronous; - /** suspend pull downs */ - int suspend_pull_downs; - - /** use serial */ - int use_serial; - /** usb version */ - int usb_version; - /** Use usb version on FT2232 devices*/ - int use_usb_version; - /** maximum power */ - int max_power; - - /** manufacturer name */ - char *manufacturer; - /** product name */ - char *product; - /** serial number */ - char *serial; - - /* 2232D/H(/FT4432H?) specific */ - /* Hardware type, 0 = RS232 Uart, 1 = 245 FIFO, 2 = CPU FIFO, - 4 = OPTO Isolate */ - int channel_a_type; - int channel_b_type; - /* Driver Type, 1 = VCP */ - int channel_a_driver; - int channel_b_driver; - - /* Special function of FT232R/FT232H devices (and possibly others as well) */ - /** CBUS pin function. See CBUS_xxx defines. */ - int cbus_function[10]; - /** Select hight current drive on R devices. */ - int high_current; - /** Select hight current drive on A channel (2232C */ - int high_current_a; - /** Select hight current drive on B channel (2232C). */ - int high_current_b; - /** Select inversion of data lines (bitmask). */ - int invert; - - /*2232H/4432H Group specific values */ - /* Group0 is AL on 2322H and A on 4232H - Group1 is AH on 2232H and B on 4232H - Group2 is BL on 2322H and C on 4232H - Group3 is BH on 2232H and C on 4232H*/ - int group0_drive; - int group0_schmitt; - int group0_slew; - int group1_drive; - int group1_schmitt; - int group1_slew; - int group2_drive; - int group2_schmitt; - int group2_slew; - int group3_drive; - int group3_schmitt; - int group3_slew; - - int powersave; - - int clock_polarity; - int data_order; - int flow_control; - - /** eeprom size in bytes. This doesn't get stored in the eeprom - but is the only way to pass it to ftdi_eeprom_build. */ - int size; - /* EEPROM Type 0x46 for 93xx46, 0x56 for 93xx56 and 0x66 for 93xx66*/ - int chip; - unsigned char buf[FTDI_MAX_EEPROM_SIZE]; -}; - -/** \brief Main context structure for all libftdi functions. Do not access directly if possible. diff --git a/src/ftdi_i.h b/src/ftdi_i.h new file mode 100644 index 0000000..1bbcf14 --- /dev/null +++ b/src/ftdi_i.h @@ -0,0 +1,123 @@ +/*************************************************************************** + ftdi_i.h - description + ------------------- + begin : Don Sep 9 2011 + copyright : (C) 2003-2011 by Intra2net AG and the libftdi developers + email : opensource@intra2net.com + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License * + * version 2.1 as published by the Free Software Foundation; * + * * + *************************************************************************** + + Non public definitions here + +*/ + +/* Even on 93xx66 at max 256 bytes are used (AN_121)*/ +#define FTDI_MAX_EEPROM_SIZE 256 + +/** + \brief FTDI eeprom structure +*/ +struct ftdi_eeprom +{ + /** vendor id */ + int vendor_id; + /** product id */ + int product_id; + + /** Was the eeprom structure initialized for the actual + connected device? **/ + int initialized_for_connected_device; + + /** self powered */ + int self_powered; + /** remote wakeup */ + int remote_wakeup; + + int is_not_pnp; + + /* Suspend on DBUS7 Low */ + int suspend_dbus7; + + /** input in isochronous transfer mode */ + int in_is_isochronous; + /** output in isochronous transfer mode */ + int out_is_isochronous; + /** suspend pull downs */ + int suspend_pull_downs; + + /** use serial */ + int use_serial; + /** usb version */ + int usb_version; + /** Use usb version on FT2232 devices*/ + int use_usb_version; + /** maximum power */ + int max_power; + + /** manufacturer name */ + char *manufacturer; + /** product name */ + char *product; + /** serial number */ + char *serial; + + /* 2232D/H(/FT4432H?) specific */ + /* Hardware type, 0 = RS232 Uart, 1 = 245 FIFO, 2 = CPU FIFO, + 4 = OPTO Isolate */ + int channel_a_type; + int channel_b_type; + /* Driver Type, 1 = VCP */ + int channel_a_driver; + int channel_b_driver; + + /* Special function of FT232R/FT232H devices (and possibly others as well) */ + /** CBUS pin function. See CBUS_xxx defines. */ + int cbus_function[9]; + /** Select hight current drive on R devices. */ + int high_current; + /** Select hight current drive on A channel (2232C */ + int high_current_a; + /** Select hight current drive on B channel (2232C). */ + int high_current_b; + /** Select inversion of data lines (bitmask). */ + int invert; + + /*2232H/4432H Group specific values */ + /* Group0 is AL on 2322H and A on 4232H + Group1 is AH on 2232H and B on 4232H + Group2 is BL on 2322H and C on 4232H + Group3 is BH on 2232H and C on 4232H*/ + int group0_drive; + int group0_schmitt; + int group0_slew; + int group1_drive; + int group1_schmitt; + int group1_slew; + int group2_drive; + int group2_schmitt; + int group2_slew; + int group3_drive; + int group3_schmitt; + int group3_slew; + + int powersave; + + int clock_polarity; + int data_order; + int flow_control; + + /** eeprom size in bytes. This doesn't get stored in the eeprom + but is the only way to pass it to ftdi_eeprom_build. */ + int size; + /* EEPROM Type 0x46 for 93xx46, 0x56 for 93xx56 and 0x66 for 93xx66*/ + int chip; + unsigned char buf[FTDI_MAX_EEPROM_SIZE]; +}; + -- 1.7.1