Merge branch 'dtr_support' into 'master'

Dtr support

See merge request vato007/SwiftSerial!1
This commit is contained in:
Michael Pivato
2020-09-12 12:11:09 +00:00

View File

@@ -165,6 +165,11 @@ public enum BaudRate {
} }
#endif #endif
#if os(OSX)
// Darwin doesn't provide this
private let FIONREAD: UInt = 0x541B
#endif
public enum DataBitsSize { public enum DataBitsSize {
case bits5 case bits5
case bits6 case bits6
@@ -217,6 +222,7 @@ public class SerialPort {
var path: String var path: String
var fileDescriptor: Int32? var fileDescriptor: Int32?
private var dtrState = false
public init(path: String) { public init(path: String) {
self.path = path self.path = path
@@ -365,6 +371,29 @@ public class SerialPort {
} }
fileDescriptor = nil 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 // MARK: Receiving