/*
 * configsym.h	- Offsets into the mpars structure
 *		  When the mpars structure is changed,
 *		  change these define's too.
 *
 *		This file is part of the minicom communications package,
 *		Copyright 1991-1995 Miquel van Smoorenburg.
 *
 *		This program is free software; you can redistribute it and/or
 *		modify it under the terms of the GNU General Public License
 *		as published by the Free Software Foundation; either version
 *		2 of the License, or (at your option) any later version.
 *
 *  You should have received a copy of the GNU General Public License along
 *  with this program; if not, write to the Free Software Foundation, Inc.,
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 *	When adding parameter macros here, remember to also update
 *	their default values in the pars structure mpars in rwconf.c.
 *
 * fmg 1/11/94 colors
 * fmg 2/15/94 macros
 * jl  04.09.97 conversion file
 * jl  22.02.98 setting for filename selection window
 * jseymour@jimsun.LinxNet.com (Jim Seymour) 03/26/98 - Added define for
 *    length of "struct pars" "value" member so it could be referenced
 *    elsewhere.
 * jl  05.04.98 added parameter P_MUL
 * jl  06.07.98 added parameter P_CONVCAP
 * jl  28.11.98 added parameter P_SHOWSPD
 * jl  05.04.99 logging options P_LOGFNAME, P_LOGCONN and P_LOGXFER
 * er  18-Apr.99 added parameter P_MULTILINE
 * jl  10.02.2000 parameter P_STOPB
 */

#define PARS_VAL_LEN 256

struct pars {
  /* value is first, so that (char *)mpars[0] == mpars[0].value */
  /* Try doing this in PASCAL !! :-) */
  char value[PARS_VAL_LEN];
  int flags;
  const char *desc;
};

/* fmg 2/20/94 macros - Length of Macros */

#ifndef MAC_LEN
#define MAC_LEN 257
#endif

struct macs {
  char value[MAC_LEN];
  int flags;
  const char *desc;
};
extern struct macs mmacs[];

enum config_type {
  CONFIG_GLOBAL,
  CONFIG_PERSONAL,
};

#define ADM_CHANGE	1
#define USR_CHANGE	2
#define CHANGED		(ADM_CHANGE | USR_CHANGE)

#define PROTO_BASE	0
#define MAXPROTO	12
#define PROG_BASE	12

#define P_PNN(n)	(mpars[PROTO_BASE + n].value[0])
#define P_PUD(n)	(mpars[PROTO_BASE + n].value[1])
#define P_PFULL(n)	(mpars[PROTO_BASE + n].value[2])
#define P_PIORED(n)	(mpars[PROTO_BASE + n].value[3])
#define P_MUL(n)	(mpars[PROTO_BASE + n].value[4])
#define P_PNAME(n)	(&mpars[PROTO_BASE + n].value[5])
#define P_PPROG(n)	mpars[PROG_BASE + n].value

#define P_PORT		mpars[24].value
#define P_CALLIN	mpars[25].value
#define P_CALLOUT	mpars[26].value
#define P_LOCK		mpars[27].value
#define P_BAUDRATE	mpars[28].value
#define P_BITS		mpars[29].value
#define P_PARITY	mpars[30].value
#define P_STOPB		mpars[31].value
#define P_KERMIT	mpars[32].value
#define P_KERMALLOW	mpars[33].value
#define P_KERMREAL	mpars[34].value
#define P_COLUSAGE	mpars[35].value
#define P_SCRIPTPROG	mpars[36].value
/* The next entries must be kept in order */
#define P_MINIT		mpars[37].value
#define P_MRESET	mpars[38].value
#define P_MDIALPRE	mpars[39].value
#define P_MDIALSUF	mpars[40].value
#define P_MDIALPRE2	mpars[41].value
#define P_MDIALSUF2	mpars[42].value
#define P_MDIALPRE3	mpars[43].value
#define P_MDIALSUF3	mpars[44].value
#define P_MCONNECT	mpars[45].value
#define P_MNOCON1	mpars[46].value
#define P_MNOCON2	mpars[47].value
#define P_MNOCON3	mpars[48].value
#define P_MNOCON4	mpars[49].value
#define P_MHANGUP	mpars[50].value
#define P_MDIALCAN	mpars[51].value
#define P_MDIALTIME	mpars[52].value
#define P_MRDELAY	mpars[53].value
#define P_MRETRIES	mpars[54].value
/* Yup, until here. */
#define P_MDROPDTR	mpars[55].value
#define P_MAUTOBAUD	mpars[56].value
#define P_SHOWSPD	mpars[57].value
#define P_UPDIR		mpars[58].value
#define P_DOWNDIR	mpars[59].value
#define P_SCRIPTDIR	mpars[60].value
#define P_ESCAPE	mpars[61].value
#define P_BACKSPACE	mpars[62].value
#define P_STATLINE	mpars[63].value
#define P_HASDCD	mpars[64].value
#define P_HASRTS	mpars[65].value
#define P_HASXON	mpars[66].value
#define P_PAUTO		mpars[67].value

/* fmg colors - these are used in signaling when values have changed
                so that the preferences saving function knows what to save */

#define P_MFG           mpars[68].value
#define P_MBG           mpars[69].value
#define P_TFG           mpars[70].value
#define P_TBG           mpars[71].value
#define P_SFG           mpars[72].value
#define P_SBG           mpars[73].value

/* fmg  macros file name & entry used to signal when macros need to be saved */

#define P_MACROS        mpars[74].value  /* macros save filename */
#define P_MACCHG        mpars[75].value  /* macros changed flag */
#define P_MACENAB	mpars[76].value	 /* macros enabled flag */

#define P_SOUND		mpars[77].value  /* Unused */
#define P_HISTSIZE      mpars[78].value  /* History buffer size */

#define P_CONVF		mpars[79].value  /* Char.conversion table */
#define P_CONVCAP	mpars[80].value  /* Use conversion on capture file */

#define P_FSELW		mpars[81].value  /* Filename selection window */
#define P_ASKDNDIR	mpars[82].value  /* Ask dir. for downloads or not */

/* jl 4.1999 logfile options */
#define P_LOGFNAME	mpars[83].value  /* Filename for the logfile */
#define P_LOGCONN	mpars[84].value  /* Log connects and hangups */
#define P_LOGXFER	mpars[85].value  /* Log file transfers */

#define P_MULTILINE	mpars[86].value  /* Multi-node untag  er 18-Apr-99 */

/* Terminal behaviour */
#define P_LOCALECHO	mpars[87].value
#define P_ADDLINEFEED	mpars[88].value
#define P_LINEWRAP      mpars[89].value  /* Line wrap */
#define P_DISPLAYHEX    mpars[90].value  /* Do output as hex */
#define P_ADDCARRIAGERETURN mpars[91].value

#define P_ANSWERBACK    mpars[92].value  /* User defined answerback string */

#define P_RS485_EN              mpars[93].value  /* RS485 Enable */
#define P_RS485_RTS_ON_SEND     mpars[94].value  /* RS485 Rts on send */
#define P_RS485_RTS_AFTER_SEND  mpars[95].value  /* RS485 Rts after send */
#define P_RS485_RX_DURING_TX    mpars[96].value  /* RS485 Rx during tx */
#define P_RS485_TERMINATE_BUS   mpars[97].value  /* RS485 Terminate bus */
#define P_RS485_DEL_RTS_BEF_SND mpars[98].value  /* RS485 Delay rts before send */
#define P_RS485_DEL_RTS_AFT_SND mpars[99].value  /* RS485 Delay rts after send */

#define P_LINE_TIMESTAMP        mpars[100].value /* line_timestamp */

#define P_MSG_CH_DELAY          mpars[101].value /* msg_ch_delay */
#define P_MSG_NL_DELAY          mpars[102].value /* msg_nl_delay */

#define MPARS_MAX 103

extern struct pars mpars[MPARS_MAX + 1]; // + 1 is for end-marker

/* fmg - macros struct */

#define P_MAC1          mmacs[0].value
#define P_MAC2          mmacs[1].value
#define P_MAC3          mmacs[2].value
#define P_MAC4          mmacs[3].value
#define P_MAC5          mmacs[4].value
#define P_MAC6          mmacs[5].value
#define P_MAC7          mmacs[6].value
#define P_MAC8          mmacs[7].value
#define P_MAC9          mmacs[8].value
#define P_MAC10         mmacs[9].value
#define P_MAC11         mmacs[10].value
#define P_MAC12         mmacs[11].value

