so libftdi 0.x and 1.x can co-exist
API extentions:
-- Make EEPROM structure opaque
- TO DECIDE: Make ftdi structure opaque?
Misc:
#include <ftdi.h>
%}
+%include ftdi_i.h
+%{
+#include <ftdi_i.h>
+%}
+
extern "C" {
%apply char *OUTPUT { unsigned char *buf };
on this file might be covered by the GNU General Public License.
*/
#include "ftdi.hpp"
+#include "ftdi_i.h"
#include "ftdi.h"
namespace Ftdi
#include <stdio.h>
#include <stdlib.h>
+#include "ftdi_i.h"
#include "ftdi.h"
#include "ftdi_version_i.h"
#include <libusb.h>
-/* 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() */
};
/**
- \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.
--- /dev/null
+/***************************************************************************
+ 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];
+};
+