import os from airspyhf import * from ctypes import * import time import sys import wave import struct import argparse parser = argparse.ArgumentParser() parser.add_argument("--frequency") parser.add_argument("--samplerate") parser.add_argument("--outputfile") parser.add_argument("--serial") args = parser.parse_args() print("Check airspyHF version") p = airspyhf_lib_version_t() libairspyhf.airspyhf_lib_version(byref(p)) print(f"libairspyhf version {p.major_version}.{p.minor_version}.{p.revision}") print("Get list of devices if there is any") ndev = libairspyhf.airspyhf_list_devices(None,0) print("Found %d devices"%(ndev)) if ndev < 1: sys.exit(0) for devi in range(0,ndev): serial = c_uint64(0) libairspyhf.airspyhf_list_devices(byref(serial),devi+1) print("Device %d: Serial number %s"%(int(devi),hex(serial.value) )) print("try to open device") dev_p = airspyhf_device_t_p(None) if args.serial != None: ret = libairspyhf.airspyhf_open_sn(dev_p, args.serial) else: serial = c_uint64(0) libairspyhf.airspyhf_list_devices(byref(serial), 1) ret = libairspyhf.airspyhf_open_sn(dev_p, f"{hex(serial.value)}") print("open_sn: Returned %d"%(ret)) if (ret != 0): print("airspyhf_open_sn returned != 0, error") sys.exit() print("List sample rates") nsrates = c_uint32(0) ret = libairspyhf.airspyhf_get_samplerates(dev_p,byref(nsrates),c_uint32(0)) print("ret %d"%ret) print("sample rates %d"% nsrates.value) supportet_samplerates = (c_uint32*4)(0) ret = libairspyhf.airspyhf_get_samplerates(dev_p,supportet_samplerates,nsrates) print("ret %d"%ret) for i in range(0,nsrates.value): print("Sample rates %d"% supportet_samplerates[i]) #try to get some samples ret = libairspyhf.airspyhf_set_samplerate(dev_p, supportet_samplerates[3]) print(f"airspyhf_set_samplerate ret={ret}") ret = libairspyhf.airspyhf_set_hf_agc(dev_p, 1) print(f"airspyhf_set_hf_agc ret={ret}") ret = libairspyhf.airspyhf_set_hf_agc_threshold(dev_p, 0) print(f"airspyhf_set_hf_agc_threshold ret={ret}") sample_count = 0 wave_file = wave.open("record.wav","w") wave_file.setnchannels(2) wave_file.setsampwidth(4) wave_file.setframerate(supportet_samplerates[1]) def read_samples(transfer): global sample_count global wave_file #print("Python call back") t = transfer.contents bytes_to_write = t.sample_count * 4 * 2 rx_buffer = t.samples #print(f"{bytes_to_write} bytes receieved") sample_count += t.sample_count for i in range(0,t.sample_count): d_re = t.samples[i].re d_im = t.samples[i].im data = struct.pack("