home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / sys / 3b1 / 2925 < prev    next >
Encoding:
Internet Message Format  |  1992-07-22  |  5.0 KB

  1. Path: sparky!uunet!beartrk!ceilidh!hijo-2!dnichols
  2. From: dnichols@ceilidh.beartrack.com (Don Nichols (DoN.))
  3. Newsgroups: comp.sys.3b1
  4. Subject: Re: Raw mode on a 3b1, for Wizard link
  5. Message-ID: <1992Jul23.002728.5926@ceilidh.beartrack.com>
  6. Date: 23 Jul 92 00:27:28 GMT
  7. References: <1992Jul22.014605.15570@alw.nih.gov>
  8. Organization: D and D Data, Vienna Virginia
  9. Lines: 122
  10.  
  11. In article <1992Jul22.014605.15570@alw.nih.gov> crtb@helix.nih.gov (Chuck Bacon) writes:
  12. >I've been diddling with the Sharp Wizard code, courtesy of Virgin
  13. >Software, J. Bruce Dawson and Steve Putz, which has been recently
  14. >circulating.  Reference was made to Sharp documentation describing
  15. >the communication protocol between the Organizer and anybody's
  16. >RS232.
  17. >
  18. >I've written a perl script which talks to the Organizer on tty000.
  19. >So far it can request the overall directory, cause the Organizer to
  20. >exit the PC-link state (to reduce battery drain), and turn the
  21. >Organizer off completely.  But nothing else.
  22. >
  23. >Does anybody have the Sharp protocols?  The code I have, oz.c, was
  24. >apparently written for an earlier model, and my OZ-8000 doesn't
  25. >respond to the Send or Receive commands.  Any help?
  26. >
  27. >Does anybody know how to invoke raw mode on /dev/tty000 on a 3b1?
  28. >I managed to do an ioctl() on it which gets it into a pretty decent
  29. >mode, but I'd be happier with raw mode, especially if I can get a
  30. >timeout, rather than having the program hang.  I can't find any
  31. >mention of raw mode in any of the 3.51 documentation.
  32.  
  33.     RAW mode was a simple all-or-nothing thing.  The termio interface
  34. gives finer control, but makes simple things like the selection of RAW mode
  35. more difficult.  First off, you have separate control of processing on input
  36. vs output.  There's also an array of characters used to define which
  37. character invokes which kind of special funcitons.  Look in section 7 of the
  38. manual, under termio, to find more detail than you'll ever want, except how
  39. to do it simply. :-)
  40.  
  41.     Ioctl() gets you a structure with several fields, including two
  42. important ones for our purpose:  c_iflag, and c_oflag, both unsigned 16-bit
  43. entities.  Each bit of c_iflag has a meaning to turn on some processing of input
  44. characters (and coditions), as specified below, from <sys/termio.h>.  To get
  45. RAW input, you need to clear all bits in c_iflag.
  46.  
  47. /* input modes */
  48. #define IGNBRK  0000001
  49. #define BRKINT  0000002
  50. #define IGNPAR  0000004
  51. #define PARMRK  0000010
  52. #define INPCK   0000020
  53. #define ISTRIP  0000040
  54. #define INLCR   0000100
  55. #define IGNCR   0000200
  56. #define ICRNL   0000400
  57. #define IUCLC   0001000
  58. #define IXON    0002000
  59. #define IXANY   0004000
  60. #define IXOFF   0010000
  61.  
  62.     For output, the selections are made with c_oflag. To get raw output
  63. processing, all you have to do is clear the OPOST bit in c_oflag.  If you
  64. want some of the output functions, such as translation of LF to CR-LF,
  65. you'll have to set and clear individual bits to produce the behavior you
  66. want.  Most of the bits are used for specifying various delays, none of
  67. which should be needed for any reasonably intelligent terminal with adequate
  68. input buffer and handshaking, but which are needed if you have a
  69. simple-minded hardcopy terminal like an ASR-33 TeleType.  Other bits serve
  70. to map lower case to upper, and add in the CR to the LF.  The relevant
  71. section of <sys/termio.h> follows.
  72.  
  73. /* output modes */
  74. #define OPOST   0000001
  75. #define OLCUC   0000002
  76. #define ONLCR   0000004
  77. #define OCRNL   0000010
  78. #define ONOCR   0000020
  79. #define ONLRET  0000040
  80. #define OFILL   0000100
  81. #define OFDEL   0000200
  82. #define NLDLY   0000400
  83. #define NL0     0
  84. #define NL1     0000400
  85. #define CRDLY   0003000
  86. #define CR0     0
  87. #define CR1     0001000
  88. #define CR2     0002000
  89. #define CR3     0003000
  90. #define TABDLY  0014000
  91. #define TAB0    0
  92. #define TAB1    0004000
  93. #define TAB2    0010000
  94. #define TAB3    0014000
  95. #define BSDLY   0020000
  96. #define BS0     0
  97. #define BS1     0020000
  98. #define VTDLY   0040000
  99. #define VT0     0
  100. #define VT1     0040000
  101. #define FFDLY   0100000
  102. #define FF0     0
  103. #define FF1     0100000
  104.  
  105.     Another section of the structure selects the baud rate, and another
  106. one, i_lflag will enable a half-cooked version.  It looks as though you may
  107. want it fully zeroed, as well, for fully RAW mode.  Here's the relevant
  108. section of <sys/termio.h> for that.  If you just clear ISIG, and ICANON,
  109. that might be enough, but it wouldn't hurt to zero the whole word here as
  110. well.
  111.  
  112. /* line discipline 0 modes */
  113. #define ISIG    0000001
  114. #define ICANON  0000002
  115. #define XCASE   0000004
  116. #define ECHO    0000010
  117. #define ECHOE   0000020
  118. #define ECHOK   0000040
  119. #define ECHONL  0000100
  120. #define NOFLSH  0000200
  121.  
  122.     If you clear all these bits, you probably want to be on a line
  123. opened with open(2), rather than fopen(3), since many of the cues for proper
  124. opreation of fopen()ed files will not be present.
  125.  
  126.     Good Luck
  127.         DoN.
  128. -- 
  129. Donald Nichols (DoN.)     | Voice (Days): (703) 704-2280 (Eves): (703) 938-4564
  130. D&D Data                  |  Email: <dnichols@ceilidh.beartrack.com>
  131. I said it - no one else   |         <dnichols@ceilidh.aes.com>
  132.     --- Black Holes are where God is dividing by zero ---
  133.