~ubuntu-branches/ubuntu/feisty/sl-modem/feisty

« back to all changes in this revision

Viewing changes to modem/modem_defs.h

  • Committer: Bazaar Package Importer
  • Author(s): Eduard Bloch
  • Date: 2004-09-06 18:17:31 UTC
  • Revision ID: james.westby@ubuntu.com-20040906181731-si44puez4f5pzd8s
Tags: upstream-2.9.9
ImportĀ upstreamĀ versionĀ 2.9.9

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *
 
3
 *    Copyright (c) 2002, Smart Link Ltd.
 
4
 *    All rights reserved.
 
5
 *
 
6
 *    Redistribution and use in source and binary forms, with or without
 
7
 *    modification, are permitted provided that the following conditions
 
8
 *    are met:
 
9
 *
 
10
 *        1. Redistributions of source code must retain the above copyright
 
11
 *           notice, this list of conditions and the following disclaimer.
 
12
 *        2. Redistributions in binary form must reproduce the above
 
13
 *           copyright notice, this list of conditions and the following
 
14
 *           disclaimer in the documentation and/or other materials provided
 
15
 *           with the distribution.
 
16
 *        3. Neither the name of the Smart Link Ltd. nor the names of its
 
17
 *           contributors may be used to endorse or promote products derived
 
18
 *           from this software without specific prior written permission.
 
19
 *
 
20
 *    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 
21
 *    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 
22
 *    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 
23
 *    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 
24
 *    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 
25
 *    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 
26
 *    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 
27
 *    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 
28
 *    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
29
 *    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 
30
 *    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
31
 *
 
32
 */
 
33
 
 
34
/*
 
35
 *
 
36
 *    modem_defs.h - modem common definitions
 
37
 *
 
38
 *    Author: sashak@smlink.com
 
39
 */
 
40
 
 
41
#ifndef __MODEM_DEFS_H__
 
42
#define __MODEM_DEFS_H__
 
43
 
 
44
#ifdef __KERNEL__
 
45
#include <linux/types.h>
 
46
#else
 
47
 
 
48
#include <sys/types.h>
 
49
 
 
50
typedef __uint8_t  u8;
 
51
typedef __uint16_t u16;
 
52
typedef __uint32_t u32;
 
53
 
 
54
typedef __int8_t  s8;
 
55
typedef __int16_t s16;
 
56
typedef __int32_t s32;
 
57
#endif /* !__KERNEL__ */
 
58
 
 
59
/* hook states */
 
60
#define MODEM_HOOK_ON       0
 
61
#define MODEM_HOOK_OFF      1
 
62
#define MODEM_HOOK_SNOOPING 2
 
63
 
 
64
/* modem device ctrl interface */
 
65
#define MDMCTL_CAPABILITIES  0x01
 
66
#define MDMCTL_HOOKSTATE     0x02
 
67
#define MDMCTL_SPEED         0x04
 
68
#define MDMCTL_GETFMTS       0x05
 
69
#define MDMCTL_SETFMT        0x06
 
70
#define MDMCTL_SETFRAG       0x07
 
71
#define MDMCTL_SETFRAGMENT   MDMCTL_SETFRAG
 
72
#define MDMCTL_SPEAKERVOL    0x08
 
73
#define MDMCTL_IODELAY       0x10
 
74
#define MDMCTL_CODECTYPE     0x11
 
75
#define MDMCTL_PULSEDIAL     0x12
 
76
#define MDMCTL_GETSTAT       0x20
 
77
#define MDMCTL_START         0x21
 
78
#define MDMCTL_STOP          0x22
 
79
 
 
80
 
 
81
/* modem device status mask */
 
82
#define MDMSTAT_ERROR 0x1
 
83
#define MDMSTAT_RING  0x2
 
84
#define MDMSTAT_DATA  0x4
 
85
 
 
86
 
 
87
/* codec types - numbers important */
 
88
enum codec_types {
 
89
        CODEC_UNKNOWN = 0,
 
90
        CODEC_AD1821  = 1,
 
91
        CODEC_STLC7550= 4,
 
92
        CODEC_SILABS  = 9,
 
93
        CODEC_SIL3052 = 10,
 
94
        CODEC_SIL3054 = 11,
 
95
        CODEC_AD1803  = 12,
 
96
        CODEC_ALC545A = 13,
 
97
};
 
98
 
 
99
/* sample formats + extensions */
 
100
#define MFMT_SIZE_MASK   0x000f
 
101
#define MFMT_SIZE_8      0x0000
 
102
#define MFMT_SIZE_16     0x0001
 
103
#define MFMT_SIGN_MASK   0x00f0
 
104
#define MFMT_SIGNED      0x0010
 
105
#define MFMT_UNSIGNED    0x0000
 
106
#define MFMT_ORDER_MASK  0x0f00
 
107
#define MFMT_ORDER_LE    0x0100
 
108
#define MFMT_ORDER_BE    0x0000
 
109
 
 
110
#define MFMT_QUERY       0x0
 
111
 
 
112
#define MFMT_S8          (MFMT_SIZE_8|MFMT_SIGNED)
 
113
#define MFMT_U8          (MFMT_SIZE_8|MFMT_UNSIGNED)
 
114
#define MFMT_S16_LE      (MFMT_SIZE_16|MFMT_SIGNED|MFMT_ORDER_LE)
 
115
#define MFMT_S16_BE      (MFMT_SIZE_16|MFMT_SIGNED|MFMT_ORDER_BE)
 
116
#define MFMT_U16_LE      (MFMT_SIZE_16|MFMT_UNSIGNED|MFMT_ORDER_LE)
 
117
#define MFMT_U16_BE      (MFMT_SIZE_16|MFMT_UNSIGNED|MFMT_ORDER_BE)
 
118
 
 
119
#define MFMT_IS_16BIT(x)   ((x)&MFMT_SIZE_16)
 
120
#define MFMT_IS_LE(x)      ((x)&MFMT_ORDER_LE)
 
121
#define MFMT_BYTESSHIFT(x) ((x)&MFMT_SIZE_MASK)
 
122
#define MFMT_SHIFT(x)      (MFMT_BYTESSHIFT(x))
 
123
#define MFMT_BYTES(x)      (1<<MFMT_BYTESSHFIT(x))
 
124
 
 
125
 
 
126
/* s-registers */
 
127
enum S_REGISTER {
 
128
        SREG_RINGS_TO_AUTO_ANSWER         =  0,
 
129
        SREG_RING_COUNTER                 =  1,
 
130
        SREG_ESCAPE_CHAR                  =  2,
 
131
        SREG_CR_CHAR                      =  3,
 
132
        SREG_LF_CHAR                      =  4,
 
133
        SREG_BS_CHAR                      =  5,
 
134
        SREG_DIAL_TONE_WAIT_TIME          =  6,
 
135
        SREG_WAIT_CARRIER_AFTER_DIAL      =  7,
 
136
        SREG_DIAL_PAUSE_TIME              =  8,
 
137
        SREG_CARRIER_DETECT_RESPONSE_TIME =  9,
 
138
        SREG_CARRIER_LOSS_DISCONNECT_TIME = 10,
 
139
        SREG_DTMF_DURATION                = 11,
 
140
        SREG_ESCAPE_PROMPT_DELAY          = 12,
 
141
        SREG_ECHO                         = 13,
 
142
        SREG_QUIET                        = 14,
 
143
        SREG_VERBOSE                      = 15,
 
144
        SREG_TONE_OR_PULSE                = 16,
 
145
        SREG_TEST_TIMER                   = 18,
 
146
        SREG_INACTIVITY_TIMEOUT           = 19,
 
147
        SREG_BREAK_LENGTH                 = 21,
 
148
        SREG_ORIGIN_OR_ANSWER             = 22,
 
149
        SREG_XOFF_CHAR                    = 23,
 
150
        SREG_FLASH_TIMER                  = 24,
 
151
        SREG_DELAY_TO_DTR_OFF             = 25,  /* (NA) */
 
152
        SREG_RTS_TO_CTS_DELAY             = 26,  /* (NA) */
 
153
        SREG_AUTOANSWER_CLEAR_TIMEOUT     = 27,
 
154
        SREG_PULSE_RATIO                  = 28,
 
155
        SREG_SPEAKER_CONTROL              = 29,
 
156
        SREG_SPEAKER_VOLUME               = 30,
 
157
        SREG_SPEAKER_LEVEL                = 30,
 
158
        SREG_AUTOMODE                     = 31,
 
159
        SREG_DP                           = 32,
 
160
 
 
161
#if 1
 
162
        SREG_LINE_QUALITY_CONTROL         = 39,
 
163
        SREG_X_CODE                       = 56,
 
164
        SREG_CD                           = 60,    /* (&CN)    */
 
165
        SREG_FLOW_CONTROL                 = 62,    /* (&HN)    */
 
166
        SREG_CONNNECT_MSG_FORMAT          = 70,
 
167
        SREG_CONNNECT_MSG_SPEED_SRC       = 71,
 
168
        SREG_ANS_DELAY                    = 92,
 
169
        /* new sgregs */
 
170
        SREG_EC                           = 103,
 
171
        SREG_COMP                         = 104,
 
172
 
 
173
        SREG_DEFAULT_SETTING              = 161, // AT used
 
174
#else
 
175
        SREG_REQUESTED_DP                 = SREG_DP,
 
176
        SREG_REQUESTED_MIN_SPEED          = 33,
 
177
        SREG_REQUESTED_MAX_SPEED          = 34,
 
178
        SREG_ACTUAL_SPEED                 = 35,
 
179
        SREG_CONNECT_RESULT_CODE          = 35,
 
180
        SREG_DATA_PUMP_STATUS             = 36,
 
181
        SREG_VXX_STATUS                   = 36,
 
182
        SREG_ACTUAL_DP                    = 37,
 
183
        SREG_ACTUAL_RX_SPEED              = 38,
 
184
        SREG_LINE_QUALITY_CONTROL         = 39,
 
185
        SREG_SIGNAL_RECEPTION_GAIN        = 41,
 
186
        SREG_SNR                          = 42,
 
187
        SREG_RESULT_CODES_CONTROL         = 43,
 
188
        SREG_CONFIGURATION_SETTING        = 44,
 
189
        SREG_SIGNAL_TRANSMISSION_LEVEL    = 45,
 
190
        SREG_DISTINCTIVE_RING_SILENCE_PERIOD = 48,
 
191
        SREG_ADAPTIVE_ANSWER_MODE            = 49,
 
192
        SREG_TEST_BASE                    = 50,
 
193
        SREG_TEST_MODE                    = SREG_TEST_BASE,
 
194
        SREG_TEST_PAR1                    = (SREG_TEST_BASE+1),
 
195
        SREG_MAPPED_S28                   = 52,
 
196
        SREG_MAPPED_S37                   = 53,
 
197
        SREG_TEST_RES1                    = (SREG_TEST_BASE+4),
 
198
        SREG_TEST_RES2                    = (SREG_TEST_BASE+5),
 
199
        SREG_X_CODE                       = 56,
 
200
        SREG_MESSAGE_DETAIL               = 57,
 
201
        SREG_CURRENT_SETTING              = 59,    /* (ZN,&FN) */
 
202
        SREG_CD                           = 60,    /* (&CN)    */
 
203
        SREG_FLOW_CONTROL                 = 62,    /* (&HN)    */
 
204
        SREG_CIRCUIT_106                  = 66,
 
205
        SREG_CIRCUIT_107                  = 67,
 
206
        SREG_CIRCUIT_109                  = 68,
 
207
        SREG_CONNNECT_MSG_FORMAT          = 70,
 
208
        SREG_COMMAND_AT_A                 = 70,
 
209
        SREG_CONNNECT_MSG_SPEED_SRC       = 71,
 
210
        /* Modem Support registers */
 
211
        SREG_HANDSET_GANE                 = 72,
 
212
        SREG_RECBUF_PURGE_UPON_ABORT      = 73,
 
213
        SREG_VOICE_DIALTONE_DETECT_DELAY  = 73,   /* in seconds */
 
214
        SREG_PLAYBACK_VALUME              = 74,   /* #VGT */
 
215
        SREG_CID_ENABLE                   = 75,   /* #CID */
 
216
        SREG_ADPCM_BPS                    = 76,   /* #VBS */
 
217
        SREG_BEEP_TONE_TIMER              = 77,   /* #VBT */
 
218
        SREG_VOICE_SRC_SELECT             = 78,   /* #VLS */
 
219
        SREG_RING_GOES_AWAY_TIMER         = 79,   /* #VRA */
 
220
        SREG_RING_NEVER_CAME_TIMER        = 80,   /* #VRN */
 
221
        SREG_SILENCE_DETECT_ENABLE        = 81,   /* #VSD */
 
222
        SREG_SILENCE_DETECT_SENSITIVITY   = 82,   /* #VSS */
 
223
        SREG_SILENCE_DETECT_DURATION      = 83,   /* #VSP */
 
224
        SREG_DTMF_TONE_REPORTS_CAP0       = 84,   /* #VTD */
 
225
        SREG_DTMF_TONE_REPORTS_CAP1       = 85,
 
226
        SREG_DTMF_TONE_REPORTS_CAP2       = 86,
 
227
        SREG_TIME_MARK_PLACEMENT          = 87,   /* #VTM   */
 
228
        SREG_SPK_MUTE                     = 88,   /* #SPK   */
 
229
        SREG_SPK_SPKR                     = 89,   /* #SPK 2 */
 
230
        SREG_SPK_MICROPHONE               = 90,   /* #SPK 3 */
 
231
        SREG_ADPCM_SAMPLE_RATE            = 91,   /* #VSR   */
 
232
        SREG_ANS_DELAY                    = 92,
 
233
        /* Voice Modem Support registers */
 
234
        SREG_DP_CYCLE_TIME                = 93,
 
235
        SREG_ENV_CYCLE_TIME               = 94,
 
236
        SREG_V42_CYCLE_TIME               = 95,
 
237
        /*  Sample Rate Sregister: */
 
238
        SREG_AUDIO_SAMPLE_RATE            = 96,
 
239
        SREG_RAW_RMS_ENABLE               = 97,
 
240
        SREG_RAW_RMS_IN                   = 98,
 
241
        SREG_RAW_RMS_OUT                  = 99,
 
242
        SREG_V42_BASEREG                      = 100,
 
243
        SREG_V42_DATA_LINK                    = SREG_V42_BASEREG,
 
244
        SREG_V42_MNP_BLOCK_SIZE               = (SREG_V42_BASEREG + 1),
 
245
        SREG_V42_DATA_COMPRESSION             = (SREG_V42_BASEREG + 2),
 
246
        SREG_V42_OUTPUT_PROTOCOL              = (SREG_V42_BASEREG + 24),
 
247
        SREG_V42_OUTPUT_COMRESION             = (SREG_V42_BASEREG + 26),
 
248
        SREG_V42_ORIG_REQUEST                 = (SREG_V42_BASEREG + 29),
 
249
        SREG_V42_ORIG_FALLBACK                = (SREG_V42_BASEREG + 30),
 
250
        SREG_V42_ANSWER_FALLBACK              = (SREG_V42_BASEREG + 31),
 
251
        SREG_V42_COMPRESSION_RATIO_REPORT     = (SREG_V42_BASEREG + 32),
 
252
        SREG_V42_BAD_BYTES_PERCENTAGE         = (SREG_V42_BASEREG + 33),
 
253
        SREG_RS_DEBUG_LEVEL                   = (SREG_V42_BASEREG + 34),
 
254
        SREG_V42_EA_SINGLE_UNIT_TIME          = (SREG_V42_BASEREG + 35),
 
255
        SREG_V42_EA_USED_UNITS_NUMBER         = (SREG_V42_BASEREG + 36),
 
256
        SREG_V42_EA_CRITICAL_BAD_UNITS_NUMBER = (SREG_V42_BASEREG + 37),
 
257
        SREG_MIC_GAIN                     = 138,
 
258
        SREG_LINE_RECORD_GAIN             = 139,
 
259
        SREG_LOCAL_FLASH                  = 140,
 
260
        SREG_V42_EA_CRITICAL_BAD_UNITS_NUMBER_FOR_V34 = (SREG_V42_BASEREG+41),
 
261
        SREG_ATH1_FLAG                    = 142,
 
262
        SREG_BELL_MODE                    = 143,
 
263
        SREG_MAPPED_S35                   = 144,
 
264
        SREG_TEST_COMMAND_SUBMODE         = 145,
 
265
        SREG_PULSE_MAKE                   = 146,  /* Percent */
 
266
        SREG_PULSE_PPS                    = 147,  /* 10,20   */
 
267
        SREG_PULSE_PAUSE                  = 148,  /* * 10ms  */
 
268
        SREG_PULSE_REFRESH                = 149,  /* ms      */ 
 
269
        SREG_FCLASS_CURRENT               = 150,
 
270
        SREG_FAE_CURRENT                  = 151,
 
271
        SREG_LINE_OUT_GAIN                = 152,
 
272
        SREG_SPK_OUT_GAIN                 = 153,
 
273
        SREG_HS_OUT_GAIN                  = 154,
 
274
        SREG_DTMF_LOW_GAIN_DB_2SCOMP      = 155,
 
275
        SREG_DTMF_HIGH_GAIN_DB_2SCOMP     = 156,
 
276
        SREG_SINUS_SAMPLE_RATE_REG_1      = 157,
 
277
        SREG_SINUS_SAMPLE_RATE_REG_2      = 158,
 
278
        SREG_PULSEDIAL_DISABLE            = 159,
 
279
        /* ---------- Unsaved region from 160 ------------------- */
 
280
        SREG_DEFAULT_SETTING              = 161, // AT used
 
281
        SREG_CALL_PROGRESS_CODE           = 162,
 
282
        SREG_COUNTRY_CODE                 = 162,
 
283
        SREG_DEBUG_REG_0                  = 170,
 
284
        SREG_DEBUG_REG_1                  = 171,
 
285
        SREG_DEBUG_REG_2                  = 172,
 
286
        SREG_DEBUG_REG_3                  = 173,
 
287
        SREG_DEBUG_REG_4                  = 174,
 
288
        SREG_DIAG_PROC_CNT1_ID            = 180,
 
289
        SREG_DIAG_PROC_CNT2_ID            = 181,
 
290
        SREG_DIAG_RING                    = 182,
 
291
        SREG_DIAG_COUNT_TYPE              = 183,
 
292
        SREG_DIAG_TYPE                    = 184,
 
293
        SREG_DIAG_SCOPE                   = 185,
 
294
        SREG_PM_UPPER_THR                 = 186,
 
295
        SREG_PM_LOWER_THR                 = 187,
 
296
        SREG_PM_WEIGHT1                   = 188,
 
297
        SREG_PM_WEIGHT2                   = 189,
 
298
        SREG_PM_DEGRADE_ENABLE            = 190,
 
299
        SREG_PM_DECISION_VALUE            = 191,
 
300
        SREG_PROCESSOR_TYPE               = 193,
 
301
        SREG_HW_TRACE_LEVEL               = 197,
 
302
        SREG_HARDWARE_CONTROL             = 197,
 
303
        SREG_STRM_TRACE_LEVEL             = 198,
 
304
        SREG_STREAM_MANAGER_DEBUG_LEVEL   = 198,
 
305
        SREG_BLACKLISTING_ENABLED_FLAG    = 200,
 
306
        SREG_FAILED_ATTEMPTS_BEFORE_BLACKLISTING = 201,
 
307
        SREG_BLACKLISTING_DURATION        = 202,
 
308
        SREG_BLACKLIST_TIMEOUT            = 203,
 
309
        SREG_AT_P_COMMAND_DISABLED        = 204,
 
310
        SREG_CID_TIMEOUT_IN_100MS         = 205,
 
311
        SREG_V90_PAD_TYPE                 = 210,
 
312
        SREG_V90_POWER_REDUCTION          = 211,
 
313
        SREG_V90_PROBING_MODE             = 212,
 
314
        SREG_V90_COMPUTATIONAL_MODE       = 213,
 
315
        SREG_CALL_PROGRESS_SIGNAL_RECEPTION_GAIN = 214,
 
316
        SREG_LINE_QUALITY                 = 215,
 
317
        SREG_DC_RECALIBRATION_PERIOD      = 216,
 
318
        SREG_UPSTREAM_MIN_RATE            = 217,
 
319
        SREG_UPSTREAM_MAX_RATE            = 218,
 
320
        SREG_V22_LEVEL_CONTROL            = 220,
 
321
        SREG_CALLING_TONE_LEVEL_CONTROL   = 221,
 
322
#endif
 
323
};
 
324
 
 
325
 
 
326
/* data pumps identifiers */
 
327
enum DP_ID {
 
328
        DP_CALLPROG = 2,
 
329
        DP_DUMMY = 3,
 
330
        DP_AUTOMODE = 4,
 
331
        DP_V8 = 8,
 
332
        DP_V17 = 17,
 
333
        DP_V21 = 21,
 
334
        DP_V22 = 22,
 
335
        DP_V23 = 23,
 
336
        DP_V22BIS = 122,
 
337
        DP_V32 = 32,
 
338
        DP_V32BIS = 132,
 
339
        DP_V34 = 34,
 
340
        DP_V34BIS = 134,
 
341
        DP_B103 = 103,
 
342
        DP_B212 = 212,
 
343
        DP_FAX = 100,
 
344
        DP_K56 = 56,
 
345
        DP_K56_OR_V90 = 65,
 
346
        DP_V8BIS = 108,
 
347
        DP_V90 = 90,
 
348
        DP_V90_NO_V8BIS = 91,
 
349
        DP_V92 = 92,
 
350
        DP_TEST  = 126,
 
351
        DP_SINUS = 127,
 
352
        DP_MAX = 128,
 
353
        MAX_DP = 128
 
354
};
 
355
 
 
356
/* dp status */
 
357
#define DPSTAT_OK         0
 
358
#define DPSTAT_CONNECT    1
 
359
#define DPSTAT_ERROR      4
 
360
#define DPSTAT_NODIALTONE 6
 
361
#define DPSTAT_BUSY       7
 
362
#define DPSTAT_NOANSWER   8
 
363
#define DPSTAT_CHANGEDP   10
 
364
 
 
365
/* dsp info structure */
 
366
struct dsp_info {
 
367
        unsigned connection_type;
 
368
        long     clock_deviation;
 
369
        unsigned qc_lapm;
 
370
        unsigned qc_index;
 
371
};
 
372
 
 
373
 
 
374
/* fax definitions */
 
375
 
 
376
#define FAX_STATUS_OK        1
 
377
#define FAX_STATUS_ERROR     2
 
378
#define FAX_STATUS_CONNECT   3
 
379
#define FAX_STATUS_NOCARRIER 4
 
380
 
 
381
enum FAX_CMD {
 
382
        FAX_CMD_FTS,
 
383
        FAX_CMD_FRS,
 
384
        FAX_CMD_FTM,
 
385
        FAX_CMD_FRM,
 
386
        FAX_CMD_FTH,
 
387
        FAX_CMD_FRH,
 
388
};
 
389
 
 
390
/* voice definitions */
 
391
 
 
392
enum VOICE_CMD {
 
393
        VOICE_CMD_STATE_COMMAND,
 
394
        VOICE_CMD_STATE_RX,
 
395
        VOICE_CMD_STATE_TX,
 
396
        VOICE_CMD_STATE_DUPLEX,
 
397
        VOICE_CMD_STATE_SPEAKER,
 
398
        VOICE_CMD_BEEP,
 
399
        VOICE_CMD_DTMF,
 
400
        VOICE_CMD_ABORT,
 
401
};
 
402
 
 
403
#define VOICE_STATUS_OK      1
 
404
#define VOICE_STATUS_ERROR   2
 
405
#define VOICE_STATUS_CONNECT 3
 
406
 
 
407
#define VOICE_STATE_COMMAND 0x00
 
408
#define VOICE_STATE_RX      0x01
 
409
#define VOICE_STATE_TX      0x02
 
410
#define VOICE_STATE_DUPLEX (VOICE_STATE_TX|VOICE_STATE_RX)
 
411
#define VOICE_STATE_SPEAKER 0x08
 
412
 
 
413
#define VOICE_DEVICE_NONE 0
 
414
#define VOICE_DEVICE_LINE 1
 
415
 
 
416
struct voice_info {
 
417
        unsigned comp_method;
 
418
        unsigned sample_rate;
 
419
        unsigned rx_gain;
 
420
        unsigned tx_gain;
 
421
        unsigned dtmf_symbol;
 
422
        unsigned tone1_freq;
 
423
        unsigned tone2_freq;
 
424
        unsigned tone_duration;
 
425
        unsigned inactivity_timer;
 
426
        unsigned silence_detect_sensitivity;
 
427
        unsigned silence_detect_period;
 
428
};
 
429
 
 
430
 
 
431
/*
 
432
 *    prototypes
 
433
 *
 
434
 */
 
435
 
 
436
struct modem;
 
437
 
 
438
extern int modem_get_sreg(struct modem *m, unsigned int num);
 
439
extern int modem_set_sreg(struct modem *m, unsigned int num, int val);
 
440
 
 
441
 
 
442
#endif /* __MODEM_DEFS_H__ */
 
443