]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * $Id: kernelcapi.h,v 1.8.6.2 2001/02/07 11:31:31 kai Exp $ | |
3 | * | |
4 | * Kernel CAPI 2.0 Interface for Linux | |
5 | * | |
6 | * (c) Copyright 1997 by Carsten Paeth (calle@calle.in-berlin.de) | |
7 | * | |
8 | */ | |
9 | ||
10 | #ifndef __KERNELCAPI_H__ | |
11 | #define __KERNELCAPI_H__ | |
12 | ||
13 | #define CAPI_MAXAPPL 240 /* maximum number of applications */ | |
14 | #define CAPI_MAXCONTR 32 /* maximum number of controller */ | |
15 | #define CAPI_MAXDATAWINDOW 8 | |
16 | ||
17 | ||
18 | typedef struct kcapi_flagdef { | |
19 | int contr; | |
20 | int flag; | |
21 | } kcapi_flagdef; | |
22 | ||
23 | typedef struct kcapi_carddef { | |
24 | char driver[32]; | |
25 | unsigned int port; | |
26 | unsigned irq; | |
27 | unsigned int membase; | |
28 | int cardnr; | |
29 | } kcapi_carddef; | |
30 | ||
31 | /* new ioctls >= 10 */ | |
32 | #define KCAPI_CMD_TRACE 10 | |
33 | #define KCAPI_CMD_ADDCARD 11 /* OBSOLETE */ | |
34 | ||
35 | /* | |
36 | * flag > 2 => trace also data | |
37 | * flag & 1 => show trace | |
38 | */ | |
39 | #define KCAPI_TRACE_OFF 0 | |
40 | #define KCAPI_TRACE_SHORT_NO_DATA 1 | |
41 | #define KCAPI_TRACE_FULL_NO_DATA 2 | |
42 | #define KCAPI_TRACE_SHORT 3 | |
43 | #define KCAPI_TRACE_FULL 4 | |
44 | ||
45 | ||
46 | #ifdef __KERNEL__ | |
47 | ||
48 | #include <linux/list.h> | |
49 | #include <linux/skbuff.h> | |
d7fe0f24 | 50 | #include <linux/workqueue.h> |
a80958f4 | 51 | #include <asm/semaphore.h> |
1da177e4 LT |
52 | |
53 | #define KCI_CONTRUP 0 /* arg: struct capi_profile */ | |
54 | #define KCI_CONTRDOWN 1 /* arg: NULL */ | |
55 | ||
56 | struct capi20_appl { | |
57 | u16 applid; | |
58 | capi_register_params rparam; | |
59 | void (*recv_message)(struct capi20_appl *ap, struct sk_buff *skb); | |
60 | void *private; | |
61 | ||
62 | /* internal to kernelcapi.o */ | |
63 | unsigned long nrecvctlpkt; | |
64 | unsigned long nrecvdatapkt; | |
65 | unsigned long nsentctlpkt; | |
66 | unsigned long nsentdatapkt; | |
67 | struct semaphore recv_sem; | |
68 | struct sk_buff_head recv_queue; | |
69 | struct work_struct recv_work; | |
70 | int release_in_progress; | |
71 | ||
72 | /* ugly hack to allow for notification of added/removed | |
73 | * controllers. The Right Way (tm) is known. XXX | |
74 | */ | |
75 | void (*callback) (unsigned int cmd, __u32 contr, void *data); | |
76 | }; | |
77 | ||
78 | u16 capi20_isinstalled(void); | |
79 | u16 capi20_register(struct capi20_appl *ap); | |
80 | u16 capi20_release(struct capi20_appl *ap); | |
81 | u16 capi20_put_message(struct capi20_appl *ap, struct sk_buff *skb); | |
82 | u16 capi20_get_manufacturer(u32 contr, u8 buf[CAPI_MANUFACTURER_LEN]); | |
83 | u16 capi20_get_version(u32 contr, struct capi_version *verp); | |
84 | u16 capi20_get_serial(u32 contr, u8 serial[CAPI_SERIAL_LEN]); | |
85 | u16 capi20_get_profile(u32 contr, struct capi_profile *profp); | |
86 | int capi20_manufacturer(unsigned int cmd, void __user *data); | |
87 | ||
88 | /* temporary hack XXX */ | |
89 | void capi20_set_callback(struct capi20_appl *ap, | |
90 | void (*callback) (unsigned int cmd, __u32 contr, void *data)); | |
91 | ||
92 | ||
93 | ||
94 | #define CAPI_NOERROR 0x0000 | |
95 | ||
96 | #define CAPI_TOOMANYAPPLS 0x1001 | |
97 | #define CAPI_LOGBLKSIZETOSMALL 0x1002 | |
98 | #define CAPI_BUFFEXECEEDS64K 0x1003 | |
99 | #define CAPI_MSGBUFSIZETOOSMALL 0x1004 | |
100 | #define CAPI_ANZLOGCONNNOTSUPPORTED 0x1005 | |
101 | #define CAPI_REGRESERVED 0x1006 | |
102 | #define CAPI_REGBUSY 0x1007 | |
103 | #define CAPI_REGOSRESOURCEERR 0x1008 | |
104 | #define CAPI_REGNOTINSTALLED 0x1009 | |
105 | #define CAPI_REGCTRLERNOTSUPPORTEXTEQUIP 0x100a | |
106 | #define CAPI_REGCTRLERONLYSUPPORTEXTEQUIP 0x100b | |
107 | ||
108 | #define CAPI_ILLAPPNR 0x1101 | |
109 | #define CAPI_ILLCMDORSUBCMDORMSGTOSMALL 0x1102 | |
110 | #define CAPI_SENDQUEUEFULL 0x1103 | |
111 | #define CAPI_RECEIVEQUEUEEMPTY 0x1104 | |
112 | #define CAPI_RECEIVEOVERFLOW 0x1105 | |
113 | #define CAPI_UNKNOWNNOTPAR 0x1106 | |
114 | #define CAPI_MSGBUSY 0x1107 | |
115 | #define CAPI_MSGOSRESOURCEERR 0x1108 | |
116 | #define CAPI_MSGNOTINSTALLED 0x1109 | |
117 | #define CAPI_MSGCTRLERNOTSUPPORTEXTEQUIP 0x110a | |
118 | #define CAPI_MSGCTRLERONLYSUPPORTEXTEQUIP 0x110b | |
119 | ||
120 | typedef enum { | |
121 | CapiMessageNotSupportedInCurrentState = 0x2001, | |
122 | CapiIllContrPlciNcci = 0x2002, | |
123 | CapiNoPlciAvailable = 0x2003, | |
124 | CapiNoNcciAvailable = 0x2004, | |
125 | CapiNoListenResourcesAvailable = 0x2005, | |
126 | CapiNoFaxResourcesAvailable = 0x2006, | |
127 | CapiIllMessageParmCoding = 0x2007, | |
128 | } RESOURCE_CODING_PROBLEM; | |
129 | ||
130 | typedef enum { | |
131 | CapiB1ProtocolNotSupported = 0x3001, | |
132 | CapiB2ProtocolNotSupported = 0x3002, | |
133 | CapiB3ProtocolNotSupported = 0x3003, | |
134 | CapiB1ProtocolParameterNotSupported = 0x3004, | |
135 | CapiB2ProtocolParameterNotSupported = 0x3005, | |
136 | CapiB3ProtocolParameterNotSupported = 0x3006, | |
137 | CapiBProtocolCombinationNotSupported = 0x3007, | |
138 | CapiNcpiNotSupported = 0x3008, | |
139 | CapiCipValueUnknown = 0x3009, | |
140 | CapiFlagsNotSupported = 0x300a, | |
141 | CapiFacilityNotSupported = 0x300b, | |
142 | CapiDataLengthNotSupportedByCurrentProtocol = 0x300c, | |
143 | CapiResetProcedureNotSupportedByCurrentProtocol = 0x300d, | |
144 | CapiTeiAssignmentFailed = 0x300e, | |
145 | } REQUESTED_SERVICES_PROBLEM; | |
146 | ||
147 | typedef enum { | |
148 | CapiSuccess = 0x0000, | |
149 | CapiSupplementaryServiceNotSupported = 0x300e, | |
150 | CapiRequestNotAllowedInThisState = 0x3010, | |
151 | } SUPPLEMENTARY_SERVICE_INFO; | |
152 | ||
153 | typedef enum { | |
154 | CapiProtocolErrorLayer1 = 0x3301, | |
155 | CapiProtocolErrorLayer2 = 0x3302, | |
156 | CapiProtocolErrorLayer3 = 0x3303, | |
157 | CapiTimeOut = 0x3303, // SuppServiceReason | |
158 | CapiCallGivenToOtherApplication = 0x3304, | |
159 | } CAPI_REASON; | |
160 | ||
161 | #endif /* __KERNEL__ */ | |
162 | ||
163 | #endif /* __KERNELCAPI_H__ */ |