Add FAX Class 1 support

This commit is contained in:
Karsten Keil 2000-01-20 19:59:43 +00:00
parent 19d8a79e5d
commit f8bceb4ebc
8 changed files with 925 additions and 680 deletions

View File

@ -26,6 +26,10 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.27 1999/11/29 13:12:03 armin
* Autoconnect on L2_TRANS doesn't work with link_level correctly,
* changed back to former mode.
*
* Revision 1.26 1999/11/25 11:43:27 armin
* Fixed statectrl and connect message.
* X.75 fix and HDLC/transparent with autoconnect.
@ -220,7 +224,7 @@ idi_assign_req(eicon_REQ *reqbuf, int signet, eicon_chan *chan)
reqbuf->XBuffer.P[l++] = 1;
}
switch(chan->l3prot) {
case ISDN_PROTO_L3_FAX:
case ISDN_PROTO_L3_FCLASS2:
#ifdef CONFIG_ISDN_TTY_FAX
reqbuf->XBuffer.P[l++] = 6;
reqbuf->XBuffer.P[l++] = NLC;

View File

@ -31,6 +31,9 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.22 1999/11/27 12:56:19 armin
* Forgot some iomem changes for last ioremap compat.
*
* Revision 1.21 1999/11/25 11:35:10 armin
* Microchannel fix from Erik Weber (exrz73@ibm.net).
* Minor cleanup.
@ -756,7 +759,7 @@ eicon_command(eicon_card * card, isdn_ctrl * c)
break;
chan->l3prot = (c->arg >> 8);
#ifdef CONFIG_ISDN_TTY_FAX
if (chan->l3prot == ISDN_PROTO_L3_FAX)
if (chan->l3prot == ISDN_PROTO_L3_FCLASS2)
chan->fax = c->parm.fax;
#endif
return 0;
@ -948,8 +951,7 @@ if_sendbuf(int id, int channel, int ack, struct sk_buff *skb)
}
/* jiftime() copied from HiSax */
inline int
jiftime(char *s, long mark)
static inline int jiftime(char *s, long mark)
{
s += 8;
@ -1186,7 +1188,7 @@ eicon_alloccard(int Type, int membase, int irq, char *id)
ISDN_FEATURE_L2_MODEM |
ISDN_FEATURE_L2_FAX |
ISDN_FEATURE_L3_TRANSDSP |
ISDN_FEATURE_L3_FAX;
ISDN_FEATURE_L3_FCLASS2;
card->hwif.pci.card = (void *)card;
card->hwif.pci.PCIreg = pcic->PCIreg;
card->hwif.pci.PCIcfg = pcic->PCIcfg;
@ -1210,7 +1212,7 @@ eicon_alloccard(int Type, int membase, int irq, char *id)
ISDN_FEATURE_L2_MODEM |
ISDN_FEATURE_L2_FAX |
ISDN_FEATURE_L3_TRANSDSP |
ISDN_FEATURE_L3_FAX;
ISDN_FEATURE_L3_FCLASS2;
card->hwif.pci.card = (void *)card;
card->hwif.pci.shmem = (eicon_pci_shmem *)pcic->shmem;
card->hwif.pci.PCIreg = pcic->PCIreg;

View File

@ -21,6 +21,10 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.95 2000/01/09 20:43:13 detabc
* exand logical bind-group's for both call's (in and out).
* add first part of kernel-config-help for abc-extension.
*
* Revision 1.94 1999/11/20 22:14:13 detabc
* added channel dial-skip in case of external use
* (isdn phone or another isdn device) on the same NTBA.
@ -454,6 +458,7 @@ isdn_divert_if *divert_if = NULL; /* interface to diversion module */
static int isdn_writebuf_stub(int, int, const u_char *, int, int);
static void set_global_features(void);
void
isdn_MOD_INC_USE_COUNT(void)
@ -736,29 +741,33 @@ isdn_receive_skb_callback(int di, int channel, struct sk_buff *skb)
int
isdn_command(isdn_ctrl *cmd)
{
if (cmd->driver == -1) {
printk(KERN_WARNING "isdn_command command(%x) driver -1\n", cmd->command);
return(1);
}
if (cmd->command == ISDN_CMD_SETL2) {
int idx = isdn_dc2minor(cmd->driver, cmd->arg & 255);
unsigned long l2prot = (cmd->arg >> 8) & 255;
unsigned long features = (dev->drv[cmd->driver]->interface->features
>> ISDN_FEATURE_L2_SHIFT) &
ISDN_FEATURE_L2_MASK;
unsigned long l2_feature = (1 << l2prot);
int idx = isdn_dc2minor(cmd->driver, cmd->arg & 255);
unsigned long l2prot = (cmd->arg >> 8) & 255;
unsigned long features = (dev->drv[cmd->driver]->interface->features
>> ISDN_FEATURE_L2_SHIFT) &
ISDN_FEATURE_L2_MASK;
unsigned long l2_feature = (1 << l2prot);
switch (l2prot) {
case ISDN_PROTO_L2_V11096:
case ISDN_PROTO_L2_V11019:
case ISDN_PROTO_L2_V11038:
/* If V.110 requested, but not supported by
* HL-driver, set emulator-flag and change
* Layer-2 to transparent
*/
if (!(features & l2_feature)) {
dev->v110emu[idx] = l2prot;
cmd->arg = (cmd->arg & 255) |
(ISDN_PROTO_L2_TRANS << 8);
} else
dev->v110emu[idx] = 0;
}
switch (l2prot) {
case ISDN_PROTO_L2_V11096:
case ISDN_PROTO_L2_V11019:
case ISDN_PROTO_L2_V11038:
/* If V.110 requested, but not supported by
* HL-driver, set emulator-flag and change
* Layer-2 to transparent
*/
if (!(features & l2_feature)) {
dev->v110emu[idx] = l2prot;
cmd->arg = (cmd->arg & 255) |
(ISDN_PROTO_L2_TRANS << 8);
} else
dev->v110emu[idx] = 0;
}
}
return dev->drv[cmd->driver]->interface->command(cmd);
}
@ -838,6 +847,7 @@ isdn_status_callback(isdn_ctrl * c)
for (i = 0; i < ISDN_MAX_CHANNELS; i++)
if (dev->drvmap[i] == di)
isdn_all_eaz(di, dev->chanmap[i]);
set_global_features();
break;
case ISDN_STAT_STOP:
dev->drv[di]->flags &= ~DRV_FLAG_RUNNING;
@ -1097,6 +1107,7 @@ isdn_status_callback(isdn_ctrl * c)
dev->drv[di] = NULL;
dev->drvid[di][0] = '\0';
isdn_info_update();
set_global_features();
restore_flags(flags);
return 0;
case ISDN_STAT_L1ERR:
@ -2503,6 +2514,19 @@ isdn_add_channels(driver *d, int drvidx, int n, int adding)
* Low-level-driver registration
*/
static void
set_global_features(void)
{
int drvidx;
dev->global_features = 0;
for (drvidx = 0; drvidx < ISDN_MAX_DRIVERS; drvidx++) {
if (!dev->drv[drvidx])
continue;
if (dev->drv[drvidx]->interface)
dev->global_features |= dev->drv[drvidx]->interface->features;
}
}
#ifdef CONFIG_ISDN_DIVERSION
extern isdn_divert_if *divert_if;
@ -2616,6 +2640,7 @@ register_isdn(isdn_if * i)
strcpy(dev->drvid[drvidx], i->id);
isdn_info_update();
dev->drivers++;
set_global_features();
restore_flags(flags);
return 1;
}

View File

@ -20,6 +20,9 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.80 1999/11/07 13:34:30 armin
* Fixed AT command line editor
*
* Revision 1.79 1999/10/29 18:35:08 armin
* Check number len in isdn_get_msnstr() to avoid buffer overflow.
*
@ -345,6 +348,7 @@
#endif
#define FIX_FILE_TRANSFER
#define DUMMY_HAYES_AT
/* Prototypes */
@ -1552,6 +1556,25 @@ isdn_tty_write(struct tty_struct *tty, int from_user, const u_char * buf, int co
}
}
} else
#ifdef ISDN_TTY_FCLASS1
if (TTY_IS_FCLASS1(info)) {
int cc = isdn_tty_handleDLEdown(info, m, c);
if (info->vonline & 4) { /* ETX seen */
isdn_ctrl c;
c.command = ISDN_CMD_FAXCMD;
c.driver = info->isdn_driver;
c.arg = info->isdn_channel;
c.parm.aux.cmd = ISDN_FAX_CLASS1_CTRL;
c.parm.aux.subcmd = ETX;
isdn_command(&c);
}
info->vonline = 0;
printk(KERN_DEBUG "fax dle cc/c %d/%d\n", cc,c);
info->xmit_count += cc;
} else
#endif
#endif
info->xmit_count += c;
} else {
@ -2578,7 +2601,7 @@ isdn_tty_find_icall(int di, int ch, setup_parm setup)
(info->flags & (ISDN_ASYNC_NORMAL_ACTIVE | ISDN_ASYNC_CALLOUT_ACTIVE))
int
isdn_tty_stat_callback(int i, isdn_ctrl * c)
isdn_tty_stat_callback(int i, isdn_ctrl *c)
{
int mi;
modem_info *info;
@ -2679,8 +2702,7 @@ isdn_tty_stat_callback(int i, isdn_ctrl * c)
if (info->emu.mdmreg[REG_L2PROT] == ISDN_PROTO_L2_MODEM) {
strcpy(info->emu.connmsg, c->parm.num);
isdn_tty_modem_result(1, info);
}
else
} else
isdn_tty_modem_result(5, info);
}
if (USG_VOICE(dev->usage[i]))
@ -2731,7 +2753,7 @@ isdn_tty_stat_callback(int i, isdn_ctrl * c)
#ifdef CONFIG_ISDN_TTY_FAX
case ISDN_STAT_FAXIND:
if (TTY_IS_ACTIVE(info)) {
isdn_tty_fax_command(info);
isdn_tty_fax_command(info, c);
}
break;
#endif
@ -3258,8 +3280,22 @@ isdn_tty_cmd_ATand(char **p, modem_info * info)
info->xmit_size /= 10;
}
break;
case 'C':
/* &C - DCD Status */
p[0]++;
switch (isdn_getnum(p)) {
case 0:
m->mdmreg[REG_DCD] &= ~BIT_DCD;
break;
case 1:
m->mdmreg[REG_DCD] |= BIT_DCD;
break;
default:
PARSE_ERROR1
}
break;
case 'D':
/* &D - Set DCD-Low-behavior */
/* &D - Set DTR-Low-behavior */
p[0]++;
switch (isdn_getnum(p)) {
case 0:
@ -3291,6 +3327,14 @@ isdn_tty_cmd_ATand(char **p, modem_info * info)
isdn_tty_reset_profile(m);
isdn_tty_modem_reset_regs(info, 1);
break;
#ifdef DUMMY_HAYES_AT
case 'K':
/* only for be compilant with common scripts */
/* &K Flowcontrol - no function */
p[0]++;
isdn_getnum(p);
break;
#endif
case 'L':
/* &L -Set Numbers to listen on */
p[0]++;
@ -3576,8 +3620,12 @@ isdn_tty_cmd_PLUSF(char **p, modem_info * info)
sprintf(rs, "\r\n%d",
(m->mdmreg[REG_SI1] & 1) ? 8 : 0);
#ifdef CONFIG_ISDN_TTY_FAX
if (m->mdmreg[REG_L2PROT] == ISDN_PROTO_L2_FAX)
sprintf(rs, "\r\n2");
if (TTY_IS_FCLASS2(info))
sprintf(rs, "\r\n2");
#ifdef ISDN_TTY_FCLASS1
else if (TTY_IS_FCLASS1(info))
sprintf(rs, "\r\n1");
#endif
#endif
isdn_tty_at_cout(rs, info);
break;
@ -3593,11 +3641,27 @@ isdn_tty_cmd_PLUSF(char **p, modem_info * info)
m->mdmreg[REG_PSIZE] * 16;
break;
#ifdef CONFIG_ISDN_TTY_FAX
case '2':
#ifdef ISDN_TTY_FCLASS1
case '1':
p[0]++;
if (!(dev->global_features &
ISDN_FEATURE_L3_FCLASS1))
PARSE_ERROR1;
m->mdmreg[REG_SI1] = 1;
m->mdmreg[REG_L2PROT] = ISDN_PROTO_L2_FAX;
m->mdmreg[REG_L3PROT] = ISDN_PROTO_L3_FAX;
m->mdmreg[REG_L3PROT] = ISDN_PROTO_L3_FCLASS1;
info->xmit_size =
m->mdmreg[REG_PSIZE] * 16;
break;
#endif
case '2':
p[0]++;
if (!(dev->global_features &
ISDN_FEATURE_L3_FCLASS2))
PARSE_ERROR1;
m->mdmreg[REG_SI1] = 1;
m->mdmreg[REG_L2PROT] = ISDN_PROTO_L2_FAX;
m->mdmreg[REG_L3PROT] = ISDN_PROTO_L3_FCLASS2;
info->xmit_size =
m->mdmreg[REG_PSIZE] * 16;
break;
@ -3612,11 +3676,19 @@ isdn_tty_cmd_PLUSF(char **p, modem_info * info)
break;
case '?':
p[0]++;
strcpy(rs, "\r\n0,");
#ifdef CONFIG_ISDN_TTY_FAX
isdn_tty_at_cout("\r\n0,2,8", info);
#else
isdn_tty_at_cout("\r\n0,8", info);
#ifdef ISDN_TTY_FCLASS1
if (dev->global_features &
ISDN_FEATURE_L3_FCLASS1)
strcat(rs, "1,");
#endif
if (dev->global_features &
ISDN_FEATURE_L3_FCLASS2)
strcat(rs, "2,");
#endif
strcat(rs, "8");
isdn_tty_at_cout(rs, info);
break;
default:
PARSE_ERROR1;
@ -4006,6 +4078,15 @@ isdn_tty_parse_at(modem_info * info)
default:
}
break;
#ifdef DUMMY_HAYES_AT
case 'L':
case 'M':
/* only for be compilant with common scripts */
/* no function */
p++;
isdn_getnum(&p);
break;
#endif
case 'O':
/* O - Go online */
p++;

View File

@ -20,6 +20,10 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.17 1999/09/21 19:00:35 armin
* Extended FCON message with added CPN
* can now be activated with Bit 1 of Reg 23.
*
* Revision 1.16 1999/08/22 20:26:10 calle
* backported changes from kernel 2.3.14:
* - several #include "config.h" gone, others come.
@ -156,6 +160,15 @@
#define BIT_CPN 1
#define BIT_CPNFCON 2
#ifdef ISDN_TTY_FCLASS1
#define TTY_IS_FCLASS1(info) \
((info->emu.mdmreg[REG_L2PROT] == ISDN_PROTO_L2_FAX) && \
(info->emu.mdmreg[REG_L3PROT] == ISDN_PROTO_L3_FCLASS1))
#endif
#define TTY_IS_FCLASS2(info) \
((info->emu.mdmreg[REG_L2PROT] == ISDN_PROTO_L2_FAX) && \
(info->emu.mdmreg[REG_L3PROT] == ISDN_PROTO_L3_FCLASS2))
extern void isdn_tty_modem_escape(void);
extern void isdn_tty_modem_ring(void);
extern void isdn_tty_carrier_timeout(void);
@ -171,6 +184,6 @@ extern void isdn_tty_at_cout(char *, modem_info *);
extern void isdn_tty_modem_hup(modem_info *, int);
#ifdef CONFIG_ISDN_TTY_FAX
extern int isdn_tty_cmd_PLUSF_FAX(char **, modem_info *);
extern int isdn_tty_fax_command(modem_info *);
extern int isdn_tty_fax_command(modem_info *, isdn_ctrl *);
extern void isdn_tty_fax_bitorder(modem_info *, struct sk_buff *);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -21,6 +21,10 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.87 2000/01/09 20:43:15 detabc
* exand logical bind-group's for both call's (in and out).
* add first part of kernel-config-help for abc-extension.
*
* Revision 1.86 1999/12/05 16:06:09 detabc
* add resethandling for rawip-compression.
* at now all B2-Protocols are usable with rawip-compression
@ -376,21 +380,21 @@
#define ISDN_DW_ABC_FLAG_NO_UDP_CHECK 0x00000002L
#define ISDN_DW_ABC_FLAG_NO_UDP_HANGUP 0x00000004L
#define ISDN_DW_ABC_FLAG_NO_UDP_DIAL 0x00000008L
#define ISDN_DW_ABC_FLAG_DYNADDR 0x00000010L
#define ISDN_DW_ABC_FLAG_DYNADDR 0x00000010L
#define ISDN_DW_ABC_FLAG_RCV_NO_HUPTIMER 0x00000020L
#define ISDN_DW_ABC_FLAG_NO_CH_EXTINUSE 0x00000040L
#define ISDN_DW_ABC_FLAG_NO_CONN_ERROR 0x00000080L
#define ISDN_DW_ABC_FLAG_BSD_COMPRESS 0x00000100L
#define ISDN_DW_ABC_FLAG_NO_LCR 0x00000200L
#define ISDN_DW_ABC_FLAG_NO_LCR 0x00000200L
#define ISDN_DW_ABC_IFFLAG_NODCHAN 0x00000001L
#define ISDN_DW_ABC_IFFLAG_BSDAKTIV 0x00000002L
#define ISDN_DW_ABC_IFFLAG_NODCHAN 0x00000001L
#define ISDN_DW_ABC_IFFLAG_BSDAKTIV 0x00000002L
#define ISDN_DW_ABC_IFFLAG_RSTREMOTE 0x00000004L
#define ISDN_DW_ABC_BITLOCK_SEND 0
#define ISDN_DW_ABC_BITLOCK_RECEIVE 1
#define ISDN_DW_ABC_BITLOCK_SEND 0
#define ISDN_DW_ABC_BITLOCK_RECEIVE 1
#define ISDN_DW_ABC_MAX_CH_P_RIVER (32)
#define ISDN_DW_ABC_MAX_CH_P_RIVER (32)
#endif
@ -1053,35 +1057,36 @@ typedef struct isdn_devt {
isdn_v110_stream *v110[ISDN_MAX_CHANNELS]; /* V.110 private data */
struct semaphore sem; /* serialize list access*/
isdn_module *modules;
unsigned long global_features;
#ifdef CONFIG_ISDN_WITH_ABC_ICALL_BIND
u_long dwabc_lch_check; /* lasttime a locical chanelmap checked */
u_long dwabc_lch_check; /* lasttime a locical chanelmap checked */
#endif
} isdn_dev;
extern isdn_dev *dev;
#ifdef CONFIG_ISDN_WITH_ABC
extern void isdn_net_unreachable(struct net_device *,struct sk_buff *,char *);
extern void isdn_net_unreachable(struct net_device *,struct sk_buff *,char *);
extern void isdn_net_log_skb_dwabc(struct sk_buff *,isdn_net_local *,char *);
extern void isdn_net_hangup(struct net_device *d);
extern void isdn_dw_clear_if(ulong pm,isdn_net_local *);
extern void isdn_dwabc_test_phone(isdn_net_local *);
extern void isdn_dwabc_test_phone(isdn_net_local *);
extern void isdn_dw_abc_init_func(void);
extern void isdn_dw_abc_release_func(void);
extern int isdn_dw_abc_reset_interface(isdn_net_local *,int);
extern int dwabc_bsd_init(isdn_net_local *lp);
extern void dwabc_bsd_free(isdn_net_local *lp);
extern int isdn_dw_abc_reset_interface(isdn_net_local *,int);
extern int dwabc_bsd_init(isdn_net_local *lp);
extern void dwabc_bsd_free(isdn_net_local *lp);
extern struct sk_buff *dwabc_bsd_compress(isdn_net_local *,struct sk_buff *,struct net_device *);
extern void dwabc_bsd_first_gen(isdn_net_local *);
extern struct sk_buff *dwabc_bsd_rx_pkt(isdn_net_local *,struct sk_buff *,struct net_device *);
#ifdef CONFIG_ISDN_WITH_ABC_LCR_SUPPORT
extern size_t isdn_dw_abc_lcr_readstat(char *,size_t);
extern ulong isdn_dw_abc_lcr_call_number(isdn_net_local *,isdn_ctrl *);
extern void isdn_dw_abc_lcr_open(void);
extern void isdn_dw_abc_lcr_close(void);
extern void isdn_dw_abc_lcr_ioctl(u_long);
extern void isdn_dw_abc_lcr_clear(isdn_net_local *);
extern void isdn_dw_abc_free_lch_with_pch(int,int);
extern size_t isdn_dw_abc_lcr_readstat(char *,size_t);
extern ulong isdn_dw_abc_lcr_call_number(isdn_net_local *,isdn_ctrl *);
extern void isdn_dw_abc_lcr_open(void);
extern void isdn_dw_abc_lcr_close(void);
extern void isdn_dw_abc_lcr_ioctl(u_long);
extern void isdn_dw_abc_lcr_clear(isdn_net_local *);
extern void isdn_dw_abc_free_lch_with_pch(int,int);
#endif
#ifdef CONFIG_ISDN_WITH_ABC_UDP_CHECK
extern int dw_abc_udp_test(struct sk_buff *skb,struct net_device *ndev);

View File

@ -22,6 +22,9 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.32 1999/10/11 22:03:00 keil
* COMPAT_NEED_UACCESS (no include in isdn_compat.h)
*
* Revision 1.31 1999/09/06 07:29:36 fritz
* Changed my mail-address.
*
@ -173,10 +176,11 @@
/*
* Values for Layer-3-protocol-selection
*/
#define ISDN_PROTO_L3_TRANS 0 /* Transparent */
#define ISDN_PROTO_L3_TRANSDSP 1 /* Transparent with DSP */
#define ISDN_PROTO_L3_FAX 2 /* Fax Group 2/3 */
#define ISDN_PROTO_L3_MAX 7 /* Max. 8 Protocols */
#define ISDN_PROTO_L3_TRANS 0 /* Transparent */
#define ISDN_PROTO_L3_TRANSDSP 1 /* Transparent with DSP */
#define ISDN_PROTO_L3_FCLASS2 2 /* Fax Group 2/3 CLASS 2 */
#define ISDN_PROTO_L3_FCLASS1 3 /* Fax Group 2/3 CLASS 1 */
#define ISDN_PROTO_L3_MAX 7 /* Max. 8 Protocols */
#ifdef __KERNEL__
@ -360,7 +364,8 @@ typedef struct
/* Layer 3 */
#define ISDN_FEATURE_L3_TRANS (0x10000 << ISDN_PROTO_L3_TRANS)
#define ISDN_FEATURE_L3_TRANSDSP (0x10000 << ISDN_PROTO_L3_TRANSDSP)
#define ISDN_FEATURE_L3_FAX (0x10000 << ISDN_PROTO_L3_FAX)
#define ISDN_FEATURE_L3_FCLASS2 (0x10000 << ISDN_PROTO_L3_FCLASS2)
#define ISDN_FEATURE_L3_FCLASS1 (0x10000 << ISDN_PROTO_L3_FCLASS1)
#define ISDN_FEATURE_L3_MASK (0x0FF0000) /* Max. 8 Protocols */
#define ISDN_FEATURE_L3_SHIFT (16)
@ -461,6 +466,33 @@ typedef struct T30_s {
#endif /* TTY_FAX */
#define ISDN_FAX_CLASS1_FAE 0
#define ISDN_FAX_CLASS1_FTS 1
#define ISDN_FAX_CLASS1_FRS 2
#define ISDN_FAX_CLASS1_FTM 3
#define ISDN_FAX_CLASS1_FRM 4
#define ISDN_FAX_CLASS1_FTH 5
#define ISDN_FAX_CLASS1_FRH 6
#define ISDN_FAX_CLASS1_CTRL 7
#define ISDN_FAX_CLASS1_OK 0
#define ISDN_FAX_CLASS1_CONNECT 1
#define ISDN_FAX_CLASS1_NOCARR 2
#define ISDN_FAX_CLASS1_ERROR 3
#define ISDN_FAX_CLASS1_FCERROR 4
#define ISDN_FAX_CLASS1_QUERY 5
typedef struct {
__u8 cmd;
__u8 subcmd;
__u8 para[50];
} aux_s;
#define AT_COMMAND 0
#define AT_EQ_VALUE 1
#define AT_QUERY 2
#define AT_EQ_QUERY 3
/* CAPI structs */
/* this is compatible to the old union size */
@ -492,13 +524,14 @@ typedef struct {
int command; /* Command or Status (see above) */
ulong arg; /* Additional Data */
union {
ulong errcode; /* Type of error with STAT_L1ERR */
int length; /* Amount of bytes sent with STAT_BSENT */
u_char num[50];/* Additional Data */
ulong errcode; /* Type of error with STAT_L1ERR */
int length; /* Amount of bytes sent with STAT_BSENT */
u_char num[50]; /* Additional Data */
setup_parm setup;/* For SETUP msg */
capi_msg cmsg; /* For CAPI like messages */
char display[85];/* display message data */
dss1_cmd_stat dss1_io; /* DSS1 IO-parameter/result */
char display[85];/* display message data */
dss1_cmd_stat dss1_io; /* DSS1 IO-parameter/result */
aux_s aux; /* for modem commands/indications */
#ifdef CONFIG_ISDN_TTY_FAX
T30_s *fax; /* Pointer to ttys fax struct */
#endif