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