RSSI转换为百分比

guint32
nm_ap_utils_level_to_quality (gint val)
{
    if (val < 0) {
        /* Assume dBm already; rough conversion: best = -40, worst = -100 */
        val = abs (CLAMP (val, -100, -40) + 40);  /* normalize to 0 */
        val = 100 - (int) ((100.0 * (double) val) / 60.0);
    } else if (val > 110 && val < 256) {
        /* assume old-style WEXT 8-bit unsigned signal level */
        val -= 256;  /* subtract 256 to convert to dBm */
        val = abs (CLAMP (val, -100, -40) + 40);  /* normalize to 0 */
        val = 100 - (int) ((100.0 * (double) val) / 60.0);
    } else {
        val = CLAMP (val, 0, 100);
    }
    g_assert (val >= 0);

    return (guint32) val;
}

 

posted on 2022-02-24 14:55  sudochen  阅读(198)  评论(0编辑  收藏  举报

导航