### Eclipse Workspace Patch 1.0 #P ecos Index: hal/arm/at91/var/current/src/timer_pit.c =================================================================== RCS file: /cvs/ecos/ecos/packages/hal/arm/at91/var/current/src/timer_pit.c,v retrieving revision 1.4 diff -u -r1.4 timer_pit.c --- hal/arm/at91/var/current/src/timer_pit.c 20 Feb 2007 21:33:03 -0000 1.4 +++ hal/arm/at91/var/current/src/timer_pit.c 12 Nov 2007 15:16:33 -0000 @@ -116,36 +116,5 @@ *pvalue = ir & AT91_PITC_VALUE_MASK; } -// ------------------------------------------------------------------------- -// -// Delay for some number of micro-seconds -// PIT is clocked at MCLK / 16 -// -void hal_delay_us(cyg_int32 usecs) -{ - cyg_int64 ticks; - cyg_uint32 val1, val2; - cyg_uint32 piv; - - // Calculate how many PIT ticks the required number of microseconds - // equate to. We do this calculation in 64 bit arithmetic to avoid - // overflow. - ticks = (((cyg_uint64)usecs) * - ((cyg_uint64)CYGNUM_HAL_ARM_AT91_CLOCK_SPEED))/16/1000000LL; - - // Calculate the wrap around period. - HAL_READ_UINT32(AT91_PITC + AT91_PITC_PIMR, piv); - piv = (piv & AT91_PITC_VALUE_MASK) - 1; - - hal_clock_read(&val1); - while (ticks > 0) { - hal_clock_read(&val2); - if (val2 < val1) - ticks -= ((piv + val2) - val1); //overflow occurred - else - ticks -= (val2 - val1); - val1 = val2; - } -} // timer_pit.c Index: hal/arm/at91/var/current/src/timer_tc.c =================================================================== RCS file: /cvs/ecos/ecos/packages/hal/arm/at91/var/current/src/timer_tc.c,v retrieving revision 1.2 diff -u -r1.2 timer_tc.c --- hal/arm/at91/var/current/src/timer_tc.c 25 Feb 2006 20:12:32 -0000 1.2 +++ hal/arm/at91/var/current/src/timer_tc.c 12 Nov 2007 15:16:33 -0000 @@ -108,53 +108,5 @@ *pvalue = val; } -// ------------------------------------------------------------------------- -// -// Delay for some number of micro-seconds -// Use timer #2 in MCLOCK/32 mode. -// -void hal_delay_us(cyg_int32 usecs) -{ - cyg_uint32 stat; - cyg_uint64 ticks; -#if defined(CYGHWR_HAL_ARM_AT91_JTST) - // TC2 is reserved for AD/DA. Use TC1 instead. - CYG_ADDRESS timer = AT91_TC+AT91_TC_TC1; -#else - CYG_ADDRESS timer = AT91_TC+AT91_TC_TC2; -#endif - // Calculate how many timer ticks the required number of - // microseconds equate to. We do this calculation in 64 bit - // arithmetic to avoid overflow. - ticks = (((cyg_uint64)usecs) * - ((cyg_uint64)CYGNUM_HAL_ARM_AT91_CLOCK_SPEED))/32000000LL; - - // CYG_ASSERT(ticks < (1 << 16), "Timer overflow"); - - if (ticks > (1 << 16)) - ticks = (1 << 16) - 1; - - if (ticks == 0) - return; - - // Disable counter - HAL_WRITE_UINT32(timer+AT91_TC_CCR, AT91_TC_CCR_CLKDIS); - - // Set registers - HAL_WRITE_UINT32(timer+AT91_TC_CMR, AT91_TC_CMR_CLKS_MCK32); // 1MHz - HAL_WRITE_UINT32(timer+AT91_TC_RA, 0); - HAL_WRITE_UINT32(timer+AT91_TC_RC, ticks); - - // Clear status flags - HAL_READ_UINT32(timer+AT91_TC_SR, stat); - - // Start timer - HAL_WRITE_UINT32(timer+AT91_TC_CCR, AT91_TC_CCR_TRIG | AT91_TC_CCR_CLKEN); - - // Wait for the compare - do { - HAL_READ_UINT32(timer+AT91_TC_SR, stat); - } while ((stat & AT91_TC_SR_CPC) == 0); -} // timer_tc.c Index: ecos.db =================================================================== RCS file: /cvs/ecos/ecos/packages/ecos.db,v retrieving revision 1.167 diff -u -r1.167 ecos.db --- ecos.db 3 Jul 2007 14:42:18 -0000 1.167 +++ ecos.db 12 Nov 2007 15:16:33 -0000 @@ -1816,15 +1816,6 @@ description "Ethernet driver for XSEngine board." } -package CYGPKG_DEVS_ETH_ARM_GRG_I82559 { - alias { "GRG / Intel 82559 ethernet driver" - devs_eth_arm_grg_i82559 } - hardware - directory devs/eth/arm/grg/i82559 - script grg_i82559_eth_driver.cdl - description "Ethernet driver for GRG with Intel 82559 PCI NIC." -} - package CYGPKG_DEVS_ETH_I386_PC_I82559 { alias { "Standard PC with EtherPro 10/100 ethernet device" devs_eth_i386_pc_i82559 pc_etherpro } Index: net/athttpd/current/doc/athttpd.sgml =================================================================== RCS file: /cvs/ecos/ecos-opt/net/net/athttpd/current/doc/athttpd.sgml,v retrieving revision 1.5 diff -u -r1.5 athttpd.sgml --- net/athttpd/current/doc/athttpd.sgml 12 Nov 2007 11:32:02 -0000 1.5 +++ net/athttpd/current/doc/athttpd.sgml 12 Nov 2007 15:16:34 -0000 @@ -365,6 +365,40 @@ + +tcl hello world + +end_chunked + +#This will replace print /ram/log as a valid html file w/replacing \n w/<br> +#log.tcl +start_chunked "html"; + +set fp [aio.open "/ram/log" r]; +$fp seek 0 end; +set fsize [$fp tell]; +$fp seek 0 start; +set data "abcxxx"; +set data [$fp read $fsize]; +$fp close; +set data [string map {\n
} $data]; + +set datax ""; +append datax "" $data ""; + +write_chunked $datax; +end_chunked; +
+ +The above is an example of how to convert a log file in /ram/log to +HTML code. Copy the log.tcl above to a file system on your embedded +target and navigate to http://10.0.0.66/cgi-bin/hello.tcl. The tcl script +is then executed, where 10.0.0.66 is the IP and "cgi-bin" is the cgi-bin +directory. + +
+ + Authentication Index: net/athttpd/current/src/forms.c =================================================================== RCS file: /cvs/ecos/ecos-opt/net/net/athttpd/current/src/forms.c,v retrieving revision 1.3 diff -u -r1.3 forms.c --- net/athttpd/current/src/forms.c 27 Nov 2006 15:41:56 -0000 1.3 +++ net/athttpd/current/src/forms.c 12 Nov 2007 15:16:35 -0000 @@ -252,16 +252,6 @@ if (httpstate.mode & CYG_HTTPD_MODE_FORM_DATA) cyg_httpd_store_form_data(httpstate.post_data); - handler h = cyg_httpd_find_handler(); - if (h != 0) - { - // A handler was found. We'll call the function associated to it. - h(&httpstate); - free(httpstate.post_data); - httpstate.post_data = NULL; - return; - } - #if defined(CYGOPT_NET_ATHTTPD_USE_CGIBIN_OBJLOADER) || \ defined(CYGOPT_NET_ATHTTPD_USE_CGIBIN_TCL) // See if we are trying to execute a CGI via one of the supported methods. @@ -282,6 +272,17 @@ return; } #endif + + handler h = cyg_httpd_find_handler(); + if (h != 0) + { + // A handler was found. We'll call the function associated to it. + h(&httpstate); + free(httpstate.post_data); + httpstate.post_data = NULL; + return; + } + // No handler of any kind for a post request. Must send 404. cyg_httpd_send_error(CYG_HTTPD_STATUS_NOT_FOUND); Index: net/athttpd/current/src/http.c =================================================================== RCS file: /cvs/ecos/ecos-opt/net/net/athttpd/current/src/http.c,v retrieving revision 1.3 diff -u -r1.3 http.c --- net/athttpd/current/src/http.c 27 Nov 2006 15:41:56 -0000 1.3 +++ net/athttpd/current/src/http.c 12 Nov 2007 15:16:36 -0000 @@ -708,15 +708,7 @@ void cyg_httpd_handle_method_GET(void) { - // Use defined handlers take precedence over other forms of response. - handler h = cyg_httpd_find_handler(); - if (h != 0) - { - h(&httpstate); - return; - } - -#ifdef CYGOPT_NET_ATHTTPD_USE_CGIBIN_OBJLOADER +#if defined(CYGOPT_NET_ATHTTPD_USE_CGIBIN_OBJLOADER) || defined(CYGOPT_NET_ATHTTPD_USE_CGIBIN_TCL) // If the URL is a CGI script, there is a different directory... if (httpstate.url[0] == '/' && !strncmp(httpstate.url + 1, @@ -730,6 +722,15 @@ // will likely generate a 404. #endif + // Use defined handlers take precedence over other forms of response. + handler h = cyg_httpd_find_handler(); + if (h != 0) + { + h(&httpstate); + return; + } + + #ifdef CYGOPT_NET_ATHTTPD_USE_FS // No handler, we'll redirect to the file system. cyg_httpd_send_file(httpstate.url); @@ -940,28 +941,28 @@ } else if (strncasecmp(p, "Digest", 6) == 0) { - p += 6; - while (*p == ' ') - p++; + p += 6; + while (*p == ' ') + p++; while ((*p != '\r') && (*p != '\n')) - { - if (strncasecmp(p, "realm=", 6) == 0) + { + if (strncasecmp(p, "realm=", 6) == 0) p = cyg_httpd_digest_skip(p + 6); - else if (strncasecmp(p, "username=", 9) == 0) + else if (strncasecmp(p, "username=", 9) == 0) p = cyg_httpd_digest_skip(p + 9); else if (strncasecmp(p, "nonce=", 6) == 0) p = cyg_httpd_digest_skip(p + 6); - else if (strncasecmp(p, "response=", 9) == 0) + else if (strncasecmp(p, "response=", 9) == 0) p = cyg_httpd_digest_data(cyg_httpd_md5_response, p + 9); - else if (strncasecmp(p, "cnonce=", 7) == 0) + else if (strncasecmp(p, "cnonce=", 7) == 0) p = cyg_httpd_digest_data(cyg_httpd_md5_cnonce, p + 7); - else if (strncasecmp(p, "qop=", 4) == 0) + else if (strncasecmp(p, "qop=", 4) == 0) p = cyg_httpd_digest_skip(p + 4); - else if (strncasecmp(p, "nc=", 3) == 0) + else if (strncasecmp(p, "nc=", 3) == 0) p = cyg_httpd_digest_data(cyg_httpd_md5_noncecount, p + 3); - else if (strncasecmp(p, "algorithm=", 10) == 0) + else if (strncasecmp(p, "algorithm=", 10) == 0) p = cyg_httpd_digest_skip(p + 10); else if (strncasecmp(p, "opaque=", 7) == 0) p = cyg_httpd_digest_skip(p + 7); Index: net/athttpd/current/ChangeLog =================================================================== RCS file: /cvs/ecos/ecos-opt/net/net/athttpd/current/ChangeLog,v retrieving revision 1.8 diff -u -r1.8 ChangeLog --- net/athttpd/current/ChangeLog 12 Nov 2007 13:33:12 -0000 1.8 +++ net/athttpd/current/ChangeLog 12 Nov 2007 15:16:34 -0000 @@ -1,7 +1,12 @@ 2007-11-12 Oyvind Harboe + * doc/athttpd.sgml: added an example of a tcl script. + * src/http.c, forms.c: serve cgi requests before file system requests, that + way it isn't possible to download the actual cgi/.o script and cgi works + even if the http root directory is above the cgi directory. + * src/http.c: if only tcl cgi is enabled, cgi requests are now forwarded to tcl * include/jim.h: include file order fix; now compiles again. - * doc/athttpd.cdl: Fixed typos in doc. Return value from handler is not + * doc/athttpd.sgml: Fixed typos in doc. Return value from handler is not used, recommend returning 0 in doc. 2006-12-03 Anthony Tonizzo Index: .project =================================================================== RCS file: .project diff -N .project --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ .project 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,11 @@ + + + ecos + + + + + + + +