From 76869b1d3eac88cc6bdef2ef6f3a009b5c28c84d Mon Sep 17 00:00:00 2001 From: Arturs Artamonovs Date: Fri, 23 May 2025 09:48:25 +0100 Subject: genearation of s8/u8/s16/u16/s16q11 works as expected --- Radio/Utils/GenSin/main.swift | 98 +++++++++++++++++++++++++++++++++---------- 1 file changed, 75 insertions(+), 23 deletions(-) (limited to 'Radio/Utils/GenSin') diff --git a/Radio/Utils/GenSin/main.swift b/Radio/Utils/GenSin/main.swift index b247dc2..9f624e2 100644 --- a/Radio/Utils/GenSin/main.swift +++ b/Radio/Utils/GenSin/main.swift @@ -7,6 +7,7 @@ import Foundation import ArgumentParser +import ComplexModule /* Takes as input @@ -24,6 +25,7 @@ enum OutputFormat { case FMT_WAV_INT16 case FMT_WAV_F32 } +var complex_type:Bool = false print("gen sin") @@ -42,12 +44,21 @@ struct CommandLineArgs: ParsableCommand { let args = CommandLineArgs.parseOrExit() +if args.version { + print("Software version \(software_version)") + exit(0) +} + if args.listFormats { print("Supported output:") - print(" s8,u8: [DONE]") - print(" s16,u16: not") - print(" s16q11: not") - print(" f32: not ") + print(" s8,u8 : [DONE]") + print(" cs8,cu8 : [TEST]") + print(" s16,u16 : [DONE]") + print(" cs16,cu16: [TEST]") + print(" s16q11 : [TEST]") + print(" cs16q11 : [TEST]") + print(" f32 : not ") + print(" cf32 : not ") print(" wav i16, fc32: not") } @@ -57,19 +68,36 @@ if let dotIndex = args.outputFile.lastIndex(of: ".") { let index = args.outputFile.index(dotIndex, offsetBy: 1) let fileExtension = String(args.outputFile[index..] = [] + +//var outdata_cs8:[Complex] = [] +//var outdata_cu8:[UInt8] = [] +//var outdata_cs16:[Int16] = [] +//var outdata_cu16:[UInt16] = [] +//var outdata_cs16q11:[Complex] = [] +//var outdata_cf32:[Float32] = [] //generate signal outdata_f32 = genSin(args.samplerate, args.freq, args.amplitude, 0.0, args.num) -if outputFormat == OutputFormat.FMT_S8 { - outdata_s8 = cnvFloat32ToInt8(outdata_f32) -} else if outputFormat == OutputFormat.FMT_U8 { - outdata_u8 = cnvFloat32ToUInt8(outdata_f32) -} else if outputFormat == OutputFormat.FMT_S16 { - outdata_s16 = cnvFloat32ToInt16(outdata_f32) -} else if outputFormat == OutputFormat.FMT_U16 { - outdata_u16 = cnvFloat32ToUInt16(outdata_f32) +outdata_cf32 = genSin(args.samplerate, args.freq, args.amplitude, 0.0, args.num) +if complex_type == false { + if outputFormat == OutputFormat.FMT_S8 { + outdata_s8 = cnvFloat32ToInt8(outdata_f32) + } else if outputFormat == OutputFormat.FMT_U8 { + outdata_u8 = cnvFloat32ToUInt8(outdata_f32) + } else if outputFormat == OutputFormat.FMT_S16 { + outdata_s16 = cnvFloat32ToInt16(outdata_f32) + } else if outputFormat == OutputFormat.FMT_U16 { + outdata_u16 = cnvFloat32ToUInt16(outdata_f32) + } else if outputFormat == OutputFormat.FMT_SC16Q11 { + outdata_s16 = cnvFloat32ToS16Q11(outdata_f32) + } else { + print("Unimplemented output format converter") + } +//complex numbers } else { - print("Unimplemented output format converter") + if outputFormat == OutputFormat.FMT_S8 { + outdata_s8 = cnvFloat32ToCInt8(outdata_cf32) + } else if outputFormat == OutputFormat.FMT_U8 { + outdata_u8 = cnvFloat32ToCUInt8(outdata_cf32) + } else if outputFormat == OutputFormat.FMT_S16 { + outdata_s16 = cnvFloat32ToCInt16(outdata_cf32) + } else if outputFormat == OutputFormat.FMT_U16 { + outdata_u16 = cnvFloat32ToCUInt16(outdata_cf32) + } else if outputFormat == OutputFormat.FMT_SC16Q11 { + outdata_s16 = cnvFloat32ToS16Q11(outdata_cf32) + } else { + print("Unimplemented complex output format converter") + } } - - // write to file let fileWrite = FileWriter() var file_ok = false @@ -124,7 +178,8 @@ do { try fileWrite.writeAll(outdata_s8) } else if outputFormat == OutputFormat.FMT_U8 { try fileWrite.writeAll(outdata_u8) - } else if outputFormat == OutputFormat.FMT_S16 { + } else if (outputFormat == OutputFormat.FMT_S16) + || (outputFormat == OutputFormat.FMT_SC16Q11) { try fileWrite.writeAll(outdata_s16) } else if outputFormat == OutputFormat.FMT_U16 { try fileWrite.writeAll(outdata_u16) @@ -137,6 +192,3 @@ do { } fileWrite.close() - - - -- cgit v1.2.3