⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 web.c

📁 基于嵌入式web服务器的web应用层代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/*********************************************************************
    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>&nbsp; 源盘号:%d\n", p_iframe->src_board);
				printf("<p>&nbsp; 源端口号:%d\n", p_iframe->src_port);
				printf("<p>&nbsp; 源时隙号:%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>&nbsp; 局端/终端模式:DCE\n");
					else
						printf("<p>&nbsp; 局端/终端模式:DTE\n");
				}
				else if (p_iframe->mode_type == 2)
				{
					if (p_iframe->work_mode)
						printf("<p>&nbsp; 收数据相位:时钟下降沿采样\n");
					else
						printf("<p>&nbsp; 收数据相位:时钟上升沿采样\n");
				}
				else if (p_iframe->mode_type == 3)
				{
					if (p_iframe->work_mode)
						printf("<p>&nbsp; 发数据相位:时钟下降沿输出\n");
					else
						printf("<p>&nbsp; 发数据相位:时钟上升沿输出\n");					
				}
				else if (p_iframe->mode_type == 4)
				{
					if (p_iframe->work_mode)
						printf("<p>&nbsp; 工作时钟:外时钟\n");
					else
						printf("<p>&nbsp; 工作时钟:内时钟\n");					
				}
				else if (p_iframe->mode_type == 5)
				{
					if (p_iframe->work_mode)
						printf("<p>&nbsp; E1时钟:从时钟\n");
					else
						printf("<p>&nbsp; E1时钟:主时钟\n");					
				}
				else
				{
					printf("<p>&nbsp; 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>&nbsp; 端口%d:\n", i+1);
					if (p_iframe->board_main_clk[i])
						printf("<p>&nbsp;&nbsp;&nbsp; E1时钟:从时钟\n");
					else
						printf("<p>&nbsp;&nbsp;&nbsp; E1时钟:主时钟\n");
					if (p_iframe->board_work_mode[i])
						printf("<p>&nbsp;&nbsp;&nbsp; 局端/终端:DCE\n");
					else
						printf("<p>&nbsp;&nbsp;&nbsp; 局端/终端:DTE\n");
					if (p_iframe->board_work_rxp[i])
						printf("<p>&nbsp;&nbsp;&nbsp; 收数据相位:时钟下降沿采样\n");
					else
						printf("<p>&nbsp;&nbsp;&nbsp; 收数据相位:时钟上升沿采样\n");
					if (p_iframe->board_work_txp[i])
						printf("<p>&nbsp;&nbsp;&nbsp; 发数据相位:时钟下降沿输出\n");
					else	
						printf("<p>&nbsp;&nbsp;&nbsp; 发数据相位:时钟上升沿输出\n");
					if (p_iframe->board_work_clk[i])
						printf("<p>&nbsp;&nbsp;&nbsp; 时钟源:外时钟\n");
					else
						printf("<p>&nbsp;&nbsp;&nbsp; 时钟源:内时钟\n");
					printf("<p>&nbsp;&nbsp;&nbsp; 带宽:%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>&nbsp; 优先级%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 + -