📄 statuscbk.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 + -