Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

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