X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=message.h;h=1abab34365367219e950fea5adb51cb12c5dceb4;hp=1c2df57cad510b421996ce59c752f34ea7429c0a;hb=14f76f1e81f0a4e7a63e83136d1ac958bf85c8a5;hpb=996f984d61d412e9371cb503963de6a1f48e31d4 diff --git a/message.h b/message.h index 1c2df57..1abab34 100644 --- a/message.h +++ b/message.h @@ -9,6 +9,8 @@ ** ** \*****************************************************************************/ +#define ISDN_TRANSMIT 256 // samples + enum { /* interface types */ INFO_ITYPE_ISDN, INFO_ITYPE_ISDN_EXTENSION, /* call from internal extension */ @@ -118,12 +120,40 @@ enum { /* diversion types */ #define INFO_HLC_AUDIOVISUAL 0xe0 enum { /* isdnsignal */ - mISDNSIGNAL_VOLUME, - mISDNSIGNAL_CONF, - mISDNSIGNAL_CALLDATA, /* data required by call instance */ - mISDNSIGNAL_ECHO, + 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 */ +}; + +enum { /* bchannel assignment */ + BCHANNEL_REQUEST, /* application requests bchannel */ + BCHANNEL_ASSIGN, /* bchannel assigned by LCR */ + BCHANNEL_ASSIGN_ACK, /* application acknowledges */ + BCHANNEL_REMOVE, /* bchannel removed by LCR */ + BCHANNEL_REMOVE_ACK, /* application acknowledges */ +}; +enum { + B_STATE_IDLE, /* not open */ + B_STATE_ACTIVATING, /* DL_ESTABLISH sent */ + B_STATE_ACTIVE, /* channel active */ + B_STATE_DEACTIVATING, /* DL_RELEASE sent */ + B_STATE_EXPORTING, /* BCHANNEL_ASSIGN sent */ + B_STATE_REMOTE, /* bchannel assigned to remote application */ + B_STATE_IMPORTING, /* BCHANNEL_REMOVE sent */ +}; +enum { + B_EVENT_USE, /* activate/export bchannel */ + B_EVENT_EXPORTREQUEST, /* remote app requests bchannel */ + B_EVENT_ACTIVATED, /* DL_ESTABLISH received */ + B_EVENT_DROP, /* deactivate/re-import bchannel */ + B_EVENT_DEACTIVATED, /* DL_RELEASE received */ + B_EVENT_EXPORTED, /* BCHANNEL_ASSIGN received */ + B_EVENT_IMPORTED, /* BCHANNEL_REMOVE received */ }; + /* call-info structure CALLER */ struct caller_info { char id[32]; /* id of caller (user number) */ @@ -140,7 +170,7 @@ struct caller_info { /* call-info structure DIALING */ struct dialing_info { - char number[256]; /* number dialing (so far) */ + char id[256]; /* number dialing (so far) */ char interfaces[128]; /* interfaces for extenal calls */ int itype; /* type of interface */ int ntype; /* type of number */ @@ -150,11 +180,10 @@ struct dialing_info { /* call-info structure CONNECT */ struct connect_info { char id[32]; /* id of caller (user number) */ - char voip[64]; /* URI of voip (or gateway) */ char extension[32]; /* internal id */ char name[16]; int isdn_port; /* internal/external port (if call is isdn) */ - char interfaces[128]; /* interfaces for extenal calls */ + char interface[128]; /* interface for extenal calls */ int itype; /* type of interface */ int ntype; /* type of number */ int present; /* presentation */ @@ -172,8 +201,7 @@ struct disconnect_info { /* call-info structure REDIR */ struct redir_info { char id[32]; /* id of caller (user number) */ - char voip[64]; /* host of voip (or gateway) */ - char intern[32]; /* internal id */ + char extension[32]; /* internal id */ int isdn_port; /* internal/external port (if call is isdn) */ int itype; /* type of interface */ int ntype; /* type of number */ @@ -195,8 +223,7 @@ struct capa_info { struct notify_info { int notify; /* notifications (see INFO_NOTIFY_*) */ char id[32]; /* redirection id (user number) */ - char voip[64]; /* host of voip (or gateway) */ - char intern[32]; /* internal id */ + char extension[32]; /* internal id */ int isdn_port; /* internal/external port (if call is isdn) */ int itype; /* type of interface */ int ntype; /* type of number */ @@ -224,6 +251,7 @@ struct message_setup { int port_type; /* type of port (only required if message is port -> epoint) */ int dtmf; /* used to enabled dtmf dialing at setup state */ int partyline; /* if set, call will be a conference room */ + int partyline_jingle; /* if set, the jingle will be played on conference join */ struct caller_info callerinfo; /* information about the caller */ struct dialing_info dialinginfo; /* information about dialing */ struct redir_info redirinfo; /* info on redirection (to the calling user) */ @@ -239,10 +267,8 @@ struct park_info { /* DATA */ struct param_data { - unsigned char data[512]; /* audio/hdlc data */ + unsigned char data[ISDN_TRANSMIT]; /* audio/hdlc data */ int len; /* audio/hdlc data */ -// unsigned long port_id; /* to identify the source of this data */ -// int port_type; /* type of the source's port */ }; struct param_play { @@ -262,12 +288,13 @@ struct param_counter { struct param_mISDNsignal { int message; - int rxvol; - int txvol; + int tx_gain; + int rx_gain; int conf; - int calldata; + int joindata; int tone; int echo; + int delay; }; /* encryption control structure CRYPT */ @@ -277,6 +304,20 @@ struct param_crypt { unsigned char data[512+32]; /* a block of 512 byte + some overhead */ }; +struct param_hello { + char application[32]; /* name of remote application */ +}; + +struct param_bchannel { + int type; /* BCHANNEL_* */ + unsigned long handle; /* bchannel stack/portid */ + int tx_gain, rx_gain; + char pipeline[256]; + unsigned char crypt[128]; + int crypt_len; + int crypt_type; /* 1 = blowfish */ +}; + /* structure of message parameter */ union parameter { struct param_tone tone; /* MESSAGE_TONE */ @@ -290,7 +331,7 @@ union parameter { struct park_info parkinfo; /* MESSAGE_SUSPEND, MESSAGE_RESUME */ int state; /* MESSAGE_TIMEOUT */ int knock; /* MESSAGE_KNOCK 0=off !0=on */ - int channel; /* MESSAGE_CHANNEL see RELATION_CHANNEL_* (call.h) */ + 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 */ @@ -298,12 +339,15 @@ union parameter { struct param_mISDNsignal mISDNsignal; /* MESSAGE_mISDNSIGNAL */ struct extension ext; /* tell port about extension information */ struct param_crypt crypt; /* MESSAGE_CRYPT */ + struct param_hello hello; /* MESSAGE_HELLO */ + struct param_bchannel bchannel; /* MESSAGE_BCHANNEL */ + int direction; /* MESSAGE_NEWREF */ }; enum { /* message flow */ PORT_TO_EPOINT, - EPOINT_TO_CALL, - CALL_TO_EPOINT, + EPOINT_TO_JOIN, + JOIN_TO_EPOINT, EPOINT_TO_PORT, }; @@ -314,6 +358,7 @@ struct message { int flow; /* from where to where */ unsigned long id_from; /* in case of flow==PORT_TO_EPOINT: id_from is the port's serial, id_to is the epoint's serial */ unsigned long id_to; + int keep; union parameter param; }; @@ -322,7 +367,6 @@ enum { /* messages between entities */ MESSAGE_TONE, /* set information tone (to isdn port) */ MESSAGE_DTMF, /* dtmf digit (from isdn port) */ MESSAGE_mISDNSIGNAL, /* special mixer command (down to isdn port) */ - MESSAGE_SETUP, /* setup message */ MESSAGE_INFORMATION, /* additional digit information */ MESSAGE_OVERLAP, /* call accepted, send more information */ @@ -334,23 +378,22 @@ enum { /* messages between entities */ MESSAGE_TIMEOUT, /* protocol state has timed out (port->epoint) */ MESSAGE_NOTIFY, /* used to send progress and notify infos */ MESSAGE_FACILITY, /* used to facility infos, like aocd */ - MESSAGE_SUSPEND, /* suspend port */ MESSAGE_RESUME, /* resume port */ - - MESSAGE_CHANNEL, /* set status of audio path to endpoint (to call, audio is also set) */ + 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_TONE_COUNTER, /* tone counter (for VBOX tone use) */ MESSAGE_TONE_EOF, /* tone is end of file */ + MESSAGE_BCHANNEL, /* request/assign/remove bchannel */ + MESSAGE_HELLO, /* hello message for remote application */ + MESSAGE_NEWREF, /* special message to create and inform ref */ }; #define MESSAGES static const char *messages_txt[] = { \ @@ -371,7 +414,7 @@ enum { /* messages between entities */ "MESSAGE_FACILITY", \ "MESSAGE_SUSPEND", \ "MESSAGE_RESUME", \ - "MESSAGE_CHANNEL", \ + "MESSAGE_AUDIOPATH", \ /* "MESSAGE_REMOTE_AUDIO",*/ \ "MESSAGE_PATTERN", \ "MESSAGE_NOPATTERN", \ @@ -382,11 +425,15 @@ enum { /* messages between entities */ "MESSAGE_VBOX_TONE", \ "MESSAGE_TONE_COUNTER", \ "MESSAGE_TONE_EOF", \ + "MESSAGE_BCHANNEL", \ + "MESSAGE_HELLO", \ + "MESSAGE_NEWREF", \ }; struct message *message_create(int id_from, int id_to, int flow, int type); void message_put(struct message *message); +struct message *message_forward(int id_from, int id_to, int flow, union parameter *param); struct message *message_get(void); void message_free(struct message *message);