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

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

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

{-# OPTIONS_HADDOCK hide #-}

module Bindings.LibBladeRF.LibBladeRF 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.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word

{-# LINE 9 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}
import Bindings.LibBladeRF.Types


foreign import ccall "bladerf_get_device_list" c'bladerf_get_device_list
  :: Ptr (Ptr C'bladerf_devinfo) -> IO (CInt)
foreign import ccall "&bladerf_get_device_list" p'bladerf_get_device_list
  :: FunPtr (Ptr (Ptr C'bladerf_devinfo) -> IO (CInt))

{-# LINE 13 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_free_device_list" c'bladerf_free_device_list
  :: Ptr (C'bladerf_devinfo) -> IO ()
foreign import ccall "&bladerf_free_device_list" p'bladerf_free_device_list
  :: FunPtr (Ptr (C'bladerf_devinfo) -> IO ())

{-# LINE 15 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}


foreign import ccall "bladerf_open_with_devinfo" c'bladerf_open_with_devinfo
  :: Ptr (Ptr C'bladerf) -> Ptr (C'bladerf_devinfo) -> IO (CInt)
foreign import ccall "&bladerf_open_with_devinfo" p'bladerf_open_with_devinfo
  :: FunPtr (Ptr (Ptr C'bladerf) -> Ptr (C'bladerf_devinfo) -> IO (CInt))

{-# LINE 18 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}


foreign import ccall "bladerf_open" c'bladerf_open
  :: Ptr (Ptr C'bladerf) -> Ptr (CChar) -> IO (CInt)
foreign import ccall "&bladerf_open" p'bladerf_open
  :: FunPtr (Ptr (Ptr C'bladerf) -> Ptr (CChar) -> IO (CInt))

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

foreign import ccall "bladerf_close" c'bladerf_close
  :: Ptr (C'bladerf) -> IO ()
foreign import ccall "&bladerf_close" p'bladerf_close
  :: FunPtr (Ptr (C'bladerf) -> IO ())

{-# LINE 23 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

-- #ccall bladerf_set_usb_reset_on_open , CShort -> IO ()

foreign import ccall "bladerf_init_devinfo" c'bladerf_init_devinfo
  :: Ptr (C'bladerf_devinfo) -> IO ()
foreign import ccall "&bladerf_init_devinfo" p'bladerf_init_devinfo
  :: FunPtr (Ptr (C'bladerf_devinfo) -> IO ())

{-# LINE 27 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_get_devinfo" c'bladerf_get_devinfo
  :: Ptr (C'bladerf) -> Ptr (C'bladerf_devinfo) -> IO (CInt)
foreign import ccall "&bladerf_get_devinfo" p'bladerf_get_devinfo
  :: FunPtr (Ptr (C'bladerf) -> Ptr (C'bladerf_devinfo) -> IO (CInt))

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

foreign import ccall "bladerf_get_devinfo_from_str" c'bladerf_get_devinfo_from_str
  :: Ptr (CChar) -> Ptr (C'bladerf_devinfo) -> IO (CInt)
foreign import ccall "&bladerf_get_devinfo_from_str" p'bladerf_get_devinfo_from_str
  :: FunPtr (Ptr (CChar) -> Ptr (C'bladerf_devinfo) -> IO (CInt))

{-# LINE 31 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_devinfo_matches" c'bladerf_devinfo_matches
  :: Ptr (C'bladerf_devinfo) -> Ptr (C'bladerf_devinfo) -> IO (CShort)
foreign import ccall "&bladerf_devinfo_matches" p'bladerf_devinfo_matches
  :: FunPtr (Ptr (C'bladerf_devinfo) -> Ptr (C'bladerf_devinfo) -> IO (CShort))

{-# LINE 33 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_devstr_matches" c'bladerf_devstr_matches
  :: Ptr (CChar) -> Ptr (C'bladerf_devinfo) -> IO (CShort)
foreign import ccall "&bladerf_devstr_matches" p'bladerf_devstr_matches
  :: FunPtr (Ptr (CChar) -> Ptr (C'bladerf_devinfo) -> IO (CShort))

{-# LINE 35 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_backend_str" c'bladerf_backend_str
  :: C'bladerf_backend -> IO (Ptr (CChar))
foreign import ccall "&bladerf_backend_str" p'bladerf_backend_str
  :: FunPtr (C'bladerf_backend -> IO (Ptr (CChar)))

{-# LINE 37 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}



foreign import ccall "bladerf_enable_module" c'bladerf_enable_module
  :: Ptr (C'bladerf) -> C'bladerf_module -> Bool -> IO CInt
foreign import ccall "&bladerf_enable_module" p'bladerf_enable_module
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> Bool -> IO CInt)

{-# LINE 41 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_set_loopback" c'bladerf_set_loopback
  :: Ptr (C'bladerf) -> C'bladerf_loopback -> CInt
foreign import ccall "&bladerf_set_loopback" p'bladerf_set_loopback
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_loopback -> CInt)

{-# LINE 43 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}
foreign import ccall "bladerf_get_loopback" c'bladerf_get_loopback
  :: Ptr (C'bladerf) -> Ptr (C'bladerf_loopback) -> CInt
foreign import ccall "&bladerf_get_loopback" p'bladerf_get_loopback
  :: FunPtr (Ptr (C'bladerf) -> Ptr (C'bladerf_loopback) -> CInt)

{-# LINE 44 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

-- #ccall bladerf_set_sample_rate , Ptr (<bladerf>) -> <bladerf_module> -> CUInt -> Ptr (CUInt) -> CInt

-- #ccall bladerf_set_sample_rate , Ptr (<bladerf>) -> <bladerf_module> -> Ptr (<bladerf_rational_rate>) -> Ptr (<bladerf_rational_rate>) -> CInt

foreign import ccall "bladerf_set_sampling" c'bladerf_set_sampling
  :: Ptr (C'bladerf) -> C'bladerf_sampling -> CInt
foreign import ccall "&bladerf_set_sampling" p'bladerf_set_sampling
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_sampling -> CInt)

{-# LINE 50 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}
foreign import ccall "bladerf_get_sampling" c'bladerf_get_sampling
  :: Ptr (C'bladerf) -> Ptr (C'bladerf_sampling) -> CInt
foreign import ccall "&bladerf_get_sampling" p'bladerf_get_sampling
  :: FunPtr (Ptr (C'bladerf) -> Ptr (C'bladerf_sampling) -> CInt)

{-# LINE 51 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_set_sample_rate" c'bladerf_set_sample_rate
  :: Ptr (C'bladerf) -> C'bladerf_module -> CUInt -> Ptr (CUInt) -> IO (CInt)
foreign import ccall "&bladerf_set_sample_rate" p'bladerf_set_sample_rate
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> CUInt -> Ptr (CUInt) -> IO (CInt))

{-# LINE 53 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}
foreign import ccall "bladerf_get_sample_rate" c'bladerf_get_sample_rate
  :: Ptr (C'bladerf) -> C'bladerf_module -> Ptr (CUInt) -> CInt
foreign import ccall "&bladerf_get_sample_rate" p'bladerf_get_sample_rate
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> Ptr (CUInt) -> CInt)

{-# LINE 54 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_set_rational_sample_rate" c'bladerf_set_rational_sample_rate
  :: Ptr (C'bladerf) -> C'bladerf_module -> Ptr (C'bladerf_rational_rate) -> Ptr (C'bladerf_rational_rate) -> IO (CInt)
foreign import ccall "&bladerf_set_rational_sample_rate" p'bladerf_set_rational_sample_rate
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> Ptr (C'bladerf_rational_rate) -> Ptr (C'bladerf_rational_rate) -> IO (CInt))

{-# LINE 56 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}
foreign import ccall "bladerf_get_rational_sample_rate" c'bladerf_get_rational_sample_rate
  :: Ptr (C'bladerf) -> C'bladerf_module -> Ptr (C'bladerf_rational_rate) -> CInt
foreign import ccall "&bladerf_get_rational_sample_rate" p'bladerf_get_rational_sample_rate
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> Ptr (C'bladerf_rational_rate) -> CInt)

{-# LINE 57 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_set_correction" c'bladerf_set_correction
  :: Ptr (C'bladerf) ->C'bladerf_module -> C'bladerf_correction -> Word16 -> IO (CInt)
foreign import ccall "&bladerf_set_correction" p'bladerf_set_correction
  :: FunPtr (Ptr (C'bladerf) ->C'bladerf_module -> C'bladerf_correction -> Word16 -> IO (CInt))

{-# LINE 59 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}
foreign import ccall "bladerf_get_correction" c'bladerf_get_correction
  :: Ptr (C'bladerf) ->C'bladerf_module -> C'bladerf_correction -> Ptr (Word16) -> IO (CInt)
foreign import ccall "&bladerf_get_correction" p'bladerf_get_correction
  :: FunPtr (Ptr (C'bladerf) ->C'bladerf_module -> C'bladerf_correction -> Ptr (Word16) -> IO (CInt))

{-# LINE 60 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}


foreign import ccall "bladerf_set_bandwidth" c'bladerf_set_bandwidth
  :: Ptr (C'bladerf) -> C'bladerf_module -> CUInt -> Ptr (CUInt) -> IO (CInt)
foreign import ccall "&bladerf_set_bandwidth" p'bladerf_set_bandwidth
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> CUInt -> Ptr (CUInt) -> IO (CInt))

{-# LINE 63 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}
foreign import ccall "bladerf_get_bandwidth" c'bladerf_get_bandwidth
  :: Ptr (C'bladerf) -> C'bladerf_module -> Ptr (CUInt) -> CInt
foreign import ccall "&bladerf_get_bandwidth" p'bladerf_get_bandwidth
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> Ptr (CUInt) -> CInt)

{-# LINE 64 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_set_lpf_mode" c'bladerf_set_lpf_mode
  :: Ptr (C'bladerf) -> C'bladerf_module -> C'bladerf_lpf_mode -> CInt
foreign import ccall "&bladerf_set_lpf_mode" p'bladerf_set_lpf_mode
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> C'bladerf_lpf_mode -> CInt)

{-# LINE 66 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}
foreign import ccall "bladerf_get_lpf_mode" c'bladerf_get_lpf_mode
  :: Ptr (C'bladerf) -> C'bladerf_module -> Ptr (C'bladerf_lpf_mode) -> CInt
foreign import ccall "&bladerf_get_lpf_mode" p'bladerf_get_lpf_mode
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> Ptr (C'bladerf_lpf_mode) -> CInt)

{-# LINE 67 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_select_band" c'bladerf_select_band
  :: Ptr (C'bladerf) -> C'bladerf_module -> CUInt -> CInt
foreign import ccall "&bladerf_select_band" p'bladerf_select_band
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> CUInt -> CInt)

{-# LINE 69 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_set_frequency" c'bladerf_set_frequency
  :: Ptr (C'bladerf) -> C'bladerf_module -> CUInt -> IO (CInt)
foreign import ccall "&bladerf_set_frequency" p'bladerf_set_frequency
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> CUInt -> IO (CInt))

{-# LINE 71 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}
foreign import ccall "bladerf_get_frequency" c'bladerf_get_frequency
  :: Ptr (C'bladerf) -> C'bladerf_module -> Ptr (CUInt) -> IO (CInt)
foreign import ccall "&bladerf_get_frequency" p'bladerf_get_frequency
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> Ptr (CUInt) -> IO (CInt))

{-# LINE 72 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_dac_write" c'bladerf_dac_write
  :: Ptr (C'bladerf) -> Word16 -> IO (CInt)
foreign import ccall "&bladerf_dac_write" p'bladerf_dac_write
  :: FunPtr (Ptr (C'bladerf) -> Word16 -> IO (CInt))

{-# LINE 74 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_expansion_attach" c'bladerf_expansion_attach
  :: Ptr (C'bladerf) -> C'bladerf_xb -> CInt
foreign import ccall "&bladerf_expansion_attach" p'bladerf_expansion_attach
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_xb -> CInt)

{-# LINE 76 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_expansion_get_attached" c'bladerf_expansion_get_attached
  :: Ptr (C'bladerf) -> Ptr (C'bladerf_xb) -> CInt
foreign import ccall "&bladerf_expansion_get_attached" p'bladerf_expansion_get_attached
  :: FunPtr (Ptr (C'bladerf) -> Ptr (C'bladerf_xb) -> CInt)

{-# LINE 78 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_xb200_set_filterbank" c'bladerf_xb200_set_filterbank
  :: Ptr (C'bladerf) -> C'bladerf_module -> C'bladerf_xb200_filter -> CInt
foreign import ccall "&bladerf_xb200_set_filterbank" p'bladerf_xb200_set_filterbank
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> C'bladerf_xb200_filter -> CInt)

{-# LINE 80 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}
foreign import ccall "bladerf_xb200_get_filterbank" c'bladerf_xb200_get_filterbank
  :: Ptr (C'bladerf) -> C'bladerf_module -> Ptr (C'bladerf_xb200_filter) -> CInt
foreign import ccall "&bladerf_xb200_get_filterbank" p'bladerf_xb200_get_filterbank
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> Ptr (C'bladerf_xb200_filter) -> CInt)

{-# LINE 81 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}

foreign import ccall "bladerf_xb200_set_path" c'bladerf_xb200_set_path
  :: Ptr (C'bladerf) -> C'bladerf_module -> C'bladerf_xb200_path -> CInt
foreign import ccall "&bladerf_xb200_set_path" p'bladerf_xb200_set_path
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> C'bladerf_xb200_path -> CInt)

{-# LINE 83 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}
foreign import ccall "bladerf_xb200_get_path" c'bladerf_xb200_get_path
  :: Ptr (C'bladerf) -> C'bladerf_module -> Ptr (C'bladerf_xb200_path) -> CInt
foreign import ccall "&bladerf_xb200_get_path" p'bladerf_xb200_get_path
  :: FunPtr (Ptr (C'bladerf) -> C'bladerf_module -> Ptr (C'bladerf_xb200_path) -> CInt)

{-# LINE 84 "src/Bindings/LibBladeRF/LibBladeRF.hsc" #-}