Files
web.ems/wxc2_omc/element/mss/ACNview.php
2024-10-21 11:36:30 +08:00

585 lines
18 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/*********************************************************
*********************************************************/
require("../../inc/header.inc");
$DEBUG = 0;
$TEST = ($TEST > 0)?$TEST:0;
//value Type
$nInteger = 2;
$nOctStr = 4;
$nShowsize = '40%';
function omcGetObjDb($sysTypeNo){
$dbName = 'OBJ_'.$sysTypeNo;
return($dbName);
}
function omcGetObjTbl($sysTypeNo,$tableType){
$dbName = 'OBJ_'.$sysTypeNo;
$tableName = $dbName.'.paramConf';
return($tableName);
}
function omcStrFill($string,$defLen,$fillWay='high',$fillChar='0'){
if(strlen($string) <= $defLen){
$fillLen=$defLen - strlen($string);
for($i=0;$i<$fillLen;$i++){
if($fillWay == 'low'){
$string = $string.$fillChar;
}else{
$string = $fillChar.$string;
}
}
return($string);
}else{
echo "<br>Error in omcStrFill:the defLen < lengh of string!!";
echo "<br>defLen=$defLen and string=$string!!";
exit();
}
}
$sysConfTable = 'OMC_PUB.sysConf';
$sysTypeNo = (isset($sysTypeNo)?$sysTypeNo:0);
$pubDb ='OMC_PUB';
$paramTable = 'param_99';
$objDb = omcGetObjDb($sysTypeNo);
$paramConfTable = omcGetObjTbl($sysTypeNo,paramConf);
$maxLevelNum = 10;
if($DEBUG) echo "<br>$paramConfTable<br>";
if($DEBUG) echo "<br>aliasName=$aliasName<br>";
//----------------------
//选择语言版本
if($language == 'eng'){
$objNameField=name_2;
$objSetField=setTemplate_2 ; //语种2
}else{
$objNameField=name_1;
$objSetField=setTemplate_1 ; //语种1(默认语种)
}
//-----------------------
//=======================Get value From submit===================
if($set == 'Set')
{
//sort by offset
for($i=1;$i<=$unitNum;$i++)
{
$tmpDef = ${'unitDef_'.$i};
$tmpValue = ${'unit_'.$i};
if($DEBUG) echo "<br>tmpDef = $tmpDef";
$defArr[$i] = $tmpDef;
$tmpDefArr = explode('-',$tmpDef);
$sortArr[$i] = $tmpDefArr[0];
$valueArr[$i] = $tmpValue;
}
$lastValue = '';
$k = 0;
asort($sortArr);
for(reset($sortArr); $key = key($sortArr); next($sortArr))
{
if($DEBUG) echo "<br>sortArr[$key] = {$sortArr[$key]}";
if($DEBUG) echo "<br>unitValue = {$valueArr[$key]}";
$unitValue = $valueArr[$key];
if($DEBUG) echo "<br>defArr[$key] = {$defArr[$key]}";
$unitDefArr = explode('-',$defArr[$key]); //例:0.0-0.7-input -toDec-high-0
if(sizeof($unitDefArr) <= 1)
{
if($DEBUG) echo "<br>nothing,just a name";
continue;
}
$bgnOffset = $unitDefArr[0];
$endOffset = $unitDefArr[1];
$operType = $unitDefArr[2];
$valueType = $unitDefArr[3];
$fillWay = $unitDefArr[4];
$fillChar = $unitDefArr[5];
$bgnOffsetArr = explode('.',$bgnOffset);
$bgnByte = $bgnOffsetArr[0];
$bgnBit = $bgnOffsetArr[1];
$endOffsetArr = explode('.',$endOffset);
$endByte = $endOffsetArr[0];
$endBit = $endOffsetArr[1];
$byteLen = $endByte - $bgnByte + 1;
$byteValue = '';
if($DEBUG) echo "<br>valueType = $valueType";
switch($valueType){
case 'toDec':
if($bgnBit > 0 ||$endBit < 7){
$bitLen = $byteLen*8 - $bgnBit - (7 - $endBit) ; //1 BYTE = 8 bit
$bitValue = DecBin($unitValue);
if($DEBUG) echo "<br>bitValue = $bitValue ";
$bitValue = omcStrFill($bitValue,$bitLen,$fillWay,$fillChar);
if($DEBUG) echo "<br>omcStrFill($bitValue,$bitLen,$fillWay,$fillChar)";
$bitValueArr[$k] = $bitValue;
if($DEBUG) echo "<br>bitValueArr[$k] = {$bitValueArr[$k]}";
if($endBit == 7){//发现这个单元结束并没有跨byte这时需要组成一个byte值
$bitValue = '';
for($bitNo=0; $bitNo<=$k; $bitNo++){
if($DEBUG) echo "<br>bitValueArr[$bitNo] = {$bitValueArr[$bitNo]}";
$bitValue = $bitValueArr[$bitNo].$bitValue;
}
$k=0;
if($DEBUG) echo "<br>bitValue = $bitValue";
$byteLen = strlen($bitValue) / 8;
if($DEBUG) echo "<br>byteLen = $byteLen";
$byteValue = BinDec($bitValue);
$byteValue = DecHex($byteValue);
$strLen = $byteLen*2;
if($DEBUG) echo "<br>omcStrFill($byteValue,$strLen,$fillWay,$fillChar)";
$byteValue = omcStrFill($byteValue,$strLen,$fillWay,$fillChar);
}else{//否则继续组合下一个bit组
$byteValue = '';
$k++;
}
}else{
$byteValue = DecHex($unitValue);
$strLen = $byteLen*2;
$byteValue = omcStrFill($byteValue,$strLen,$fillWay,$fillChar);
if($DEBUG) echo "<br>omcStrFill($byteValue,$strLen,$fillWay,$fillChar)";
}
if($DEBUG) echo "<br>byteValue = $byteValue";
break;
case 'keepDec':
//echo "<br>Error:keepDec";
$byteValue = $unitValue - 0;
break;
case 'toHex':
echo "<br>Error:toHex";
break;
case 'keepHex':
if($bgnBit > 0 || $endBit < 7){//这里的处理不够全面,没有对=7的进行收尾
$byteValue = $unitValue;
$strLen = $byteLen;
$byteValue = omcStrFill($byteValue,$strLen,$fillWay,$fillChar);
$bitValue = DecBin(HexDec($byteValue));
$byteValue='';
$bitLen = $byteLen*8 - $bgnBit - (7 - $endBit) ; //1 BYTE = 8 bit
$bitValue = omcStrFill($bitValue,$bitLen,'high','0');
if($DEBUG) echo "<br>bitValue = $bitValue";
$bitValueArr[$k] = $bitValue;
$k++;
}else{
$k=0;
$byteValue = $unitValue;
$strLen = $byteLen*2;
$byteValue = omcStrFill($byteValue,$strLen,$fillWay,$fillChar);
if($DEBUG) echo "<br>omcStrFill($byteValue,$strLen,$fillWay,$fillChar)";
}
break;
case 'toAscii':
if($bgnBit > 0 ||$endBit < 7){
echo "<br>Error:toAscii";
exit(1);
}else{
$tmpLen=strlen($unitValue);
for($i=0;$i<$tmpLen;$i++){
$unitChar = substr($unitValue,$i,1);
$decValue = ord($unitChar); //ascii -> dec
$byteValue .= DecHex($decValue);
if(strlen($byteValue) < 2){
$byteValue = '0'.$byteValue;
}
}
$strLen = $byteLen*2;
$byteValue = omcStrFill($byteValue,$strLen,$fillWay,$fillChar);
}
break;
default:
echo "Error:Unknown valueType";
break;
}
if($DEBUG) echo "<br>byteValue = $byteValue ";
//--><-//$lastValue = $byteValue.$lastValue;
$lastValue = $lastValue.$byteValue;
}
if($DEBUG) echo "<br>lastValue = $lastValue ";
$setValue = $lastValue;
{
$objWhereStr =getLevelWhere($objIdStr);
$updSql = "UPDATE $paramTable SET initValue = '$setValue'
WHERE $objWhereStr AND instanceNo = '$instanceNo'
";
mysqli_query($pubConn,$updSql);
echo mysqli_error($pubConn);
}
echo "<script language='javascript'>";
echo " location='./signaling.php?trunkgp=$trunkgp&linkset=$linkset';";
echo "</script>";
exit();
}//end of if($set == 1)
//=======================Show GUI ========================
?>
<body>
<script LANGUAGE="JavaScript">
function checkInt(term){
var checkOK = "0123456789";
var checkStr = term.value;
var allValid = true;
var termName = term.name;
var minValue = eval("document.confForm."+termName+"_min.value");
var maxValue = eval("document.confForm."+termName+"_max.value");
var oldValue = eval("document.confForm."+termName+"_old.value");
//alert(minValue+'<'+term.value+'<'+maxValue);
for (i = 0; i < checkStr.length; i++){
ch = checkStr.charAt(i);
for (j = 0; j < checkOK.length; j++){
if (ch == checkOK.charAt(j))
break;
}
if (j == checkOK.length){
allValid = false;
break;
}
}
if (!allValid){
var errAlert="parameter Must be a dec number!";
alert(errAlert);
term.value=oldValue;
term.focus();
return (false);
}
if((minValue - term.value) > 0){
var errAlert="Too little!";
alert(errAlert);
term.value=oldValue;
term.focus();
return (false);
}
if((term.value - maxValue) > 0){
var errAlert="Too Big!";
alert(errAlert);
term.value=oldValue;
term.focus();
return (false);
}
}
</script>
<form method="POST" name="confForm" action="<?php echo"$PHP_SELF?instanceNo=$instanceNo&objIdStr=$objIdStr&sysTypeNo=$sysTypeNo&setname=$setname&linkset=$linkset&trunkgp=$trubkgp";?>" >
<?
if($DEBUG) echo "<br>setValue = $setValue ,inputName = $inputName";
if($objIdStr != NULL){
$objWhereStr =getLevelWhere($objIdStr);
$objSql = "SELECT $objNameField,$objSetField,valueType,length,minValue,maxValue FROM $paramConfTable WHERE $objWhereStr";
$objResult = mysqli_query($pubConn ,$objSql);
$objRows = @mysqli_fetch_array($objResult);
$totalLen = $objRows[length]*2;
$objName = $objRows[$objNameField];
$setTemplate = $objRows[$objSetField];
$valueType = $objRows[valueType];
$minValue = $objRows[minValue];
$maxValue = $objRows[maxValue];
{//get $setValue
$paramTable = 'param_99';
$paramSql = " SELECT initValue FROM $paramTable
WHERE $objWhereStr AND instanceNo = '$instanceNo'
";
// echo "$paramSql";
$v_Result = mysqli_query($pubConn,$paramSql);
$v_Row = mysqli_fetch_array($v_Result);
$setValue = $v_Row[0];
}
}else{
echo "<font><b>ERROR!!:oid == NULL</b></font>";
exit();
}
/**************************************
*objName
*[unit]name[u]xx.xx-yy.yy[u]input[v]toDec-fillHigh-fillChar
*[unit]name[u]xx.xx-yy.yy[u]select[v]value1[opt]desc1[v]value2[opt]desc2
*[remark]
***************************************/
//explode by '[remark]'
$remarkArr = explode('[remark]',$setTemplate);
$remark = $remarkArr[1];
//explode by '[unit]'
$unitArr = explode('[unit]',$remarkArr[0]);
//show instance's name
echo "<table width=\"100%\">";
echo "<tr><td>";
echo "<b>ACN</b>&nbsp;&nbsp;";
echo "</td>";
echo "<td>";
echo "<p align=\"right\"><a href=\"./msc_local.php?back_page=$back_page\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">$strBack</a>";
echo "</td></tr>";
echo "</table>";
//show every one unit
//--><-//$setValue = strrev($setValue);
echo "<table border=\"1\" width=\"100%\" cellpadding=\"1\" cellspacing=\"0\" bordercolor=\"#666666\" bordercolordark=\"#FFFFFF\">";
echo "<tr bgcolor=\"#E6E6E6\">";
echo "<td width=\"50%\"><b>Parameters</b></td>";
echo "<td><b>Value</b></td>";
echo "<tr>";
for($i=1;$i<sizeof($unitArr);$i++){
echo "\n <tr><td width=\"10%\" valign=middle><nobr>";
//unit input name
$unitName = "unit_".$i;
//explode by '[u]'
$tlvArr = explode('[u]',$unitArr[$i]);
if(sizeof($tlvArr) <= 1 ){
echo "<u><b>{$unitArr[$i]}</b></u>";
continue;
}
//show Unit Name
echo "$tlvArr[0]";
echo "&nbsp;</nobr></td><td>";
if($DEBUG) echo "$tlvArr[1]";
//explode by '-'
$offsetArr = explode('-',$tlvArr[1]);
$bgnOffsetArr = explode('.',$offsetArr[0]);
$bgnByte = $bgnOffsetArr[0];
$bgnBit = $bgnOffsetArr[1];
$endOffsetArr = explode('.',$offsetArr[1]);
$endByte = $endOffsetArr[0];
$endBit = $endOffsetArr[1];
$byteLen = $endByte - $bgnByte + 1;
$byteValue = substr($setValue,$bgnByte*2,$byteLen*2);
//--><-//$byteValue = strrev($byteValue);
if($DEBUG) echo "<br>byteValue = $byteValue";
$bitValue = '';
if($bgnBit > 0 ||$endBit < 7){
if($DEBUG) echo "<br>$bgnBit > 0 ||$endBit < 7";
$bitValue = HexDec($byteValue);
$bitValue = DecBin($bitValue);
if($DEBUG) echo "<br>bitValue = $bitValue";
$bitLen = $byteLen*8;//1 byte = 8 bit
$bitValue = omcStrFill($bitValue,$bitLen,'high','0');
if($DEBUG) echo "<br>omcStrFill($bitValue,$bitLen,'high','0')";
$bitValue = strrev($bitValue);
$catBitLen = $endByte*8+$endBit - ($bgnByte*8+$bgnBit) + 1; //1 byte = 8 bit
if($DEBUG) echo "<br>bitValue = substr($bitValue,$bgnBit,$catBitLen)";
$bitValue = substr($bitValue,$bgnBit,$catBitLen);
$bitValue = strrev($bitValue);
if($DEBUG) echo "<br>bitValue = $bitValue";
}
//explode by '[v]'
$valueArr = explode('[v]',$tlvArr[2]);
$operType = chop($valueArr[0]);
$valueArr[1] = chop($valueArr[1]);
if($DEBUG) echo "<br>operType = $operType";
switch($operType){
case 'input'://
//explode by '-'
$defArr = explode('-',$valueArr[1]);
if($DEBUG) echo "<br>defArr = $defArr[0],$defArr[1],$defArr[2]";
switch($defArr[0]){
case 'toDec':
if(strlen($bitValue) > 0){
$inputValue = BinDec($bitValue);
}else{
$inputValue = HexDec($byteValue);
}
break;
case 'keepDec':
$inputValue = $byteValue;
break;
case 'toHex':
echo "<br>Error:toHex";
break;
case 'keepHex':
$inputValue = $byteValue;
break;
case 'toAscii':
$charValue = "";
if($bgnBit > 0 ||$endBit < 7){
echo "<br>Error:toAscii";
exit(1);
}else{
$tmpLen=strlen($byteValue);
for($charCount=0;$charCount<$tmpLen;$charCount++){
$unitByte = substr($byteValue,$charCount,2);
$unitChar = chr(HexDec($unitByte)); // hex -> ascii
if($DEBUG) echo "<br>unitChar=$unitChar";
$charValue .= $unitChar;
$charCount++;
}
$inputValue = $charValue;
}
break;
default:
echo "<br>Error:valueType=$defArr[0]";
break;
}
if($DEBUG) echo "<br>inputValue = $inputValue";
switch($defArr[1]){
case 'high':
switch($defArr[2]){
case '0':
if($defArr[0] == 'toHex' || $defArr[0] == 'keepHex'){
//$inputValue = str_replace('0','',$inputValue);
}else{
$inputValue = $inputValue - 0;
}
break;
case 'E':
echo "Error:high fill E";
break;
default: break;
}
break;
case 'low':
if ("toAscii" != $defArr[0]) {
switch($defArr[2]){
case '0':
$inputValue = str_replace('00','',$inputValue);
break;
case 'E':
$inputValue = str_replace('E','',$inputValue);
break;
default: break;
}
}
break;
default: break;
}
if($DEBUG) echo "<br>$valueType == $nOctStr";
if($valueType == $nOctStr){
if($defArr[0] == 'toAscii'){
$inputLen = $byteLen;
}elseif($defArr[0] == 'toHex' || $defArr[0] == 'keepHex'){
$inputLen = $byteLen *2;
}else{
$inputLen = $byteLen *3;
}
//echo "<input type=\"text\" size=\"$inputLen\" maxLength =\"$inputLen\" name=\"$unitName\" value=\"$inputValue\" class=\"text\">";
echo "<input type=\"text\" style=width:\"$nShowsize\" maxLength =\"$inputLen\" name=\"$unitName\" value=\"$inputValue\" class=\"text\">";
}else{
//echo "<input type=\"text\" size=\"8\" name=\"$unitName\" value=\"$inputValue\" onchange=\"checkInt(this)\" class=\"text\">";
echo "<input type=\"text\" style=width:\"$nShowsize\" name=\"$unitName\" value=\"$inputValue\" onchange=\"checkInt(this)\" class=\"text\">";
echo "<input type=\"hidden\" name=\"$unitName"."_min\" value=\"$minValue\">";
echo "<input type=\"hidden\" name=\"$unitName"."_max\" value=\"$maxValue\">";
echo "<input type=\"hidden\" name=\"$unitName"."_old\" value=\"$inputValue\">";
}
break;
case 'select':
if($valueType == $nOctStr){
if($bitValue != ''){
$selectValue = BinDec($bitValue);
}else{
$selectValue = HexDec($byteValue);
}
}else{
$selectValue=$byteValue;
}
if($DEBUG) echo "<br>bitValue = $bitValue";
if($DEBUG) echo "<br>selectValue = $selectValue";
if($DEBUG) echo "<br>$valueType =?= $nOctStr(nOctStr)";
//echo "<select size=\"1\" name=\"$unitName\">";
/*echo "<select size=\"1\" name=\"$unitName\" style=width:\"$nShowsize\">";*/
$isSelected = 0;
for($j=1;$j<sizeof($valueArr);$j++){
//explode by '[opt]'
$defArr = explode('[opt]',$valueArr[$j]);
if(sizeof($defArr) < 2){
/* echo "<option value=\"$selectValue\" selected>Reserved Value</option>";*/
echo "Reserved Value";
break;
}elseif($defArr[0] == $selectValue){
/* echo "<option value=\"$defArr[0]\" selected>$defArr[1]</option>";*/
echo "$defArr[1]";
//echo "$defArr[0]";
$isSelected = 1;
}/*else{
// echo "<option value=\"$defArr[0]\">$defArr[1]</option>";
echo "$defArr[1]";
$defArr[1];
}*/
}
if($isSelected ==0 && $j == sizeof($valueArr)){
echo "<option value=\"$selectValue\" selected>Undefined Value</option>";
}
echo "</select>";
break;
default: echo "<br>Error:operType =|$operType|";
break;
}//end of switch(..)
//like:unitDef_1 = 1.0-2.0-select-keepHex-high-0 -->$tlvArr[1]-$operType-
if($operType == 'select'){ //select
if($valueType == $nOctStr){
$tempDef = $tlvArr[1].'-'.$operType.'-'.'toDec-high-0';
}else{
$tempDef = $tlvArr[1].'-'.$operType.'-'.'keepDec-high-0';
}
}else{
$tempDef = $tlvArr[1].'-'.$operType.'-'.$valueArr[1];
}
$tempDef = str_replace(" ", "", $tempDef);
$tempDef = chop($tempDef);
echo "\n <input type=\"hidden\" name=\"unitDef_$i\" value=\"$tempDef\">";
echo "</td></tr>";
}//end of for(..)
//parmmeter alias
/*
echo "<td>";
echo "Alais:";
echo "<input type=text size=20 name=\"strAlias\" value=\"$strAlias\" class=text>";
echo "</td>";
*/
echo "</table>";
$unitNum = $i-1;
echo "\n<input type=\"hidden\" name=\"unitNum\" value=\"$unitNum\">";
echo "\n<input type=\"hidden\" name=\"inputName\" value=\"$inputName\">";
echo "\n<input type=\"hidden\" name=\"objIdStr\" value=\"$objIdStr\">";
echo "\n<input type=\"hidden\" name=\"sysTypeNo\" value=\"$sysTypeNo\">";
echo "\n<input type=\"hidden\" name=\"setValue\" value=\"$setValue\">";
echo "\n<input type=\"hidden\" name=\"TEST\" value=\"$TEST\">";
//echo "\n<input type=\"hidden\" name=\"strAlias\" value=\"$strAlias\">";
$remark=nl2br($remark);
//echo "<tr><br><br><b>Remarks:</b><br>$remark<br><br></tr>";
echo "</Form>";
//=======================Test input field========================
if($TEST){
echo "<Form method=\"POST\" name=\"testForm\" action=\"$PHP_SELF\">";
echo "<hr>";
//--><--// $setValue = strrev($setValue);
echo "<u><b>Test Area</b></u><br>";
echo "Test Value:&nbsp;&nbsp;&nbsp;<input type=\"text\" name=\"setValue\" value=\"$setValue\">";
echo "<input type=\"submit\" name=\"setTest\" value=\"set..\">";
echo "\n<input type=\"hidden\" name=\"sysTypeNo\" value=\"$sysTypeNo\">";
echo "\n<input type=\"hidden\" name=\"objIdStr\" value=\"$objIdStr\">";
echo "\n<input type=\"hidden\" name=\"inputName\" value=\"$inputName\">";
echo "\n<input type=\"hidden\" name=\"TEST\" value=\"$TEST\">";
echo "</Form>";
}
?>
</body>
</html>