📄 httpserv.lis
字号:
0008 ; /**************************************************************/
0008 ;
0008 ;
0008 ; static int ASPCallback (char *pASPFunction, FILE *stream)
0008 ; {
0008 .dbline 264
0008 ; if (strcmp(pASPFunction, "usr_date") == 0) {
0008 20E0 ldi R18,<L6
000A 30E0 ldi R19,>L6
000C 8601 movw R16,R12
000E 0E940000 xcall _strcmp
0012 0030 cpi R16,0
0014 0107 cpc R16,R17
0016 41F4 brne L4
0018 X0:
0018 .dbline 264
0018 .dbline 265
0018 ; fprintf(stream, "Dummy example: 01.01.2005");
0018 20E0 ldi R18,<L7
001A 30E0 ldi R19,>L7
001C 8501 movw R16,R10
001E 0E940000 xcall _fprintf
0022 .dbline 266
0022 ; return(0);
0022 0027 clr R16
0024 1127 clr R17
0026 12C0 xjmp L3
0028 L4:
0028 .dbline 269
0028 ; }
0028 ;
0028 ; if (strcmp(pASPFunction, "usr_time") == 0) {
0028 20E0 ldi R18,<L10
002A 30E0 ldi R19,>L10
002C 8601 movw R16,R12
002E 0E940000 xcall _strcmp
0032 0030 cpi R16,0
0034 0107 cpc R16,R17
0036 41F4 brne L8
0038 X1:
0038 .dbline 269
0038 .dbline 270
0038 ; fprintf(stream, "Dummy example: 12:15:02");
0038 20E0 ldi R18,<L11
003A 30E0 ldi R19,>L11
003C 8501 movw R16,R10
003E 0E940000 xcall _fprintf
0042 .dbline 271
0042 ; return(0);
0042 0027 clr R16
0044 1127 clr R17
0046 02C0 xjmp L3
0048 L8:
0048 .dbline 274
0048 ; }
0048 ;
0048 ; return (-1);
0048 0FEF ldi R16,-1
004A 1FEF ldi R17,-1
004C .dbline -2
004C L3:
004C .dbline 0 ; func end
004C 0C940000 xjmp pop_xgset003C
0050 .dbsym r stream 10 pS[__iobuf]
0050 .dbsym r pASPFunction 12 pc
0050 .dbend
.area lit(rom, con, rel)
0000 L13:
0000 3C48544D4C3E3C484541443E3C544954 .byte 60,'H,'T,'M,'L,62,60,'H,'E,'A,'D,62,60,'T,'I,'T
0010 4C453E506172616D65746572733C2F54 .byte 'L,'E,62,'P,'a,'r,'a,'m,'e,'t,'e,'r,'s,60,47,'T
0020 49544C453E3C2F484541443E3C424F44 .byte 'I,'T,'L,'E,62,60,47,'H,'E,'A,'D,62,60,'B,'O,'D
0030 593E3C48313E506172616D6574657273 .byte 'Y,62,60,'H,49,62,'P,'a,'r,'a,'m,'e,'t,'e,'r,'s
0040 3C2F48313E00 .byte 60,47,'H,49,62,0
0046 L14:
0046 3C2F424F44593E3C2F48544D4C3E00 .byte 60,47,'B,'O,'D,'Y,62,60,47,'H,'T,'M,'L,62,0
0055 L15:
0055 4D6574686F643A2025733C42523E0D0A .byte 'M,'e,'t,'h,'o,'d,58,32,37,'s,60,'B,'R,62,13,10
0065 56657273696F6E3A20485454502F2564 .byte 'V,'e,'r,'s,'i,'o,'n,58,32,'H,'T,'T,'P,47,37,'d
0075 2E25643C42523E0D0A436F6E74656E74 .byte 46,37,'d,60,'B,'R,62,13,10,'C,'o,'n,'t,'e,'n,'t
0085 206C656E6774683A20256C643C42523E .byte 32,'l,'e,'n,'g,'t,'h,58,32,37,'l,'d,60,'B,'R,62
0095 0D0A00 .byte 13,10,0
0098 L16:
0098 55524C3A2025733C42523E0D0A00 .byte 'U,'R,'L,58,32,37,'s,60,'B,'R,62,13,10,0
00A6 L17:
00A6 417267756D656E743A2025733C42523E .byte 'A,'r,'g,'u,'m,'e,'n,'t,58,32,37,'s,60,'B,'R,62
00B6 0D0A00 .byte 13,10,0
00B9 L18:
00B9 436F6E74656E7420747970653A202573 .byte 'C,'o,'n,'t,'e,'n,'t,32,'t,'y,'p,'e,58,32,37,'s
00C9 3C42523E0D0A00 .byte 60,'B,'R,62,13,10,0
00D0 L19:
00D0 436F6F6B69653A2025733C42523E0D0A .byte 'C,'o,'o,'k,'i,'e,58,32,37,'s,60,'B,'R,62,13,10
00E0 00 .byte 0
00E1 L20:
00E1 4175746820696E666F3A2025733C4252 .byte 'A,'u,'t,'h,32,'i,'n,'f,'o,58,32,37,'s,60,'B,'R
00F1 3E0D0A00 .byte 62,13,10,0
00F5 L21:
00F5 55736572206167656E743A2025733C42 .byte 'U,'s,'e,'r,32,'a,'g,'e,'n,'t,58,32,37,'s,60,'B
0105 523E0D0A00 .byte 'R,62,13,10,0
.area text(rom, con, rel)
0050 .dbfile C:\ethernut-4.9.7\nutapp_13h\httpd\httpserv.c
0050 .dbfunc s ShowQuery _ShowQuery fI
0050 .dbstruct 0 34 _REQUEST
0050 .dbfield 0 req_method I
0050 .dbfield 2 req_version I
0050 .dbfield 4 req_length L
0050 .dbfield 8 req_url pc
0050 .dbfield 10 req_query pc
0050 .dbfield 12 req_type pc
0050 .dbfield 14 req_cookie pc
0050 .dbfield 16 req_auth pc
0050 .dbfield 18 req_agent pc
0050 .dbfield 20 req_qptrs ppc
0050 .dbfield 22 req_numqptrs I
0050 .dbfield 24 req_ims L
0050 .dbfield 28 req_referer pc
0050 .dbfield 30 req_host pc
0050 .dbfield 32 req_connection I
0050 .dbend
0050 .dbsym s agent_fmt L21 A[21:21]kc
0050 .dbsym s auth_fmt L20 A[20:20]kc
0050 .dbsym s cookie_fmt L19 A[17:17]kc
0050 .dbsym s type_fmt L18 A[23:23]kc
0050 .dbsym s query_fmt L17 A[19:19]kc
0050 .dbsym s url_fmt L16 A[14:14]kc
0050 .dbsym s req_fmt L15 A[67:67]kc
0050 .dbsym s foot L14 A[15:15]kc
0050 .dbsym s head L13 A[70:70]kc
0050 ; cp -> R22,R23
0050 ; req -> R20,R21
0050 ; stream -> R10,R11
.even
0050 _ShowQuery:
0050 0E940000 xcall push_xgsetF00C
0054 A901 movw R20,R18
0056 5801 movw R10,R16
0058 2A97 sbiw R28,10
005A .dbline -1
005A .dbline 287
005A ; }
005A ;
005A ; /*
005A ; * CGI Sample: Show request parameters.
005A ; *
005A ; * See httpd.h for REQUEST structure.
005A ; *
005A ; * This routine must have been registered by NutRegisterCgi() and is
005A ; * automatically called by NutHttpProcessRequest() when the client
005A ; * request the URL 'cgi-bin/test.cgi'.
005A ; */
005A ; static int ShowQuery(FILE * stream, REQUEST * req)
005A ; {
005A .dbline 306
005A ; char *cp;
005A ; /*
005A ; * This may look a little bit weird if you are not used to C programming
005A ; * for flash microcontrollers. The special type 'prog_char' forces the
005A ; * string literals to be placed in flash ROM. This saves us a lot of
005A ; * precious RAM.
005A ; */
005A ; static prog_char head[] = "<HTML><HEAD><TITLE>Parameters</TITLE></HEAD><BODY><H1>Parameters</H1>";
005A ; static prog_char foot[] = "</BODY></HTML>";
005A ; static prog_char req_fmt[] = "Method: %s<BR>\r\nVersion: HTTP/%d.%d<BR>\r\nContent length: %ld<BR>\r\n";
005A ; static prog_char url_fmt[] = "URL: %s<BR>\r\n";
005A ; static prog_char query_fmt[] = "Argument: %s<BR>\r\n";
005A ; static prog_char type_fmt[] = "Content type: %s<BR>\r\n";
005A ; static prog_char cookie_fmt[] = "Cookie: %s<BR>\r\n";
005A ; static prog_char auth_fmt[] = "Auth info: %s<BR>\r\n";
005A ; static prog_char agent_fmt[] = "User agent: %s<BR>\r\n";
005A ;
005A ; /* These useful API calls create a HTTP response for us. */
005A ; NutHttpSendHeaderTop(stream, req, 200, "Ok");
005A 80E0 ldi R24,<L22
005C 90E0 ldi R25,>L22
005E 9B83 std y+3,R25
0060 8A83 std y+2,R24
0062 88EC ldi R24,200
0064 90E0 ldi R25,0
0066 9983 std y+1,R25
0068 8883 std y+0,R24
006A 9A01 movw R18,R20
006C 8501 movw R16,R10
006E 0E940000 xcall _NutHttpSendHeaderTop
0072 .dbline 307
0072 ; NutHttpSendHeaderBottom(stream, req, html_mt, -1);
0072 8FEF ldi R24,255
0074 9FEF ldi R25,255
0076 AFEF ldi R26,255
0078 BFEF ldi R27,255
007A 8A83 std y+2,R24
007C 9B83 std y+3,R25
007E AC83 std y+4,R26
0080 BD83 std y+5,R27
0082 20900000 lds R2,_html_mt
0086 30900100 lds R3,_html_mt+1
008A 3982 std y+1,R3
008C 2882 std y+0,R2
008E 9A01 movw R18,R20
0090 8501 movw R16,R10
0092 0E940000 xcall _NutHttpSendHeaderBottom
0096 .dbline 310
0096 ;
0096 ; /* Send HTML header. */
0096 ; fputs_P(head, stream);
0096 9501 movw R18,R10
0098 00E0 ldi R16,<L13
009A 10E0 ldi R17,>L13
009C 0E940000 xcall _fputs_P
00A0 .dbline 315
00A0 ;
00A0 ; /*
00A0 ; * Send request parameters.
00A0 ; */
00A0 ; switch (req->req_method) {
00A0 FA01 movw R30,R20
00A2 6081 ldd R22,z+0
00A4 7181 ldd R23,z+1
00A6 6130 cpi R22,1
00A8 E0E0 ldi R30,0
00AA 7E07 cpc R23,R30
00AC 49F0 breq L26
00AE X2:
00AE 6230 cpi R22,2
00B0 E0E0 ldi R30,0
00B2 7E07 cpc R23,R30
00B4 41F0 breq L28
00B6 X3:
00B6 6330 cpi R22,3
00B8 E0E0 ldi R30,0
00BA 7E07 cpc R23,R30
00BC 39F0 breq L30
00BE X4:
00BE 09C0 xjmp L23
00C0 L26:
00C0 .dbline 317
00C0 ; case METHOD_GET:
00C0 ; cp = "GET";
00C0 60E0 ldi R22,<L27
00C2 70E0 ldi R23,>L27
00C4 .dbline 318
00C4 ; break;
00C4 08C0 xjmp L24
00C6 L28:
00C6 .dbline 320
00C6 ; case METHOD_POST:
00C6 ; cp = "POST";
00C6 60E0 ldi R22,<L29
00C8 70E0 ldi R23,>L29
00CA .dbline 321
00CA ; break;
00CA 05C0 xjmp L24
00CC L30:
00CC .dbline 323
00CC ; case METHOD_HEAD:
00CC ; cp = "HEAD";
00CC 60E0 ldi R22,<L31
00CE 70E0 ldi R23,>L31
00D0 .dbline 324
00D0 ; break;
00D0 02C0 xjmp L24
00D2 L23:
00D2 .dbline 326
00D2 ; default:
00D2 ; cp = "UNKNOWN";
00D2 60E0 ldi R22,<L32
00D4 70E0 ldi R23,>L32
00D6 .dbline 327
00D6 ; break;
00D6 L24:
00D6 .dbline 329
00D6 ; }
00D6 ; fprintf_P(stream, req_fmt, cp, req->req_version / 10, req->req_version % 10, req->req_length);
00D6 FA01 movw R30,R20
00D8 2480 ldd R2,z+4
00DA 3580 ldd R3,z+5
00DC 4680 ldd R4,z+6
00DE 5780 ldd R5,z+7
00E0 2E82 std y+6,R2
00E2 3F82 std y+7,R3
00E4 4886 std y+8,R4
00E6 5986 std y+9,R5
00E8 2280 ldd R2,z+2
00EA 3380 ldd R3,z+3
00EC 2AE0 ldi R18,10
00EE 30E0 ldi R19,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -