File: iapplication.h

package info (click to toggle)
misdn-user 0.0.0%2Bcvs20041018-4
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 876 kB
  • ctags: 2,455
  • sloc: ansic: 19,247; makefile: 225
file content (137 lines) | stat: -rw-r--r-- 3,400 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#ifndef IAPPLICATION_H
#define IAPPLICATION_H

#include "vitimer.h"
#ifdef GSM_COMPRESSION
#include <gsm.h>
#endif

#define AP_MODE_IDLE		0
#define	AP_MODE_INTERN_CALL	1
#define AP_MODE_AUDIO_CALL	2
#define AP_MODE_VOIP_OCALL	3
#define AP_MODE_VOIP_ICALL	4

#define AP_FLG_AUDIO_ACTIV	1
#define AP_FLG_VOIP_ALERTING	2
#define AP_FLG_VOIP_ACTIV	4

#define AP_FLG_VOIP_NEW_CONN	0x01000000
#define AP_FLG_VOIP_PEER_VALID	0x02000000
#define	AP_FLG_VOIP_SENT_BYE	0x04000000
#define AP_FLG_VOIP_PEER_BYE	0x08000000
#define AP_FLG_VOIP_PEER_SF	0x10000000

#define AP_FLG_AUDIO_USED	0x00000100
#define	AP_FLG_VOIP_ABORT	0x80000000

#define AP_PR_VOIP_ISDN		1
#define AP_PR_VOIP_NEW		2
#define AP_PR_VOIP_SPEAKFREE	3
#define AP_PR_VOIP_BYE		4

#define MAX_HOST_SIZE		64
#define MAX_NETBUFFER_SIZE	8040

#define SLOW_TIMEOUT_s		10
#define SLOW_TIMEOUT_us		0
#define NORMAL_TIMEOUT_s	0
#define NORMAL_TIMEOUT_us	(320*125)

#define SNDFLG_ULAW		0x00000001
#define SNDFLG_ALAW		0x00000002
#define SNDFLG_LINEAR16		0x00000004
#define SNDFLG_COMPR_GSM	0x00000100

typedef struct _iapplication	iapplication_t;
typedef struct _vapplication	vapplication_t;
typedef struct _vconnection	vconnection_t;

struct _iapplication {
	iapplication_t	*prev;
	iapplication_t	*next;
	manager_t	*mgr;
	vapplication_t	*vapp;
	void		*data1;
	void		*data2;
	vconnection_t	*con;
	void		*para;
	vi_timer_t	timer;
	pthread_t	tid;
	int		Flags;
	int		mode;
};

struct _vapplication {
	manager_t		*mgr_lst;
	char			hostname[MAX_HOST_SIZE];
	unsigned int		flags;
	struct timeval		tout;
	int			debug;
	int			port;
	int			dsock;
	int			csock;
	struct sockaddr_in	daddr;
	struct sockaddr_in	caddr;
	struct sockaddr_in	from;
	int			fromlen;
	iapplication_t		*iapp_lst;
	int			rlen;
	union {
		unsigned char		d[MAX_NETBUFFER_SIZE];
	}			buf;
};

struct _vconnection {
	int			sock;
	struct sockaddr_in	cpeer;
	struct sockaddr_in	dpeer;
	char			rmtname[256];
	char			con_hostname[32];
	unsigned int		own_ssrc;
	unsigned int		peer_ssrc;
	unsigned int		timestamp;
	unsigned short		seq;
	unsigned short		lastseq;
	unsigned char		oc;
	unsigned char		pc;
	msg_queue_t		aqueue;
	msg_t			*amsg;
	int			rlen;
	unsigned char		*rbuf;
	unsigned int		sndflags;
	int			pkt_size;
	int			slen;
#ifdef GSM_COMPRESSION
	gsm			r_gsm;
	gsm			s_gsm;
#endif
	unsigned char		sbuf[1024];
	unsigned char		dbuf[1152];
	unsigned char		cbuf[1024];
};

extern	pthread_t	run_voip(vapplication_t *v);
extern	void		*voip_sender(void *arg);

extern	void		clear_connection(iapplication_t *);
extern	void		free_application(iapplication_t *);
extern	unsigned long	getnew_ssrc(vapplication_t *);
extern	iapplication_t	*new_application(vapplication_t *);
extern	vconnection_t	*new_connection(iapplication_t *, struct in_addr *);
extern	int		SendCtrl(iapplication_t *);

extern	int		voip_application_handler(iapplication_t *, int,
				unsigned char *);
extern	int		setup_voip(iapplication_t *, bchannel_t *);
extern	int		close_voip(iapplication_t *, bchannel_t *);

extern	int		setup_voip_ocall(iapplication_t *, bchannel_t *);
extern	int		alert_voip(iapplication_t *, bchannel_t *);
extern	int		facility_voip(iapplication_t *, bchannel_t *);
extern	int		useruser_voip(iapplication_t *, bchannel_t *);
extern	int		connect_voip(iapplication_t *, bchannel_t *);
extern	int		disconnect_voip(iapplication_t *, bchannel_t *);
extern	int		release_voip(iapplication_t *, bchannel_t *);

#endif