3
* Copyright (c) 2002, Smart Link Ltd.
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions
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.
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.
36
* modem_defs.h - modem common definitions
38
* Author: sashak@smlink.com
41
#ifndef __MODEM_DEFS_H__
42
#define __MODEM_DEFS_H__
45
#include <linux/types.h>
48
#include <sys/types.h>
51
typedef __uint16_t u16;
52
typedef __uint32_t u32;
55
typedef __int16_t s16;
56
typedef __int32_t s32;
57
#endif /* !__KERNEL__ */
60
#define MODEM_HOOK_ON 0
61
#define MODEM_HOOK_OFF 1
62
#define MODEM_HOOK_SNOOPING 2
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
81
/* modem device status mask */
82
#define MDMSTAT_ERROR 0x1
83
#define MDMSTAT_RING 0x2
84
#define MDMSTAT_DATA 0x4
87
/* codec types - numbers important */
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
110
#define MFMT_QUERY 0x0
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)
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))
128
SREG_RINGS_TO_AUTO_ANSWER = 0,
129
SREG_RING_COUNTER = 1,
130
SREG_ESCAPE_CHAR = 2,
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,
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,
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,
162
SREG_LINE_QUALITY_CONTROL = 39,
164
SREG_CD = 60, /* (&CN) */
165
SREG_FLOW_CONTROL = 62, /* (&HN) */
166
SREG_CONNNECT_MSG_FORMAT = 70,
167
SREG_CONNNECT_MSG_SPEED_SRC = 71,
173
SREG_DEFAULT_SETTING = 161, // AT used
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,
183
SREG_ACTUAL_RX_SPEED = 38,
184
SREG_LINE_QUALITY_CONTROL = 39,
185
SREG_SIGNAL_RECEPTION_GAIN = 41,
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,
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),
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 */
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),
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,
326
/* data pumps identifiers */
348
DP_V90_NO_V8BIS = 91,
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
365
/* dsp info structure */
367
unsigned connection_type;
368
long clock_deviation;
374
/* fax definitions */
376
#define FAX_STATUS_OK 1
377
#define FAX_STATUS_ERROR 2
378
#define FAX_STATUS_CONNECT 3
379
#define FAX_STATUS_NOCARRIER 4
390
/* voice definitions */
393
VOICE_CMD_STATE_COMMAND,
396
VOICE_CMD_STATE_DUPLEX,
397
VOICE_CMD_STATE_SPEAKER,
403
#define VOICE_STATUS_OK 1
404
#define VOICE_STATUS_ERROR 2
405
#define VOICE_STATUS_CONNECT 3
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
413
#define VOICE_DEVICE_NONE 0
414
#define VOICE_DEVICE_LINE 1
417
unsigned comp_method;
418
unsigned sample_rate;
421
unsigned dtmf_symbol;
424
unsigned tone_duration;
425
unsigned inactivity_timer;
426
unsigned silence_detect_sensitivity;
427
unsigned silence_detect_period;
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);
442
#endif /* __MODEM_DEFS_H__ */