{-# LINE 1 "src/Bindings/Libftdi.hsc" #-}

{-# LINE 2 "src/Bindings/Libftdi.hsc" #-}

{-# LINE 3 "src/Bindings/Libftdi.hsc" #-}

{-# LANGUAGE ForeignFunctionInterface#-}
-- | <http://libusb.sourceforge.net/api-1.0/group__dev.html>

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

{-# LINE 9 "src/Bindings/Libftdi.hsc" #-}

c'FTDI_DEFAULT_EEPROM_SIZE = 128
c'FTDI_DEFAULT_EEPROM_SIZE :: (Num a) => a

{-# LINE 11 "src/Bindings/Libftdi.hsc" #-}

type C'ftdi_chip_type = CUInt

{-# LINE 13 "src/Bindings/Libftdi.hsc" #-}
type C'ftdi_parity_type = CUInt

{-# LINE 14 "src/Bindings/Libftdi.hsc" #-}
type C'ftdi_stopbits_type = CUInt

{-# LINE 15 "src/Bindings/Libftdi.hsc" #-}
type C'ftdi_bits_type = CUInt

{-# LINE 16 "src/Bindings/Libftdi.hsc" #-}
type C'ftdi_break_type = CUInt

{-# LINE 17 "src/Bindings/Libftdi.hsc" #-}

type C'ftdi_mpsse_mode = CUInt

{-# LINE 19 "src/Bindings/Libftdi.hsc" #-}

type C'ftdi_interface = CUInt

{-# LINE 21 "src/Bindings/Libftdi.hsc" #-}

c'MPSSE_WRITE_NEG = 1
c'MPSSE_WRITE_NEG :: (Num a) => a

{-# LINE 23 "src/Bindings/Libftdi.hsc" #-}
c'MPSSE_BITMODE = 2
c'MPSSE_BITMODE :: (Num a) => a

{-# LINE 24 "src/Bindings/Libftdi.hsc" #-}
c'MPSSE_READ_NEG = 4
c'MPSSE_READ_NEG :: (Num a) => a

{-# LINE 25 "src/Bindings/Libftdi.hsc" #-}
c'MPSSE_LSB = 8
c'MPSSE_LSB :: (Num a) => a

{-# LINE 26 "src/Bindings/Libftdi.hsc" #-}
c'MPSSE_DO_WRITE = 16
c'MPSSE_DO_WRITE :: (Num a) => a

{-# LINE 27 "src/Bindings/Libftdi.hsc" #-}
c'MPSSE_DO_READ = 32
c'MPSSE_DO_READ :: (Num a) => a

{-# LINE 28 "src/Bindings/Libftdi.hsc" #-}
c'MPSSE_WRITE_TMS = 64
c'MPSSE_WRITE_TMS :: (Num a) => a

{-# LINE 29 "src/Bindings/Libftdi.hsc" #-}

c'SET_BITS_LOW = 128
c'SET_BITS_LOW :: (Num a) => a

{-# LINE 31 "src/Bindings/Libftdi.hsc" #-}
c'SET_BITS_HIGH = 130
c'SET_BITS_HIGH :: (Num a) => a

{-# LINE 32 "src/Bindings/Libftdi.hsc" #-}
c'GET_BITS_LOW = 129
c'GET_BITS_LOW :: (Num a) => a

{-# LINE 33 "src/Bindings/Libftdi.hsc" #-}
c'GET_BITS_HIGH = 131
c'GET_BITS_HIGH :: (Num a) => a

{-# LINE 34 "src/Bindings/Libftdi.hsc" #-}
c'LOOPBACK_START = 132
c'LOOPBACK_START :: (Num a) => a

{-# LINE 35 "src/Bindings/Libftdi.hsc" #-}
c'LOOPBACK_END = 133
c'LOOPBACK_END :: (Num a) => a

{-# LINE 36 "src/Bindings/Libftdi.hsc" #-}
c'TCK_DIVISOR = 134
c'TCK_DIVISOR :: (Num a) => a

{-# LINE 37 "src/Bindings/Libftdi.hsc" #-}
-- DIV_VALUE(rate) (rate > 6000000)?0:((6000000/rate -1) > 0xffff)? 0xffff: (6000000/rate -1)
divValue rate | rate > 6000000 = 0 
              | ((6000000/rate -1) > 0xffff) = 0xffff
              | otherwise = (6000000/rate -1)

c'SEND_IMMEDIATE = 135
c'SEND_IMMEDIATE :: (Num a) => a

{-# LINE 43 "src/Bindings/Libftdi.hsc" #-}
c'WAIT_ON_HIGH = 136
c'WAIT_ON_HIGH :: (Num a) => a

{-# LINE 44 "src/Bindings/Libftdi.hsc" #-}
c'WAIT_ON_LOW = 137
c'WAIT_ON_LOW :: (Num a) => a

{-# LINE 45 "src/Bindings/Libftdi.hsc" #-}

c'READ_SHORT = 144
c'READ_SHORT :: (Num a) => a

{-# LINE 47 "src/Bindings/Libftdi.hsc" #-}
c'READ_EXTENDED = 145
c'READ_EXTENDED :: (Num a) => a

{-# LINE 48 "src/Bindings/Libftdi.hsc" #-}
c'WRITE_SHORT = 146
c'WRITE_SHORT :: (Num a) => a

{-# LINE 49 "src/Bindings/Libftdi.hsc" #-}
c'WRITE_EXTENDED = 147
c'WRITE_EXTENDED :: (Num a) => a

{-# LINE 50 "src/Bindings/Libftdi.hsc" #-}

c'SIO_RESET = 0
c'SIO_RESET :: (Num a) => a

{-# LINE 52 "src/Bindings/Libftdi.hsc" #-}
c'SIO_MODEM_CTRL = 1
c'SIO_MODEM_CTRL :: (Num a) => a

{-# LINE 53 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_FLOW_CTRL = 2
c'SIO_SET_FLOW_CTRL :: (Num a) => a

{-# LINE 54 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_BAUD_RATE = 3
c'SIO_SET_BAUD_RATE :: (Num a) => a

{-# LINE 55 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_DATA = 4
c'SIO_SET_DATA :: (Num a) => a

{-# LINE 56 "src/Bindings/Libftdi.hsc" #-}

c'FTDI_DEVICE_OUT_REQTYPE = 64
c'FTDI_DEVICE_OUT_REQTYPE :: (Num a) => a

{-# LINE 58 "src/Bindings/Libftdi.hsc" #-}
c'FTDI_DEVICE_IN_REQTYPE = 192
c'FTDI_DEVICE_IN_REQTYPE :: (Num a) => a

{-# LINE 59 "src/Bindings/Libftdi.hsc" #-}

c'SIO_RESET_REQUEST = 0
c'SIO_RESET_REQUEST :: (Num a) => a

{-# LINE 61 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_BAUDRATE_REQUEST = 3
c'SIO_SET_BAUDRATE_REQUEST :: (Num a) => a

{-# LINE 62 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_DATA_REQUEST = 4
c'SIO_SET_DATA_REQUEST :: (Num a) => a

{-# LINE 63 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_FLOW_CTRL_REQUEST = 2
c'SIO_SET_FLOW_CTRL_REQUEST :: (Num a) => a

{-# LINE 64 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_MODEM_CTRL_REQUEST = 1
c'SIO_SET_MODEM_CTRL_REQUEST :: (Num a) => a

{-# LINE 65 "src/Bindings/Libftdi.hsc" #-}
c'SIO_POLL_MODEM_STATUS_REQUEST = 5
c'SIO_POLL_MODEM_STATUS_REQUEST :: (Num a) => a

{-# LINE 66 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_EVENT_CHAR_REQUEST = 6
c'SIO_SET_EVENT_CHAR_REQUEST :: (Num a) => a

{-# LINE 67 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_ERROR_CHAR_REQUEST = 7
c'SIO_SET_ERROR_CHAR_REQUEST :: (Num a) => a

{-# LINE 68 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_LATENCY_TIMER_REQUEST = 9
c'SIO_SET_LATENCY_TIMER_REQUEST :: (Num a) => a

{-# LINE 69 "src/Bindings/Libftdi.hsc" #-}
c'SIO_GET_LATENCY_TIMER_REQUEST = 10
c'SIO_GET_LATENCY_TIMER_REQUEST :: (Num a) => a

{-# LINE 70 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_BITMODE_REQUEST = 11
c'SIO_SET_BITMODE_REQUEST :: (Num a) => a

{-# LINE 71 "src/Bindings/Libftdi.hsc" #-}
c'SIO_READ_PINS_REQUEST = 12
c'SIO_READ_PINS_REQUEST :: (Num a) => a

{-# LINE 72 "src/Bindings/Libftdi.hsc" #-}
c'SIO_READ_EEPROM_REQUEST = 144
c'SIO_READ_EEPROM_REQUEST :: (Num a) => a

{-# LINE 73 "src/Bindings/Libftdi.hsc" #-}
c'SIO_WRITE_EEPROM_REQUEST = 145
c'SIO_WRITE_EEPROM_REQUEST :: (Num a) => a

{-# LINE 74 "src/Bindings/Libftdi.hsc" #-}
c'SIO_ERASE_EEPROM_REQUEST = 146
c'SIO_ERASE_EEPROM_REQUEST :: (Num a) => a

{-# LINE 75 "src/Bindings/Libftdi.hsc" #-}


c'SIO_RESET_SIO = 0
c'SIO_RESET_SIO :: (Num a) => a

{-# LINE 78 "src/Bindings/Libftdi.hsc" #-}
c'SIO_RESET_PURGE_RX = 1
c'SIO_RESET_PURGE_RX :: (Num a) => a

{-# LINE 79 "src/Bindings/Libftdi.hsc" #-}
c'SIO_RESET_PURGE_TX = 2
c'SIO_RESET_PURGE_TX :: (Num a) => a

{-# LINE 80 "src/Bindings/Libftdi.hsc" #-}

c'SIO_DISABLE_FLOW_CTRL = 0
c'SIO_DISABLE_FLOW_CTRL :: (Num a) => a

{-# LINE 82 "src/Bindings/Libftdi.hsc" #-}
c'SIO_RTS_CTS_HS = 256
c'SIO_RTS_CTS_HS :: (Num a) => a

{-# LINE 83 "src/Bindings/Libftdi.hsc" #-}
c'SIO_DTR_DSR_HS = 512
c'SIO_DTR_DSR_HS :: (Num a) => a

{-# LINE 84 "src/Bindings/Libftdi.hsc" #-}
c'SIO_XON_XOFF_HS = 1024
c'SIO_XON_XOFF_HS :: (Num a) => a

{-# LINE 85 "src/Bindings/Libftdi.hsc" #-}

c'SIO_SET_DTR_MASK = 1
c'SIO_SET_DTR_MASK :: (Num a) => a

{-# LINE 87 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_DTR_HIGH = 257
c'SIO_SET_DTR_HIGH :: (Num a) => a

{-# LINE 88 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_DTR_LOW = 256
c'SIO_SET_DTR_LOW :: (Num a) => a

{-# LINE 89 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_RTS_MASK = 2
c'SIO_SET_RTS_MASK :: (Num a) => a

{-# LINE 90 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_RTS_HIGH = 514
c'SIO_SET_RTS_HIGH :: (Num a) => a

{-# LINE 91 "src/Bindings/Libftdi.hsc" #-}
c'SIO_SET_RTS_LOW = 512
c'SIO_SET_RTS_LOW :: (Num a) => a

{-# LINE 92 "src/Bindings/Libftdi.hsc" #-}

c'FTDI_URB_USERCONTEXT_COOKIE = wordPtrToPtr 1
c'FTDI_URB_USERCONTEXT_COOKIE :: Ptr a

{-# LINE 94 "src/Bindings/Libftdi.hsc" #-}

data C'usb_dev_handle = C'usb_dev_handle

{-# LINE 96 "src/Bindings/Libftdi.hsc" #-}

data C'ftdi_context = C'ftdi_context{
{-# LINE 98 "src/Bindings/Libftdi.hsc" #-}

  c'ftdi_context'usb_dev :: Ptr C'usb_dev_handle
{-# LINE 99 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'usb_read_timeout :: CInt
{-# LINE 100 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'usb_write_timeout :: CInt
{-# LINE 101 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'type :: C'ftdi_chip_type
{-# LINE 102 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'baudrate :: CInt
{-# LINE 103 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'bitbang_enabled :: CUChar
{-# LINE 104 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'readbuffer :: Ptr CUChar
{-# LINE 105 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'readbuffer_offset :: CUInt
{-# LINE 106 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'readbuffer_remaining :: CUInt
{-# LINE 107 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'readbuffer_chunksize :: CUInt
{-# LINE 108 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'writebuffer_chunksize :: CUInt
{-# LINE 109 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'in_ep :: CInt
{-# LINE 110 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'bitbang_mode :: CUChar
{-# LINE 111 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'eeprom_size :: CInt
{-# LINE 112 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'error_str :: Ptr CChar
{-# LINE 113 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'async_usb_buffer :: Ptr CChar
{-# LINE 114 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_context'async_usb_buffer_size :: CUInt
{-# LINE 115 "src/Bindings/Libftdi.hsc" #-}

 } 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 ()

{-# LINE 116 "src/Bindings/Libftdi.hsc" #-}

data C'usb_device = C'usb_device

{-# LINE 118 "src/Bindings/Libftdi.hsc" #-}

data C'ftdi_device_list = C'ftdi_device_list{
{-# LINE 120 "src/Bindings/Libftdi.hsc" #-}

  c'ftdi_device_list'next :: Ptr C'ftdi_device_list
{-# LINE 121 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_device_list'dev :: Ptr C'usb_device
{-# LINE 122 "src/Bindings/Libftdi.hsc" #-}

 } 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 ()

{-# LINE 123 "src/Bindings/Libftdi.hsc" #-}

data C'ftdi_eeprom = C'ftdi_eeprom{
{-# LINE 125 "src/Bindings/Libftdi.hsc" #-}

  c'ftdi_eeprom'vendor_id :: CInt
{-# LINE 126 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_eeprom'product_id :: CInt
{-# LINE 127 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_eeprom'self_powered :: CInt
{-# LINE 128 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_eeprom'remote_wakeup :: CInt
{-# LINE 129 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_eeprom'BM_type_chip :: CInt
{-# LINE 130 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_eeprom'in_is_isochronous :: CInt
{-# LINE 131 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_eeprom'out_is_isochronous :: CInt
{-# LINE 132 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_eeprom'suspend_pull_downs :: CInt
{-# LINE 133 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_eeprom'use_serial :: CInt
{-# LINE 134 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_eeprom'change_usb_version :: CInt
{-# LINE 135 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_eeprom'usb_version :: CInt
{-# LINE 136 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_eeprom'max_power :: CInt
{-# LINE 137 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_eeprom'manufacturer :: Ptr CChar
{-# LINE 138 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_eeprom'product :: Ptr CChar
{-# LINE 139 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_eeprom'serial :: Ptr CChar
{-# LINE 140 "src/Bindings/Libftdi.hsc" #-}
,
  c'ftdi_eeprom'size :: CInt
{-# LINE 141 "src/Bindings/Libftdi.hsc" #-}

 } 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 ()

{-# LINE 142 "src/Bindings/Libftdi.hsc" #-}

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)

{-# LINE 144 "src/Bindings/Libftdi.hsc" #-}
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 ))

{-# LINE 145 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 146 "src/Bindings/Libftdi.hsc" #-}
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 ())

{-# LINE 147 "src/Bindings/Libftdi.hsc" #-}
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 ())

{-# LINE 148 "src/Bindings/Libftdi.hsc" #-}
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 ())

{-# LINE 149 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 150 "src/Bindings/Libftdi.hsc" #-}
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 ())

{-# LINE 151 "src/Bindings/Libftdi.hsc" #-}
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 ())

{-# LINE 152 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 153 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 154 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 155 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 156 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 157 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 158 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 159 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 160 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 161 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 162 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 163 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 164 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 165 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 166 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 167 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 168 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 169 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 170 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 171 "src/Bindings/Libftdi.hsc" #-}
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 ())

{-# LINE 172 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 173 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 174 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 175 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 176 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 177 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 178 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 179 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 180 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 181 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 182 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 183 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 184 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 185 "src/Bindings/Libftdi.hsc" #-}
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 ())

{-# LINE 186 "src/Bindings/Libftdi.hsc" #-}
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 ())

{-# LINE 187 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 188 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 189 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 190 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 191 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 192 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 193 "src/Bindings/Libftdi.hsc" #-}
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)

{-# LINE 194 "src/Bindings/Libftdi.hsc" #-}
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))

{-# LINE 195 "src/Bindings/Libftdi.hsc" #-}