/*
 * $RCSfile: pt.h,v $
 *
 * x-kernel v3.3
 *
 * Copyright (c) 1994,1996  Arizona Board of Regents
 */

#ifndef pt_h
#define pt_h

#include <stdio.h>

#define INIT_COMP(min,max,avg)  min=1000000,max=0,avg=0
#define DO_COMP(t2,t1,min,max,avg)	\
  { int d;				\
    d = t2 - t1;			\
    if (d < min) min = d;		\
    if (d > max) max = d;		\
    avg += d;				\
  }

#define ADD_ENTRY(a,i,t,v)		\
  if (PlotFlag  &&  (v) != a[i-1][1]) {		\
    a[i][0] = t;			\
    a[i][1] = a[i-1][1];		\
    i++;				\
    a[i][0] = t;			\
    a[i++][1] = (v);			\
  }

#define ADD_ENTRY_ALWAYS(a,i,t,v)	\
  if (PlotFlag ) {			\
    a[i][0] = t;			\
    a[i][1] = a[i-1][1];		\
    i++;				\
    a[i][0] = t;			\
    a[i++][1] = (v);			\
  }

#define P_SMALL_FCIRCLE		0
#define P_UCIRCLE		1
#define P_USQUARE		2
#define P_UDIAMOND		3
#define P_FCIRCLE		4
#define P_FSQUARE		5
#define P_FDIAMOND		6
#define P_VBAR			7
#define P_VBAR_WLINE		8
#define P_VBAR_WCIRCLE		9
#define P_VBAR_WDOT		10
#define P_LVBAR_WCIRCLE		11
#define P_NLBAR_WDOT		12
#define P_NLBAR_WCIRCLE		13

#define E_DROP		0x1
#define E_COLL		0x2
#define E_SEND		0x4
#define E_SENT		0x8
#define E_BUSY		0x10
#define E_NOTBUSY	0x20
#define E_BACKOFF	0x40
#define E_ERROR		0x80

/* -- protocol specific */
#define E_FTP		0x1000000
#define E_TELNET	0x2000000
#define E_NNTP		0x4000000
#define E_SMTP		0x8000000

typedef struct {
  int		seq;
  int		len;
  int		ack;
  int		flags;
  int		time;
} RcvTraceType;

typedef struct {
  int		time;
  int		seq;
  int		time_rcvd_ack;
  int		len;
  int		flags;
} SndTraceType;

typedef struct plotStruct {
  char		id[100];
  int		main;
  int		(*array)[2];
  int		zFlag;
  int		*zarray;
  int		arrayN;
  char		ytitle[200];
  char		gtitle[200];
  char		plotType[200];
  int		yticRound;
  int		yticSizeInit;
  int		yticSizeInc;
  int		yticMaxNum;
  float		minF, maxF, minMaxF;
  char		*(*yticFun)();
  struct plotStruct *other;
} PlotStruct;

typedef struct {
  int		event;
  int		symbol;
  float		minF, maxF, minMaxF;
} EventStruct;

extern PlotStruct	Plots[], SpecialPlots[];
extern EventStruct	Events[];
extern int		PlotsN, SpecialPlotsN, EventsN;

#define ARRAY_SIZE 100000

extern int  EventA[ARRAY_SIZE][2], EventN, EventFlag;
extern int  newQueue[ARRAY_SIZE][2], QueueN;
extern int  Lost[ARRAY_SIZE], LostN;
extern int  InPort0[ARRAY_SIZE][2], InPort0N;
extern int  InPort1[ARRAY_SIZE][2], InPort1N;
extern int  Busy[ARRAY_SIZE][2], BusyN;
extern char HeadStr[20][200];
extern int  HeadStrN;

extern int  Xbeg, Xend, Xtime, Xtics;
extern int  PutHeaderFlag, PutShowPageFlag;
extern int  PageFlag, Auto1Flag, Auto2Flag;
extern int  BigFlag;
extern float Axpos, Axlen, Aylen;
extern char *FileName, *Note, *OpenType;
extern char *PlotTypes[10];
extern int  PlotTypesN;
extern char SelectedQueue[128];


#endif
