module LibBladeRF.Frequency ( bladeRFDACWrite
, bladeRFGetFrequency
, bladeRFSetFrequency
, bladeRFGetCorrection
, bladeRFSetCorrection
) where
import Foreign
import Foreign.C.Types
import Foreign.C.String
import Bindings.LibBladeRF
import LibBladeRF.LibBladeRF
import LibBladeRF.Types
bladeRFDACWrite :: DeviceHandle
-> Word16
-> IO (BladeRFReturnType ())
bladeRFDACWrite dev v = do
ret <- c'bladerf_dac_write (unDeviceHandle dev) v
return $ bladeRFErrorTy ret
bladeRFGetFrequency :: DeviceHandle
-> BladeRFModule
-> IO (BladeRFReturnType Int)
bladeRFGetFrequency dev m = alloca $ \pf -> do
ret <- c'bladerf_get_frequency (unDeviceHandle dev) ((fromIntegral . fromEnum) m) pf
if ret < 0 then (return . Left . toEnum . fromIntegral) ret
else do freq <- peek pf
(return . Right . fromIntegral) freq
bladeRFSetFrequency :: DeviceHandle
-> BladeRFModule
-> Int
-> IO (BladeRFReturnType ())
bladeRFSetFrequency dev m f = do
ret <- c'bladerf_set_frequency (unDeviceHandle dev) ((fromIntegral . fromEnum) m) (fromIntegral f)
return $ bladeRFErrorTy ret
bladeRFGetCorrection :: DeviceHandle
-> BladeRFModule
-> BladeRFCorrection
-> IO (BladeRFReturnType Word16)
bladeRFGetCorrection dev m c = alloca $ \pc -> do
ret <- c'bladerf_get_correction (unDeviceHandle dev) ((fromIntegral . fromEnum) m) ((fromIntegral . fromEnum) c) pc
if ret < 0 then (return . Left . toEnum . fromIntegral) ret
else do corr <- peek pc
(return . Right) corr
bladeRFSetCorrection :: DeviceHandle
-> BladeRFModule
-> BladeRFCorrection
-> Word16
-> IO (BladeRFReturnType ())
bladeRFSetCorrection dev m c v = do
ret <- c'bladerf_set_correction (unDeviceHandle dev) ((fromIntegral . fromEnum) m) ((fromIntegral . fromEnum) c) v
return $ bladeRFErrorTy ret