#ifndef __CAPI20_H #define __CAPI20_H #include #ifdef __cplusplus extern "C" { #endif /*----- basic-type definitions -----*/ typedef unsigned char *CAPI_MESSAGE; typedef unsigned char _cbyte; typedef unsigned short _cword; typedef unsigned long _cdword; typedef CAPI_MESSAGE _cstruct; typedef enum { CAPI_COMPOSE = 0, CAPI_DEFAULT = 1 } _cmstruct; /*----- errornumbers -----*/ typedef enum { CapiToManyAppls =0x1001, CapiLogBlkSizeToSmall =0x1002, CapiBuffExeceeds64k =0x1003, CapiMsgBufSizeToSmall =0x1004, CapiAnzLogConnNotSupported =0x1005, CapiRegReserved =0x1006, CapiRegBusy =0x1007, CapiRegOSResourceErr =0x1008, CapiRegNotInstalled =0x1009, CapiRegCtrlerNotSupportExtEquip =0x100a, CapiRegCtrlerOnlySupportExtEquip =0x100b } CAPI_REGISTER_ERROR; typedef enum { CapiNoError =0x0000, CapiIllAppNr =0x1101, CapiIllCmdOrSubcmdOrMsgToSmall =0x1102, CapiSendQueueFull =0x1103, CapiReceiveQueueEmpty =0x1104, CapiReceiveOverflow =0x1105, CapiUnknownNotPar =0x1106, CapiMsgBusy =0x1107, CapiMsgOSResourceErr =0x1108, CapiMsgNotInstalled =0x1109, CapiMsgCtrlerNotSupportExtEquip =0x110a, CapiMsgCtrlerOnlySupportExtEquip =0x110b } MESSAGE_EXCHANGE_ERROR; /*----- 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 /* standard CAPI2.0 functions */ unsigned capi20_isinstalled (void); _cword capi20_register (unsigned MaxB3Connection, unsigned MaxB3Blks, unsigned MaxSizeB3, CAPI_REGISTER_ERROR *ErrorCode); MESSAGE_EXCHANGE_ERROR capi20_release (unsigned Appl_Id); MESSAGE_EXCHANGE_ERROR capi20_put_message (CAPI_MESSAGE Msg, unsigned Appl_Id); MESSAGE_EXCHANGE_ERROR capi20_get_message (unsigned Appl_Id, CAPI_MESSAGE *ReturnMessage); CAPI_MESSAGE capi20_get_manufacturer (unsigned contr, CAPI_MESSAGE LpBuffer); CAPI_MESSAGE capi20_get_version (unsigned contr, CAPI_MESSAGE version); CAPI_MESSAGE capi20_get_serial_number (unsigned contr, CAPI_MESSAGE LpBuffer); MESSAGE_EXCHANGE_ERROR capi20_get_profile (unsigned Controller, CAPI_MESSAGE LpBuffer); /* CAPI2.0 Spec names */ #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_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 /* extra functions */ #define CAPI20_WaitforMessage capi20_waitformessage MESSAGE_EXCHANGE_ERROR capi20_waitformessage(_cword Appl_Id, struct timeval *tvp); int capi20_fileno(_cword applid); /* * 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 Data; _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; /* intern */ unsigned l,p; unsigned char *par; CAPI_MESSAGE m; } _cmsg; unsigned capi_cmsg2message(_cmsg *cmsg, CAPI_MESSAGE msg); unsigned capi_message2cmsg (_cmsg *cmsg, CAPI_MESSAGE msg); /* * capi_put_cmsg() works like capi_put_message() but it converts the _cmsg * first with capi_cmsg2message(). Possible errors from capi_put_message() * will be returned. */ unsigned capi_put_cmsg(_cmsg *cmsg); /* * capi_get_cmsg() works like capi_get_message() and converts the CAPI message * to a _cmsg with capi_message2cmsg(). Possible errors from capi_get_message() * will be returned. */ unsigned capi_get_cmsg(_cmsg *cmsg, unsigned applid); /* * capi_cmsg_header() fills the _cmsg structure with default values, so only * parameter with non default values must be changed before sending the * message. */ unsigned capi_cmsg_header (_cmsg *cmsg, _cword _ApplId, _cbyte _Command, _cbyte _Subcommand, _cword _Messagenumber, _cdword _Controller); /* * capi_cmsg_answer() is used to answer indications. It changes the header * of an indication to a response, and leaves all other parameters the same */ unsigned capi_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 ,_cdword 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 /* __CAPI20_H */