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 #ifndef __KERNELCAPI_H__ 10 #define __KERNELCAPI_H__ 11 12 13 #include <linux/list.h> 14 #include <linux/skbuff.h> 15 #include <linux/workqueue.h> 16 #include <linux/notifier.h> 17 #include <uapi/linux/kernelcapi.h> 18 19 struct capi20_appl { 20 u16 applid; 21 capi_register_params rparam; 22 void (*recv_message)(struct capi20_appl *ap, struct sk_buff *skb); 23 void *private; 24 25 /* internal to kernelcapi.o */ 26 unsigned long nrecvctlpkt; 27 unsigned long nrecvdatapkt; 28 unsigned long nsentctlpkt; 29 unsigned long nsentdatapkt; 30 struct mutex recv_mtx; 31 struct sk_buff_head recv_queue; 32 struct work_struct recv_work; 33 int release_in_progress; 34 }; 35 36 u16 capi20_isinstalled(void); 37 u16 capi20_register(struct capi20_appl *ap); 38 u16 capi20_release(struct capi20_appl *ap); 39 u16 capi20_put_message(struct capi20_appl *ap, struct sk_buff *skb); 40 u16 capi20_get_manufacturer(u32 contr, u8 buf[CAPI_MANUFACTURER_LEN]); 41 u16 capi20_get_version(u32 contr, struct capi_version *verp); 42 u16 capi20_get_serial(u32 contr, u8 serial[CAPI_SERIAL_LEN]); 43 u16 capi20_get_profile(u32 contr, struct capi_profile *profp); 44 int capi20_manufacturer(unsigned long cmd, void __user *data); 45 46 #define CAPICTR_UP 0 47 #define CAPICTR_DOWN 1 48 49 int register_capictr_notifier(struct notifier_block *nb); 50 int unregister_capictr_notifier(struct notifier_block *nb); 51 52 #define CAPI_NOERROR 0x0000 53 54 #define CAPI_TOOMANYAPPLS 0x1001 55 #define CAPI_LOGBLKSIZETOSMALL 0x1002 56 #define CAPI_BUFFEXECEEDS64K 0x1003 57 #define CAPI_MSGBUFSIZETOOSMALL 0x1004 58 #define CAPI_ANZLOGCONNNOTSUPPORTED 0x1005 59 #define CAPI_REGRESERVED 0x1006 60 #define CAPI_REGBUSY 0x1007 61 #define CAPI_REGOSRESOURCEERR 0x1008 62 #define CAPI_REGNOTINSTALLED 0x1009 63 #define CAPI_REGCTRLERNOTSUPPORTEXTEQUIP 0x100a 64 #define CAPI_REGCTRLERONLYSUPPORTEXTEQUIP 0x100b 65 66 #define CAPI_ILLAPPNR 0x1101 67 #define CAPI_ILLCMDORSUBCMDORMSGTOSMALL 0x1102 68 #define CAPI_SENDQUEUEFULL 0x1103 69 #define CAPI_RECEIVEQUEUEEMPTY 0x1104 70 #define CAPI_RECEIVEOVERFLOW 0x1105 71 #define CAPI_UNKNOWNNOTPAR 0x1106 72 #define CAPI_MSGBUSY 0x1107 73 #define CAPI_MSGOSRESOURCEERR 0x1108 74 #define CAPI_MSGNOTINSTALLED 0x1109 75 #define CAPI_MSGCTRLERNOTSUPPORTEXTEQUIP 0x110a 76 #define CAPI_MSGCTRLERONLYSUPPORTEXTEQUIP 0x110b 77 78 typedef enum { 79 CapiMessageNotSupportedInCurrentState = 0x2001, 80 CapiIllContrPlciNcci = 0x2002, 81 CapiNoPlciAvailable = 0x2003, 82 CapiNoNcciAvailable = 0x2004, 83 CapiNoListenResourcesAvailable = 0x2005, 84 CapiNoFaxResourcesAvailable = 0x2006, 85 CapiIllMessageParmCoding = 0x2007, 86 } RESOURCE_CODING_PROBLEM; 87 88 typedef enum { 89 CapiB1ProtocolNotSupported = 0x3001, 90 CapiB2ProtocolNotSupported = 0x3002, 91 CapiB3ProtocolNotSupported = 0x3003, 92 CapiB1ProtocolParameterNotSupported = 0x3004, 93 CapiB2ProtocolParameterNotSupported = 0x3005, 94 CapiB3ProtocolParameterNotSupported = 0x3006, 95 CapiBProtocolCombinationNotSupported = 0x3007, 96 CapiNcpiNotSupported = 0x3008, 97 CapiCipValueUnknown = 0x3009, 98 CapiFlagsNotSupported = 0x300a, 99 CapiFacilityNotSupported = 0x300b, 100 CapiDataLengthNotSupportedByCurrentProtocol = 0x300c, 101 CapiResetProcedureNotSupportedByCurrentProtocol = 0x300d, 102 CapiTeiAssignmentFailed = 0x300e, 103 } REQUESTED_SERVICES_PROBLEM; 104 105 typedef enum { 106 CapiSuccess = 0x0000, 107 CapiSupplementaryServiceNotSupported = 0x300e, 108 CapiRequestNotAllowedInThisState = 0x3010, 109 } SUPPLEMENTARY_SERVICE_INFO; 110 111 typedef enum { 112 CapiProtocolErrorLayer1 = 0x3301, 113 CapiProtocolErrorLayer2 = 0x3302, 114 CapiProtocolErrorLayer3 = 0x3303, 115 CapiTimeOut = 0x3303, // SuppServiceReason 116 CapiCallGivenToOtherApplication = 0x3304, 117 } CAPI_REASON; 118 119 #endif /* __KERNELCAPI_H__ */ 120