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'); } }
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; }
$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'); } } }