1 /* $Id: eicon_idi.h,v 1.1.4.1 2001/11/20 14:19:35 kai Exp $ 2 * 3 * ISDN lowlevel-module for the Eicon active cards. 4 * IDI-Interface 5 * 6 * Copyright 1998-2000 by Armin Schindler (mac@melware.de) 7 * Copyright 1999,2000 Cytronics & Melware (info@melware.de) 8 * 9 * This software may be used and distributed according to the terms 10 * of the GNU General Public License, incorporated herein by reference. 11 * 12 */ 13 14 #ifndef E_IDI_H 15 #define E_IDI_H 16 17 #include <linux/config.h> 18 19 #undef N_DATA 20 #undef ID_MASK 21 22 #include "pc.h" 23 24 #define AOC_IND 26 /* Advice of Charge */ 25 #define PI 0x1e /* Progress Indicator */ 26 #define NI 0x27 /* Notification Indicator */ 27 28 #define CALL_HOLD 0x22 29 #define CALL_HOLD_ACK 0x24 30 31 /* defines for statectrl */ 32 #define WAITING_FOR_HANGUP 0x01 33 #define HAVE_CONN_REQ 0x02 34 #define IN_HOLD 0x04 35 36 typedef struct { 37 char cpn[32]; 38 char oad[32]; 39 char dsa[32]; 40 char osa[32]; 41 __u8 plan; 42 __u8 screen; 43 __u8 sin[4]; 44 __u8 chi[4]; 45 __u8 e_chi[4]; 46 __u8 bc[12]; 47 __u8 e_bc[12]; 48 __u8 llc[18]; 49 __u8 hlc[5]; 50 __u8 cau[4]; 51 __u8 e_cau[2]; 52 __u8 e_mt; 53 __u8 dt[6]; 54 char display[83]; 55 char keypad[35]; 56 char rdn[32]; 57 } idi_ind_message; 58 59 typedef struct { 60 __u16 next __attribute__ ((packed)); 61 __u8 Req; 62 __u8 ReqId; 63 __u8 ReqCh; 64 __u8 Reserved1; 65 __u16 Reference __attribute__ ((packed)); 66 __u8 Reserved[8]; 67 eicon_PBUFFER XBuffer; 68 } eicon_REQ; 69 70 typedef struct { 71 __u16 next __attribute__ ((packed)); 72 __u8 Rc; 73 __u8 RcId; 74 __u8 RcCh; 75 __u8 Reserved1; 76 __u16 Reference __attribute__ ((packed)); 77 __u8 Reserved2[8]; 78 } eicon_RC; 79 80 typedef struct { 81 __u16 next __attribute__ ((packed)); 82 __u8 Ind; 83 __u8 IndId; 84 __u8 IndCh; 85 __u8 MInd; 86 __u16 MLength __attribute__ ((packed)); 87 __u16 Reference __attribute__ ((packed)); 88 __u8 RNR; 89 __u8 Reserved; 90 __u32 Ack __attribute__ ((packed)); 91 eicon_PBUFFER RBuffer; 92 } eicon_IND; 93 94 typedef struct { 95 __u8 *Data; 96 unsigned int Size; 97 unsigned int Len; 98 __u8 *Next; 99 } eicon_OBJBUFFER; 100 101 extern int idi_do_req(eicon_card *card, eicon_chan *chan, int cmd, int layer); 102 extern int idi_hangup(eicon_card *card, eicon_chan *chan); 103 extern int idi_connect_res(eicon_card *card, eicon_chan *chan); 104 extern int eicon_idi_listen_req(eicon_card *card, eicon_chan *chan); 105 extern int idi_connect_req(eicon_card *card, eicon_chan *chan, char *phone, 106 char *eazmsn, int si1, int si2); 107 108 extern void idi_handle_ack(eicon_card *card, struct sk_buff *skb); 109 extern void idi_handle_ind(eicon_card *card, struct sk_buff *skb); 110 extern int eicon_idi_manage(eicon_card *card, eicon_manifbuf *mb); 111 extern int idi_send_data(eicon_card *card, eicon_chan *chan, int ack, struct sk_buff *skb, int que, int chk); 112 extern void idi_audio_cmd(eicon_card *ccard, eicon_chan *chan, int cmd, u_char *value); 113 extern int capipmsg(eicon_card *card, eicon_chan *chan, capi_msg *cm); 114 #ifdef CONFIG_ISDN_TTY_FAX 115 extern void idi_fax_cmd(eicon_card *card, eicon_chan *chan); 116 extern int idi_faxdata_send(eicon_card *ccard, eicon_chan *chan, struct sk_buff *skb); 117 #endif 118 119 #endif 120