Fixed NULL-pointer bug when unloading of GSM interfaces
[lcr.git] / message.h
index 63abc65..c2076af 100644 (file)
--- a/message.h
+++ b/message.h
@@ -9,8 +9,6 @@
 **                                                                           **
 \*****************************************************************************/ 
 
-#define ISDN_TRANSMIT  256 // samples
-
 enum { /* interface types */
        INFO_ITYPE_ISDN, /* call from external */
        INFO_ITYPE_ISDN_EXTENSION, /* call from internal extension */
@@ -201,6 +199,7 @@ struct disconnect_info {
        int cause;                      /* reason for disconnect */
        int location;                   /* disconnect location */
        char display[84];               /* optional display information */
+       int force;                      /* special flag to release imediately */
 };
 
 /* call-info structure REDIR */
@@ -238,6 +237,12 @@ struct notify_info {
        int local;                      /* if set, endpoints gets information about audio channel (open/close) */
 };
 
+/* call-info structure PROGRESS */
+struct progress_info {
+       int progress;                   /* progress indicator */
+       int location;                   /* progress location */
+};
+
 /* call-info structure FACILITY */
 struct facility_info {
        char data[256];                 /* data info about facility */
@@ -262,6 +267,7 @@ struct message_setup {
        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 */
        char context[128];                      /* asterisk context */
 };
 
@@ -271,10 +277,11 @@ struct park_info {
        int len;
 };
 
+#define ISDN_TRANSMIT 256
 /* DATA */
 struct param_data {
-       unsigned char data[ISDN_TRANSMIT]; /* audio/hdlc data */
-       int len; /* audio/hdlc data */
+       unsigned char data[ISDN_TRANSMIT]; /* audio data */
+       int len; /* audio data */
 };
 
 struct param_play {
@@ -317,6 +324,7 @@ struct param_hello {
 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];
@@ -324,6 +332,11 @@ struct param_bchannel {
        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 */
@@ -333,6 +346,7 @@ union parameter {
        struct connect_info connectinfo; /* CONNECT INFO */
        struct disconnect_info disconnectinfo; /* DISCONNECT INFO */
        struct notify_info notifyinfo; /* some notifications */
+       struct progress_info progressinfo; /* some progress */
        struct facility_info facilityinfo; /* some notifications */
        struct park_info parkinfo; /* MESSAGE_SUSPEND, MESSAGE_RESUME */
        int state; /* MESSAGE_TIMEOUT */
@@ -347,7 +361,7 @@ union parameter {
        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 */
 };
 
 enum { /* message flow */
@@ -383,7 +397,8 @@ enum { /* messages between entities */
        MESSAGE_DISCONNECT,     /* disconnect with cause */
        MESSAGE_RELEASE,        /* release with cause */
        MESSAGE_TIMEOUT,        /* protocol state has timed out (port->epoint) */
-       MESSAGE_NOTIFY,         /* used to send progress and notify infos */
+       MESSAGE_NOTIFY,         /* used to send notify info */
+       MESSAGE_PROGRESS,       /* used to send progress info */
        MESSAGE_FACILITY,       /* used to facility infos, like aocd */
        MESSAGE_SUSPEND,        /* suspend port */
        MESSAGE_RESUME,         /* resume port */
@@ -419,6 +434,7 @@ enum { /* messages between entities */
        "MESSAGE_RELEASE", \
        "MESSAGE_TIMEOUT", \
        "MESSAGE_NOTIFY", \
+       "MESSAGE_PROGRESS", \
        "MESSAGE_FACILITY", \
        "MESSAGE_SUSPEND", \
        "MESSAGE_RESUME", \
@@ -444,6 +460,7 @@ void message_put(struct lcr_msg *message);
 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);
-
+void init_message(void);
+void cleanup_message(void);