diff options
Diffstat (limited to 'Radio/Utils/iqconvert/main.swift')
-rw-r--r-- | Radio/Utils/iqconvert/main.swift | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/Radio/Utils/iqconvert/main.swift b/Radio/Utils/iqconvert/main.swift new file mode 100644 index 0000000..f619529 --- /dev/null +++ b/Radio/Utils/iqconvert/main.swift @@ -0,0 +1,91 @@ +// +// main.swift +// iqconvert +// +// Created by Jacky Jack on 17/01/2025. +// + +import Foundation +import ArgumentParser + +enum SDRInputFormat { + case FMT_NONE + case FMT_U8 + case FMT_F32 +} + +//set the command line arguments +struct CommandLineArgs: ParsableCommand { + @Argument var inputFile:String = "" + @Argument var outputFile:String = "" + @Flag(help:"Version \(software_version)") var version: Bool = false + @Flag(name: .shortAndLong) var verbose: Bool = false + @Flag(name: .shortAndLong) var listFormats: Bool = false +} + +let args = CommandLineArgs.parseOrExit() + +if args.listFormats { + print("Supported input:") + print(" u8: RTLSDR [not supported]") + print(" u16: AirSpyHF [not supported]") + print(" u16r: AirSpy [not supported]") + print(" i16: AirSpy [not supported]") + print(" i16r: AirSpy [not supported]") //int16 real 1 * 16bit per sample + print(" sc16q11: BladeRF [not supported]") + print(" fc32r: AirSpy [not supported]") //float32 real 1 * 32bit per sampl + print("Supported output:") + print(" fc32: inspectrum, sdr++ [not supported]") + print(" wav: SDR# [not suppoprted]") +} + +//var inputFilePath:String +//check if input file exists as parameter is given +if !checkIfFileExists(args.inputFile) { + print("Error: Input file \(args.inputFile) does not exist") + exit(1) +} + +let fileReader = FileReader() +do { + try fileReader.open(filename: args.inputFile) +} catch { + print("ERROR: \(error) - Cant open file \(args.inputFile)") + exit(1) +} + +var inputFormat = SDRInputFormat.FMT_NONE +//file is open lets detect extension +if let dotIndex = args.inputFile.lastIndex(of: ".") { + let index = args.inputFile.index(dotIndex, offsetBy: 1) + let fileExtension = String(args.inputFile[index..<args.inputFile.endIndex]) + print("\(args.inputFile) extension \(fileExtension)") + let supportedExtensionList = ["u8","cu8"] + if supportedExtensionList.contains(fileExtension) { + if ["u8","cu8"].contains(fileExtension) { + inputFormat = SDRInputFormat.FMT_U8 + } + } +} + +//outputfile Format +var outputFormat = SDRInputFormat.FMT_NONE +if let dotIndex = args.outputFile.lastIndex(of: ".") { + let index = args.outputFile.index(dotIndex, offsetBy: 1) + let fileExtension = String(args.outputFile[index..<args.outputFile.endIndex]) + print("\(args.outputFile) extension \(fileExtension)") + let supportedExtensionList = ["f32","fc32"] + if supportedExtensionList.contains(fileExtension) { + if ["f32","fc32"].contains(fileExtension) { + outputFormat = SDRInputFormat.FMT_F32 + } + } +} + +print("Input file format:\(inputFormat) output file format:\(outputFormat)") + + + +fileReader.close() + + |