** **
\*****************************************************************************/
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <poll.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
#include "main.h"
-#define __u8 unsigned char
-#define __u16 unsigned short
-#define __u32 unsigned long
-#include "linux/isdnif.h"
+//#define __u8 unsigned char
+//#define __u16 unsigned short
+//#define __u32 unsigned long
/* notify endpoint about state change (if any) */
static int notify_state_change(int join_id, int epoint_id, int old_state, int new_state)
{
int notify_off = 0, notify_on = 0;
- struct message *message;
+ struct lcr_msg *message;
if (old_state == new_state)
return(old_state);
void JoinPBX::bridge(void)
{
struct join_relation *relation;
- struct message *message;
+ struct lcr_msg *message;
int numconnect = 0, relations = 0;
class Endpoint *epoint;
struct port_list *portlist;
relation->next->tx_state = notify_state_change(j_serial, relation->next->epoint_id, relation->next->tx_state, relation->rx_state);
} else
/* one member in a join, so we put her on hold */
- if ((relations==1 || numconnect==1) && !j_partyline_jingle)
+ if ((relations==1 || numconnect==1)/* && !j_partyline_jingle*/)
{
PDEBUG(DEBUG_JOIN, "join%d 1 member or only 1 connected, put on hold\n");
relation = j_relation;
int JoinPBX::release(struct join_relation *relation, int location, int cause)
{
struct join_relation *reltemp, **relationpointer;
- struct message *message;
+ struct lcr_msg *message;
class Join *join;
int destroy = 0;
struct join_relation *relation, *reltemp;
int num;
int new_state;
- struct message *message;
+ struct lcr_msg *message;
// int size, writesize, oldpointer;
char *number, *numbers;
message->param.connectinfo.ntype = INFO_NTYPE_UNKNOWN;
message_put(message);
j_updatebridge = 1; /* update bridge flag */
- if (j_relation->next && j_partyline_jingle)
+ if (j_partyline_jingle)
play_jingle(1);
break;
break;
case RELATION_TYPE_CALLING: /* by calling */
+ /* remove us, if we don't have a called releation yet */
+ if (!j_relation->next)
+ {
+ release(j_relation, LOCATION_PRIVATE_LOCAL, CAUSE_NORMAL);
+ return; // must return, because join IS destroyed
+ }
/* remove all relations that are in called */
release_again2:
reltemp = j_relation;
int JoinPBX::out_setup(unsigned long epoint_id, int message_type, union parameter *param, char *newnumber)
{
struct join_relation *relation;
- struct message *message;
+ struct lcr_msg *message;
class Endpoint *epoint;
PDEBUG(DEBUG_JOIN, "no endpoint found, so we will create an endpoint and send the setup message we have.\n");
epoint = new Endpoint(0, j_serial);
if (!epoint)
FATAL("No memory for Endpoint instance\n");
- if (!(epoint->ep_app = new DEFAULT_ENDPOINT_APP(epoint)))
+ if (!(epoint->ep_app = new DEFAULT_ENDPOINT_APP(epoint, 1))) // outgoing
FATAL("No memory for Endpoint Application instance\n");
relation->epoint_id = epoint->ep_serial;
/* send setup message to new endpoint */
void JoinPBX::play_jingle(int in)
{
struct join_relation *relation;
- struct message *message;
+ struct lcr_msg *message;
relation = j_relation;
+
+ if (!relation)
+ return;
+ if (!relation->next)
+ return;
+
while(relation)
{
message = message_create(j_serial, relation->epoint_id, JOIN_TO_EPOINT, MESSAGE_TONE);