// // main.swift // AirSpyIQ // // Created by Jacky Jack on 02/12/2024. // import Foundation import ArgumentParser import libairspy //set the command line arguments struct CommandLineArgs: ParsableCommand { @Argument var file:String = "" @Option(name:.shortAndLong) var device_idx: Int = 0 @Option(name:.shortAndLong) var samplerate: Int = 3000000 @Option(name:.shortAndLong) var gain: Int = 0 @Option(name:.shortAndLong) var frequency: Int = 100000000 @Option(name:.shortAndLong) var nsamples: Int = 1024 @Flag(help:"Version \(software_version)") var version: Bool = false @Flag(name: .shortAndLong) var verbose: Bool = false } let args = CommandLineArgs.parseOrExit() if (args.version) { print("AirSpyIQ version \(software_version)") exit(0) } var libersion:airspy_lib_version_t = airspy_lib_version_t() airspy_lib_version(&libersion) print("libairspy \(libersion.major_version).\(libersion.minor_version).\(libersion.revision)") //detect number of devices //let AIRSPY_MAX_DEVICES=32 //var device:airspy_device_t = airspy_device_t() //var device:UnsafeMutablePointer? var dev:UnsafeMutablePointer? = .allocate(capacity: 1) var ret:Int32 ret = airspy_init() if (ret != AIRSPY_SUCCESS.rawValue) { print("Couldnt init library") exit(1) } print("Here") ret = airspy_open(&dev) let sample_rate_count: UnsafeMutablePointer = .allocate(capacity: 1) print("Here 2 \(sample_rate_count)") ret = airspy_get_samplerates(dev, sample_rate_count, 0) print("ret = \(ret)") print("Here 3") print("Number of supported sample rates \(sample_rate_count.pointee)") var samplerates:UnsafeMutableBufferPointer = .allocate(capacity: Int(sample_rate_count.pointee)) let rawPointer = UnsafeMutablePointer?(samplerates.baseAddress!) ret = airspy_get_samplerates(dev, rawPointer, sample_rate_count.pointee) print("ret=\(ret)") for i in 0..?) -> Int32 { print("Got some samples") return 0 } print("Here 6") ret = airspy_start_rx(dev, rf_callback, nil) if (ret != AIRSPY_SUCCESS.rawValue) { print("Couldn't start rf thread") } print("Here 7") ret = airspy_set_freq(dev, 100000000) //100M if (ret != AIRSPY_SUCCESS.rawValue) { print("Couldn't set frequency") } print("Here 8") sleep(1) var count = 10 while((airspy_is_streaming(dev) != AIRSPY_TRUE.rawValue) && (count>0)) { print("Streaming") sleep(1) count -= 1 } print("Here 9") airspy_close(dev) airspy_exit()