/*
Copyright (C) Magna Carta Software, Inc. 1988-1991. All Rights Reserved.
C COMMUNICATIONS TOOLKIT
MODEM.H -- MODEM INTERFACE DECLARATIONS
*/
#if !defined(MODEM_H_INCLUDED)
#define MODEM_H_INCLUDED
#if defined(__cplusplus)
extern "C" {
#endif
#include <ccttype.h>
#define MODEM_BUF_SIZE 41
#define MODEM_REPLY_LEN 40
#define CMD1 2
#define CMD2 3
#define CMD3 4
#define CMD5 6
#define CMD8 9
typedef struct modem {
/*
THESE ARE THE MODEM COMMAND STRINGS
NOT ALL MODEMS SUPPORT ALL STRINGS
*/
/* SUPPORTED FROM SMARTMODEM 300 ON */
char dial_cmd[CMD1]; /* dial 'D'' */
char echo[CMD2]; /* set echo state 'E0|1' */
char speaker[CMD2]; /* set speaker state 'M0|1|2' */
char quiet[CMD2]; /* set quiet state 'Q0|1' */
char verbose[CMD2]; /* set verbosity state 'V1|2' */
char reset[CMD2]; /* reset the modem 'Z[0|1|2]' */
char escape[CMD8]; /* escape to command mode char '+' */
/* VARIABLES REQUIRED TO BE KNOWN BY ALL COMMAND STRINGS */
char csi[CMD3]; /* command sequence introducer */
char eocstr[CMD3]; /* end-of-command string */
char *a_rc; /* array of verbal and digit rc's */
short repeat; /* # of times to repeat command */
short echo_local; /* echo commands to console? */
/* TIMING PARAMETERS */
WORD rx_ibdelay; /* command RX interbyte delay */
WORD tx_ibdelay; /* command TX interbyte delay */
WORD guardtime; /* escape guard time */
WORD rx_lbdelay; /* wait for command echo (ms.) */
WORD tx_delay; /* delay from modem cmd. delaychar */
WORD tx_delaych; /* modem cmd. delaychar */
char pause_len[CMD8]; /* pause in dialing (secs.) */
char dcd_wait[CMD8]; /* wait for carrier (secs.) */
char tone_wait[CMD8]; /* wait for dial tone (ms.) (2000) */
/* PARAMETERS REQUIRED FOR INITIALIZATION */
char init[MODEM_BUF_SIZE]; /* primary configuration string */
/* MISCELLANEOUS PARAMETERS THAT YOU MAY SUPPLY */
char rings[CMD8]; /* # of rings before autoanswer */
/* PARAMETERS ASSOCIATED WITH DIALING */
char dial_mode[CMD1]; /* tone (or pulse) dial? */
/* RUN-TIME PARAMETERS. RETURNED BY modem_init() (initialized by program) */
short mtype; /* modem type returned */
char okalpha[MODEM_BUF_SIZE]; /* alpha chars. in dial string */
long max_speed; /* max. modem data rate */
long reset_speed; /* speed at which modem reset */
char buf[MODEM_BUF_SIZE]; /* buffer to build commands */
/* RUN-TIME PARAMETERS RETURNED BY MODEM CONNECT RESPONSE */
WORD ec; /* error correction 1=MNP, 2=V.42 */
WORD mod; /* modulation 1=V.32 */
WORD comp; /* compression 1= TRUE */
WORD carrier; /* reported carrier speed */
/* OTHER RUN-TIME PARAMETERS */
WORD flags; /* Bit-encoded:
Bit 0 = 1 => dynamic alloc.
Bit 1 = 1 => initialized.
Bit 2 = 1 => switch baud
*/
} MODEM;
typedef struct telebit {
/* SUPPORTED IN TELEBIT MODEMS */
char *a_rc; /* array of verbal and digit rc's */
char govoice[CMD8]; /* go to voice mode 'G' */
char num_dir_set[CMD8]; /* set directory 'N(n)=(x) n=0-9 */
char num_get[CMD8]; /* display stored no. N(n)? n=0-9 */
char num_xget[CMD8]; /* display stored no. & S-registers 'N?' */
char blind[CMD8]; /* blind state '&B' */
char useEEPROM[CMD8]; /* use EEPROM parameters '&E0|1|2' */
char getEEPROM[CMD8]; /* get EEPROM parameters &N(n) 0-2 */
char retrain[CMD8]; /* force retrain or reneg. &R(n) n=0|1 */
char remote[CMD8]; /* remote modem access '%' */
} TELEBIT;
typedef struct uds_v32 {
char *a_rc; /* array of verbal and digit rc's */
char num_get[CMD8]; /* display 9 stored nos *ND */
char status_display[CMD8]; /* status display on 'Q0|1|2' */
char compress[CMD8]; /* MNP compression on '%C|0|1' */
char disc_buf[CMD8]; /* disconnect buffer delay '%D|0|n' */
char enable_retrain[CMD8]; /* auto retrain enable '%E|0|1' */
char password[CMD8]; /* security code '%P=0-999999' */
char remote_password[CMD8];/* security code '%T=0-999999' */
char tx_test[CMD8]; /* transmit self test '%T' */
} UDS_V32;
/* MODEM TYPES */
#define HAYES_300 03
#define HAYES_1200 12
#define HAYES_1200EF 13
#define HAYES_2400 24
#define HAYES_9600 96
#define TELEBIT_RA12C 961
#define TELEBIT_RA12E 962
#define TELEBIT_RM12C 963
#define TELEBIT_T18PC 964
#define TELEBIT_T18SA 965
#define TELEBIT_T18RMM 966
#define UDS_9600 901
#define UDS_V3224 1
#define UDS_V3225 2
#define USR_9600_DUAL_STD 144
/* MODEM CONSTANTS */
#define MODEM_SPEED_FIXED 4
/* FUNCTION PROTOTYPES */
#define link_is_compressed(a) (((MODEM *)(a)->modem)->comp & 1)
#define link_is_mnp(a) (((MODEM *)(a)->modem)->ec & 1)
#define link_is_v32(a) (((MODEM *)(a)->modem)->mod & 1)
#define link_is_v42(a) (((MODEM *)(a)->modem)->ec & 2)
short FCALL_ modem_assign_(COMM_PORT *p, MODEM *m);
short FCALL_ modem_cmd(struct comm_port *p, char *cmd);
short FCALL_ modem_dial(struct comm_port *p, const char *number);
char * FCALL_ modem_get(struct comm_port *p, short count);
short FCALL_ modem_go_cmd(struct comm_port *p, short escchar);
short FCALL_ modem_hangup(struct comm_port *p);
short FCALL_ modem_init(struct comm_port *p, short type);
#define modem_is_fixedspeed(a) ((a)->flags & MODEM_SPEED_FIXED)
#define modem_is_init(a) ((a)->flags & MODEM_INIT_OK)
short FCALL_ modem_is_racalvadic(COMM_PORT *p);
short FCALL_ modem_is_telebit(struct comm_port *p);
short FCALL_ modem_parse_reply(char *s);
short FCALL_ modem_reset(struct comm_port *p);
char * FCALL_ modem_scmd(struct comm_port *p, char *query, WORD reply_len);
short FCALL_ modem_set(struct comm_port *p, char *cmd);
short FCALL_ modem_type(struct comm_port *p);
short FCALL_ modem_wait_dial_response(struct comm_port *p);
short FCALL_ racal_cmd(COMM_PORT *p, WORD opt, WORD val);
extern char *a_rc[][3];
#if defined(__cplusplus)
}
#endif
#endif