hlibBladeRF 0.1.0.0 → 0.1.0.1
raw patch · 2 files changed
+26/−24 lines, 2 files
Files
- hlibBladeRF.cabal +13/−15
- src/LibBladeRF/Flash.hs +13/−9
hlibBladeRF.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: hlibBladeRF-version: 0.1.0.0+version: 0.1.0.1 synopsis: Haskell binding to libBladeRF SDR library description: IO Monadic binding for libbladeRF software defined radio. homepage: https://victoredwardocallaghan.github.io/hlibBladeRF@@ -37,18 +37,7 @@ -------------------------------------------- library- exposed-modules: Bindings.LibBladeRF- Bindings.LibBladeRF.LibBladeRF- Bindings.LibBladeRF.Utils- Bindings.LibBladeRF.Flash- Bindings.LibBladeRF.Si5338- Bindings.LibBladeRF.Sync- Bindings.LibBladeRF.Lms- Bindings.LibBladeRF.Gain- Bindings.LibBladeRF.Gpio- Bindings.LibBladeRF.Types-- LibBladeRF+ exposed-modules: LibBladeRF LibBladeRF.LibBladeRF LibBladeRF.Sampling LibBladeRF.Sync@@ -58,7 +47,17 @@ LibBladeRF.Frequency LibBladeRF.Utils LibBladeRF.Types- -- other-modules: ++ other-modules: Bindings.LibBladeRF+ Bindings.LibBladeRF.LibBladeRF+ Bindings.LibBladeRF.Utils+ Bindings.LibBladeRF.Flash+ Bindings.LibBladeRF.Si5338+ Bindings.LibBladeRF.Sync+ Bindings.LibBladeRF.Lms+ Bindings.LibBladeRF.Gain+ Bindings.LibBladeRF.Gpio+ Bindings.LibBladeRF.Types -- other-extensions: default-extensions: ForeignFunctionInterface build-depends: base >=4 && <4.8,@@ -74,4 +73,3 @@ type: git location: git://github.com/victoredwardocallaghan/hlibBladeRF branch: master- subdir: bindings-hlibbladeRF
src/LibBladeRF/Flash.hs view
@@ -12,13 +12,15 @@ module LibBladeRF.Flash ( bladeRFEraseFlash , bladeRFReadFlash--- , bladeRFWriteFlash+ , bladeRFWriteFlash ) where import Foreign import Foreign.C.Types import Foreign.C.String +import qualified Data.ByteString as BS+ import Bindings.LibBladeRF import LibBladeRF.LibBladeRF @@ -47,11 +49,13 @@ return (ret, buffer) -- | Write data from the bladeRF's SPI flash--- FIXME - how to pass in a buffer of data???---bladeRFWriteFlash :: DeviceHandle -> Word32 -> Word32 -> IO (CInt, Word8)---bladeRFWriteFlash dev p c = do--- bptr <- malloc :: IO (Ptr Word8)--- ret <- c'bladerf_write_flash (unDeviceHandle dev) bptr p c--- buffer <- peek bptr--- free bptr--- return (ret, buffer)+-- XXX - Buffer allocation size must be `page` * BLADERF_FLASH_PAGE_SIZE bytes or larger.+bladeRFWriteFlash :: DeviceHandle -- ^ Device handle+ -> BS.ByteString -- ^ Data to write to flash+ -> Word32 -- ^ page Page to begin writing at+ -> Word32 -- ^ count+ -> IO ()+bladeRFWriteFlash dev b p c = allocaBytes (fromIntegral $ p * c'BLADERF_FLASH_PAGE_SIZE) $ \bptr -> do+ pokeArray bptr (BS.unpack b) -- XXX can we overflow here??+ _ <- c'bladerf_write_flash (unDeviceHandle dev) bptr p c+ return () -- ignore ret