- Kai Germaschewski: ymfpci cleanups and resource leak fixes
[davej-history.git] / include / linux / sdla_x25.h
blob58214a0891e1d98a166171255bbb1cb378467ce0
1 /*****************************************************************************
2 * sdla_x25.h Sangoma X.25 firmware API definitions.
4 * Author: Gene Kozin <74604.152@compuserve.com>
6 * Copyright: (c) 1995-1996 Sangoma Technologies Inc.
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 * Dec 13, 1996 Gene Kozin Initial version
14 *****************************************************************************/
15 #ifndef _SDLA_X25_H
16 #define _SDLA_X25_H
18 /*----------------------------------------------------------------------------
19 * Notes:
20 * ------
21 * 1. All structures defined in this file are byte-aligned. To ensure
22 * portability of this code between different platforms and compilers, one
23 * of the following defines must be defined before including this file:
25 * Compiler Platform Define Use option
26 * -------- -------- ------ ----------
27 * GNU C Linux _GNUC_ -
28 * Microsoft C DOS/Windows _MSC_ -
32 #ifdef _GNUC_
33 # ifndef PACKED
34 # define PACKED __attribute__((packed))
35 # endif /* PACKED */
36 #else
37 # define PACKED
38 #endif
39 #ifdef _MSC_
40 # pragma pack(1)
41 #endif
43 /****** CONSTANTS DEFINITIONS ***********************************************/
45 #define X25_MAX_CHAN 255 /* max number of open X.25 circuits */
46 #define X25_MAX_DATA 1024 /* max length of X.25 data buffer */
49 * X.25 shared memory layout.
51 #define X25_MBOX_OFFS 0x16B0 /* general mailbox block */
52 #define X25_RXMBOX_OFFS 0x1AD0 /* receive mailbox */
53 #define X25_STATUS_OFFS 0x1EF0 /* X.25 status structure */
55 /****** DATA STRUCTURES *****************************************************/
57 /*----------------------------------------------------------------------------
58 * X.25 Command Block.
60 typedef struct X25Cmd
62 unsigned char command PACKED; /* command code */
63 unsigned short length PACKED; /* transfer data length */
64 unsigned char result PACKED; /* return code */
65 unsigned char pf PACKED; /* P/F bit */
66 unsigned short lcn PACKED; /* logical channel */
67 unsigned char qdm PACKED; /* Q/D/M bits */
68 unsigned char cause PACKED; /* cause field */
69 unsigned char diagn PACKED; /* diagnostics */
70 unsigned char pktType PACKED; /* packet type */
71 unsigned char resrv[4] PACKED; /* reserved */
72 } TX25Cmd;
75 * Defines for the 'command' field.
77 /*----- General commands --------------*/
78 #define X25_SET_GLOBAL_VARS 0x0B /* set global variables */
79 #define X25_READ_MODEM_STATUS 0x0C /* read modem status */
80 #define X25_READ_CODE_VERSION 0x15 /* read firmware version number */
81 #define X25_TRACE_CONFIGURE 0x14 /* configure trace facility */
82 #define X25_READ_TRACE_DATA 0x16 /* read trace data */
83 #define X25_SET_INTERRUPT_MODE 0x17 /* set interrupt generation mode */
84 #define X25_READ_INTERRUPT_MODE 0x18 /* read interrupt generation mode */
85 /*----- HDLC-level commands -----------*/
86 #define X25_HDLC_LINK_CONFIGURE 0x01 /* configure HDLC link level */
87 #define X25_HDLC_LINK_OPEN 0x02 /* open HDLC link */
88 #define X25_HDLC_LINK_CLOSE 0x03 /* close HDLC link */
89 #define X25_HDLC_LINK_SETUP 0x04 /* set up HDLC link */
90 #define X25_HDLC_LINK_DISC 0x05 /* disconnect DHLC link */
91 #define X25_HDLC_LINK_STATUS 0x06 /* read DHLC link status */
92 #define X25_HDLC_READ_STATS 0x07 /* read operational statistics */
93 #define X25_HDLC_FLUSH_STATS 0x08 /* flush operational statistics */
94 #define X25_HDLC_READ_COMM_ERR 0x09 /* read error statistics */
95 #define X25_HDLC_FLUSH_COMM_ERR 0x0A /* flush error statistics */
96 #define X25_HDLC_FLUSH_BUFFERS 0x0D /* flush HDLC-level data buffers */
97 #define X25_HDLC_SPRVS_CNT_STAT 0x0F /* read surervisory count status */
98 #define X25_HDLC_SEND_UI_FRAME 0x10 /* send unnumbered information frame */
99 #define X25_HDLC_WRITE 0x11 /* send HDLC information frame */
100 #define X25_HDLC_READ 0x21 /* read HDLC information frame */
101 #define X25_HDLC_READ_CONFIG 0x12 /* read HDLC configuration */
102 #define X25_HDLC_SET_CONFIG 0x13 /* set HDLC configuration */
103 /*----- X.25-level commands -----------*/
104 #define X25_READ 0x22 /* read X.25 packet */
105 #define X25_WRITE 0x23 /* send X.25 packet */
106 #define X25_PLACE_CALL 0x30 /* place a call on SVC */
107 #define X25_ACCEPT_CALL 0x31 /* accept incoming call */
108 #define X25_CLEAR_CALL 0x32 /* clear call */
109 #define X25_CLEAR_CONFRM 0x33 /* send clear confirmation packet */
110 #define X25_RESET 0x34 /* send reset request packet */
111 #define X25_RESET_CONFRM 0x35 /* send reset confirmation packet */
112 #define X25_RESTART 0x36 /* send restart request packet */
113 #define X25_RESTART_CONFRM 0x37 /* send restart confirmation packet */
114 #define X25_INTERRUPT 0x38 /* send interrupt request packet */
115 #define X25_INTERRUPT_CONFRM 0x39 /* send interrupt confirmation pkt */
116 #define X25_REGISTRATION_RQST 0x3A /* send registration request packet */
117 #define X25_REGISTRATION_CONFRM 0x3B /* send registration confirmation */
118 #define X25_IS_DATA_AVAILABLE 0x40 /* querry receive queue */
119 #define X25_INCOMING_CALL_CTL 0x41 /* select incoming call options */
120 #define X25_CONFIGURE_PVC 0x42 /* configure PVC */
121 #define X25_GET_ACTIVE_CHANNELS 0x43 /* get a list of active circuits */
122 #define X25_READ_CHANNEL_CONFIG 0x44 /* read virt. circuit configuration */
123 #define X25_FLUSH_DATA_BUFFERS 0x45 /* flush X.25-level data buffers */
124 #define X25_READ_HISTORY_TABLE 0x46 /* read asynchronous event log */
125 #define X25_HISTORY_TABLE_CTL 0x47 /* control asynchronous event log */
126 #define X25_GET_TX_D_BIT_STATUS 0x48 /* is packet with D-bit acknowledged */
127 #define X25_READ_STATISTICS 0x49 /* read X.25-level statistics */
128 #define X25_FLUSH_STATISTICS 0x4A /* flush X.25-level statistics */
129 #define X25_READ_CONFIGURATION 0x50 /* read HDLC & X.25 configuration */
130 #define X25_SET_CONFIGURATION 0x51 /* set HDLC & X.25 configuration */
133 * Defines for the 'result' field.
135 /*----- General results ---------------*/
136 #define X25RES_OK 0x00
137 #define X25RES_ERROR 0x01
138 #define X25RES_LINK_NOT_IN_ABM 0x02 /* link is not in ABM mode */
139 #define X25RES_LINK_CLOSED 0x03
140 #define X25RES_INVAL_LENGTH 0x04
141 #define X25RES_INVAL_CMD 0x05
142 #define X25RES_UNNUMBERED_FRAME 0x06 /* unnumbered frame received */
143 #define X25RES_FRM_REJECT_MODE 0x07 /* link is in Frame Reject mode */
144 #define X25RES_MODEM_FAILURE 0x08 /* DCD and/or CTS dropped */
145 #define X25RES_N2_RETRY_LIMIT 0x09 /* N2 retry limit has been exceeded */
146 #define X25RES_INVAL_LCN 0x30 /* invalid logical channel number */
147 #define X25RES_INVAL_STATE 0x31 /* channel is not in data xfer mode */
148 #define X25RES_INVAL_DATA_LEN 0x32 /* invalid data length */
149 #define X25RES_NOT_READY 0x33 /* no data available / buffers full */
150 #define X25RES_NETWORK_DOWN 0x34
151 #define X25RES_CHANNEL_IN_USE 0x35 /* there is data queued on this LCN */
152 #define X25RES_REGST_NOT_SUPPRT 0x36 /* registration not supported */
153 #define X25RES_INVAL_FORMAT 0x37 /* invalid packet format */
154 #define X25RES_D_BIT_NOT_SUPPRT 0x38 /* D-bit pragmatics not supported */
155 #define X25RES_FACIL_NOT_SUPPRT 0x39 /* Call facility not supported */
156 #define X25RES_INVAL_CALL_ARG 0x3A /* erroneous call arguments */
157 #define X25RES_INVAL_CALL_DATA 0x3B /* erroneous call user data */
158 #define X25RES_ASYNC_PACKET 0x40 /* asynchronous packet received */
159 #define X25RES_PROTO_VIOLATION 0x41 /* protocol violation occurred */
160 #define X25RES_PKT_TIMEOUT 0x42 /* X.25 packet time out */
161 #define X25RES_PKT_RETRY_LIMIT 0x43 /* X.25 packet retry limit exceeded */
162 /*----- Command-dependent results -----*/
163 #define X25RES_LINK_DISC 0x00 /* HDLC_LINK_STATUS */
164 #define X25RES_LINK_IN_ABM 0x01 /* HDLC_LINK_STATUS */
165 #define X25RES_NO_DATA 0x01 /* HDLC_READ/READ_TRACE_DATA*/
166 #define X25RES_TRACE_INACTIVE 0x02 /* READ_TRACE_DATA */
167 #define X25RES_LINK_IS_OPEN 0x01 /* HDLC_LINK_OPEN */
168 #define X25RES_LINK_IS_DISC 0x02 /* HDLC_LINK_DISC */
169 #define X25RES_LINK_IS_CLOSED 0x03 /* HDLC_LINK_CLOSE */
170 #define X25RES_INVAL_PARAM 0x31 /* INCOMING_CALL_CTL */
171 #define X25RES_INVAL_CONFIG 0x35 /* REGISTR_RQST/CONFRM */
174 * Defines for the 'qdm_bits' field.
176 #define X25CMD_Q_BIT_MASK 0x04
177 #define X25CMD_D_BIT_MASK 0x02
178 #define X25CMD_M_BIT_MASK 0x01
181 * Defines for the 'pkt_type' field.
183 /*----- Asynchronous events ------*/
184 #define ASE_CLEAR_RQST 0x02
185 #define ASE_RESET_RQST 0x04
186 #define ASE_RESTART_RQST 0x08
187 #define ASE_INTERRUPT 0x10
188 #define ASE_DTE_REGISTR_RQST 0x20
189 #define ASE_CALL_RQST 0x30
190 #define ASE_CALL_ACCEPTED 0x31
191 #define ASE_CLEAR_CONFRM 0x32
192 #define ASE_RESET_CONFRM 0x33
193 #define ASE_RESTART_CONFRM 0x34
194 #define ASE_INTERRUPT_CONFRM 0x35
195 #define ASE_DCE_REGISTR_CONFRM 0x36
196 #define ASE_DIAGNOSTIC 0x37
197 #define ASE_CALL_AUTO_CLEAR 0x38
198 #define AUTO_RESPONSE_FLAG 0x80
199 /*----- Time-Out events ----------*/
200 #define TOE_RESTART_RQST 0x03
201 #define TOE_CALL_RQST 0x05
202 #define TOE_CLEAR_RQST 0x08
203 #define TOE_RESET_RQST 0x0A
204 /*----- Protocol Violation events */
205 #define PVE_CLEAR_RQST 0x32
206 #define PVE_RESET_RQST 0x33
207 #define PVE_RESTART_RQST 0x34
208 #define PVE_DIAGNOSTIC 0x37
210 /*----------------------------------------------------------------------------
211 * X.25 Mailbox.
212 * This structure is located at offsets X25_MBOX_OFFS and X25_RXMBOX_OFFS
213 * into shared memory window.
215 typedef struct X25Mbox
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;
222 /*----------------------------------------------------------------------------
223 * X.25 Time Stamp Structure.
225 typedef struct X25TimeStamp
227 unsigned char month PACKED;
228 unsigned char date PACKED;
229 unsigned char sec PACKED;
230 unsigned char min PACKED;
231 unsigned char hour PACKED;
232 } TX25TimeStamp;
234 /*----------------------------------------------------------------------------
235 * X.25 Status Block.
236 * This structure is located at offset X25_STATUS_OFF into shared memory
237 * window.
239 typedef struct X25Status
241 unsigned short pvc_map PACKED; /* 00h: PVC map */
242 unsigned short icc_map PACKED; /* 02h: Incoming Chan. map */
243 unsigned short twc_map PACKED; /* 04h: Two-way Cnan. map */
244 unsigned short ogc_map PACKED; /* 06h: Outgoing Chan. map */
245 TX25TimeStamp tstamp PACKED; /* 08h: timestamp (BCD) */
246 unsigned char iflags PACKED; /* 0Dh: interrupt flags */
247 unsigned char imask PACKED; /* 0Eh: interrupt mask */
248 unsigned char resrv PACKED; /* 0Eh: */
249 unsigned char gflags PACKED; /* 10h: misc. HDLC/X25 flags */
250 unsigned char cflags[X25_MAX_CHAN] PACKED; /* channel status bytes */
251 } TX25Status;
254 * Bitmasks for the 'iflags' field.
256 #define X25_RX_INTR 0x01 /* receive interrupt */
257 #define X25_TX_INTR 0x02 /* transmit interrupt */
258 #define X25_MODEM_INTR 0x04 /* modem status interrupt (CTS/DCD) */
259 #define X25_EVENT_INTR 0x10 /* asynchronous event encountered */
260 #define X25_CMD_INTR 0x08 /* interface command complete */
263 * Bitmasks for the 'gflags' field.
265 #define X25_HDLC_ABM 0x01 /* HDLC is in ABM mode */
266 #define X25_RX_READY 0x02 /* X.25 data available */
267 #define X25_TRACE_READY 0x08 /* trace data available */
268 #define X25_EVENT_IND 0x20 /* asynchronous event indicator */
269 #define X25_TX_READY 0x40 /* space is available in Tx buf.*/
272 * Bitmasks for the 'cflags' field.
274 #define X25_XFER_MODE 0x80 /* channel is in data transfer mode */
275 #define X25_TXWIN_OPEN 0x40 /* transmit window open */
276 #define X25_RXBUF_MASK 0x3F /* number of data buffers available */
278 /*****************************************************************************
279 * Following definitions structurize contents of the TX25Mbox.data field for
280 * different X.25 interface commands.
281 ****************************************************************************/
283 /* ---------------------------------------------------------------------------
284 * X25_SET_GLOBAL_VARS Command.
286 typedef struct X25GlobalVars
288 unsigned char resrv PACKED; /* 00h: reserved */
289 unsigned char dtrCtl PACKED; /* 01h: DTR control code */
290 unsigned char resErr PACKED; /* 01h: '1' - reset modem error */
291 } TX25GlobalVars;
294 * Defines for the 'dtrCtl' field.
296 #define X25_RAISE_DTR 0x01
297 #define X25_DROP_DTR 0x02
299 /* ---------------------------------------------------------------------------
300 * X25_READ_MODEM_STATUS Command.
302 typedef struct X25ModemStatus
304 unsigned char status PACKED; /* 00h: modem status */
305 } TX25ModemStatus;
308 * Defines for the 'status' field.
310 #define X25_CTS_MASK 0x20
311 #define X25_DCD_MASK 0x08
313 /* ---------------------------------------------------------------------------
314 * X25_HDLC_LINK_STATUS Command.
316 typedef struct X25LinkStatus
318 unsigned char txQueued PACKED; /* 00h: queued Tx I-frames*/
319 unsigned char rxQueued PACKED; /* 01h: queued Rx I-frames*/
320 unsigned char station PACKED; /* 02h: DTE/DCE config. */
321 unsigned char reserved PACKED; /* 03h: reserved */
322 unsigned char sfTally PACKED; /* 04h: supervisory frame tally */
323 } TX25LinkStatus;
326 * Defines for the 'station' field.
328 #define X25_STATION_DTE 0x01 /* station configured as DTE */
329 #define X25_STATION_DCE 0x02 /* station configured as DCE */
331 /* ---------------------------------------------------------------------------
332 * X25_HDLC_READ_STATS Command.
334 typedef struct HdlcStats
335 { /* a number of ... */
336 unsigned short rxIFrames PACKED; /* 00h: ready Rx I-frames */
337 unsigned short rxNoseq PACKED; /* 02h: frms out-of-sequence */
338 unsigned short rxNodata PACKED; /* 04h: I-frms without data */
339 unsigned short rxDiscarded PACKED; /* 06h: discarded frames */
340 unsigned short rxTooLong PACKED; /* 08h: frames too long */
341 unsigned short rxBadAddr PACKED; /* 0Ah: frms with inval.addr*/
342 unsigned short txAcked PACKED; /* 0Ch: acknowledged I-frms */
343 unsigned short txRetransm PACKED; /* 0Eh: re-transmit. I-frms */
344 unsigned short t1Timeout PACKED; /* 10h: T1 timeouts */
345 unsigned short rxSABM PACKED; /* 12h: received SABM frames */
346 unsigned short rxDISC PACKED; /* 14h: received DISC frames */
347 unsigned short rxDM PACKED; /* 16h: received DM frames */
348 unsigned short rxFRMR PACKED; /* 18h: FRMR frames received */
349 unsigned short txSABM PACKED; /* 1Ah: transm. SABM frames*/
350 unsigned short txDISC PACKED; /* 1Ch: transm. DISC frames*/
351 unsigned short txDM PACKED; /* 1Eh: transm. DM frames */
352 unsigned short txFRMR PACKED; /* 20h: transm. FRMR frames*/
353 } THdlcStats;
355 /* ---------------------------------------------------------------------------
356 * X25_HDLC_READ_COMM_ERR Command.
358 typedef struct HdlcCommErr
359 { /* a number of ... */
360 unsigned char rxOverrun PACKED; /* 00h: Rx overrun errors */
361 unsigned char rxBadCrc PACKED; /* 01h: Rx CRC errors */
362 unsigned char rxAborted PACKED; /* 02h: Rx aborted frames */
363 unsigned char rxDropped PACKED; /* 03h: frames lost */
364 unsigned char txAborted PACKED; /* 04h: Tx aborted frames */
365 unsigned char txUnderrun PACKED; /* 05h: Tx underrun errors */
366 unsigned char txMissIntr PACKED; /* 06h: missed underrun ints */
367 unsigned char reserved PACKED; /* 07h: reserved */
368 unsigned char droppedDCD PACKED; /* 08h: times DCD dropped */
369 unsigned char droppedCTS PACKED; /* 09h: times CTS dropped */
370 } THdlcCommErr;
372 /* ---------------------------------------------------------------------------
373 * X25_SET_CONFIGURATION & X25_READ_CONFIGURATION Commands.
375 typedef struct X25Config
377 unsigned char baudRate PACKED; /* 00h: */
378 unsigned char t1 PACKED; /* 01h: */
379 unsigned char t2 PACKED; /* 02h: */
380 unsigned char n2 PACKED; /* 03h: */
381 unsigned short hdlcMTU PACKED; /* 04h: */
382 unsigned char hdlcWindow PACKED; /* 06h: */
383 unsigned char t4 PACKED; /* 07h: */
384 unsigned char autoModem PACKED; /* 08h: */
385 unsigned char autoHdlc PACKED; /* 09h: */
386 unsigned char hdlcOptions PACKED; /* 0Ah: */
387 unsigned char station PACKED; /* 0Bh: */
388 unsigned char pktWindow PACKED; /* 0Ch: */
389 unsigned short defPktSize PACKED; /* 0Dh: */
390 unsigned short pktMTU PACKED; /* 0Fh: */
391 unsigned short loPVC PACKED; /* 11h: */
392 unsigned short hiPVC PACKED; /* 13h: */
393 unsigned short loIncomingSVC PACKED; /* 15h: */
394 unsigned short hiIncomingSVC PACKED; /* 17h: */
395 unsigned short loTwoWaySVC PACKED; /* 19h: */
396 unsigned short hiTwoWaySVC PACKED; /* 1Bh: */
397 unsigned short loOutgoingSVC PACKED; /* 1Dh: */
398 unsigned short hiOutgoingSVC PACKED; /* 1Fh: */
399 unsigned short options PACKED; /* 21h: */
400 unsigned char responseOpt PACKED; /* 23h: */
401 unsigned short facil1 PACKED; /* 24h: */
402 unsigned short facil2 PACKED; /* 26h: */
403 unsigned short ccittFacil PACKED; /* 28h: */
404 unsigned short otherFacil PACKED; /* 2Ah: */
405 unsigned short ccittCompat PACKED; /* 2Ch: */
406 unsigned char t10t20 PACKED; /* 2Eh: */
407 unsigned char t11t21 PACKED; /* 2Fh: */
408 unsigned char t12t22 PACKED; /* 30h: */
409 unsigned char t13t23 PACKED; /* 31h: */
410 unsigned char t16t26 PACKED; /* 32H: */
411 unsigned char t28 PACKED; /* 33h: */
412 unsigned char r10r20 PACKED; /* 34h: */
413 unsigned char r12r22 PACKED; /* 35h: */
414 unsigned char r13r23 PACKED; /* 36h: */
415 } TX25Config;
417 /* ---------------------------------------------------------------------------
418 * X25_READ_CHANNEL_CONFIG Command.
420 typedef struct X25ChanAlloc /*----- Channel allocation -*/
422 unsigned short loPVC PACKED; /* 00h: lowest PVC number */
423 unsigned short hiPVC PACKED; /* 02h: highest PVC number */
424 unsigned short loIncomingSVC PACKED; /* 04h: lowest incoming SVC */
425 unsigned short hiIncomingSVC PACKED; /* 06h: highest incoming SVC */
426 unsigned short loTwoWaySVC PACKED; /* 08h: lowest two-way SVC */
427 unsigned short hiTwoWaySVC PACKED; /* 0Ah: highest two-way SVC */
428 unsigned short loOutgoingSVC PACKED; /* 0Ch: lowest outgoing SVC */
429 unsigned short hiOutgoingSVC PACKED; /* 0Eh: highest outgoing SVC */
430 } TX25ChanAlloc;
432 typedef struct X25ChanCfg /*------ Channel configuration -----*/
434 unsigned char type PACKED; /* 00h: channel type */
435 unsigned char txConf PACKED; /* 01h: Tx packet and window sizes */
436 unsigned char rxConf PACKED; /* 01h: Rx packet and window sizes */
437 } TX25ChanCfg;
440 * Defines for the 'type' field.
442 #define X25_PVC 0x01 /* PVC */
443 #define X25_SVC_IN 0x03 /* Incoming SVC */
444 #define X25_SVC_TWOWAY 0x07 /* Two-way SVC */
445 #define X25_SVC_OUT 0x0B /* Outgoing SVC */
447 /*----------------------------------------------------------------------------
448 * X25_READ_STATISTICS Command.
450 typedef struct X25Stats
451 { /* number of packets Tx/Rx'ed */
452 unsigned short txRestartRqst PACKED; /* 00h: Restart Request */
453 unsigned short rxRestartRqst PACKED; /* 02h: Restart Request */
454 unsigned short txRestartConf PACKED; /* 04h: Restart Confirmation */
455 unsigned short rxRestartConf PACKED; /* 06h: Restart Confirmation */
456 unsigned short txResetRqst PACKED; /* 08h: Reset Request */
457 unsigned short rxResetRqst PACKED; /* 0Ah: Reset Request */
458 unsigned short txResetConf PACKED; /* 0Ch: Reset Confirmation */
459 unsigned short rxResetConf PACKED; /* 0Eh: Reset Confirmation */
460 unsigned short txCallRequest PACKED; /* 10h: Call Request */
461 unsigned short rxCallRequest PACKED; /* 12h: Call Request */
462 unsigned short txCallAccept PACKED; /* 14h: Call Accept */
463 unsigned short rxCallAccept PACKED; /* 16h: Call Accept */
464 unsigned short txClearRqst PACKED; /* 18h: Clear Request */
465 unsigned short rxClearRqst PACKED; /* 1Ah: Clear Request */
466 unsigned short txClearConf PACKED; /* 1Ch: Clear Confirmation */
467 unsigned short rxClearConf PACKED; /* 1Eh: Clear Confirmation */
468 unsigned short txDiagnostic PACKED; /* 20h: Diagnostic */
469 unsigned short rxDiagnostic PACKED; /* 22h: Diagnostic */
470 unsigned short txRegRqst PACKED; /* 24h: Registration Request */
471 unsigned short rxRegRqst PACKED; /* 26h: Registration Request */
472 unsigned short txRegConf PACKED; /* 28h: Registration Confirm.*/
473 unsigned short rxRegConf PACKED; /* 2Ah: Registration Confirm.*/
474 unsigned short txInterrupt PACKED; /* 2Ch: Interrupt */
475 unsigned short rxInterrupt PACKED; /* 2Eh: Interrupt */
476 unsigned short txIntrConf PACKED; /* 30h: Interrupt Confirm. */
477 unsigned short rxIntrConf PACKED; /* 32h: Interrupt Confirm. */
478 unsigned short txData PACKED; /* 34h: Data */
479 unsigned short rxData PACKED; /* 36h: Data */
480 unsigned short txRR PACKED; /* 38h: RR */
481 unsigned short rxRR PACKED; /* 3Ah: RR */
482 unsigned short txRNR PACKED; /* 3Ch: RNR */
483 unsigned short rxRNR PACKED; /* 3Eh: RNR */
484 } TX25Stats;
486 /*----------------------------------------------------------------------------
487 * X25_READ_HISTORY_TABLE Command.
489 typedef struct X25EventLog
491 unsigned char type PACKED; /* 00h: transaction type */
492 unsigned short lcn PACKED; /* 01h: logical channel num */
493 unsigned char packet PACKED; /* 03h: async packet type */
494 unsigned char cause PACKED; /* 04h: X.25 cause field */
495 unsigned char diag PACKED; /* 05h: X.25 diag field */
496 TX25TimeStamp ts PACKED; /* 06h: time stamp */
497 } TX25EventLog;
500 * Defines for the 'type' field.
502 #define X25LOG_INCOMING 0x00
503 #define X25LOG_APPLICATION 0x01
504 #define X25LOG_AUTOMATIC 0x02
505 #define X25LOG_ERROR 0x04
506 #define X25LOG_TIMEOUT 0x08
507 #define X25LOG_RECOVERY 0x10
510 * Defines for the 'packet' field.
512 #define X25LOG_CALL_RQST 0x0B
513 #define X25LOG_CALL_ACCEPTED 0x0F
514 #define X25LOG_CLEAR_RQST 0x13
515 #define X25LOG_CLEAR_CONFRM 0x17
516 #define X25LOG_RESET_RQST 0x1B
517 #define X25LOG_RESET_CONFRM 0x1F
518 #define X25LOG_RESTART_RQST 0xFB
519 #define X25LOG_RESTART_COMFRM 0xFF
520 #define X25LOG_DIAGNOSTIC 0xF1
521 #define X25LOG_DTE_REG_RQST 0xF3
522 #define X25LOG_DTE_REG_COMFRM 0xF7
524 /* ---------------------------------------------------------------------------
525 * X25_TRACE_CONFIGURE Command.
527 typedef struct X25TraceCfg
529 unsigned char flags PACKED; /* 00h: trace configuration flags */
530 unsigned char timeout PACKED; /* 01h: timeout for trace delay mode*/
531 } TX25TraceCfg;
534 * Defines for the 'flags' field.
536 #define X25_TRC_ENABLE 0x01 /* bit0: '1' - trace enabled */
537 #define X25_TRC_TIMESTAMP 0x02 /* bit1: '1' - time stamping enabled*/
538 #define X25_TRC_DELAY 0x04 /* bit2: '1' - trace delay enabled */
539 #define X25_TRC_DATA 0x08 /* bit3: '1' - trace data packets */
540 #define X25_TRC_SUPERVISORY 0x10 /* bit4: '1' - trace suprvisory pkts*/
541 #define X25_TRC_ASYNCHRONOUS 0x20 /* bit5: '1' - trace asynch. packets*/
542 #define X25_TRC_HDLC 0x40 /* bit6: '1' - trace all packets */
543 #define X25_TRC_READ 0x80 /* bit7: '1' - get current config. */
545 /* ---------------------------------------------------------------------------
546 * X25_READ_TRACE_DATA Command.
548 typedef struct X25Trace /*----- Trace data structure -------*/
550 unsigned short length PACKED; /* 00h: trace data length */
551 unsigned char type PACKED; /* 02h: trace type */
552 unsigned char lost_cnt PACKED; /* 03h: N of traces lost */
553 TX25TimeStamp tstamp PACKED; /* 04h: mon/date/sec/min/hour */
554 unsigned short millisec PACKED; /* 09h: ms time stamp */
555 unsigned char data[0] PACKED; /* 0Bh: traced frame */
556 } TX25Trace;
559 * Defines for the 'type' field.
561 #define X25_TRC_TYPE_MASK 0x0F /* bits 0..3: trace type */
562 #define X25_TRC_TYPE_RX_FRAME 0x00 /* received frame trace */
563 #define X25_TRC_TYPE_TX_FRAME 0x01 /* transmitted frame */
564 #define X25_TRC_TYPE_ERR_FRAME 0x02 /* error frame */
566 #define X25_TRC_ERROR_MASK 0xF0 /* bits 4..7: error code */
567 #define X25_TRCERR_RX_ABORT 0x10 /* receive abort error */
568 #define X25_TRCERR_RX_BADCRC 0x20 /* receive CRC error */
569 #define X25_TRCERR_RX_OVERRUN 0x30 /* receiver overrun error */
570 #define X25_TRCERR_RX_TOO_LONG 0x40 /* excessive frame length error */
571 #define X25_TRCERR_TX_ABORT 0x70 /* aborted frame transmission error */
572 #define X25_TRCERR_TX_UNDERRUN 0x80 /* transmit underrun error */
574 /*****************************************************************************
575 * Following definitions describe HDLC frame and X.25 packet formats.
576 ****************************************************************************/
578 typedef struct HDLCFrame /*----- DHLC Frame Format ----------*/
580 unsigned char addr PACKED; /* address field */
581 unsigned char cntl PACKED; /* control field */
582 unsigned char data[0] PACKED;
583 } THDLCFrame;
585 typedef struct X25Pkt /*----- X.25 Packet Format ----------*/
587 unsigned char lcn_hi PACKED; /* 4 MSB of Logical Channel Number */
588 unsigned char lcn_lo PACKED; /* 8 LSB of Logical Channel Number */
589 unsigned char type PACKED;
590 unsigned char data[0] PACKED;
591 } TX25Pkt;
594 * Defines for the 'lcn_hi' field.
596 #define X25_Q_BIT_MASK 0x80 /* Data Qualifier Bit mask */
597 #define X25_D_BIT_MASK 0x40 /* Delivery Confirmation Bit mask */
598 #define X25_M_BITS_MASK 0x30 /* Modulo Bits mask */
599 #define X25_LCN_MSB_MASK 0x0F /* LCN most significant bits mask */
602 * Defines for the 'type' field.
604 #define X25PKT_DATA 0x01 /* Data packet mask */
605 #define X25PKT_SUPERVISORY 0x02 /* Supervisory packet mask */
606 #define X25PKT_CALL_RQST 0x0B /* Call Request/Incoming */
607 #define X25PKT_CALL_ACCEPTED 0x0F /* Call Accepted/Connected */
608 #define X25PKT_CLEAR_RQST 0x13 /* Clear Request/Indication */
609 #define X25PKT_CLEAR_CONFRM 0x17 /* Clear Confirmation */
610 #define X25PKT_RESET_RQST 0x1B /* Reset Request/Indication */
611 #define X25PKT_RESET_CONFRM 0x1F /* Reset Confirmation */
612 #define X25PKT_RESTART_RQST 0xFB /* Restart Request/Indication */
613 #define X25PKT_RESTART_CONFRM 0xFF /* Restart Confirmation */
614 #define X25PKT_INTERRUPT 0x23 /* Interrupt */
615 #define X25PKT_INTERRUPT_CONFRM 0x27 /* Interrupt Confirmation */
616 #define X25PKT_DIAGNOSTIC 0xF1 /* Diagnostic */
617 #define X25PKT_REGISTR_RQST 0xF3 /* Registration Request */
618 #define X25PKT_REGISTR_CONFRM 0xF7 /* Registration Confirmation */
619 #define X25PKT_RR_MASKED 0x01 /* Receive Ready packet after masking */
620 #define X25PKT_RNR_MASKED 0x05 /* Receive Not Ready after masking */
622 #ifdef _MSC_
623 # pragma pack()
624 #endif
625 #endif /* _SDLA_X25_H */