diff options
author | Arturs Artamonovs <arturs.artamonovs@protonmail.com> | 2025-03-20 11:55:33 +0000 |
---|---|---|
committer | Arturs Artamonovs <arturs.artamonovs@protonmail.com> | 2025-03-20 11:55:33 +0000 |
commit | 5aa1435739fa1cd150dd8cd8fb2fee5473d5ed3f (patch) | |
tree | af2bf7690d3661e863544a5255ec0e6182eeb61f /Utils | |
parent | 972a6d3e4d3b684fbadeb5cd046a8634ec24eb8c (diff) | |
download | PrySDR-5aa1435739fa1cd150dd8cd8fb2fee5473d5ed3f.tar.gz PrySDR-5aa1435739fa1cd150dd8cd8fb2fee5473d5ed3f.zip |
gensin: generate sinusoid in u8,s8,u16,s16 formatsmain
Diffstat (limited to 'Utils')
-rw-r--r-- | Utils/FileReader.swift | 46 | ||||
-rw-r--r-- | Utils/FileWriter.swift | 112 |
2 files changed, 145 insertions, 13 deletions
diff --git a/Utils/FileReader.swift b/Utils/FileReader.swift index 1f9c561..e0447b3 100644 --- a/Utils/FileReader.swift +++ b/Utils/FileReader.swift @@ -64,7 +64,7 @@ class FileReader { return [] } - func readAll() throws -> [UInt8] { + func readAllUInt8() throws -> [UInt8] { var ret_arr:[UInt8]? = nil if let file = fileHandle { do { @@ -90,7 +90,7 @@ class FileReader { } } - func readAll() throws -> [Int8] { + func readAllInt8() throws -> [Int8] { var ret_arr:[Int8]? = nil if let file = fileHandle { do { @@ -122,14 +122,44 @@ class FileReader { } } - func readAll() throws -> [UInt16] { - print("FileReader not implemented") - return [] + //https://forums.swift.org/t/swift-5-read-binary-file-problem-with-unsafe-mutable-pointers/31048/6 + func readAllInt16() throws -> [Int16] { + var ret_arr:[Int16]? = nil + if let file = fileHandle { + do { + if let databuf = try file.readToEnd() { + ret_arr = [Int16](asInt16(databuf)) + } + print(ret_arr![0],ret_arr![1],ret_arr![2],ret_arr![3]) + } catch { + print("ReadAll i8 error:\(error)") + throw FileReaderError.readError + } + } + if ret_arr == nil { + return [] + } else { + return ret_arr! + } } - func readAll() throws -> [Int16] { - print("FileReader not implemented") - return [] + func readAllUInt16() throws -> [UInt16] { + var ret_arr:[UInt16]? = nil + if let file = fileHandle { + do { + if let databuf = try file.readToEnd() { + ret_arr = [UInt16](asUInt16(databuf)) + } + } catch { + print("ReadAll i8 error:\(error)") + throw FileReaderError.readError + } + } + if ret_arr == nil { + return [] + } else { + return ret_arr! + } } func readAll() throws -> [Float] { diff --git a/Utils/FileWriter.swift b/Utils/FileWriter.swift index 6330342..e4c3b7a 100644 --- a/Utils/FileWriter.swift +++ b/Utils/FileWriter.swift @@ -28,7 +28,7 @@ class FileWriter { print(dir+"/"+filename) if !filemgr.fileExists(atPath: filename) { print("Cant find file \(filename)") - throw FileReaderError.noFile + throw FileWriterError.noFile } fileHandle = FileHandle(forReadingAtPath: dir+"/"+filename) @@ -73,11 +73,113 @@ class FileWriter { } func writeAll(_ arr: [Float32]) throws { - //convert float to data - let databuf = arr.withUnsafeBytes { Data($0) } + + var byteArray = [UInt8](repeating: 0, count: 0) + var b1:Data = Data() + + byteArray.append(contentsOf: [0x11,0x22,0x33,0x44]) + + arr.withUnsafeBytes { + byteArray.append(contentsOf: $0) + } + + for i in 0...arr.count { + b1.append(contentsOf: [byteArray[i*4+0],byteArray[i*4+1],byteArray[i*4+2],byteArray[i*4+3]]) + } + + do { + print("try to write \(b1.count) bytes") + try fileHandle?.write(contentsOf: b1) + } catch { + print("Cant write to file \(self.filepath) : \(error)") + throw FileWriterError.writeError + } + } + + func writeAll(_ arr: [Int8]) throws { + var byteArray = [UInt8](repeating: 0, count: 0) + var b1:Data = Data() + + arr.withUnsafeBytes { + byteArray.append(contentsOf: $0) + } + + for i in 0..<arr.count { + b1.append(contentsOf: [byteArray[i]]) + } + + do { + print("try to write \(b1.count) bytes") + try fileHandle?.write(contentsOf: b1) + } catch { + print("Cant write to file \(self.filepath) : \(error)") + throw FileWriterError.writeError + } + } + + func writeAll(_ arr: [UInt8]) throws { + //var byteArray = [UInt8](repeating: 0, count: 0) + var b1:Data = Data() + + //arr.withUnsafeBytes { + // byteArray.append(contentsOf: $0) + //} + + for i in 0..<arr.count { + b1.append(contentsOf: [arr[i]]) + } + + do { + print("try to write \(b1.count) bytes") + try fileHandle?.write(contentsOf: b1) + } catch { + print("Cant write to file \(self.filepath) : \(error)") + throw FileWriterError.writeError + } + } + + func writeAll(_ arr: [Int16]) throws { + + var byteArray = [UInt8](repeating: 0, count: 0) + var b1:Data = Data() + + //byteArray.append(contentsOf: [0x11,0x22]) + + arr.withUnsafeBytes { + byteArray.append(contentsOf: $0) + } + + for i in 0..<arr.count { + b1.append(contentsOf: [byteArray[i*2+0],byteArray[i*2+1]]) + } + + do { + print("try to write \(b1.count) bytes") + try fileHandle?.write(contentsOf: b1) + } catch { + print("Cant write to file \(self.filepath) : \(error)") + throw FileWriterError.writeError + } + } + + func writeAll(_ arr: [UInt16]) throws { + + var byteArray = [UInt8](repeating: 0, count: 0) + var b1:Data = Data() + + //byteArray.append(contentsOf: [0x11,0x22]) + + arr.withUnsafeBytes { + byteArray.append(contentsOf: $0) + } + + for i in 0..<arr.count { + b1.append(contentsOf: [byteArray[i*2+0],byteArray[i*2+1]]) + } + do { - print("try to write \(databuf.count) bytes") - try fileHandle?.write(contentsOf: databuf) + print("try to write \(b1.count) bytes") + try fileHandle?.write(contentsOf: b1) } catch { print("Cant write to file \(self.filepath) : \(error)") throw FileWriterError.writeError |