blob: f61952993046823d7d91e3570f0d9a733d6e805e (
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
78
79
80
81
82
83
84
85
86
87
88
89
90
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()
|