Login

Subversion Repositories NedoOS

Rev

Rev 1666 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

unsigned char spdFactor;
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <oscalls.h>
#include <osfs.h>
#include <intrz80.h>
#include <terminal.c>
#include <auart.h>
#include <esp32.c>
unsigned char key;
unsigned char buffer[8500] = "";
int bufferPos;
int endPos;
int curpos;
int oldpos;
unsigned char cursorX;
unsigned char cursorY;

void getdata (void)
{
  unsigned char readbyte;
  uart_startrts();
  uart_stoprts();

  while (uart_queue() != 0)
  {
    readbyte = uart_read();
    buffer[bufferPos] = readbyte;
    bufferPos++;

  }
  if (bufferPos > 8191)
  {
    endPos   = bufferPos;
    bufferPos = 0;
  }
}


void renderWin(void)
{
  for (curpos = oldpos; curpos < bufferPos; curpos++)
  {
    putchar (buffer[curpos]);
  }
  oldpos = curpos;
}

void saveBuff(void)
{
  int len;
  unsigned long size;
  FILE *fp1;
  unsigned char crlf[2] = {13, 10};
  fp1 = OS_OPENHANDLE("buffer.log", 0x80);
  if (((int)fp1) & 0xff)
  {
    puts("Open buffer.log error");
    puts("Creating buffer.log file");
    fp1 = OS_CREATEHANDLE("buffer.log", 0x80);
    if (((int)fp1) & 0xff)
    {
      puts("Create buffer.log error");
      return;
    }
    OS_CLOSEHANDLE(fp1);
    fp1 = OS_OPENHANDLE("buffer.log", 0x80);
    if (((int)fp1) & 0xff)
    {
      puts("Open buffer.log error");
      return;
    }
  }
  size = OS_GETFILESIZE(fp1);
  len = curpos;
  OS_SEEKHANDLE(fp1, size);
  OS_WRITEHANDLE(crlf, fp1, 2);
  OS_WRITEHANDLE("********************************************************************************", fp1, 80);
  OS_WRITEHANDLE(crlf, fp1, 2);
  OS_WRITEHANDLE(buffer, fp1, len);
  OS_CLOSEHANDLE(fp1);
  puts("buffer.log saved.");
}

void flushbuf(void)
{
  while (uart_queue() != 0)
  {
    uart_read();
  }
}

C_task main(void)
{
  unsigned  char cmd[256];
  unsigned char cmdpos;
  os_initstdio();
  puts("ATM2+ UART TESTER. SEND AND RECIEVE BYTES.");
  uart_init(3);
  spdFactor = 45;
  puts("Uart inited @ 38400");
  flushbuf();
  cmd[0] = '\0';
  cmdpos = 0;
  while (1)
  {
    unsigned char count;
   getdata();
   renderWin();

    key = _low_level_get();
    if (key != 0)
    {
      switch (key)
      {
        case 177:
          uart_init(1);
          puts("Uart inited @ 115200");
                  spdFactor = 13;
          key = 0;
          break;

        case 178:
          uart_init(2);
          puts("Uart inited @ 57600");
          spdFactor = 28;
                  key = 2;
          break;

        case 179:
          uart_init(3);
          puts("Uart inited @ 38400");
                  spdFactor = 44;
          key = 0;
          break;

        case 180:
          uart_init(4);
          puts("Uart inited @ 28800");
          spdFactor = 55;
                  key = 0;
                  break;

        case 181:
          uart_init(6);
          puts("Uart inited @ 19200");
                  spdFactor = 20;
          key = 0;
          break;

        case 182:
          uart_init(8);
          puts("Uart inited @ 14400");
                  spdFactor = 90;
          key = 0;
          break;

        case 183:
          uart_init(12);
          puts("Uart inited @ 9600");
                  spdFactor = 100;
          key = 0;
          break;

        case 184:
          uart_init(24);
          puts("Uart inited @ 4800");
                  spdFactor = 100;
          key = 0;
          break;

        case 185:
          uart_init(48);
          puts("Uart inited @ 2400");
                  spdFactor = 100;
          key = 0;
          break;

        case 176:
          uart_init(96);
          puts("Uart inited @ 1200");
                  spdFactor =  150;
          key = 0;
          break;

        case 13:
          cmd[cmdpos] = '\0';
          sendcommand(cmd);
          cmdpos = 0;
          cmd[cmdpos] = '\0';
          putchar ('\r');
          putchar ('\n');
          key = 0;
          break;

        case 19:
          saveBuff();
          key = 0;
          break;

        case 27:
          exit(0);
     
                case 8:
                if (cmdpos != 0)
        {
                cmdpos--;
          cmd[cmdpos] = '\0';
          putchar ('\r');
          for ( count = 0; count < cmdpos + 1; count++)
          {
            putchar (' ');
          }
          putchar ('\r');
          count = 0;
          while (cmd[count] != '\0')
          {
            putchar(cmd[count]);
            count++;
          }
        }
                        key = 0;
                        break;
          }
    }

    if (key != 0)
    {
      cmd[cmdpos] = key;
      cmdpos++;
      putchar (key);
    }
  }
return 0;
}