riowinif.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:58k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /************************************************************************/
  2. /* */
  3. /* Title : RIO Shared Memory Window Inteface */
  4. /* */
  5. /* Author : N.P.Vassallo */
  6. /* */
  7. /* Creation : 7th June 1999 */
  8. /* */
  9. /* Version : 1.0.0 */
  10. /* */
  11. /* Copyright : (c) Specialix International Ltd. 1999 *
  12.  *      This program is free software; you can redistribute it and/or modify
  13.  *      it under the terms of the GNU General Public License as published by
  14.  *      the Free Software Foundation; either version 2 of the License, or
  15.  *      (at your option) any later version.
  16.  *
  17.  *      This program is distributed in the hope that it will be useful,
  18.  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
  19.  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20.  *      GNU General Public License for more details.
  21.  *
  22.  *      You should have received a copy of the GNU General Public License
  23.  *      along with this program; if not, write to the Free Software
  24.  *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  25.  * */
  26. /* Description : Prototypes, structures and definitions */
  27. /* describing RIO host card shared memory */
  28. /* window interface structures: */
  29. /* PARMMAP */
  30. /* RUP */
  31. /* PHB */
  32. /* LPB */
  33. /* PKT */
  34. /* */
  35. /************************************************************************/
  36. /* History...
  37. 1.0.0 07/06/99 NPV Creation. (based on PARMMAP.H)
  38. */
  39. #ifndef _riowinif_h /* If RIOWINDIF.H not already defined */
  40. #define _riowinif_h    1
  41. /*****************************************************************************
  42. ********************************             *********************************
  43. ********************************   General   *********************************
  44. ********************************             *********************************
  45. *****************************************************************************/
  46. #define TPNULL ((_u16)(0x8000))
  47. /*****************************************************************************
  48. ********************************              ********************************
  49. ********************************   PARM_MAP   ********************************
  50. ********************************              ********************************
  51. *****************************************************************************/
  52. /* The PARM_MAP structure defines global values relating to the Host Card / RTA
  53.    and is the main structure from which all other structures are referenced. */
  54. typedef struct _PARM_MAP
  55. {
  56. _u16 phb_ptr; /* 0x00 Pointer to the PHB array */
  57. _u16 phb_num_ptr; /* 0x02 Ptr to Number of PHB's */
  58. _u16 free_list; /* 0x04 Free List pointer */
  59. _u16 free_list_end; /* 0x06 Free List End pointer */
  60. _u16 q_free_list_ptr; /* 0x08 Ptr to Q_BUF variable */
  61. _u16 unit_id_ptr; /* 0x0A Unit Id */
  62. _u16 link_str_ptr; /* 0x0C Link Structure Array */
  63. _u16 bootloader_1; /* 0x0E 1st Stage Boot Loader */
  64. _u16 bootloader_2; /* 0x10 2nd Stage Boot Loader */
  65. _u16 port_route_map_ptr; /* 0x12 Port Route Map */
  66. _u16 route_ptr; /* 0x14 Route Map */
  67. _u16 map_present; /* 0x16 Route Map present */
  68. _u16 pkt_num; /* 0x18 Total number of packets */
  69. _u16 q_num; /* 0x1A Total number of Q packets */
  70. _u16 buffers_per_port; /* 0x1C Number of buffers per port */
  71. _u16 heap_size; /* 0x1E Initial size of heap */
  72. _u16 heap_left; /* 0x20 Current Heap left */
  73. _u16 error; /* 0x22 Error code */
  74. _u16 tx_max; /* 0x24 Max number of tx pkts per phb */
  75. _u16 rx_max; /* 0x26 Max number of rx pkts per phb */
  76. _u16 rx_limit; /* 0x28 For high / low watermarks */
  77. _u16 links; /* 0x2A Links to use */
  78. _u16 timer; /* 0x2C Interrupts per second */
  79. _u16 rups; /* 0x2E Pointer to the RUPs */
  80. _u16 max_phb; /* 0x30 Mostly for debugging */
  81. _u16 living; /* 0x32 Just increments!! */
  82. _u16 init_done; /* 0x34 Initialisation over */
  83. _u16 booting_link; /* 0x36 */
  84. _u16 idle_count; /* 0x38 Idle time counter */
  85. _u16 busy_count; /* 0x3A Busy counter */
  86. _u16 idle_control; /* 0x3C Control Idle Process */
  87. _u16 tx_intr; /* 0x3E TX interrupt pending */
  88. _u16 rx_intr; /* 0x40 RX interrupt pending */
  89. _u16 rup_intr; /* 0x42 RUP interrupt pending */
  90. } PARM_MAP;
  91. /* Same thing again, but defined as offsets... */
  92. #define PM_phb_ptr 0x00 /* 0x00 Pointer to the PHB array */
  93. #define PM_phb_num_ptr 0x02 /* 0x02 Ptr to Number of PHB's */
  94. #define PM_free_list 0x04 /* 0x04 Free List pointer */
  95. #define PM_free_list_end 0x06 /* 0x06 Free List End pointer */
  96. #define PM_q_free_list_ptr 0x08 /* 0x08 Ptr to Q_BUF variable */
  97. #define PM_unit_id_ptr 0x0A /* 0x0A Unit Id */
  98. #define PM_link_str_ptr 0x0C /* 0x0C Link Structure Array */
  99. #define PM_bootloader_1 0x0E /* 0x0E 1st Stage Boot Loader */
  100. #define PM_bootloader_2 0x10 /* 0x10 2nd Stage Boot Loader */
  101. #define PM_port_route_map_ptr 0x12 /* 0x12 Port Route Map */
  102. #define PM_route_ptr 0x14 /* 0x14 Route Map */
  103. #define PM_map_present 0x16 /* 0x16 Route Map present */
  104. #define PM_pkt_num 0x18 /* 0x18 Total number of packets */
  105. #define PM_q_num 0x1A /* 0x1A Total number of Q packets */
  106. #define PM_buffers_per_port 0x1C /* 0x1C Number of buffers per port */
  107. #define PM_heap_size 0x1E /* 0x1E Initial size of heap */
  108. #define PM_heap_left 0x20 /* 0x20 Current Heap left */
  109. #define PM_error 0x22 /* 0x22 Error code */
  110. #define PM_tx_max 0x24 /* 0x24 Max number of tx pkts per phb */
  111. #define PM_rx_max 0x26 /* 0x26 Max number of rx pkts per phb */
  112. #define PM_rx_limit 0x28 /* 0x28 For high / low watermarks */
  113. #define PM_links 0x2A /* 0x2A Links to use */
  114. #define PM_timer 0x2C /* 0x2C Interrupts per second */
  115. #define PM_rups 0x2E /* 0x2E Pointer to the RUPs */
  116. #define PM_max_phb 0x30 /* 0x30 Mostly for debugging */
  117. #define PM_living 0x32 /* 0x32 Just increments!! */
  118. #define PM_init_done 0x34 /* 0x34 Initialisation over */
  119. #define PM_booting_link 0x36 /* 0x36 */
  120. #define PM_idle_count 0x38 /* 0x38 Idle time counter */
  121. #define PM_busy_count 0x3A /* 0x3A Busy counter */
  122. #define PM_idle_control 0x3C /* 0x3C Control Idle Process */
  123. #define PM_tx_intr 0x3E /* 0x4E TX interrupt pending */
  124. #define PM_rx_intr 0x40 /* 0x40 RX interrupt pending */
  125. #define PM_rup_intr 0x42 /* 0x42 RUP interrupt pending */
  126. #define sizeof_PARM_MAP 0x44 /* structure size = 0x44 */
  127. /* PARM_MAP.error definitions... */
  128. #define E_NO_ERROR 0x00
  129. #define E_PROCESS_NOT_INIT 0x01
  130. #define E_LINK_TIMEOUT 0x02
  131. #define E_NO_ROUTE 0x03
  132. #define E_CONFUSED 0x04
  133. #define E_HOME 0x05
  134. #define E_CSUM_FAIL 0x06
  135. #define E_DISCONNECTED 0x07
  136. #define E_BAD_RUP 0x08
  137. #define E_NO_VIRGIN 0x09
  138. #define E_BOOT_RUP_BUSY 0x10
  139. #define E_CHANALLOC 0x80
  140. #define E_POLL_ALLOC 0x81
  141. #define E_LTTWAKE 0x82
  142. #define E_LTT_ALLOC 0x83
  143. #define E_LRT_ALLOC 0x84
  144. #define E_CIRRUS 0x85
  145. #define E_MONITOR 0x86
  146. #define E_PHB_ALLOC 0x87
  147. #define E_ARRAY_ALLOC 0x88
  148. #define E_QBUF_ALLOC 0x89
  149. #define E_PKT_ALLOC 0x8a
  150. #define E_GET_TX_Q_BUF 0x8b
  151. #define E_GET_RX_Q_BUF 0x8c
  152. #define E_MEM_OUT 0x8d
  153. #define E_MMU_INIT 0x8e
  154. #define E_LTT_INIT 0x8f
  155. #define E_LRT_INIT 0x90
  156. #define E_LINK_RUN 0x91
  157. #define E_MONITOR_ALLOC 0x92
  158. #define E_MONITOR_INIT 0x93
  159. #define E_POLL_INIT 0x94
  160. /* PARM_MAP.links definitions... */
  161. #define RIO_LINK_ENABLE 0x80FF
  162. /*****************************************************************************
  163. **********************************         ***********************************
  164. **********************************   RUP   ***********************************
  165. **********************************         ***********************************
  166. *****************************************************************************/
  167. /* The RUP (Remote Unit Port) structure relates to the Remote Terminal Adapters
  168.    attached to the system and there is normally an array of MAX_RUPS (=16) structures
  169.    in a host card, defined by PARM_MAP->rup. */
  170. typedef struct _RUP
  171. {
  172. _u16 txpkt; /* 0x00 Outgoing packet */
  173. _u16 rxpkt; /* 0x02 ncoming packet */
  174. _u16 link; /* 0x04 Which link to send packet down ? */
  175. _u8 rup_dest_unit[2]; /* 0x06 Destination Unit */
  176. _u16 handshake; /* 0x08 Handshaking */
  177. _u16 timeout; /* 0x0A Timeout */
  178. _u16 status; /* 0x0C Status */
  179. _u16 txcontrol; /* 0x0E Transmit control */
  180. _u16 rxcontrol; /* 0x10 Receive control */
  181. } RUP;
  182. /* Same thing again, but defined as offsets... */
  183. #define RUP_txpkt 0x00 /* 0x00 Outgoing packet */
  184. #define RUP_rxpkt 0x02 /* 0x02 Incoming packet */
  185. #define RUP_link 0x04 /* 0x04 Which link to send packet down ? */
  186. #define RUP_rup_dest_unit 0x06 /* 0x06 Destination Unit */
  187. #define RUP_handshake 0x08 /* 0x08 Handshaking */
  188. #define RUP_timeout 0x0A /* 0x0A Timeout */
  189. #define RUP_status 0x0C /* 0x0C Status */
  190. #define RUP_txcontrol 0x0E /* 0x0E Transmit control */
  191. #define RUP_rxcontrol 0x10 /* 0x10 Receive control */
  192. #define sizeof_RUP 0x12 /* structure size = 0x12 */
  193. #define MAX_RUP 16
  194. /* RUP.txcontrol definitions... */
  195. #define TX_RUP_INACTIVE 0 /* Nothing to transmit */
  196. #define TX_PACKET_READY 1 /* Transmit packet ready */
  197. #define TX_LOCK_RUP 2 /* Transmit side locked */
  198. /* RUP.txcontrol definitions... */
  199. #define RX_RUP_INACTIVE 0 /* Nothing received */
  200. #define RX_PACKET_READY 1 /* Packet received */
  201. #define RUP_NO_OWNER 0xFF /* RUP not owned by any process */
  202. /*****************************************************************************
  203. **********************************         ***********************************
  204. **********************************   PHB   ***********************************
  205. **********************************         ***********************************
  206. *****************************************************************************/
  207. /* The PHB (Port Header Block) structure relates to the serial ports attached
  208.    to the system and there is normally an array of MAX_PHBS (=128) structures
  209.    in a host card, defined by PARM_MAP->phb_ptr and PARM_MAP->phb_num_ptr. */
  210. typedef struct _PHB
  211. {
  212. _u16 source; /* 0x00 Location of the PHB in the host card */
  213. _u16 handshake; /* 0x02 Used to manage receive packet flow control */
  214. _u16 status; /* 0x04 Internal port transmit/receive status */
  215. _u16 timeout; /* 0x06 Time period to wait for an ACK */
  216. _u16 link; /* 0x08 The host link associated with the PHB */
  217. _u16 destination; /* 0x0A Location of the remote port on the network */
  218. _u16 tx_start; /* 0x0C first entry in the packet array for transmit packets */
  219. _u16 tx_end; /* 0x0E last entry in the packet array for transmit packets */
  220. _u16 tx_add; /* 0x10 position in the packet array for new transmit packets */
  221. _u16 tx_remove; /* 0x12 current position in the packet pointer array */
  222. _u16 rx_start; /* 0x14 first entry in the packet array for receive packets */
  223. _u16 rx_end; /* 0x16 last entry in the packet array for receive packets */
  224. _u16 rx_add; /* 0x18 position in the packet array for new receive packets */
  225. _u16 rx_remove; /* 0x1A current position in the packet pointer array */
  226. } PHB;
  227. /* Same thing again, but defined as offsets... */
  228. #define PHB_source 0x00 /* 0x00 Location of the PHB in the host card */
  229. #define PHB_handshake 0x02 /* 0x02 Used to manage receive packet flow control */
  230. #define PHB_status 0x04 /* 0x04 Internal port transmit/receive status */
  231. #define PHB_timeout 0x06 /* 0x06 Time period to wait for an ACK */
  232. #define PHB_link 0x08 /* 0x08 The host link associated with the PHB */
  233. #define PHB_destination 0x0A /* 0x0A Location of the remote port on the network */
  234. #define PHB_tx_start 0x0C /* 0x0C first entry in the packet array for transmit packets */
  235. #define PHB_tx_end 0x0E /* 0x0E last entry in the packet array for transmit packets */
  236. #define PHB_tx_add 0x10 /* 0x10 position in the packet array for new transmit packets */
  237. #define PHB_tx_remove 0x12 /* 0x12 current position in the packet pointer array */
  238. #define PHB_rx_start 0x14 /* 0x14 first entry in the packet array for receive packets */
  239. #define PHB_rx_end 0x16 /* 0x16 last entry in the packet array for receive packets */
  240. #define PHB_rx_add 0x18 /* 0x18 position in the packet array for new receive packets */
  241. #define PHB_rx_remove 0x1A /* 0x1A current position in the packet pointer array */
  242. #define sizeof_PHB 0x1C /* structure size = 0x1C */
  243. /* PHB.handshake definitions... */
  244. #define PHB_HANDSHAKE_SET 0x0001 /* Set by LRT */
  245. #define PHB_HANDSHAKE_RESET 0x0002 /* Set by ISR / driver */
  246. #define PHB_HANDSHAKE_FLAGS (PHB_HANDSHAKE_RESET|PHB_HANDSHAKE_SET)
  247. /* Reset by ltt */
  248. #define MAX_PHB 128 /* range 0-127 */
  249. /*****************************************************************************
  250. **********************************         ***********************************
  251. **********************************   LPB   ***********************************
  252. **********************************         ***********************************
  253. *****************************************************************************/
  254. /* The LPB (Link Parameter Block) structure relates to a RIO Network Link
  255.    and there is normally an array of MAX_LINKS (=4) structures in a host card,
  256.    defined by PARM_MAP->link_str_ptr. */
  257. typedef struct _LPB
  258. {
  259. _u16 link_number; /* 0x00 Link Number */
  260. _u16 in_ch; /* 0x02 Link In Channel */
  261. _u16 out_ch; /* 0x04 Link Out Channel */
  262. _u8 attached_serial[4]; /* 0x06 Attached serial number */
  263. _u8 attached_host_serial[4];/* 0x0A Serial number of Host who booted other end */
  264. _u16 descheduled; /* 0x0E Currently Descheduled */
  265. _u16 state; /* 0x10 Current state */
  266. _u16 send_poll; /* 0x12 Send a Poll Packet */
  267. _u16 ltt_p; /* 0x14 Process Descriptor */
  268. _u16 lrt_p; /* 0x16 Process Descriptor */
  269. _u16 lrt_status; /* 0x18 Current lrt status */
  270. _u16 ltt_status; /* 0x1A Current ltt status */
  271. _u16 timeout; /* 0x1C Timeout value */
  272. _u16 topology; /* 0x1E Topology bits */
  273. _u16 mon_ltt; /* 0x20 */
  274. _u16 mon_lrt; /* 0x22 */
  275. _u16 num_pkts; /* 0x24 */
  276. _u16 add_packet_list; /* 0x26 Add packets to here */
  277. _u16 remove_packet_list; /* 0x28 Send packets from here */
  278. _u16 lrt_fail_chan; /* 0x2A Lrt's failure channel */
  279. _u16 ltt_fail_chan; /* 0x2C Ltt's failure channel */
  280. RUP rup; /* 0x2E RUP structure for HOST to driver comms */
  281. RUP link_rup; /* 0x40 RUP for the link (POLL, topology etc.) */
  282. _u16 attached_link; /* 0x52 Number of attached link */
  283. _u16 csum_errors; /* 0x54 csum errors */
  284. _u16 num_disconnects; /* 0x56 number of disconnects */
  285. _u16 num_sync_rcvd; /* 0x58 # sync's received */
  286. _u16 num_sync_rqst; /* 0x5A # sync requests */
  287. _u16 num_tx; /* 0x5C Num pkts sent */
  288. _u16 num_rx; /* 0x5E Num pkts received */
  289. _u16 module_attached; /* 0x60 Module tpyes of attached */
  290. _u16 led_timeout; /* 0x62 LED timeout */
  291. _u16 first_port; /* 0x64 First port to service */
  292. _u16 last_port; /* 0x66 Last port to service */
  293. } LPB;
  294. /* Same thing again, but defined as offsets... */
  295. #define LPB_link_number 0x00 /* 0x00 Link Number */
  296. #define LPB_in_ch 0x02 /* 0x02 Link In Channel */
  297. #define LPB_out_ch 0x04 /* 0x04 Link Out Channel */
  298. #define LPB_attached_serial 0x06 /* 0x06 Attached serial number */
  299. #define LPB_attached_host_serial 0x0A /* 0x0A Serial number of Host who booted other end */
  300. #define LPB_descheduled 0x0E /* 0x0E Currently Descheduled */
  301. #define LPB_state 0x10 /* 0x10 Current state */
  302. #define LPB_send_poll 0x12 /* 0x12 Send a Poll Packet */
  303. #define LPB_ltt_p 0x14 /* 0x14 Process Descriptor */
  304. #define LPB_lrt_p 0x16 /* 0x16 Process Descriptor */
  305. #define LPB_lrt_status 0x18 /* 0x18 Current lrt status */
  306. #define LPB_ltt_status 0x1A /* 0x1A Current ltt status */
  307. #define LPB_timeout 0x1C /* 0x1C Timeout value */
  308. #define LPB_topology 0x1E /* 0x1E Topology bits */
  309. #define LPB_mon_ltt 0x20 /* 0x20 */
  310. #define LPB_mon_lrt 0x22 /* 0x22 */
  311. #define LPB_num_pkts 0x24 /* 0x24 */
  312. #define LPB_add_packet_list 0x26 /* 0x26 Add packets to here */
  313. #define LPB_remove_packet_list 0x28 /* 0x28 Send packets from here */
  314. #define LPB_lrt_fail_chan 0x2A /* 0x2A Lrt's failure channel */
  315. #define LPB_ltt_fail_chan 0x2C /* 0x2C Ltt's failure channel */
  316. #define LPB_rup 0x2E /* 0x2E RUP structure for HOST to driver comms */
  317. #define LPB_link_rup 0x40 /* 0x40 RUP for the link (POLL, topology etc.) */
  318. #define LPB_attached_link 0x52 /* 0x52 Number of attached link */
  319. #define LPB_csum_errors 0x54 /* 0x54 csum errors */
  320. #define LPB_num_disconnects 0x56 /* 0x56 number of disconnects */
  321. #define LPB_num_sync_rcvd 0x58 /* 0x58 # sync's received */
  322. #define LPB_num_sync_rqst 0x5A /* 0x5A # sync requests */
  323. #define LPB_num_tx 0x5C /* 0x5C Num pkts sent */
  324. #define LPB_num_rx 0x5E /* 0x5E Num pkts received */
  325. #define LPB_module_attached 0x60 /* 0x60 Module tpyes of attached */
  326. #define LPB_led_timeout 0x62 /* 0x62 LED timeout */
  327. #define LPB_first_port 0x64 /* 0x64 First port to service */
  328. #define LPB_last_port 0x66 /* 0x66 Last port to service */
  329. #define sizeof_LPB 0x68 /* structure size = 0x68 */
  330. #define LINKS_PER_UNIT 4 /* number of links from a host */
  331. /*****************************************************************************
  332. ********************************               *******************************
  333. ********************************   FREE_LIST   *******************************
  334. ********************************               *******************************
  335. *****************************************************************************/
  336. /* Used to overlay packet headers when allocating/freeing packets from the free list */
  337. typedef struct _FREE_LIST
  338. {
  339. _u16 next; /* 0x00 offset of next list item */
  340. _u16 prev; /* 0x02 offset of previous list item */
  341. } FREE_LIST;
  342. /* Same thing again, but defined as offsets... */
  343. #define FL_next 0x00 /* 0x00 offset of next list item */
  344. #define FL_prev 0x02 /* 0x02 offset of previous list item */
  345. /*****************************************************************************
  346. **********************************         ***********************************
  347. **********************************   PKT   ***********************************
  348. **********************************         ***********************************
  349. *****************************************************************************/
  350. /* The PKT is the main unit of communication between Host Cards and RTAs across
  351.    the RIO network.  */
  352. #define PKT_MAX_DATA_LEN   72 /* Size of packet data */
  353. typedef struct _PKT
  354. {
  355. _u8 dest_unit; /* 0x00 Destination Unit Id */
  356. _u8 dest_port; /* 0x01 Destination Port */
  357. _u8 src_unit; /* 0x02 Source Unit Id */
  358. _u8 src_port; /* 0x03 Source Port */
  359. _u8 len; /* 0x04 Length (in bytes) of data field */
  360. _u8 control; /* 0x05 */
  361. _u8 data[PKT_MAX_DATA_LEN]; /* 0x06 Actual data */
  362. _u16 csum; /* 0x4E C-SUM */
  363. } PKT;
  364. /* Same thing again, but defined as offsets... */
  365. #define PKT_dest_unit 0x00 /* 0x00 Destination Unit Id */
  366. #define PKT_dest_port 0x01 /* 0x01 Destination Port */
  367. #define PKT_src_unit 0x02 /* 0x02 Source Unit Id */
  368. #define PKT_src_port 0x03 /* 0x03 Source Port */
  369. #define PKT_len 0x04 /* 0x04 Length (in bytes) of data field */
  370. #define PKT_control 0x05 /* 0x05 */
  371. #define PKT_data 0x06 /* 0x06 Actual data */
  372. #define PKT_csum 0x4E /* 0x4E C-SUM */
  373. #define sizeof_PKT 0x50 /* structure size = 0x50 */
  374. /* PKT.len definitions... */
  375. #define PKT_CMD_BIT 0x80
  376. #define PKT_CMD_DATA 0x80
  377. #define PKT_LEN_MASK 0x7F
  378. /* PKT.control definitions... */
  379. #define PKT_ACK 0x40
  380. #define PKT_TGL 0x20
  381. #define DATA_WNDW 0x10
  382. #define PKT_TTL_MASK 0x0F
  383. #define MAX_TTL 0x0F
  384. /*****************************************************************************
  385. *****************************                     ****************************
  386. *****************************   Control Packets   ****************************
  387. *****************************                     ****************************
  388. *****************************************************************************/
  389. /* The following definitions and structures define the control packets sent
  390.    between the driver and RIO Ports, RTAs and Host Cards. */
  391. #define PRE_EMPTIVE 0x80 /* Pre-emptive command (sent via port's RUP) */
  392. /* "in-band" and "pre-emptive" port commands... */
  393. #define OPEN 0x00 /* Driver->RIO Open a port */
  394. #define CONFIG 0x01 /* Driver->RIO Configure a port */
  395. #define MOPEN 0x02 /* Driver->RIO Modem open (wait for DCD) */
  396. #define CLOSE 0x03 /* Driver->RIO Close a port */
  397. #define WFLUSH (0x04|PRE_EMPTIVE) /* Driver->RIO Write flush */
  398. #define RFLUSH (0x05|PRE_EMPTIVE) /* Driver->RIO Read flush */
  399. #define RESUME (0x06|PRE_EMPTIVE) /* Driver->RIO Behave as if XON received */
  400. #define SBREAK 0x07 /* Driver->RIO Start break */
  401. #define EBREAK 0x08 /* Driver->RIO End break */
  402. #define SUSPEND (0x09|PRE_EMPTIVE) /* Driver->RIO Behave as if XOFF received */
  403. #define FCLOSE (0x0A|PRE_EMPTIVE) /* Driver->RIO Force close */
  404. #define XPRINT 0x0B /* Driver->RIO Xprint packet */
  405. #define MBIS (0x0C|PRE_EMPTIVE) /* Driver->RIO Set modem lines */
  406. #define MBIC (0x0D|PRE_EMPTIVE) /* Driver->RIO Clear modem lines */
  407. #define MSET (0x0E|PRE_EMPTIVE) /* Driver->RIO Set modem lines */
  408. #define PCLOSE 0x0F /* Driver->RIO Pseudo close */
  409. #define MGET (0x10|PRE_EMPTIVE) /* Driver->RIO Force update of modem status */
  410. #define MEMDUMP (0x11|PRE_EMPTIVE) /* Driver->RIO DEBUG request for RTA memory */
  411. #define READ_REGISTER (0x12|PRE_EMPTIVE) /* Driver->RIO DEBUG read CD1400 register */
  412. /* Remote Unit Port (RUP) packet definitions... (specified in PKT.dest_unit and PKT.src_unit) */
  413. #define SYNC_RUP 0xFF /* Download internal */
  414. #define COMMAND_RUP 0xFE /* Command ack/status */
  415. #define ERROR_RUP 0xFD /* Download internal */
  416. #define POLL_RUP 0xFC /* Download internal */
  417. #define BOOT_RUP 0xFB /* Used to boot RTAs */
  418. #define ROUTE_RUP 0xFA /* Used to specify routing/topology */
  419. #define STATUS_RUP 0xF9 /* Not used */
  420. #define POWER_RUP 0xF8 /* Download internal */
  421. /* COMMAND_RUP definitions... */
  422. #define COMPLETE (0x20|PRE_EMPTIVE) /* RIO->Driver Command complete */
  423. #define BREAK_RECEIVED (0x21|PRE_EMPTIVE) /* RIO->Driver Break received */
  424. #define MODEM_STATUS (0x22|PRE_EMPTIVE) /* RIO->Driver Modem status change */
  425. /* BOOT_RUP definitions... */
  426. #define BOOT_REQUEST 0x00 /* RIO->Driver Request for boot */
  427. #define BOOT_ABORT 0x01 /* Driver->RIO Abort a boot */
  428. #define BOOT_SEQUENCE 0x02 /* Driver->RIO Packet with firmware details */
  429. #define BOOT_COMPLETED 0x03 /* RIO->Driver Boot completed */
  430. #define IFOAD 0x2F /* Driver->RIO Shutdown/Reboot RTA (Fall Over And Die) */
  431. #define IDENTIFY 0x30 /* Driver->RIO Identify RTA */
  432. #define ZOMBIE 0x31 /* Driver->RIO Shutdown/Flash LEDs */
  433. #define UFOAD 0x32 /* Driver->RIO Shutdown/Reboot neighbouring RTA */
  434. #define IWAIT 0x33 /* Driver->RIO Pause booting process */
  435. /* ROUTE_RUP definitions... */
  436. #define ROUTE_REQUEST 0x00 /* RIO->Driver Request an ID */
  437. #define ROUTE_FOAD 0x01 /* Driver->RIO Shutdown/reboot RTA */
  438. #define ROUTE_ALREADY 0x02 /* Driver->RIO Not used */
  439. #define ROUTE_USED 0x03 /* Driver->RIO Not used */
  440. #define ROUTE_ALLOCATE 0x04 /* Driver->RIO Allocate RTA RUP numbers */
  441. #define ROUTE_REQ_TOP 0x05 /* Driver->RIO Not used */
  442. #define ROUTE_TOPOLOGY 0x06 /* RIO->Driver Route/Topology status */
  443. /*****************************************************************************
  444. **********************************          **********************************
  445. **********************************   OPEN   **********************************
  446. **********************************          **********************************
  447. *****************************************************************************/
  448. /* (Driver->RIO,in-band)
  449.    Sent to open a port. 
  450.    Structure of configuration info used with OPEN, CONFIG and MOPEN packets... */
  451. #define PKT_Cmd (PKT_Data+0) /* Command code */
  452. #define PKT_Cor1 (PKT_Data+1) /* Channel Option Register 1 */
  453. #define PKT_Cor2 (PKT_Data+2) /* Channel Option Register 2 */
  454. #define PKT_Cor4 (PKT_Data+3) /* Channel Option Register 4 */
  455. #define PKT_Cor5 (PKT_Data+4) /* Channel Option Register 5 */
  456. #define PKT_TxXon (PKT_Data+5) /* Transmit XON character */
  457. #define PKT_TxXoff (PKT_Data+6) /* Transmit XOFF character */
  458. #define PKT_RxXon (PKT_Data+7) /* Receive XON character */
  459. #define PKT_RxXoff (PKT_Data+8) /* Receive XOFF character */
  460. #define PKT_Lnext (PKT_Data+9) /* Lnext character */
  461. #define PKT_TxBaud (PKT_Data+10) /* Transmit baud rate */
  462. #define PKT_RxBaud (PKT_Data+11) /* Receive baud rate */
  463. /* COR1 definitions... */
  464. #define COR1_PARITY 0xE0 /* Parity mask */
  465. #define COR1_NONE 0x00 /* No parity */
  466. #define COR1_SPACE 0x20 /* Space parity */
  467. #define COR1_EVEN 0x40 /* Even parity */
  468. #define COR1_MARK 0xA0 /* Mark parity */
  469. #define COR1_ODD 0xC0 /* Odd parity */
  470. #define COR1_STOPBITS 0x0C /* Stop bits mask */
  471. #define COR1_STOP1 0x00 /* 1 stop bit */
  472. #define COR1_STOP1_5 0x04 /* 1.5 stop bits */
  473. #define COR1_STOP2 0x08 /* 2 stop bits */
  474. #define COR1_DATABITS 0x03 /* Data bits mask */
  475. #define COR1_DATA5 0x00 /* 5 data bits */
  476. #define COR1_DATA6 0x01 /* 6 data bits */
  477. #define COR1_DATA7 0x02 /* 7 data bits */
  478. #define COR1_DATA8 0x03 /* 8 data bits */
  479. /* COR2 definitions... */
  480. #define COR2_XON_TXFLOW 0x40 /* XON/XOFF Transmit Flow */
  481. #define COR2_XANY_TXFLOW 0xC0 /* XON/XANY Transmit Flow */
  482. #define COR2_HUPCL 0x20 /* Hang Up On Close */
  483. #define COR2_DSR_TXFLOW 0x08 /* DSR Transmit Flow Control */
  484. #define COR2_RTS_RXFLOW 0x04 /* RTS Receive Flow Control */
  485. #define COR2_CTS_TXFLOW 0x02 /* CTS Transmit Flow Control */
  486. #define COR2_XON_RXFLOW 0x01 /* XON/XOFF Receive Flow */
  487. /* COR4 definition... */
  488. #define COR4_IGNCR 0x80 /* Discard received CR */
  489. #define COR4_ICRNL 0x40 /* Map received CR -> NL */
  490. #define COR4_INLCR 0x20 /* Map received NL -> CR */
  491. #define COR4_IGNBRK 0x10 /* Ignore Received Break */
  492. #define COR4_NBRKINT 0x08 /* No interrupt on rx Break */
  493. #define COR4_IGNPAR 0x04 /* ignore rx parity error chars */
  494. #define COR4_PARMRK 0x02 /* Mark rx parity error chars */
  495. #define COR4_RAISEMOD 0x01 /* Raise modem lines on !0 baud */
  496. /* COR5 definitions... */
  497. #define COR5_ISTRIP 0x80 /* Strip input chars to 7 bits */
  498. #define COR5_LNE 0x40 /* Enable LNEXT processing */
  499. #define COR5_CMOE 0x20 /* Match good & error characters */
  500. #define COR5_TAB3 0x10 /* TAB3 mode */
  501. #define COR5_TSTATE_ON 0x08 /* Enable tbusy/tstop monitoring */
  502. #define COR5_TSTATE_OFF 0x04 /* Disable tbusy/tstop monitoring */
  503. #define COR5_ONLCR 0x02 /* NL -> CR NL on output */
  504. #define COR5_OCRNL 0x01 /* CR -> NL on output */
  505. /* RxBaud and TxBaud definitions... */
  506. #define RIO_B0 0x00 /* RTS / DTR signals dropped */
  507. #define RIO_B50 0x01 /* 50 baud */
  508. #define RIO_B75 0x02 /* 75 baud */
  509. #define RIO_B110 0x03 /* 110 baud */
  510. #define RIO_B134 0x04 /* 134.5 baud */
  511. #define RIO_B150 0x05 /* 150 baud */
  512. #define RIO_B200 0x06 /* 200 baud */
  513. #define RIO_B300 0x07 /* 300 baud */
  514. #define RIO_B600 0x08 /* 600 baud */
  515. #define RIO_B1200 0x09 /* 1200 baud */
  516. #define RIO_B1800 0x0A /* 1800 baud */
  517. #define RIO_B2400 0x0B /* 2400 baud */
  518. #define RIO_B4800 0x0C /* 4800 baud */
  519. #define RIO_B9600 0x0D /* 9600 baud */
  520. #define RIO_B19200 0x0E /* 19200 baud */
  521. #define RIO_B38400 0x0F /* 38400 baud */
  522. #define RIO_B56000 0x10 /* 56000 baud */
  523. #define RIO_B57600 0x11 /* 57600 baud */
  524. #define RIO_B64000 0x12 /* 64000 baud */
  525. #define RIO_B115200 0x13 /* 115200 baud */
  526. #define RIO_B2000 0x14 /* 2000 baud */
  527. /*****************************************************************************
  528. *********************************            *********************************
  529. *********************************   CONFIG   *********************************
  530. *********************************            *********************************
  531. *****************************************************************************/
  532. /* (Driver->RIO,in-band)
  533.    CONFIG is sent from the driver to configure an already opened port.
  534.    Packet structure is same as OPEN.  */
  535. /*****************************************************************************
  536. *********************************           **********************************
  537. *********************************   MOPEN   **********************************
  538. *********************************           **********************************
  539. *****************************************************************************/
  540. /* (Driver->RIO,in-band)
  541.    MOPEN is sent from the driver to open a port attached to a modem. (in-band)
  542.    Packet structure is same as OPEN.  */
  543. /*****************************************************************************
  544. *********************************           **********************************
  545. *********************************   CLOSE   **********************************
  546. *********************************           **********************************
  547. *****************************************************************************/
  548. /* (Driver->RIO,in-band)
  549.    CLOSE is sent from the driver to close a previously opened port.
  550.    No parameters.
  551.  */
  552. #if 0
  553. #define PKT_Cmd (PKT_Data+0) /* Command code */
  554. #endif
  555. /*****************************************************************************
  556. *********************************            *********************************
  557. *********************************   WFLUSH   *********************************
  558. *********************************            *********************************
  559. *****************************************************************************/
  560. /* (Driver->RIO,pre-emptive)
  561.    WFLUSH is sent pre-emptively from the driver to flush the write buffers and
  562.    packets of a port.  (pre-emptive)
  563.    
  564.    WFLUSH is also sent in-band from the driver to a port as a marker to end
  565.    write flushing previously started by a pre-emptive WFLUSH packet. (in-band)
  566.    */
  567. #if 0
  568. #define PKT_Cmd (PKT_Data+0) /* Command code */
  569. #endif
  570. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  571. /*****************************************************************************
  572. *********************************            *********************************
  573. *********************************   RFLUSH   *********************************
  574. *********************************            *********************************
  575. *****************************************************************************/
  576. /* (Driver->RIO,pre-emptive)
  577.    RFLUSH is sent pre-emptively from the driver to flush the read buffers and
  578.    packets of a port.
  579.    */
  580. #if 0
  581. #define PKT_Cmd (PKT_Data+0) /* Command code */
  582. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  583. #endif
  584. /*****************************************************************************
  585. *********************************            *********************************
  586. *********************************   RESUME   *********************************
  587. *********************************            *********************************
  588. *****************************************************************************/
  589. /* (Driver->RIO,pre-emptive)
  590.    RESUME is sent pre-emptively from the driver to cause a port to resume 
  591.    transmission of data if blocked by XOFF.  (as if XON had been received)
  592.    */
  593. #if 0
  594. #define PKT_Cmd (PKT_Data+0) /* Command code */
  595. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  596. #endif
  597. /*****************************************************************************
  598. *********************************            *********************************
  599. *********************************   SBREAK   *********************************
  600. *********************************            *********************************
  601. *****************************************************************************/
  602. /* (Driver->RIO,in-band)
  603.    SBREAK is sent in-band from the driver to a port to suspend data and start
  604.    break signal transmission.
  605.    If the break delay is 0, the break signal will be acknowledged with a
  606.    RUP_COMMAND, COMPLETE packet and continue until an EBREAK packet is received.
  607.    Otherwise, there is no acknowledgement and the break signal will last for the
  608.    specified number of mS.
  609.    */
  610. #if 0
  611. #define PKT_Cmd (PKT_Data+0) /* Command code */
  612. #endif
  613. #define PKT_BreakDelay (PKT_Data+1) /* Break delay in mS */
  614. /*****************************************************************************
  615. *********************************            *********************************
  616. *********************************   EBREAK   *********************************
  617. *********************************            *********************************
  618. *****************************************************************************/
  619. /* (Driver->RIO,in-band)
  620.    EBREAK is sent in-band from the driver to a port to stop transmission of a
  621.    break signal.
  622.    No parameters.  */
  623. /*****************************************************************************
  624. *********************************             ********************************
  625. *********************************   SUSPEND   ********************************
  626. *********************************             ********************************
  627. *****************************************************************************/
  628. /* (Driver->RIO,pre-emptive)
  629.    SUSPEND is sent pre-emptively from the driver to cause a port to suspend
  630.    transmission of data.  (as if XOFF had been received)
  631.    */
  632. #if 0
  633. #define PKT_Cmd (PKT_Data+0) /* Command code */
  634. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  635. #endif
  636. /*****************************************************************************
  637. *********************************            *********************************
  638. *********************************   FCLOSE   *********************************
  639. *********************************            *********************************
  640. *****************************************************************************/
  641. /* (Driver->RIO,pre-emptive)
  642.    FCLOSE is sent pre-emptively from the driver to force close a port.
  643.    A force close flushes receive and transmit queues, and also lowers all output
  644.    modem signals if the COR5_HUPCL (Hang Up On Close) flag is set.
  645.    */
  646. #if 0
  647. #define PKT_Cmd (PKT_Data+0) /* Command code */
  648. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  649. #endif
  650. /*****************************************************************************
  651. *********************************            *********************************
  652. *********************************   XPRINT   *********************************
  653. *********************************            *********************************
  654. *****************************************************************************/
  655. /* (Driver->RIO,in-band)
  656.    XPRINT is sent as a normal I/O data packet except that the PKT_CMD_BIT of
  657.    the "len" field is set, and the first "data" byte is XPRINT.
  658.    The I/O data in the XPRINT packet will contain the following:
  659.    - Transparent Print Start Sequence
  660.    - Transparent Print Data
  661.    - Transparent Print Stop Sequence.
  662.    */
  663. #if 0
  664. #define PKT_Cmd (PKT_Data+0) /* Command code */
  665. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  666. #endif
  667. /*****************************************************************************
  668. **********************************          **********************************
  669. **********************************   MBIS   **********************************
  670. **********************************          **********************************
  671. *****************************************************************************/
  672. /* (Driver->RIO,pre-emptive)
  673.    MBIS is sent pre-emptively from the driver to set a port's modem signals.
  674.    */
  675. #if 0
  676. #define PKT_Cmd (PKT_Data+0) /* Command code */
  677. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  678. #endif
  679. #define PKT_ModemSet (PKT_Data+4) /* Modem set signals mask */
  680. /* ModemSet definitions... */
  681. #define MBIS_RTS 0x01 /* RTS modem signal */
  682. #define MBIS_DTR 0x02 /* DTR modem signal */
  683. /*****************************************************************************
  684. **********************************          **********************************
  685. **********************************   MBIC   **********************************
  686. **********************************          **********************************
  687. *****************************************************************************/
  688. /* (Driver->RIO,pre-emptive)
  689.    MBIC is sent pre-emptively from the driver to clear a port's modem signals.
  690.    */
  691. #if 0   
  692. #define PKT_Cmd (PKT_Data+0) /* Command code */
  693. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  694. #endif
  695. #define PKT_ModemClear (PKT_Data+4) /* Modem clear signals mask */
  696. /* ModemClear definitions... */
  697. #define MBIC_RTS 0x01 /* RTS modem signal */
  698. #define MBIC_DTR 0x02 /* DTR modem signal */
  699. /*****************************************************************************
  700. **********************************          **********************************
  701. **********************************   MSET   **********************************
  702. **********************************          **********************************
  703. *****************************************************************************/
  704. /* (Driver->RIO,pre-emptive)
  705.    MSET is sent pre-emptively from the driver to set/clear a port's modem signals. */
  706. #if 0
  707. #define PKT_Cmd (PKT_Data+0) /* Command code */
  708. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  709. #endif
  710. #define PKT_ModemSet (PKT_Data+4) /* Modem set signals mask */
  711. /* ModemSet definitions... */
  712. #define MSET_RTS 0x01 /* RTS modem signal */
  713. #define MSET_DTR 0x02 /* DTR modem signal */
  714. /*****************************************************************************
  715. *********************************            *********************************
  716. *********************************   PCLOSE   *********************************
  717. *********************************            *********************************
  718. *****************************************************************************/
  719. /* (Driver->RIO,in-band)
  720.    PCLOSE is sent from the driver to pseudo close a previously opened port.
  721.    
  722.    The port will close when all data has been sent/received, however, the
  723.    port's transmit / receive and modem signals will be left enabled and the
  724.    port marked internally as Pseudo Closed. */
  725. #define PKT_Cmd (PKT_Data+0) /* Command code */
  726. /*****************************************************************************
  727. **********************************          **********************************
  728. **********************************   MGET   **********************************
  729. **********************************          **********************************
  730. *****************************************************************************/
  731. /* (Driver->RIO,pre-emptive)
  732.    MGET is sent pre-emptively from the driver to request the port's current modem signals. */
  733. #define PKT_Cmd (PKT_Data+0) /* Command code */
  734. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  735. /*****************************************************************************
  736. *********************************             ********************************
  737. *********************************   MEMDUMP   ********************************
  738. *********************************             ********************************
  739. *****************************************************************************/
  740. /* (Driver->RIO,pre-emptive)
  741.    MEMDUMP is sent pre-emptively from the driver to request a dump of 32 bytes
  742.    of the specified port's RTA address space.
  743.    */
  744. #if 0
  745. #define PKT_Cmd (PKT_Data+0) /* Command code */
  746. #endif
  747. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  748. #define PKT_SubCmd (PKT_Data+5) /* Sub Command */
  749. #define PKT_Address (PKT_Data+6) /* Requested address */
  750. /*****************************************************************************
  751. ******************************                   *****************************
  752. ******************************   READ_REGISTER   *****************************
  753. ******************************                   *****************************
  754. *****************************************************************************/
  755. /* (Driver->RIO,pre-emptive)
  756.    READ_REGISTER is sent pre-emptively from the driver to request the contents
  757.    of the CD1400 register specified in address.
  758.    */
  759. #if 0
  760. #define PKT_Cmd (PKT_Data+0) /* Command code */
  761. #endif
  762. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  763. #define PKT_SubCmd (PKT_Data+5) /* Sub Command */
  764. #define PKT_Address (PKT_Data+6) /* Requested address */
  765. /*****************************************************************************
  766. ************************                            **************************
  767. ************************   COMMAND_RUP - COMPLETE   **************************
  768. ************************                            **************************
  769. *****************************************************************************/
  770. /* (RIO->Driver,pre-emptive)
  771.    COMMAND_RUP - COMPLETE is sent in response to all port I/O control command
  772.    packets, except MEMDUMP and READ_REGISTER.
  773.    */
  774. #if 0
  775. #define PKT_Cmd (PKT_Data+0) /* Command code */
  776. #endif
  777. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  778. #define PKT_Cmd2 (PKT_Data+2) /* Command code copy */
  779. #define PKT_ModemStatus (PKT_Data+3) /* Modem signal status */
  780. #define PKT_PortStatus (PKT_Data+4) /* Port signal status */
  781. #define PKT_SubCmd (PKT_Data+5) /* Sub Command */
  782. /* ModemStatus definitions... */
  783. #define MODEM_DSR 0x80 /* Data Set Ready modem state */
  784. #define MODEM_CTS 0x40 /* Clear To Send modem state */
  785. #define MODEM_RI 0x20 /* Ring Indicate modem state */
  786. #define MODEM_CD 0x10 /* Carrier Detect modem state */
  787. #define MODEM_TSTOP 0x08 /* Transmit Stopped state */
  788. #define MODEM_TEMPTY 0x04 /* Transmit Empty state */
  789. #define MODEM_DTR 0x02 /* DTR modem output state */
  790. #define MODEM_RTS 0x01 /* RTS modem output state */
  791. /* PortStatus definitions... */
  792. #define PORT_ISOPEN 0x01 /* Port open ? */
  793. #define PORT_HUPCL 0x02 /* Hangup on close? */
  794. #define PORT_MOPENPEND 0x04 /* Modem open pending */
  795. #define PORT_ISPARALLEL 0x08 /* Parallel port */
  796. #define PORT_BREAK 0x10 /* Port on break */
  797. #define PORT_STATUSPEND 0020 /* Status packet pending */
  798. #define PORT_BREAKPEND 0x40 /* Break packet pending */
  799. #define PORT_MODEMPEND 0x80 /* Modem status packet pending */
  800. /*****************************************************************************
  801. ************************                            **************************
  802. ************************   COMMAND_RUP - COMPLETE   **************************
  803. ************************                            **************************
  804. *****************************************************************************/
  805. /* (RIO->Driver,pre-emptive)
  806.    COMMAND_RUP - COMPLETE is sent in response to all port I/O control command
  807.    packets, except MEMDUMP and READ_REGISTER.
  808.    */
  809. #if 0
  810. #define PKT_Cmd (PKT_Data+0) /* Command code */
  811. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  812. #define PKT_Cmd2 (PKT_Data+2) /* Command code copy */
  813. #endif
  814. #define PKT_ModemStatus (PKT_Data+3) /* Modem signal status */
  815. #define PKT_PortStatus (PKT_Data+4) /* Port signal status */
  816. #if 0
  817. #define PKT_SubCmd (PKT_Data+5) /* Sub Command */
  818. #endif
  819. /* ModemStatus definitions... */
  820. #define MODEM_DSR 0x80 /* Data Set Ready modem state */
  821. #define MODEM_CTS 0x40 /* Clear To Send modem state */
  822. #define MODEM_RI 0x20 /* Ring Indicate modem state */
  823. #define MODEM_CD 0x10 /* Carrier Detect modem state */
  824. #define MODEM_TSTOP 0x08 /* Transmit Stopped state */
  825. #define MODEM_TEMPTY 0x04 /* Transmit Empty state */
  826. #define MODEM_DTR 0x02 /* DTR modem output state */
  827. #define MODEM_RTS 0x01 /* RTS modem output state */
  828. /* PortStatus definitions... */
  829. #define PORT_ISOPEN 0x01 /* Port open ? */
  830. #define PORT_HUPCL 0x02 /* Hangup on close? */
  831. #define PORT_MOPENPEND 0x04 /* Modem open pending */
  832. #define PORT_ISPARALLEL 0x08 /* Parallel port */
  833. #define PORT_BREAK 0x10 /* Port on break */
  834. #define PORT_STATUSPEND 0020 /* Status packet pending */
  835. #define PORT_BREAKPEND 0x40 /* Break packet pending */
  836. #define PORT_MODEMPEND 0x80 /* Modem status packet pending */
  837. /*****************************************************************************
  838. ********************                                      ********************
  839. ********************   COMMAND_RUP - COMPLETE - MEMDUMP   ********************
  840. ********************                                      ********************
  841. *****************************************************************************/
  842. /* (RIO->Driver,pre-emptive)
  843.    COMMAND_RUP - COMPLETE - MEMDUMP is sent as an acknowledgement for a MEMDUMP
  844.    port I/O control command packet.
  845.    */
  846. #if 0
  847. #define PKT_Cmd (PKT_Data+0) /* Command code */
  848. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  849. #define PKT_Cmd2 (PKT_Data+2) /* Command code copy */
  850. #define PKT_ModemStatus (PKT_Data+3) /* Modem signal status */
  851. #define PKT_PortStatus (PKT_Data+4) /* Port signal status */
  852. #define PKT_SubCmd (PKT_Data+5) /* Sub Command */
  853. #define PKT_Address (PKT_Data+6) /* Requested address */
  854. #endif
  855. #define PKT_Dump (PKT_Data+8) /* 32bytes of requested dump data */
  856. /*****************************************************************************
  857. *****************                                            *****************
  858. *****************   COMMAND_RUP - COMPLETE - READ_REGISTER   *****************
  859. *****************                                            *****************
  860. *****************************************************************************/
  861. /* (RIO->Driver,pre-emptive)
  862.    COMMAND_RUP - COMPLETE - READ_REGISTER is sent as an acknowledgement for a
  863.    READ_REGISTER port I/O control command packet.
  864.    */
  865. #if 0
  866. #define PKT_Cmd (PKT_Data+0) /*Command code */
  867. #define PKT_PhbNum (PKT_Data+1) /*Port number wrt RTA */
  868. #define PKT_Cmd2 (PKT_Data+2) /* Command code copy */
  869. #endif
  870. #define PKT_RegisterValue (PKT_Data+3) /* Modem signal status */
  871. #if 0
  872. #define PKT_PortStatus (PKT_Data+4) /* Port signal status */
  873. #define PKT_SubCmd (PKT_Data+5) /* Sub Command */
  874. #endif
  875. /*****************************************************************************
  876. *********************                                  ***********************
  877. *********************   COMMAND_RUP - BREAK_RECEIVED   ***********************
  878. *********************                                  ***********************
  879. *****************************************************************************/
  880. /* (RIO->Driver,pre-emptive)
  881.    COMMAND_RUP - BREAK_RECEIVED packets are sent when the port detects a receive BREAK signal.
  882.    */
  883. #if 0
  884. #define PKT_Cmd (PKT_Data+0) /* Command code */
  885. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  886. #define PKT_Cmd2 (PKT_Data+2) /* Command code copy */
  887. #endif
  888. /*****************************************************************************
  889. *********************                                *************************
  890. *********************   COMMAND_RUP - MODEM_STATUS   *************************
  891. *********************                                *************************
  892. *****************************************************************************/
  893. /* (RIO->Driver,pre-emptive)
  894.    COMMAND_RUP - MODEM_STATUS packets are sent whenever the port detects a
  895.    change in the input modem signal states.
  896.    */
  897. #if 0
  898. #define PKT_Cmd (PKT_Data+0) /* Command code */
  899. #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
  900. #define PKT_Cmd2 (PKT_Data+2) /* Command code copy */
  901. #define PKT_ModemStatus (PKT_Data+3) /* Modem signal status */
  902. #endif
  903. /*****************************************************************************
  904. ************************                             *************************
  905. ************************   BOOT_RUP - BOOT_REQUEST   *************************
  906. ************************                             *************************
  907. *****************************************************************************/
  908. /* (RIO->Driver,pre-emptive)
  909.    BOOT_RUP - BOOT_REQUEST packets are sent to the Driver from RIO to request
  910.    firmware code to load onto attached RTAs.
  911.    */
  912. #if 0
  913. #define PKT_Cmd (PKT_Data+0) /* Command code */
  914. #endif
  915. /*****************************************************************************
  916. ************************                              ************************
  917. ************************   BOOT_RUP - BOOT_SEQUENCE   ************************
  918. ************************                              ************************
  919. *****************************************************************************/
  920. /* (Driver->RIO,pre-emptive)
  921.    BOOT_RUP - BOOT_SEQUENCE packets are sent from the Driver to RIO in response
  922.    to a BOOT_RUP - BOOT_REQUEST packet.
  923.    */
  924. #if 0
  925. #define PKT_Cmd (PKT_Data+0) /* Command code */
  926. #endif
  927. #define PKT_NumPackets (PKT_Data+2) /* Packets required to load firmware */
  928. #define PKT_LoadBase (PKT_Data+4) /* RTA firmware load address */
  929. #define PKT_CodeSize (PKT_Data+6) /* Size of firmware in bytes */
  930. #define PKT_CmdString (PKT_Data+8) /* Command string */
  931. /*****************************************************************************
  932. ************************                               ***********************
  933. ************************   BOOT_RUP - BOOT_COMPLETED   ***********************
  934. ************************                               ***********************
  935. *****************************************************************************/
  936. /* (RIO->Driver,pre-emptive)
  937.    BOOT_RUP - BOOT_COMPLETE is sent to the Driver from RIO when downloading of
  938.    RTA firmware has completed.
  939.    */
  940. #if 0
  941. #define PKT_Cmd (PKT_Data+0) /* Command code */
  942. #endif
  943. #define PKT_LinkNumber (PKT_Data+1) /* Link number RTA booted on */
  944. #define PKT_SerialNumber (PKT_Data+2) /* 4 byte serial number */
  945. /*****************************************************************************
  946. ************************                               ***********************
  947. ************************   BOOT_RUP - Packet Request   ***********************
  948. ************************                               ***********************
  949. *****************************************************************************/
  950. /* (RIO->Driver,pre-emptive)
  951.    BOOT_RUP packet without the PKT_CMD_BIT set in the PKT->len field is sent
  952.    from RIO to the Driver as a request for a firmware boot packet. */
  953. #define PKT_SequenceNumber (PKT_Data+0) /* Packet sequence number */
  954. /*****************************************************************************
  955. ***********************                                ***********************
  956. ***********************   BOOT_RUP - Packet Response   ***********************
  957. ***********************                                ***********************
  958. *****************************************************************************/
  959. /* (Driver->RIO,pre-emptive)
  960.    In response to a BOOT_RUP boot packet request, the driver fills out the response
  961.    packet with the 70 bytes of the requested sequence.
  962.    */
  963. #if 0
  964. #define PKT_SequenceNumber (PKT_Data+0) /* Packet sequence number */
  965. #endif
  966. #define PKT_FirmwarePacket (PKT_Data+2) /* Firmware packet */
  967. /*****************************************************************************
  968. ****************************                      ****************************
  969. ****************************   BOOT_RUP - IFOAD   ****************************
  970. ****************************                      ****************************
  971. *****************************************************************************/
  972. /* (Driver->RIO,pre-emptive)
  973.    BOOT_RUP - IFOAD packets are sent from the Driver to an RTA to cause the
  974.    RTA to shut down and reboot.
  975.    */
  976. #if 0
  977. #define PKT_Cmd (PKT_Data+0) /* Command code */
  978. #endif
  979. #define PKT_IfoadId1 (PKT_Data+2) /* IFOAD Id 1 */
  980. #define PKT_IfoadId2 (PKT_Data+3) /* IFOAD Id 2 */
  981. #define IFOADID1 0xAD
  982. #define IFOADID2 0xF0
  983. /*****************************************************************************
  984. **************************                         ***************************
  985. **************************   BOOT_RUP - IDENTIFY   ***************************
  986. **************************                         ***************************
  987. *****************************************************************************/
  988. /* (Driver->RIO,pre-emptive)
  989.    BOOT_RUP - IDENTIFY packets are sent from the Driver to an RTA to cause the
  990.    RTA to flash its LEDs for a period of time.
  991.    */
  992. #if 0
  993. #define PKT_Cmd (PKT_Data+0) /* Command code */
  994. #endif
  995. #define PKT_IdentifyId (PKT_Data+2) /* defines pattern to flash */
  996. /*****************************************************************************
  997. ****************************                       ***************************
  998. ****************************   BOOT_RUP - ZOMBIE   ***************************
  999. ****************************                       ***************************
  1000. *****************************************************************************/
  1001. /* (Driver->RIO,pre-emptive)
  1002.    BOOT_RUP - ZOMBIE packets are sent from the Driver to an RTA to cause the
  1003.    RTA to shut down and flash it's LEDs.
  1004.    */
  1005. #if 0
  1006. #define PKT_Cmd (PKT_Data+0) /* Command code */
  1007. #endif
  1008. #define PKT_ZombieId1 (PKT_Data+2) /* ZOMBIE Id 1 */
  1009. #define PKT_ZombieId2 (PKT_Data+3) /* ZOMBIE Id 2 */
  1010. #define ZOMBIEID1 0x52
  1011. #define ZOMBIEID2 0x21
  1012. /*****************************************************************************
  1013. ****************************                      ****************************
  1014. ****************************   BOOT_RUP - UFOAD   ****************************
  1015. ****************************                      ****************************
  1016. *****************************************************************************/
  1017. /* (Driver->RIO,pre-emptive)
  1018.    BOOT_RUP - UFOAD packets are sent from the Driver to an RTA to cause the RTA
  1019.    to ask it's neighbouring RTA to shut down and reboot.
  1020.    */
  1021. #if 0
  1022. #define PKT_Cmd (PKT_Data+0) /* Command code */
  1023. #define PKT_LinkNumber (PKT_Data+1) /* Link number of RTA to UFOAD */
  1024. #endif
  1025. #define PKT_UfoadId1 (PKT_Data+2) /* UFOAD Id 1 */
  1026. #define PKT_UfoadId2 (PKT_Data+3) /* UFOAD Id 2 */
  1027. #define UFOADID1 0x1E
  1028. #define UFOADID2 0x0D
  1029. /*****************************************************************************
  1030. ****************************                      ****************************
  1031. ****************************   BOOT_RUP - IWAIT   ****************************
  1032. ****************************                      ****************************
  1033. *****************************************************************************/
  1034. /* (Driver->RIO,pre-emptive)
  1035.    BOOT_RUP - IWAIT packets are sent from the Driver to an RTA to cause the RTA
  1036.    to pause booting on the specified link for 30 seconds.
  1037.    */
  1038. #if 0
  1039. #define PKT_Cmd (PKT_Data+0) /* Command code */
  1040. #define PKT_LinkNumber (PKT_Data+1) /* Link number of RTA to UFOAD */
  1041. #endif
  1042. #define PKT_IwaitId1 (PKT_Data+2) /* IWAIT Id 1 */
  1043. #define PKT_IwaitId2 (PKT_Data+3) /* IWAIT Id 2 */
  1044. #define IWAITID1 0xDE
  1045. #define IWAITID2 0xB1
  1046. /*****************************************************************************
  1047. ************************                               ***********************
  1048. ************************   ROUTE_RUP - ROUTE_REQUEST   ***********************
  1049. ************************                               ***********************
  1050. *****************************************************************************/
  1051. /* (RIO->Driver,pre-emptive)
  1052.    ROUTE_RUP - ROUTE_REQUEST packets are sent from a newly booted or connected
  1053.    RTA to a Driver to request an ID (RUP or unit number).
  1054.    */
  1055. #if 0
  1056. #define PKT_Cmd (PKT_Data+0) /* Command code */
  1057. #endif
  1058. #define PKT_SerialNumber (PKT_Data+2) /* 4 byte serial number */
  1059. #define PKT_ModuleTypes (PKT_Data+6) /* RTA Module types */
  1060. /* ModuleTypes definitions... */
  1061. #define MOD_BLANK 0x0F /* Blank plate attached */
  1062. #define MOD_RS232DB25 0x00 /* RS232 DB25 connector */
  1063. #define MOD_RS232RJ45 0x01 /* RS232 RJ45 connector */
  1064. #define MOD_RS422DB25 0x02 /* RS422 DB25 connector */
  1065. #define MOD_RS485DB25 0x03 /* RS485 DB25 connector */
  1066. #define MOD_PARALLEL 0x04 /* Centronics parallel */
  1067. #define MOD2 0x08 /* Set to indicate Rev2 module */
  1068. /*****************************************************************************
  1069. *************************                            *************************
  1070. *************************   ROUTE_RUP - ROUTE_FOAD   *************************
  1071. *************************                            *************************
  1072. *****************************************************************************/
  1073. /* (Driver->RIO,pre-emptive)
  1074.    ROUTE_RUP - ROUTE_FOAD packet is sent as a response to a ROUTE_RUP - ROUTE_REQUEST
  1075.    packet to cause the RTA to "Fall Over And Die"., i.e. shutdown and reboot.
  1076.    */
  1077. #if 0
  1078. #define PKT_Cmd (PKT_Data+0) /* Command code */
  1079. #endif
  1080. #define PKT_RouteCmdString (PKT_Data+2) /* Command string */
  1081. /*****************************************************************************
  1082. ***********************                                ***********************
  1083. ***********************   ROUTE_RUP - ROUTE_ALLOCATE   ***********************
  1084. ***********************                                ***********************
  1085. *****************************************************************************/
  1086. /* (Driver->RIO,pre-emptive)
  1087.    ROUTE_RUP - ROUTE_ALLOCATE packet is sent as a response to a ROUTE_RUP - ROUTE_REQUEST
  1088.    packet to allocate the RTA's Id number (RUP number 1..16)
  1089.    */
  1090. #if 0
  1091. #define PKT_Cmd (PKT_Data+0) /* Command code */
  1092. #endif
  1093. #define PKT_IdNum (PKT_Data+1) /* RUP number for ports 1..8 */
  1094. #if 0
  1095. #define PKT_RouteCmdString (PKT_Data+2) /* Command string */
  1096. #endif
  1097. #define PKT_IdNum2 (PKT_Data+0x17) /* RUP number for ports 9..16 */
  1098. /*****************************************************************************
  1099. ***********************                                ***********************
  1100. ***********************   ROUTE_RUP - ROUTE_TOPOLOGY   ***********************
  1101. ***********************                                ***********************
  1102. *****************************************************************************/
  1103. /* (RIO->Driver,pre-emptive)
  1104.    ROUTE_RUP - ROUTE_TOPOLOGY packet is sent to inform the driver of an RTA's
  1105.    current link status.
  1106.    */
  1107. #if 0
  1108. #define PKT_Cmd (PKT_Data+0) /* Command code */
  1109. #endif
  1110. #define PKT_Link1Rup (PKT_Data+2) /* Link 1 RUP number */
  1111. #define PKT_Link1Link (PKT_Data+3) /* Link 1 link number */
  1112. #define PKT_Link2Rup (PKT_Data+4) /* Link 2 RUP number */
  1113. #define PKT_Link2Link (PKT_Data+5) /* Link 2 link number */
  1114. #define PKT_Link3Rup (PKT_Data+6) /* Link 3 RUP number */
  1115. #define PKT_Link3Link (PKT_Data+7) /* Link 3 link number */
  1116. #define PKT_Link4Rup (PKT_Data+8) /* Link 4 RUP number */
  1117. #define PKT_Link4Link (PKT_Data+9) /* Link 4 link number */
  1118. #define PKT_RtaVpdProm (PKT_Data+10) /* 32 bytes of RTA VPD PROM Contents */
  1119. #endif /* _sxwinif_h */
  1120. /* End of RIOWINIF.H */