Использование беспроводных инструментов для linux в программе c, и я выполнил сетевое сканирование, требующее найти уровень сигнала (дБм) каждой из обнаруженных сетей.Wireless.h Как распечатать уровень сигнала?
Я нашел следующее в wireless.h:
struct iw_quality
{
__u8 qual; /* link quality (%retries, SNR,
%missed beacons or better...) */
__u8 level; /* signal level (dBm) */
__u8 noise; /* noise level (dBm) */
__u8 updated; /* Flags to know if updated */
};
Я распечатать "уровень" в моей программе C так:
printf("Transmit power: %lu ", result->stats.qual.level);
также попытался % D , но получил тот же результат.
В результате я получаю номера, которые выглядят как-то 178, 190, 201, 189 и т.д. ...
Есть ли шанс, что эти цифры в ваттах? Согласно преобразователю watt-> dBm, 178 Вт составляет ок. 52,50 дБм?
Что я должен получать вместо этого? Потому что я думал, что dBm переводится на -80dBm или что-то в этом роде.
Нужно ли преобразовывать эти цифры? Как получить правильный результат?
Спасибо!
======= ========= UPDATE
я заметил некоторое странное поведение. Когда я использую свойство уровня wireless.h через свою программу, «самое сильное» значение, которое я записал, составляет -50 дБм, тогда как с тем же маршрутизатором, когда я запускал «iw wlan0 scan», я получаю около -14dBm как самый сильный сигнал.
Кто-нибудь знает, что вызывает эту разницу?
Является ли __u8 неподписанным int? Зачем использовать unsigned int для значения, которое, как ожидается, будет отрицательным? –
-80 дБм типичен для мобильной сети, это то, что вы используете? –
@SList Я понятия не имею. __u8 означает, что правильно? Может быть, я ищу неправильный заголовочный файл? Но в нем четко указано, что это для дБм. Я просматриваю точки доступа WiFi, -80, которые я дал, был всего лишь примером. Я просто знаю, что это должно быть отрицательно. – bubbly