0 | module Bindings.RtlSdr.Misc
2 | import Bindings.RtlSdr.Device
3 | import Bindings.RtlSdr.Error
4 | import Bindings.RtlSdr.Raw.Misc
8 | data TunerType = RTLSDR_TUNER_UNKNOWN | RTLSDR_TUNER_E4000 | RTLSDR_TUNER_FC0012 | RTLSDR_TUNER_FC0013 | RTLSDR_TUNER_FC2580 | RTLSDR_TUNER_R820T | RTLSDR_TUNER_R828D
11 | Show TunerType where
12 | show RTLSDR_TUNER_UNKNOWN = "Unknown"
13 | show RTLSDR_TUNER_E4000 = "E4000"
14 | show RTLSDR_TUNER_FC0012 = "FC0012"
15 | show RTLSDR_TUNER_FC0013 = "FC0013"
16 | show RTLSDR_TUNER_FC2580 = "FC2580"
17 | show RTLSDR_TUNER_R820T = "R820T"
18 | show RTLSDR_TUNER_R828D = "R828D"
20 | toTunerType : Int -> TunerType
21 | toTunerType 1 = RTLSDR_TUNER_E4000
22 | toTunerType 2 = RTLSDR_TUNER_FC0012
23 | toTunerType 3 = RTLSDR_TUNER_FC0013
24 | toTunerType 4 = RTLSDR_TUNER_FC2580
25 | toTunerType 5 = RTLSDR_TUNER_R820T
26 | toTunerType 6 = RTLSDR_TUNER_R828D
27 | toTunerType _ = RTLSDR_TUNER_UNKNOWN
33 | getTunerType : Ptr RtlSdrHandle -> TunerType
34 | getTunerType h = toTunerType $
get_tuner_type h
42 | setOffsetTuning : Ptr RtlSdrHandle -> Bool -> IO (Either RTLSDR_ERROR ())
43 | setOffsetTuning h t = do
44 | r <- fromPrim $
set_offset_tuning h (if t == False then 0 else 1)
45 | io_pure $
if r == 0 then Right () else Left RtlSdrError
51 | getOffsetTuning : Ptr RtlSdrHandle -> IO (Either RTLSDR_ERROR Bool)
52 | getOffsetTuning h = do
53 | r <- fromPrim $
get_offset_tuning h
54 | io_pure $
if r < 0 then Left RtlSdrError else Right (if r == 0 then False else True)
62 | setBiasTee : Ptr RtlSdrHandle -> Bool -> IO (Either RTLSDR_ERROR ())
64 | r <- fromPrim $
set_bias_tee h (if t == True then 1 else 0)
65 | io_pure $
if r == 0 then Right () else Left RtlSdrError
73 | setBiasTeeGpio : Ptr RtlSdrHandle -> Nat -> Bool -> IO (Either RTLSDR_ERROR ())
74 | setBiasTeeGpio h g t = do
75 | r <- fromPrim $
set_bias_tee_gpio h (cast {to = Int} g) (if t == True then 1 else 0)
76 | io_pure $
if r == 0 then Right () else Left RtlSdrError