diff --git a/capi20/Makefile.am b/capi20/Makefile.am index 36665ecb..f1a12fc7 100644 --- a/capi20/Makefile.am +++ b/capi20/Makefile.am @@ -5,7 +5,7 @@ CLEANFILES = *~ comperr MAINTAINERCLEANFILES = configure aclocal.m4 Makefile.in config.h.in stamp-h.in -include_HEADERS = capi20.h +include_HEADERS = capi20.h capiutils.h lib_LTLIBRARIES = libcapi20.la libcapi20_la_SOURCES = capi20.c capifunc.c convert.c diff --git a/capi20/Makefile.in b/capi20/Makefile.in index e2e6e48e..3f02f91c 100644 --- a/capi20/Makefile.in +++ b/capi20/Makefile.in @@ -78,7 +78,7 @@ AUTOMAKE_OPTIONS = no-dependencies foreign CLEANFILES = *~ comperr MAINTAINERCLEANFILES = configure aclocal.m4 Makefile.in config.h.in -include_HEADERS = capi20.h +include_HEADERS = capi20.h capiutils.h lib_LTLIBRARIES = libcapi20.la libcapi20_la_SOURCES = capi20.c capifunc.c convert.c @@ -283,7 +283,7 @@ distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ - cp -pr $$/$$file $(distdir)/$$file; \ + cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ diff --git a/capi20/capi20.h b/capi20/capi20.h index 44b2ed5e..4f9db6ca 100644 --- a/capi20/capi20.h +++ b/capi20/capi20.h @@ -1,48 +1,23 @@ -#ifndef __CAPI20_H -#define __CAPI20_H +/* + * $Id$ + * + * $Log$ + */ +#ifndef __CAPI20_H__ +#define __CAPI20_H__ -#include #include -#include #ifdef __cplusplus extern "C" { #endif -/*----- errornumbers -----*/ - -#define CapiToManyAppls 0x1001 -#define CapiLogBlkSizeToSmall 0x1002 -#define CapiBuffExeceeds64k 0x1003 -#define CapiMsgBufSizeToSmall 0x1004 -#define CapiAnzLogConnNotSupported 0x1005 -#define CapiRegReserved 0x1006 -#define CapiRegBusy 0x1007 -#define CapiRegOSResourceErr 0x1008 -#define CapiRegNotInstalled 0x1009 -#define CapiRegCtrlerNotSupportExtEquip 0x100a -#define CapiRegCtrlerOnlySupportExtEquip 0x100b - - -#define CapiNoError 0x0000 -#define CapiIllAppNr 0x1101 -#define CapiIllCmdOrSubcmdOrMsgToSmall 0x1102 -#define CapiSendQueueFull 0x1103 -#define CapiReceiveQueueEmpty 0x1104 -#define CapiReceiveOverflow 0x1105 -#define CapiUnknownNotPar 0x1106 -#define CapiMsgBusy 0x1107 -#define CapiMsgOSResourceErr 0x1108 -#define CapiMsgNotInstalled 0x1109 -#define CapiMsgCtrlerNotSupportExtEquip 0x110a -#define CapiMsgCtrlerOnlySupportExtEquip 0x110b - /* standard CAPI2.0 functions */ unsigned capi20_register (unsigned MaxLogicalConnection, - unsigned MaxBDataBlocks, - unsigned MaxBDataLen, - unsigned *ApplIDp); + unsigned MaxBDataBlocks, + unsigned MaxBDataLen, + unsigned *ApplIDp); unsigned capi20_release (unsigned ApplID); @@ -64,917 +39,14 @@ unsigned capi20_isinstalled (void); int capi20_fileno(unsigned ApplID); -#define CAPI20_REGISTER capi20_register -#define CAPI20_RELEASE capi20_release -#define CAPI20_PUT_MESSAGE capi20_put_message -#define CAPI20_GET_MESSAGE capi20_get_message -#define CAPI20_WaitforMessage capi20_waitformessage -#define CAPI20_GET_MANUFACTURER capi20_get_manufacturer -#define CAPI20_GET_VERSION capi20_get_version -#define CAPI20_GET_SERIAL_NUMBER capi20_get_serial_number -#define CAPI20_GET_PROFILE capi20_get_profile -#define CAPI20_ISINSTALLED capi20_isinstalled - /* end standard CAPI2.0 functions */ -#define CAPI_REGISTER_ERROR unsigned -#define MESSAGE_EXCHANGE_ERROR unsigned - - -typedef unsigned char *CAPI_MESSAGE; -typedef __uint8_t _cbyte; -typedef __uint16_t _cword; -typedef __uint32_t _cdword; -typedef __uint64_t _cqword; -typedef CAPI_MESSAGE _cstruct; -typedef enum { CAPI_COMPOSE = 0, CAPI_DEFAULT = 1 } _cmstruct; - -/*----- CAPI commands -----*/ - -#define CAPI_ALERT 0x01 -#define CAPI_CONNECT 0x02 -#define CAPI_CONNECT_ACTIVE 0x03 -#define CAPI_CONNECT_B3_ACTIVE 0x83 -#define CAPI_CONNECT_B3 0x82 -#define CAPI_CONNECT_B3_T90_ACTIVE 0x88 -#define CAPI_DATA_B3 0x86 -#define CAPI_DISCONNECT_B3 0x84 -#define CAPI_DISCONNECT 0x04 -#define CAPI_FACILITY 0x80 -#define CAPI_INFO 0x08 -#define CAPI_LISTEN 0x05 -#define CAPI_MANUFACTURER 0xff -#define CAPI_RESET_B3 0x87 -#define CAPI_SELECT_B_PROTOCOL 0x41 - -/*----- CAPI subcommands -----*/ - -#define CAPI_REQ 0x80 -#define CAPI_CONF 0x81 -#define CAPI_IND 0x82 -#define CAPI_RESP 0x83 - -/* - * The _cmsg structure contains all possible CAPI 2.0 parameter. - * All parameters are stored here first. The function capi_cmsg2message() - * assembles the parameter and builds CAPI2.0 conform messages. - * capi_message2cmsg disassembles CAPI 2.0 messages and stores the - * parameter in the _cmsg structure - */ - -typedef struct { - /* Header */ - _cword ApplId; - _cbyte Command; - _cbyte Subcommand; - _cword Messagenumber; - - /* Parameter */ - union { - _cdword adrController; - _cdword adrPLCI; - _cdword adrNCCI; - } adr; - - _cmstruct AdditionalInfo; - _cstruct B1configuration; - _cword B1protocol; - _cstruct B2configuration; - _cword B2protocol; - _cstruct B3configuration; - _cword B3protocol; - _cstruct BC; - _cstruct BChannelinformation; - _cmstruct BProtocol; - _cstruct CalledPartyNumber; - _cstruct CalledPartySubaddress; - _cstruct CallingPartyNumber; - _cstruct CallingPartySubaddress; - _cdword CIPmask; - _cdword CIPmask2; - _cword CIPValue; - _cdword Class; - _cstruct ConnectedNumber; - _cstruct ConnectedSubaddress; - _cdword Data32; - _cqword Data64; - _cword DataHandle; - _cword DataLength; - _cstruct FacilityConfirmationParameter; - _cstruct Facilitydataarray; - _cstruct FacilityIndicationParameter; - _cstruct FacilityRequestParameter; - _cstruct FacilityResponseParameters; - _cword FacilitySelector; - _cword Flags; - _cdword Function; - _cstruct HLC; - _cword Info; - _cstruct InfoElement; - _cdword InfoMask; - _cword InfoNumber; - _cstruct Keypadfacility; - _cstruct LLC; - _cstruct ManuData; - _cdword ManuID; - _cstruct NCPI; - _cword Reason; - _cword Reason_B3; - _cword Reject; - _cstruct Useruserdata; - unsigned char *Data; - - /* intern */ - unsigned l,p; - unsigned char *par; - unsigned char *m; -} _cmsg; - - -#define capi_cmsg2message capi20_cmsg2message -#define capi_message2cmsg capi20_message2cmsg - -unsigned capi20_cmsg2message(_cmsg *cmsg, unsigned char *msg); - -unsigned capi20_message2cmsg (_cmsg *cmsg, unsigned char *msg); - -/* - * capi20_put_cmsg() works like capi20_put_message() but it converts the - * _cmsg * first with capi20_cmsg2message(). Possible errors from - * capi20_put_message() will be returned. - */ - -#define CAPI_PUT_CMSG capi20_put_cmsg -#define capi_put_cmsg capi20_put_cmsg - -unsigned capi20_put_cmsg(_cmsg *cmsg); - -/* - * capi20_get_cmsg() works like capi20_get_message() and converts the - * CAPI message * to a _cmsg with capi20_message2cmsg(). - * Possible errors from capi20_get_message() will be returned. - */ - -#define CAPI_GET_CMSG capi20_get_cmsg -#define capi_get_cmsg capi20_get_cmsg - -unsigned capi20_get_cmsg(_cmsg *cmsg, unsigned applid); - -/* - * capi20_cmsg_header() fills the _cmsg structure with default values, - * so only parameter with non default values must be changed before - * sending the message. - */ - -#define CAPI_CMSG_HEADER capi20_cmsg_header -#define capi_cmsg_header capi20_cmsg_header - -unsigned capi20_cmsg_header (_cmsg *cmsg, unsigned _ApplId, _cbyte _Command, _cbyte _Subcommand, _cword _Messagenumber, _cdword _Controller); - -/* - * capi20_cmsg_answer() is used to answer indications. It changes the header - * of an indication to a response, and leaves all other parameters the same - */ - -#define capi_cmsg_answer capi20_cmsg_answer - -unsigned capi20_cmsg_answer (_cmsg *cmsg); - -/*----- defines to access specific parameter -----*/ - -#define ALERT_REQ_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define ALERT_REQ_ADDITIONALINFO(x) ((x)->AdditionalInfo) - /* Additional info elements */ -#define ALERT_REQ_BCHANNELINFORMATION(x) ((x)->BChannelinformation) -#define ALERT_REQ_KEYPADFACILITY(x) ((x)->Keypadfacility) - /* coded according to ETS 300 102-1 / Q.931 */ -#define ALERT_REQ_USERUSERDATA(x) ((x)->Useruserdata) - /* coded according to ETS 300 102-1 / Q.931 */ -#define ALERT_REQ_FACILITYDATAARRAY(x) ((x)->Facilitydataarray) - /* which is used to transfer additional parameters coded */ - /* according to ETS 300 102-1 / Q.931 starting from octet 1. */ - /* This field is used to transport one or more complete facility */ - /* data information elements. */ -#define ALERT_CONF_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define ALERT_CONF_INFO(x) ((x)->Info) - /* 0: alert initiated */ - /* 0x0003: alert already sent by another application */ - /* 0x2001: message not supported in current state */ - /* 0x2002: illegal PLCI */ - /* 0x2007: illegal message parameter coding */ -#define CONNECT_REQ_CONTROLLER(x) ((x)->adr.adrController) -#define CONNECT_REQ_CIPVALUE(x) ((x)->CIPValue) - /* Compatibility Information Profile */ -#define CONNECT_REQ_CALLEDPARTYNUMBER(x) ((x)->CalledPartyNumber) - /* Called party number */ -#define CONNECT_REQ_CALLINGPARTYNUMBER(x) ((x)->CallingPartyNumber) - /* Calling party number */ -#define CONNECT_REQ_CALLEDPARTYSUBADDRESS(x) ((x)->CalledPartySubaddress) - /* Called party subaddress */ -#define CONNECT_REQ_CALLINGPARTYSUBADDRESS(x) ((x)->CallingPartySubaddress) - /* Calling party subaddress */ -#define CONNECT_REQ_BPROTOCOL(x) ((x)->BProtocol) - /* B protocol to be used */ -#define CONNECT_REQ_B1PROTOCOL(x) ((x)->B1protocol) - /* Physical layer and framing */ -#define CONNECT_REQ_B2PROTOCOL(x) ((x)->B2protocol) - /* Data link layer */ -#define CONNECT_REQ_B3PROTOCOL(x) ((x)->B3protocol) - /* Network layer */ -#define CONNECT_REQ_B1CONFIGURATION(x) ((x)->B1configuration) - /* Physical layer and framing parameter */ -#define CONNECT_REQ_B2CONFIGURATION(x) ((x)->B2configuration) - /* Data link layer parameter */ -#define CONNECT_REQ_B3CONFIGURATION(x) ((x)->B3configuration) - /* Network layer parameter */ -#define CONNECT_REQ_BC(x) ((x)->BC) - /* Bearer Capability */ -#define CONNECT_REQ_LLC(x) ((x)->LLC) - /* Low Layer Compatibility */ -#define CONNECT_REQ_HLC(x) ((x)->HLC) - /* High Layer Compatibility */ -#define CONNECT_REQ_ADDITIONALINFO(x) ((x)->AdditionalInfo) - /* Additional information elements */ -#define CONNECT_REQ_BCHANNELINFORMATION(x) ((x)->BChannelinformation) -#define CONNECT_REQ_KEYPADFACILITY(x) ((x)->Keypadfacility) - /* coded according to ETS 300 102-1 / Q.931 */ -#define CONNECT_REQ_USERUSERDATA(x) ((x)->Useruserdata) - /* coded according to ETS 300 102-1 / Q.931 */ -#define CONNECT_REQ_FACILITYDATAARRAY(x) ((x)->Facilitydataarray) - /* which is used to transfer additional parameters coded */ - /* according to ETS 300 102-1 / Q.931 starting from octet 1. */ - /* This field is used to transport one or more complete facility */ - /* data information elements. */ -#define CONNECT_CONF_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define CONNECT_CONF_INFO(x) ((x)->Info) - /* 0: connect initiated */ - /* 0x2002: illegal controller */ - /* 0x2003: out of PLCI */ - /* 0x2007: illegal message parameter coding */ - /* 0x3001: B1 protocol not supported */ - /* 0x3002: B2 protocol not supported */ - /* 0x3003: B3 protocol not supported */ - /* 0x3004: B1 protocol parameter not supported */ - /* 0x3005: B2 protocol parameter not supported */ - /* 0x3006: B3 protocol parameter not supported */ - /* 0x3007: B protocol combination not supported */ - /* 0x300A: CIP Value unknown */ -#define CONNECT_IND_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define CONNECT_IND_CIPVALUE(x) ((x)->CIPValue) - /* Compatibility Information Profile */ -#define CONNECT_IND_CALLEDPARTYNUMBER(x) ((x)->CalledPartyNumber) - /* Called party number */ -#define CONNECT_IND_CALLINGPARTYNUMBER(x) ((x)->CallingPartyNumber) - /* Calling party number */ -#define CONNECT_IND_CALLEDPARTYSUBADDRESS(x) ((x)->CalledPartySubaddress) - /* Called party subaddress */ -#define CONNECT_IND_CALLINGPARTYSUBADDRESS(x) ((x)->CallingPartySubaddress) - /* Calling party subaddress */ -#define CONNECT_IND_BC(x) ((x)->BC) - /* Bearer compatibility */ -#define CONNECT_IND_LLC(x) ((x)->LLC) - /* Low Layer Compatibility */ -#define CONNECT_IND_HLC(x) ((x)->HLC) - /* High Layer Compatibility */ -#define CONNECT_IND_ADDITIONALINFO(x) ((x)->AdditionalInfo) - /* Additional information elements */ -#define CONNECT_IND_BCHANNELINFORMATION(x) ((x)->BChannelinformation) -#define CONNECT_IND_KEYPADFACILITY(x) ((x)->Keypadfacility) - /* coded according to ETS 300 102-1 / Q.931 */ -#define CONNECT_IND_USERUSERDATA(x) ((x)->Useruserdata) - /* coded according to ETS 300 102-1 / Q.931 */ -#define CONNECT_IND_FACILITYDATAARRAY(x) ((x)->Facilitydataarray) - /* which is used to transfer additional parameters coded */ - /* according to ETS 300 102-1 / Q.931 starting from octet 1. */ - /* This field is used to transport one or more complete facility */ - /* data information elements. */ -#define CONNECT_RESP_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define CONNECT_RESP_REJECT(x) ((x)->Reject) - /* 0: accept call */ - /* 1: ignore call */ - /* 2: reject call, normal call clearing */ - /* 3: reject call, user busy */ - /* 4: reject call, requestet circuit/channel not available */ - /* 5: reject call, facility rejected */ - /* 6: reject call, channel unacceptable */ - /* 7: reject call, incompatible destination */ - /* 8: reject call, destination out of order */ -#define CONNECT_RESP_BPROTOCOL(x) ((x)->BProtocol) - /* B protocol to be used */ -#define CONNECT_RESP_B1PROTOCOL(x) ((x)->B1protocol) - /* Physical layer and framing */ -#define CONNECT_RESP_B2PROTOCOL(x) ((x)->B2protocol) - /* Data link layer */ -#define CONNECT_RESP_B3PROTOCOL(x) ((x)->B3protocol) - /* Network layer */ -#define CONNECT_RESP_B1CONFIGURATION(x) ((x)->B1configuration) - /* Physical layer and framing parameter */ -#define CONNECT_RESP_B2CONFIGURATION(x) ((x)->B2configuration) - /* Data link layer parameter */ -#define CONNECT_RESP_B3CONFIGURATION(x) ((x)->B3configuration) - /* Network layer parameter */ -#define CONNECT_RESP_CONNECTEDNUMBER(x) ((x)->ConnectedNumber) - /* Connected number */ -#define CONNECT_RESP_CONNECTEDSUBADDRESS(x) ((x)->ConnectedSubaddress) - /* Connected subaddress */ -#define CONNECT_RESP_LLC(x) ((x)->LLC) - /* Low Layer Compatibility */ -#define CONNECT_RESP_ADDITIONALINFO(x) ((x)->AdditionalInfo) - /* Additional information elements */ -#define CONNECT_RESP_BCHANNELINFORMATION(x) ((x)->BChannelinformation) -#define CONNECT_RESP_KEYPADFACILITY(x) ((x)->Keypadfacility) - /* coded according to ETS 300 102-1 / Q.931 */ -#define CONNECT_RESP_USERUSERDATA(x) ((x)->Useruserdata) - /* coded according to ETS 300 102-1 / Q.931 */ -#define CONNECT_RESP_FACILITYDATAARRAY(x) ((x)->Facilitydataarray) - /* which is used to transfer additional parameters coded */ - /* according to ETS 300 102-1 / Q.931 starting from octet 1. */ - /* This field is used to transport one or more complete facility */ - /* data information elements. */ -#define CONNECT_ACTIVE_IND_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define CONNECT_ACTIVE_IND_CONNECTEDNUMBER(x) ((x)->ConnectedNumber) - /* Connected number */ -#define CONNECT_ACTIVE_IND_CONNECTEDSUBADDRESS(x) ((x)->ConnectedSubaddress) - /* Connected subaddress */ -#define CONNECT_ACTIVE_IND_LLC(x) ((x)->LLC) - /* Low Layer Compatibility */ -#define CONNECT_ACTIVE_RESP_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define CONNECT_B3_ACTIVE_IND_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define CONNECT_B3_ACTIVE_IND_NCPI(x) ((x)->NCPI) - /* Network Control Protocol Information */ -#define CONNECT_B3_ACTIVE_RESP_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define CONNECT_B3_REQ_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define CONNECT_B3_REQ_NCPI(x) ((x)->NCPI) - /* Network Control Protocol Information */ -#define CONNECT_B3_CONF_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define CONNECT_B3_CONF_INFO(x) ((x)->Info) - /* 0: connect initiated */ - /* 0x0001: NCPI not supported by current protocol, NCPI ignored */ - /* 0x2001: message not supported in current state */ - /* 0x2002: illegal PLCI */ - /* 0x2004: out of NCCI */ - /* 0x3008: NCPI not supported */ -#define CONNECT_B3_IND_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define CONNECT_B3_IND_NCPI(x) ((x)->NCPI) - /* Network Control Protocol Information */ -#define CONNECT_B3_RESP_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define CONNECT_B3_RESP_REJECT(x) ((x)->Reject) - /* 0: accept call */ - /* 2: reject call, normal call clearing */ -#define CONNECT_B3_RESP_NCPI(x) ((x)->NCPI) - /* Network Control Protocol Information */ -#define CONNECT_B3_T90_ACTIVE_IND_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define CONNECT_B3_T90_ACTIVE_IND_NCPI(x) ((x)->NCPI) - /* Network Control Protocol Information */ -#define CONNECT_B3_T90_ACTIVE_RESP_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define DATA_B3_REQ_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define DATA_B3_REQ_DATA(x) ((x)->Data) - /* Pointer to the data to be sent */ -#define DATA_B3_REQ_DATALENGTH(x) ((x)->DataLength) - /* Size of data area to be sent */ -#define DATA_B3_REQ_DATAHANDLE(x) ((x)->DataHandle) - /* Referenced in DATA_B3_CONF */ -#define DATA_B3_REQ_FLAGS(x) ((x)->Flags) - /* [0]: qualifier bit */ - /* [1]: more data bit */ - /* [2]: delivery confirmation bit */ - /* [3]: expedited data */ - /* [4] to [15]: reserved */ -#define DATA_B3_CONF_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define DATA_B3_CONF_DATAHANDLE(x) ((x)->DataHandle) - /* Identifies the data area of corresponding DATA_B3_REQ */ -#define DATA_B3_CONF_INFO(x) ((x)->Info) - /* 0: data transmission initiated */ - /* 0x0002: flags not supported by current protocol, flags ignored */ - /* 0x2001: message not supported in current state */ - /* 0x2002: illegal NCCI */ - /* 0x2007: illegal message parameter coding */ - /* 0x300A: flags not supported (reserved bits) */ - /* 0x300C: data length not supported by current protocol */ -#define DATA_B3_IND_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define DATA_B3_IND_DATA(x) ((x)->Data) - /* Pointer to data received */ -#define DATA_B3_IND_DATALENGTH(x) ((x)->DataLength) - /* Size of data area received */ -#define DATA_B3_IND_DATAHANDLE(x) ((x)->DataHandle) - /* handle to data area, referenced in DATA_B3_RESP */ -#define DATA_B3_IND_FLAGS(x) ((x)->Flags) - /* 0: qualifier bit */ - /* 1: more-data bit */ - /* 2: delivery confirmation bit */ - /* 3: expedited data */ - /* 4 to 14: reserved */ - /* [15]: framing error bit, data may be invalid (only with corresponding B2 protocol) */ -#define DATA_B3_RESP_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define DATA_B3_RESP_DATAHANDLE(x) ((x)->DataHandle) - /* Data area reference in corresponding DATA_B3_IND */ -#define DISCONNECT_B3_REQ_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define DISCONNECT_B3_REQ_NCPI(x) ((x)->NCPI) - /* Network Control Protocol Information */ -#define DISCONNECT_B3_CONF_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define DISCONNECT_B3_CONF_INFO(x) ((x)->Info) - /* 0: disconnect initiated */ - /* 0x0001: NCPI not supported by current protocol, NCPI ignored */ - /* 0x2001: message not supported in current state */ - /* 0x2002: illegal NCCI */ - /* 0x2007: illegal message parameter coding */ - /* 0x3008: NCPI not supported */ -#define DISCONNECT_B3_IND_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define DISCONNECT_B3_IND_REASON_B3(x) ((x)->Reason_B3) - /* 0: clearing according to protocol */ - /* 0x3301: protocol error layer 1 */ - /* 0x3302: protocol error layer 2 */ - /* 0x3303: protocol error layer 3 */ - /* protocol dependent values are described in chapter 6 */ -#define DISCONNECT_B3_IND_NCPI(x) ((x)->NCPI) - /* Network Control Protocol Information */ -#define DISCONNECT_B3_RESP_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define DISCONNECT_REQ_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define DISCONNECT_REQ_ADDITIONALINFO(x) ((x)->AdditionalInfo) - /* Additional information elements */ -#define DISCONNECT_REQ_BCHANNELINFORMATION(x) ((x)->BChannelinformation) -#define DISCONNECT_REQ_KEYPADFACILITY(x) ((x)->Keypadfacility) - /* coded according to ETS 300 102-1 / Q.931 */ -#define DISCONNECT_REQ_USERUSERDATA(x) ((x)->Useruserdata) - /* coded according to ETS 300 102-1 / Q.931 */ -#define DISCONNECT_REQ_FACILITYDATAARRAY(x) ((x)->Facilitydataarray) - /* which is used to transfer additional parameters coded */ - /* according to ETS 300 102-1 / Q.931 starting from octet 1. */ - /* This field is used to transport one or more complete facility */ - /* data information elements. */ -#define DISCONNECT_CONF_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define DISCONNECT_CONF_INFO(x) ((x)->Info) - /* 0: disconnect initiated */ - /* 0x2001: message not supported in current state */ - /* 0x2002: illegal PLCI */ - /* 0x2007: illegal message parameter coding */ -#define DISCONNECT_IND_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define DISCONNECT_IND_REASON(x) ((x)->Reason) - /* 0: no cause available */ - /* 0x3301: protocol error layer 1 */ - /* 0x3302: protocol error layer 2 */ - /* 0x3303: protocol error layer 3 */ - /* 0x3304: another application got that call */ - /* 0x34xx: disconnect cause from the network according to Q.931/ETS 300 102-1. In the field 'xx' the cause value received within a cause information element (octet 4) from the network is indicated. */ -#define DISCONNECT_RESP_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define FACILITY_REQ_CONTROLLER(x) ((x)->adr.adrController) -#define FACILITY_REQ_PLCI(x) ((x)->adr.adrPLCI) -#define FACILITY_REQ_NCCI(x) ((x)->adr.adrNCCI) - /* Depending on the facility selector */ -#define FACILITY_REQ_FACILITYSELECTOR(x) ((x)->FacilitySelector) - /* 0: Handset Support */ - /* 1: DTMF */ - /* 2 to n: reserved */ -#define FACILITY_REQ_FACILITYREQUESTPARAMETER(x) ((x)->FacilityRequestParameter) - /* Facility depending parameters */ -#define FACILITY_CONF_CONTROLLER(x) ((x)->adr.adrController) -#define FACILITY_CONF_PLCI(x) ((x)->adr.adrPLCI) -#define FACILITY_CONF_NCCI(x) ((x)->adr.adrNCCI) - /* Depending on the facility selector */ -#define FACILITY_CONF_INFO(x) ((x)->Info) - /* 0: request accepted */ - /* 0x2001: message not supported in current state */ - /* 0x2002: incorrect Controller/PLCI/NCCI */ - /* 0x2007: illegal message parameter coding */ - /* 0x300B: facility not supported */ -#define FACILITY_CONF_FACILITYSELECTOR(x) ((x)->FacilitySelector) - /* 0: Handset Support */ - /* 1: DTMF */ - /* 2 to n: reserved */ -#define FACILITY_CONF_FACILITYCONFIRMATIONPARAMETER(x) ((x)->FacilityConfirmationParameter) - /* Facility-depending parameters */ -#define FACILITY_IND_CONTROLLER(x) ((x)->adr.adrController) -#define FACILITY_IND_PLCI(x) ((x)->adr.adrPLCI) -#define FACILITY_IND_NCCI(x) ((x)->adr.adrNCCI) - /* Depending on the facility selector */ -#define FACILITY_IND_FACILITYSELECTOR(x) ((x)->FacilitySelector) - /* 0: Handset Support */ - /* 1: DTMF */ - /* 2 to n: reserved */ -#define FACILITY_IND_FACILITYINDICATIONPARAMETER(x) ((x)->FacilityIndicationParameter) - /* Facility-depending parameters */ -#define FACILITY_RESP_CONTROLLER(x) ((x)->adr.adrController) -#define FACILITY_RESP_PLCI(x) ((x)->adr.adrPLCI) -#define FACILITY_RESP_NCCI(x) ((x)->adr.adrNCCI) - /* Depending on the facility selector */ -#define FACILITY_RESP_FACILITYSELECTOR(x) ((x)->FacilitySelector) - /* 0: Handset Support */ - /* 1: DTMF */ - /* 2 to n: reserved */ - /* Facility response parameters */ - /* struct */ - /* Facility-depending parameters */ -#define INFO_REQ_CONTROLLER(x) ((x)->adr.adrController) -#define INFO_REQ_PLCI(x) ((x)->adr.adrPLCI) - /* See note */ -#define INFO_REQ_CALLEDPARTYNUMBER(x) ((x)->CalledPartyNumber) - /* Called party number */ -#define INFO_REQ_ADDITIONALINFO(x) ((x)->AdditionalInfo) - /* Additional information elements */ -#define INFO_REQ_BCHANNELINFORMATION(x) ((x)->BChannelinformation) -#define INFO_REQ_KEYPADFACILITY(x) ((x)->Keypadfacility) - /* coded according to ETS 300 102-1 / Q.931 */ -#define INFO_REQ_USERUSERDATA(x) ((x)->Useruserdata) - /* coded according to ETS 300 102-1 / Q.931 */ -#define INFO_REQ_FACILITYDATAARRAY(x) ((x)->Facilitydataarray) - /* which is used to transfer additional parameters coded */ - /* according to ETS 300 102-1 / Q.931 starting from octet 1. */ - /* This field is used to transport one or more complete facility */ - /* data information elements. */ -#define INFO_CONF_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define INFO_CONF_INFO(x) ((x)->Info) - /* 0: transmission of information initiated */ - /* 0x2001: message not supported in current state */ - /* 0x2002: illegal Controller/PLCI */ - /* 0x2003: out of PLCI */ - /* 0x2007: illegal message parameter coding */ -#define INFO_IND_CONTROLLER(x) ((x)->adr.adrController) -#define INFO_IND_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define INFO_IND_INFONUMBER(x) ((x)->InfoNumber) - /* Information element identifier */ -#define INFO_IND_INFOELEMENT(x) ((x)->InfoElement) - /* Information element dependent structure */ -#define INFO_RESP_CONTROLLER(x) ((x)->adr.adrController) -#define INFO_RESP_PLCI(x) ((x)->adr.adrPLCI) - /* As in INFO_IND */ -#define LISTEN_REQ_CONTROLLER(x) ((x)->adr.adrController) -#define LISTEN_REQ_INFOMASK(x) ((x)->InfoMask) - /* Bit field, coding as follows: */ - /* 0: cause */ - /* 1: date/Time */ - /* 2: display */ - /* 3: user-user information */ - /* 4: call progression */ - /* 5: facility */ - /* 6: charging */ - /* 7 to 31: reserved */ -#define LISTEN_REQ_CIPMASK(x) ((x)->CIPmask) - /* Bit field, coding as follows: */ - /* 0: any match */ - /* 1: speech */ - /* 2: unrestricted digital information */ - /* 3: restricted digital information */ - /* 4: 3.1 kHz audio */ - /* 5: 7.0 kHz audio */ - /* 6: video */ - /* 7: packet mode */ - /* 8: 56 kBit/s rate adaptation */ - /* 9: unrestricted digital information with tones/announcements */ - /* 10..15: reserved */ - /* 16: telephony */ - /* 17: fax group 2/3 */ - /* 18: fax group 4 class 1 */ - /* 19: Teletex service (basic and mixed), fax group 4 class 2 */ - /* 20: Teletex service (basic and processable) */ - /* 21: Teletex service (basic) */ - /* 22: Videotex */ - /* 23: Telex */ - /* reserved for additional services */ - /* 25: OSI applications according X.200 */ - /* 26: 7 kHz Telephony */ - /* 27: Video Telephony F.721, first connection */ - /* 28: Video Telephony F.721, second connection */ - /* 29 to 31: reserved */ -#define LISTEN_REQ_CIPMASK2(x) ((x)->CIPmask2) - /* reserved for additional services */ -#define LISTEN_REQ_CALLINGPARTYNUMBER(x) ((x)->CallingPartyNumber) - /* Calling party number */ -#define LISTEN_REQ_CALLINGPARTYSUBADDRESS(x) ((x)->CallingPartySubaddress) - /* Calling party subaddress */ -#define LISTEN_CONF_CONTROLLER(x) ((x)->adr.adrController) -#define LISTEN_CONF_INFO(x) ((x)->Info) - /* 0: listen is active */ - /* 0x2002: illegal controller */ - /* 0x2005: out of LISTEN-Resources */ - /* 0x2007: illegal message parameter coding */ -#define MANUFACTURER_REQ_CONTROLLER(x) ((x)->adr.adrController) -#define MANUFACTURER_REQ_MANUID(x) ((x)->ManuID) - /* Manufacturer specific ID (should be unique) */ - /* Manufacturer specific */ -#define MANUFACTURER_REQ_CLASS(x) ((x)->Class) -#define MANUFACTURER_REQ_FUNCTION(x) ((x)->Function) -#define MANUFACTURER_REQ_MANUDATA(x) ((x)->ManuData) - /* Manufacturer specific data */ -#define MANUFACTURER_CONF_CONTROLLER(x) ((x)->adr.adrController) -#define MANUFACTURER_CONF_MANUID(x) ((x)->ManuID) - /* Manufacturer specific ID (should be unique) */ - /* Manufacturer specific */ -#define MANUFACTURER_CONF_CLASS(x) ((x)->Class) -#define MANUFACTURER_CONF_FUNCTION(x) ((x)->Function) -#define MANUFACTURER_CONF_MANUDATA(x) ((x)->ManuData) - /* Manufacturer specific data */ -#define MANUFACTURER_IND_CONTROLLER(x) ((x)->adr.adrController) -#define MANUFACTURER_IND_MANUID(x) ((x)->ManuID) - /* Manufacturer specific ID (should be unique) */ - /* Manufacturer specific */ -#define MANUFACTURER_IND_CLASS(x) ((x)->Class) -#define MANUFACTURER_IND_FUNCTION(x) ((x)->Function) -#define MANUFACTURER_IND_MANUDATA(x) ((x)->ManuData) - /* Manufacturer specific data */ -#define MANUFACTURER_RESP_CONTROLLER(x) ((x)->adr.adrController) -#define MANUFACTURER_RESP_MANUID(x) ((x)->ManuID) - /* Manufacturer specific ID (should be unique) */ - /* Manufacturer specific */ -#define MANUFACTURER_RESP_CLASS(x) ((x)->Class) -#define MANUFACTURER_RESP_FUNCTION(x) ((x)->Function) -#define MANUFACTURER_RESP_MANUDATA(x) ((x)->ManuData) - /* Manufacturer specific data */ -#define RESET_B3_REQ_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define RESET_B3_REQ_NCPI(x) ((x)->NCPI) - /* Network Control Protocol Information */ -#define RESET_B3_CONF_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define RESET_B3_CONF_INFO(x) ((x)->Info) - /* 0: reset initiated */ - /* 0x0001: NCPI not supported by current protocol, NCPI ignored */ - /* 0x2001: message not supported in current state */ - /* 0x2002: illegal NCCI */ - /* 0x2007: illegal message parameter coding */ - /* 0x3008: NCPI not supported */ - /* 0x300D: reset procedure not supported by current protocol */ -#define RESET_B3_IND_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define RESET_B3_IND_NCPI(x) ((x)->NCPI) - /* Network Control Protocol Information */ -#define RESET_B3_RESP_NCCI(x) ((x)->adr.adrNCCI) - /* Network Control Connection Identifier */ -#define SELECT_B_PROTOCOL_REQ_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define SELECT_B_PROTOCOL_REQ_BPROTOCOL(x) ((x)->BProtocol) - /* Protocol definition */ -#define SELECT_B_PROTOCOL_REQ_B1PROTOCOL(x) ((x)->B1protocol) - /* Physical layer and framing */ -#define SELECT_B_PROTOCOL_REQ_B2PROTOCOL(x) ((x)->B2protocol) - /* Data link layer */ -#define SELECT_B_PROTOCOL_REQ_B3PROTOCOL(x) ((x)->B3protocol) - /* Network layer */ -#define SELECT_B_PROTOCOL_REQ_B1CONFIGURATION(x) ((x)->B1configuration) - /* Physical layer and framing parameter */ -#define SELECT_B_PROTOCOL_REQ_B2CONFIGURATION(x) ((x)->B2configuration) - /* Data link layer parameter */ -#define SELECT_B_PROTOCOL_REQ_B3CONFIGURATION(x) ((x)->B3configuration) - /* Network layer parameter */ -#define SELECT_B_PROTOCOL_CONF_PLCI(x) ((x)->adr.adrPLCI) - /* Physical Link Connection Identifier */ -#define SELECT_B_PROTOCOL_CONF_INFO(x) ((x)->Info) - /* 0: protocol switch successful */ - /* 0x2001: message not supported in current state */ - /* 0x2002: illegal PLCI */ - /* 0x2007: illegal message parameter coding */ - /* 0x3001: B1 protocol not supported */ - /* 0x3002: B2 protocol not supported */ - /* 0x3003: B3 protocol not supported */ - /* 0x3004: B1 protocol parameter not supported */ - /* 0x3005: B2 protocol parameter not supported */ - /* 0x3006: B3 protocol parameter not supported */ - /* 0x3007: B protocol combination not supported */ - -/*----- tests for specific commands -----*/ - -#define IS_CONNECT_IND(m) ((m)->Command==0x02 && (m)->Subcommand==0x82) -#define IS_CONNECT_ACTIVE_IND(m) ((m)->Command==0x03 && (m)->Subcommand==0x82) -#define IS_CONNECT_B3_ACTIVE_IND(m) ((m)->Command==0x83 && (m)->Subcommand==0x82) -#define IS_CONNECT_B3_IND(m) ((m)->Command==0x82 && (m)->Subcommand==0x82) -#define IS_CONNECT_B3_T90_ACTIVE_IND(m) ((m)->Command==0x88 && (m)->Subcommand==0x82) -#define IS_DATA_B3_IND(m) ((m)->Command==0x86 && (m)->Subcommand==0x82) -#define IS_DISCONNECT_B3_IND(m) ((m)->Command==0x84 && (m)->Subcommand==0x82) -#define IS_DISCONNECT_IND(m) ((m)->Command==0x04 && (m)->Subcommand==0x82) -#define IS_FACILITY_IND(m) ((m)->Command==0x80 && (m)->Subcommand==0x82) -#define IS_INFO_IND(m) ((m)->Command==0x08 && (m)->Subcommand==0x82) -#define IS_MANUFACTURER_IND(m) ((m)->Command==0xff && (m)->Subcommand==0x82) -#define IS_RESET_B3_IND(m) ((m)->Command==0x87 && (m)->Subcommand==0x82) -#define IS_ALERT_CONF(m) ((m)->Command==0x01 && (m)->Subcommand==0x81) -#define IS_CONNECT_CONF(m) ((m)->Command==0x02 && (m)->Subcommand==0x81) -#define IS_CONNECT_B3_CONF(m) ((m)->Command==0x82 && (m)->Subcommand==0x81) -#define IS_DATA_B3_CONF(m) ((m)->Command==0x86 && (m)->Subcommand==0x81) -#define IS_DISCONNECT_B3_CONF(m) ((m)->Command==0x84 && (m)->Subcommand==0x81) -#define IS_DISCONNECT_CONF(m) ((m)->Command==0x04 && (m)->Subcommand==0x81) -#define IS_FACILITY_CONF(m) ((m)->Command==0x80 && (m)->Subcommand==0x81) -#define IS_INFO_CONF(m) ((m)->Command==0x08 && (m)->Subcommand==0x81) -#define IS_LISTEN_CONF(m) ((m)->Command==0x05 && (m)->Subcommand==0x81) -#define IS_MANUFACTURER_CONF(m) ((m)->Command==0xff && (m)->Subcommand==0x81) -#define IS_RESET_B3_CONF(m) ((m)->Command==0x87 && (m)->Subcommand==0x81) -#define IS_SELECT_B_PROTOCOL_CONF(m) ((m)->Command==0x41 && (m)->Subcommand==0x81) - -/*----- header functions that fill the _cmsg structure with default -----*/ -/*----- values. Only nonstandard parameter need to be changed -----*/ - -#define ALERT_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x01,0x80,Messagenumber,adr) -#define CONNECT_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x02,0x80,Messagenumber,adr) -#define CONNECT_B3_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x82,0x80,Messagenumber,adr) -#define DATA_B3_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x86,0x80,Messagenumber,adr) -#define DISCONNECT_B3_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x84,0x80,Messagenumber,adr) -#define DISCONNECT_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x04,0x80,Messagenumber,adr) -#define FACILITY_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x80,0x80,Messagenumber,adr) -#define INFO_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x08,0x80,Messagenumber,adr) -#define LISTEN_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x05,0x80,Messagenumber,adr) -#define MANUFACTURER_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0xff,0x80,Messagenumber,adr) -#define RESET_B3_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x87,0x80,Messagenumber,adr) -#define SELECT_B_PROTOCOL_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x41,0x80,Messagenumber,adr) -#define CONNECT_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x02,0x83,Messagenumber,adr) -#define CONNECT_ACTIVE_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x03,0x83,Messagenumber,adr) -#define CONNECT_B3_ACTIVE_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x83,0x83,Messagenumber,adr) -#define CONNECT_B3_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x82,0x83,Messagenumber,adr) -#define CONNECT_B3_T90_ACTIVE_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x88,0x83,Messagenumber,adr) -#define DATA_B3_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x86,0x83,Messagenumber,adr) -#define DISCONNECT_B3_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x84,0x83,Messagenumber,adr) -#define DISCONNECT_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x04,0x83,Messagenumber,adr) -#define FACILITY_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x80,0x83,Messagenumber,adr) -#define INFO_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x08,0x83,Messagenumber,adr) -#define MANUFACTURER_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0xff,0x83,Messagenumber,adr) -#define RESET_B3_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ - CAPI_CMSG_HEADER(cmsg,ApplId,0x87,0x83,Messagenumber,adr) - -/* - * CAPI-functions that correspond to the CAPI messages specified in the - * CAPI 2.0 specification. All possible parameter have to be specified. - * The CAPI message is sent immediately when calling these functions, - * return values are the same as in capi_put_message() - */ - -unsigned ALERT_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cstruct BChannelinformation - ,_cstruct Keypadfacility - ,_cstruct Useruserdata - ,_cstruct Facilitydataarray); -unsigned CONNECT_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cword CIPValue - ,_cstruct CalledPartyNumber - ,_cstruct CallingPartyNumber - ,_cstruct CalledPartySubaddress - ,_cstruct CallingPartySubaddress - ,_cword B1protocol - ,_cword B2protocol - ,_cword B3protocol - ,_cstruct B1configuration - ,_cstruct B2configuration - ,_cstruct B3configuration - ,_cstruct BC - ,_cstruct LLC - ,_cstruct HLC - ,_cstruct BChannelinformation - ,_cstruct Keypadfacility - ,_cstruct Useruserdata - ,_cstruct Facilitydataarray); -unsigned CONNECT_B3_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cstruct NCPI); -unsigned DATA_B3_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,void * Data - ,_cword DataLength - ,_cword DataHandle - ,_cword Flags); -unsigned DISCONNECT_B3_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cstruct NCPI); -unsigned DISCONNECT_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cstruct BChannelinformation - ,_cstruct Keypadfacility - ,_cstruct Useruserdata - ,_cstruct Facilitydataarray); -unsigned FACILITY_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cword FacilitySelector - ,_cstruct FacilityRequestParameter); -unsigned INFO_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cstruct CalledPartyNumber - ,_cstruct BChannelinformation - ,_cstruct Keypadfacility - ,_cstruct Useruserdata - ,_cstruct Facilitydataarray); -unsigned LISTEN_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cdword InfoMask - ,_cdword CIPmask - ,_cdword CIPmask2 - ,_cstruct CallingPartyNumber - ,_cstruct CallingPartySubaddress); -unsigned MANUFACTURER_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cdword ManuID - ,_cdword Class - ,_cdword Function - ,_cstruct ManuData); -unsigned RESET_B3_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cstruct NCPI); -unsigned SELECT_B_PROTOCOL_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cword B1protocol - ,_cword B2protocol - ,_cword B3protocol - ,_cstruct B1configuration - ,_cstruct B2configuration - ,_cstruct B3configuration); -unsigned CONNECT_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cword Reject - ,_cword B1protocol - ,_cword B2protocol - ,_cword B3protocol - ,_cstruct B1configuration - ,_cstruct B2configuration - ,_cstruct B3configuration - ,_cstruct ConnectedNumber - ,_cstruct ConnectedSubaddress - ,_cstruct LLC - ,_cstruct BChannelinformation - ,_cstruct Keypadfacility - ,_cstruct Useruserdata - ,_cstruct Facilitydataarray); -unsigned CONNECT_ACTIVE_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr); -unsigned CONNECT_B3_ACTIVE_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr); -unsigned CONNECT_B3_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cword Reject - ,_cstruct NCPI); -unsigned CONNECT_B3_T90_ACTIVE_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr); -unsigned DATA_B3_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cword DataHandle); -unsigned DISCONNECT_B3_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr); -unsigned DISCONNECT_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr); -unsigned FACILITY_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cword FacilitySelector - ,_cstruct FacilityResponseParameters); -unsigned INFO_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr); -unsigned MANUFACTURER_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr - ,_cdword ManuID - ,_cdword Class - ,_cdword Function - ,_cstruct ManuData); -unsigned RESET_B3_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber - ,_cdword adr); - - #ifdef __cplusplus } #endif +#ifndef __NO_CAPIUTILS__ +#include +#endif + #endif /* __CAPI20_H */ diff --git a/capi20/capiutils.h b/capi20/capiutils.h new file mode 100644 index 00000000..f7e81fb3 --- /dev/null +++ b/capi20/capiutils.h @@ -0,0 +1,968 @@ +#ifndef __CAPIUTIL_H__ +#define __CAPIUTIL_H__ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*----- errornumbers -----*/ + +#define CapiToManyAppls 0x1001 +#define CapiLogBlkSizeToSmall 0x1002 +#define CapiBuffExeceeds64k 0x1003 +#define CapiMsgBufSizeToSmall 0x1004 +#define CapiAnzLogConnNotSupported 0x1005 +#define CapiRegReserved 0x1006 +#define CapiRegBusy 0x1007 +#define CapiRegOSResourceErr 0x1008 +#define CapiRegNotInstalled 0x1009 +#define CapiRegCtrlerNotSupportExtEquip 0x100a +#define CapiRegCtrlerOnlySupportExtEquip 0x100b + + +#define CapiNoError 0x0000 +#define CapiIllAppNr 0x1101 +#define CapiIllCmdOrSubcmdOrMsgToSmall 0x1102 +#define CapiSendQueueFull 0x1103 +#define CapiReceiveQueueEmpty 0x1104 +#define CapiReceiveOverflow 0x1105 +#define CapiUnknownNotPar 0x1106 +#define CapiMsgBusy 0x1107 +#define CapiMsgOSResourceErr 0x1108 +#define CapiMsgNotInstalled 0x1109 +#define CapiMsgCtrlerNotSupportExtEquip 0x110a +#define CapiMsgCtrlerOnlySupportExtEquip 0x110b + +/* standard CAPI2.0 function aliases */ + +#define CAPI20_REGISTER capi20_register +#define CAPI20_RELEASE capi20_release +#define CAPI20_PUT_MESSAGE capi20_put_message +#define CAPI20_GET_MESSAGE capi20_get_message +#define CAPI20_WaitforMessage capi20_waitformessage +#define CAPI20_GET_MANUFACTURER capi20_get_manufacturer +#define CAPI20_GET_VERSION capi20_get_version +#define CAPI20_GET_SERIAL_NUMBER capi20_get_serial_number +#define CAPI20_GET_PROFILE capi20_get_profile +#define CAPI20_ISINSTALLED capi20_isinstalled + + +#define CAPI_REGISTER_ERROR unsigned +#define MESSAGE_EXCHANGE_ERROR unsigned + +typedef unsigned char *CAPI_MESSAGE; + +#if defined(__GLIBC__) && defined(__GLIBC_MINOR__) +#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || __GLIBC__ > 2 +#define HAS_UINT8_T +#endif +#endif + +#ifdef HAS_UINT8_t +typedef uint8_t _cbyte; +typedef uint16_t _cword; +typedef uint32_t _cdword; +typedef uint64_t _cqword; +#else +typedef unsigned char _cbyte; +typedef unsigned short _cword; +typedef unsigned long _cdword; +typedef unsigned long long _cqword; +#endif + +typedef CAPI_MESSAGE _cstruct; +typedef enum { CAPI_COMPOSE = 0, CAPI_DEFAULT = 1 } _cmstruct; + +/*----- CAPI commands -----*/ + +#define CAPI_ALERT 0x01 +#define CAPI_CONNECT 0x02 +#define CAPI_CONNECT_ACTIVE 0x03 +#define CAPI_CONNECT_B3_ACTIVE 0x83 +#define CAPI_CONNECT_B3 0x82 +#define CAPI_CONNECT_B3_T90_ACTIVE 0x88 +#define CAPI_DATA_B3 0x86 +#define CAPI_DISCONNECT_B3 0x84 +#define CAPI_DISCONNECT 0x04 +#define CAPI_FACILITY 0x80 +#define CAPI_INFO 0x08 +#define CAPI_LISTEN 0x05 +#define CAPI_MANUFACTURER 0xff +#define CAPI_RESET_B3 0x87 +#define CAPI_SELECT_B_PROTOCOL 0x41 + +/*----- CAPI subcommands -----*/ + +#define CAPI_REQ 0x80 +#define CAPI_CONF 0x81 +#define CAPI_IND 0x82 +#define CAPI_RESP 0x83 + +/* + * The _cmsg structure contains all possible CAPI 2.0 parameter. + * All parameters are stored here first. The function capi_cmsg2message() + * assembles the parameter and builds CAPI2.0 conform messages. + * capi_message2cmsg disassembles CAPI 2.0 messages and stores the + * parameter in the _cmsg structure + */ + +typedef struct { + /* Header */ + _cword ApplId; + _cbyte Command; + _cbyte Subcommand; + _cword Messagenumber; + + /* Parameter */ + union { + _cdword adrController; + _cdword adrPLCI; + _cdword adrNCCI; + } adr; + + _cmstruct AdditionalInfo; + _cstruct B1configuration; + _cword B1protocol; + _cstruct B2configuration; + _cword B2protocol; + _cstruct B3configuration; + _cword B3protocol; + _cstruct BC; + _cstruct BChannelinformation; + _cmstruct BProtocol; + _cstruct CalledPartyNumber; + _cstruct CalledPartySubaddress; + _cstruct CallingPartyNumber; + _cstruct CallingPartySubaddress; + _cdword CIPmask; + _cdword CIPmask2; + _cword CIPValue; + _cdword Class; + _cstruct ConnectedNumber; + _cstruct ConnectedSubaddress; + _cdword Data32; + _cqword Data64; + _cword DataHandle; + _cword DataLength; + _cstruct FacilityConfirmationParameter; + _cstruct Facilitydataarray; + _cstruct FacilityIndicationParameter; + _cstruct FacilityRequestParameter; + _cstruct FacilityResponseParameters; + _cword FacilitySelector; + _cword Flags; + _cdword Function; + _cstruct HLC; + _cword Info; + _cstruct InfoElement; + _cdword InfoMask; + _cword InfoNumber; + _cstruct Keypadfacility; + _cstruct LLC; + _cstruct ManuData; + _cdword ManuID; + _cstruct NCPI; + _cword Reason; + _cword Reason_B3; + _cword Reject; + _cstruct Useruserdata; + unsigned char *Data; + + /* intern */ + unsigned l,p; + unsigned char *par; + unsigned char *m; +} _cmsg; + + +#define capi_cmsg2message capi20_cmsg2message +#define capi_message2cmsg capi20_message2cmsg + +unsigned capi20_cmsg2message(_cmsg *cmsg, unsigned char *msg); + +unsigned capi20_message2cmsg (_cmsg *cmsg, unsigned char *msg); + +/* + * capi20_put_cmsg() works like capi20_put_message() but it converts the + * _cmsg * first with capi20_cmsg2message(). Possible errors from + * capi20_put_message() will be returned. + */ + +#define CAPI_PUT_CMSG capi20_put_cmsg +#define capi_put_cmsg capi20_put_cmsg + +unsigned capi20_put_cmsg(_cmsg *cmsg); + +/* + * capi20_get_cmsg() works like capi20_get_message() and converts the + * CAPI message * to a _cmsg with capi20_message2cmsg(). + * Possible errors from capi20_get_message() will be returned. + */ + +#define CAPI_GET_CMSG capi20_get_cmsg +#define capi_get_cmsg capi20_get_cmsg + +unsigned capi20_get_cmsg(_cmsg *cmsg, unsigned applid); + +/* + * capi20_cmsg_header() fills the _cmsg structure with default values, + * so only parameter with non default values must be changed before + * sending the message. + */ + +#define CAPI_CMSG_HEADER capi20_cmsg_header +#define capi_cmsg_header capi20_cmsg_header + +unsigned capi20_cmsg_header (_cmsg *cmsg, unsigned _ApplId, _cbyte _Command, _cbyte _Subcommand, _cword _Messagenumber, _cdword _Controller); + +/* + * capi20_cmsg_answer() is used to answer indications. It changes the header + * of an indication to a response, and leaves all other parameters the same + */ + +#define capi_cmsg_answer capi20_cmsg_answer + +unsigned capi20_cmsg_answer (_cmsg *cmsg); + +/*----- defines to access specific parameter -----*/ + +#define ALERT_REQ_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define ALERT_REQ_ADDITIONALINFO(x) ((x)->AdditionalInfo) + /* Additional info elements */ +#define ALERT_REQ_BCHANNELINFORMATION(x) ((x)->BChannelinformation) +#define ALERT_REQ_KEYPADFACILITY(x) ((x)->Keypadfacility) + /* coded according to ETS 300 102-1 / Q.931 */ +#define ALERT_REQ_USERUSERDATA(x) ((x)->Useruserdata) + /* coded according to ETS 300 102-1 / Q.931 */ +#define ALERT_REQ_FACILITYDATAARRAY(x) ((x)->Facilitydataarray) + /* which is used to transfer additional parameters coded */ + /* according to ETS 300 102-1 / Q.931 starting from octet 1. */ + /* This field is used to transport one or more complete facility */ + /* data information elements. */ +#define ALERT_CONF_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define ALERT_CONF_INFO(x) ((x)->Info) + /* 0: alert initiated */ + /* 0x0003: alert already sent by another application */ + /* 0x2001: message not supported in current state */ + /* 0x2002: illegal PLCI */ + /* 0x2007: illegal message parameter coding */ +#define CONNECT_REQ_CONTROLLER(x) ((x)->adr.adrController) +#define CONNECT_REQ_CIPVALUE(x) ((x)->CIPValue) + /* Compatibility Information Profile */ +#define CONNECT_REQ_CALLEDPARTYNUMBER(x) ((x)->CalledPartyNumber) + /* Called party number */ +#define CONNECT_REQ_CALLINGPARTYNUMBER(x) ((x)->CallingPartyNumber) + /* Calling party number */ +#define CONNECT_REQ_CALLEDPARTYSUBADDRESS(x) ((x)->CalledPartySubaddress) + /* Called party subaddress */ +#define CONNECT_REQ_CALLINGPARTYSUBADDRESS(x) ((x)->CallingPartySubaddress) + /* Calling party subaddress */ +#define CONNECT_REQ_BPROTOCOL(x) ((x)->BProtocol) + /* B protocol to be used */ +#define CONNECT_REQ_B1PROTOCOL(x) ((x)->B1protocol) + /* Physical layer and framing */ +#define CONNECT_REQ_B2PROTOCOL(x) ((x)->B2protocol) + /* Data link layer */ +#define CONNECT_REQ_B3PROTOCOL(x) ((x)->B3protocol) + /* Network layer */ +#define CONNECT_REQ_B1CONFIGURATION(x) ((x)->B1configuration) + /* Physical layer and framing parameter */ +#define CONNECT_REQ_B2CONFIGURATION(x) ((x)->B2configuration) + /* Data link layer parameter */ +#define CONNECT_REQ_B3CONFIGURATION(x) ((x)->B3configuration) + /* Network layer parameter */ +#define CONNECT_REQ_BC(x) ((x)->BC) + /* Bearer Capability */ +#define CONNECT_REQ_LLC(x) ((x)->LLC) + /* Low Layer Compatibility */ +#define CONNECT_REQ_HLC(x) ((x)->HLC) + /* High Layer Compatibility */ +#define CONNECT_REQ_ADDITIONALINFO(x) ((x)->AdditionalInfo) + /* Additional information elements */ +#define CONNECT_REQ_BCHANNELINFORMATION(x) ((x)->BChannelinformation) +#define CONNECT_REQ_KEYPADFACILITY(x) ((x)->Keypadfacility) + /* coded according to ETS 300 102-1 / Q.931 */ +#define CONNECT_REQ_USERUSERDATA(x) ((x)->Useruserdata) + /* coded according to ETS 300 102-1 / Q.931 */ +#define CONNECT_REQ_FACILITYDATAARRAY(x) ((x)->Facilitydataarray) + /* which is used to transfer additional parameters coded */ + /* according to ETS 300 102-1 / Q.931 starting from octet 1. */ + /* This field is used to transport one or more complete facility */ + /* data information elements. */ +#define CONNECT_CONF_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define CONNECT_CONF_INFO(x) ((x)->Info) + /* 0: connect initiated */ + /* 0x2002: illegal controller */ + /* 0x2003: out of PLCI */ + /* 0x2007: illegal message parameter coding */ + /* 0x3001: B1 protocol not supported */ + /* 0x3002: B2 protocol not supported */ + /* 0x3003: B3 protocol not supported */ + /* 0x3004: B1 protocol parameter not supported */ + /* 0x3005: B2 protocol parameter not supported */ + /* 0x3006: B3 protocol parameter not supported */ + /* 0x3007: B protocol combination not supported */ + /* 0x300A: CIP Value unknown */ +#define CONNECT_IND_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define CONNECT_IND_CIPVALUE(x) ((x)->CIPValue) + /* Compatibility Information Profile */ +#define CONNECT_IND_CALLEDPARTYNUMBER(x) ((x)->CalledPartyNumber) + /* Called party number */ +#define CONNECT_IND_CALLINGPARTYNUMBER(x) ((x)->CallingPartyNumber) + /* Calling party number */ +#define CONNECT_IND_CALLEDPARTYSUBADDRESS(x) ((x)->CalledPartySubaddress) + /* Called party subaddress */ +#define CONNECT_IND_CALLINGPARTYSUBADDRESS(x) ((x)->CallingPartySubaddress) + /* Calling party subaddress */ +#define CONNECT_IND_BC(x) ((x)->BC) + /* Bearer compatibility */ +#define CONNECT_IND_LLC(x) ((x)->LLC) + /* Low Layer Compatibility */ +#define CONNECT_IND_HLC(x) ((x)->HLC) + /* High Layer Compatibility */ +#define CONNECT_IND_ADDITIONALINFO(x) ((x)->AdditionalInfo) + /* Additional information elements */ +#define CONNECT_IND_BCHANNELINFORMATION(x) ((x)->BChannelinformation) +#define CONNECT_IND_KEYPADFACILITY(x) ((x)->Keypadfacility) + /* coded according to ETS 300 102-1 / Q.931 */ +#define CONNECT_IND_USERUSERDATA(x) ((x)->Useruserdata) + /* coded according to ETS 300 102-1 / Q.931 */ +#define CONNECT_IND_FACILITYDATAARRAY(x) ((x)->Facilitydataarray) + /* which is used to transfer additional parameters coded */ + /* according to ETS 300 102-1 / Q.931 starting from octet 1. */ + /* This field is used to transport one or more complete facility */ + /* data information elements. */ +#define CONNECT_RESP_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define CONNECT_RESP_REJECT(x) ((x)->Reject) + /* 0: accept call */ + /* 1: ignore call */ + /* 2: reject call, normal call clearing */ + /* 3: reject call, user busy */ + /* 4: reject call, requestet circuit/channel not available */ + /* 5: reject call, facility rejected */ + /* 6: reject call, channel unacceptable */ + /* 7: reject call, incompatible destination */ + /* 8: reject call, destination out of order */ +#define CONNECT_RESP_BPROTOCOL(x) ((x)->BProtocol) + /* B protocol to be used */ +#define CONNECT_RESP_B1PROTOCOL(x) ((x)->B1protocol) + /* Physical layer and framing */ +#define CONNECT_RESP_B2PROTOCOL(x) ((x)->B2protocol) + /* Data link layer */ +#define CONNECT_RESP_B3PROTOCOL(x) ((x)->B3protocol) + /* Network layer */ +#define CONNECT_RESP_B1CONFIGURATION(x) ((x)->B1configuration) + /* Physical layer and framing parameter */ +#define CONNECT_RESP_B2CONFIGURATION(x) ((x)->B2configuration) + /* Data link layer parameter */ +#define CONNECT_RESP_B3CONFIGURATION(x) ((x)->B3configuration) + /* Network layer parameter */ +#define CONNECT_RESP_CONNECTEDNUMBER(x) ((x)->ConnectedNumber) + /* Connected number */ +#define CONNECT_RESP_CONNECTEDSUBADDRESS(x) ((x)->ConnectedSubaddress) + /* Connected subaddress */ +#define CONNECT_RESP_LLC(x) ((x)->LLC) + /* Low Layer Compatibility */ +#define CONNECT_RESP_ADDITIONALINFO(x) ((x)->AdditionalInfo) + /* Additional information elements */ +#define CONNECT_RESP_BCHANNELINFORMATION(x) ((x)->BChannelinformation) +#define CONNECT_RESP_KEYPADFACILITY(x) ((x)->Keypadfacility) + /* coded according to ETS 300 102-1 / Q.931 */ +#define CONNECT_RESP_USERUSERDATA(x) ((x)->Useruserdata) + /* coded according to ETS 300 102-1 / Q.931 */ +#define CONNECT_RESP_FACILITYDATAARRAY(x) ((x)->Facilitydataarray) + /* which is used to transfer additional parameters coded */ + /* according to ETS 300 102-1 / Q.931 starting from octet 1. */ + /* This field is used to transport one or more complete facility */ + /* data information elements. */ +#define CONNECT_ACTIVE_IND_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define CONNECT_ACTIVE_IND_CONNECTEDNUMBER(x) ((x)->ConnectedNumber) + /* Connected number */ +#define CONNECT_ACTIVE_IND_CONNECTEDSUBADDRESS(x) ((x)->ConnectedSubaddress) + /* Connected subaddress */ +#define CONNECT_ACTIVE_IND_LLC(x) ((x)->LLC) + /* Low Layer Compatibility */ +#define CONNECT_ACTIVE_RESP_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define CONNECT_B3_ACTIVE_IND_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define CONNECT_B3_ACTIVE_IND_NCPI(x) ((x)->NCPI) + /* Network Control Protocol Information */ +#define CONNECT_B3_ACTIVE_RESP_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define CONNECT_B3_REQ_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define CONNECT_B3_REQ_NCPI(x) ((x)->NCPI) + /* Network Control Protocol Information */ +#define CONNECT_B3_CONF_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define CONNECT_B3_CONF_INFO(x) ((x)->Info) + /* 0: connect initiated */ + /* 0x0001: NCPI not supported by current protocol, NCPI ignored */ + /* 0x2001: message not supported in current state */ + /* 0x2002: illegal PLCI */ + /* 0x2004: out of NCCI */ + /* 0x3008: NCPI not supported */ +#define CONNECT_B3_IND_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define CONNECT_B3_IND_NCPI(x) ((x)->NCPI) + /* Network Control Protocol Information */ +#define CONNECT_B3_RESP_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define CONNECT_B3_RESP_REJECT(x) ((x)->Reject) + /* 0: accept call */ + /* 2: reject call, normal call clearing */ +#define CONNECT_B3_RESP_NCPI(x) ((x)->NCPI) + /* Network Control Protocol Information */ +#define CONNECT_B3_T90_ACTIVE_IND_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define CONNECT_B3_T90_ACTIVE_IND_NCPI(x) ((x)->NCPI) + /* Network Control Protocol Information */ +#define CONNECT_B3_T90_ACTIVE_RESP_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define DATA_B3_REQ_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define DATA_B3_REQ_DATA(x) ((x)->Data) + /* Pointer to the data to be sent */ +#define DATA_B3_REQ_DATALENGTH(x) ((x)->DataLength) + /* Size of data area to be sent */ +#define DATA_B3_REQ_DATAHANDLE(x) ((x)->DataHandle) + /* Referenced in DATA_B3_CONF */ +#define DATA_B3_REQ_FLAGS(x) ((x)->Flags) + /* [0]: qualifier bit */ + /* [1]: more data bit */ + /* [2]: delivery confirmation bit */ + /* [3]: expedited data */ + /* [4] to [15]: reserved */ +#define DATA_B3_CONF_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define DATA_B3_CONF_DATAHANDLE(x) ((x)->DataHandle) + /* Identifies the data area of corresponding DATA_B3_REQ */ +#define DATA_B3_CONF_INFO(x) ((x)->Info) + /* 0: data transmission initiated */ + /* 0x0002: flags not supported by current protocol, flags ignored */ + /* 0x2001: message not supported in current state */ + /* 0x2002: illegal NCCI */ + /* 0x2007: illegal message parameter coding */ + /* 0x300A: flags not supported (reserved bits) */ + /* 0x300C: data length not supported by current protocol */ +#define DATA_B3_IND_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define DATA_B3_IND_DATA(x) ((x)->Data) + /* Pointer to data received */ +#define DATA_B3_IND_DATALENGTH(x) ((x)->DataLength) + /* Size of data area received */ +#define DATA_B3_IND_DATAHANDLE(x) ((x)->DataHandle) + /* handle to data area, referenced in DATA_B3_RESP */ +#define DATA_B3_IND_FLAGS(x) ((x)->Flags) + /* 0: qualifier bit */ + /* 1: more-data bit */ + /* 2: delivery confirmation bit */ + /* 3: expedited data */ + /* 4 to 14: reserved */ + /* [15]: framing error bit, data may be invalid (only with corresponding B2 protocol) */ +#define DATA_B3_RESP_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define DATA_B3_RESP_DATAHANDLE(x) ((x)->DataHandle) + /* Data area reference in corresponding DATA_B3_IND */ +#define DISCONNECT_B3_REQ_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define DISCONNECT_B3_REQ_NCPI(x) ((x)->NCPI) + /* Network Control Protocol Information */ +#define DISCONNECT_B3_CONF_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define DISCONNECT_B3_CONF_INFO(x) ((x)->Info) + /* 0: disconnect initiated */ + /* 0x0001: NCPI not supported by current protocol, NCPI ignored */ + /* 0x2001: message not supported in current state */ + /* 0x2002: illegal NCCI */ + /* 0x2007: illegal message parameter coding */ + /* 0x3008: NCPI not supported */ +#define DISCONNECT_B3_IND_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define DISCONNECT_B3_IND_REASON_B3(x) ((x)->Reason_B3) + /* 0: clearing according to protocol */ + /* 0x3301: protocol error layer 1 */ + /* 0x3302: protocol error layer 2 */ + /* 0x3303: protocol error layer 3 */ + /* protocol dependent values are described in chapter 6 */ +#define DISCONNECT_B3_IND_NCPI(x) ((x)->NCPI) + /* Network Control Protocol Information */ +#define DISCONNECT_B3_RESP_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define DISCONNECT_REQ_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define DISCONNECT_REQ_ADDITIONALINFO(x) ((x)->AdditionalInfo) + /* Additional information elements */ +#define DISCONNECT_REQ_BCHANNELINFORMATION(x) ((x)->BChannelinformation) +#define DISCONNECT_REQ_KEYPADFACILITY(x) ((x)->Keypadfacility) + /* coded according to ETS 300 102-1 / Q.931 */ +#define DISCONNECT_REQ_USERUSERDATA(x) ((x)->Useruserdata) + /* coded according to ETS 300 102-1 / Q.931 */ +#define DISCONNECT_REQ_FACILITYDATAARRAY(x) ((x)->Facilitydataarray) + /* which is used to transfer additional parameters coded */ + /* according to ETS 300 102-1 / Q.931 starting from octet 1. */ + /* This field is used to transport one or more complete facility */ + /* data information elements. */ +#define DISCONNECT_CONF_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define DISCONNECT_CONF_INFO(x) ((x)->Info) + /* 0: disconnect initiated */ + /* 0x2001: message not supported in current state */ + /* 0x2002: illegal PLCI */ + /* 0x2007: illegal message parameter coding */ +#define DISCONNECT_IND_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define DISCONNECT_IND_REASON(x) ((x)->Reason) + /* 0: no cause available */ + /* 0x3301: protocol error layer 1 */ + /* 0x3302: protocol error layer 2 */ + /* 0x3303: protocol error layer 3 */ + /* 0x3304: another application got that call */ + /* 0x34xx: disconnect cause from the network according to Q.931/ETS 300 102-1. In the field 'xx' the cause value received within a cause information element (octet 4) from the network is indicated. */ +#define DISCONNECT_RESP_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define FACILITY_REQ_CONTROLLER(x) ((x)->adr.adrController) +#define FACILITY_REQ_PLCI(x) ((x)->adr.adrPLCI) +#define FACILITY_REQ_NCCI(x) ((x)->adr.adrNCCI) + /* Depending on the facility selector */ +#define FACILITY_REQ_FACILITYSELECTOR(x) ((x)->FacilitySelector) + /* 0: Handset Support */ + /* 1: DTMF */ + /* 2 to n: reserved */ +#define FACILITY_REQ_FACILITYREQUESTPARAMETER(x) ((x)->FacilityRequestParameter) + /* Facility depending parameters */ +#define FACILITY_CONF_CONTROLLER(x) ((x)->adr.adrController) +#define FACILITY_CONF_PLCI(x) ((x)->adr.adrPLCI) +#define FACILITY_CONF_NCCI(x) ((x)->adr.adrNCCI) + /* Depending on the facility selector */ +#define FACILITY_CONF_INFO(x) ((x)->Info) + /* 0: request accepted */ + /* 0x2001: message not supported in current state */ + /* 0x2002: incorrect Controller/PLCI/NCCI */ + /* 0x2007: illegal message parameter coding */ + /* 0x300B: facility not supported */ +#define FACILITY_CONF_FACILITYSELECTOR(x) ((x)->FacilitySelector) + /* 0: Handset Support */ + /* 1: DTMF */ + /* 2 to n: reserved */ +#define FACILITY_CONF_FACILITYCONFIRMATIONPARAMETER(x) ((x)->FacilityConfirmationParameter) + /* Facility-depending parameters */ +#define FACILITY_IND_CONTROLLER(x) ((x)->adr.adrController) +#define FACILITY_IND_PLCI(x) ((x)->adr.adrPLCI) +#define FACILITY_IND_NCCI(x) ((x)->adr.adrNCCI) + /* Depending on the facility selector */ +#define FACILITY_IND_FACILITYSELECTOR(x) ((x)->FacilitySelector) + /* 0: Handset Support */ + /* 1: DTMF */ + /* 2 to n: reserved */ +#define FACILITY_IND_FACILITYINDICATIONPARAMETER(x) ((x)->FacilityIndicationParameter) + /* Facility-depending parameters */ +#define FACILITY_RESP_CONTROLLER(x) ((x)->adr.adrController) +#define FACILITY_RESP_PLCI(x) ((x)->adr.adrPLCI) +#define FACILITY_RESP_NCCI(x) ((x)->adr.adrNCCI) + /* Depending on the facility selector */ +#define FACILITY_RESP_FACILITYSELECTOR(x) ((x)->FacilitySelector) + /* 0: Handset Support */ + /* 1: DTMF */ + /* 2 to n: reserved */ + /* Facility response parameters */ + /* struct */ + /* Facility-depending parameters */ +#define INFO_REQ_CONTROLLER(x) ((x)->adr.adrController) +#define INFO_REQ_PLCI(x) ((x)->adr.adrPLCI) + /* See note */ +#define INFO_REQ_CALLEDPARTYNUMBER(x) ((x)->CalledPartyNumber) + /* Called party number */ +#define INFO_REQ_ADDITIONALINFO(x) ((x)->AdditionalInfo) + /* Additional information elements */ +#define INFO_REQ_BCHANNELINFORMATION(x) ((x)->BChannelinformation) +#define INFO_REQ_KEYPADFACILITY(x) ((x)->Keypadfacility) + /* coded according to ETS 300 102-1 / Q.931 */ +#define INFO_REQ_USERUSERDATA(x) ((x)->Useruserdata) + /* coded according to ETS 300 102-1 / Q.931 */ +#define INFO_REQ_FACILITYDATAARRAY(x) ((x)->Facilitydataarray) + /* which is used to transfer additional parameters coded */ + /* according to ETS 300 102-1 / Q.931 starting from octet 1. */ + /* This field is used to transport one or more complete facility */ + /* data information elements. */ +#define INFO_CONF_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define INFO_CONF_INFO(x) ((x)->Info) + /* 0: transmission of information initiated */ + /* 0x2001: message not supported in current state */ + /* 0x2002: illegal Controller/PLCI */ + /* 0x2003: out of PLCI */ + /* 0x2007: illegal message parameter coding */ +#define INFO_IND_CONTROLLER(x) ((x)->adr.adrController) +#define INFO_IND_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define INFO_IND_INFONUMBER(x) ((x)->InfoNumber) + /* Information element identifier */ +#define INFO_IND_INFOELEMENT(x) ((x)->InfoElement) + /* Information element dependent structure */ +#define INFO_RESP_CONTROLLER(x) ((x)->adr.adrController) +#define INFO_RESP_PLCI(x) ((x)->adr.adrPLCI) + /* As in INFO_IND */ +#define LISTEN_REQ_CONTROLLER(x) ((x)->adr.adrController) +#define LISTEN_REQ_INFOMASK(x) ((x)->InfoMask) + /* Bit field, coding as follows: */ + /* 0: cause */ + /* 1: date/Time */ + /* 2: display */ + /* 3: user-user information */ + /* 4: call progression */ + /* 5: facility */ + /* 6: charging */ + /* 7 to 31: reserved */ +#define LISTEN_REQ_CIPMASK(x) ((x)->CIPmask) + /* Bit field, coding as follows: */ + /* 0: any match */ + /* 1: speech */ + /* 2: unrestricted digital information */ + /* 3: restricted digital information */ + /* 4: 3.1 kHz audio */ + /* 5: 7.0 kHz audio */ + /* 6: video */ + /* 7: packet mode */ + /* 8: 56 kBit/s rate adaptation */ + /* 9: unrestricted digital information with tones/announcements */ + /* 10..15: reserved */ + /* 16: telephony */ + /* 17: fax group 2/3 */ + /* 18: fax group 4 class 1 */ + /* 19: Teletex service (basic and mixed), fax group 4 class 2 */ + /* 20: Teletex service (basic and processable) */ + /* 21: Teletex service (basic) */ + /* 22: Videotex */ + /* 23: Telex */ + /* reserved for additional services */ + /* 25: OSI applications according X.200 */ + /* 26: 7 kHz Telephony */ + /* 27: Video Telephony F.721, first connection */ + /* 28: Video Telephony F.721, second connection */ + /* 29 to 31: reserved */ +#define LISTEN_REQ_CIPMASK2(x) ((x)->CIPmask2) + /* reserved for additional services */ +#define LISTEN_REQ_CALLINGPARTYNUMBER(x) ((x)->CallingPartyNumber) + /* Calling party number */ +#define LISTEN_REQ_CALLINGPARTYSUBADDRESS(x) ((x)->CallingPartySubaddress) + /* Calling party subaddress */ +#define LISTEN_CONF_CONTROLLER(x) ((x)->adr.adrController) +#define LISTEN_CONF_INFO(x) ((x)->Info) + /* 0: listen is active */ + /* 0x2002: illegal controller */ + /* 0x2005: out of LISTEN-Resources */ + /* 0x2007: illegal message parameter coding */ +#define MANUFACTURER_REQ_CONTROLLER(x) ((x)->adr.adrController) +#define MANUFACTURER_REQ_MANUID(x) ((x)->ManuID) + /* Manufacturer specific ID (should be unique) */ + /* Manufacturer specific */ +#define MANUFACTURER_REQ_CLASS(x) ((x)->Class) +#define MANUFACTURER_REQ_FUNCTION(x) ((x)->Function) +#define MANUFACTURER_REQ_MANUDATA(x) ((x)->ManuData) + /* Manufacturer specific data */ +#define MANUFACTURER_CONF_CONTROLLER(x) ((x)->adr.adrController) +#define MANUFACTURER_CONF_MANUID(x) ((x)->ManuID) + /* Manufacturer specific ID (should be unique) */ + /* Manufacturer specific */ +#define MANUFACTURER_CONF_CLASS(x) ((x)->Class) +#define MANUFACTURER_CONF_FUNCTION(x) ((x)->Function) +#define MANUFACTURER_CONF_MANUDATA(x) ((x)->ManuData) + /* Manufacturer specific data */ +#define MANUFACTURER_IND_CONTROLLER(x) ((x)->adr.adrController) +#define MANUFACTURER_IND_MANUID(x) ((x)->ManuID) + /* Manufacturer specific ID (should be unique) */ + /* Manufacturer specific */ +#define MANUFACTURER_IND_CLASS(x) ((x)->Class) +#define MANUFACTURER_IND_FUNCTION(x) ((x)->Function) +#define MANUFACTURER_IND_MANUDATA(x) ((x)->ManuData) + /* Manufacturer specific data */ +#define MANUFACTURER_RESP_CONTROLLER(x) ((x)->adr.adrController) +#define MANUFACTURER_RESP_MANUID(x) ((x)->ManuID) + /* Manufacturer specific ID (should be unique) */ + /* Manufacturer specific */ +#define MANUFACTURER_RESP_CLASS(x) ((x)->Class) +#define MANUFACTURER_RESP_FUNCTION(x) ((x)->Function) +#define MANUFACTURER_RESP_MANUDATA(x) ((x)->ManuData) + /* Manufacturer specific data */ +#define RESET_B3_REQ_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define RESET_B3_REQ_NCPI(x) ((x)->NCPI) + /* Network Control Protocol Information */ +#define RESET_B3_CONF_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define RESET_B3_CONF_INFO(x) ((x)->Info) + /* 0: reset initiated */ + /* 0x0001: NCPI not supported by current protocol, NCPI ignored */ + /* 0x2001: message not supported in current state */ + /* 0x2002: illegal NCCI */ + /* 0x2007: illegal message parameter coding */ + /* 0x3008: NCPI not supported */ + /* 0x300D: reset procedure not supported by current protocol */ +#define RESET_B3_IND_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define RESET_B3_IND_NCPI(x) ((x)->NCPI) + /* Network Control Protocol Information */ +#define RESET_B3_RESP_NCCI(x) ((x)->adr.adrNCCI) + /* Network Control Connection Identifier */ +#define SELECT_B_PROTOCOL_REQ_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define SELECT_B_PROTOCOL_REQ_BPROTOCOL(x) ((x)->BProtocol) + /* Protocol definition */ +#define SELECT_B_PROTOCOL_REQ_B1PROTOCOL(x) ((x)->B1protocol) + /* Physical layer and framing */ +#define SELECT_B_PROTOCOL_REQ_B2PROTOCOL(x) ((x)->B2protocol) + /* Data link layer */ +#define SELECT_B_PROTOCOL_REQ_B3PROTOCOL(x) ((x)->B3protocol) + /* Network layer */ +#define SELECT_B_PROTOCOL_REQ_B1CONFIGURATION(x) ((x)->B1configuration) + /* Physical layer and framing parameter */ +#define SELECT_B_PROTOCOL_REQ_B2CONFIGURATION(x) ((x)->B2configuration) + /* Data link layer parameter */ +#define SELECT_B_PROTOCOL_REQ_B3CONFIGURATION(x) ((x)->B3configuration) + /* Network layer parameter */ +#define SELECT_B_PROTOCOL_CONF_PLCI(x) ((x)->adr.adrPLCI) + /* Physical Link Connection Identifier */ +#define SELECT_B_PROTOCOL_CONF_INFO(x) ((x)->Info) + /* 0: protocol switch successful */ + /* 0x2001: message not supported in current state */ + /* 0x2002: illegal PLCI */ + /* 0x2007: illegal message parameter coding */ + /* 0x3001: B1 protocol not supported */ + /* 0x3002: B2 protocol not supported */ + /* 0x3003: B3 protocol not supported */ + /* 0x3004: B1 protocol parameter not supported */ + /* 0x3005: B2 protocol parameter not supported */ + /* 0x3006: B3 protocol parameter not supported */ + /* 0x3007: B protocol combination not supported */ + +/*----- tests for specific commands -----*/ + +#define IS_CONNECT_IND(m) ((m)->Command==0x02 && (m)->Subcommand==0x82) +#define IS_CONNECT_ACTIVE_IND(m) ((m)->Command==0x03 && (m)->Subcommand==0x82) +#define IS_CONNECT_B3_ACTIVE_IND(m) ((m)->Command==0x83 && (m)->Subcommand==0x82) +#define IS_CONNECT_B3_IND(m) ((m)->Command==0x82 && (m)->Subcommand==0x82) +#define IS_CONNECT_B3_T90_ACTIVE_IND(m) ((m)->Command==0x88 && (m)->Subcommand==0x82) +#define IS_DATA_B3_IND(m) ((m)->Command==0x86 && (m)->Subcommand==0x82) +#define IS_DISCONNECT_B3_IND(m) ((m)->Command==0x84 && (m)->Subcommand==0x82) +#define IS_DISCONNECT_IND(m) ((m)->Command==0x04 && (m)->Subcommand==0x82) +#define IS_FACILITY_IND(m) ((m)->Command==0x80 && (m)->Subcommand==0x82) +#define IS_INFO_IND(m) ((m)->Command==0x08 && (m)->Subcommand==0x82) +#define IS_MANUFACTURER_IND(m) ((m)->Command==0xff && (m)->Subcommand==0x82) +#define IS_RESET_B3_IND(m) ((m)->Command==0x87 && (m)->Subcommand==0x82) +#define IS_ALERT_CONF(m) ((m)->Command==0x01 && (m)->Subcommand==0x81) +#define IS_CONNECT_CONF(m) ((m)->Command==0x02 && (m)->Subcommand==0x81) +#define IS_CONNECT_B3_CONF(m) ((m)->Command==0x82 && (m)->Subcommand==0x81) +#define IS_DATA_B3_CONF(m) ((m)->Command==0x86 && (m)->Subcommand==0x81) +#define IS_DISCONNECT_B3_CONF(m) ((m)->Command==0x84 && (m)->Subcommand==0x81) +#define IS_DISCONNECT_CONF(m) ((m)->Command==0x04 && (m)->Subcommand==0x81) +#define IS_FACILITY_CONF(m) ((m)->Command==0x80 && (m)->Subcommand==0x81) +#define IS_INFO_CONF(m) ((m)->Command==0x08 && (m)->Subcommand==0x81) +#define IS_LISTEN_CONF(m) ((m)->Command==0x05 && (m)->Subcommand==0x81) +#define IS_MANUFACTURER_CONF(m) ((m)->Command==0xff && (m)->Subcommand==0x81) +#define IS_RESET_B3_CONF(m) ((m)->Command==0x87 && (m)->Subcommand==0x81) +#define IS_SELECT_B_PROTOCOL_CONF(m) ((m)->Command==0x41 && (m)->Subcommand==0x81) + +/*----- header functions that fill the _cmsg structure with default -----*/ +/*----- values. Only nonstandard parameter need to be changed -----*/ + +#define ALERT_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x01,0x80,Messagenumber,adr) +#define CONNECT_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x02,0x80,Messagenumber,adr) +#define CONNECT_B3_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x82,0x80,Messagenumber,adr) +#define DATA_B3_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x86,0x80,Messagenumber,adr) +#define DISCONNECT_B3_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x84,0x80,Messagenumber,adr) +#define DISCONNECT_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x04,0x80,Messagenumber,adr) +#define FACILITY_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x80,0x80,Messagenumber,adr) +#define INFO_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x08,0x80,Messagenumber,adr) +#define LISTEN_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x05,0x80,Messagenumber,adr) +#define MANUFACTURER_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0xff,0x80,Messagenumber,adr) +#define RESET_B3_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x87,0x80,Messagenumber,adr) +#define SELECT_B_PROTOCOL_REQ_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x41,0x80,Messagenumber,adr) +#define CONNECT_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x02,0x83,Messagenumber,adr) +#define CONNECT_ACTIVE_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x03,0x83,Messagenumber,adr) +#define CONNECT_B3_ACTIVE_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x83,0x83,Messagenumber,adr) +#define CONNECT_B3_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x82,0x83,Messagenumber,adr) +#define CONNECT_B3_T90_ACTIVE_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x88,0x83,Messagenumber,adr) +#define DATA_B3_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x86,0x83,Messagenumber,adr) +#define DISCONNECT_B3_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x84,0x83,Messagenumber,adr) +#define DISCONNECT_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x04,0x83,Messagenumber,adr) +#define FACILITY_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x80,0x83,Messagenumber,adr) +#define INFO_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x08,0x83,Messagenumber,adr) +#define MANUFACTURER_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0xff,0x83,Messagenumber,adr) +#define RESET_B3_RESP_HEADER(cmsg,ApplId,Messagenumber,adr) \ + CAPI_CMSG_HEADER(cmsg,ApplId,0x87,0x83,Messagenumber,adr) + +/* + * CAPI-functions that correspond to the CAPI messages specified in the + * CAPI 2.0 specification. All possible parameter have to be specified. + * The CAPI message is sent immediately when calling these functions, + * return values are the same as in capi_put_message() + */ + +unsigned ALERT_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cstruct BChannelinformation + ,_cstruct Keypadfacility + ,_cstruct Useruserdata + ,_cstruct Facilitydataarray); +unsigned CONNECT_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cword CIPValue + ,_cstruct CalledPartyNumber + ,_cstruct CallingPartyNumber + ,_cstruct CalledPartySubaddress + ,_cstruct CallingPartySubaddress + ,_cword B1protocol + ,_cword B2protocol + ,_cword B3protocol + ,_cstruct B1configuration + ,_cstruct B2configuration + ,_cstruct B3configuration + ,_cstruct BC + ,_cstruct LLC + ,_cstruct HLC + ,_cstruct BChannelinformation + ,_cstruct Keypadfacility + ,_cstruct Useruserdata + ,_cstruct Facilitydataarray); +unsigned CONNECT_B3_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cstruct NCPI); +unsigned DATA_B3_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,void * Data + ,_cword DataLength + ,_cword DataHandle + ,_cword Flags); +unsigned DISCONNECT_B3_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cstruct NCPI); +unsigned DISCONNECT_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cstruct BChannelinformation + ,_cstruct Keypadfacility + ,_cstruct Useruserdata + ,_cstruct Facilitydataarray); +unsigned FACILITY_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cword FacilitySelector + ,_cstruct FacilityRequestParameter); +unsigned INFO_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cstruct CalledPartyNumber + ,_cstruct BChannelinformation + ,_cstruct Keypadfacility + ,_cstruct Useruserdata + ,_cstruct Facilitydataarray); +unsigned LISTEN_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cdword InfoMask + ,_cdword CIPmask + ,_cdword CIPmask2 + ,_cstruct CallingPartyNumber + ,_cstruct CallingPartySubaddress); +unsigned MANUFACTURER_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cdword ManuID + ,_cdword Class + ,_cdword Function + ,_cstruct ManuData); +unsigned RESET_B3_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cstruct NCPI); +unsigned SELECT_B_PROTOCOL_REQ (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cword B1protocol + ,_cword B2protocol + ,_cword B3protocol + ,_cstruct B1configuration + ,_cstruct B2configuration + ,_cstruct B3configuration); +unsigned CONNECT_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cword Reject + ,_cword B1protocol + ,_cword B2protocol + ,_cword B3protocol + ,_cstruct B1configuration + ,_cstruct B2configuration + ,_cstruct B3configuration + ,_cstruct ConnectedNumber + ,_cstruct ConnectedSubaddress + ,_cstruct LLC + ,_cstruct BChannelinformation + ,_cstruct Keypadfacility + ,_cstruct Useruserdata + ,_cstruct Facilitydataarray); +unsigned CONNECT_ACTIVE_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr); +unsigned CONNECT_B3_ACTIVE_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr); +unsigned CONNECT_B3_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cword Reject + ,_cstruct NCPI); +unsigned CONNECT_B3_T90_ACTIVE_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr); +unsigned DATA_B3_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cword DataHandle); +unsigned DISCONNECT_B3_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr); +unsigned DISCONNECT_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr); +unsigned FACILITY_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cword FacilitySelector + ,_cstruct FacilityResponseParameters); +unsigned INFO_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr); +unsigned MANUFACTURER_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr + ,_cdword ManuID + ,_cdword Class + ,_cdword Function + ,_cstruct ManuData); +unsigned RESET_B3_RESP (_cmsg *cmsg, _cword ApplId, _cword Messagenumber + ,_cdword adr); + + +#ifdef __cplusplus +} +#endif + +#endif /* __CAPIUTIL_H__ */ diff --git a/capi20/convert.c b/capi20/convert.c index 3b673158..b0731dce 100644 --- a/capi20/convert.c +++ b/capi20/convert.c @@ -2,6 +2,12 @@ * $Id$ * * $Log$ + * Revision 1.8 1999/10/20 16:43:17 calle + * - The CAPI20 library is now a shared library. + * - Arguments of function capi20_put_message swapped, to match capi spec. + * - All capi20 related subdirs converted to use automake. + * - Removed dependency to CONFIG_KERNELDIR where not needed. + * * Revision 1.7 1999/09/15 08:10:44 calle * Bugfix: error in 64Bit extention. * @@ -96,7 +102,7 @@ static _cdef cdef[] = { /*2e*/{_CWORD, offsetof(_cmsg,Reason_B3) }, /*2f*/{_CWORD, offsetof(_cmsg,Reject) }, /*30*/{_CSTRUCT, offsetof(_cmsg,Useruserdata) }, - /*31*/{_CDWORD, offsetof(_cmsg,Data64) }, + /*31*/{_CQWORD, offsetof(_cmsg,Data64) }, }; static unsigned char *cpars[] = { @@ -292,7 +298,7 @@ static void PARS_2_MESSAGE (_cmsg *cmsg) { break; case _CQWORD: qwordTLcpy (cmsg->m+cmsg->l, OFF); - cmsg->l+=4; + cmsg->l+=8; break; case _CSTRUCT: if (*(CAPI_MESSAGE *) OFF == 0) {