Базовый индекс WLAN MCS?
Я пытаюсь воссоздать информацию, отображаемую для текущей сети 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, который, кажется, указывает на то, что индекс MCS должен быть доступен, но я не вижу его в документах или дополнении кода.
Есть ли какой-то способ получить это значение через Core WLAN или какую-то другую инфраструктуру, или это то, что мне нужно рассчитать на основе других значений?
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})
можно сделать вывод, что эти атрибуты могут быть получены с помощью Key-Value Coding.
И это действительно работает:
if let iface = CWWiFiClient.shared().interface() {
if let mcsIndex = iface.value(forKey: "mcsIndex") as? Int {
print(mcsIndex)
}
}
Но теперь у меня есть идея, если этот подход официально поддерживается или будет работать в будущем, поэтому используйте его на свой страх и риск.