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 
23 typedef 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 
32 struct 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