File Index
Files and directories
Sign in
FILE

kcapi.h

File preview with syntax highlighting.

linux-6.19.14/drivers/isdn/capi/kcapi.h C
  1/*
  2 * Kernel CAPI 2.0 Module
  3 *
  4 * Copyright 1999 by Carsten Paeth <calle@calle.de>
  5 * Copyright 2002 by Kai Germaschewski <kai@germaschewski.name>
  6 *
  7 * This software may be used and distributed according to the terms
  8 * of the GNU General Public License, incorporated herein by reference.
  9 *
 10 */
 11
 12
 13#include <linux/kernel.h>
 14#include <linux/spinlock.h>
 15#include <linux/list.h>
 16#include <linux/isdn/capilli.h>
 17
 18#ifdef KCAPI_DEBUG
 19#define DBG(format, arg...) do {					\
 20		printk(KERN_DEBUG "%s: " format "\n" , __func__ , ## arg); \
 21	} while (0)
 22#else
 23#define DBG(format, arg...) /* */
 24#endif
 25
 26enum {
 27	CAPI_CTR_DETACHED = 0,
 28	CAPI_CTR_DETECTED = 1,
 29	CAPI_CTR_LOADING  = 2,
 30	CAPI_CTR_RUNNING  = 3,
 31};
 32
 33extern struct capi_ctr *capi_controller[CAPI_MAXCONTR];
 34extern struct mutex capi_controller_lock;
 35
 36extern struct capi20_appl *capi_applications[CAPI_MAXAPPL];
 37
 38void kcapi_proc_init(void);
 39void kcapi_proc_exit(void);
 40
 41struct capi20_appl {
 42	u16 applid;
 43	capi_register_params rparam;
 44	void (*recv_message)(struct capi20_appl *ap, struct sk_buff *skb);
 45	void *private;
 46
 47	/* internal to kernelcapi.o */
 48	unsigned long nrecvctlpkt;
 49	unsigned long nrecvdatapkt;
 50	unsigned long nsentctlpkt;
 51	unsigned long nsentdatapkt;
 52	struct mutex recv_mtx;
 53	struct sk_buff_head recv_queue;
 54	struct work_struct recv_work;
 55	int release_in_progress;
 56};
 57
 58u16 capi20_isinstalled(void);
 59u16 capi20_register(struct capi20_appl *ap);
 60u16 capi20_release(struct capi20_appl *ap);
 61u16 capi20_put_message(struct capi20_appl *ap, struct sk_buff *skb);
 62u16 capi20_get_manufacturer(u32 contr, u8 buf[CAPI_MANUFACTURER_LEN]);
 63u16 capi20_get_version(u32 contr, struct capi_version *verp);
 64u16 capi20_get_serial(u32 contr, u8 serial[CAPI_SERIAL_LEN]);
 65u16 capi20_get_profile(u32 contr, struct capi_profile *profp);
 66int capi20_manufacturer(unsigned long cmd, void __user *data);
 67
 68#define CAPICTR_UP			0
 69#define CAPICTR_DOWN			1
 70
 71int kcapi_init(void);
 72void kcapi_exit(void);
 73
 74/*----- basic-type definitions -----*/
 75
 76typedef __u8 *_cstruct;
 77
 78typedef enum {
 79	CAPI_COMPOSE,
 80	CAPI_DEFAULT
 81} _cmstruct;
 82
 83/*
 84   The _cmsg structure contains all possible CAPI 2.0 parameter.
 85   All parameters are stored here first. The function CAPI_CMSG_2_MESSAGE
 86   assembles the parameter and builds CAPI2.0 conform messages.
 87   CAPI_MESSAGE_2_CMSG disassembles CAPI 2.0 messages and stores the
 88   parameter in the _cmsg structure
 89 */
 90
 91typedef struct {
 92	/* Header */
 93	__u16 ApplId;
 94	__u8 Command;
 95	__u8 Subcommand;
 96	__u16 Messagenumber;
 97
 98	/* Parameter */
 99	union {
100		__u32 adrController;
101		__u32 adrPLCI;
102		__u32 adrNCCI;
103	} adr;
104
105	_cmstruct AdditionalInfo;
106	_cstruct B1configuration;
107	__u16 B1protocol;
108	_cstruct B2configuration;
109	__u16 B2protocol;
110	_cstruct B3configuration;
111	__u16 B3protocol;
112	_cstruct BC;
113	_cstruct BChannelinformation;
114	_cmstruct BProtocol;
115	_cstruct CalledPartyNumber;
116	_cstruct CalledPartySubaddress;
117	_cstruct CallingPartyNumber;
118	_cstruct CallingPartySubaddress;
119	__u32 CIPmask;
120	__u32 CIPmask2;
121	__u16 CIPValue;
122	__u32 Class;
123	_cstruct ConnectedNumber;
124	_cstruct ConnectedSubaddress;
125	__u32 Data;
126	__u16 DataHandle;
127	__u16 DataLength;
128	_cstruct FacilityConfirmationParameter;
129	_cstruct Facilitydataarray;
130	_cstruct FacilityIndicationParameter;
131	_cstruct FacilityRequestParameter;
132	__u16 FacilitySelector;
133	__u16 Flags;
134	__u32 Function;
135	_cstruct HLC;
136	__u16 Info;
137	_cstruct InfoElement;
138	__u32 InfoMask;
139	__u16 InfoNumber;
140	_cstruct Keypadfacility;
141	_cstruct LLC;
142	_cstruct ManuData;
143	__u32 ManuID;
144	_cstruct NCPI;
145	__u16 Reason;
146	__u16 Reason_B3;
147	__u16 Reject;
148	_cstruct Useruserdata;
149
150	/* intern */
151	unsigned l, p;
152	unsigned char *par;
153	__u8 *m;
154
155	/* buffer to construct message */
156	__u8 buf[180];
157
158} _cmsg;
159
160/*-----------------------------------------------------------------------*/
161
162/*
163 * Debugging / Tracing functions
164 */
165
166char *capi_cmd2str(__u8 cmd, __u8 subcmd);
167
168typedef struct {
169	u_char	*buf;
170	u_char	*p;
171	size_t	size;
172	size_t	pos;
173} _cdebbuf;
174
175#define	CDEBUG_SIZE	1024
176#define	CDEBUG_GSIZE	4096
177
178void cdebbuf_free(_cdebbuf *cdb);
179int cdebug_init(void);
180void cdebug_exit(void);
181
182_cdebbuf *capi_message2str(__u8 *msg);
~/ Read-only file preview.