aboutsummaryrefslogtreecommitdiffstats
path: root/airspyhf/airspyhf.py
blob: 4314c76f28d6b73b902e0f5f403f7437e523f29f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from .libairspyhf import *
from ctypes import *

class AirSpyHF:
    dev_p = airspyhf_device_t_p(None)
    sample_rates = []
    def __init__(self,):
        self.dev_p = None

    def open(self, device_index:int=None, serialnumber:int=None):
        if serialnumber is not None:
            ret = libairspyhf.airspyhf_open_sn(self.dev_p, serialnumber)
            if ret != 0:
                print("Cant open device by serial number")
                return -1
        elif device_index is not None:
            ndev = libairspyhf.airspyhf_list_devices(None, 0)
            if ndev < device_index+1:
                print("Device index higher then device num")
                return -1
            serial = c_uint64(0)
            libairspyhf.airspyhf_list_devices(byref(serial), device_index + 1)
        return 0

    def get_samplerates(self):
        nsrates = c_uint32(0)
        ret = libairspyhf.airspyhf_get_samplerates(self.dev_p, byref(nsrates), c_uint32(0))
        if ret != 0:
            print("Cant get number of avaliable sample rates")
            return []
        supported_samplerates = (c_uint32 * nsrates)(0)
        ret = libairspyhf.airspyhf_get_samplerates(self.dev_p, supported_samplerates, nsrates)
        if ret != 0:
            print("Cant get avaliable sample rate list")
            return []
        self.sample_rates = list(supported_samplerates)
        return self.sample_rates

    def set_samplerate(self, samplerate:int):
        if self.sample_rates == []:
            self.get_samplerates()
        if samplerate not in self.sample_rates:
            print(f"Unknown sample rate. Avaliable samplerate {self.sample_rates}")
            return -1

        ret = libairspyhf.airspyhf_set_samplerate(self.dev_p, samplerate)
        if ret != 0:
            print("Cannot set samplerate")
            return -1

        return 0

    def set_hf_agc(self,flag):
        ret = libairspyhf.airspyhf_set_hf_agc(self.dev_p, flag)
        return ret

    def set_hf_agc_threshold(self,flag):
        ret = libairspyhf.airspyhf_set_hf_agc_threshold(self.dev_p, flag)
        return ret

    def set_hf_att(self, value):
        ret = libairspyhf.airspyhf_set_hf_att(dev_p, value)
        return ret
    
    def set_hf_lna(self,flag):
        ret = libairspyhf.airspyhf_set_hf_lna(dev_p, 1)
        return ret

    def close(self):
        ret = libairspyhf.close(self.dev_p)
        if ret != 0:
            print("Cant close device")