Metropoli BBS
VIEWER: modem.h MODE: TEXT (ASCII)
/*
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
[ RETURN TO DIRECTORY ]