module LibBladeRF.Flash ( bladeRFEraseFlash
, bladeRFReadFlash
, bladeRFWriteFlash
) where
import Foreign
import Foreign.C.Types
import Foreign.C.String
import qualified Data.ByteString as BS
import Bindings.LibBladeRF
import LibBladeRF.LibBladeRF
bladeRFEraseFlash :: DeviceHandle
-> Word32
-> Word32
-> IO (BladeRFReturnType ())
bladeRFEraseFlash dev b n = do
ret <- c'bladerf_erase_flash (unDeviceHandle dev) b n
return $ bladeRFErrorTy ret
bladeRFReadFlash :: DeviceHandle
-> Word32
-> Word32
-> IO (CInt, Word8)
bladeRFReadFlash dev p c = alloca $ \bptr -> do
ret <- c'bladerf_read_flash (unDeviceHandle dev) bptr p c
buffer <- peek bptr
return (ret, buffer)
bladeRFWriteFlash :: DeviceHandle
-> BS.ByteString
-> Word32
-> Word32
-> IO (BladeRFReturnType ())
bladeRFWriteFlash dev b p c = allocaBytes (fromIntegral $ p * c'BLADERF_FLASH_PAGE_SIZE) $ \bptr -> do
pokeArray bptr (BS.unpack b)
ret <- c'bladerf_write_flash (unDeviceHandle dev) bptr p c
return $ bladeRFErrorTy ret