diff --git a/Sources/SwiftSerial.swift b/Sources/SwiftSerial.swift index 2b9c8fc..71002b9 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 @@ -217,6 +222,7 @@ public class SerialPort { var path: String var fileDescriptor: Int32? + private var dtrState = false public init(path: String) { self.path = path @@ -365,6 +371,29 @@ public class SerialPort { } fileDescriptor = nil } + + public var dtr: Bool { + get{ + return dtrState + } + set (value){ + guard let fileDescriptor = fileDescriptor else { + // Need to open port first. + return + } + dtrState = value + var flags = TIOCM_DTR + if(ioctl(fileDescriptor, UInt(dtrState ? TIOCMBIS : TIOCMBIC), &flags) != 0){ + print("Failed to apply dtr") + } + } + } + + public var inWaiting: Int { + get{ + return Int(ioctl(fileDescriptor!, UInt(FIONREAD))) + } + } } // MARK: Receiving