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.3 2011/08/31 13:32:37 joerg Exp $
31 *
32 * $FreeBSD$
33 *
34 *      last edit-date: [Sat Jan  6 13:01:04 2001]
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#include <sys/poll.h>
58#endif
59
60/*---------------------------------------------------------------------------*
61 *	definitions in i4b_ioctl.h, do something for other systems
62 *---------------------------------------------------------------------------*/
63#if defined (__FreeBSD__) || defined(__NetBSD__) || \
64    defined (__OpenBSD__) || defined(__bsdi__)
65
66#include <netisdn/i4b_ioctl.h>
67
68#else
69
70#define FOREIGN 1	/* we are running on a "foreign" OS */
71
72#define I4B_TIME_FORMAT "%d.%m.%Y %H:%M:%S"
73#define VERSION 0
74#define REL	0
75#define STEP	0
76
77#endif
78
79/*---------------------------------------------------------------------------*
80 *	some general definitions
81 *---------------------------------------------------------------------------*/
82#define GOOD	0		/* general "good" or "ok" return*/
83#define ERROR	(-1)		/* general error return		*/
84#define WARNING (-2)		/* warning return		*/
85#define INVALID (-1)		/* an invalid integer		*/
86
87/*---------------------------------------------------------------------------*
88 *	state definitions
89 *---------------------------------------------------------------------------*/
90#define ST_INIT		0	/* initial data */
91#define ST_ICTRL	1	/* initial controller list */
92#define ST_IDEV		2	/* initial entry devicename list */
93#define ST_ANYEV	3	/* any event */
94#define ST_RIGHT	4	/* one record in a list of monitor rights */
95#define ST_CONNS	5	/* monitor connections */
96
97/*---------------------------------------------------------------------------*
98 *	curses fullscreen display definitions
99 *---------------------------------------------------------------------------*/
100/* window dimensions */
101#define UPPER_B		2		/* upper window start  */
102
103/* horizontal positions for upper window */
104#define H_CNTL		0		/* controller		*/
105#define H_TEI		2		/* TEI			*/
106#define H_CHAN		(H_TEI+4)	/* channel		*/
107#define H_TELN		(H_CHAN+2)	/* telephone number	*/
108#define H_IFN		(H_TELN+23)	/* interfacename	*/
109#define H_IO		(H_IFN+7)	/* incoming or outgoing */
110#define H_OUT		(H_IO+4)	/* # of bytes out	*/
111#define H_OUTBPS	(H_OUT+11)	/* bytes per second out	*/
112#define H_IN		(H_OUTBPS+5)	/* # of bytes in	*/
113#define H_INBPS		(H_IN+11)	/* bytes per second in	*/
114#define H_UNITS		(H_INBPS+6)	/* # of charging units	*/
115
116/* fullscreen mode menu window */
117#define WMENU_LEN 	35		/* width of menu window */
118#define WMENU_TITLE 	"Command"	/* title string */
119#define WMENU_POSLN	10		/* menu position, line */
120#define WMENU_POSCO	5		/* menu position, col */
121#define WMITEMS 	4		/* no of menu items */
122#define WMENU_HGT 	(WMITEMS + 4)	/* menu window height */
123
124#define WREFRESH	0
125#define WHANGUP		1
126#define WREREAD		2
127#define WQUIT		3
128
129#define WMTIMEOUT	5		/* timeout in seconds */
130
131/*---------------------------------------------------------------------------*
132 *	misc
133 *---------------------------------------------------------------------------*/
134#define CHPOS(uctlr, uchan) (((uctlr)*2) + (uchan))
135
136/*---------------------------------------------------------------------------*
137 *	remote state
138 *---------------------------------------------------------------------------*/
139
140#define MAX_CTRL 4
141
142typedef struct remstate {
143       int ch1state;
144       int ch2state;
145} remstate_t;
146
147/*---------------------------------------------------------------------------*
148 *	global variables
149 *---------------------------------------------------------------------------*/
150#ifdef MAIN
151
152remstate_t remstate[MAX_CTRL];
153
154int nctrl = 0;			/* # of controllers available */
155int curses_ready = 0;		/* curses initialized */
156int do_bell = 0;
157int nentries = 0;
158int fullscreen = 0;
159int debug_noscreen = 0;
160
161#ifndef WIN32
162WINDOW *upper_w;		/* curses upper window pointer */
163WINDOW *mid_w;			/* curses mid window pointer */
164WINDOW *lower_w;		/* curses lower window pointer */
165#endif
166
167char devbuf[256];
168
169char *sockpath = NULL;
170char *hostname = NULL;
171int portno;
172
173#else /* !MAIN */
174
175remstate_t remstate[MAX_CTRL];
176
177int nctrl;
178int curses_ready;
179int do_bell;
180int nentries;
181int fullscreen;
182int debug_noscreen;
183
184WINDOW *upper_w;
185WINDOW *mid_w;
186WINDOW *lower_w;
187
188char devbuf[256];
189
190char *sockpath;
191char *hostname;
192int portno;
193
194#endif
195
196__dead extern void do_exit ( int exitval );
197extern void do_menu ( void );
198extern void init_screen ( void );
199extern void display_charge ( int pos, int charge );
200extern void display_ccharge ( int pos, int units );
201extern void display_connect(int pos, int dir, char *name, char *remtel, char *dev);
202extern void display_acct ( int pos, int obyte, int obps, int ibyte, int ibps );
203extern void display_disconnect ( int pos );
204extern void display_updown ( int pos, int updown, char *device );
205extern void display_l12stat ( int controller, int layer, int state );
206extern void display_tei ( int controller, int tei );
207
208extern void reread(void);
209extern void hangup(int ctrl, int chan);
210
211
212