diff options
author | Arturs Artamonovs <arturs.artamonovs@protonmail.com> | 2024-11-01 08:38:25 +0000 |
---|---|---|
committer | Arturs Artamonovs <arturs.artamonovs@protonmail.com> | 2024-11-01 08:38:25 +0000 |
commit | ca50c0f64f1b2fce46b4cb83ed111854bac13852 (patch) | |
tree | 92713a6fb08559f6f7ddd4e03781572eba0a7f02 /Radio/HW/RtlSdr/r820/r820.swift | |
parent | e3a7f5bafec6715cd11555c39925665c78029dd9 (diff) | |
download | PrySDR-ca50c0f64f1b2fce46b4cb83ed111854bac13852.tar.gz PrySDR-ca50c0f64f1b2fce46b4cb83ed111854bac13852.zip |
rtlsdr library example compiles
Diffstat (limited to 'Radio/HW/RtlSdr/r820/r820.swift')
-rw-r--r-- | Radio/HW/RtlSdr/r820/r820.swift | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/Radio/HW/RtlSdr/r820/r820.swift b/Radio/HW/RtlSdr/r820/r820.swift new file mode 100644 index 0000000..f5e1177 --- /dev/null +++ b/Radio/HW/RtlSdr/r820/r820.swift @@ -0,0 +1,198 @@ +// +// r820.swift +// r820sdr-init +// +// Created by Jacky Jack on 15/03/2022. +// + +//https://www.kodeco.com/7181017-unsafe-swift-using-pointers-and-interacting-with-c + +import Foundation +//import TestRtlSdr +import libr820 + +public class R820API { + + + func R820() { + print("Start device API") + } + + func getDeviceCount() -> UInt32 { + return rtlsdr_get_device_count() + } + + + +} + +public class R820Tuner { + var deviceInitalized:Bool = false + var dev: OpaquePointer? = nil + + /** + Function to initialise tunner + - Parameters: + - + */ + func R820Tuner() { + print("Initialise tunner") + } + + func open(index devId: UInt32) { + let err = rtlsdr_open(&dev,devId) + if (err != 0) { + print("Error couldnt open device") + return + } + deviceInitalized = true + } + + func close() { + if self.deviceInitalized { + rtlsdr_close(dev); + dev = nil + } + } + + func getDeviceCount()->UInt32 { + return rtlsdr_get_device_count(); + } + + /* + func getDeviceName(index: UInt32) -> String { + return rtlsdr_get_device_name(index) + } + */ + + /* + func getDeviceUsbString() { + return rtlsdr_get_device_usb_strings(); + }*/ + func getIndexBySerial(serial: String) -> Int32 + { + return rtlsdr_get_index_by_serial(serial);//is this ok? + } + + func setXtalFreq(rtlFreq: UInt32, tunnerFreq: UInt32) -> Int32 { + return rtlsdr_set_xtal_freq(dev, rtlFreq, tunnerFreq); + } + + func getXtalFreq(rtlFreq: UnsafeMutablePointer<UInt32>?, tunnerFreq: UnsafeMutablePointer<UInt32>?)->Int32{ + return rtlsdr_get_xtal_freq(dev, rtlFreq, tunnerFreq) + } + + func getUsbStrings(manufact: UnsafeMutablePointer<CChar>?, product: UnsafeMutablePointer<CChar>?, serial: UnsafeMutablePointer<CChar>?) -> Int32{ + return rtlsdr_get_usb_strings(dev, manufact, product, serial) + } + + func writeEeprom(data: UnsafeMutablePointer<UInt8>?,offset: UInt8, len: UInt16) -> Int32 { + return rtlsdr_write_eeprom(dev, data, offset, len) + } + + func readEeprom(data: UnsafeMutablePointer<UInt8>?,offset: UInt8, len: UInt16) -> Int32 { + return rtlsdr_read_eeprom(dev, data, offset, len) + } + + func setCenterFreq(freq: UInt32) -> Int32{ + return rtlsdr_set_center_freq(dev, freq); + } + + func getCenterFreq()->UInt32 { + return rtlsdr_get_center_freq(dev) + } + + func setFreqCorrection(ppm: Int32) -> Int32 { + return rtlsdr_set_freq_correction(dev, ppm) + } + + func getFreqCorrection() -> Int32 { + return rtlsdr_get_freq_correction(dev) + } + + + func getTunerType() -> rtlsdr_tuner { + return rtlsdr_get_tuner_type(dev) + } + + func getTunerGains(gains: UnsafeMutablePointer<Int32>?) -> Int32 { + return rtlsdr_get_tuner_gains(dev, gains) + } + + func setTunerGain(gain: Int32) -> Int32 { + return rtlsdr_set_tuner_gain(dev,gain); + } + + func setTunnerBandwidth(bw: UInt32) -> Int32 { + return rtlsdr_set_tuner_bandwidth(dev, bw) + } + + func setTunerIfGain(stage: Int32, gain: Int32) -> Int32 { + return rtlsdr_set_tuner_if_gain(dev,stage,gain) + } + + func setTunerGainMode(manual: Int32) -> Int32 { + return rtlsdr_set_tuner_gain_mode(dev, manual) + } + + func setSampleRate(samplerate: UInt32) -> Int32 { + return rtlsdr_set_sample_rate(dev, samplerate) + } + + func getSampleRate() -> UInt32 { + return rtlsdr_get_sample_rate(dev) + } + + func setTestmode(on: Int32) -> Int32 { + return rtlsdr_set_testmode(dev, on); + } + + func setAgcMode(on: Int32) -> Int32 { + return rtlsdr_set_agc_mode(dev, on); + } + + func setDirectSampling(on: Int32) -> Int32 { + return rtlsdr_set_direct_sampling(dev, on) + } + + func getDirectSampling() -> Int32 { + return rtlsdr_get_direct_sampling(dev) + } + + func setOffsetTuning(on: Int32) -> Int32 { + return rtlsdr_set_offset_tuning(dev, on) + } + + func getOffsetTuning() -> Int32 { + return rtlsdr_get_offset_tuning(dev) + } + + func resetBuffer() -> Int32 { + return rtlsdr_reset_buffer(dev) + } + + func readSync(buf:UnsafeMutableRawPointer?,len: Int32,n_read:UnsafeMutablePointer<Int32>?) -> Int32 { + return rtlsdr_read_sync(dev, buf, len, n_read); + } + + func waitAsync(cb: rtlsdr_read_async_cb_t?, ctx:UnsafeMutableRawPointer?) -> Int32{ + return rtlsdr_wait_async(dev,cb, ctx); + } + + func readAsync(cb: rtlsdr_read_async_cb_t,ctx:UnsafeMutableRawPointer?, buf_num: UInt32, buf_len: UInt32) -> Int32 { + return rtlsdr_read_async(dev, cb, ctx, buf_num, buf_len) + } + + func cancelAsync() -> Int32 { + return rtlsdr_cancel_async(dev); + } + + func setBiasTee(on: Int32) -> Int32 { + return rtlsdr_set_bias_tee(dev, on) + } + + func setBiasTeeGpio(gpio: Int32, on: Int32) -> Int32 { + return rtlsdr_set_bias_tee_gpio(dev,gpio, on) + } + +} |