//-----------------------------------------------------------------------
//
// 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;
}
}