1/*
2 * Copyright (C) Eicon Technology Corporation, 2000.
3 *
4 * Eicon File Revision :    1.2
5 *
6 * This software may be used and distributed according to the terms
7 * of the GNU General Public License, incorporated herein by reference.
8 *
9 */
10
11#ifndef PC_H_INCLUDED
12#define PC_H_INCLUDED
13
14
15#define byte unsigned char
16#define word unsigned short
17#define dword unsigned long
18
19/*------------------------------------------------------------------*/
20/* buffer definition                                                */
21/*------------------------------------------------------------------*/
22
23typedef struct {
24  word length;          /* length of data/parameter field           */
25  byte P[270];          /* data/parameter field                     */
26} PBUFFER;
27
28/*------------------------------------------------------------------*/
29/* dual port ram structure                                          */
30/*------------------------------------------------------------------*/
31
32struct dual
33{
34  byte Req;             /* request register                         */
35  byte ReqId;           /* request task/entity identification       */
36  byte Rc;              /* return code register                     */
37  byte RcId;            /* return code task/entity identification   */
38  byte Ind;             /* Indication register                      */
39  byte IndId;           /* Indication task/entity identification    */
40  byte IMask;           /* Interrupt Mask Flag                      */
41  byte RNR;             /* Receiver Not Ready (set by PC)           */
42  byte XLock;           /* XBuffer locked Flag                      */
43  byte Int;             /* ISDN-S interrupt                         */
44  byte ReqCh;           /* Channel field for layer-3 Requests       */
45  byte RcCh;            /* Channel field for layer-3 Returncodes    */
46  byte IndCh;           /* Channel field for layer-3 Indications    */
47  byte MInd;            /* more data indication field               */
48  word MLength;         /* more data total packet length            */
49  byte ReadyInt;        /* request field for ready interrupt        */
50  byte SWReg;           /* Software register for special purposes   */
51  byte Reserved[11];    /* reserved space                           */
52  byte InterfaceType;   /* interface type 1=16K interface           */
53  word Signature;       /* ISDN-S adapter Signature (GD)            */
54  PBUFFER XBuffer;      /* Transmit Buffer                          */
55  PBUFFER RBuffer;      /* Receive Buffer                           */
56};
57
58/*------------------------------------------------------------------*/
59/* SWReg Values (0 means no command)                                */
60/*------------------------------------------------------------------*/
61#define SWREG_DIE_WITH_LEDON  0x01
62#define SWREG_HALT_CPU        0x02 /* Push CPU into a while(1) loop */
63
64/*------------------------------------------------------------------*/
65/* Id Fields Coding                                                 */
66/*------------------------------------------------------------------*/
67
68#define ID_MASK 0xe0    /* Mask for the ID field                    */
69#define GL_ERR_ID 0x1f  /* ID for error reporting on global requests*/
70
71#define DSIG_ID  0x00   /* ID for D-channel signaling               */
72#define NL_ID    0x20   /* ID for network-layer access (B or D)     */
73#define BLLC_ID  0x60   /* ID for B-channel link level access       */
74#define TASK_ID  0x80   /* ID for dynamic user tasks                */
75#define TIMER_ID 0xa0   /* ID for timer task                        */
76#define TEL_ID   0xc0   /* ID for telephone support                 */
77#define MAN_ID   0xe0   /* ID for management                        */
78
79/*------------------------------------------------------------------*/
80/* ASSIGN and REMOVE requests are the same for all entities         */
81/*------------------------------------------------------------------*/
82
83#define ASSIGN  0x01
84#define UREMOVE  0xfe   /* without returncode */
85#define REMOVE  0xff
86
87/*------------------------------------------------------------------*/
88/* Timer Interrupt Task Interface                                   */
89/*------------------------------------------------------------------*/
90
91#define ASSIGN_TIM 0x01
92#define REMOVE_TIM 0xff
93
94/*------------------------------------------------------------------*/
95/* dynamic user task interface                                      */
96/*------------------------------------------------------------------*/
97
98#define ASSIGN_TSK 0x01
99#define REMOVE_TSK 0xff
100
101#define LOAD 0xf0
102#define RELOCATE 0xf1
103#define START 0xf2
104#define LOAD2 0xf3
105#define RELOCATE2 0xf4
106
107/*------------------------------------------------------------------*/
108/* dynamic user task messages                                       */
109/*------------------------------------------------------------------*/
110
111#define TSK_B2          0x0000
112#define TSK_WAKEUP      0x2000
113#define TSK_TIMER       0x4000
114#define TSK_TSK         0x6000
115#define TSK_PC          0xe000
116
117/*------------------------------------------------------------------*/
118/* LL management primitives                                         */
119/*------------------------------------------------------------------*/
120
121#define ASSIGN_LL 1     /* assign logical link                      */
122#define REMOVE_LL 0xff  /* remove logical link                      */
123
124/*------------------------------------------------------------------*/
125/* LL service primitives                                            */
126/*------------------------------------------------------------------*/
127
128#define LL_UDATA 1      /* link unit data request/indication        */
129#define LL_ESTABLISH 2  /* link establish request/indication        */
130#define LL_RELEASE 3    /* link release request/indication          */
131#define LL_DATA 4       /* data request/indication                  */
132#define LL_LOCAL 5      /* switch to local operation (COM only)     */
133#define LL_DATA_PEND 5  /* data pending indication (SDLC SHM only)  */
134#define LL_REMOTE 6     /* switch to remote operation (COM only)    */
135#define LL_TEST 8       /* link test request                        */
136#define LL_MDATA 9      /* more data request/indication             */
137#define LL_BUDATA 10    /* broadcast unit data request/indication   */
138#define LL_XID 12       /* XID command request/indication           */
139#define LL_XID_R 13     /* XID response request/indication          */
140
141/*------------------------------------------------------------------*/
142/* NL service primitives                                            */
143/*------------------------------------------------------------------*/
144
145#define N_MDATA         1       /* more data to come REQ/IND        */
146#define N_CONNECT       2       /* OSI N-CONNECT REQ/IND            */
147#define N_CONNECT_ACK   3       /* OSI N-CONNECT CON/RES            */
148#define N_DISC          4       /* OSI N-DISC REQ/IND               */
149#define N_DISC_ACK      5       /* OSI N-DISC CON/RES               */
150#define N_RESET         6       /* OSI N-RESET REQ/IND              */
151#define N_RESET_ACK     7       /* OSI N-RESET CON/RES              */
152#define N_DATA          8       /* OSI N-DATA REQ/IND               */
153#define N_EDATA         9       /* OSI N-EXPEDITED DATA REQ/IND     */
154#define N_UDATA         10      /* OSI D-UNIT-DATA REQ/IND          */
155#define N_BDATA         11      /* BROADCAST-DATA REQ/IND           */
156#define N_DATA_ACK      12      /* data ack ind for D-bit procedure */
157#define N_EDATA_ACK     13      /* data ack ind for INTERRUPT       */
158
159#define N_Q_BIT         0x10    /* Q-bit for req/ind                */
160#define N_M_BIT         0x20    /* M-bit for req/ind                */
161#define N_D_BIT         0x40    /* D-bit for req/ind                */
162
163/*------------------------------------------------------------------*/
164/* Signaling management primitives                                  */
165/*------------------------------------------------------------------*/
166
167#define ASSIGN_SIG 1    /* assign signaling task                    */
168#define UREMOVE_SIG 0xfe /* remove signaling task without returncode */
169#define REMOVE_SIG 0xff /* remove signaling task                    */
170
171/*------------------------------------------------------------------*/
172/* Signaling service primitives                                     */
173/*------------------------------------------------------------------*/
174
175#define CALL_REQ 1      /* call request                             */
176#define CALL_CON 1      /* call confirmation                        */
177#define CALL_IND 2      /* incoming call connected                  */
178#define LISTEN_REQ 2    /* listen request                           */
179#define HANGUP 3        /* hangup request/indication                */
180#define SUSPEND 4       /* call suspend request/confirm             */
181#define RESUME 5        /* call resume request/confirm              */
182#define SUSPEND_REJ 6   /* suspend rejected indication              */
183#define USER_DATA 8     /* user data for user to user signaling     */
184#define CONGESTION 9    /* network congestion indication            */
185#define INDICATE_REQ 10 /* request to indicate an incoming call     */
186#define INDICATE_IND 10 /* indicates that there is an incoming call */
187#define CALL_RES 11     /* accept an incoming call                  */
188#define CALL_ALERT 12   /* send ALERT for incoming call             */
189#define INFO_REQ 13     /* INFO request                             */
190#define INFO_IND 13     /* INFO indication                          */
191#define REJECT 14       /* reject an incoming call                  */
192#define RESOURCES 15    /* reserve B-Channel hardware resources     */
193#define TEL_CTRL 16     /* Telephone control request/indication     */
194#define STATUS_REQ 17   /* Request D-State (returned in INFO_IND)   */
195#define FAC_REG_REQ 18  /* connection idependent fac registration   */
196#define FAC_REG_ACK 19  /* fac registration acknowledge             */
197#define FAC_REG_REJ 20  /* fac registration reject                  */
198#define CALL_COMPLETE 21/* send a CALL_PROC for incoming call       */
199#define FACILITY_REQ 22 /* send a Facility Message type             */
200#define FACILITY_IND 22 /* Facility Message type indication         */
201#define SIG_CTRL     29 /* Control for signalling hardware          */
202#define DSP_CTRL     30 /* Control for DSPs                         */
203#define LAW_REQ      31 /* Law config request for (returns info_i)  */
204
205
206/*------------------------------------------------------------------*/
207/* management service primitives                                    */
208/*------------------------------------------------------------------*/
209
210#define MAN_READ        2
211#define MAN_WRITE       3
212#define MAN_EXECUTE     4
213#define MAN_EVENT_ON    5
214#define MAN_EVENT_OFF   6
215#define MAN_LOCK        7
216#define MAN_UNLOCK      8
217
218#define MAN_INFO_IND    2
219#define MAN_EVENT_IND   3
220#define MAN_TRACE_IND   4
221
222#define MAN_ESC         0x80
223
224/*------------------------------------------------------------------*/
225/* return code coding                                               */
226/*------------------------------------------------------------------*/
227
228#define UNKNOWN_COMMAND         0x01    /* unknown command          */
229#define WRONG_COMMAND           0x02    /* wrong command            */
230#define WRONG_ID                0x03    /* unknown task/entity id   */
231#define WRONG_CH                0x04    /* wrong task/entity id     */
232#define UNKNOWN_IE              0x05    /* unknown information el.  */
233#define WRONG_IE                0x06    /* wrong information el.    */
234#define OUT_OF_RESOURCES        0x07    /* ISDN-S card out of res.  */
235#define ADAPTER_DEAD            0x08    /* ISDN card CPU halted     */
236#define N_FLOW_CONTROL          0x10    /* Flow-Control, retry      */
237#define ASSIGN_RC               0xe0    /* ASSIGN acknowledgement   */
238#define ASSIGN_OK               0xef    /* ASSIGN OK                */
239#define OK_FC                   0xfc    /* Flow-Control RC          */
240#define READY_INT               0xfd    /* Ready interrupt          */
241#define TIMER_INT               0xfe    /* timer interrupt          */
242#define OK                      0xff    /* command accepted         */
243
244/*------------------------------------------------------------------*/
245/* information elements                                             */
246/*------------------------------------------------------------------*/
247
248#define SHIFT 0x90              /* codeset shift                    */
249#define MORE 0xa0               /* more data                        */
250#define CL 0xb0                 /* congestion level                 */
251
252        /* codeset 0                                                */
253
254#define BC  0x04                /* Bearer Capability                */
255#define CAU 0x08                /* cause                            */
256#define CAD 0x0c                /* Connected address                */
257#define CAI 0x10                /* call identity                    */
258#define CHI 0x18                /* channel identification           */
259#define LLI 0x19                /* logical link id                  */
260#define CHA 0x1a                /* charge advice                    */
261#define DT  0x29                /* ETSI date/time                   */
262#define KEY 0x2c                /* keypad information element       */
263#define FTY 0x1c                /* facility information element     */
264#define DSP 0x28                /* display                          */
265#define OAD 0x6c                /* origination address              */
266#define OSA 0x6d                /* origination sub-address          */
267#define CPN 0x70                /* called party number              */
268#define DSA 0x71                /* destination sub-address          */
269#define RDX 0x73                /* redirected number extended       */
270#define RDN 0x74                /* redirected number                */
271#define LLC 0x7c                /* low layer compatibility          */
272#define HLC 0x7d                /* high layer compatibility         */
273#define UUI 0x7e                /* user user information            */
274#define ESC 0x7f                /* escape extension                 */
275
276#define DLC 0x20                /* data link layer configuration    */
277#define NLC 0x21                /* network layer configuration      */
278
279        /* codeset 6                                                */
280
281#define SIN 0x01                /* service indicator                */
282#define CIF 0x02                /* charging information             */
283#define DATE 0x03               /* date                             */
284#define CPS 0x07                /* called party status              */
285
286/*------------------------------------------------------------------*/
287/* TEL_CTRL contents                                                */
288/*------------------------------------------------------------------*/
289
290#define RING_ON         0x01
291#define RING_OFF        0x02
292#define HANDS_FREE_ON   0x03
293#define HANDS_FREE_OFF  0x04
294#define ON_HOOK         0x80
295#define OFF_HOOK        0x90
296
297#endif
298