From 9799f402e77e5d69b0811b6c714b172d9ccdd768 Mon Sep 17 00:00:00 2001 From: Piv <18462828+Piv200@users.noreply.github.com> Date: Sat, 4 Jul 2020 15:14:43 +0930 Subject: [PATCH 1/4] Add dtr property to SerialPort --- Sources/SwiftSerial.swift | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Sources/SwiftSerial.swift b/Sources/SwiftSerial.swift index 2b9c8fc..94e56e7 100644 --- a/Sources/SwiftSerial.swift +++ b/Sources/SwiftSerial.swift @@ -217,6 +217,7 @@ public class SerialPort { var path: String var fileDescriptor: Int32? + private var dtrState = false public init(path: String) { self.path = path @@ -365,6 +366,24 @@ public class SerialPort { } fileDescriptor = nil } + + public var dtr: Bool { + get{ + return dtrState + } + set (value){ + // TODO: Add error handling. + guard let fileDescriptor = fileDescriptor else { + // Need to open port first. + return + } + dtrState = value + var flags = TIOCM_DTR + if(ioctl(fileDescriptor, dtrState ? TIOCMBIS : TIOCMBIC, &flags) != 0){ + + } + } + } } // MARK: Receiving From 496a62549f613b805feb559b557c2474f5e9a744 Mon Sep 17 00:00:00 2001 From: Piv <18462828+Piv200@users.noreply.github.com> Date: Tue, 7 Jul 2020 22:48:17 +0930 Subject: [PATCH 2/4] Add inWaiting Property --- Sources/SwiftSerial.swift | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Sources/SwiftSerial.swift b/Sources/SwiftSerial.swift index 94e56e7..c504fb0 100644 --- a/Sources/SwiftSerial.swift +++ b/Sources/SwiftSerial.swift @@ -165,6 +165,11 @@ public enum BaudRate { } #endif +#if os(OSX) +// Darwin doesn't provide this +private let FIONREAD: UInt = 0x541B +#endif + public enum DataBitsSize { case bits5 case bits6 @@ -384,6 +389,12 @@ public class SerialPort { } } } + + public var inWaiting: Int? { + get{ + return Int(ioctl(fileDescriptor!, FIONREAD)) + } + } } // MARK: Receiving From 34e59a7d8766f7097eb68779ec039e77a1eec78a Mon Sep 17 00:00:00 2001 From: Piv <18462828+Piv200@users.noreply.github.com> Date: Wed, 8 Jul 2020 18:41:59 +0930 Subject: [PATCH 3/4] Minor cleanup --- Sources/SwiftSerial.swift | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Sources/SwiftSerial.swift b/Sources/SwiftSerial.swift index c504fb0..fdeb067 100644 --- a/Sources/SwiftSerial.swift +++ b/Sources/SwiftSerial.swift @@ -377,20 +377,17 @@ public class SerialPort { return dtrState } set (value){ - // TODO: Add error handling. guard let fileDescriptor = fileDescriptor else { // Need to open port first. return } dtrState = value var flags = TIOCM_DTR - if(ioctl(fileDescriptor, dtrState ? TIOCMBIS : TIOCMBIC, &flags) != 0){ - - } + ioctl(fileDescriptor, dtrState ? TIOCMBIS : TIOCMBIC, &flags) } } - public var inWaiting: Int? { + public var inWaiting: Int { get{ return Int(ioctl(fileDescriptor!, FIONREAD)) } From 2cb65bc2ff508acc05c165d1a05381cc681f7591 Mon Sep 17 00:00:00 2001 From: = <=> Date: Fri, 10 Jul 2020 19:25:59 +0930 Subject: [PATCH 4/4] Fix linux compilation --- Sources/SwiftSerial.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Sources/SwiftSerial.swift b/Sources/SwiftSerial.swift index fdeb067..71002b9 100644 --- a/Sources/SwiftSerial.swift +++ b/Sources/SwiftSerial.swift @@ -383,13 +383,15 @@ public class SerialPort { } dtrState = value var flags = TIOCM_DTR - ioctl(fileDescriptor, dtrState ? TIOCMBIS : TIOCMBIC, &flags) + if(ioctl(fileDescriptor, UInt(dtrState ? TIOCMBIS : TIOCMBIC), &flags) != 0){ + print("Failed to apply dtr") + } } } public var inWaiting: Int { get{ - return Int(ioctl(fileDescriptor!, FIONREAD)) + return Int(ioctl(fileDescriptor!, UInt(FIONREAD))) } } }