| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | /* $Id: capi.h,v 1.6.6.2 2001/09/23 22:24:32 kai Exp $
 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * ISDN lowlevel-module for the IBM ISDN-S0 Active 2000. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Author       Fritz Elfert | 
					
						
							|  |  |  |  * Copyright    by Fritz Elfert      <fritz@isdn4linux.de> | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |  * This software may be used and distributed according to the terms | 
					
						
							|  |  |  |  * of the GNU General Public License, incorporated herein by reference. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Thanks to Friedemann Baitinger and IBM Germany | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef CAPI_H
 | 
					
						
							|  |  |  | #define CAPI_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Command-part of a CAPI message */ | 
					
						
							|  |  |  | typedef struct actcapi_msgcmd { | 
					
						
							|  |  |  | 	__u8 cmd; | 
					
						
							|  |  |  | 	__u8 subcmd; | 
					
						
							|  |  |  | } actcapi_msgcmd; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* CAPI message header */ | 
					
						
							|  |  |  | typedef struct actcapi_msghdr { | 
					
						
							|  |  |  | 	__u16 len; | 
					
						
							|  |  |  | 	__u16 applicationID; | 
					
						
							|  |  |  | 	actcapi_msgcmd cmd; | 
					
						
							|  |  |  | 	__u16 msgnum; | 
					
						
							|  |  |  | } actcapi_msghdr; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* CAPI message description (for debugging) */ | 
					
						
							|  |  |  | typedef struct actcapi_msgdsc { | 
					
						
							|  |  |  | 	actcapi_msgcmd cmd; | 
					
						
							|  |  |  | 	char *description; | 
					
						
							|  |  |  | } actcapi_msgdsc; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* CAPI Address */ | 
					
						
							|  |  |  | typedef struct actcapi_addr { | 
					
						
							|  |  |  | 	__u8 len;                            /* Length of element            */ | 
					
						
							|  |  |  | 	__u8 tnp;                            /* Type/Numbering Plan          */ | 
					
						
							|  |  |  | 	__u8 num[20];                        /* Caller ID                    */ | 
					
						
							|  |  |  | } actcapi_addr; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* CAPI INFO element mask */ | 
					
						
							|  |  |  | typedef  union actcapi_infonr {              /* info number                  */ | 
					
						
							|  |  |  | 	__u16 mask;                          /* info-mask field              */ | 
					
						
							|  |  |  | 	struct bmask {                       /* bit definitions              */ | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | 		unsigned  codes:3;           /* code set                     */ | 
					
						
							|  |  |  | 		unsigned  rsvd:5;            /* reserved                     */ | 
					
						
							|  |  |  | 		unsigned  svind:1;           /* single, variable length ind. */ | 
					
						
							|  |  |  | 		unsigned  wtype:7;           /* W-element type               */ | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	} bmask; | 
					
						
							|  |  |  | } actcapi_infonr; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* CAPI INFO element */ | 
					
						
							|  |  |  | typedef union  actcapi_infoel {              /* info element                 */ | 
					
						
							|  |  |  | 	__u8 len;                            /* length of info element       */ | 
					
						
							|  |  |  | 	__u8 display[40];                    /* display contents             */ | 
					
						
							|  |  |  | 	__u8 uuinfo[40];                     /* User-user info field         */ | 
					
						
							|  |  |  | 	struct cause {                       /* Cause information            */ | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | 		unsigned ext2:1;             /* extension                    */ | 
					
						
							|  |  |  | 		unsigned cod:2;              /* coding standard              */ | 
					
						
							|  |  |  | 		unsigned spare:1;            /* spare                        */ | 
					
						
							|  |  |  | 		unsigned loc:4;              /* location                     */ | 
					
						
							|  |  |  | 		unsigned ext1:1;             /* extension                    */ | 
					
						
							|  |  |  | 		unsigned cval:7;             /* Cause value                  */ | 
					
						
							|  |  |  | 	} cause; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	struct charge {                      /* Charging information         */ | 
					
						
							|  |  |  | 		__u8 toc;                    /* type of charging info        */ | 
					
						
							|  |  |  | 		__u8 unit[10];               /* charging units               */ | 
					
						
							|  |  |  | 	} charge; | 
					
						
							|  |  |  | 	__u8 date[20];                       /* date fields                  */ | 
					
						
							|  |  |  | 	__u8 stat;                           /* state of remote party        */ | 
					
						
							|  |  |  | } actcapi_infoel; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Message for EAZ<->MSN Mapping */ | 
					
						
							|  |  |  | typedef struct actcapi_msn { | 
					
						
							|  |  |  | 	__u8 eaz; | 
					
						
							|  |  |  | 	__u8 len;                            /* Length of MSN                */ | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 	__u8 msn[15]; | 
					
						
							|  |  |  | }  __attribute__((packed)) actcapi_msn; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | typedef struct actcapi_dlpd { | 
					
						
							|  |  |  | 	__u8 len;                            /* Length of structure          */ | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 	__u16 dlen;                          /* Data Length                  */ | 
					
						
							|  |  |  | 	__u8 laa;                            /* Link Address A               */ | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	__u8 lab;                            /* Link Address B               */ | 
					
						
							|  |  |  | 	__u8 modulo;                         /* Modulo Mode                  */ | 
					
						
							|  |  |  | 	__u8 win;                            /* Window size                  */ | 
					
						
							|  |  |  | 	__u8 xid[100];                       /* XID Information              */ | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | } __attribute__((packed)) actcapi_dlpd; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | typedef struct actcapi_ncpd { | 
					
						
							|  |  |  | 	__u8   len;                          /* Length of structure          */ | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 	__u16  lic; | 
					
						
							|  |  |  | 	__u16  hic; | 
					
						
							|  |  |  | 	__u16  ltc; | 
					
						
							|  |  |  | 	__u16  htc; | 
					
						
							|  |  |  | 	__u16  loc; | 
					
						
							|  |  |  | 	__u16  hoc; | 
					
						
							|  |  |  | 	__u8   modulo; | 
					
						
							|  |  |  | } __attribute__((packed)) actcapi_ncpd; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #define actcapi_ncpi actcapi_ncpd
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * Layout of NCCI field in a B3 DATA CAPI message is different from | 
					
						
							|  |  |  |  * standard at act2000: | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Bit 0-4  = PLCI | 
					
						
							|  |  |  |  * Bit 5-7  = Controller | 
					
						
							|  |  |  |  * Bit 8-15 = NCCI | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | #define MAKE_NCCI(plci, contr, ncci)					\
 | 
					
						
							|  |  |  | 	((plci & 0x1f) | ((contr & 0x7) << 5) | ((ncci & 0xff) << 8)) | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | #define EVAL_NCCI(fakencci, plci, contr, ncci) {	\
 | 
					
						
							|  |  |  | 		plci  = fakencci & 0x1f;		\ | 
					
						
							|  |  |  | 		contr = (fakencci >> 5) & 0x7;		\ | 
					
						
							|  |  |  | 		ncci  = (fakencci >> 8) & 0xff;		\ | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * Layout of PLCI field in a B3 DATA CAPI message is different from | 
					
						
							|  |  |  |  * standard at act2000: | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Bit 0-4  = PLCI | 
					
						
							|  |  |  |  * Bit 5-7  = Controller | 
					
						
							|  |  |  |  * Bit 8-15 = reserved (must be 0) | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | #define MAKE_PLCI(plci, contr)			\
 | 
					
						
							|  |  |  | 	((plci & 0x1f) | ((contr & 0x7) << 5)) | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | #define EVAL_PLCI(fakeplci, plci, contr) {	\
 | 
					
						
							|  |  |  | 		plci  = fakeplci & 0x1f;	\ | 
					
						
							|  |  |  | 		contr = (fakeplci >> 5) & 0x7;	\ | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | typedef struct actcapi_msg { | 
					
						
							|  |  |  | 	actcapi_msghdr hdr; | 
					
						
							|  |  |  | 	union { | 
					
						
							|  |  |  | 		__u16 manuf_msg; | 
					
						
							|  |  |  | 		struct manufacturer_req_net { | 
					
						
							|  |  |  | 			__u16 manuf_msg; | 
					
						
							|  |  |  | 			__u16 controller; | 
					
						
							|  |  |  | 			__u8  nettype; | 
					
						
							|  |  |  | 		} manufacturer_req_net; | 
					
						
							|  |  |  | 		struct manufacturer_req_v42 { | 
					
						
							|  |  |  | 			__u16 manuf_msg; | 
					
						
							|  |  |  | 			__u16 controller; | 
					
						
							|  |  |  | 			__u32 v42control; | 
					
						
							|  |  |  | 		} manufacturer_req_v42; | 
					
						
							|  |  |  | 		struct manufacturer_conf_v42 { | 
					
						
							|  |  |  | 			__u16 manuf_msg; | 
					
						
							|  |  |  | 			__u16 controller; | 
					
						
							|  |  |  | 		} manufacturer_conf_v42; | 
					
						
							|  |  |  | 		struct manufacturer_req_err { | 
					
						
							|  |  |  | 			__u16 manuf_msg; | 
					
						
							|  |  |  | 			__u16 controller; | 
					
						
							|  |  |  | 		} manufacturer_req_err; | 
					
						
							|  |  |  | 		struct manufacturer_ind_err { | 
					
						
							|  |  |  | 			__u16 manuf_msg; | 
					
						
							|  |  |  | 			__u16 controller; | 
					
						
							|  |  |  | 			__u32 errcode; | 
					
						
							|  |  |  | 			__u8  errstring; /* actually up to 160 */ | 
					
						
							|  |  |  | 		} manufacturer_ind_err; | 
					
						
							|  |  |  | 		struct manufacturer_req_msn { | 
					
						
							|  |  |  | 			__u16 manuf_msg; | 
					
						
							|  |  |  | 			__u16 controller; | 
					
						
							|  |  |  | 			actcapi_msn msnmap; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 		} __attribute ((packed)) manufacturer_req_msn; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		/* TODO: TraceInit-req/conf/ind/resp and
 | 
					
						
							|  |  |  | 		 *       TraceDump-req/conf/ind/resp | 
					
						
							|  |  |  | 		 */ | 
					
						
							|  |  |  | 		struct connect_req { | 
					
						
							|  |  |  | 			__u8  controller; | 
					
						
							|  |  |  | 			__u8  bchan; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 			__u32 infomask; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 			__u8  si1; | 
					
						
							|  |  |  | 			__u8  si2; | 
					
						
							|  |  |  | 			__u8  eaz; | 
					
						
							|  |  |  | 			actcapi_addr addr; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 		} __attribute__ ((packed)) connect_req; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct connect_conf { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			__u16 info; | 
					
						
							|  |  |  | 		} connect_conf; | 
					
						
							|  |  |  | 		struct connect_ind { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			__u8  controller; | 
					
						
							|  |  |  | 			__u8  si1; | 
					
						
							|  |  |  | 			__u8  si2; | 
					
						
							|  |  |  | 			__u8  eaz; | 
					
						
							|  |  |  | 			actcapi_addr addr; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 		} __attribute__ ((packed)) connect_ind; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct connect_resp { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			__u8  rejectcause; | 
					
						
							|  |  |  | 		} connect_resp; | 
					
						
							|  |  |  | 		struct connect_active_ind { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			actcapi_addr addr; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 		} __attribute__ ((packed)) connect_active_ind; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct connect_active_resp { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 		} connect_active_resp; | 
					
						
							|  |  |  | 		struct connect_b3_req { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			actcapi_ncpi ncpi; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 		} __attribute__ ((packed)) connect_b3_req; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct connect_b3_conf { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			__u16 ncci; | 
					
						
							|  |  |  | 			__u16 info; | 
					
						
							|  |  |  | 		} connect_b3_conf; | 
					
						
							|  |  |  | 		struct connect_b3_ind { | 
					
						
							|  |  |  | 			__u16 ncci; | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			actcapi_ncpi ncpi; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 		} __attribute__ ((packed)) connect_b3_ind; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct connect_b3_resp { | 
					
						
							|  |  |  | 			__u16 ncci; | 
					
						
							|  |  |  | 			__u8  rejectcause; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 			actcapi_ncpi ncpi; | 
					
						
							|  |  |  | 		} __attribute__ ((packed)) connect_b3_resp; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct disconnect_req { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			__u8  cause; | 
					
						
							|  |  |  | 		} disconnect_req; | 
					
						
							|  |  |  | 		struct disconnect_conf { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			__u16 info; | 
					
						
							|  |  |  | 		} disconnect_conf; | 
					
						
							|  |  |  | 		struct disconnect_ind { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			__u16 info; | 
					
						
							|  |  |  | 		} disconnect_ind; | 
					
						
							|  |  |  | 		struct disconnect_resp { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 		} disconnect_resp; | 
					
						
							|  |  |  | 		struct connect_b3_active_ind { | 
					
						
							|  |  |  | 			__u16 ncci; | 
					
						
							|  |  |  | 			actcapi_ncpi ncpi; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 		} __attribute__ ((packed)) connect_b3_active_ind; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct connect_b3_active_resp { | 
					
						
							|  |  |  | 			__u16 ncci; | 
					
						
							|  |  |  | 		} connect_b3_active_resp; | 
					
						
							|  |  |  | 		struct disconnect_b3_req { | 
					
						
							|  |  |  | 			__u16 ncci; | 
					
						
							|  |  |  | 			actcapi_ncpi ncpi; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 		} __attribute__ ((packed)) disconnect_b3_req; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct disconnect_b3_conf { | 
					
						
							|  |  |  | 			__u16 ncci; | 
					
						
							|  |  |  | 			__u16 info; | 
					
						
							|  |  |  | 		} disconnect_b3_conf; | 
					
						
							|  |  |  | 		struct disconnect_b3_ind { | 
					
						
							|  |  |  | 			__u16 ncci; | 
					
						
							|  |  |  | 			__u16 info; | 
					
						
							|  |  |  | 			actcapi_ncpi ncpi; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 		} __attribute__ ((packed)) disconnect_b3_ind; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct disconnect_b3_resp { | 
					
						
							|  |  |  | 			__u16 ncci; | 
					
						
							|  |  |  | 		} disconnect_b3_resp; | 
					
						
							|  |  |  | 		struct info_ind { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			actcapi_infonr nr; | 
					
						
							|  |  |  | 			actcapi_infoel el; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 		} __attribute__ ((packed)) info_ind; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct info_resp { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 		} info_resp; | 
					
						
							|  |  |  | 		struct listen_b3_req { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 		} listen_b3_req; | 
					
						
							|  |  |  | 		struct listen_b3_conf { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			__u16 info; | 
					
						
							|  |  |  | 		} listen_b3_conf; | 
					
						
							|  |  |  | 		struct select_b2_protocol_req { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			__u8  protocol; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 			actcapi_dlpd dlpd; | 
					
						
							|  |  |  | 		} __attribute__ ((packed)) select_b2_protocol_req; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct select_b2_protocol_conf { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			__u16 info; | 
					
						
							|  |  |  | 		} select_b2_protocol_conf; | 
					
						
							|  |  |  | 		struct select_b3_protocol_req { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			__u8  protocol; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 			actcapi_ncpd ncpd; | 
					
						
							|  |  |  | 		} __attribute__ ((packed)) select_b3_protocol_req; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct select_b3_protocol_conf { | 
					
						
							|  |  |  | 			__u16 plci; | 
					
						
							|  |  |  | 			__u16 info; | 
					
						
							|  |  |  | 		} select_b3_protocol_conf; | 
					
						
							|  |  |  | 		struct listen_req { | 
					
						
							|  |  |  | 			__u8  controller; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 			__u32 infomask; | 
					
						
							|  |  |  | 			__u16 eazmask; | 
					
						
							|  |  |  | 			__u16 simask; | 
					
						
							|  |  |  | 		} __attribute__ ((packed)) listen_req; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct listen_conf { | 
					
						
							|  |  |  | 			__u8  controller; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 			__u16 info; | 
					
						
							|  |  |  | 		} __attribute__ ((packed)) listen_conf; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct data_b3_req { | 
					
						
							|  |  |  | 			__u16 fakencci; | 
					
						
							|  |  |  | 			__u16 datalen; | 
					
						
							|  |  |  | 			__u32 unused; | 
					
						
							|  |  |  | 			__u8  blocknr; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 			__u16 flags; | 
					
						
							|  |  |  | 		} __attribute ((packed)) data_b3_req; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct data_b3_ind { | 
					
						
							|  |  |  | 			__u16 fakencci; | 
					
						
							|  |  |  | 			__u16 datalen; | 
					
						
							|  |  |  | 			__u32 unused; | 
					
						
							|  |  |  | 			__u8  blocknr; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 			__u16 flags; | 
					
						
							|  |  |  | 		} __attribute__ ((packed)) data_b3_ind; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct data_b3_resp { | 
					
						
							|  |  |  | 			__u16 ncci; | 
					
						
							|  |  |  | 			__u8  blocknr; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 		} __attribute__ ((packed)) data_b3_resp; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		struct data_b3_conf { | 
					
						
							|  |  |  | 			__u16 ncci; | 
					
						
							|  |  |  | 			__u8  blocknr; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | 			__u16 info; | 
					
						
							|  |  |  | 		} __attribute__ ((packed)) data_b3_conf; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	} msg; | 
					
						
							| 
									
										
										
										
											2006-01-08 01:05:09 -08:00
										 |  |  | } __attribute__ ((packed)) actcapi_msg; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-01-08 01:02:16 -08:00
										 |  |  | static inline unsigned short | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | actcapi_nextsmsg(act2000_card *card) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	unsigned long flags; | 
					
						
							|  |  |  | 	unsigned short n; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	spin_lock_irqsave(&card->mnlock, flags); | 
					
						
							|  |  |  | 	n = card->msgnum; | 
					
						
							|  |  |  | 	card->msgnum++; | 
					
						
							|  |  |  | 	card->msgnum &= 0x7fff; | 
					
						
							|  |  |  | 	spin_unlock_irqrestore(&card->mnlock, flags); | 
					
						
							|  |  |  | 	return n; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #define DEBUG_MSG
 | 
					
						
							|  |  |  | #undef DEBUG_DATA_MSG
 | 
					
						
							|  |  |  | #undef DEBUG_DUMP_SKB
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern int actcapi_chkhdr(act2000_card *, actcapi_msghdr *); | 
					
						
							|  |  |  | extern int actcapi_listen_req(act2000_card *); | 
					
						
							|  |  |  | extern int actcapi_manufacturer_req_net(act2000_card *); | 
					
						
							|  |  |  | extern int actcapi_manufacturer_req_errh(act2000_card *); | 
					
						
							|  |  |  | extern int actcapi_manufacturer_req_msn(act2000_card *); | 
					
						
							|  |  |  | extern int actcapi_connect_req(act2000_card *, act2000_chan *, char *, char, int, int); | 
					
						
							|  |  |  | extern void actcapi_select_b2_protocol_req(act2000_card *, act2000_chan *); | 
					
						
							|  |  |  | extern void actcapi_disconnect_b3_req(act2000_card *, act2000_chan *); | 
					
						
							|  |  |  | extern void actcapi_connect_resp(act2000_card *, act2000_chan *, __u8); | 
					
						
							| 
									
										
										
										
											2006-11-22 14:57:56 +00:00
										 |  |  | extern void actcapi_dispatch(struct work_struct *); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #ifdef DEBUG_MSG
 | 
					
						
							|  |  |  | extern void actcapi_debug_msg(struct sk_buff *skb, int); | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #define actcapi_debug_msg(skb, len)
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | #endif
 |