percentage to dbm:
在RTL8192CU的driver中有段程式碼將percentage to dbm(rtw_recv.h),程式碼如下:
__inline static s32 translate_percentage_to_dbm(u32 SignalStrengthIndex)
{
s32 SignalPower; // in dBm.
// Translate to dBm (x=0.5y-95).
SignalPower = (s32)((SignalStrengthIndex + 1) >> 1);
SignalPower -= 95;
return SignalPower;
}
dbm to percentage:
在RT5370的driver中有段程式碼將dbm to percentage(cmm_info.c),程式碼如下:
/* Rssi*/
Rssi = (INT)pBss->Rssi;
if (Rssi >= -50)
Rssi_Quality = 100;
else if (Rssi >= -80) /* between -50 ~ -80dbm*/
Rssi_Quality = (UINT)(24 + ((Rssi + 80) * 26)/10);
else if (Rssi >= -90) /* between -80 ~ -90dbm*/
Rssi_Quality = (UINT)(((Rssi + 90) * 26)/10);
else /* < -84 dbm*/
Rssi_Quality = 0;
sprintf(msg+strlen(msg),"%-9d", Rssi_Quality);
也許有人會問怎麼不把percent to dbm的函式反轉就可以做dbm to percentage,為什麼要這麼麻煩?原本也是打算這麼做,可是實做後發現,也許是廠商不同,RT5370回傳的dbm值若是直接使用反轉的函式所得到的percentage值有時會出現超過100%的數值,所以後來還是乖乖的使用判斷的方式來將dbm to percentage。
沒有留言:
張貼留言