?login_element?

Subversion Repositories NedoOS

Rev

Rev 2182 | Blame | Compare with Previous | Last modification | View Log | Download

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <oscalls.h>
  5. #include <osfs.h>
  6. #include <intrz80.h>
  7. #include <../common/terminal.c>
  8.  
  9. const unsigned char gotWiFi[] = "WIFI GOT IP";
  10.  
  11. unsigned int RBR_THR = 0xf8ef;
  12. unsigned int IER = 0xf9ef;
  13. unsigned int IIR_FCR = 0xfaef;
  14. unsigned int LCR = 0xfbef;
  15. unsigned int MCR = 0xfcef;
  16. unsigned int LSR = 0xfdef;
  17. unsigned int MSR = 0xfeef;
  18. unsigned int SR = 0xffef;
  19. unsigned int divider = 1;
  20. unsigned char comType = 0;
  21. unsigned int espType = 32;
  22. unsigned char directMode = 0;
  23.  
  24. unsigned char key;
  25. int bufferPos = 0;
  26. int endPos = 0;
  27. int curpos = 0;
  28. int oldpos = 0;
  29.  
  30. unsigned char netbuf[8500];
  31.  
  32. void clearStatus(void)
  33. {
  34. }
  35.  
  36. void delay(unsigned long counter)
  37. {
  38.   unsigned long start, finish;
  39.   counter = counter / 20;
  40.   if (counter < 1)
  41.   {
  42.     counter = 1;
  43.   }
  44.   start = time();
  45.   finish = start + counter;
  46.  
  47.   while (start < finish)
  48.   {
  49.     start = time();
  50.   }
  51. }
  52.  
  53. ///////////////////////////
  54. #include <../common/esp-com.c>
  55. //////////////////////////
  56.  
  57. void getdata(void)
  58. {
  59.   uart_setrts(2);
  60.   while (uart_hasByte() != 0)
  61.   {
  62.     netbuf[bufferPos] = uart_read();
  63.     bufferPos++;
  64.     uart_setrts(2);
  65.   }
  66.   if (bufferPos > 8191)
  67.   {
  68.     endPos = bufferPos;
  69.     bufferPos = 0;
  70.   }
  71. }
  72.  
  73. void renderWin(void)
  74. {
  75.   for (curpos = oldpos; curpos < bufferPos; curpos++)
  76.   {
  77.     putchar(netbuf[curpos]);
  78.   }
  79.   oldpos = curpos;
  80. }
  81.  
  82. void saveBuff(void)
  83. {
  84.   int len;
  85.   unsigned long size;
  86.   FILE *fp1;
  87.   unsigned char crlf[2] = {13, 10};
  88.   fp1 = OS_OPENHANDLE("buffer.log", 0x80);
  89.   if (((int)fp1) & 0xff)
  90.   {
  91.     puts("Open buffer.log error");
  92.     puts("Creating buffer.log file");
  93.     fp1 = OS_CREATEHANDLE("buffer.log", 0x80);
  94.     if (((int)fp1) & 0xff)
  95.     {
  96.       puts("Create buffer.log error");
  97.       return;
  98.     }
  99.     OS_CLOSEHANDLE(fp1);
  100.     fp1 = OS_OPENHANDLE("buffer.log", 0x80);
  101.     if (((int)fp1) & 0xff)
  102.     {
  103.       puts("Open buffer.log error");
  104.       return;
  105.     }
  106.   }
  107.   size = OS_GETFILESIZE(fp1);
  108.   len = curpos;
  109.   OS_SEEKHANDLE(fp1, size);
  110.   OS_WRITEHANDLE(crlf, fp1, 2);
  111.   OS_WRITEHANDLE("********************************************************************************", fp1, 80);
  112.   OS_WRITEHANDLE(crlf, fp1, 2);
  113.   OS_WRITEHANDLE(netbuf, fp1, len);
  114.   OS_CLOSEHANDLE(fp1);
  115.   puts("buffer.log saved.");
  116. }
  117.  
  118. void testQueue(void)
  119. {
  120.   sendcommand("AT+CIPSNTPTIME?");
  121.   getdata();
  122.   renderWin();
  123.   delay(500);
  124.   sendcommand("AT+CIPSNTPCFG=1,300,\"0.pool.ntp.org\",\"time.google.com\"");
  125.   getdata();
  126.   renderWin();
  127.   delay(500);
  128.   sendcommand("AT+CIPSNTPTIME?");
  129.   getdata();
  130.   renderWin();
  131. }
  132. C_task main(void)
  133. {
  134.   unsigned char cmd[512];
  135.   unsigned char cmdpos;
  136.   os_initstdio();
  137.   BOX(1, 1, 80, 25, 40, ' ');
  138.   AT(25, 1);
  139.   ATRIB(92);
  140.   puts("[UART COMMUNICATION PROGRAMM]");
  141.   loadEspConfig();
  142.   uart_init(divider);
  143.   ATRIB(93);
  144.   puts("    <ext+U> AT+CIUPDATE <End> Direct mode <PgUp> AT+GMR  <Home> testQueue()    ");
  145.   puts("             <PgDn> '+++' <ext+1...0> baudrate <ext+S> save buffer             ");
  146.   ATRIB(92);
  147.   puts("===============================================================================");
  148.  
  149.   delay(250);
  150.   cmd[0] = 0;
  151.   cmdpos = 0;
  152.   while (1)
  153.   {
  154.     unsigned char count;
  155.     getdata();
  156.     renderWin();
  157.     key = _low_level_get();
  158.  
  159.     if (directMode == 1 && key != 0)
  160.     {
  161.       if (key == 30)
  162.       {
  163.         directMode = 0;
  164.         key = 0;
  165.         puts("\r\nDirect mode disabled.");
  166.       }
  167.       else
  168.       {
  169.         uart_write(key);
  170.         if (key == 13)
  171.         {
  172.           uart_write(10);
  173.           putchar('\r');
  174.           putchar('\n');
  175.         }
  176.       }
  177.     }
  178.     if (key != 0 && directMode == 0)
  179.     {
  180.       //printf("key = %u   ", key);
  181.       switch (key)
  182.       {
  183.       case 177:
  184.         uart_init(1);
  185.         puts("Uart inited @ 115200 [Div:1]");
  186.         key = 0;
  187.         break;
  188.  
  189.       case 178:
  190.         uart_init(2);
  191.         puts("Uart inited @ 57600 [Div:2]");
  192.         key = 0;
  193.         break;
  194.  
  195.       case 179:
  196.         uart_init(3);
  197.         puts("Uart inited @ 38400 [Div:3]");
  198.         key = 0;
  199.         break;
  200.  
  201.       case 180:
  202.         uart_init(4);
  203.         puts("Uart inited @ 28800 [Div:4]");
  204.         key = 0;
  205.         break;
  206.  
  207.       case 181:
  208.         uart_init(6);
  209.         puts("Uart inited @ 19200 [Div:6]");
  210.         key = 0;
  211.         break;
  212.  
  213.       case 182:
  214.         uart_init(8);
  215.         puts("Uart inited @ 14400 [Div:8]");
  216.         key = 0;
  217.         break;
  218.  
  219.       case 183:
  220.         uart_init(12);
  221.         puts("Uart inited @ 9600 [Div:12]");
  222.         key = 0;
  223.         break;
  224.  
  225.       case 184:
  226.         uart_init(24);
  227.         puts("Uart inited @ 4800 [Div:24]");
  228.         key = 0;
  229.         break;
  230.  
  231.       case 185:
  232.         uart_init(48);
  233.         puts("Uart inited @ 2400 [Div:48]");
  234.         key = 0;
  235.         break;
  236.  
  237.       case 176:
  238.         uart_init(96);
  239.         puts("Uart inited @ 1200 [Div:96]");
  240.         key = 0;
  241.         break;
  242.  
  243.       case 13:
  244.         cmd[cmdpos] = 0;
  245.         sendcommand(cmd);
  246.         cmdpos = 0;
  247.         cmd[cmdpos] = 0;
  248.         putchar('\r');
  249.         putchar('\n');
  250.         key = 0;
  251.         break;
  252.  
  253.       case 19:
  254.         saveBuff();
  255.         key = 0;
  256.         break;
  257.  
  258.       case 27:
  259.         exit(0);
  260.  
  261.       case 8:
  262.         if (cmdpos != 0)
  263.         {
  264.           cmdpos--;
  265.           cmd[cmdpos] = 0;
  266.           putchar('\r');
  267.           for (count = 0; count < cmdpos + 1; count++)
  268.           {
  269.             putchar(' ');
  270.           }
  271.           putchar('\r');
  272.           count = 0;
  273.           while (cmd[count] != 0)
  274.           {
  275.             putchar(cmd[count]);
  276.             count++;
  277.           }
  278.         }
  279.         key = 0;
  280.         break;
  281.  
  282.       case 246: // PgUp
  283.         sendcommand("AT+GMR");
  284.         key = 0;
  285.         break;
  286.  
  287.         case 247: // PgDn
  288.         sendcommand("+++");
  289.         key = 0;
  290.         break;  
  291.  
  292.       case 30: // End
  293.         directMode = 1;
  294.         puts("\r\nDirect mode enabled.");
  295.  
  296.         key = 0;
  297.         break;
  298.  
  299.       case 28: // home
  300.         testQueue();
  301.         key = 0;
  302.         break;
  303.  
  304.       case 21: // <ext> + <U>
  305.         sendcommand("AT+CIUPDATE");
  306.         key = 0;
  307.         break;
  308.       }
  309.     }
  310.  
  311.     if (key != 0)
  312.     {
  313.       cmd[cmdpos] = key;
  314.       cmdpos++;
  315.       putchar(key);
  316.     }
  317.   }
  318.   return 0;
  319. }
  320.