/[rdesktop]/sourceforge.net/trunk/rdesktop/serial.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /sourceforge.net/trunk/rdesktop/serial.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 816 by jdmeijer, Sun Feb 20 19:38:34 2005 UTC revision 865 by stargo, Tue Mar 15 11:25:50 2005 UTC
# Line 77  Line 77 
77  #define SERIAL_PURGE_RXCLEAR 0x00000008  #define SERIAL_PURGE_RXCLEAR 0x00000008
78    
79  /* SERIAL_WAIT_ON_MASK */  /* SERIAL_WAIT_ON_MASK */
80  #define SERIAL_EV_RXCHAR           0x0001       // Any Character received  #define SERIAL_EV_RXCHAR           0x0001       /* Any Character received */
81  #define SERIAL_EV_RXFLAG           0x0002       // Received certain character  #define SERIAL_EV_RXFLAG           0x0002       /* Received certain character */
82  #define SERIAL_EV_TXEMPTY          0x0004       // Transmitt Queue Empty  #define SERIAL_EV_TXEMPTY          0x0004       /* Transmitt Queue Empty */
83  #define SERIAL_EV_CTS              0x0008       // CTS changed state  #define SERIAL_EV_CTS              0x0008       /* CTS changed state */
84  #define SERIAL_EV_DSR              0x0010       // DSR changed state  #define SERIAL_EV_DSR              0x0010       /* DSR changed state */
85  #define SERIAL_EV_RLSD             0x0020       // RLSD changed state  #define SERIAL_EV_RLSD             0x0020       /* RLSD changed state */
86  #define SERIAL_EV_BREAK            0x0040       // BREAK received  #define SERIAL_EV_BREAK            0x0040       /* BREAK received */
87  #define SERIAL_EV_ERR              0x0080       // Line status error occurred  #define SERIAL_EV_ERR              0x0080       /* Line status error occurred */
88  #define SERIAL_EV_RING             0x0100       // Ring signal detected  #define SERIAL_EV_RING             0x0100       /* Ring signal detected */
89  #define SERIAL_EV_PERR             0x0200       // Printer error occured  #define SERIAL_EV_PERR             0x0200       /* Printer error occured */
90  #define SERIAL_EV_RX80FULL         0x0400       // Receive buffer is 80 percent full  #define SERIAL_EV_RX80FULL         0x0400       /* Receive buffer is 80 percent full */
91  #define SERIAL_EV_EVENT1           0x0800       // Provider specific event 1  #define SERIAL_EV_EVENT1           0x0800       /* Provider specific event 1 */
92  #define SERIAL_EV_EVENT2           0x1000       // Provider specific event 2  #define SERIAL_EV_EVENT2           0x1000       /* Provider specific event 2 */
93    
94  /* Modem Status */  /* Modem Status */
95  #define SERIAL_MS_DTR 0x01  #define SERIAL_MS_DTR 0x01
# Line 503  serial_enum_devices(uint32 * id, char *o Line 503  serial_enum_devices(uint32 * id, char *o
503          char *pos2;          char *pos2;
504          int count = 0;          int count = 0;
505    
506          // skip the first colon          /* skip the first colon */
507          optarg++;          optarg++;
508          while ((pos = next_arg(optarg, ',')) && *id < RDPDR_MAX_DEVICES)          while ((pos = next_arg(optarg, ',')) && *id < RDPDR_MAX_DEVICES)
509          {          {
510                  // Init data structures for device                  /* Init data structures for device */
511                  pser_inf = (SERIAL_DEVICE *) xmalloc(sizeof(SERIAL_DEVICE));                  pser_inf = (SERIAL_DEVICE *) xmalloc(sizeof(SERIAL_DEVICE));
512                  pser_inf->ptermios = (struct termios *) xmalloc(sizeof(struct termios));                  pser_inf->ptermios = (struct termios *) xmalloc(sizeof(struct termios));
513                  memset(pser_inf->ptermios, 0, sizeof(struct termios));                  memset(pser_inf->ptermios, 0, sizeof(struct termios));
# Line 523  serial_enum_devices(uint32 * id, char *o Line 523  serial_enum_devices(uint32 * id, char *o
523                  strcpy(g_rdpdr_device[*id].local_path, pos2);                  strcpy(g_rdpdr_device[*id].local_path, pos2);
524                  printf("SERIAL %s to %s\n", g_rdpdr_device[*id].name,                  printf("SERIAL %s to %s\n", g_rdpdr_device[*id].name,
525                         g_rdpdr_device[*id].local_path);                         g_rdpdr_device[*id].local_path);
526                  // set device type                  /* set device type */
527                  g_rdpdr_device[*id].device_type = DEVICE_TYPE_SERIAL;                  g_rdpdr_device[*id].device_type = DEVICE_TYPE_SERIAL;
528                  g_rdpdr_device[*id].pdevice_data = (void *) pser_inf;                  g_rdpdr_device[*id].pdevice_data = (void *) pser_inf;
529                  count++;                  count++;
# Line 559  serial_create(uint32 device_id, uint32 a Line 559  serial_create(uint32 device_id, uint32 a
559                  return STATUS_ACCESS_DENIED;                  return STATUS_ACCESS_DENIED;
560          }          }
561    
562          // Store handle for later use          /* Store handle for later use */
563          g_rdpdr_device[device_id].handle = serial_fd;          g_rdpdr_device[device_id].handle = serial_fd;
564    
565          /* some sane information */          /* some sane information */
# Line 618  serial_read(NTHANDLE handle, uint8 * dat Line 618  serial_read(NTHANDLE handle, uint8 * dat
618          pser_inf = get_serial_info(handle);          pser_inf = get_serial_info(handle);
619          ptermios = pser_inf->ptermios;          ptermios = pser_inf->ptermios;
620    
621          // Set timeouts kind of like the windows serial timeout parameters. Multiply timeout          /* Set timeouts kind of like the windows serial timeout parameters. Multiply timeout
622          // with requested read size             with requested read size */
623          if (pser_inf->read_total_timeout_multiplier | pser_inf->read_total_timeout_constant)          if (pser_inf->read_total_timeout_multiplier | pser_inf->read_total_timeout_constant)
624          {          {
625                  timeout =                  timeout =
# Line 631  serial_read(NTHANDLE handle, uint8 * dat Line 631  serial_read(NTHANDLE handle, uint8 * dat
631                  timeout = (pser_inf->read_interval_timeout * length + 99) / 100;                  timeout = (pser_inf->read_interval_timeout * length + 99) / 100;
632          }          }
633    
634          // If a timeout is set, do a blocking read, which times out after some time.          /* If a timeout is set, do a blocking read, which times out after some time.
635          // It will make rdesktop less responsive, but it will improve serial performance, by not             It will make rdesktop less responsive, but it will improve serial performance, by not
636          // reading one character at a time.             reading one character at a time. */
637          if (timeout == 0)          if (timeout == 0)
638          {          {
639                  ptermios->c_cc[VTIME] = 0;                  ptermios->c_cc[VTIME] = 0;

Legend:
Removed from v.816  
changed lines
  Added in v.865

  ViewVC Help
Powered by ViewVC 1.1.26