123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- /*
- * Kernel CAPI 2.0 Module
- *
- * Copyright 1999 by Carsten Paeth <[email protected]>
- * Copyright 2002 by Kai Germaschewski <[email protected]>
- *
- * This software may be used and distributed according to the terms
- * of the GNU General Public License, incorporated herein by reference.
- *
- */
- #include <linux/kernel.h>
- #include <linux/spinlock.h>
- #include <linux/list.h>
- #include <linux/isdn/capilli.h>
- #ifdef KCAPI_DEBUG
- #define DBG(format, arg...) do { \
- printk(KERN_DEBUG "%s: " format "\n" , __func__ , ## arg); \
- } while (0)
- #else
- #define DBG(format, arg...) /* */
- #endif
- enum {
- CAPI_CTR_DETACHED = 0,
- CAPI_CTR_DETECTED = 1,
- CAPI_CTR_LOADING = 2,
- CAPI_CTR_RUNNING = 3,
- };
- extern struct capi_ctr *capi_controller[CAPI_MAXCONTR];
- extern struct mutex capi_controller_lock;
- extern struct capi20_appl *capi_applications[CAPI_MAXAPPL];
- void kcapi_proc_init(void);
- void kcapi_proc_exit(void);
- struct capi20_appl {
- u16 applid;
- capi_register_params rparam;
- void (*recv_message)(struct capi20_appl *ap, struct sk_buff *skb);
- void *private;
- /* internal to kernelcapi.o */
- unsigned long nrecvctlpkt;
- unsigned long nrecvdatapkt;
- unsigned long nsentctlpkt;
- unsigned long nsentdatapkt;
- struct mutex recv_mtx;
- struct sk_buff_head recv_queue;
- struct work_struct recv_work;
- int release_in_progress;
- };
- u16 capi20_isinstalled(void);
- u16 capi20_register(struct capi20_appl *ap);
- u16 capi20_release(struct capi20_appl *ap);
- u16 capi20_put_message(struct capi20_appl *ap, struct sk_buff *skb);
- u16 capi20_get_manufacturer(u32 contr, u8 buf[CAPI_MANUFACTURER_LEN]);
- u16 capi20_get_version(u32 contr, struct capi_version *verp);
- u16 capi20_get_serial(u32 contr, u8 serial[CAPI_SERIAL_LEN]);
- u16 capi20_get_profile(u32 contr, struct capi_profile *profp);
- int capi20_manufacturer(unsigned long cmd, void __user *data);
- #define CAPICTR_UP 0
- #define CAPICTR_DOWN 1
- int kcapi_init(void);
- void kcapi_exit(void);
- /*----- basic-type definitions -----*/
- typedef __u8 *_cstruct;
- typedef enum {
- CAPI_COMPOSE,
- CAPI_DEFAULT
- } _cmstruct;
- /*
- The _cmsg structure contains all possible CAPI 2.0 parameter.
- All parameters are stored here first. The function CAPI_CMSG_2_MESSAGE
- assembles the parameter and builds CAPI2.0 conform messages.
- CAPI_MESSAGE_2_CMSG disassembles CAPI 2.0 messages and stores the
- parameter in the _cmsg structure
- */
- typedef struct {
- /* Header */
- __u16 ApplId;
- __u8 Command;
- __u8 Subcommand;
- __u16 Messagenumber;
- /* Parameter */
- union {
- __u32 adrController;
- __u32 adrPLCI;
- __u32 adrNCCI;
- } adr;
- _cmstruct AdditionalInfo;
- _cstruct B1configuration;
- __u16 B1protocol;
- _cstruct B2configuration;
- __u16 B2protocol;
- _cstruct B3configuration;
- __u16 B3protocol;
- _cstruct BC;
- _cstruct BChannelinformation;
- _cmstruct BProtocol;
- _cstruct CalledPartyNumber;
- _cstruct CalledPartySubaddress;
- _cstruct CallingPartyNumber;
- _cstruct CallingPartySubaddress;
- __u32 CIPmask;
- __u32 CIPmask2;
- __u16 CIPValue;
- __u32 Class;
- _cstruct ConnectedNumber;
- _cstruct ConnectedSubaddress;
- __u32 Data;
- __u16 DataHandle;
- __u16 DataLength;
- _cstruct FacilityConfirmationParameter;
- _cstruct Facilitydataarray;
- _cstruct FacilityIndicationParameter;
- _cstruct FacilityRequestParameter;
- __u16 FacilitySelector;
- __u16 Flags;
- __u32 Function;
- _cstruct HLC;
- __u16 Info;
- _cstruct InfoElement;
- __u32 InfoMask;
- __u16 InfoNumber;
- _cstruct Keypadfacility;
- _cstruct LLC;
- _cstruct ManuData;
- __u32 ManuID;
- _cstruct NCPI;
- __u16 Reason;
- __u16 Reason_B3;
- __u16 Reject;
- _cstruct Useruserdata;
- /* intern */
- unsigned l, p;
- unsigned char *par;
- __u8 *m;
- /* buffer to construct message */
- __u8 buf[180];
- } _cmsg;
- /*-----------------------------------------------------------------------*/
- /*
- * Debugging / Tracing functions
- */
- char *capi_cmd2str(__u8 cmd, __u8 subcmd);
- typedef struct {
- u_char *buf;
- u_char *p;
- size_t size;
- size_t pos;
- } _cdebbuf;
- #define CDEBUG_SIZE 1024
- #define CDEBUG_GSIZE 4096
- void cdebbuf_free(_cdebbuf *cdb);
- int cdebug_init(void);
- void cdebug_exit(void);
- _cdebbuf *capi_message2str(__u8 *msg);
|