Created
January 6, 2016 02:27
-
-
Save anonymous/4861aba2280251fe57c6 to your computer and use it in GitHub Desktop.
Compile and link ioctl on Linux from Swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Glibc | |
import CLinuxDVB | |
@_silgen_name("ioctl") func ioctl(fildes: CInt, request: UInt64, result: UnsafePointer<CInt>) -> Int | |
print("Compiled against DVB API version \(DVB_API_VERSION).\(DVB_API_VERSION)") | |
class DVBFrontEnd { | |
var fileReference: CInt? = .None | |
init?(adapter: Int, number: Int) { | |
let path: String = "/dev/dvb/adapter\(adapter)/frontend\(number)" | |
fileReference = open(path, O_RDWR | O_NONBLOCK) | |
guard fileReference > 0 else { | |
fileReference = .None | |
return nil | |
} | |
} | |
deinit { | |
if let fileReference = self.fileReference { | |
close(fileReference) | |
} | |
} | |
} | |
class DVBDVR { | |
/// The requested DVR buffer size. The integer represents the number of bytes. | |
static let DVR_BUFFER_SIZE: CInt = 40 * 188 * 1024 | |
var fileReference: CInt? = .None | |
init?(adapter: Int, number: Int) { | |
let path: String = "/dev/dvb/adapter\(adapter)/dvr\(number)" | |
fileReference = open(path, O_RDONLY | O_NONBLOCK) | |
guard fileReference > 0 else { | |
fileReference = .None | |
return nil | |
} | |
let DMX_SET_BUFFER_SIZE: CUnsignedInt = 28461 | |
var value = DVBDVR.DVR_BUFFER_SIZE | |
let result = ioctl(fileReference!, request: UInt64(DMX_SET_BUFFER_SIZE), result: &value) | |
print(result) | |
} | |
deinit { | |
if let fileReference = self.fileReference { | |
close(fileReference) | |
} | |
} | |
} | |
print("Would like to set the DVR buffer size to: \(DVBDVR.DVR_BUFFER_SIZE) bytes.") | |
if let frontend = DVBFrontEnd(adapter: 0, number: 0), let dvr = DVBDVR(adapter: 0, number: 0) { | |
print("Connected to the DVB adapters.") | |
} else { | |
print("Could not connect to the DVB adapters.") | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import PackageDescription | |
let package = Package( | |
name: "CastableLive", | |
dependencies: [ | |
.Package(url: "https://github.com/RLovelett/CLinuxDVB.swift.git", Version(1, 0, 0)) | |
] | |
) |
RLovelett
commented
Jan 6, 2016
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment