sdla_x25.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:30k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2. * sdla_x25.h Sangoma X.25 firmware API definitions.
  3. *
  4. * Author: Nenad Corbic <ncorbic@sangoma.com>
  5. *
  6. * Copyright: (c) 1995-2000 Sangoma Technologies Inc.
  7. *
  8. * This program is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU General Public License
  10. * as published by the Free Software Foundation; either version
  11. 2 of the License, or (at your option) any later version.
  12. * ============================================================================
  13. * Feb 28, 2000  Nenad Corbic    Updated for socket based x25api
  14. * Dec 13, 1996 Gene Kozin Initial version
  15. *****************************************************************************/
  16. #ifndef _SDLA_X25_H
  17. #define _SDLA_X25_H
  18. /*----------------------------------------------------------------------------
  19.  * Notes:
  20.  * ------
  21.  * 1. All structures defined in this file are byte-alined.  
  22.  * Compiler Platform
  23.  * -------- --------
  24.  * GNU C Linux
  25.  *
  26.  */
  27. #ifndef PACKED
  28. # define PACKED __attribute__((packed))
  29. #endif /* PACKED */
  30. /****** CONSTANTS DEFINITIONS ***********************************************/
  31. #define X25_MAX_CHAN 255 /* max number of open X.25 circuits */
  32. #define X25_MAX_DATA 1024 /* max length of X.25 data buffer */
  33. /*
  34.  * X.25 shared memory layout.
  35.  */
  36. #define X25_MBOX_OFFS 0x16B0 /* general mailbox block */
  37. #define X25_RXMBOX_OFFS 0x1AD0 /* receive mailbox */
  38. #define X25_STATUS_OFFS 0x1EF0 /* X.25 status structure */
  39. #define X25_MB_VECTOR 0xE000 /* S514 mailbox window vecotr */
  40. #define X25_MISC_HDLC_BITS 0x1F00 /*X.25 miscallaneous HDLC bits */
  41. /* code levels */
  42. #define HDLC_LEVEL 0x01
  43. #define X25_LEVEL  0x02
  44. #define X25_AND_HDLC_LEVEL 0x03
  45. #define DO_HDLC_LEVEL_ERROR_CHECKING 0x04
  46. /****** DATA STRUCTURES *****************************************************/
  47. /*----------------------------------------------------------------------------
  48.  * X.25 Command Block.
  49.  */
  50. typedef struct X25Cmd
  51. {
  52. unsigned char command PACKED; /* command code */
  53. unsigned short length PACKED; /* transfer data length */
  54. unsigned char result PACKED; /* return code */
  55. unsigned char pf PACKED; /* P/F bit */
  56. unsigned short lcn PACKED; /* logical channel */
  57. unsigned char qdm PACKED; /* Q/D/M bits */
  58. unsigned char cause PACKED; /* cause field */
  59. unsigned char diagn PACKED; /* diagnostics */
  60. unsigned char pktType PACKED; /* packet type */
  61. unsigned char resrv[4] PACKED; /* reserved */
  62. } TX25Cmd;
  63. /*
  64.  * Defines for the 'command' field.
  65.  */
  66. /*----- General commands --------------*/
  67. #define X25_SET_GLOBAL_VARS 0x0B    /* set global variables */ 
  68. #define X25_READ_MODEM_STATUS 0x0C  /* read modem status */
  69. #define X25_READ_CODE_VERSION 0x15 /* read firmware version number */
  70. #define X25_TRACE_CONFIGURE 0x14 /* configure trace facility */
  71. #define X25_READ_TRACE_DATA 0x16 /* read trace data */
  72. #define X25_SET_INTERRUPT_MODE 0x17 /* set interrupt generation mode */
  73. #define X25_READ_INTERRUPT_MODE 0x18 /* read interrupt generation mode */
  74. /*----- HDLC-level commands -----------*/
  75. #define X25_HDLC_LINK_CONFIGURE 0x01 /* configure HDLC link level */   
  76. #define X25_HDLC_LINK_OPEN 0x02 /* open HDLC link */         
  77. #define X25_HDLC_LINK_CLOSE 0x03 /* close HDLC link */
  78. #define X25_HDLC_LINK_SETUP 0x04 /* set up HDLC link */ 
  79. #define X25_HDLC_LINK_DISC 0x05 /* disconnect DHLC link */
  80. #define X25_HDLC_LINK_STATUS 0x06 /* read DHLC link status */
  81. #define X25_HDLC_READ_STATS 0x07 /* read operational statistics */
  82. #define X25_HDLC_FLUSH_STATS 0x08  /* flush operational statistics */
  83. #define X25_HDLC_READ_COMM_ERR 0x09  /* read error statistics */
  84. #define X25_HDLC_FLUSH_COMM_ERR 0x0A /* flush error statistics */
  85. #define X25_HDLC_FLUSH_BUFFERS 0x0D /* flush HDLC-level data buffers */
  86. #define X25_HDLC_SPRVS_CNT_STAT 0x0F /* read surervisory count status */
  87. #define X25_HDLC_SEND_UI_FRAME 0x10 /* send unnumbered information frame */
  88. #define X25_HDLC_WRITE 0x11 /* send HDLC information frame */
  89. #define X25_HDLC_READ 0x21 /* read HDLC information frame */
  90. #define X25_HDLC_READ_CONFIG 0x12 /* read HDLC configuration */
  91. #define X25_HDLC_SET_CONFIG 0x13 /* set HDLC configuration */
  92. #define SET_PROTOCOL_LEVEL 0x1F /* set protocol level */
  93. /*----- X.25-level commands -----------*/
  94. #define X25_READ 0x22 /* read X.25 packet */
  95. #define X25_WRITE 0x23 /* send X.25 packet */
  96. #define X25_PLACE_CALL 0x30 /* place a call on SVC */
  97. #define X25_ACCEPT_CALL 0x31 /* accept incomming call */
  98. #define X25_CLEAR_CALL 0x32 /* clear call */
  99. #define X25_CLEAR_CONFRM 0x33 /* send clear confirmation packet */
  100. #define X25_RESET 0x34 /* send reset request packet */
  101. #define X25_RESET_CONFRM 0x35 /* send reset confirmation packet */
  102. #define X25_RESTART 0x36 /* send restart request packet */
  103. #define X25_RESTART_CONFRM 0x37 /* send restart confirmation packet */
  104. #define X25_INTERRUPT 0x38 /* send interrupt request packet */
  105. #define X25_INTERRUPT_CONFRM 0x39 /* send interrupt confirmation pkt */
  106. #define X25_REGISTRATION_RQST 0x3A /* send registration request packet */
  107. #define X25_REGISTRATION_CONFRM 0x3B /* send registration confirmation */
  108. #define X25_IS_DATA_AVAILABLE 0x40 /* querry receive queue */
  109. #define X25_INCOMMING_CALL_CTL 0x41 /* select incomming call options */
  110. #define X25_CONFIGURE_PVC 0x42 /* configure PVC */
  111. #define X25_GET_ACTIVE_CHANNELS 0x43 /* get a list of active circuits */
  112. #define X25_READ_CHANNEL_CONFIG 0x44 /* read virt. circuit configuration */
  113. #define X25_FLUSH_DATA_BUFFERS 0x45 /* flush X.25-level data buffers */
  114. #define X25_READ_HISTORY_TABLE 0x46 /* read asynchronous event log */
  115. #define X25_HISTORY_TABLE_CTL 0x47 /* control asynchronous event log */
  116. #define X25_GET_TX_D_BIT_STATUS 0x48 /* is packet with D-bit acknowleged */
  117. #define X25_READ_STATISTICS 0x49 /* read X.25-level statistics */
  118. #define X25_FLUSH_STATISTICS 0x4A /* flush X.25-level statistics */
  119. #define X25_READ_CONFIGURATION 0x50 /* read HDLC & X.25 configuration */
  120. #define X25_SET_CONFIGURATION 0x51 /* set HDLC & X.25 configuration */
  121. /*
  122.  * Defines for the 'result' field.
  123.  */
  124. /*----- General results ---------------*/
  125. #define X25RES_OK 0x00
  126. #define X25RES_ERROR 0x01
  127. #define X25RES_LINK_NOT_IN_ABM 0x02 /* link is not in ABM mode */
  128. #define X25RES_LINK_CLOSED 0x03
  129. #define X25RES_INVAL_LENGTH 0x04
  130. #define X25RES_INVAL_CMD 0x05
  131. #define X25RES_UNNUMBERED_FRAME 0x06 /* unnunbered frame received */
  132. #define X25RES_FRM_REJECT_MODE 0x07 /* link is in Frame Reject mode */
  133. #define X25RES_MODEM_FAILURE 0x08 /* DCD and/or CTS dropped */
  134. #define X25RES_N2_RETRY_LIMIT 0x09 /* N2 retry limit has been exceeded */
  135. #define X25RES_INVAL_LCN 0x30 /* invalid logical channel number */
  136. #define X25RES_INVAL_STATE 0x31 /* channel is not in data xfer mode */
  137. #define X25RES_INVAL_DATA_LEN 0x32 /* invalid data length */
  138. #define X25RES_NOT_READY 0x33 /* no data available / buffers full */
  139. #define X25RES_NETWORK_DOWN 0x34
  140. #define X25RES_CHANNEL_IN_USE 0x35 /* there is data queued on this LCN */
  141. #define X25RES_REGST_NOT_SUPPRT 0x36 /* registration not supported */
  142. #define X25RES_INVAL_FORMAT 0x37 /* invalid packet format */
  143. #define X25RES_D_BIT_NOT_SUPPRT 0x38 /* D-bit pragmatics not supported */
  144. #define X25RES_FACIL_NOT_SUPPRT 0x39 /* Call facility not supported */
  145. #define X25RES_INVAL_CALL_ARG 0x3A /* errorneous call arguments */
  146. #define X25RES_INVAL_CALL_DATA 0x3B /* errorneous call user data */
  147. #define X25RES_ASYNC_PACKET 0x40 /* asynchronous packet received */
  148. #define X25RES_PROTO_VIOLATION 0x41 /* protocol violation occurred */
  149. #define X25RES_PKT_TIMEOUT 0x42 /* X.25 packet time out */
  150. #define X25RES_PKT_RETRY_LIMIT 0x43 /* X.25 packet retry limit exceeded */
  151. /*----- Command-dependent results -----*/
  152. #define X25RES_LINK_DISC 0x00 /* HDLC_LINK_STATUS */
  153. #define X25RES_LINK_IN_ABM 0x01 /* HDLC_LINK_STATUS */
  154. #define X25RES_NO_DATA 0x01 /* HDLC_READ/READ_TRACE_DATA*/
  155. #define X25RES_TRACE_INACTIVE 0x02 /* READ_TRACE_DATA */
  156. #define X25RES_LINK_IS_OPEN 0x01 /* HDLC_LINK_OPEN */
  157. #define X25RES_LINK_IS_DISC 0x02 /* HDLC_LINK_DISC */
  158. #define X25RES_LINK_IS_CLOSED 0x03 /* HDLC_LINK_CLOSE */
  159. #define X25RES_INVAL_PARAM 0x31 /* INCOMMING_CALL_CTL */
  160. #define X25RES_INVAL_CONFIG 0x35 /* REGISTR_RQST/CONFRM */
  161. /*
  162.  * Defines for the 'qdm_bits' field.
  163.  */
  164. #define X25CMD_Q_BIT_MASK 0x04
  165. #define X25CMD_D_BIT_MASK 0x02
  166. #define X25CMD_M_BIT_MASK 0x01
  167. /*
  168.  * Defines for the 'pkt_type' field.
  169.  */
  170. /*----- Asynchronous events ------*/
  171. #define ASE_CLEAR_RQST 0x02
  172. #define ASE_RESET_RQST 0x04
  173. #define ASE_RESTART_RQST 0x08
  174. #define ASE_INTERRUPT 0x10
  175. #define ASE_DTE_REGISTR_RQST 0x20
  176. #define ASE_CALL_RQST 0x30
  177. #define ASE_CALL_ACCEPTED 0x31
  178. #define ASE_CLEAR_CONFRM 0x32
  179. #define ASE_RESET_CONFRM 0x33
  180. #define ASE_RESTART_CONFRM 0x34
  181. #define ASE_INTERRUPT_CONFRM 0x35
  182. #define ASE_DCE_REGISTR_CONFRM 0x36
  183. #define ASE_DIAGNOSTIC 0x37
  184. #define ASE_CALL_AUTO_CLEAR 0x38
  185. #define AUTO_RESPONSE_FLAG 0x80
  186. /*----- Time-Out events ----------*/
  187. #define TOE_RESTART_RQST 0x03
  188. #define TOE_CALL_RQST 0x05
  189. #define TOE_CLEAR_RQST 0x08
  190. #define TOE_RESET_RQST 0x0A
  191. /*----- Protocol Violation events */
  192. #define PVE_CLEAR_RQST 0x32
  193. #define PVE_RESET_RQST 0x33
  194. #define PVE_RESTART_RQST 0x34
  195. #define PVE_DIAGNOSTIC 0x37
  196. #define INTR_ON_RX_FRAME            0x01
  197. #define INTR_ON_TX_FRAME            0x02
  198. #define INTR_ON_MODEM_STATUS_CHANGE 0x04
  199. #define INTR_ON_COMMAND_COMPLETE    0x08
  200. #define INTR_ON_X25_ASY_TRANSACTION 0x10
  201. #define INTR_ON_TIMER     0x40
  202. #define DIRECT_RX_INTR_USAGE        0x80
  203. #define NO_INTR_PENDING           0x00
  204. #define RX_INTR_PENDING 0x01
  205. #define TX_INTR_PENDING 0x02
  206. #define MODEM_INTR_PENDING 0x04
  207. #define COMMAND_COMPLETE_INTR_PENDING  0x08
  208. #define X25_ASY_TRANS_INTR_PENDING 0x10
  209. #define TIMER_INTR_PENDING 0x40
  210. /*----------------------------------------------------------------------------
  211.  * X.25 Mailbox.
  212.  * This structure is located at offsets X25_MBOX_OFFS and X25_RXMBOX_OFFS
  213.  * into shared memory window.
  214.  */
  215. typedef struct X25Mbox
  216. {
  217. unsigned char opflag PACKED; /* 00h: execution flag */
  218. TX25Cmd cmd PACKED; /* 01h: command block */
  219. unsigned char data[1] PACKED; /* 10h: data buffer */
  220. } TX25Mbox;
  221. /*----------------------------------------------------------------------------
  222.  * X.25 Time Stamp Structure.
  223.  */
  224. typedef struct X25TimeStamp
  225. {
  226. unsigned char month PACKED;
  227. unsigned char date PACKED;
  228. unsigned char sec PACKED;
  229. unsigned char min PACKED;
  230. unsigned char hour PACKED;
  231. } TX25TimeStamp;
  232. /*----------------------------------------------------------------------------
  233.  * X.25 Status Block.
  234.  * This structure is located at offset X25_STATUS_OFF into shared memory
  235.  * window.
  236.  */
  237. typedef struct X25Status
  238. {
  239. unsigned short pvc_map PACKED; /* 00h: PVC map */
  240. unsigned short icc_map PACKED; /* 02h: Incomming Chan. map */
  241. unsigned short twc_map PACKED; /* 04h: Two-way Cnan. map */
  242. unsigned short ogc_map PACKED; /* 06h: Outgoing Chan. map */
  243. TX25TimeStamp tstamp PACKED; /* 08h: timestamp (BCD) */
  244. unsigned char iflags PACKED; /* 0Dh: interrupt flags */
  245. unsigned char imask     PACKED; /* 0Eh: interrupt mask  */
  246. unsigned char resrv PACKED; /* 0Eh: */
  247. unsigned char gflags PACKED; /* 10h: misc. HDLC/X25 flags */
  248. unsigned char cflags[X25_MAX_CHAN] PACKED; /* channel status bytes */
  249. } TX25Status;
  250. /*
  251.  * Bitmasks for the 'iflags' field.
  252.  */
  253. #define X25_RX_INTR 0x01 /* receive interrupt */
  254. #define X25_TX_INTR 0x02 /* transmit interrupt */
  255. #define X25_MODEM_INTR 0x04 /* modem status interrupt (CTS/DCD) */
  256. #define X25_EVENT_INTR 0x10 /* asyncronous event encountered */
  257. #define X25_CMD_INTR 0x08 /* interface command complete */
  258. /*
  259.  * Bitmasks for the 'gflags' field.
  260.  */
  261. #define X25_HDLC_ABM 0x01 /* HDLC is in ABM mode */
  262. #define X25_RX_READY 0x02 /* X.25 data available */
  263. #define X25_TRACE_READY 0x08 /* trace data available */
  264. #define X25_EVENT_IND 0x20 /* asynchronous event indicator */
  265. #define X25_TX_READY 0x40 /* space is available in Tx buf.*/
  266. /*
  267.  * Bitmasks for the 'cflags' field.
  268.  */
  269. #define X25_XFER_MODE 0x80 /* channel is in data transfer mode */
  270. #define X25_TXWIN_OPEN 0x40 /* transmit window open */
  271. #define X25_RXBUF_MASK 0x3F /* number of data buffers available */
  272. /*****************************************************************************
  273.  * Following definitions structurize contents of the TX25Mbox.data field for
  274.  * different X.25 interface commands.
  275.  ****************************************************************************/
  276. /* ---------------------------------------------------------------------------
  277.  * X25_SET_GLOBAL_VARS Command.
  278.  */
  279. typedef struct X25GlobalVars
  280. {
  281. unsigned char resrv PACKED; /* 00h: reserved */
  282. unsigned char dtrCtl PACKED; /* 01h: DTR control code */
  283. unsigned char resErr PACKED; /* 01h: '1' - reset modem error */
  284. } TX25GlobalVars;
  285. /*
  286.  * Defines for the 'dtrCtl' field.
  287.  */
  288. #define X25_RAISE_DTR 0x01
  289. #define X25_DROP_DTR 0x02
  290. /* ---------------------------------------------------------------------------
  291.  * X25_READ_MODEM_STATUS Command.
  292.  */
  293. typedef struct X25ModemStatus
  294. {
  295. unsigned char status PACKED; /* 00h: modem status */
  296. } TX25ModemStatus;
  297. /*
  298.  * Defines for the 'status' field.
  299.  */
  300. #define X25_CTS_MASK 0x20
  301. #define X25_DCD_MASK 0x08
  302. /* ---------------------------------------------------------------------------
  303.  * X25_HDLC_LINK_STATUS Command.
  304.  */
  305. typedef struct X25LinkStatus
  306. {
  307. unsigned char txQueued PACKED; /* 00h: queued Tx I-frames*/
  308. unsigned char rxQueued PACKED; /* 01h: queued Rx I-frames*/
  309. unsigned char station PACKED; /* 02h: DTE/DCE config. */
  310. unsigned char reserved PACKED; /* 03h: reserved */
  311. unsigned char sfTally PACKED; /* 04h: supervisory frame tally */
  312. } TX25LinkStatus;
  313. /*
  314.  * Defines for the 'station' field.
  315.  */
  316. #define X25_STATION_DTE 0x01 /* station configured as DTE */
  317. #define X25_STATION_DCE 0x02 /* station configured as DCE */
  318. /* ---------------------------------------------------------------------------
  319.  * X25_HDLC_READ_STATS Command.
  320.  */
  321. typedef struct HdlcStats
  322. { /* a number of ... */
  323. unsigned short rxIFrames PACKED; /* 00h: ready Rx I-frames */
  324. unsigned short rxNoseq PACKED; /* 02h: frms out-of-sequence */
  325. unsigned short rxNodata PACKED; /* 04h: I-frms without data */
  326. unsigned short rxDiscarded PACKED; /* 06h: discarded frames */
  327. unsigned short rxTooLong PACKED; /* 08h: frames too long */
  328. unsigned short rxBadAddr PACKED; /* 0Ah: frms with inval.addr*/
  329. unsigned short txAcked PACKED; /* 0Ch: acknowledged I-frms */
  330. unsigned short txRetransm PACKED; /* 0Eh: re-transmit. I-frms */
  331. unsigned short t1Timeout PACKED; /* 10h: T1 timeouts */
  332. unsigned short rxSABM PACKED; /* 12h: received SABM frames */
  333. unsigned short rxDISC PACKED; /* 14h: received DISC frames */
  334. unsigned short rxDM PACKED; /* 16h: received DM frames */
  335. unsigned short rxFRMR PACKED; /* 18h: FRMR frames received */
  336. unsigned short txSABM PACKED; /* 1Ah: transm. SABM frames*/
  337. unsigned short txDISC PACKED; /* 1Ch: transm. DISC frames*/
  338. unsigned short txDM PACKED; /* 1Eh: transm. DM frames */
  339. unsigned short txFRMR PACKED; /* 20h: transm. FRMR frames*/
  340. } THdlcStats;
  341. /* ---------------------------------------------------------------------------
  342.  * X25_HDLC_READ_COMM_ERR Command.
  343.  */
  344. typedef struct HdlcCommErr
  345. { /* a number of ... */
  346. unsigned char rxOverrun PACKED; /* 00h: Rx overrun errors */
  347. unsigned char rxBadCrc PACKED; /* 01h: Rx CRC errors */
  348. unsigned char rxAborted PACKED; /* 02h: Rx aborted frames */
  349. unsigned char rxDropped PACKED; /* 03h: frames lost */
  350. unsigned char txAborted PACKED; /* 04h: Tx aborted frames */
  351. unsigned char txUnderrun PACKED; /* 05h: Tx underrun errors */
  352. unsigned char txMissIntr PACKED; /* 06h: missed underrun ints */
  353. unsigned char reserved PACKED; /* 07h: reserved */
  354. unsigned char droppedDCD PACKED; /* 08h: times DCD dropped */
  355. unsigned char droppedCTS PACKED; /* 09h: times CTS dropped */
  356. } THdlcCommErr;
  357. /* ---------------------------------------------------------------------------
  358.  * X25_SET_CONFIGURATION & X25_READ_CONFIGURATION Commands.
  359.  */
  360. typedef struct X25Config
  361. {
  362. unsigned char baudRate PACKED; /* 00h:  */
  363. unsigned char t1 PACKED; /* 01h:  */
  364. unsigned char t2 PACKED; /* 02h:  */
  365. unsigned char n2 PACKED; /* 03h:  */
  366. unsigned short hdlcMTU PACKED; /* 04h:  */
  367. unsigned char hdlcWindow PACKED; /* 06h:  */
  368. unsigned char t4 PACKED; /* 07h:  */
  369. unsigned char autoModem PACKED; /* 08h:  */
  370. unsigned char autoHdlc PACKED; /* 09h:  */
  371. unsigned char hdlcOptions PACKED; /* 0Ah:  */
  372. unsigned char station PACKED; /* 0Bh:  */
  373. unsigned char pktWindow PACKED; /* 0Ch:  */
  374. unsigned short defPktSize PACKED; /* 0Dh:  */
  375. unsigned short pktMTU PACKED; /* 0Fh:  */
  376. unsigned short loPVC PACKED; /* 11h:  */
  377. unsigned short hiPVC PACKED; /* 13h:  */
  378. unsigned short loIncommingSVC PACKED; /* 15h:  */
  379. unsigned short hiIncommingSVC PACKED; /* 17h:  */
  380. unsigned short loTwoWaySVC PACKED; /* 19h:  */
  381. unsigned short hiTwoWaySVC PACKED; /* 1Bh:  */
  382. unsigned short loOutgoingSVC PACKED; /* 1Dh:  */
  383. unsigned short hiOutgoingSVC PACKED; /* 1Fh:  */
  384. unsigned short options PACKED; /* 21h:  */
  385. unsigned char responseOpt PACKED; /* 23h:  */
  386. unsigned short facil1 PACKED; /* 24h:  */
  387. unsigned short facil2 PACKED; /* 26h:  */
  388. unsigned short ccittFacil PACKED; /* 28h:  */
  389. unsigned short otherFacil PACKED; /* 2Ah:  */
  390. unsigned short ccittCompat PACKED; /* 2Ch:  */
  391. unsigned char t10t20 PACKED; /* 2Eh:  */
  392. unsigned char t11t21 PACKED; /* 2Fh:  */
  393. unsigned char t12t22 PACKED; /* 30h:  */
  394. unsigned char t13t23 PACKED; /* 31h:  */
  395. unsigned char t16t26 PACKED; /* 32H:  */
  396. unsigned char t28 PACKED; /* 33h:  */
  397. unsigned char r10r20 PACKED; /* 34h:  */
  398. unsigned char r12r22 PACKED; /* 35h:  */
  399. unsigned char r13r23 PACKED; /* 36h:  */
  400. } TX25Config;
  401. /* ---------------------------------------------------------------------------
  402.  * X25_READ_CHANNEL_CONFIG Command.
  403.  */
  404. typedef struct X25ChanAlloc /*----- Channel allocation -*/
  405. {
  406. unsigned short loPVC PACKED; /* 00h: lowest PVC number */
  407. unsigned short hiPVC PACKED; /* 02h: highest PVC number */
  408. unsigned short loIncommingSVC PACKED; /* 04h: lowest incoming SVC */
  409. unsigned short hiIncommingSVC PACKED; /* 06h: highest incoming SVC */
  410. unsigned short loTwoWaySVC PACKED; /* 08h: lowest two-way SVC */
  411. unsigned short hiTwoWaySVC PACKED; /* 0Ah: highest two-way SVC */
  412. unsigned short loOutgoingSVC PACKED; /* 0Ch: lowest outgoing SVC */
  413. unsigned short hiOutgoingSVC PACKED; /* 0Eh: highest outgoing SVC */
  414. } TX25ChanAlloc;
  415. typedef struct X25ChanCfg /*------ Channel configuration -----*/
  416. {
  417. unsigned char type PACKED; /* 00h: channel type */
  418. unsigned char txConf PACKED; /* 01h: Tx packet and window sizes */
  419. unsigned char rxConf PACKED; /* 01h: Rx packet and window sizes */
  420. } TX25ChanCfg;
  421. /*
  422.  * Defines for the 'type' field.
  423.  */
  424. #define X25_PVC   0x01 /* PVC */
  425. #define X25_SVC_IN 0x03 /* Incoming SVC */
  426. #define X25_SVC_TWOWAY 0x07 /* Two-way SVC */
  427. #define X25_SVC_OUT 0x0B /* Outgoing SVC */
  428. /*----------------------------------------------------------------------------
  429.  * X25_READ_STATISTICS Command.
  430.  */
  431. typedef struct X25Stats
  432. { /* number of packets Tx/Rx'ed */
  433. unsigned short txRestartRqst PACKED; /* 00h: Restart Request */
  434. unsigned short rxRestartRqst PACKED; /* 02h: Restart Request */
  435. unsigned short txRestartConf PACKED; /* 04h: Restart Confirmation */
  436. unsigned short rxRestartConf PACKED; /* 06h: Restart Confirmation */
  437. unsigned short txResetRqst PACKED; /* 08h: Reset Request */
  438. unsigned short rxResetRqst PACKED; /* 0Ah: Reset Request */
  439. unsigned short txResetConf PACKED; /* 0Ch: Reset Confirmation */
  440. unsigned short rxResetConf PACKED; /* 0Eh: Reset Confirmation */
  441. unsigned short txCallRequest PACKED; /* 10h: Call Request */
  442. unsigned short rxCallRequest PACKED; /* 12h: Call Request */
  443. unsigned short txCallAccept PACKED; /* 14h: Call Accept */
  444. unsigned short rxCallAccept PACKED; /* 16h: Call Accept */
  445. unsigned short txClearRqst PACKED; /* 18h: Clear Request */
  446. unsigned short rxClearRqst PACKED; /* 1Ah: Clear Request */
  447. unsigned short txClearConf PACKED; /* 1Ch: Clear Confirmation */
  448. unsigned short rxClearConf PACKED; /* 1Eh: Clear Confirmation */
  449. unsigned short txDiagnostic PACKED; /* 20h: Diagnostic */
  450. unsigned short rxDiagnostic PACKED; /* 22h: Diagnostic */
  451. unsigned short txRegRqst PACKED; /* 24h: Registration Request */
  452. unsigned short rxRegRqst PACKED; /* 26h: Registration Request */
  453. unsigned short txRegConf PACKED; /* 28h: Registration Confirm.*/
  454. unsigned short rxRegConf PACKED; /* 2Ah: Registration Confirm.*/
  455. unsigned short txInterrupt PACKED; /* 2Ch: Interrupt */
  456. unsigned short rxInterrupt PACKED; /* 2Eh: Interrupt */
  457. unsigned short txIntrConf PACKED; /* 30h: Interrupt Confirm. */
  458. unsigned short rxIntrConf PACKED; /* 32h: Interrupt Confirm. */
  459. unsigned short txData PACKED; /* 34h: Data */
  460. unsigned short rxData PACKED; /* 36h: Data */
  461. unsigned short txRR PACKED; /* 38h: RR */
  462. unsigned short rxRR PACKED; /* 3Ah: RR */
  463. unsigned short txRNR PACKED; /* 3Ch: RNR */
  464. unsigned short rxRNR PACKED; /* 3Eh: RNR */
  465. } TX25Stats;
  466. /*----------------------------------------------------------------------------
  467.  * X25_READ_HISTORY_TABLE Command.
  468.  */
  469. typedef struct X25EventLog
  470. {
  471. unsigned char type PACKED; /* 00h: transaction type */
  472. unsigned short lcn PACKED; /* 01h: logical channel num */
  473. unsigned char packet PACKED; /* 03h: async packet type */
  474. unsigned char cause PACKED; /* 04h: X.25 cause field */
  475. unsigned char diag PACKED; /* 05h: X.25 diag field */
  476. TX25TimeStamp ts PACKED; /* 06h: time stamp */
  477. } TX25EventLog;
  478. /*
  479.  * Defines for the 'type' field.
  480.  */
  481. #define X25LOG_INCOMMING 0x00
  482. #define X25LOG_APPLICATION  0x01
  483. #define X25LOG_AUTOMATIC 0x02
  484. #define X25LOG_ERROR 0x04
  485. #define X25LOG_TIMEOUT 0x08
  486. #define X25LOG_RECOVERY 0x10
  487. /*
  488.  * Defines for the 'packet' field.
  489.  */
  490. #define X25LOG_CALL_RQST 0x0B
  491. #define X25LOG_CALL_ACCEPTED 0x0F
  492. #define X25LOG_CLEAR_RQST 0x13
  493. #define X25LOG_CLEAR_CONFRM 0x17
  494. #define X25LOG_RESET_RQST 0x1B
  495. #define X25LOG_RESET_CONFRM 0x1F
  496. #define X25LOG_RESTART_RQST 0xFB
  497. #define X25LOG_RESTART_COMFRM 0xFF
  498. #define X25LOG_DIAGNOSTIC 0xF1
  499. #define X25LOG_DTE_REG_RQST 0xF3
  500. #define X25LOG_DTE_REG_COMFRM 0xF7
  501. /* ---------------------------------------------------------------------------
  502.  * X25_TRACE_CONFIGURE Command.
  503.  */
  504. typedef struct X25TraceCfg
  505. {
  506. unsigned char flags PACKED; /* 00h: trace configuration flags */
  507. unsigned char timeout PACKED; /* 01h: timeout for trace delay mode*/
  508. } TX25TraceCfg;
  509. /*
  510.  * Defines for the 'flags' field.
  511.  */
  512. #define X25_TRC_ENABLE 0x01 /* bit0: '1' - trace enabled */
  513. #define X25_TRC_TIMESTAMP 0x02 /* bit1: '1' - time stamping enabled*/
  514. #define X25_TRC_DELAY 0x04 /* bit2: '1' - trace delay enabled */
  515. #define X25_TRC_DATA 0x08 /* bit3: '1' - trace data packets */
  516. #define X25_TRC_SUPERVISORY 0x10    /* bit4: '1' - trace suprvisory pkts*/
  517. #define X25_TRC_ASYNCHRONOUS 0x20 /* bit5: '1' - trace asynch. packets*/
  518. #define X25_TRC_HDLC 0x40 /* bit6: '1' - trace all packets */
  519. #define X25_TRC_READ 0x80 /* bit7: '1' - get current config. */
  520. /* ---------------------------------------------------------------------------
  521.  * X25_READ_TRACE_DATA Command.
  522.  */
  523. typedef struct X25Trace /*----- Trace data structure -------*/
  524. {
  525. unsigned short length PACKED; /* 00h: trace data length */
  526. unsigned char type PACKED; /* 02h: trace type */
  527. unsigned char lost_cnt PACKED; /* 03h: N of traces lost */
  528. TX25TimeStamp tstamp PACKED; /* 04h: mon/date/sec/min/hour */
  529. unsigned short millisec PACKED; /* 09h: ms time stamp */
  530. unsigned char data[0] PACKED; /* 0Bh: traced frame */
  531. } TX25Trace;
  532. /*
  533.  * Defines for the 'type' field.
  534.  */
  535. #define X25_TRC_TYPE_MASK 0x0F /* bits 0..3: trace type */
  536. #define X25_TRC_TYPE_RX_FRAME 0x00 /* received frame trace */
  537. #define X25_TRC_TYPE_TX_FRAME 0x01 /* transmitted frame */
  538. #define X25_TRC_TYPE_ERR_FRAME 0x02 /* error frame */
  539. #define X25_TRC_ERROR_MASK 0xF0 /* bits 4..7: error code */
  540. #define X25_TRCERR_RX_ABORT 0x10 /* receive abort error */
  541. #define X25_TRCERR_RX_BADCRC 0x20 /* receive CRC error */
  542. #define X25_TRCERR_RX_OVERRUN 0x30 /* receiver overrun error */
  543. #define X25_TRCERR_RX_TOO_LONG 0x40 /* excessive frame length error */
  544. #define X25_TRCERR_TX_ABORT 0x70 /* aborted frame transmittion error */
  545. #define X25_TRCERR_TX_UNDERRUN 0x80 /* transmit underrun error */
  546. /*****************************************************************************
  547.  * Following definitions describe HDLC frame and X.25 packet formats.
  548.  ****************************************************************************/
  549. typedef struct HDLCFrame /*----- DHLC Frame Format ----------*/
  550. {
  551. unsigned char addr PACKED; /* address field */
  552. unsigned char cntl PACKED; /* control field */
  553. unsigned char data[0] PACKED;
  554. } THDLCFrame;
  555. typedef struct X25Pkt /*----- X.25 Paket Format ----------*/
  556. {
  557. unsigned char lcn_hi PACKED; /* 4 MSB of Logical Channel Number */
  558. unsigned char lcn_lo PACKED; /* 8 LSB of Logical Channel Number */
  559. unsigned char type PACKED;
  560. unsigned char data[0] PACKED;
  561. } TX25Pkt;
  562. /*
  563.  * Defines for the 'lcn_hi' field.
  564.  */
  565. #define X25_Q_BIT_MASK 0x80 /* Data Qualifier Bit mask */
  566. #define X25_D_BIT_MASK 0x40 /* Delivery Confirmation Bit mask */
  567. #define X25_M_BITS_MASK 0x30 /* Modulo Bits mask */
  568. #define X25_LCN_MSB_MASK 0x0F /* LCN most significant bits mask */
  569. /*
  570.  * Defines for the 'type' field.
  571.  */
  572. #define X25PKT_DATA 0x01 /* Data packet mask */
  573. #define X25PKT_SUPERVISORY 0x02 /* Supervisory packet mask */
  574. #define X25PKT_CALL_RQST 0x0B /* Call Request/Incoming */
  575. #define X25PKT_CALL_ACCEPTED 0x0F /* Call Accepted/Connected */
  576. #define X25PKT_CLEAR_RQST 0x13 /* Clear Request/Indication */
  577. #define X25PKT_CLEAR_CONFRM 0x17 /* Clear Confirmation */
  578. #define X25PKT_RESET_RQST 0x1B /* Reset Request/Indication */
  579. #define X25PKT_RESET_CONFRM 0x1F /* Reset Confirmation */
  580. #define X25PKT_RESTART_RQST 0xFB /* Restart Request/Indication */
  581. #define X25PKT_RESTART_CONFRM 0xFF /* Restart Confirmation */
  582. #define X25PKT_INTERRUPT 0x23 /* Interrupt */
  583. #define X25PKT_INTERRUPT_CONFRM 0x27 /* Interrupt Confirmation */
  584. #define X25PKT_DIAGNOSTIC 0xF1 /* Diagnostic */
  585. #define X25PKT_REGISTR_RQST 0xF3 /* Registration Request */
  586. #define X25PKT_REGISTR_CONFRM 0xF7 /* Registration Confirmation */
  587. #define X25PKT_RR_MASKED 0x01 /* Receive Ready packet after masking */
  588. #define X25PKT_RNR_MASKED 0x05 /* Receive Not Ready after masking  */
  589. typedef struct {
  590. TX25Cmd cmd PACKED;
  591. char data[X25_MAX_DATA] PACKED;
  592. } mbox_cmd_t;
  593. typedef struct {
  594. unsigned char  qdm PACKED; /* Q/D/M bits */
  595. unsigned char  cause PACKED; /* cause field */
  596. unsigned char  diagn PACKED; /* diagnostics */
  597. unsigned char  pktType  PACKED;
  598. unsigned short length   PACKED;
  599. unsigned char  result PACKED;
  600. unsigned short lcn PACKED;
  601. char reserved[7] PACKED;
  602. }x25api_hdr_t;
  603. typedef struct {
  604. x25api_hdr_t hdr PACKED;
  605. char data[X25_MAX_DATA] PACKED;
  606. }x25api_t;
  607. /* 
  608.  * XPIPEMON Definitions
  609.  */
  610. /* valid ip_protocol for UDP management */
  611. #define UDPMGMT_UDP_PROTOCOL 0x11
  612. #define UDPMGMT_XPIPE_SIGNATURE         "XLINK8ND"
  613. #define UDPMGMT_DRVRSTATS_SIGNATURE     "DRVSTATS"
  614. /* values for request/reply byte */
  615. #define UDPMGMT_REQUEST 0x01
  616. #define UDPMGMT_REPLY 0x02
  617. #define UDP_OFFSET 12
  618. typedef struct {
  619. unsigned char opp_flag  PACKED; /* the opp flag */
  620. unsigned char command PACKED; /* command code */
  621. unsigned short length PACKED; /* transfer data length */
  622. unsigned char result PACKED; /* return code */
  623. unsigned char pf PACKED; /* P/F bit */
  624. unsigned short lcn PACKED; /* logical channel */
  625. unsigned char qdm PACKED; /* Q/D/M bits */
  626. unsigned char cause PACKED; /* cause field */
  627. unsigned char diagn PACKED; /* diagnostics */
  628. unsigned char pktType PACKED; /* packet type */
  629. unsigned char resrv[4] PACKED; /* reserved */
  630. } cblock_t;
  631. typedef struct {
  632. ip_pkt_t  ip_pkt PACKED;
  633. udp_pkt_t udp_pkt PACKED;
  634. wp_mgmt_t  wp_mgmt        PACKED;
  635.         cblock_t                cblock          PACKED;
  636.         unsigned char           data[4080]      PACKED;
  637. } x25_udp_pkt_t;
  638. typedef struct read_hdlc_stat {
  639. unsigned short inf_frames_rx_ok PACKED;
  640.         unsigned short inf_frames_rx_out_of_seq PACKED;
  641. unsigned short inf_frames_rx_no_data PACKED;
  642. unsigned short inf_frames_rx_dropped PACKED;
  643. unsigned short inf_frames_rx_data_too_long PACKED;
  644. unsigned short inf_frames_rx_invalid_addr PACKED;
  645. unsigned short inf_frames_tx_ok PACKED;
  646.         unsigned short inf_frames_tx_retransmit PACKED;
  647.         unsigned short T1_timeouts PACKED;
  648. unsigned short SABM_frames_rx PACKED;
  649. unsigned short DISC_frames_rx PACKED;
  650. unsigned short DM_frames_rx PACKED;
  651. unsigned short FRMR_frames_rx PACKED;
  652. unsigned short SABM_frames_tx PACKED;
  653. unsigned short DISC_frames_tx PACKED;
  654. unsigned short DM_frames_tx PACKED;
  655. unsigned short FRMR_frames_tx PACKED;
  656. } read_hdlc_stat_t;
  657. typedef struct read_comms_err_stats{
  658. unsigned char overrun_err_rx PACKED;
  659. unsigned char CRC_err PACKED;
  660. unsigned char abort_frames_rx PACKED;
  661. unsigned char frames_dropped_buf_full PACKED;
  662. unsigned char abort_frames_tx PACKED;
  663. unsigned char transmit_underruns PACKED;
  664. unsigned char missed_tx_underruns_intr PACKED;
  665. unsigned char reserved PACKED;
  666. unsigned char DCD_drop PACKED;
  667. unsigned char CTS_drop PACKED;
  668. } read_comms_err_stats_t;
  669. typedef struct trace_data {
  670. unsigned short length PACKED;
  671. unsigned char  type PACKED;
  672. unsigned char  trace_dropped PACKED;
  673. unsigned char  reserved[5] PACKED;
  674. unsigned short timestamp PACKED;
  675.         unsigned char  data PACKED;
  676. } trace_data_t;
  677. enum {UDP_XPIPE_TYPE};
  678. #define XPIPE_ENABLE_TRACING                    0x14
  679. #define XPIPE_DISABLE_TRACING                   0x14
  680. #define XPIPE_GET_TRACE_INFO                    0x16
  681. #define XPIPE_FT1_READ_STATUS                   0x74
  682. #define XPIPE_DRIVER_STAT_IFSEND                0x75
  683. #define XPIPE_DRIVER_STAT_INTR                  0x76
  684. #define XPIPE_DRIVER_STAT_GEN                   0x77
  685. #define XPIPE_FLUSH_DRIVER_STATS                0x78
  686. #define XPIPE_ROUTER_UP_TIME                    0x79        
  687. #define XPIPE_SET_FT1_MODE 0x81
  688. #define XPIPE_FT1_STATUS_CTRL 0x80
  689. /* error messages */
  690. #define NO_BUFFS_OR_CLOSED_WIN  0x33
  691. #define DATA_LENGTH_TOO_BIG     0x32
  692. #define NO_DATA_AVAILABLE       0x33
  693. #define Z80_TIMEOUT_ERROR       0x0a   
  694. #define NO_BUFFS 0x08
  695. /* Trace options */
  696. #define TRACE_DEFAULT 0x03
  697. #define TRACE_SUPERVISOR_FRMS 0x10
  698. #define TRACE_ASYNC_FRMS 0x20
  699. #define TRACE_ALL_HDLC_FRMS 0x40
  700. #define TRACE_DATA_FRMS 0x08
  701. #endif /* _SDLA_X25_H */