📄 egi_time.lst
字号:
C51 COMPILER V7.50 EGI_TIME 10/12/2006 15:31:45 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE EGI_TIME
OBJECT MODULE PLACED IN .\Release\EGI_TIME.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE egi_funcs\EGI_TIME.C LARGE OPTIMIZE(9,SIZE) BROWSE ORDER MODDP2 INCDIR(.\WE
-BPAGE\;..\..\inc\) DEBUG OBJECTEXTEND PRINT(.\Release\EGI_TIME.lst) OBJECT(.\Release\EGI_TIME.obj)
line level source
1 /*
2 *
3 * Egi_stat.c
4 *
5 * Part of the Myson Century CS620X demo program.
6 *
7 * Authors: LY Lin, WM Wang, IJ Chen, WH Lee
8 *
9 * Egi_stat.c contains HTTP status.cgi callback routine.
10 *
11 * This program was developed using the Keil 8051 C uVision 2 system.
12 * The Keil compiler MUST be used if working with Myson Century supplied
13 * firmware.
14 *
15 *
16 *
17 */
18
19
20 #include <stdio.h>
21 #include <string.h>
22 #include <ctype.h>
23 #include <stdlib.h>
24 #include "ether.h"
25 #include "netutil.h"
26 #include "ip.h"
27 #include "tcp.h"
28 #include "config.h"
29 #include "http.h"
30 #include "time.h"
31 #include "rtc_api.h"
32 //extern xdata unsigned char PORTB_EN;
33 //extern xdata unsigned char PORTB;
34 int x=0,y=0;
35 //sfr P1=0x90;
36 /************************************************************************
37 /* Function Name : status_resp *
38 /* *
39 /* Arguments : *
40 /* TSOCK xdata *ts: Point to TSOCK. *
41 /* char xdata *str: Point to egi comment tag string(<!--#) *
42 /* or NULL if this function is first time be *
43 /* called. *
44 /* *
45 /* Return : *
46 /* None *
47 /* Comment : *
48 /* This function is a callback function for status.cgi. First, *
49 /* this function be called on the start of status.cgi with *
50 /* str=NULL. Then when webpage meet egi comment tag(<!--#) , *
51 /* this function will be called , the 'str' is point to egi *
52 /* comment tag. *
53 /* *
54 /************************************************************************/
C51 COMPILER V7.50 EGI_TIME 10/12/2006 15:31:45 PAGE 2
55 void time_resp(TSOCK xdata *ts, char xdata *str)
56 {
57 1 APPDATA *adp;
58 1 RAM_WEB_PAGE *ptr_web_page;
59 1 unsigned int hour_val,min_val;
60 1 unsigned char *temp;
61 1 unsigned int year_val,mon_val,date_val;
62 1 unsigned int day_val=0;
63 1 int webdebug=0;
64 1 unsigned char *s,*p,*q;
65 1 char *dest;
66 1 char dest2[16];
67 1 adp = (APPDATA *)ts->app;
68 1 if (!str) /*The egi function is called the first time.*/
69 1 {/*Init app for time.cgi. */
70 2 adp->egi = time_resp;
71 2 ptr_web_page = search_get_web_page ("time.cgi");
72 2 adp->in = ptr_web_page->RAM_WEB_PAGE_DATA;
73 2 adp->file_length = ptr_web_page->RAM_WEB_PAGE_LEN;
74 2 s=find_connvar(ts,"L1");
75 2 while(*s)
76 2 {
77 3 s=find_connvar(ts,"U1");
78 3 p=find_connvar(ts,"U2");
79 3 if(!*s)
80 3 break;
81 3 s=s+3;
82 3 if((isdigit(*s)||isdigit(*(p+3)))==0)
83 3 {
84 4 x=0;
85 4 break;
86 4 }
87 3 if(isdigit(*s)==0)
88 3 {
89 4 x=1;
90 4 break;
91 4 }
92 3 hour_val=strtoul(s,&temp,10);
93 3 p=p+3;
94 3 if(isdigit(*p)==0)
95 3 {
96 4 x=1;
97 4 break;
98 4 }
99 3 min_val=strtoul(p,&temp,10);
100 3 if(!((min_val<60)&&(hour_val<24)))
101 3 {
102 4 x=2;
103 4 break;
104 4 }
105 3 rtc_time_write(0x06,hour_val);
106 3 rtc_time_write(0x05,min_val);
107 3 break;
108 3 }
109 2 s=find_connvar(ts,"L1");
110 2 while(*s)
111 2 {
112 3 s=find_connvar(ts,"V1");
113 3 p=find_connvar(ts,"V2");
114 3 q=find_connvar(ts,"V3");
115 3 if(!*s)
116 3 break;
C51 COMPILER V7.50 EGI_TIME 10/12/2006 15:31:45 PAGE 3
117 3 s=s+3;
118 3 if((isdigit(*s)||isdigit(*(p+3))||isdigit(*(q+3)))==0)
119 3 {
120 4 y=0;
121 4 break;
122 4 }
123 3 if(isdigit(*s)==0)
124 3 {
125 4 y=1;
126 4 break;
127 4 }
128 3 year_val=strtoul(s,&temp,10);
129 3 p=p+3;
130 3 if(isdigit(*p)==0)
131 3 {
132 4 y=1;
133 4 break;
134 4 }
135 3 mon_val=strtoul(p,&temp,10);
136 3 q=q+3;
137 3 if(isdigit(*q)==0)
138 3 {
139 4 y=1;
140 4 break;
141 4 }
142 3 date_val=strtoul(q,&temp,10);
143 3 if(!((mon_val<=12)&&(date_val<=31)&&(year_val>2000)))
144 3 {
145 4 y=2;
146 4 break;
147 4 }
148 3 day_val=get_days(year_val,mon_val,date_val);
149 3 rtc_date_write(0x07,day_val);
150 3 break;
151 3 }
152 2 }
153 1 else/*Egi comment tag.*/
154 1 {
155 2 str += EGI_STARTLEN;/*Skip "<!--#" .*/
156 2 while(!strncmp(str, "$label0", 7) )//&& isdigit(*(str+7)))
157 2 {
158 3 if(y==1)
159 3 {
160 4 buff_instr(&ts->txb,"please input date entirely");
161 4 y=0;
162 4 break;
163 4 }
164 3
165 3 if(y==2)
166 3 {
167 4 buff_instr(&ts->txb,"please input date correctly");
168 4 y=0;
169 4 break;
170 4 }
171 3 dest=print_current_date();
172 3 sprintf(dest2,"%s\n",dest);
173 3 buff_instr(&ts->txb, dest2);
174 3 break;
175 3 }
176 2 while(!strncmp(str, "$label1", 7))// && isdigit(*(str+7)))
177 2 {
178 3 if(x==1)
C51 COMPILER V7.50 EGI_TIME 10/12/2006 15:31:45 PAGE 4
179 3 {
180 4 buff_instr(&ts->txb,"please input time entirely");
181 4 x=0;
182 4 break;
183 4 }
184 3 if(x==2)
185 3 {
186 4 buff_instr(&ts->txb,"please input time correctly");
187 4 x=0;
188 4 break;
189 4 }
190 3 //i = *(str+7) - '0';
191 3 dest=print_current_time();
192 3 sprintf(dest2,"%s\n",dest);
193 3 buff_instr(&ts->txb, dest2);
194 3 break;
195 3 }
196 2 }
197 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1074 ----
CONSTANT SIZE = 157 ----
XDATA SIZE = 4 53
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -