📄 web.c
字号:
/*********************************************************************
Filename: web.c
Revised: $Date: 2007-12-20 10:02:15 -0800 $
Revision: $Revision: 10194 $
Description:
Notes:
*********************************************************************/
/*********************************************************************
* INCLUDES
*/
#include <string.h>
#include "analyseframe.h"
#include "uart.h"
#include "web.h"
/*********************************************************************
* LOCAL VARIABLES
*/
web_clock_id_t web_clock_id[22] =
{
{CLOCK_ID_OPT1 ,"光口1"},
{CLOCK_ID_OPT2 ,"光口2"},
{CLOCK_ID_PORT_OPT1 ,"支路光口1"},
{CLOCK_ID_PORT_OPT2 ,"支路光口2"},
{CLOCK_ID_BOARD1_PORT1 ,"盘号1对应支路1"},
{CLOCK_ID_BOARD1_PORT2 ,"盘号1对应支路2"},
{CLOCK_ID_BOARD1_PORT3 ,"盘号1对应支路3"},
{CLOCK_ID_BOARD1_PORT4 ,"盘号1对应支路4"},
{CLOCK_ID_BOARD2_PORT1 ,"盘号2对应支路1"},
{CLOCK_ID_BOARD2_PORT2 ,"盘号2对应支路2"},
{CLOCK_ID_BOARD2_PORT3 ,"盘号2对应支路3"},
{CLOCK_ID_BOARD2_PORT4 ,"盘号2对应支路4"},
{CLOCK_ID_BOARD3_PORT1 ,"盘号3对应支路1"},
{CLOCK_ID_BOARD3_PORT2 ,"盘号3对应支路2"},
{CLOCK_ID_BOARD3_PORT3 ,"盘号3对应支路3"},
{CLOCK_ID_BOARD3_PORT4 ,"盘号3对应支路4"},
{CLOCK_ID_BOARD4_PORT1 ,"盘号4对应支路1"},
{CLOCK_ID_BOARD4_PORT2 ,"盘号4对应支路2"},
{CLOCK_ID_BOARD4_PORT3 ,"盘号4对应支路3"},
{CLOCK_ID_BOARD4_PORT4 ,"盘号4对应支路4"},
{CLOCK_ID_FREE ,"本振"},
{CLOCK_ID_EXT_CLOCK ,"外时钟"},
};
web_alarm_id_t web_alarm_id[20] =
{
{ALM_ID_E1_LOS, "2M LOS"},
{ALM_ID_V35_LOS, "V35 LOS"},
{ALM_ID_V35_AIS, "V35 AIS"},
{ALM_ID_V35_LOF, "V35 LOF"},
{ALM_ID_V35_CV, "V35 HDB3"},
{ALM_ID_OPT_LOS, "OPT LOS"},
{ALM_ID_OPT_LOF, "OPT LOF"},
{ALM_ID_OPT_E3, "OPT E3"},
{ALM_ID_OPT_E6, "OPT E6"},
{ALM_ID_PWR_ERR, "PWR ERR"},
{DIS_ALM_ID_E1_LOS, "2M LOS CLEAR"},
{DIS_ALM_ID_V35_LOS, "V35 LOS CLEAR"},
{DIS_ALM_ID_V35_AIS, "V35 AIS CLEAR"},
{DIS_ALM_ID_V35_LOF, "V35 LOF CLEAR"},
{DIS_ALM_ID_V35_CV, "V35 HDB3 CLEAR"},
{DIS_ALM_ID_OPT_LOS, "OPT LOS CLEAR"},
{DIS_ALM_ID_OPT_LOF, "OPT LOF CLEAR"},
{DIS_ALM_ID_OPT_E3, "OPT E3 CLEAR"},
{DIS_ALM_ID_OPT_E6, "OPT E6 CLEAR"},
{DIS_ALM_ID_PWR_ERR, "PWR ERR CLEAR"},
};
web_event_id_t web_event_id[12] =
{
{EVENT_ID_B1, "B1越限"},
{EVENT_ID_B2, "B2越限"},
{EVENT_ID_B3, "B3越限"},
{EVENT_ID_B5, "B4越限"},
{EVENT_ID_ES, "ES越限"},
{EVENT_ID_SES, "SES越限"},
{EVENT_ID_UAS, "UAS越限"},
{EVENT_ID_REI, "REI越限"},
{EVENT_ID_PJC_P, "PJC+越限"},
{EVENT_ID_PJC_M, "PJC-越限"},
{EVENT_ID_OPT_SW, "光口倒换"},
{EVENT_ID_CLK_SW, "时钟源切换"},
};
/*********************************************************************
* FUNCTIONS
*/
//显示网页界面
void display_web_head(void)
{
//printf("Content-type: text/html\n\n"); //这里一定要2个"\n\n",不能是"\r\n",否则网页显示不出来
printf("Content-type: text/html;charset=gb2312\n\n"); //加上charset=gb2312 后可以显示中文而没有乱马
printf("<html>\n");
printf("<head>\n<title>SDH 配置查询结果</title>\n</head>\n");
printf("<body>\n");
}
void display_web_tail(void)
{
printf("</body>\n");
printf("</html>\n");
}
void display_web_set_result(void)
{
info_frame_t *p_iframe = &info_frame;
if (p_iframe->success_flag == 0)
{
printf("<p>配置成功!\n");
}
else if (p_iframe->success_flag == 1)
{
printf("<p>命令帧无法解析!\n");
}
else if (p_iframe->success_flag == 2)
{
printf("<p>命令无法执行!\n");
}
else
{
printf("<p>配置失败!\n");
}
printf("<p><a href=../index.html>返回 </a><p>");
}
void display_web_read_result(void)
{
unsigned short int i, j;
unsigned int temp = 0;
cmd_frame_t *p_cframe = &cmd_frame;
info_frame_t *p_iframe = &info_frame;
if (p_iframe->success_flag == 0)
{
switch (p_cframe->cmd_code_recv)
{
case CMD_ACK_READ_DXC_TIMESLOT:
printf("<p>时隙交叉查询结果如下:\n");
printf("<p> 源盘号:%d\n", p_iframe->src_board);
printf("<p> 源端口号:%d\n", p_iframe->src_port);
printf("<p> 源时隙号:%d\n", p_iframe->src_timeslot);
break;
case CMD_ACK_READ_V35_WORKMODE:
printf("<p>V35工作模式查询结果如下:\n");
if (p_iframe->mode_type == 1)
{
if (p_iframe->work_mode)
printf("<p> 局端/终端模式:DCE\n");
else
printf("<p> 局端/终端模式:DTE\n");
}
else if (p_iframe->mode_type == 2)
{
if (p_iframe->work_mode)
printf("<p> 收数据相位:时钟下降沿采样\n");
else
printf("<p> 收数据相位:时钟上升沿采样\n");
}
else if (p_iframe->mode_type == 3)
{
if (p_iframe->work_mode)
printf("<p> 发数据相位:时钟下降沿输出\n");
else
printf("<p> 发数据相位:时钟上升沿输出\n");
}
else if (p_iframe->mode_type == 4)
{
if (p_iframe->work_mode)
printf("<p> 工作时钟:外时钟\n");
else
printf("<p> 工作时钟:内时钟\n");
}
else if (p_iframe->mode_type == 5)
{
if (p_iframe->work_mode)
printf("<p> E1时钟:从时钟\n");
else
printf("<p> E1时钟:主时钟\n");
}
else
{
printf("<p> V35工作模式类型有误\n");
}
break;
case CMD_ACK_READ_V35_TIMESLOT:
printf("<p>V35带宽查询结果如下:\n");
printf("<p>V35带宽:%d\n", p_iframe->down_timeslot);
break;
case CMD_ACK_READ_V35_ATTRIBUTE:
printf("<p>查询某V35盘的所有属性结果如下:\n");
for (i=0; i<2; i++)
{
printf("<p> 端口%d:\n", i+1);
if (p_iframe->board_main_clk[i])
printf("<p> E1时钟:从时钟\n");
else
printf("<p> E1时钟:主时钟\n");
if (p_iframe->board_work_mode[i])
printf("<p> 局端/终端:DCE\n");
else
printf("<p> 局端/终端:DTE\n");
if (p_iframe->board_work_rxp[i])
printf("<p> 收数据相位:时钟下降沿采样\n");
else
printf("<p> 收数据相位:时钟上升沿采样\n");
if (p_iframe->board_work_txp[i])
printf("<p> 发数据相位:时钟下降沿输出\n");
else
printf("<p> 发数据相位:时钟上升沿输出\n");
if (p_iframe->board_work_clk[i])
printf("<p> 时钟源:外时钟\n");
else
printf("<p> 时钟源:内时钟\n");
printf("<p> 带宽:%d\n", p_iframe->board_down_timeslot[i]);
}
break;
case CMD_ACK_READ_CLOCK_PRIO:
printf("<p>查询时钟源优先级结果如下:\n");
for (i=0; i<10; i++)
{
printf("<p> 优先级%d:", i+1);
for (j=0; j<22; j++)
{
if (p_iframe->clock_prio[i] == web_clock_id[j].clock_id)
{
printf("%s\n", web_clock_id[j].ch_name);
break;
}
}
if (j == 22)
printf("没有对应时钟源\n");
}
break;
case CMD_ACK_READ_WORK_CLOCK:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -