webpage.c
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:3k
源码类别:

DSP编程

开发平台:

C/C++

  1. //--------------------------------------------------------------------------
  2. // IP Stack Client Demo
  3. //--------------------------------------------------------------------------
  4. // webpage.c
  5. //
  6. // Web page and CGI function
  7. //
  8. // Author: Michael A. Denio
  9. // Copyright 2000, 2001 by Texas Instruments Inc.
  10. //-------------------------------------------------------------------------
  11. #include <std.h>
  12. #include <sys.h>
  13. #include <sem.h>
  14. #include <tsk.h>
  15. #include "netmain.h"   /*change*/
  16. #include "thrControl.h"/*change*/
  17. #pragma DATA_SECTION(DEFAULT, "OBJMEM");
  18. #include "webdatadefault.c"
  19. #pragma DATA_SECTION(TIBUG, "OBJMEM");
  20. #include "webdatatibug.c"
  21. #pragma DATA_SECTION(JAVA1, "OBJMEM");
  22. #include "webdatajava1.c"
  23. #pragma DATA_SECTION(JAVA2, "OBJMEM");
  24. #include "webdatajava2.c"
  25. static int cgiConfig( SOCKET htmlSock, int ContentLength, char *pArgs );
  26. extern char *cgiParseVars(char PostIn[], int *pParseIndex );
  27. void AddWebFiles(void)
  28. {
  29.     efs_createfile("index.html", DEFAULT_SIZE, DEFAULT);
  30.     efs_createfile("tibug.jpg", TIBUG_SIZE, TIBUG);
  31.     efs_createfile("easyCam.class", JAVA1_SIZE, JAVA1);
  32.     efs_createfile("easyCam$1.class", JAVA2_SIZE, JAVA2);
  33.     efs_createfile("cfgquality.cgi", 0, (UINT8*)cgiConfig);
  34. }
  35. void RemoveWebFiles(void)
  36. {
  37.     efs_destroyfile("index.html");
  38.     efs_destroyfile("tibug.jpg");
  39.     efs_destroyfile("cfgquality.cgi");
  40.     efs_destroyfile("easyCam.class");
  41.     efs_destroyfile("easyCam$1.class");
  42. }
  43. #define html(str) httpSendClientStr(htmlSock, (char *)str)
  44. //
  45. // cgiConfig()
  46. //
  47. static int cgiConfig( SOCKET htmlSock, int ContentLength, char *pArgs )
  48. {
  49.     char    *qualstr = 0;
  50.     char    *buffer, *key, *value;
  51.     int     len,quality;
  52.     int     parseIndex;
  53.     // CGI Functions can now support URI arguments as well if the
  54.     // pArgs pointer is not NULL, and the ContentLength were zero,
  55.     // we could parse the arguments off of pArgs instead.
  56.     // First, allocate a buffer for the request
  57.     buffer = (char*) mmBulkAlloc( ContentLength + 1 );
  58.     if ( !buffer )
  59.         goto ERROR;
  60.     // Now read the data from the client
  61.     len = recv( htmlSock, buffer, ContentLength, MSG_WAITALL );
  62.     if ( len < 1 )
  63.         goto ERROR;
  64.     // Setup to parse the post data
  65.     parseIndex = 0;
  66.     buffer[ContentLength] = '';
  67.     // Process request variables until there are none left
  68.     do
  69.     {
  70.         key   = cgiParseVars( buffer, &parseIndex );
  71.         value = cgiParseVars( buffer, &parseIndex );
  72.         if( !strcmp("quality", key) )
  73.             qualstr = value;
  74.     } while ( parseIndex != -1 );
  75.     //
  76.     // Output the data we read in...
  77.     //
  78.     httpSendStatusLine(htmlSock, HTTP_OK, CONTENT_TYPE_HTML);
  79.     // CRLF before entity
  80.     html( CRLF );
  81.     //
  82.     // Generate response
  83.     //
  84.     // If the password is incorrect or missing, generate an error
  85.     if( qualstr )
  86.     {
  87.         quality = 0;
  88.         while( *qualstr )
  89.             quality = quality * 10 + (*qualstr++ - '0');
  90.         if( quality > 0 && quality <= 100 )
  91.             thrControlSet( 1, quality );
  92.     }
  93.     // Send back the same default page
  94.     send( htmlSock, DEFAULT, DEFAULT_SIZE, 0 );
  95. ERROR:
  96.     if( buffer )
  97.         mmBulkFree( buffer );
  98.     return( 1 );
  99. }