1 /* $Id: eicon_dsp.h,v 1.1.4.1 2001/11/20 14:19:35 kai Exp $ 2 * 3 * ISDN lowlevel-module for Eicon active cards. 4 * DSP definitions 5 * 6 * Copyright 1999,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 DSP_H 15 #define DSP_H 16 17 #include "dsp_defs.h" 18 19 20 #define DSP_UDATA_REQUEST_SWITCH_FRAMER 1 21 /* 22 parameters: 23 <byte> transmit framer type 24 <byte> receive framer type 25 */ 26 27 #define DSP_REQUEST_SWITCH_FRAMER_HDLC 0 28 #define DSP_REQUEST_SWITCH_FRAMER_TRANSPARENT 1 29 #define DSP_REQUEST_SWITCH_FRAMER_ASYNC 2 30 31 32 #define DSP_UDATA_REQUEST_CLEARDOWN 2 33 /* 34 parameters: 35 - none - 36 */ 37 38 39 #define DSP_UDATA_REQUEST_TX_CONFIRMATION_ON 3 40 /* 41 parameters: 42 - none - 43 */ 44 45 46 #define DSP_UDATA_REQUEST_TX_CONFIRMATION_OFF 4 47 /* 48 parameters: 49 - none - 50 */ 51 52 typedef struct eicon_dsp_ind { 53 __u16 time __attribute__ ((packed)); 54 __u8 norm __attribute__ ((packed)); 55 __u16 options __attribute__ ((packed)); 56 __u32 speed __attribute__ ((packed)); 57 __u16 delay __attribute__ ((packed)); 58 __u32 txspeed __attribute__ ((packed)); 59 __u32 rxspeed __attribute__ ((packed)); 60 } eicon_dsp_ind; 61 62 #define DSP_CONNECTED_OPTION_V42_TRANS 0x0002 63 #define DSP_CONNECTED_OPTION_V42_LAPM 0x0004 64 #define DSP_CONNECTED_OPTION_SHORT_TRAIN 0x0008 65 #define DSP_CONNECTED_OPTION_TALKER_ECHO_PROTECT 0x0010 66 67 #define DSP_UDATA_INDICATION_DISCONNECT 5 68 /* 69 returns: 70 <byte> cause 71 */ 72 73 #define DSP_DISCONNECT_CAUSE_NONE 0x00 74 #define DSP_DISCONNECT_CAUSE_BUSY_TONE 0x01 75 #define DSP_DISCONNECT_CAUSE_CONGESTION_TONE 0x02 76 #define DSP_DISCONNECT_CAUSE_INCOMPATIBILITY 0x03 77 #define DSP_DISCONNECT_CAUSE_CLEARDOWN 0x04 78 #define DSP_DISCONNECT_CAUSE_TRAINING_TIMEOUT 0x05 79 80 #define DSP_UDATA_INDICATION_TX_CONFIRMATION 6 81 /* 82 returns: 83 <word> confirmation number 84 */ 85 86 87 #define DSP_UDATA_REQUEST_SEND_DTMF_DIGITS 16 88 /* 89 parameters: 90 <word> tone duration (ms) 91 <word> gap duration (ms) 92 <byte> digit 0 tone code 93 ... 94 <byte> digit n tone code 95 */ 96 97 #define DSP_SEND_DTMF_DIGITS_HEADER_LENGTH 5 98 99 #define DSP_DTMF_DIGIT_TONE_LOW_GROUP_697_HZ 0x00 100 #define DSP_DTMF_DIGIT_TONE_LOW_GROUP_770_HZ 0x01 101 #define DSP_DTMF_DIGIT_TONE_LOW_GROUP_852_HZ 0x02 102 #define DSP_DTMF_DIGIT_TONE_LOW_GROUP_941_HZ 0x03 103 #define DSP_DTMF_DIGIT_TONE_LOW_GROUP_MASK 0x03 104 #define DSP_DTMF_DIGIT_TONE_HIGH_GROUP_1209_HZ 0x00 105 #define DSP_DTMF_DIGIT_TONE_HIGH_GROUP_1336_HZ 0x04 106 #define DSP_DTMF_DIGIT_TONE_HIGH_GROUP_1477_HZ 0x08 107 #define DSP_DTMF_DIGIT_TONE_HIGH_GROUP_1633_HZ 0x0c 108 #define DSP_DTMF_DIGIT_TONE_HIGH_GROUP_MASK 0x0c 109 110 #define DSP_DTMF_DIGIT_TONE_CODE_0 0x07 111 #define DSP_DTMF_DIGIT_TONE_CODE_1 0x00 112 #define DSP_DTMF_DIGIT_TONE_CODE_2 0x04 113 #define DSP_DTMF_DIGIT_TONE_CODE_3 0x08 114 #define DSP_DTMF_DIGIT_TONE_CODE_4 0x01 115 #define DSP_DTMF_DIGIT_TONE_CODE_5 0x05 116 #define DSP_DTMF_DIGIT_TONE_CODE_6 0x09 117 #define DSP_DTMF_DIGIT_TONE_CODE_7 0x02 118 #define DSP_DTMF_DIGIT_TONE_CODE_8 0x06 119 #define DSP_DTMF_DIGIT_TONE_CODE_9 0x0a 120 #define DSP_DTMF_DIGIT_TONE_CODE_STAR 0x03 121 #define DSP_DTMF_DIGIT_TONE_CODE_HASHMARK 0x0b 122 #define DSP_DTMF_DIGIT_TONE_CODE_A 0x0c 123 #define DSP_DTMF_DIGIT_TONE_CODE_B 0x0d 124 #define DSP_DTMF_DIGIT_TONE_CODE_C 0x0e 125 #define DSP_DTMF_DIGIT_TONE_CODE_D 0x0f 126 127 128 #define DSP_UDATA_INDICATION_DTMF_DIGITS_SENT 16 129 /* 130 returns: 131 - none - 132 One indication will be sent for every request. 133 */ 134 135 136 #define DSP_UDATA_REQUEST_ENABLE_DTMF_RECEIVER 17 137 /* 138 parameters: 139 <word> tone duration (ms) 140 <word> gap duration (ms) 141 */ 142 typedef struct enable_dtmf_s { 143 __u16 tone; 144 __u16 gap; 145 } enable_dtmf_s; 146 147 #define DSP_UDATA_REQUEST_DISABLE_DTMF_RECEIVER 18 148 /* 149 parameters: 150 - none - 151 */ 152 153 #define DSP_UDATA_INDICATION_DTMF_DIGITS_RECEIVED 17 154 /* 155 returns: 156 <byte> digit 0 tone code 157 ... 158 <byte> digit n tone code 159 */ 160 161 #define DSP_DTMF_DIGITS_RECEIVED_HEADER_LENGTH 1 162 163 164 #define DSP_UDATA_INDICATION_MODEM_CALLING_TONE 18 165 /* 166 returns: 167 - none - 168 */ 169 170 #define DSP_UDATA_INDICATION_FAX_CALLING_TONE 19 171 /* 172 returns: 173 - none - 174 */ 175 176 #define DSP_UDATA_INDICATION_ANSWER_TONE 20 177 /* 178 returns: 179 - none - 180 */ 181 182 /* ============= FAX ================ */ 183 184 #define EICON_FAXID_LEN 20 185 186 typedef struct eicon_t30_s { 187 __u8 code; 188 __u8 rate; 189 __u8 resolution; 190 __u8 format; 191 __u8 pages_low; 192 __u8 pages_high; 193 __u8 atf; 194 __u8 control_bits_low; 195 __u8 control_bits_high; 196 __u8 feature_bits_low; 197 __u8 feature_bits_high; 198 __u8 universal_5; 199 __u8 universal_6; 200 __u8 universal_7; 201 __u8 station_id_len; 202 __u8 head_line_len; 203 __u8 station_id[EICON_FAXID_LEN]; 204 /* __u8 head_line[]; */ 205 } eicon_t30_s; 206 207 /* EDATA transmit messages */ 208 #define EDATA_T30_DIS 0x01 209 #define EDATA_T30_FTT 0x02 210 #define EDATA_T30_MCF 0x03 211 212 /* EDATA receive messages */ 213 #define EDATA_T30_DCS 0x81 214 #define EDATA_T30_TRAIN_OK 0x82 215 #define EDATA_T30_EOP 0x83 216 #define EDATA_T30_MPS 0x84 217 #define EDATA_T30_EOM 0x85 218 #define EDATA_T30_DTC 0x86 219 220 #define T30_FORMAT_SFF 0 221 #define T30_FORMAT_ASCII 1 222 #define T30_FORMAT_COUNT 2 223 224 #define T30_CONTROL_BIT_DISABLE_FINE 0x0001 225 #define T30_CONTROL_BIT_ENABLE_ECM 0x0002 226 #define T30_CONTROL_BIT_ECM_64_BYTES 0x0004 227 #define T30_CONTROL_BIT_ENABLE_2D_CODING 0x0008 228 #define T30_CONTROL_BIT_ENABLE_T6_CODING 0x0010 229 #define T30_CONTROL_BIT_ENABLE_UNCOMPR 0x0020 230 #define T30_CONTROL_BIT_ACCEPT_POLLING 0x0040 231 #define T30_CONTROL_BIT_REQUEST_POLLING 0x0080 232 #define T30_CONTROL_BIT_MORE_DOCUMENTS 0x0100 233 234 #define T30_CONTROL_BIT_ALL_FEATURES\ 235 (T30_CONTROL_BIT_ENABLE_ECM | T30_CONTROL_BIT_ENABLE_2D_CODING |\ 236 T30_CONTROL_BIT_ENABLE_T6_CODING | T30_CONTROL_BIT_ENABLE_UNCOMPR) 237 238 #define T30_FEATURE_BIT_FINE 0x0001 239 #define T30_FEATURE_BIT_ECM 0x0002 240 #define T30_FEATURE_BIT_ECM_64_BYTES 0x0004 241 #define T30_FEATURE_BIT_2D_CODING 0x0008 242 #define T30_FEATURE_BIT_T6_CODING 0x0010 243 #define T30_FEATURE_BIT_UNCOMPR_ENABLED 0x0020 244 #define T30_FEATURE_BIT_POLLING 0x0040 245 246 #define FAX_OBJECT_DOCU 1 247 #define FAX_OBJECT_PAGE 2 248 #define FAX_OBJECT_LINE 3 249 250 #define T4_EOL 0x800 251 #define T4_EOL_BITSIZE 12 252 #define T4_EOL_DWORD (T4_EOL << (32 - T4_EOL_BITSIZE)) 253 #define T4_EOL_MASK_DWORD ((__u32) -1 << (32 - T4_EOL_BITSIZE)) 254 255 #define SFF_LEN_FLD_SIZE 3 256 257 #define _DLE_ 0x10 258 #define _ETX_ 0x03 259 260 typedef struct eicon_sff_dochead { 261 __u32 id __attribute__ ((packed)); 262 __u8 version __attribute__ ((packed)); 263 __u8 reserved1 __attribute__ ((packed)); 264 __u16 userinfo __attribute__ ((packed)); 265 __u16 pagecount __attribute__ ((packed)); 266 __u16 off1pagehead __attribute__ ((packed)); 267 __u32 offnpagehead __attribute__ ((packed)); 268 __u32 offdocend __attribute__ ((packed)); 269 } eicon_sff_dochead; 270 271 typedef struct eicon_sff_pagehead { 272 __u8 pageheadid __attribute__ ((packed)); 273 __u8 pageheadlen __attribute__ ((packed)); 274 __u8 resvert __attribute__ ((packed)); 275 __u8 reshoriz __attribute__ ((packed)); 276 __u8 coding __attribute__ ((packed)); 277 __u8 reserved2 __attribute__ ((packed)); 278 __u16 linelength __attribute__ ((packed)); 279 __u16 pagelength __attribute__ ((packed)); 280 __u32 offprevpage __attribute__ ((packed)); 281 __u32 offnextpage __attribute__ ((packed)); 282 } eicon_sff_pagehead; 283 284 #endif /* DSP_H */ 285 286