//----------------------------------------------------------------------- // // Copyright © 2012 Nils Hammar and Future Technology Devices International Limited. All rights reserved. // //----------------------------------------------------------------------- namespace FtdiApi.Structs { using System; using System.Runtime.InteropServices; /// /// Internal structure for reading and writing EEPROM contents. /// /// NOTE: NEED Pack=1 for byte alignment! Without this, data is garbage /// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1049:TypesThatOwnNativeResourcesShouldBeDisposable", Justification = "Reviewed.")] [System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1401:FieldsMustBePrivate", Justification = "Reviewed.")] [StructLayout(LayoutKind.Sequential, Pack = 4)] internal struct FT_PROGRAM_DATA { /// /// EEPROM Data. /// public uint Signature1; /// /// EEPROM Data. /// public uint Signature2; /// /// EEPROM Data. /// public uint Version; /// /// EEPROM Data. /// public ushort VendorID; /// /// EEPROM Data. /// public ushort ProductID; /// /// EEPROM Data. /// public IntPtr Manufacturer; /// /// EEPROM Data. /// public IntPtr ManufacturerID; /// /// EEPROM Data. /// public IntPtr Description; /// /// EEPROM Data. /// public IntPtr SerialNumber; /// /// EEPROM Data. /// public ushort MaxPower; /// /// EEPROM Data. /// public ushort PnP; /// /// EEPROM Data. /// public ushort SelfPowered; /// /// EEPROM Data. /// public ushort RemoteWakeup; //// FT232B extensions /// /// EEPROM Data. /// public byte Rev4; /// /// EEPROM Data. /// public byte IsoIn; /// /// EEPROM Data. /// public byte IsoOut; /// /// EEPROM Data. /// public byte PullDownEnable; /// /// EEPROM Data. /// public byte SerNumEnable; /// /// EEPROM Data. /// public byte USBVersionEnable; /// /// EEPROM Data. /// public ushort USBVersion; // FT2232D extensions /// /// EEPROM Data. /// public byte Rev5; /// /// EEPROM Data. /// public byte IsoInA; /// /// EEPROM Data. /// public byte IsoInB; /// /// EEPROM Data. /// public byte IsoOutA; /// /// EEPROM Data. /// public byte IsoOutB; /// /// EEPROM Data. /// public byte PullDownEnable5; /// /// EEPROM Data. /// public byte SerNumEnable5; /// /// EEPROM Data. /// public byte USBVersionEnable5; /// /// EEPROM Data. /// public ushort USBVersion5; /// /// EEPROM Data. /// public byte AIsHighCurrent; /// /// EEPROM Data. /// public byte BIsHighCurrent; /// /// EEPROM Data. /// public byte IFAIsFifo; /// /// EEPROM Data. /// public byte IFAIsFifoTar; /// /// EEPROM Data. /// public byte IFAIsFastSer; /// /// EEPROM Data. /// public byte AIsVCP; /// /// EEPROM Data. /// public byte IFBIsFifo; /// /// EEPROM Data. /// public byte IFBIsFifoTar; /// /// EEPROM Data. /// public byte IFBIsFastSer; /// /// EEPROM Data. /// public byte BIsVCP; // FT232R extensions /// /// EEPROM Data. /// public byte UseExtOsc; /// /// EEPROM Data. /// public byte HighDriveIOs; /// /// EEPROM Data. /// public byte EndpointSize; /// /// EEPROM Data. /// public byte PullDownEnableR; /// /// EEPROM Data. /// public byte SerNumEnableR; /// /// EEPROM Data. /// non-zero if invert TXD /// public byte InvertTXD; /// /// EEPROM Data. /// non-zero if invert RXD /// public byte InvertRXD; /// /// EEPROM Data. /// non-zero if invert RTS /// public byte InvertRTS; /// /// EEPROM Data. /// non-zero if invert CTS /// public byte InvertCTS; /// /// EEPROM Data. /// non-zero if invert DTR /// public byte InvertDTR; /// /// EEPROM Data. /// non-zero if invert DSR /// public byte InvertDSR; /// /// EEPROM Data. /// non-zero if invert DCD /// public byte InvertDCD; /// /// EEPROM Data. /// non-zero if invert RI /// public byte InvertRI; /// /// EEPROM Data. /// Cbus Mux control - Ignored for FT245R /// public byte Cbus0; /// /// EEPROM Data. /// Cbus Mux control - Ignored for FT245R /// public byte Cbus1; /// /// EEPROM Data. /// Cbus Mux control - Ignored for FT245R /// public byte Cbus2; /// /// EEPROM Data. /// Cbus Mux control - Ignored for FT245R /// public byte Cbus3; /// /// EEPROM Data. /// Cbus Mux control - Ignored for FT245R /// public byte Cbus4; /// /// EEPROM Data. /// Default to loading VCP /// public byte RIsD2XX; // FT2232H extensions /// /// EEPROM Data. /// public byte PullDownEnable7; /// /// EEPROM Data. /// public byte SerNumEnable7; /// /// EEPROM Data. /// non-zero if AL pins have slow slew /// public byte ALSlowSlew; /// /// EEPROM Data. /// non-zero if AL pins are Schmitt input /// public byte ALSchmittInput; /// /// EEPROM Data. /// valid values are 4mA, 8mA, 12mA, 16mA /// public byte ALDriveCurrent; /// /// EEPROM Data. /// non-zero if AH pins have slow slew /// public byte AHSlowSlew; /// /// EEPROM Data. /// non-zero if AH pins are Schmitt input /// public byte AHSchmittInput; /// /// EEPROM Data. /// valid values are 4mA, 8mA, 12mA, 16mA /// public byte AHDriveCurrent; /// /// EEPROM Data. /// non-zero if BL pins have slow slew /// public byte BLSlowSlew; /// /// EEPROM Data. /// non-zero if BL pins are Schmitt input /// public byte BLSchmittInput; /// /// EEPROM Data. /// valid values are 4mA, 8mA, 12mA, 16mA /// public byte BLDriveCurrent; /// /// EEPROM Data. /// non-zero if BH pins have slow slew /// public byte BHSlowSlew; /// /// EEPROM Data. /// non-zero if BH pins are Schmitt input /// public byte BHSchmittInput; /// /// EEPROM Data. /// valid values are 4mA, 8mA, 12mA, 16mA /// public byte BHDriveCurrent; /// /// EEPROM Data. /// non-zero if interface is 245 FIFO /// public byte IFAIsFifo7; /// /// EEPROM Data. /// non-zero if interface is 245 FIFO CPU target /// public byte IFAIsFifoTar7; /// /// EEPROM Data. /// non-zero if interface is Fast serial /// public byte IFAIsFastSer7; /// /// EEPROM Data. /// non-zero if interface is to use VCP drivers /// public byte AIsVCP7; /// /// EEPROM Data. /// non-zero if interface is 245 FIFO /// public byte IFBIsFifo7; /// /// EEPROM Data. /// non-zero if interface is 245 FIFO CPU target /// public byte IFBIsFifoTar7; /// /// EEPROM Data. /// non-zero if interface is Fast serial /// public byte IFBIsFastSer7; /// /// EEPROM Data. /// non-zero if interface is to use VCP drivers /// public byte BIsVCP7; /// /// EEPROM Data. /// non-zero if using BCBUS7 to save power for self-powered designs /// public byte PowerSaveEnable; // FT4232H extensions /// /// EEPROM Data. /// public byte PullDownEnable8; /// /// EEPROM Data. /// public byte SerNumEnable8; /// /// EEPROM Data. /// non-zero if AL pins have slow slew /// public byte ASlowSlew; /// /// EEPROM Data. /// non-zero if AL pins are Schmitt input /// public byte ASchmittInput; /// /// EEPROM Data. /// valid values are 4mA, 8mA, 12mA, 16mA /// public byte ADriveCurrent; /// /// EEPROM Data. /// non-zero if AH pins have slow slew /// public byte BSlowSlew; /// /// EEPROM Data. /// non-zero if AH pins are Schmitt input /// public byte BSchmittInput; /// /// EEPROM Data. /// valid values are 4mA, 8mA, 12mA, 16mA /// public byte BDriveCurrent; /// /// EEPROM Data. /// non-zero if BL pins have slow slew /// public byte CSlowSlew; /// /// EEPROM Data. /// non-zero if BL pins are Schmitt input /// public byte CSchmittInput; /// /// EEPROM Data. /// valid values are 4mA, 8mA, 12mA, 16mA /// public byte CDriveCurrent; /// /// EEPROM Data. /// non-zero if BH pins have slow slew /// public byte DSlowSlew; /// /// EEPROM Data. /// non-zero if BH pins are Schmitt input /// public byte DSchmittInput; /// /// EEPROM Data. /// valid values are 4mA, 8mA, 12mA, 16mA /// public byte DDriveCurrent; /// /// EEPROM Data. /// public byte ARIIsTXDEN; /// /// EEPROM Data. /// public byte BRIIsTXDEN; /// /// EEPROM Data. /// public byte CRIIsTXDEN; /// /// EEPROM Data. /// public byte DRIIsTXDEN; /// /// EEPROM Data. /// non-zero if interface is to use VCP drivers /// public byte AIsVCP8; /// /// EEPROM Data. /// non-zero if interface is to use VCP drivers /// public byte BIsVCP8; /// /// EEPROM Data. /// non-zero if interface is to use VCP drivers /// public byte CIsVCP8; /// /// EEPROM Data. /// non-zero if interface is to use VCP drivers /// public byte DIsVCP8; // FT232H extensions /// /// EEPROM Data. /// non-zero if pull down enabled /// public byte PullDownEnableH; /// /// EEPROM Data. /// non-zero if serial number to be used /// public byte SerNumEnableH; /// /// EEPROM Data. /// non-zero if AC pins have slow slew /// public byte ACSlowSlewH; /// /// EEPROM Data. /// non-zero if AC pins are Schmitt input /// public byte ACSchmittInputH; /// /// EEPROM Data. /// valid values are 4mA, 8mA, 12mA, 16mA /// public byte ACDriveCurrentH; /// /// EEPROM Data. /// non-zero if AD pins have slow slew /// public byte ADSlowSlewH; /// /// EEPROM Data. /// non-zero if AD pins are Schmitt input /// public byte ADSchmittInputH; /// /// EEPROM Data. /// valid values are 4mA, 8mA, 12mA, 16mA /// public byte ADDriveCurrentH; /// /// EEPROM Data. /// Cbus Mux control /// public byte Cbus0H; /// /// EEPROM Data. /// Cbus Mux control /// public byte Cbus1H; /// /// EEPROM Data. /// Cbus Mux control /// public byte Cbus2H; /// /// EEPROM Data. /// Cbus Mux control /// public byte Cbus3H; /// /// EEPROM Data. /// Cbus Mux control /// public byte Cbus4H; /// /// EEPROM Data. /// Cbus Mux control /// public byte Cbus5H; /// /// EEPROM Data. /// Cbus Mux control /// public byte Cbus6H; /// /// EEPROM Data. /// Cbus Mux control /// public byte Cbus7H; /// /// EEPROM Data. /// Cbus Mux control /// public byte Cbus8H; /// /// EEPROM Data. /// Cbus Mux control /// public byte Cbus9H; /// /// EEPROM Data. /// non-zero if interface is 245 FIFO /// public byte IsFifoH; /// /// EEPROM Data. /// non-zero if interface is 245 FIFO CPU target /// public byte IsFifoTarH; /// /// EEPROM Data. /// non-zero if interface is Fast serial /// public byte IsFastSerH; /// /// EEPROM Data. /// non-zero if interface is FT1248 /// public byte IsFT1248H; /// /// EEPROM Data. /// FT1248 clock polarity /// public byte FT1248CpolH; /// /// EEPROM Data. /// FT1248 data is LSB (1) or MSB (0) /// public byte FT1248LsbH; /// /// EEPROM Data. /// FT1248 flow control enable /// public byte FT1248FlowControlH; /// /// EEPROM Data. /// non-zero if interface is to use VCP drivers /// public byte IsVCPH; /// /// EEPROM Data. /// non-zero if using ACBUS7 to save power for self-powered designs /// public byte PowerSaveEnableH; } }