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

📄 statuscbk.c

📁 基于网络服务控制芯片TF-320的嵌入式web server源代码
💻 C
字号:
/****************************************************************************
*
*	Name:			moduleStatuc.c
*
*	Description:	Call Back Function
*
*	Copyright:		Conner Zhang.
*	Author:			Eli
*	                All rights reserved.
*
****************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "tfTypes.h"
#include "fs.h"
#include "httpd.h"
#include "html.h"
#include "Sstatus.h"		// html file
#include "ip113f.h"
#include "Eeprom.h"

extern variable_t var_list[];
extern struct httpd_state *hs;
int  stNo=0;
int statusData;
extern int sign;
static char statusbuf[80];
extern unsigned int mr1600_sign[16];


bit_t showStatusOption(void)
{
	u8_t *sel;		
	
	if (hs->opt_id > 15)
		return ERROR;
	if ((hs->opt_id == stNo ))
		sel = "SELECTED";
	else
		sel = "";

//	sprintf(statusbuf,"<option value=\"%d\" %s>%d",hs->opt_id,sel, hs->opt_id);	
	sprintf(statusbuf,"<option =\"%d\" %s>%d",hs->opt_id,sel, hs->opt_id);	
	hs->opt_id++;
	return OK;
}

u8_t ssiModuleSstatus(u8_t varid, value_t *vp)
{   
	char *str;
	u8_t *sel;

    switch (varid)
    {
  	case TGI_STATUS_NO:
			vp->type = string;			
			if (showStatusOption() == OK)  //the select_port_opt_id<8 return OK
			{
//				if(hs->opt_id == 1)//?
					vp->value.string = statusbuf;							
				return HTTP_MORE;   //HTTP_MORE = 2
			}			
			else  //else return ERROR
			{
				vp->value.string = "";				
				return OK;
			}				

	case TGI_Link_Status:
			if(sign ==1)
			{
				if(statusData&0x0040)		//bit 6		
					str = "Off";
				else				
					str = "On";
			        vp->value.string = str;
			        vp->type = string;
			}
			else
			{
					vp->value.string = "";
				        vp->type = string;
			}
		break;
	case TGI_Speed_Status:
			if(sign ==1)
				{
					if(statusData&0x0008)		//bit 3		
						str = "100M";
					else				
						str = "10M";

			        vp->value.string = str;
			        vp->type = string;
				}
			else
				{
					vp->value.string = "";
				        vp->type = string;
				}

		break;
	case TGI_Duplex_Status:
			if(sign ==1)
				{
					if(statusData&0x0010)		//bit 4		
						str = "Full";
					else				
						str = "Half";

			        vp->value.string = str;
			        vp->type = string;
				}
			else
				{
					vp->value.string = "";
				        vp->type = string;
				}
		break;
		
	case TGI_AN_Status:				//bit 2
			if(sign ==1)
				{
					if(statusData&0x0004)				
						str = "Enable";
					else				
						str = "Disable";

			        vp->value.string = str;
			        vp->type = string;
				}
			else
				{
					vp->value.string = "";
				        vp->type = string;
				}
		break;
		
	case TGI_FC_Status:			//bit 5
			if(sign ==1)
				{
					 str = "Enable";
				        vp->value.string = str;
				        vp->type = string;
				}
			else
				{
					vp->value.string = "";
				        vp->type = string;
				}
		break;
	case TGI_LFP_Status:			//bit 15
			if(sign ==1)
				{
					if(statusData&0x8000)				
						str = "Enable";
					else				
						str = "Disable";

			        vp->value.string = str;
			        vp->type = string;
				}
			else
				{
					vp->value.string = "";
				        vp->type = string;
				}
		break;
	
  default:
		vp->value.string = "";
		vp->type = string;
            break;
    }

    return OK;
}
u8_t tgiModuleSstatus(u8_t cnt, value_t *vp)
{
  
	int j;
	unsigned char receivebuf[4];
	unsigned char sendbuf[9];
	unsigned int d0;

	stNo= atoi(var_list[0].value) ;   // value
	
	if ( strncmp( var_list[1].value, "Refresh", 7)==0 )	
	{		

		if(stNo<10)
		{
			sendbuf[1]='0';
			sendbuf[2]=stNo+'0';
		}
		else
		{
			sendbuf[1]='1';
			sendbuf[2]=stNo-10+'0';
		}

//===================================================
//read from w78e58b

		sign=mr1600_sign[stNo];

		if(sign==1)
		{
			sendbuf[0]='r';//select func number
			sendbuf[3]='2';
			sendbuf[4]='2';
			sendbuf[5]='0';
			sendbuf[6]='0';
			sendbuf[7]='0';
			sendbuf[8]='0';
			putstr(sendbuf);
			while(get_char_com()!='s');
			getstr(receivebuf);
			
			statusData=0;
			for(j=0;j<4;j++)
			{
					
				if((receivebuf[j]>='0')&&(receivebuf[j]<='9'))
				{
					d0=(receivebuf[j]-'0')&0x0f;

				}
				else	if((receivebuf[j]>='a')&&(receivebuf[j]<='f'))
				{
					d0=(receivebuf[j]-'a'+10)&0x0f;

				}
				else	if((receivebuf[j]>='A')&&(receivebuf[j]<='F'))
				{
					d0=(receivebuf[j]-'A'+10)&0x0f;

				}
				statusData=(statusData |( d0<<((3-j)*4)))&0xffff;
					
			}
				Delay(300);
		}
 				httpd_send_file(fs_open3("Sstatus.htm"));

	}
    return OK;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -