Exemplo n.º 1
0
void serial_print(const char *fmt, ...)
{
	va_list args;
	int n;

	va_start(args, fmt);
	n = vsprintf(sprint_buf, fmt, args);
	va_end(args);
	writeserial(sprint_buf, n);
}
Exemplo n.º 2
0
Arquivo: slip.c Projeto: 12019/smews
/* callback: forward from tun to serial line using slip */
static void forward_to_slip(int size) {
        int i;
        message("Packet to slip: %d bytes\n", size);
        writeserial(SLIP_END);
        for(i=0; i<size; i++) {
	      if(tbuffer[i]==SLIP_END){
		    writeserial(SLIP_ESC);
		    writeserial(SLIP_ESC_END);
	      } else if(tbuffer[i]==SLIP_ESC){
		    writeserial(SLIP_ESC);
		    writeserial(SLIP_ESC_ESC);
	      } else {
		    writeserial(tbuffer[i]);
	      }
        }
        writeserial(SLIP_END);
}
Exemplo n.º 3
0
Arquivo: main.c Projeto: 12019/smews
static void read_from_tun() {
        int i;
        int nRead;
        /* something has been received on tun_fd, we forward it to socket_fd */
        nRead = read(tun_fd, (void *)tbuffer_shadow, DEV_MTU);
        check(nRead != -1,"read() from tun error");
        nRead -= 4;
        printf("tunToSerial %d\n",nRead);
        writeserial(SLIP_END);
        for(i=0; i<nRead; i++) {
	      if(tbuffer[i]==SLIP_END){
		    writeserial(SLIP_ESC);
		    writeserial(SLIP_ESC_END);
	      } else if(tbuffer[i]==SLIP_ESC){
		    writeserial(SLIP_ESC);
		    writeserial(SLIP_ESC_ESC);
	      } else {
		    writeserial(tbuffer[i]);
	      }
        }
        writeserial(SLIP_END);
}
Exemplo n.º 4
0
bool interactive_mode(mems_info * info, uint8_t * response_buffer)
{
  size_t icmd_size = 8;
  char *icmd_buf_ptr;
  uint8_t icmd;
  ssize_t bytes_read = 0;
  ssize_t total_bytes_read = 0;
  bool quit = false;

  if ((icmd_buf_ptr = (char *)malloc(icmd_size)) != NULL)
  {
    printf("Enter a command (in hex) or 'quit'.\n> ");
    while (!quit && (fgets(icmd_buf_ptr, icmd_size, stdin) != NULL))
    {
      if (strncmp(icmd_buf_ptr, "quit", 4) == 0)
      {
        quit = true;
      }
      else if (icmd_buf_ptr[0] != '\n' && icmd_buf_ptr[1] != '\r')
      {
        icmd = strtoul(icmd_buf_ptr, NULL, 16);
        if ((icmd >= 0) && (icmd <= 0xff))
        {
          if (writeserial(info, &icmd, 1) == 1)
          {
            bytes_read = 0;
            total_bytes_read = 0;
            do
            {
              bytes_read = readserial(info, response_buffer + bytes_read, 1);
              total_bytes_read += bytes_read;
            } while (bytes_read > 0);

            if (total_bytes_read > 0)
            {
              printbuf(response_buffer, total_bytes_read);
            }
            else
            {
              printf("No response from ECU.\n");
            }
          }
          else
          {
            printf("Error: failed to write command byte to serial port.\n");
          }
        }
        else
        {
          printf("Error: command must be between 0x00 and 0xFF.\n");
        }
        printf("> ");
      }
      else
      {
        printf("> ");
      }
    }

    free(icmd_buf_ptr);
  }
  else
  {
    printf("Error allocating command buffer memory.\n");
  }
}