Initial import from FreeBSD RELENG_4:
[dragonfly.git] / usr.sbin / i4b / isdnmonitor / monprivate.h
1 /*
2  * Copyright (c) 1999 Hellmuth Michaelis. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23  * SUCH DAMAGE.
24  *
25  *---------------------------------------------------------------------------
26  *
27  *      i4b remote monitor - private header
28  *      -----------------------------------
29  *
30  *      $Id: monprivate.h,v 1.10 1999/12/13 21:25:26 hm Exp $
31  *
32  * $FreeBSD: src/usr.sbin/i4b/isdnmonitor/monprivate.h,v 1.1.2.1 2001/08/01 17:45:06 obrien Exp $
33  *
34  *      last edit-date: [Mon Dec 13 21:52:25 1999]
35  *
36  *---------------------------------------------------------------------------*/
37
38 #include <stdio.h>
39 #include <stdlib.h>
40 #include <string.h>
41 #include <ctype.h>
42 #include <errno.h>
43 #include <signal.h>
44
45 #ifndef WIN32
46 #include <unistd.h>
47 #include <syslog.h>
48 #include <regex.h>
49 #include <curses.h>
50 #include <fcntl.h>
51
52 #include <sys/param.h>
53 #include <sys/stat.h>
54 #include <sys/time.h>
55 #include <sys/types.h>
56 #include <sys/ioctl.h>
57 #endif
58
59 /*---------------------------------------------------------------------------*
60  *      definitions in i4b_ioctl.h, do something for other systems
61  *---------------------------------------------------------------------------*/
62 #if defined (__FreeBSD__) || defined(__NetBSD__) || \
63     defined (__OpenBSD__) || defined(__bsdi__)
64
65 #include <machine/i4b_ioctl.h>
66
67 #else
68
69 #define FOREIGN 1       /* we are running on a "foreign" OS */
70
71 #define I4B_TIME_FORMAT "%d.%m.%Y %H:%M:%S"
72 #define VERSION 0
73 #define REL     0
74 #define STEP    0
75
76 #endif
77
78 /*---------------------------------------------------------------------------*
79  *      some general definitions
80  *---------------------------------------------------------------------------*/
81 #define GOOD    0               /* general "good" or "ok" return*/
82 #define ERROR   (-1)            /* general error return         */
83 #define WARNING (-2)            /* warning return               */
84 #define INVALID (-1)            /* an invalid integer           */
85
86 /*---------------------------------------------------------------------------*
87  *      state definitions
88  *---------------------------------------------------------------------------*/
89 #define ST_INIT         0       /* initial data */
90 #define ST_ICTRL        1       /* initial controller list */
91 #define ST_IDEV         2       /* initial entry devicename list */
92 #define ST_ANYEV        3       /* any event */
93 #define ST_RIGHT        4       /* one record in a list of monitor rights */
94 #define ST_CONNS        5       /* monitor connections */
95
96 /*---------------------------------------------------------------------------*
97  *      curses fullscreen display definitions
98  *---------------------------------------------------------------------------*/
99 /* window dimensions */
100 #define UPPER_B         2               /* upper window start  */
101
102 /* horizontal positions for upper window */
103 #define H_CNTL          0               /* controller           */
104 #define H_TEI           2               /* TEI                  */
105 #define H_CHAN          (H_TEI+4)       /* channel              */
106 #define H_TELN          (H_CHAN+2)      /* telephone number     */
107 #define H_IFN           (H_TELN+23)     /* interfacename        */
108 #define H_IO            (H_IFN+7)       /* incoming or outgoing */
109 #define H_OUT           (H_IO+4)        /* # of bytes out       */
110 #define H_OUTBPS        (H_OUT+11)      /* bytes per second out */
111 #define H_IN            (H_OUTBPS+5)    /* # of bytes in        */
112 #define H_INBPS         (H_IN+11)       /* bytes per second in  */
113 #define H_UNITS         (H_INBPS+6)     /* # of charging units  */
114
115 /* fullscreen mode menu window */
116 #define WMENU_LEN       35              /* width of menu window */
117 #define WMENU_TITLE     "Command"       /* title string */
118 #define WMENU_POSLN     10              /* menu position, line */
119 #define WMENU_POSCO     5               /* menu position, col */
120 #define WMITEMS         4               /* no of menu items */
121 #define WMENU_HGT       (WMITEMS + 4)   /* menu window height */
122
123 #define WREFRESH        0
124 #define WHANGUP         1
125 #define WREREAD         2
126 #define WQUIT           3
127
128 #define WMTIMEOUT       5               /* timeout in seconds */
129
130 /*---------------------------------------------------------------------------*
131  *      misc
132  *---------------------------------------------------------------------------*/
133 #define CHPOS(uctlr, uchan) (((uctlr)*2) + (uchan))
134
135 /*---------------------------------------------------------------------------*
136  *      remote state
137  *---------------------------------------------------------------------------*/
138
139 #define MAX_CTRL 4
140
141 typedef struct remstate {
142        int ch1state;
143        int ch2state;
144 } remstate_t;
145                         
146 /*---------------------------------------------------------------------------*
147  *      global variables
148  *---------------------------------------------------------------------------*/
149 #ifdef MAIN
150
151 remstate_t remstate[MAX_CTRL];
152
153 int nctrl = 0;                  /* # of controllers available */
154 int curses_ready = 0;           /* curses initialized */
155 int do_bell = 0;
156 int nentries = 0;
157 int fullscreen = 0;
158 int debug_noscreen = 0;
159
160 #ifndef WIN32
161 WINDOW *upper_w;                /* curses upper window pointer */
162 WINDOW *mid_w;                  /* curses mid window pointer */
163 WINDOW *lower_w;                /* curses lower window pointer */
164 #endif
165
166 char devbuf[256];
167
168 char *sockpath = NULL;
169 char *hostname = NULL;
170 int portno;
171
172 #else /* !MAIN */
173
174 remstate_t remstate[MAX_CTRL];
175
176 int nctrl;
177 int curses_ready;
178 int do_bell;
179 int nentries;
180 int fullscreen;
181 int debug_noscreen;
182
183 WINDOW *upper_w;
184 WINDOW *mid_w;
185 WINDOW *lower_w;
186
187 char devbuf[256];
188
189 char *sockpath;
190 char *hostname;
191 int portno;
192
193 #endif
194
195 extern void do_exit ( int exitval );
196 extern void do_menu ( void );
197 extern void init_screen ( void );
198 extern void display_charge ( int pos, int charge );
199 extern void display_ccharge ( int pos, int units );
200 extern void display_connect(int pos, int dir, char *name, char *remtel, char *dev);
201 extern void display_acct ( int pos, int obyte, int obps, int ibyte, int ibps );
202 extern void display_disconnect ( int pos );
203 extern void display_updown ( int pos, int updown, char *device );
204 extern void display_l12stat ( int controller, int layer, int state );
205 extern void display_tei ( int controller, int tei );
206
207 extern void reread(void);
208 extern void hangup(int ctrl, int chan);
209
210