/* 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 #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