35 lines
927 B
Swift
35 lines
927 B
Swift
import Foundation
|
|
import CoreWLAN
|
|
|
|
// Output format: JSON lines for easy parsing by Python
|
|
// {"timestamp": 1234567.89, "rssi": -50, "noise": -90, "tx_rate": 866.0}
|
|
|
|
func main() {
|
|
guard let interface = CWWiFiClient.shared().interface() else {
|
|
fputs("{\"error\": \"No WiFi interface found\"}\n", stderr)
|
|
exit(1)
|
|
}
|
|
|
|
// Flush stdout automatically to prevent buffering issues with Python subprocess
|
|
setbuf(stdout, nil)
|
|
|
|
// Run at ~10Hz
|
|
let interval: TimeInterval = 0.1
|
|
|
|
while true {
|
|
let timestamp = Date().timeIntervalSince1970
|
|
let rssi = interface.rssiValue()
|
|
let noise = interface.noiseMeasurement()
|
|
let txRate = interface.transmitRate()
|
|
|
|
let json = """
|
|
{"timestamp": \(timestamp), "rssi": \(rssi), "noise": \(noise), "tx_rate": \(txRate)}
|
|
"""
|
|
print(json)
|
|
|
|
Thread.sleep(forTimeInterval: interval)
|
|
}
|
|
}
|
|
|
|
main()
|