核心WLAN MCS指数?

时间:2018-01-06 17:29:31

标签: swift macos corewlan

当我选择点击Wi-Fi状态栏项目时,我正在尝试重新显示当前Wi-Fi网络显示的信息。显示的参数之一是MCS索引,但我找不到使用CWInterface类查询此值的任何方法,这是我获取大部分其他数据的地方:

if let interface = CWWiFiClient.shared().interface() {
    rssi = interface.rssiValue()
    noise = interface.noiseMeasurement()
    // etc.
}

由于Wi-Fi状态栏项目和机场命令行工具都显示MCS索引,似乎应该有某种方式来查询它:

MacBook:~ mark$ /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
     agrCtlRSSI: -46
     agrExtRSSI: 0
    agrCtlNoise: -90
    agrExtNoise: 0
          state: running
        op mode: station 
     lastTxRate: 878
        maxRate: 1300
lastAssocStatus: 0
    802.11 auth: open
      link auth: wpa2-psk
          BSSID: xx:xx:xx:xx:xx:xx
           SSID: MyWiFi
            MCS: 7
        channel: 149,80

我似乎也有一些Python sample code似乎表明MCS索引应该可用,但我没有在文档或代码完成中看到它。

有没有办法通过Core WLAN或其他框架获取此值,还是我需要根据其他值计算这些值?

1 个答案:

答案 0 :(得分:1)

我发现了另一个Python脚本wifi_status.py 报告WiFi状态。从行

def wifi_status(properties=('bssid', 'channel', 'txRate', 'mcsIndex', 'rssi', 'noise')):
    xface = CWWiFiClient.sharedWiFiClient().interface()
    while True:
        yield({name: getattr(xface, name)() for name in properties})

可以得出结论,可以使用这些属性进行检索 键值编码。

这确实有效:

if let iface = CWWiFiClient.shared().interface() {
    if let mcsIndex = iface.value(forKey: "mcsIndex") as? Int {
        print(mcsIndex)
    }
}

但我现在知道这种方法是否得到官方支持, 或者将来会工作,所以请自担风险。