module Bindings.Libftdi where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word
c'FTDI_DEFAULT_EEPROM_SIZE = 128
c'FTDI_DEFAULT_EEPROM_SIZE :: (Num a) => a
type C'ftdi_chip_type = CUInt
type C'ftdi_parity_type = CUInt
type C'ftdi_stopbits_type = CUInt
type C'ftdi_bits_type = CUInt
type C'ftdi_break_type = CUInt
type C'ftdi_mpsse_mode = CUInt
type C'ftdi_interface = CUInt
c'MPSSE_WRITE_NEG = 1
c'MPSSE_WRITE_NEG :: (Num a) => a
c'MPSSE_BITMODE = 2
c'MPSSE_BITMODE :: (Num a) => a
c'MPSSE_READ_NEG = 4
c'MPSSE_READ_NEG :: (Num a) => a
c'MPSSE_LSB = 8
c'MPSSE_LSB :: (Num a) => a
c'MPSSE_DO_WRITE = 16
c'MPSSE_DO_WRITE :: (Num a) => a
c'MPSSE_DO_READ = 32
c'MPSSE_DO_READ :: (Num a) => a
c'MPSSE_WRITE_TMS = 64
c'MPSSE_WRITE_TMS :: (Num a) => a
c'SET_BITS_LOW = 128
c'SET_BITS_LOW :: (Num a) => a
c'SET_BITS_HIGH = 130
c'SET_BITS_HIGH :: (Num a) => a
c'GET_BITS_LOW = 129
c'GET_BITS_LOW :: (Num a) => a
c'GET_BITS_HIGH = 131
c'GET_BITS_HIGH :: (Num a) => a
c'LOOPBACK_START = 132
c'LOOPBACK_START :: (Num a) => a
c'LOOPBACK_END = 133
c'LOOPBACK_END :: (Num a) => a
c'TCK_DIVISOR = 134
c'TCK_DIVISOR :: (Num a) => a
divValue rate | rate > 6000000 = 0
| ((6000000/rate 1) > 0xffff) = 0xffff
| otherwise = (6000000/rate 1)
c'SEND_IMMEDIATE = 135
c'SEND_IMMEDIATE :: (Num a) => a
c'WAIT_ON_HIGH = 136
c'WAIT_ON_HIGH :: (Num a) => a
c'WAIT_ON_LOW = 137
c'WAIT_ON_LOW :: (Num a) => a
c'READ_SHORT = 144
c'READ_SHORT :: (Num a) => a
c'READ_EXTENDED = 145
c'READ_EXTENDED :: (Num a) => a
c'WRITE_SHORT = 146
c'WRITE_SHORT :: (Num a) => a
c'WRITE_EXTENDED = 147
c'WRITE_EXTENDED :: (Num a) => a
c'SIO_RESET = 0
c'SIO_RESET :: (Num a) => a
c'SIO_MODEM_CTRL = 1
c'SIO_MODEM_CTRL :: (Num a) => a
c'SIO_SET_FLOW_CTRL = 2
c'SIO_SET_FLOW_CTRL :: (Num a) => a
c'SIO_SET_BAUD_RATE = 3
c'SIO_SET_BAUD_RATE :: (Num a) => a
c'SIO_SET_DATA = 4
c'SIO_SET_DATA :: (Num a) => a
c'FTDI_DEVICE_OUT_REQTYPE = 64
c'FTDI_DEVICE_OUT_REQTYPE :: (Num a) => a
c'FTDI_DEVICE_IN_REQTYPE = 192
c'FTDI_DEVICE_IN_REQTYPE :: (Num a) => a
c'SIO_RESET_REQUEST = 0
c'SIO_RESET_REQUEST :: (Num a) => a
c'SIO_SET_BAUDRATE_REQUEST = 3
c'SIO_SET_BAUDRATE_REQUEST :: (Num a) => a
c'SIO_SET_DATA_REQUEST = 4
c'SIO_SET_DATA_REQUEST :: (Num a) => a
c'SIO_SET_FLOW_CTRL_REQUEST = 2
c'SIO_SET_FLOW_CTRL_REQUEST :: (Num a) => a
c'SIO_SET_MODEM_CTRL_REQUEST = 1
c'SIO_SET_MODEM_CTRL_REQUEST :: (Num a) => a
c'SIO_POLL_MODEM_STATUS_REQUEST = 5
c'SIO_POLL_MODEM_STATUS_REQUEST :: (Num a) => a
c'SIO_SET_EVENT_CHAR_REQUEST = 6
c'SIO_SET_EVENT_CHAR_REQUEST :: (Num a) => a
c'SIO_SET_ERROR_CHAR_REQUEST = 7
c'SIO_SET_ERROR_CHAR_REQUEST :: (Num a) => a
c'SIO_SET_LATENCY_TIMER_REQUEST = 9
c'SIO_SET_LATENCY_TIMER_REQUEST :: (Num a) => a
c'SIO_GET_LATENCY_TIMER_REQUEST = 10
c'SIO_GET_LATENCY_TIMER_REQUEST :: (Num a) => a
c'SIO_SET_BITMODE_REQUEST = 11
c'SIO_SET_BITMODE_REQUEST :: (Num a) => a
c'SIO_READ_PINS_REQUEST = 12
c'SIO_READ_PINS_REQUEST :: (Num a) => a
c'SIO_READ_EEPROM_REQUEST = 144
c'SIO_READ_EEPROM_REQUEST :: (Num a) => a
c'SIO_WRITE_EEPROM_REQUEST = 145
c'SIO_WRITE_EEPROM_REQUEST :: (Num a) => a
c'SIO_ERASE_EEPROM_REQUEST = 146
c'SIO_ERASE_EEPROM_REQUEST :: (Num a) => a
c'SIO_RESET_SIO = 0
c'SIO_RESET_SIO :: (Num a) => a
c'SIO_RESET_PURGE_RX = 1
c'SIO_RESET_PURGE_RX :: (Num a) => a
c'SIO_RESET_PURGE_TX = 2
c'SIO_RESET_PURGE_TX :: (Num a) => a
c'SIO_DISABLE_FLOW_CTRL = 0
c'SIO_DISABLE_FLOW_CTRL :: (Num a) => a
c'SIO_RTS_CTS_HS = 256
c'SIO_RTS_CTS_HS :: (Num a) => a
c'SIO_DTR_DSR_HS = 512
c'SIO_DTR_DSR_HS :: (Num a) => a
c'SIO_XON_XOFF_HS = 1024
c'SIO_XON_XOFF_HS :: (Num a) => a
c'SIO_SET_DTR_MASK = 1
c'SIO_SET_DTR_MASK :: (Num a) => a
c'SIO_SET_DTR_HIGH = 257
c'SIO_SET_DTR_HIGH :: (Num a) => a
c'SIO_SET_DTR_LOW = 256
c'SIO_SET_DTR_LOW :: (Num a) => a
c'SIO_SET_RTS_MASK = 2
c'SIO_SET_RTS_MASK :: (Num a) => a
c'SIO_SET_RTS_HIGH = 514
c'SIO_SET_RTS_HIGH :: (Num a) => a
c'SIO_SET_RTS_LOW = 512
c'SIO_SET_RTS_LOW :: (Num a) => a
c'FTDI_URB_USERCONTEXT_COOKIE = wordPtrToPtr 1
c'FTDI_URB_USERCONTEXT_COOKIE :: Ptr a
data C'usb_dev_handle = C'usb_dev_handle
data C'ftdi_context = C'ftdi_context{
c'ftdi_context'usb_dev :: Ptr C'usb_dev_handle
,
c'ftdi_context'usb_read_timeout :: CInt
,
c'ftdi_context'usb_write_timeout :: CInt
,
c'ftdi_context'type :: C'ftdi_chip_type
,
c'ftdi_context'baudrate :: CInt
,
c'ftdi_context'bitbang_enabled :: CUChar
,
c'ftdi_context'readbuffer :: Ptr CUChar
,
c'ftdi_context'readbuffer_offset :: CUInt
,
c'ftdi_context'readbuffer_remaining :: CUInt
,
c'ftdi_context'readbuffer_chunksize :: CUInt
,
c'ftdi_context'writebuffer_chunksize :: CUInt
,
c'ftdi_context'in_ep :: CInt
,
c'ftdi_context'bitbang_mode :: CUChar
,
c'ftdi_context'eeprom_size :: CInt
,
c'ftdi_context'error_str :: Ptr CChar
,
c'ftdi_context'async_usb_buffer :: Ptr CChar
,
c'ftdi_context'async_usb_buffer_size :: CUInt
} deriving (Eq,Show)
instance Storable C'ftdi_context where
sizeOf _ = 80
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
v3 <- peekByteOff p 12
v4 <- peekByteOff p 16
v5 <- peekByteOff p 20
v6 <- peekByteOff p 24
v7 <- peekByteOff p 28
v8 <- peekByteOff p 32
v9 <- peekByteOff p 36
v10 <- peekByteOff p 40
v11 <- peekByteOff p 52
v12 <- peekByteOff p 60
v13 <- peekByteOff p 64
v14 <- peekByteOff p 68
v15 <- peekByteOff p 72
v16 <- peekByteOff p 76
return $ C'ftdi_context v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16
poke p (C'ftdi_context v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
pokeByteOff p 12 v3
pokeByteOff p 16 v4
pokeByteOff p 20 v5
pokeByteOff p 24 v6
pokeByteOff p 28 v7
pokeByteOff p 32 v8
pokeByteOff p 36 v9
pokeByteOff p 40 v10
pokeByteOff p 52 v11
pokeByteOff p 60 v12
pokeByteOff p 64 v13
pokeByteOff p 68 v14
pokeByteOff p 72 v15
pokeByteOff p 76 v16
return ()
data C'usb_device = C'usb_device
data C'ftdi_device_list = C'ftdi_device_list{
c'ftdi_device_list'next :: Ptr C'ftdi_device_list
,
c'ftdi_device_list'dev :: Ptr C'usb_device
} deriving (Eq,Show)
instance Storable C'ftdi_device_list where
sizeOf _ = 8
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
return $ C'ftdi_device_list v0 v1
poke p (C'ftdi_device_list v0 v1) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
return ()
data C'ftdi_eeprom = C'ftdi_eeprom{
c'ftdi_eeprom'vendor_id :: CInt
,
c'ftdi_eeprom'product_id :: CInt
,
c'ftdi_eeprom'self_powered :: CInt
,
c'ftdi_eeprom'remote_wakeup :: CInt
,
c'ftdi_eeprom'BM_type_chip :: CInt
,
c'ftdi_eeprom'in_is_isochronous :: CInt
,
c'ftdi_eeprom'out_is_isochronous :: CInt
,
c'ftdi_eeprom'suspend_pull_downs :: CInt
,
c'ftdi_eeprom'use_serial :: CInt
,
c'ftdi_eeprom'change_usb_version :: CInt
,
c'ftdi_eeprom'usb_version :: CInt
,
c'ftdi_eeprom'max_power :: CInt
,
c'ftdi_eeprom'manufacturer :: Ptr CChar
,
c'ftdi_eeprom'product :: Ptr CChar
,
c'ftdi_eeprom'serial :: Ptr CChar
,
c'ftdi_eeprom'size :: CInt
} deriving (Eq,Show)
instance Storable C'ftdi_eeprom where
sizeOf _ = 64
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
v3 <- peekByteOff p 12
v4 <- peekByteOff p 16
v5 <- peekByteOff p 20
v6 <- peekByteOff p 24
v7 <- peekByteOff p 28
v8 <- peekByteOff p 32
v9 <- peekByteOff p 36
v10 <- peekByteOff p 40
v11 <- peekByteOff p 44
v12 <- peekByteOff p 48
v13 <- peekByteOff p 52
v14 <- peekByteOff p 56
v15 <- peekByteOff p 60
return $ C'ftdi_eeprom v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15
poke p (C'ftdi_eeprom v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
pokeByteOff p 12 v3
pokeByteOff p 16 v4
pokeByteOff p 20 v5
pokeByteOff p 24 v6
pokeByteOff p 28 v7
pokeByteOff p 32 v8
pokeByteOff p 36 v9
pokeByteOff p 40 v10
pokeByteOff p 44 v11
pokeByteOff p 48 v12
pokeByteOff p 52 v13
pokeByteOff p 56 v14
pokeByteOff p 60 v15
return ()
foreign import ccall "ftdi_init" c'ftdi_init
:: Ptr C'ftdi_context -> IO CInt
foreign import ccall "&ftdi_init" p'ftdi_init
:: FunPtr (Ptr C'ftdi_context -> IO CInt)
foreign import ccall "ftdi_new" c'ftdi_new
:: IO ( Ptr C'ftdi_context )
foreign import ccall "&ftdi_new" p'ftdi_new
:: FunPtr (IO ( Ptr C'ftdi_context ))
foreign import ccall "ftdi_set_interface" c'ftdi_set_interface
:: Ptr C'ftdi_context -> C'ftdi_interface -> IO CInt
foreign import ccall "&ftdi_set_interface" p'ftdi_set_interface
:: FunPtr (Ptr C'ftdi_context -> C'ftdi_interface -> IO CInt)
foreign import ccall "ftdi_deinit" c'ftdi_deinit
:: Ptr C'ftdi_context -> IO ()
foreign import ccall "&ftdi_deinit" p'ftdi_deinit
:: FunPtr (Ptr C'ftdi_context -> IO ())
foreign import ccall "ftdi_free" c'ftdi_free
:: Ptr C'ftdi_context -> IO ()
foreign import ccall "&ftdi_free" p'ftdi_free
:: FunPtr (Ptr C'ftdi_context -> IO ())
foreign import ccall "ftdi_set_usbdev" c'ftdi_set_usbdev
:: Ptr C'ftdi_context -> Ptr C'usb_dev_handle -> IO ()
foreign import ccall "&ftdi_set_usbdev" p'ftdi_set_usbdev
:: FunPtr (Ptr C'ftdi_context -> Ptr C'usb_dev_handle -> IO ())
foreign import ccall "ftdi_usb_find_all" c'ftdi_usb_find_all
:: Ptr C'ftdi_context -> Ptr (Ptr C'ftdi_device_list) -> CInt -> CInt -> IO CInt
foreign import ccall "&ftdi_usb_find_all" p'ftdi_usb_find_all
:: FunPtr (Ptr C'ftdi_context -> Ptr (Ptr C'ftdi_device_list) -> CInt -> CInt -> IO CInt)
foreign import ccall "ftdi_list_free" c'ftdi_list_free
:: Ptr (Ptr C'ftdi_device_list) -> IO ()
foreign import ccall "&ftdi_list_free" p'ftdi_list_free
:: FunPtr (Ptr (Ptr C'ftdi_device_list) -> IO ())
foreign import ccall "ftdi_list_free2" c'ftdi_list_free2
:: Ptr C'ftdi_device_list -> IO ()
foreign import ccall "&ftdi_list_free2" p'ftdi_list_free2
:: FunPtr (Ptr C'ftdi_device_list -> IO ())
foreign import ccall "ftdi_usb_get_strings" c'ftdi_usb_get_strings
:: Ptr C'ftdi_context -> Ptr C'usb_device -> Ptr CChar -> CInt -> Ptr CChar -> CInt -> Ptr CChar -> CInt -> IO CInt
foreign import ccall "&ftdi_usb_get_strings" p'ftdi_usb_get_strings
:: FunPtr (Ptr C'ftdi_context -> Ptr C'usb_device -> Ptr CChar -> CInt -> Ptr CChar -> CInt -> Ptr CChar -> CInt -> IO CInt)
foreign import ccall "ftdi_usb_open" c'ftdi_usb_open
:: Ptr C'ftdi_context -> CInt -> CInt -> IO CInt
foreign import ccall "&ftdi_usb_open" p'ftdi_usb_open
:: FunPtr (Ptr C'ftdi_context -> CInt -> CInt -> IO CInt)
foreign import ccall "ftdi_usb_open_desc" c'ftdi_usb_open_desc
:: Ptr C'ftdi_context -> CInt -> CInt -> Ptr CChar -> Ptr CChar -> IO CInt
foreign import ccall "&ftdi_usb_open_desc" p'ftdi_usb_open_desc
:: FunPtr (Ptr C'ftdi_context -> CInt -> CInt -> Ptr CChar -> Ptr CChar -> IO CInt)
foreign import ccall "ftdi_usb_open_dev" c'ftdi_usb_open_dev
:: Ptr C'ftdi_context -> Ptr C'usb_device -> IO CInt
foreign import ccall "&ftdi_usb_open_dev" p'ftdi_usb_open_dev
:: FunPtr (Ptr C'ftdi_context -> Ptr C'usb_device -> IO CInt)
foreign import ccall "ftdi_usb_close" c'ftdi_usb_close
:: Ptr C'ftdi_context -> IO CInt
foreign import ccall "&ftdi_usb_close" p'ftdi_usb_close
:: FunPtr (Ptr C'ftdi_context -> IO CInt)
foreign import ccall "ftdi_usb_reset" c'ftdi_usb_reset
:: Ptr C'ftdi_context -> IO CInt
foreign import ccall "&ftdi_usb_reset" p'ftdi_usb_reset
:: FunPtr (Ptr C'ftdi_context -> IO CInt)
foreign import ccall "ftdi_usb_purge_rx_buffer" c'ftdi_usb_purge_rx_buffer
:: Ptr C'ftdi_context -> IO CInt
foreign import ccall "&ftdi_usb_purge_rx_buffer" p'ftdi_usb_purge_rx_buffer
:: FunPtr (Ptr C'ftdi_context -> IO CInt)
foreign import ccall "ftdi_usb_purge_tx_buffer" c'ftdi_usb_purge_tx_buffer
:: Ptr C'ftdi_context -> IO CInt
foreign import ccall "&ftdi_usb_purge_tx_buffer" p'ftdi_usb_purge_tx_buffer
:: FunPtr (Ptr C'ftdi_context -> IO CInt)
foreign import ccall "ftdi_usb_purge_buffers" c'ftdi_usb_purge_buffers
:: Ptr C'ftdi_context -> IO CInt
foreign import ccall "&ftdi_usb_purge_buffers" p'ftdi_usb_purge_buffers
:: FunPtr (Ptr C'ftdi_context -> IO CInt)
foreign import ccall "ftdi_set_baudrate" c'ftdi_set_baudrate
:: Ptr C'ftdi_context -> CInt -> IO CInt
foreign import ccall "&ftdi_set_baudrate" p'ftdi_set_baudrate
:: FunPtr (Ptr C'ftdi_context -> CInt -> IO CInt)
foreign import ccall "ftdi_set_line_property" c'ftdi_set_line_property
:: Ptr C'ftdi_context -> C'ftdi_bits_type -> C'ftdi_stopbits_type -> C'ftdi_parity_type -> IO CInt
foreign import ccall "&ftdi_set_line_property" p'ftdi_set_line_property
:: FunPtr (Ptr C'ftdi_context -> C'ftdi_bits_type -> C'ftdi_stopbits_type -> C'ftdi_parity_type -> IO CInt)
foreign import ccall "ftdi_set_line_property2" c'ftdi_set_line_property2
:: Ptr C'ftdi_context -> C'ftdi_bits_type -> C'ftdi_stopbits_type -> C'ftdi_parity_type -> C'ftdi_break_type -> IO CInt
foreign import ccall "&ftdi_set_line_property2" p'ftdi_set_line_property2
:: FunPtr (Ptr C'ftdi_context -> C'ftdi_bits_type -> C'ftdi_stopbits_type -> C'ftdi_parity_type -> C'ftdi_break_type -> IO CInt)
foreign import ccall "ftdi_read_data" c'ftdi_read_data
:: Ptr C'ftdi_context -> Ptr CUChar -> CInt -> IO CInt
foreign import ccall "&ftdi_read_data" p'ftdi_read_data
:: FunPtr (Ptr C'ftdi_context -> Ptr CUChar -> CInt -> IO CInt)
foreign import ccall "ftdi_read_data_set_chunksize" c'ftdi_read_data_set_chunksize
:: Ptr C'ftdi_context -> CUInt -> IO CInt
foreign import ccall "&ftdi_read_data_set_chunksize" p'ftdi_read_data_set_chunksize
:: FunPtr (Ptr C'ftdi_context -> CUInt -> IO CInt)
foreign import ccall "ftdi_read_data_get_chunksize" c'ftdi_read_data_get_chunksize
:: Ptr C'ftdi_context -> Ptr CUInt -> IO CInt
foreign import ccall "&ftdi_read_data_get_chunksize" p'ftdi_read_data_get_chunksize
:: FunPtr (Ptr C'ftdi_context -> Ptr CUInt -> IO CInt)
foreign import ccall "ftdi_write_data" c'ftdi_write_data
:: Ptr C'ftdi_context -> Ptr CUChar -> CUInt -> IO CInt
foreign import ccall "&ftdi_write_data" p'ftdi_write_data
:: FunPtr (Ptr C'ftdi_context -> Ptr CUChar -> CUInt -> IO CInt)
foreign import ccall "ftdi_write_data_set_chunksize" c'ftdi_write_data_set_chunksize
:: Ptr C'ftdi_context -> CUInt -> IO CInt
foreign import ccall "&ftdi_write_data_set_chunksize" p'ftdi_write_data_set_chunksize
:: FunPtr (Ptr C'ftdi_context -> CUInt -> IO CInt)
foreign import ccall "ftdi_write_data_get_chunksize" c'ftdi_write_data_get_chunksize
:: Ptr C'ftdi_context -> Ptr CUInt -> IO CInt
foreign import ccall "&ftdi_write_data_get_chunksize" p'ftdi_write_data_get_chunksize
:: FunPtr (Ptr C'ftdi_context -> Ptr CUInt -> IO CInt)
foreign import ccall "ftdi_write_data_async" c'ftdi_write_data_async
:: Ptr C'ftdi_context -> Ptr CUChar -> CInt -> IO CInt
foreign import ccall "&ftdi_write_data_async" p'ftdi_write_data_async
:: FunPtr (Ptr C'ftdi_context -> Ptr CUChar -> CInt -> IO CInt)
foreign import ccall "ftdi_async_complete" c'ftdi_async_complete
:: Ptr C'ftdi_context -> CInt -> IO ()
foreign import ccall "&ftdi_async_complete" p'ftdi_async_complete
:: FunPtr (Ptr C'ftdi_context -> CInt -> IO ())
foreign import ccall "ftdi_enable_bitbang" c'ftdi_enable_bitbang
:: Ptr C'ftdi_context -> CUChar -> IO CInt
foreign import ccall "&ftdi_enable_bitbang" p'ftdi_enable_bitbang
:: FunPtr (Ptr C'ftdi_context -> CUChar -> IO CInt)
foreign import ccall "ftdi_disable_bitbang" c'ftdi_disable_bitbang
:: Ptr C'ftdi_context -> IO CInt
foreign import ccall "&ftdi_disable_bitbang" p'ftdi_disable_bitbang
:: FunPtr (Ptr C'ftdi_context -> IO CInt)
foreign import ccall "ftdi_set_bitmode" c'ftdi_set_bitmode
:: Ptr C'ftdi_context -> CUChar -> CUChar -> IO CInt
foreign import ccall "&ftdi_set_bitmode" p'ftdi_set_bitmode
:: FunPtr (Ptr C'ftdi_context -> CUChar -> CUChar -> IO CInt)
foreign import ccall "ftdi_read_pins" c'ftdi_read_pins
:: Ptr C'ftdi_context -> CUChar -> IO CInt
foreign import ccall "&ftdi_read_pins" p'ftdi_read_pins
:: FunPtr (Ptr C'ftdi_context -> CUChar -> IO CInt)
foreign import ccall "ftdi_set_latency_timer" c'ftdi_set_latency_timer
:: Ptr C'ftdi_context -> CUChar -> IO CInt
foreign import ccall "&ftdi_set_latency_timer" p'ftdi_set_latency_timer
:: FunPtr (Ptr C'ftdi_context -> CUChar -> IO CInt)
foreign import ccall "ftdi_get_latency_timer" c'ftdi_get_latency_timer
:: Ptr C'ftdi_context -> Ptr CUChar -> IO CInt
foreign import ccall "&ftdi_get_latency_timer" p'ftdi_get_latency_timer
:: FunPtr (Ptr C'ftdi_context -> Ptr CUChar -> IO CInt)
foreign import ccall "ftdi_poll_modem_status" c'ftdi_poll_modem_status
:: Ptr C'ftdi_context -> Ptr CShort -> IO CInt
foreign import ccall "&ftdi_poll_modem_status" p'ftdi_poll_modem_status
:: FunPtr (Ptr C'ftdi_context -> Ptr CShort -> IO CInt)
foreign import ccall "ftdi_setflowctrl" c'ftdi_setflowctrl
:: Ptr C'ftdi_context -> CInt -> IO CInt
foreign import ccall "&ftdi_setflowctrl" p'ftdi_setflowctrl
:: FunPtr (Ptr C'ftdi_context -> CInt -> IO CInt)
foreign import ccall "ftdi_setdtr_rts" c'ftdi_setdtr_rts
:: Ptr C'ftdi_context -> CInt -> CInt -> IO CInt
foreign import ccall "&ftdi_setdtr_rts" p'ftdi_setdtr_rts
:: FunPtr (Ptr C'ftdi_context -> CInt -> CInt -> IO CInt)
foreign import ccall "ftdi_setdtr" c'ftdi_setdtr
:: Ptr C'ftdi_context -> CInt -> IO CInt
foreign import ccall "&ftdi_setdtr" p'ftdi_setdtr
:: FunPtr (Ptr C'ftdi_context -> CInt -> IO CInt)
foreign import ccall "ftdi_setrts" c'ftdi_setrts
:: Ptr C'ftdi_context -> CInt -> IO CInt
foreign import ccall "&ftdi_setrts" p'ftdi_setrts
:: FunPtr (Ptr C'ftdi_context -> CInt -> IO CInt)
foreign import ccall "ftdi_set_event_char" c'ftdi_set_event_char
:: Ptr C'ftdi_context -> CUChar -> CUChar -> IO CInt
foreign import ccall "&ftdi_set_event_char" p'ftdi_set_event_char
:: FunPtr (Ptr C'ftdi_context -> CUChar -> CUChar -> IO CInt)
foreign import ccall "ftdi_set_error_char" c'ftdi_set_error_char
:: Ptr C'ftdi_context -> CUChar -> CUChar -> IO CInt
foreign import ccall "&ftdi_set_error_char" p'ftdi_set_error_char
:: FunPtr (Ptr C'ftdi_context -> CUChar -> CUChar -> IO CInt)
foreign import ccall "ftdi_eeprom_setsize" c'ftdi_eeprom_setsize
:: Ptr C'ftdi_context -> Ptr C'ftdi_eeprom -> CInt -> IO ()
foreign import ccall "&ftdi_eeprom_setsize" p'ftdi_eeprom_setsize
:: FunPtr (Ptr C'ftdi_context -> Ptr C'ftdi_eeprom -> CInt -> IO ())
foreign import ccall "ftdi_eeprom_initdefaults" c'ftdi_eeprom_initdefaults
:: Ptr C'ftdi_eeprom -> IO ()
foreign import ccall "&ftdi_eeprom_initdefaults" p'ftdi_eeprom_initdefaults
:: FunPtr (Ptr C'ftdi_eeprom -> IO ())
foreign import ccall "ftdi_eeprom_build" c'ftdi_eeprom_build
:: Ptr C'ftdi_eeprom -> Ptr CUChar -> IO CInt
foreign import ccall "&ftdi_eeprom_build" p'ftdi_eeprom_build
:: FunPtr (Ptr C'ftdi_eeprom -> Ptr CUChar -> IO CInt)
foreign import ccall "ftdi_eeprom_decode" c'ftdi_eeprom_decode
:: Ptr C'ftdi_eeprom -> Ptr CUChar -> CInt -> IO CInt
foreign import ccall "&ftdi_eeprom_decode" p'ftdi_eeprom_decode
:: FunPtr (Ptr C'ftdi_eeprom -> Ptr CUChar -> CInt -> IO CInt)
foreign import ccall "ftdi_read_eeprom" c'ftdi_read_eeprom
:: Ptr C'ftdi_context -> Ptr CUChar -> IO CInt
foreign import ccall "&ftdi_read_eeprom" p'ftdi_read_eeprom
:: FunPtr (Ptr C'ftdi_context -> Ptr CUChar -> IO CInt)
foreign import ccall "ftdi_read_chipid" c'ftdi_read_chipid
:: Ptr C'ftdi_context -> Ptr CUInt -> IO CInt
foreign import ccall "&ftdi_read_chipid" p'ftdi_read_chipid
:: FunPtr (Ptr C'ftdi_context -> Ptr CUInt -> IO CInt)
foreign import ccall "ftdi_read_eeprom_getsize" c'ftdi_read_eeprom_getsize
:: Ptr C'ftdi_context -> Ptr CUChar -> CInt -> IO CInt
foreign import ccall "&ftdi_read_eeprom_getsize" p'ftdi_read_eeprom_getsize
:: FunPtr (Ptr C'ftdi_context -> Ptr CUChar -> CInt -> IO CInt)
foreign import ccall "ftdi_write_eeprom" c'ftdi_write_eeprom
:: Ptr C'ftdi_context -> Ptr CUChar -> IO CInt
foreign import ccall "&ftdi_write_eeprom" p'ftdi_write_eeprom
:: FunPtr (Ptr C'ftdi_context -> Ptr CUChar -> IO CInt)
foreign import ccall "ftdi_erase_eeprom" c'ftdi_erase_eeprom
:: Ptr C'ftdi_context -> IO CInt
foreign import ccall "&ftdi_erase_eeprom" p'ftdi_erase_eeprom
:: FunPtr (Ptr C'ftdi_context -> IO CInt)
foreign import ccall "ftdi_get_error_string" c'ftdi_get_error_string
:: Ptr C'ftdi_context -> IO (Ptr CChar)
foreign import ccall "&ftdi_get_error_string" p'ftdi_get_error_string
:: FunPtr (Ptr C'ftdi_context -> IO (Ptr CChar))