enum { /* isdnsignal */
mISDNSIGNAL_VOLUME, /* change volume */
mISDNSIGNAL_CONF, /* joint/split conference */
- mISDNSIGNAL_JOINDATA, /* data required by join instance */
mISDNSIGNAL_ECHO, /* enable/disable echoe */
mISDNSIGNAL_DELAY, /* use delay or adaptive jitter */
};
B_MODE_HDLC, /* hdlc data mode */
};
+enum {
+ MEDIA_TYPE_ALAW = 1,
+ MEDIA_TYPE_ULAW,
+ MEDIA_TYPE_GSM,
+ MEDIA_TYPE_GSM_EFR,
+ MEDIA_TYPE_AMR,
+ MEDIA_TYPE_GSM_HR,
+};
+
+/* rtp-info structure */
+struct rtp_info {
+ int payloads; /* number of payloads offered */
+ unsigned char payload_types[32];/* rtp payload types */
+ int media_types[32]; /* media type of given payload */
+ unsigned int ip; /* peer's IP */
+ unsigned short port; /* peer's port */
+};
+
/* call-info structure CALLER */
struct caller_info {
char id[32]; /* id of caller (user number) */
int screen; /* who provided the number */
char display[84]; /* display information */
char imsi[16]; /* IMSI for gsm terminated calls */
+ struct rtp_info rtpinfo; /* info about RTP peer */
};
/* call-info structure DISCONNECT */
struct progress_info {
int progress; /* progress indicator */
int location; /* progress location */
+ struct rtp_info rtpinfo; /* info about RTP peer */
};
/* call-info structure FACILITY */
struct redir_info redirinfo; /* info on redirection (to the calling user) */
struct capa_info capainfo; /* info on l2,l3 capability */
struct useruser_info useruser; /* user-user */
-// struct progress_info progress; /* info on call progress */
+ struct progress_info progress; /* info on call progress */
+ struct rtp_info rtpinfo; /* info about RTP peer */
char context[128]; /* asterisk context */
};
int len;
};
-#define ISDN_TRANSMIT 256
-/* DATA */
-struct param_data {
- unsigned char data[ISDN_TRANSMIT]; /* audio data */
- int len; /* audio data */
-};
-
struct param_play {
char file[512]; /* file name */
int offset; /* offset to start file at (in seconds) */
int tx_gain;
int rx_gain;
int conf;
- int joindata;
int tone;
int echo;
int delay;
struct param_bchannel {
int type; /* BCHANNEL_* */
unsigned int handle; /* bchannel stack/portid */
+ int isloopback; /* in this case the application behaves like an interface, dsp should not be used */
int tx_gain, rx_gain;
char pipeline[256];
unsigned char crypt[128];
int crypt_type; /* 1 = blowfish */
};
+struct param_newref {
+ int direction; /* who requests a refe? */
+ int mode; /* 0 = direct-mode, 1 = PBX mode */
+};
+
/* structure of message parameter */
union parameter {
struct param_tone tone; /* MESSAGE_TONE */
int state; /* MESSAGE_TIMEOUT */
int knock; /* MESSAGE_KNOCK 0=off !0=on */
int audiopath; /* MESSAGE_audiopath see RELATION_CHANNEL_* (join.h) */
- struct param_data data; /* MESSAGE_DATA */
struct param_play play; /* MESSAGE_VBOX_PLAY */
int speed; /* MESSAGE_VBOX_PLAY_SPEED */
struct param_counter counter; /* MESSAGE_TONE_COUNTER */
struct param_crypt crypt; /* MESSAGE_CRYPT */
struct param_hello hello; /* MESSAGE_HELLO */
struct param_bchannel bchannel; /* MESSAGE_BCHANNEL */
- int direction; /* MESSAGE_NEWREF */
+ struct param_newref newref; /* MESSAGE_NEWREF */
+ unsigned int bridge_id; /* MESSAGE_BRIDGE */
};
enum { /* message flow */
MESSAGE_SUSPEND, /* suspend port */
MESSAGE_RESUME, /* resume port */
MESSAGE_AUDIOPATH, /* set status of audio path to endpoint (to call, audio is also set) */
-// MESSAGE_REMOTE_AUDIO, /* tell remote to set audio status */
MESSAGE_PATTERN, /* pattern information tones available */
MESSAGE_NOPATTERN, /* pattern information tones unavailable */
MESSAGE_CRYPT, /* encryption message */
- MESSAGE_DATA, /* audio/hdlc data */
MESSAGE_VBOX_PLAY, /* play recorded file */
MESSAGE_VBOX_PLAY_SPEED,/* change speed of file */
MESSAGE_VBOX_TONE, /* set answering VBOX tone */
MESSAGE_BCHANNEL, /* request/assign/remove bchannel */
MESSAGE_HELLO, /* hello message for remote application */
MESSAGE_NEWREF, /* special message to create and inform ref */
+ MESSAGE_BRIDGE, /* control port bridge */
};
#define MESSAGES static const char *messages_txt[] = { \
"MESSAGE_RELEASE", \
"MESSAGE_TIMEOUT", \
"MESSAGE_NOTIFY", \
+ "MESSAGE_PROGRESS", \
"MESSAGE_FACILITY", \
"MESSAGE_SUSPEND", \
"MESSAGE_RESUME", \
"MESSAGE_AUDIOPATH", \
-/* "MESSAGE_REMOTE_AUDIO",*/ \
"MESSAGE_PATTERN", \
"MESSAGE_NOPATTERN", \
"MESSAGE_CRYPT", \
- "MESSAGE_DATA", \
"MESSAGE_VBOX_PLAY", \
"MESSAGE_VBOX_PLAY_SPEED", \
"MESSAGE_VBOX_TONE", \
"MESSAGE_BCHANNEL", \
"MESSAGE_HELLO", \
"MESSAGE_NEWREF", \
+ "MESSAGE_BRIDGE", \
};
struct lcr_msg *message_create(int id_from, int id_to, int flow, int type);
-void message_put(struct lcr_msg *message);
+#define message_put(m) _message_put(m, __FILE__, __LINE__)
+void _message_put(struct lcr_msg *message, const char *file, int line);
struct lcr_msg *message_forward(int id_from, int id_to, int flow, union parameter *param);
struct lcr_msg *message_get(void);
void message_free(struct lcr_msg *message);