hlibBladeRF 0.1.0.2 → 0.1.0.3
raw patch · 7 files changed
+61/−88 lines, 7 filesdep −processdep −regex-compatdep ~base
Dependencies removed: process, regex-compat
Dependency ranges changed: base
Files
- ChangeLog +7/−0
- hlibBladeRF.cabal +14/−10
- src/LibBladeRF/Flash.hs +1/−1
- src/LibBladeRF/Sync.hs +26/−22
- src/LibBladeRF/Types.hs +2/−1
- src/LibBladeRF/Utils.hs +11/−18
- test-suite/Haddock.hs +0/−36
ChangeLog view
@@ -1,3 +1,10 @@+Changes in 0.1.0.3++* HLint clean project.+* When the interface is configured for the 'FORMAT_SC16_Q11'+ format there is no metadata and so the 'bladeRFSyncTx'+ action 'BladeRFMetadata' argument is a Maybe type.+ Changes in 0.1.0.2 * Minor cabal file fixes.
hlibBladeRF.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: hlibBladeRF-version: 0.1.0.2+version: 0.1.0.3 synopsis: Haskell binding to libBladeRF SDR library description: IO Monadic binding for libbladeRF software defined radio. homepage: https://victoredwardocallaghan.github.io/hlibBladeRF@@ -20,12 +20,13 @@ -------------------------------------------- -- Test suites ---test-suite haddock- build-depends: base, process, regex-compat- default-language: Haskell2010- hs-source-dirs: test-suite- main-is: Haddock.hs- type: exitcode-stdio-1.0+--test-suite haddock+-- build-depends: base, process, regex-compat+-- default-language: Haskell2010+-- hs-source-dirs: test-suite+-- main-is: Haddock.hs+-- type: exitcode-stdio-1.0+-- XXX disable until Haddock does not fail on bindings test-suite hlint build-depends: base, hlint@@ -35,7 +36,8 @@ type: exitcode-stdio-1.0 ---------------------------------------------+-- Library modules+-- library exposed-modules: LibBladeRF LibBladeRF.LibBladeRF@@ -68,9 +70,11 @@ c-sources: src/inlines.c default-language: Haskell2010 -+--------------------------------------------+-- Source repository+-- source-repository head type: git location: git://github.com/victoredwardocallaghan/hlibBladeRF branch: master- tag: v0.1.0.2+ tag: v0.1.0.3
src/LibBladeRF/Flash.hs view
@@ -32,7 +32,7 @@ -> Word32 -- ^ Erase block to start erasing at -> Word32 -- ^ Number of blocks to erase. -> IO CInt-bladeRFEraseFlash dev b c = c'bladerf_erase_flash (unDeviceHandle dev) b c+bladeRFEraseFlash dev = c'bladerf_erase_flash (unDeviceHandle dev) -- | Read data from the bladeRF's SPI flash. --
src/LibBladeRF/Sync.hs view
@@ -59,28 +59,32 @@ -- Samples will only be sent to the FPGA when a buffer have been filled. The -- number of samples required to fill a buffer corresponds to the `buffer_size` -- parameter passed to 'bladeRFSyncConfig'.-bladeRFSyncTx :: DeviceHandle -- ^ Device handle- -> BS.ByteString -- ^ Array of samples- -> Int -- ^ Number of samples to write- -> BladeRFMetadata -- ^ Sample metadata. This must be provided when using- -- the 'FORMAT_SC16_Q11_META' format, but may- -- be NULL when the interface is configured for- -- the 'FORMAT_SC16_Q11' format.- -> Int -- ^ Timeout (milliseconds) for this call to complete. Zero implies infinite.+bladeRFSyncTx :: DeviceHandle -- ^ Device handle+ -> BS.ByteString -- ^ Array of samples+ -> Int -- ^ Number of samples to write+ -> Maybe BladeRFMetadata -- ^ Sample metadata. This must be provided when using+ -- the 'FORMAT_SC16_Q11_META' format, but may+ -- be 'Nothing' when the interface is configured for+ -- the 'FORMAT_SC16_Q11' format.+ -> Int -- ^ Timeout (milliseconds) for this call to complete. Zero implies infinite. -> IO () bladeRFSyncTx dev s n md t = do--- Use the following instead when switching to ghc7.8 later..--- bladeRFMetadataToCBladeRFMetadata :: BladeRFMetadata -> C'bladerf_metadata- let meta = C'bladerf_metadata { c'bladerf_metadata'timestamp = timestamp md- , c'bladerf_metadata'flags = flags md- , c'bladerf_metadata'status = status md- , c'bladerf_metadata'actual_count = (fromIntegral . count) md- , c'bladerf_metadata'reserved = [0]- }- alloca $ \pmd -> do- poke pmd meta- BS.useAsCStringLen s $- \(p, _len) -> c'bladerf_sync_tx (unDeviceHandle dev) p (fromIntegral n) pmd (fromIntegral t)+ alloca $ \pmd ->+ case md of+ Nothing -> BS.useAsCStringLen s $+ \(p, _len) -> c'bladerf_sync_tx (unDeviceHandle dev) p (fromIntegral n) nullPtr (fromIntegral t)+ Just md -> do+ -- Use the following instead when switching to ghc7.8 later..+ -- bladeRFMetadataToCBladeRFMetadata :: BladeRFMetadata -> C'bladerf_metadata+ let meta = C'bladerf_metadata { c'bladerf_metadata'timestamp = timestamp md+ , c'bladerf_metadata'flags = flags md+ , c'bladerf_metadata'status = status md+ , c'bladerf_metadata'actual_count = (fromIntegral . count) md+ , c'bladerf_metadata'reserved = [0]+ }+ poke pmd meta+ BS.useAsCStringLen s $+ \(p, _len) -> c'bladerf_sync_tx (unDeviceHandle dev) p (fromIntegral n) pmd (fromIntegral t) return () -- XXX ignores ret -- | Receive IQ samples.@@ -98,8 +102,8 @@ peekArray (4 * n) ptr let bs = BS.pack par cmd <- peek pmd- -- Use the following instead when switching to ghc7.8 later..- -- bladeRFMetadataFromCBladeRFMetadata :: C'bladerf_metadata -> BladeRFMetadata + -- Use the following instead when switching to ghc7.8 later..+ -- bladeRFMetadataFromCBladeRFMetadata :: C'bladerf_metadata -> BladeRFMetadata let meta = BladeRFMetadata { timestamp = c'bladerf_metadata'timestamp cmd , flags = c'bladerf_metadata'flags cmd , status = c'bladerf_metadata'status cmd
src/LibBladeRF/Types.hs view
@@ -9,7 +9,8 @@ This module encapsulates types libbladeRF library functions. -} -{-# LANGUAGE Trustworthy, DeriveGeneric #-}+-- {-# LANGUAGE Trustworthy, DeriveGeneric #-}+{-# LANGUAGE Trustworthy #-} module LibBladeRF.Types ( BladeRFVersion(..) , BladeRFDeviceInfo(..)
src/LibBladeRF/Utils.hs view
@@ -31,6 +31,14 @@ import LibBladeRF.Types +-- internal use only+toBladeRFVer :: C'bladerf_version -> String -> BladeRFVersion+toBladeRFVer brfv desc = BladeRFVersion { major = c'bladerf_version'major brfv+ , minor = c'bladerf_version'minor brfv+ , patch = c'bladerf_version'patch brfv+ , descr = desc+ }+ -- | Get libbladeRF version information. bladeRFLibVersion :: IO BladeRFVersion bladeRFLibVersion = do@@ -38,12 +46,7 @@ c'bladerf_version p peek p desc <- peekCString $ c'bladerf_version'describe brfv- let ver = BladeRFVersion { major = c'bladerf_version'major brfv- , minor = c'bladerf_version'minor brfv- , patch = c'bladerf_version'patch brfv- , descr = desc- }- return ver+ return $ toBladeRFVer brfv desc -- | Query firmware version. bladeRFFwVersion :: DeviceHandle -- ^ Device handle@@ -53,12 +56,7 @@ c'bladerf_fw_version (unDeviceHandle dev) p peek p desc <- peekCString $ c'bladerf_version'describe brfv- let ver = BladeRFVersion { major = c'bladerf_version'major brfv- , minor = c'bladerf_version'minor brfv- , patch = c'bladerf_version'patch brfv- , descr = desc- }- return ver+ return $ toBladeRFVer brfv desc -- | Query FPGA version. bladeRFFPGAVersion :: DeviceHandle -- ^ Device handle@@ -70,12 +68,7 @@ c'bladerf_fpga_version (unDeviceHandle dev) p peek p desc <- peekCString $ c'bladerf_version'describe brfv- let ver = BladeRFVersion { major = c'bladerf_version'major brfv- , minor = c'bladerf_version'minor brfv- , patch = c'bladerf_version'patch brfv- , descr = desc- }- return ver+ return $ toBladeRFVer brfv desc else return BladeRFVersion { major = 0 , minor = 0
− test-suite/Haddock.hs
@@ -1,36 +0,0 @@-{-|- Module : $Header$- Copyright : (c) 2014 Edward O'Callaghan- License : LGPL-2.1- Maintainer : eocallaghan@alterapraxis.com- Stability : provisional- Portability : portable-- test-suite/Haddock.hs--}--module Main (main) where--import Data.List (genericLength)-import Data.Maybe (catMaybes)-import System.Exit (exitFailure, exitSuccess)-import System.Process (readProcess)-import Text.Regex (matchRegex, mkRegex)--average :: (Fractional a, Real b) => [b] -> a-average xs = realToFrac (sum xs) / genericLength xs--expected :: Fractional a => a-expected = 90--main :: IO ()-main = do- output <- readProcess "cabal" ["haddock"] ""- if average (match output) >= expected- then exitSuccess- else putStr output >> exitFailure--match :: String -> [Int]-match = fmap read . concat . catMaybes . fmap (matchRegex pattern) . lines- where- pattern = mkRegex "^ *([0-9]*)% "