/* $Id: init.c,v 1.3 1999/09/10 17:20:34 calle Exp $ * * CAPI registration/deregistration. * This stuff is based heavily on AVM's CAPI-adk for linux. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Log: init.c,v $ * Revision 1.3 1999/09/10 17:20:34 calle * Last changes for proposed standards (CAPI 2.0): * - AK1-148 "Linux Extention" * - AK1-155 "Support of 64-bit Applications" * * Revision 1.2 1998/10/23 12:50:57 fritz * Added RCS keywords and GPL notice. * */ #include #include #include #include #include #include "init.h" #include "contr.h" #include "capi.h" /* * defines needed by InitISDN */ unsigned Appl_Id = 0; #define MaxNumBChan 2 /* max. number of B-channels */ #define MaxNumB3DataBlocks 7 /* max. number of unconfirmed B3-datablocks */ /* 7 is the maximal number supported by CAPI */ #define MaxB3DataBlockSize 2048 /* max. B3-Datablocksize */ /* 2048 is the maximum supported by CAPI */ static CAPI_MESSAGE CAPI_BUFFER = NULL; /* * RegisterCAPI: Check for CAPI, allocate memory for CAPI-buffer and * register application. This function has to be called before using any * other CAPI functions. */ unsigned RegisterCAPI (void) { CAPI_REGISTER_ERROR ErrorCode; int numController; if (CAPI20_ISINSTALLED() != CapiNoError) { fprintf(stderr, "No CAPI support on this system.\n"); return 0; } if (!(numController = GetNumController())) { fprintf(stderr, "RegisterCAPI: No ISDN-controller installed\n"); return 0; } ErrorCode = CAPI20_REGISTER(MaxNumBChan, MaxNumB3DataBlocks, MaxB3DataBlockSize, &Appl_Id); if (ErrorCode != CapiNoError) { fprintf(stderr, "RegisterCAPI: error: %04x\n", ErrorCode); return 0; } return numController; } /* * ReleaseCAPI: deregister application */ void ReleaseCAPI (void) { MESSAGE_EXCHANGE_ERROR ErrorCode; ErrorCode = CAPI20_RELEASE(Appl_Id); if (ErrorCode != 0) fprintf(stderr, "ReleaseCAPI: error: 0x%04X\n", ErrorCode); if (CAPI_BUFFER) { free(CAPI_BUFFER); CAPI_BUFFER = NULL; } }