0 | module Bindings.RtlSdr.Raw.Device
 1 |
 2 | import System.FFI
 3 |
 4 | %default total
 5 |
 6 | -- Device handle data type.
 7 | export
 8 | -- data RtlSdrHandle = MkDevice AnyPtr
 9 | data RtlSdrHandle : Type where [external]
10 |
11 | -- librtlsdr binding helper.
12 | public export
13 | librtlsdr : String -> String
14 | librtlsdr fn = "C:" ++ "rtlsdr_" ++ fn ++ ",librtlsdr"
15 |
16 | --RTLSDR_API int rtlsdr_get_device_usb_strings(uint32_t index,
17 | --      char *manufact,
18 | --      char *product,
19 | --      char *serial);
20 | export
21 | %foreign (librtlsdr "get_device_usb_strings")
22 | get_device_usb_strings: Int -> Ptr String -> Ptr String -> Ptr String -> Int
23 |
24 | -- RTLSDR_API uint32_t rtlsdr_get_device_count(void);
25 | export
26 | %foreign (librtlsdr "get_device_count")
27 | get_device_count: Int
28 |
29 | -- RTLSDR_API const char* rtlsdr_get_device_name(uint32_t index);
30 | export
31 | %foreign (librtlsdr "get_device_name")
32 | get_device_name: Int -> String
33 |
34 | -- RTLSDR_API int rtlsdr_get_index_by_serial(const char *serial);
35 | export
36 | %foreign (librtlsdr "get_index_by_serial")
37 | get_index_by_serial: String -> Int
38 |
39 | -- RTLSDR_API int rtlsdr_open(rtlsdr_dev_t **dev, uint32_t index);
40 | export
41 | %foreign (librtlsdr "open")
42 | open_prim: Ptr RtlSdrHandle -> Int -> PrimIO Int
43 |
44 | -- RTLSDR_API int rtlsdr_close(rtlsdr_dev_t *dev);
45 | export
46 | %foreign (librtlsdr "close")
47 | close: Ptr RtlSdrHandle -> PrimIO Int
48 |