#include "shrink.h" #ifdef _UCOS #include "adc.h" #include "led.h" struct cgiinfo cgiinfos[] = /* CGI注册 */ { {"cpustat.cgi", {0}, {0}, CPUStatCGI,0,0,0,0}, {"led.cgi", {0}, {0}, LEDCGI,0,0,0,0}, //{"luaparse.cgi", {0}, {0}, LuaParseCGI,0,0,0,0}, {"adc.cgi", {0}, {0}, ADCCGI,0,0,0,0}, {"files.cgi", {0}, {0}, FilesCGI,0,0,0,0}, }; const int cgi_len = sizeof(cgiinfos) / sizeof(*cgiinfos); /* CGI个数 */ static char * cgigetenv(char* env, const char* varname) { int len = strlen(varname); while(*env != NULL) { if(ncasecmp(env,varname,len) == 0) { return env+len+1; } env = strchr(env,'\0'); env ++; } return env; } //static int led=0; void LEDCGI(void* pdata) /* Led操作CGI */ { int i; int led; int n; uint8 err; char * p; struct cgiinfo * pcf; i = cginame2no("led.cgi"); Led_Init(); if(i!=-1) { pcf = &cgiinfos[i]; while(1) { n = 0; sem_wait(pcf->cgisem,0,&err); if(cgigetenv(pcf->env,"QUERY_STRING")) { p = cgigetenv(pcf->env,"QUERY_STRING"); if(ncasecmp(strstr(p,"led="),"led=",4) == 0) { led = atoi(p+4); HC595_SendDat(led); } } n += _snprintf(pcf->iobuf+n, IO_REMOTE-n, "%s", "Contenttype: text/plain\n\n"); n += _snprintf(pcf->iobuf+n, IO_REMOTE-n, "%d", led); sem_post(pcf->wssem); } } else { } } void ADCCGI(void* pdata) /* ADC操作CGI */ { int i; int n; uint8 err; struct cgiinfo * pcf; ADCInit(); i = cginame2no("adc.cgi"); if(i!=-1) { pcf = &cgiinfos[i]; while(1) { n = 0; sem_wait(pcf->cgisem,0,&err); ADCR = (ADCR) | (1 << 24); OSSemPend(adsem,0,&err); ADC_Data = (ADC_Data>>6) & 0x3FF; ADC_Data = ADC_Data*3300; ADC_Data = ADC_Data/1024; n += _snprintf(pcf->iobuf+n, IO_REMOTE-n, "%s", "Contenttype: text/plain\n\n"); n += _snprintf(pcf->iobuf+n, IO_REMOTE-n, "%d", ADC_Data); sem_post(pcf->wssem); } } } void CPUStatCGI(void* pdata) /* 查看CPU状态CGI */ { int i; int n; uint8 err; struct cgiinfo * pcf; i = cginame2no("cpustat.cgi"); if(i!=-1) { pcf = &cgiinfos[i]; while(1) { n = 0; sem_wait(pcf->cgisem,0,&err); n += _snprintf(pcf->iobuf+n, IO_REMOTE-n, "%s", "Contenttype: text/plain\n\n"); n += _snprintf(pcf->iobuf+n, IO_REMOTE-n, "%d", OSCPUUsage); sem_post(pcf->wssem); } } else { } } void FilesCGI(void* pdata) /* 查看WebServer文件信息CGI */ { int i; int n; uint8 err; struct cgiinfo * pcf; int j; i = cginame2no("files.cgi"); if(i!=-1) { pcf = &cgiinfos[i]; while(1) { n = 0; sem_wait(pcf->cgisem,0,&err); n += _snprintf(pcf->iobuf+n, IO_REMOTE-n, "%s", "Contenttype: text/plain\n\n"); n += _snprintf(pcf->iobuf+n, IO_REMOTE-n, "%s", "
" "| No | " "Fime Name | " "Starting Address | " "Length(Bytes) | "); for(j=0;j||||
|---|---|---|---|---|---|---|---|
| %d | %s | 0x%x | %d |