예제 #1
0
function setup_txpower($uid)
{
    $phypsts = XNODE_getpathbytarget("/runtime", "phyinf", "uid", $uid, 0);
    $dev = devname($uid);
    if ($phypsts != "") {
        $ccka = query($phypsts . "/txpower/ccka");
        $cckb = query($phypsts . "/txpower/cckb");
        $sa = query($phypsts . "/txpower/ht401sa");
        $sb = query($phypsts . "/txpower/ht401sb");
        $sa_5G = query($phypsts . "/txpower/ht401sa_5G");
        $sb_5G = query($phypsts . "/txpower/ht401sb_5G");
    } else {
        return;
    }
    $phyp = XNODE_getpathbytarget("", "phyinf", "uid", $uid, 0);
    $txpower = query($phyp . "/media/txpower");
    if ($txpower == "70") {
        $tx_value = 3;
    } else {
        if ($txpower == "50") {
            $tx_value = 6;
        } else {
            if ($txpower == "25") {
                $tx_value = 9;
            } else {
                $tx_value = 17;
            }
        }
    }
    $max_num_24G_ch = 14 * 2;
    $max_num_5G_ch = 196 * 2;
    if ($ccka != "" && $cckb != "" && $sa != "" && $sb != "") {
        $index = 0;
        while ($index < $max_num_24G_ch) {
            $ccka_value = substr($ccka, $index, 2);
            $ccka_value = strtoul($ccka_value, 16);
            if ($ccka_value - $tx_value >= 1) {
                $ccka_value = $ccka_value - $tx_value;
            } else {
                $ccka_value = 1;
            }
            $ccka_value = dec2strf("%02x", $ccka_value);
            $pwrlevelCCK_A = $pwrlevelCCK_A . $ccka_value;
            $cckb_value = substr($cckb, $index, 2);
            $cckb_value = strtoul($cckb_value, 16);
            if ($cckb_value - $tx_value >= 1) {
                $cckb_value = $cckb_value - $tx_value;
            } else {
                $cckb_value = 1;
            }
            $cckb_value = dec2strf("%02x", $cckb_value);
            $pwrlevelCCK_B = $pwrlevelCCK_B . $cckb_value;
            $sa_value = substr($sa, $index, 2);
            $sa_value = strtoul($sa_value, 16);
            if ($sa_value - $tx_value >= 1) {
                $sa_value = $sa_value - $tx_value;
            } else {
                $sa_value = 1;
            }
            $sa_value = dec2strf("%02x", $sa_value);
            $pwrlevelHT40_1S_A = $pwrlevelHT40_1S_A . $sa_value;
            $sb_value = substr($sb, $index, 2);
            $sb_value = strtoul($sb_value, 16);
            if ($sb_value - $tx_value >= 1) {
                $sb_value = $sb_value - $tx_value;
            } else {
                $sb_value = 1;
            }
            $sb_value = dec2strf("%02x", $sb_value);
            $pwrlevelHT40_1S_B = $pwrlevelHT40_1S_B . $sb_value;
            $index = $index + 2;
        }
        fwrite("a", $_GLOBALS["START"], 'iwpriv ' . $dev . ' set_mib pwrlevelCCK_A=' . $pwrlevelCCK_A . '\\n');
        fwrite("a", $_GLOBALS["START"], 'iwpriv ' . $dev . ' set_mib pwrlevelCCK_B=' . $pwrlevelCCK_B . '\\n');
        fwrite("a", $_GLOBALS["START"], 'iwpriv ' . $dev . ' set_mib pwrlevelHT40_1S_A=' . $pwrlevelHT40_1S_A . '\\n');
        fwrite("a", $_GLOBALS["START"], 'iwpriv ' . $dev . ' set_mib pwrlevelHT40_1S_B=' . $pwrlevelHT40_1S_B . '\\n');
    }
    if ($sa_5G != "" && $sb_5G != "") {
        $index = 0;
        while ($index < $max_num_5G_ch) {
            $sa_value = substr($sa_5G, $index, 2);
            $sa_value = strtoul($sa_value, 16);
            if ($sa_value - $tx_value >= 1) {
                $sa_value = $sa_value - $tx_value;
            } else {
                $sa_value = 1;
            }
            $sa_value = dec2strf("%02x", $sa_value);
            $pwrlevel5GHT40_1S_A = $pwrlevel5GHT40_1S_A . $sa_value;
            $sb_value = substr($sb_5G, $index, 2);
            $sb_value = strtoul($sb_value, 16);
            if ($sb_value - $tx_value >= 1) {
                $sb_value = $sb_value - $tx_value;
            } else {
                $sb_value = 1;
            }
            $sb_value = dec2strf("%02x", $sb_value);
            $pwrlevel5GHT40_1S_B = $pwrlevel5GHT40_1S_B . $sb_value;
            $index = $index + 2;
        }
        fwrite("a", $_GLOBALS["START"], 'iwpriv ' . $dev . ' set_mib pwrlevel5GHT40_1S_A=' . $pwrlevel5GHT40_1S_A . '\\n');
        fwrite("a", $_GLOBALS["START"], 'iwpriv ' . $dev . ' set_mib pwrlevel5GHT40_1S_B=' . $pwrlevel5GHT40_1S_B . '\\n');
    }
}
예제 #2
0
function get_mssid_mac($host_mac, $offset)
{
    $index = 5;
    $mssid_mac = "";
    $carry = 0;
    //loop from low byte to high byte
    //ex: 00:01:02:03:04:05
    //05 -> 04 -> 03 -> 02 -> 01 -> 00
    while ($index >= 0) {
        $field = cut($host_mac, $index, ":");
        //check mac format
        if ($field == "") {
            return "";
        }
        //to value
        $value = strtoul($field, 16);
        if ($value == "") {
            return "";
        }
        if ($index == 5) {
            $value = $value + $offset;
        }
        //need carry?
        $value = $value + $carry;
        if ($value > 255) {
            $carry = 1;
            $value = $value % 256;
        } else {
            $carry = 0;
        }
        //from dec to hex
        $hex_value = dec2strf("%02X", $value);
        if ($mssid_mac == "") {
            $mssid_mac = $hex_value;
        } else {
            $mssid_mac = $hex_value . ":" . $mssid_mac;
        }
        $index = $index - 1;
    }
    return $mssid_mac;
}
예제 #3
0
                $sa3 = 1;
                $sa3 = dec2strf("%02x", $sa3);
            }
            $pwrlevelHT40_1S_A = $sa1 . $sa1 . $sa1 . $sa2 . $sa2 . $sa2 . $sa2 . $sa2 . $sa2 . $sa3 . $sa3 . $sa3 . $sa3 . $sa3;
            fwrite("a", $_GLOBALS["START"], 'iwpriv wlan0 set_mib pwrlevelHT40_1S_A=' . $pwrlevelHT40_1S_A . '\\n');
            if ($sb1 > 17) {
                $sb1 = $sb1 - 17;
                $sb1 = dec2strf("%02x", $sb1);
            } else {
                $sb1 = 1;
                $sb1 = dec2strf("%02x", $sb1);
            }
            if ($sb2 > 17) {
                $sb2 = $sb2 - 17;
                $sb2 = dec2strf("%02x", $sb2);
            } else {
                $sb2 = 1;
                $sb2 = dec2strf("%02x", $sb2);
            }
            if ($sb3 > 17) {
                $sb3 = $sb3 - 17;
                $sb3 = dec2strf("%02x", $sb3);
            } else {
                $sb3 = 1;
                $sb3 = dec2strf("%02x", $sb3);
            }
            $pwrlevelHT40_1S_B = $sb1 . $sb1 . $sb1 . $sb2 . $sb2 . $sb2 . $sb2 . $sb2 . $sb2 . $sb3 . $sb3 . $sb3 . $sb3 . $sb3;
            fwrite("a", $_GLOBALS["START"], 'iwpriv wlan0 set_mib pwrlevelHT40_1S_B=' . $pwrlevelHT40_1S_B . '\\n');
        }
    }
}