Subversion Repositories shark

Rev

Blame | Last modification | View Log | RSS feed

/* $Id: capi.h,v 1.1 2004-01-28 15:24:58 giacomo Exp $
 *
 * CAPI 2.0 Interface for Linux
 *
 * Copyright 1997 by Carsten Paeth (calle@calle.in-berlin.de)
 *
 * This software may be used and distributed according to the terms
 * of the GNU General Public License, incorporated herein by reference.
 *
 */


#ifndef __LINUX_CAPI_H__
#define __LINUX_CAPI_H__

#include <asm/types.h>
#include <linux/ioctl.h>
#ifndef __KERNEL__
#include <linux/kernelcapi.h>
#endif

/*
 * CAPI_REGISTER
 */


typedef struct capi_register_params {   /* CAPI_REGISTER */
        __u32 level3cnt;        /* No. of simulatneous user data connections */
        __u32 datablkcnt;       /* No. of buffered data messages */
        __u32 datablklen;       /* Size of buffered data messages */
} capi_register_params;

#define CAPI_REGISTER   _IOW('C',0x01,struct capi_register_params)

/*
 * CAPI_GET_MANUFACTURER
 */


#define CAPI_MANUFACTURER_LEN           64

#define CAPI_GET_MANUFACTURER   _IOWR('C',0x06,int)     /* broken: wanted size 64 (CAPI_MANUFACTURER_LEN) */

/*
 * CAPI_GET_VERSION
 */


typedef struct capi_version {
        __u32 majorversion;
        __u32 minorversion;
        __u32 majormanuversion;
        __u32 minormanuversion;
} capi_version;

#define CAPI_GET_VERSION        _IOWR('C',0x07,struct capi_version)

/*
 * CAPI_GET_SERIAL
 */


#define CAPI_SERIAL_LEN         8
#define CAPI_GET_SERIAL         _IOWR('C',0x08,int)     /* broken: wanted size 8 (CAPI_SERIAL_LEN) */

/*
 * CAPI_GET_PROFILE
 */


typedef struct capi_profile {
        __u16 ncontroller;      /* number of installed controller */
        __u16 nbchannel;        /* number of B-Channels */
        __u32 goptions;         /* global options */
        __u32 support1;         /* B1 protocols support */
        __u32 support2;         /* B2 protocols support */
        __u32 support3;         /* B3 protocols support */
        __u32 reserved[6];      /* reserved */
        __u32 manu[5];          /* manufacturer specific information */
} capi_profile;

#define CAPI_GET_PROFILE        _IOWR('C',0x09,struct capi_profile)

typedef struct capi_manufacturer_cmd {
        unsigned long cmd;
        void *data;
} capi_manufacturer_cmd;

/*
 * CAPI_MANUFACTURER_CMD
 */


#define CAPI_MANUFACTURER_CMD   _IOWR('C',0x20, struct capi_manufacturer_cmd)

/*
 * CAPI_GET_ERRCODE
 * capi errcode is set, * if read, write, or ioctl returns EIO,
 * ioctl returns errcode directly, and in arg, if != 0
 */


#define CAPI_GET_ERRCODE        _IOR('C',0x21, __u16)

/*
 * CAPI_INSTALLED
 */

#define CAPI_INSTALLED          _IOR('C',0x22, __u16)


/*
 * member contr is input for
 * CAPI_GET_MANUFACTURER, CAPI_VERSION, CAPI_GET_SERIAL
 * and CAPI_GET_PROFILE
 */

typedef union capi_ioctl_struct {
        __u32 contr;
        capi_register_params rparams;
        __u8 manufacturer[CAPI_MANUFACTURER_LEN];
        capi_version version;
        __u8 serial[CAPI_SERIAL_LEN];
        capi_profile profile;
        capi_manufacturer_cmd cmd;
        __u16 errcode;
} capi_ioctl_struct;

/*
 * Middleware extension
 */


#define CAPIFLAG_HIGHJACKING    0x0001

#define CAPI_GET_FLAGS          _IOR('C',0x23, unsigned)
#define CAPI_SET_FLAGS          _IOR('C',0x24, unsigned)
#define CAPI_CLR_FLAGS          _IOR('C',0x25, unsigned)

#define CAPI_NCCI_OPENCOUNT     _IOR('C',0x26, unsigned)

#define CAPI_NCCI_GETUNIT       _IOR('C',0x27, unsigned)

#endif                          /* __LINUX_CAPI_H__ */