root/include/linux/isdn/capiutil.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. capimsg_setu8
  2. capimsg_setu16
  3. capimsg_setu32
  4. capi_cmsg_answer
  5. capi_fill_CONNECT_B3_REQ
  6. capi_fill_FACILITY_REQ
  7. capi_fill_INFO_REQ
  8. capi_fill_LISTEN_REQ
  9. capi_fill_ALERT_REQ
  10. capi_fill_CONNECT_REQ
  11. capi_fill_DATA_B3_REQ
  12. capi_fill_DISCONNECT_REQ
  13. capi_fill_DISCONNECT_B3_REQ
  14. capi_fill_MANUFACTURER_REQ
  15. capi_fill_RESET_B3_REQ
  16. capi_fill_SELECT_B_PROTOCOL_REQ
  17. capi_fill_CONNECT_RESP
  18. capi_fill_CONNECT_ACTIVE_RESP
  19. capi_fill_CONNECT_B3_ACTIVE_RESP
  20. capi_fill_CONNECT_B3_RESP
  21. capi_fill_CONNECT_B3_T90_ACTIVE_RESP
  22. capi_fill_DATA_B3_RESP
  23. capi_fill_DISCONNECT_B3_RESP
  24. capi_fill_DISCONNECT_RESP
  25. capi_fill_FACILITY_RESP
  26. capi_fill_INFO_RESP
  27. capi_fill_MANUFACTURER_RESP
  28. capi_fill_RESET_B3_RESP

   1 /* $Id: capiutil.h,v 1.5.6.2 2001/09/23 22:24:33 kai Exp $
   2  *
   3  * CAPI 2.0 defines & types
   4  *
   5  * From CAPI 2.0 Development Kit AVM 1995 (msg.c)
   6  * Rewritten for Linux 1996 by Carsten Paeth <calle@calle.de>
   7  *
   8  * This software may be used and distributed according to the terms
   9  * of the GNU General Public License, incorporated herein by reference.
  10  *
  11  */
  12 
  13 #ifndef __CAPIUTIL_H__
  14 #define __CAPIUTIL_H__
  15 
  16 #include <asm/types.h>
  17 
  18 #define CAPIMSG_BASELEN         8
  19 #define CAPIMSG_U8(m, off)      (m[off])
  20 #define CAPIMSG_U16(m, off)     (m[off]|(m[(off)+1]<<8))
  21 #define CAPIMSG_U32(m, off)     (m[off]|(m[(off)+1]<<8)|(m[(off)+2]<<16)|(m[(off)+3]<<24))
  22 #define CAPIMSG_LEN(m)          CAPIMSG_U16(m,0)
  23 #define CAPIMSG_APPID(m)        CAPIMSG_U16(m,2)
  24 #define CAPIMSG_COMMAND(m)      CAPIMSG_U8(m,4)
  25 #define CAPIMSG_SUBCOMMAND(m)   CAPIMSG_U8(m,5)
  26 #define CAPIMSG_CMD(m)          (((m[4])<<8)|(m[5]))
  27 #define CAPIMSG_MSGID(m)        CAPIMSG_U16(m,6)
  28 #define CAPIMSG_CONTROLLER(m)   (m[8] & 0x7f)
  29 #define CAPIMSG_CONTROL(m)      CAPIMSG_U32(m, 8)
  30 #define CAPIMSG_NCCI(m)         CAPIMSG_CONTROL(m)
  31 #define CAPIMSG_DATALEN(m)      CAPIMSG_U16(m,16) /* DATA_B3_REQ */
  32 
  33 static inline void capimsg_setu8(void *m, int off, __u8 val)
  34 {
  35         ((__u8 *)m)[off] = val;
  36 }
  37 
  38 static inline void capimsg_setu16(void *m, int off, __u16 val)
  39 {
  40         ((__u8 *)m)[off] = val & 0xff;
  41         ((__u8 *)m)[off+1] = (val >> 8) & 0xff;
  42 }
  43 
  44 static inline void capimsg_setu32(void *m, int off, __u32 val)
  45 {
  46         ((__u8 *)m)[off] = val & 0xff;
  47         ((__u8 *)m)[off+1] = (val >> 8) & 0xff;
  48         ((__u8 *)m)[off+2] = (val >> 16) & 0xff;
  49         ((__u8 *)m)[off+3] = (val >> 24) & 0xff;
  50 }
  51 
  52 #define CAPIMSG_SETLEN(m, len)          capimsg_setu16(m, 0, len)
  53 #define CAPIMSG_SETAPPID(m, applid)     capimsg_setu16(m, 2, applid)
  54 #define CAPIMSG_SETCOMMAND(m,cmd)       capimsg_setu8(m, 4, cmd)
  55 #define CAPIMSG_SETSUBCOMMAND(m, cmd)   capimsg_setu8(m, 5, cmd)
  56 #define CAPIMSG_SETMSGID(m, msgid)      capimsg_setu16(m, 6, msgid)
  57 #define CAPIMSG_SETCONTROL(m, contr)    capimsg_setu32(m, 8, contr)
  58 #define CAPIMSG_SETDATALEN(m, len)      capimsg_setu16(m, 16, len)
  59 
  60 /*----- basic-type definitions -----*/
  61 
  62 typedef __u8 *_cstruct;
  63 
  64 typedef enum {
  65         CAPI_COMPOSE,
  66         CAPI_DEFAULT
  67 } _cmstruct;
  68 
  69 /*
  70    The _cmsg structure contains all possible CAPI 2.0 parameter.
  71    All parameters are stored here first. The function CAPI_CMSG_2_MESSAGE
  72    assembles the parameter and builds CAPI2.0 conform messages.
  73    CAPI_MESSAGE_2_CMSG disassembles CAPI 2.0 messages and stores the
  74    parameter in the _cmsg structure
  75  */
  76 
  77 typedef struct {
  78         /* Header */
  79         __u16 ApplId;
  80         __u8 Command;
  81         __u8 Subcommand;
  82         __u16 Messagenumber;
  83 
  84         /* Parameter */
  85         union {
  86                 __u32 adrController;
  87                 __u32 adrPLCI;
  88                 __u32 adrNCCI;
  89         } adr;
  90 
  91         _cmstruct AdditionalInfo;
  92         _cstruct B1configuration;
  93         __u16 B1protocol;
  94         _cstruct B2configuration;
  95         __u16 B2protocol;
  96         _cstruct B3configuration;
  97         __u16 B3protocol;
  98         _cstruct BC;
  99         _cstruct BChannelinformation;
 100         _cmstruct BProtocol;
 101         _cstruct CalledPartyNumber;
 102         _cstruct CalledPartySubaddress;
 103         _cstruct CallingPartyNumber;
 104         _cstruct CallingPartySubaddress;
 105         __u32 CIPmask;
 106         __u32 CIPmask2;
 107         __u16 CIPValue;
 108         __u32 Class;
 109         _cstruct ConnectedNumber;
 110         _cstruct ConnectedSubaddress;
 111         __u32 Data;
 112         __u16 DataHandle;
 113         __u16 DataLength;
 114         _cstruct FacilityConfirmationParameter;
 115         _cstruct Facilitydataarray;
 116         _cstruct FacilityIndicationParameter;
 117         _cstruct FacilityRequestParameter;
 118         __u16 FacilitySelector;
 119         __u16 Flags;
 120         __u32 Function;
 121         _cstruct HLC;
 122         __u16 Info;
 123         _cstruct InfoElement;
 124         __u32 InfoMask;
 125         __u16 InfoNumber;
 126         _cstruct Keypadfacility;
 127         _cstruct LLC;
 128         _cstruct ManuData;
 129         __u32 ManuID;
 130         _cstruct NCPI;
 131         __u16 Reason;
 132         __u16 Reason_B3;
 133         __u16 Reject;
 134         _cstruct Useruserdata;
 135 
 136         /* intern */
 137         unsigned l, p;
 138         unsigned char *par;
 139         __u8 *m;
 140 
 141         /* buffer to construct message */
 142         __u8 buf[180];
 143 
 144 } _cmsg;
 145 
 146 /*
 147  * capi_cmsg2message() assembles the parameter from _cmsg to a CAPI 2.0
 148  * conform message
 149  */
 150 unsigned capi_cmsg2message(_cmsg * cmsg, __u8 * msg);
 151 
 152 /*
 153  *  capi_message2cmsg disassembles a CAPI message an writes the parameter
 154  *  into _cmsg for easy access
 155  */
 156 unsigned capi_message2cmsg(_cmsg * cmsg, __u8 * msg);
 157 
 158 /*
 159  * capi_cmsg_header() fills the _cmsg structure with default values, so only
 160  * parameter with non default values must be changed before sending the
 161  * message.
 162  */
 163 unsigned capi_cmsg_header(_cmsg * cmsg, __u16 _ApplId,
 164                           __u8 _Command, __u8 _Subcommand,
 165                           __u16 _Messagenumber, __u32 _Controller);
 166 
 167 /*-----------------------------------------------------------------------*/
 168 
 169 /*
 170  * Debugging / Tracing functions
 171  */
 172 
 173 char *capi_cmd2str(__u8 cmd, __u8 subcmd);
 174 
 175 typedef struct {
 176         u_char  *buf;
 177         u_char  *p;
 178         size_t  size;
 179         size_t  pos;
 180 } _cdebbuf;
 181 
 182 #define CDEBUG_SIZE     1024
 183 #define CDEBUG_GSIZE    4096
 184 
 185 void cdebbuf_free(_cdebbuf *cdb);
 186 int cdebug_init(void);
 187 void cdebug_exit(void);
 188 
 189 _cdebbuf *capi_cmsg2str(_cmsg *cmsg);
 190 _cdebbuf *capi_message2str(__u8 *msg);
 191 
 192 /*-----------------------------------------------------------------------*/
 193 
 194 static inline void capi_cmsg_answer(_cmsg * cmsg)
 195 {
 196         cmsg->Subcommand |= 0x01;
 197 }
 198 
 199 /*-----------------------------------------------------------------------*/
 200 
 201 static inline void capi_fill_CONNECT_B3_REQ(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 202                                             __u32 adr,
 203                                             _cstruct NCPI)
 204 {
 205         capi_cmsg_header(cmsg, ApplId, 0x82, 0x80, Messagenumber, adr);
 206         cmsg->NCPI = NCPI;
 207 }
 208 
 209 static inline void capi_fill_FACILITY_REQ(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 210                                           __u32 adr,
 211                                           __u16 FacilitySelector,
 212                                        _cstruct FacilityRequestParameter)
 213 {
 214         capi_cmsg_header(cmsg, ApplId, 0x80, 0x80, Messagenumber, adr);
 215         cmsg->FacilitySelector = FacilitySelector;
 216         cmsg->FacilityRequestParameter = FacilityRequestParameter;
 217 }
 218 
 219 static inline void capi_fill_INFO_REQ(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 220                                       __u32 adr,
 221                                       _cstruct CalledPartyNumber,
 222                                       _cstruct BChannelinformation,
 223                                       _cstruct Keypadfacility,
 224                                       _cstruct Useruserdata,
 225                                       _cstruct Facilitydataarray)
 226 {
 227         capi_cmsg_header(cmsg, ApplId, 0x08, 0x80, Messagenumber, adr);
 228         cmsg->CalledPartyNumber = CalledPartyNumber;
 229         cmsg->BChannelinformation = BChannelinformation;
 230         cmsg->Keypadfacility = Keypadfacility;
 231         cmsg->Useruserdata = Useruserdata;
 232         cmsg->Facilitydataarray = Facilitydataarray;
 233 }
 234 
 235 static inline void capi_fill_LISTEN_REQ(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 236                                         __u32 adr,
 237                                         __u32 InfoMask,
 238                                         __u32 CIPmask,
 239                                         __u32 CIPmask2,
 240                                         _cstruct CallingPartyNumber,
 241                                         _cstruct CallingPartySubaddress)
 242 {
 243         capi_cmsg_header(cmsg, ApplId, 0x05, 0x80, Messagenumber, adr);
 244         cmsg->InfoMask = InfoMask;
 245         cmsg->CIPmask = CIPmask;
 246         cmsg->CIPmask2 = CIPmask2;
 247         cmsg->CallingPartyNumber = CallingPartyNumber;
 248         cmsg->CallingPartySubaddress = CallingPartySubaddress;
 249 }
 250 
 251 static inline void capi_fill_ALERT_REQ(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 252                                        __u32 adr,
 253                                        _cstruct BChannelinformation,
 254                                        _cstruct Keypadfacility,
 255                                        _cstruct Useruserdata,
 256                                        _cstruct Facilitydataarray)
 257 {
 258         capi_cmsg_header(cmsg, ApplId, 0x01, 0x80, Messagenumber, adr);
 259         cmsg->BChannelinformation = BChannelinformation;
 260         cmsg->Keypadfacility = Keypadfacility;
 261         cmsg->Useruserdata = Useruserdata;
 262         cmsg->Facilitydataarray = Facilitydataarray;
 263 }
 264 
 265 static inline void capi_fill_CONNECT_REQ(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 266                                          __u32 adr,
 267                                          __u16 CIPValue,
 268                                          _cstruct CalledPartyNumber,
 269                                          _cstruct CallingPartyNumber,
 270                                          _cstruct CalledPartySubaddress,
 271                                          _cstruct CallingPartySubaddress,
 272                                          __u16 B1protocol,
 273                                          __u16 B2protocol,
 274                                          __u16 B3protocol,
 275                                          _cstruct B1configuration,
 276                                          _cstruct B2configuration,
 277                                          _cstruct B3configuration,
 278                                          _cstruct BC,
 279                                          _cstruct LLC,
 280                                          _cstruct HLC,
 281                                          _cstruct BChannelinformation,
 282                                          _cstruct Keypadfacility,
 283                                          _cstruct Useruserdata,
 284                                          _cstruct Facilitydataarray)
 285 {
 286 
 287         capi_cmsg_header(cmsg, ApplId, 0x02, 0x80, Messagenumber, adr);
 288         cmsg->CIPValue = CIPValue;
 289         cmsg->CalledPartyNumber = CalledPartyNumber;
 290         cmsg->CallingPartyNumber = CallingPartyNumber;
 291         cmsg->CalledPartySubaddress = CalledPartySubaddress;
 292         cmsg->CallingPartySubaddress = CallingPartySubaddress;
 293         cmsg->B1protocol = B1protocol;
 294         cmsg->B2protocol = B2protocol;
 295         cmsg->B3protocol = B3protocol;
 296         cmsg->B1configuration = B1configuration;
 297         cmsg->B2configuration = B2configuration;
 298         cmsg->B3configuration = B3configuration;
 299         cmsg->BC = BC;
 300         cmsg->LLC = LLC;
 301         cmsg->HLC = HLC;
 302         cmsg->BChannelinformation = BChannelinformation;
 303         cmsg->Keypadfacility = Keypadfacility;
 304         cmsg->Useruserdata = Useruserdata;
 305         cmsg->Facilitydataarray = Facilitydataarray;
 306 }
 307 
 308 static inline void capi_fill_DATA_B3_REQ(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 309                                          __u32 adr,
 310                                          __u32 Data,
 311                                          __u16 DataLength,
 312                                          __u16 DataHandle,
 313                                          __u16 Flags)
 314 {
 315 
 316         capi_cmsg_header(cmsg, ApplId, 0x86, 0x80, Messagenumber, adr);
 317         cmsg->Data = Data;
 318         cmsg->DataLength = DataLength;
 319         cmsg->DataHandle = DataHandle;
 320         cmsg->Flags = Flags;
 321 }
 322 
 323 static inline void capi_fill_DISCONNECT_REQ(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 324                                             __u32 adr,
 325                                             _cstruct BChannelinformation,
 326                                             _cstruct Keypadfacility,
 327                                             _cstruct Useruserdata,
 328                                             _cstruct Facilitydataarray)
 329 {
 330 
 331         capi_cmsg_header(cmsg, ApplId, 0x04, 0x80, Messagenumber, adr);
 332         cmsg->BChannelinformation = BChannelinformation;
 333         cmsg->Keypadfacility = Keypadfacility;
 334         cmsg->Useruserdata = Useruserdata;
 335         cmsg->Facilitydataarray = Facilitydataarray;
 336 }
 337 
 338 static inline void capi_fill_DISCONNECT_B3_REQ(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 339                                                __u32 adr,
 340                                                _cstruct NCPI)
 341 {
 342 
 343         capi_cmsg_header(cmsg, ApplId, 0x84, 0x80, Messagenumber, adr);
 344         cmsg->NCPI = NCPI;
 345 }
 346 
 347 static inline void capi_fill_MANUFACTURER_REQ(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 348                                               __u32 adr,
 349                                               __u32 ManuID,
 350                                               __u32 Class,
 351                                               __u32 Function,
 352                                               _cstruct ManuData)
 353 {
 354 
 355         capi_cmsg_header(cmsg, ApplId, 0xff, 0x80, Messagenumber, adr);
 356         cmsg->ManuID = ManuID;
 357         cmsg->Class = Class;
 358         cmsg->Function = Function;
 359         cmsg->ManuData = ManuData;
 360 }
 361 
 362 static inline void capi_fill_RESET_B3_REQ(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 363                                           __u32 adr,
 364                                           _cstruct NCPI)
 365 {
 366 
 367         capi_cmsg_header(cmsg, ApplId, 0x87, 0x80, Messagenumber, adr);
 368         cmsg->NCPI = NCPI;
 369 }
 370 
 371 static inline void capi_fill_SELECT_B_PROTOCOL_REQ(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 372                                                    __u32 adr,
 373                                                    __u16 B1protocol,
 374                                                    __u16 B2protocol,
 375                                                    __u16 B3protocol,
 376                                                 _cstruct B1configuration,
 377                                                 _cstruct B2configuration,
 378                                                 _cstruct B3configuration)
 379 {
 380 
 381         capi_cmsg_header(cmsg, ApplId, 0x41, 0x80, Messagenumber, adr);
 382         cmsg->B1protocol = B1protocol;
 383         cmsg->B2protocol = B2protocol;
 384         cmsg->B3protocol = B3protocol;
 385         cmsg->B1configuration = B1configuration;
 386         cmsg->B2configuration = B2configuration;
 387         cmsg->B3configuration = B3configuration;
 388 }
 389 
 390 static inline void capi_fill_CONNECT_RESP(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 391                                           __u32 adr,
 392                                           __u16 Reject,
 393                                           __u16 B1protocol,
 394                                           __u16 B2protocol,
 395                                           __u16 B3protocol,
 396                                           _cstruct B1configuration,
 397                                           _cstruct B2configuration,
 398                                           _cstruct B3configuration,
 399                                           _cstruct ConnectedNumber,
 400                                           _cstruct ConnectedSubaddress,
 401                                           _cstruct LLC,
 402                                           _cstruct BChannelinformation,
 403                                           _cstruct Keypadfacility,
 404                                           _cstruct Useruserdata,
 405                                           _cstruct Facilitydataarray)
 406 {
 407         capi_cmsg_header(cmsg, ApplId, 0x02, 0x83, Messagenumber, adr);
 408         cmsg->Reject = Reject;
 409         cmsg->B1protocol = B1protocol;
 410         cmsg->B2protocol = B2protocol;
 411         cmsg->B3protocol = B3protocol;
 412         cmsg->B1configuration = B1configuration;
 413         cmsg->B2configuration = B2configuration;
 414         cmsg->B3configuration = B3configuration;
 415         cmsg->ConnectedNumber = ConnectedNumber;
 416         cmsg->ConnectedSubaddress = ConnectedSubaddress;
 417         cmsg->LLC = LLC;
 418         cmsg->BChannelinformation = BChannelinformation;
 419         cmsg->Keypadfacility = Keypadfacility;
 420         cmsg->Useruserdata = Useruserdata;
 421         cmsg->Facilitydataarray = Facilitydataarray;
 422 }
 423 
 424 static inline void capi_fill_CONNECT_ACTIVE_RESP(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 425                                                  __u32 adr)
 426 {
 427 
 428         capi_cmsg_header(cmsg, ApplId, 0x03, 0x83, Messagenumber, adr);
 429 }
 430 
 431 static inline void capi_fill_CONNECT_B3_ACTIVE_RESP(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 432                                                     __u32 adr)
 433 {
 434 
 435         capi_cmsg_header(cmsg, ApplId, 0x83, 0x83, Messagenumber, adr);
 436 }
 437 
 438 static inline void capi_fill_CONNECT_B3_RESP(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 439                                              __u32 adr,
 440                                              __u16 Reject,
 441                                              _cstruct NCPI)
 442 {
 443         capi_cmsg_header(cmsg, ApplId, 0x82, 0x83, Messagenumber, adr);
 444         cmsg->Reject = Reject;
 445         cmsg->NCPI = NCPI;
 446 }
 447 
 448 static inline void capi_fill_CONNECT_B3_T90_ACTIVE_RESP(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 449                                                         __u32 adr)
 450 {
 451 
 452         capi_cmsg_header(cmsg, ApplId, 0x88, 0x83, Messagenumber, adr);
 453 }
 454 
 455 static inline void capi_fill_DATA_B3_RESP(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 456                                           __u32 adr,
 457                                           __u16 DataHandle)
 458 {
 459 
 460         capi_cmsg_header(cmsg, ApplId, 0x86, 0x83, Messagenumber, adr);
 461         cmsg->DataHandle = DataHandle;
 462 }
 463 
 464 static inline void capi_fill_DISCONNECT_B3_RESP(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 465                                                 __u32 adr)
 466 {
 467 
 468         capi_cmsg_header(cmsg, ApplId, 0x84, 0x83, Messagenumber, adr);
 469 }
 470 
 471 static inline void capi_fill_DISCONNECT_RESP(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 472                                              __u32 adr)
 473 {
 474 
 475         capi_cmsg_header(cmsg, ApplId, 0x04, 0x83, Messagenumber, adr);
 476 }
 477 
 478 static inline void capi_fill_FACILITY_RESP(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 479                                            __u32 adr,
 480                                            __u16 FacilitySelector)
 481 {
 482 
 483         capi_cmsg_header(cmsg, ApplId, 0x80, 0x83, Messagenumber, adr);
 484         cmsg->FacilitySelector = FacilitySelector;
 485 }
 486 
 487 static inline void capi_fill_INFO_RESP(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 488                                        __u32 adr)
 489 {
 490 
 491         capi_cmsg_header(cmsg, ApplId, 0x08, 0x83, Messagenumber, adr);
 492 }
 493 
 494 static inline void capi_fill_MANUFACTURER_RESP(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 495                                                __u32 adr,
 496                                                __u32 ManuID,
 497                                                __u32 Class,
 498                                                __u32 Function,
 499                                                _cstruct ManuData)
 500 {
 501 
 502         capi_cmsg_header(cmsg, ApplId, 0xff, 0x83, Messagenumber, adr);
 503         cmsg->ManuID = ManuID;
 504         cmsg->Class = Class;
 505         cmsg->Function = Function;
 506         cmsg->ManuData = ManuData;
 507 }
 508 
 509 static inline void capi_fill_RESET_B3_RESP(_cmsg * cmsg, __u16 ApplId, __u16 Messagenumber,
 510                                            __u32 adr)
 511 {
 512 
 513         capi_cmsg_header(cmsg, ApplId, 0x87, 0x83, Messagenumber, adr);
 514 }
 515 
 516 #endif                          /* __CAPIUTIL_H__ */

/* [<][>][^][v][top][bottom][index][help] */