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