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

📄 httpserv.s

📁 AVR单片机仿真100例
💻 S
📖 第 1 页 / 共 5 页
字号:
	xcall __fdopen
	movw R20,R16
	movw R14,R20
	cpi R16,0
	cpc R16,R17
	brne L145
X39:
	.dbline 693
	.dbline 694
;             printf("[%u] Creating stream device failed\n", id);
	mov R18,R10
	clr R19
	ldi R16,<L148
	ldi R17,>L148
	xcall _printf_M
	.dbline 695
;         } else {
	xjmp L146
L145:
	.dbline 695
	.dbline 702
;             /*
;              * This API call saves us a lot of work. It will parse the
;              * client's HTTP request, send any requested file from the
;              * registered file system or handle CGI requests by calling
;              * our registered CGI routine.
;              */
;             NutHttpProcessRequest(stream);
	movw R16,R14
	xcall _NutHttpProcessRequest
	.dbline 707
; 
;             /*
;              * Destroy the virtual stream device.
;              */
;             fclose(stream);
	movw R16,R14
	xcall _fclose
	.dbline 708
;         }
L146:
	.dbline 713
; 
;         /*
;          * Close our socket.
;          */
;         NutTcpCloseSocket(sock);
	movw R16,R12
	xcall _NutTcpCloseSocket
	.dbline 714
;         printf("[%u] Disconnected\n", id);
	mov R18,R10
	clr R19
	ldi R16,<L149
	ldi R17,>L149
	xcall _printf_M
	.dbline 715
;     }
	.dbline 655
	.dbline 655
	xjmp L133
X40:
	.dbline -2
L132:
	.dbline 0 ; func end
	adiw R28,2
	xjmp pop_xgset30FC
	.dbsym r stream 14 pS[__iobuf]
	.dbsym r sock 12 pS[tcp_socket]
	.dbsym r id 10 c
	.dbsym r arg 10 pV
	.dbend
	.area lit(rom, con, rel)
L163:
	.byte 0,6,152,48,0,53,0
L195:
	.byte 'h,'t,'t,'p,'d,48,0
	.area text(rom, con, rel)
	.dbfile C:\ethernut-4.9.7\nutapp_13h\httpd\httpserv.c
	.dbfunc e main _main fI
;         thname -> y+14
;        ip_gate -> y+29
;        ip_mask -> y+25
;        ip_addr -> y+21
;            mac -> y+14
;           baud -> y+10
;              i -> R20
	.even
_main::
	sbiw R28,33
	.dbline -1
	.dbline 724
; }
; 
; /*!
;  * \brief Main application routine.
;  *
;  * Nut/OS automatically calls this entry after initialization.
;  */
; int main(void)
; {
	.dbline 725
;     u_long baud = 115200;
	ldi R24,0
	ldi R25,194
	ldi R26,1
	ldi R27,0
	std y+10,R24
	std y+11,R25
	std y+12,R26
	std y+13,R27
	.dbline 731
;     u_char i;
; 
;     /*
;      * Initialize the uart device.
;      */
;     NutRegisterDevice(&DEV_DEBUG, 0, 0);
	clr R2
	std y+0,R2
	clr R18
	clr R19
	ldi R16,<_devDebug0
	ldi R17,>_devDebug0
	xcall _NutRegisterDevice
	.dbline 732
;     freopen(DEV_DEBUG_NAME, "w", stdout);
	lds R2,___iob+2
	lds R3,___iob+2+1
	std y+1,R3
	std y+0,R2
	ldi R18,<L152
	ldi R19,>L152
	ldi R16,<L151
	ldi R17,>L151
	xcall _freopen
	.dbline 733
;     _ioctl(_fileno(stdout), UART_SETSPEED, &baud);
	lds R16,___iob+2
	lds R17,___iob+2+1
	xcall __fileno
	movw R24,R28
	adiw R24,10
	std y+1,R25
	std y+0,R24
	ldi R18,257
	ldi R19,1
	xcall __ioctl
	.dbline 734
;     NutSleep(200);
	ldi R16,200
	ldi R17,0
	ldi R18,0
	ldi R19,0
	xcall _NutSleep
	.dbline 735
;     printf("\n\nNut/OS %s HTTP Daemon...", NutVersionString());
	xcall _NutVersionString
	movw R18,R16
	ldi R16,<L155
	ldi R17,>L155
	xcall _printf_M
	.dbline 747
; 
; #ifdef NUTDEBUG
;     NutTraceTcp(stdout, 0);
;     NutTraceOs(stdout, 0);
;     NutTraceHeap(stdout, 0);
;     NutTracePPP(stdout, 0);
; #endif
; 
;     /*
;      * Register Ethernet controller.
;      */
;     if (NutRegisterDevice(&DEV_ETHER, 0, 0)) {
	clr R2
	std y+0,R2
	clr R18
	clr R19
	ldi R16,<_devEth0
	ldi R17,>_devEth0
	xcall _NutRegisterDevice
	movw R10,R16
	cpi R16,0
	cpc R16,R17
	breq L156
X41:
	.dbline 747
	.dbline 748
;         puts("Registering device failed");
	ldi R16,<L158
	ldi R17,>L158
	xcall _puts_M
	.dbline 749
;     }
L156:
	.dbline 751
; 
;     printf("Configure %s...", DEV_ETHER_NAME);
	ldi R18,<L160
	ldi R19,>L160
	ldi R16,<L159
	ldi R17,>L159
	xcall _printf_M
	.dbline 752
;     if (NutNetLoadConfig(DEV_ETHER_NAME)) {
	ldi R16,<L160
	ldi R17,>L160
	xcall _NutNetLoadConfig
	movw R10,R16
	cpi R16,0
	cpc R16,R17
	brne X48
	xjmp L161
X48:
X42:
	.dbline 752
	.dbline 753
;         u_char mac[] = MY_MAC;
	ldi R24,<L163
	ldi R25,>L163
	movw R30,R28
	adiw R30,14
	ldi R16,7
	ldi R17,0
	st -y,R31
	st -y,R30
	st -y,R25
	st -y,R24
	xcall asgncblkx
	.dbline 755
; 
;         printf("initial boot...");
	ldi R16,<L164
	ldi R17,>L164
	xcall _printf_M
	.dbline 759
; #ifdef USE_DHCP
;         if (NutDhcpIfConfig(DEV_ETHER_NAME, mac, 60000)) 
; #endif
;         {
	.dbline 760
;             u_long ip_addr = inet_addr(MY_IPADDR);
	ldi R16,<L165
	ldi R17,>L165
	xcall _inet_addr
	std y+21,R16
	std y+22,R17
	std y+23,R18
	std y+24,R19
	.dbline 761
;             u_long ip_mask = inet_addr(MY_IPMASK);
	ldi R16,<L166
	ldi R17,>L166
	xcall _inet_addr
	std y+25,R16
	std y+26,R17
	std y+27,R18
	std y+28,R19
	.dbline 762
;             u_long ip_gate = inet_addr(MY_IPGATE);
	ldi R16,<L167
	ldi R17,>L167
	xcall _inet_addr
	std y+29,R16
	std y+30,R17
	std y+31,R18
	std y+32,R19
	.dbline 764
; 
;             printf("No DHCP...");
	ldi R16,<L168
	ldi R17,>L168
	xcall _printf_M
	.dbline 765
;             if (NutNetIfConfig(DEV_ETHER_NAME, mac, ip_addr, ip_mask) == 0) {
	ldd R2,y+25
	ldd R3,y+26
	ldd R4,y+27
	ldd R5,y+28
	std y+4,R2
	std y+5,R3
	std y+6,R4
	std y+7,R5
	ldd R2,y+21
	ldd R3,y+22
	ldd R4,y+23
	ldd R5,y+24
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	movw R18,R28
	subi R18,242  ; offset = 14
	sbci R19,255
	ldi R16,<L160
	ldi R17,>L160
	xcall _NutNetIfConfig
	movw R10,R16
	cpi R16,0
	cpc R16,R17
	brne L169
X43:
	.dbline 765
	.dbline 767
;                 /* Without DHCP we had to set the default gateway manually.*/
;                 if(ip_gate) {
	ldd R2,y+29
	ldd R3,y+30
	ldd R4,y+31
	ldd R5,y+32
	clc
	tst R2
	cpc R3,R2
	cpc R4,R2
	cpc R5,R2
	breq L171
X44:
	.dbline 767
	.dbline 768
;                     printf("hard coded gate...");
	ldi R16,<L173
	ldi R17,>L173
	xcall _printf_M
	.dbline 769
;                     NutIpRouteAdd(0, 0, ip_gate, &DEV_ETHER);
	ldi R24,<_devEth0
	ldi R25,>_devEth0
	std y+9,R25
	std y+8,R24
	ldd R2,y+29
	ldd R3,y+30
	ldd R4,y+31
	ldd R5,y+32
	std y+4,R2
	std y+5,R3
	std y+6,R4
	std y+7,R5
	ldi R24,0
	ldi R25,0
	ldi R26,0
	ldi R27,0
	std y+0,R24
	std y+1,R25
	std y+2,R26
	std y+3,R27
	ldi R16,0
	ldi R17,0
	ldi R18,0
	ldi R19,0
	xcall _NutIpRouteAdd
	.dbline 770
;                 }
L171:
	.dbline 771
;                 puts("OK");
	ldi R16,<L59
	ldi R17,>L59
	xcall _puts_M
	.dbline 772
;             }
	xjmp L162
L169:
	.dbline 773
;             else {
	.dbline 774
;                 puts("failed");
	ldi R16,<L174
	ldi R17,>L174
	xcall _puts_M
	.dbline 775
;             }
	.dbline 776
;         }
	.dbline 777
;     }
	xjmp L162
L161:
	.dbline 778
;     else {
	.dbline 787
; #ifdef USE_DHCP
;         if (NutDhcpIfConfig(DEV_ETHER_NAME, 0, 60000)) {
;             puts("failed");
;         }
;         else {
;             puts("OK");
;         }
; #else
;         if (NutNetIfConfig(DEV_ETHER_NAME, 0, 0, confnet.cdn_ip_mask)) {
	lds R4,_confnet+20+2
	lds R5,_confnet+20+2+1
	lds R2,_confnet+20
	lds R3,_confnet+20+1
	std y+4,R2
	std y+5,R3
	std y+6,R4
	std y+7,R5
	ldi R24,0
	ldi R25,0
	ldi R26,0
	ldi R27,0
	std y+0,R24
	std y+1,R25
	std y+2,R26
	std y+3,R27
	clr R18
	clr R19
	ldi R16,<L160
	ldi R17,>L160
	xcall _NutNetIfConfig
	movw R10,R16
	cpi R16,0
	cpc R16,R17
	breq L175
X45:
	.dbline 787
	.dbline 788
;             puts("failed");
	ldi R16,<L174
	ldi R17,>L174
	xcall _puts_M
	.dbline 789
;         }
	xjmp L176
L175:
	.dbline 790
;         else {
	.dbline 791
;             puts("OK");
	ldi R16,<L59
	ldi R17,>L59
	xcall _puts_M
	.dbline 792
;         }
L176:
	.dbline 794
; #endif
;     }
L162:
	.dbline 795
;     printf("%s ready\n", inet_ntoa(confnet.cdn_ip_addr));
	lds R18,_confnet+16+2
	lds R19,_confnet+16+2+1
	lds R16,_confnet+16
	lds R17,_confnet+16+1
	xcall _inet_ntoa
	movw R10,R16
	movw R18,R10
	ldi R16,<L178
	ldi R17,>L178
	xcall _printf_M
	.dbline 804
; 
; #ifdef USE_DISCOVERY
;     NutRegisterDiscovery((u_long)-1, 0, DISF_INITAL_ANN);
; #endif
; 
;     /*
;      * Register our device for the file system.
;      */
;     NutRegisterDevice(&MY_FSDEV, 0, 0);
	clr R2
	std y+0,R2
	clr R18
	clr R19
	ldi R16,<_devUrom
	ldi R17,>_devUrom
	xcall _NutRegisterDevice
	.dbline 834
; 
; #ifdef MY_BLKDEV
;     /* Register block device. */
;     printf("Registering block device '" MY_BLKDEV_NAME "'...");
;     if (NutRegisterDevice(&MY_BLKDEV, 0, 0)) {
;         puts("failed");
;         for (;;);
;     }
;     puts("OK");
; 
;     /* Mount partition. */
;     printf("Mounting block device '" MY_BLKDEV_NAME ":1/" MY_FSDEV_NAME "'...");
;     if (_open(MY_BLKDEV_NAME ":1/" MY_FSDEV_NAME, _O_RDWR | _O_BINARY) == -1) {
;         puts("failed");
;         for (;;);
;     }
;     puts("OK");
; #endif
; 
; #ifdef MY_HTTPROOT
;     /* Register root path. */
;     printf("Registering HTTP root '" MY_HTTPROOT "'...");
;     if (NutRegisterHttpRoot(MY_HTTPROOT)) {
;         puts("failed");
;         for (;;);
;     }
;     puts("OK");
; #endif
; 
;     NutRegisterCgiBinPath("cgi-bin/;user/cgi-bin/;admin/cgi-bin/");
	ldi R16,<L180
	ldi R17,>L180
	xcall _NutRegisterCgiBinPath
	.dbline 841
; 
; 
;     /*
;      * Register our CGI sample. This will be called
;      * by http://host/cgi-bin/test.cgi?anyparams
;      */
;     NutRegisterCgi("test.cgi", ShowQuery);
	ldi R18,<PL_ShowQuery
	ldi R19,>PL_ShowQuery
	ldi R16,<L181
	ldi R17,>L181
	xcall _NutRegisterCgi
	.dbline 849
; 
;     /* 
;      * Register a cgi included by the ssi demo. This will show how dynamic 
;      * content is included in a ssi page and how the request parameters for 
;      * a site are passed down to the included cgi.
;      */
;     
;     NutRegisterCgi("ssi-demo.cgi", SSIDemoCGI);
	ldi R18,<PL_SSIDemoCGI
	ldi R19,>PL_SSIDemoCGI
	ldi R16,<L182
	ldi R17,>L182
	xcall _NutRegisterCgi
	.dbline 855
;     
;     /*
;      * Register some CGI samples, which display interesting
;      * system informations.
;      */
;     NutRegisterCgi("threads.cgi", ShowThreads);
	ldi R18,<PL_ShowThreads
	ldi R19,>PL_ShowThreads
	ldi R16,<L183
	ldi R17,>L183
	xcall _NutRegisterCgi
	.dbline 856
;     NutRegisterCgi("timers.cgi", ShowTimers);
	ldi R18,<PL_ShowTimers
	ldi R19,>PL_ShowTimers
	ldi R16,<L184
	ldi R17,>L184
	xcall _NutRegisterCgi
	.dbline 857
;     NutRegisterCgi("sockets.cgi", ShowSockets);
	ldi R18,<PL_ShowSockets
	ldi R19,>PL_ShowSockets
	ldi R16,<L185
	ldi R17,>L185
	xcall _NutRegisterCgi
	.dbline 862
; 
;     /*
;      * Finally a CGI example to process a form.
;      */
;     NutRegisterCgi("form.cgi", ShowForm);
	ldi R18,<PL_ShowForm
	ldi R19,>PL_ShowForm
	ldi R16,<L186
	ldi R17,>L186
	xcall _NutRegisterCgi
	.dbline 868
; 
;     /*
;      * Protect the cgi-bin directory with
;      * user and password.
;      */
;     NutRegisterAuth("admin", "root:root");
	ldi R18,<L188
	ldi R19,>L188
	ldi R16,<L187
	ldi R17,>L187
	xcall _NutRegister

⌨️ 快捷键说明

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