X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=chan_lcr.h;h=ab7101de8f34fc9f336dd4f08e80f5fdf1ed7300;hp=45a5a94eaed82e94623c83dbb9f81f116204cf8b;hb=b5d6f1c72b000cc0e5f566adec73e830cec04f32;hpb=d70150d0470f76ea769da623ac8f50e828609b61 diff --git a/chan_lcr.h b/chan_lcr.h index 45a5a94..ab7101d 100644 --- a/chan_lcr.h +++ b/chan_lcr.h @@ -9,15 +9,75 @@ ** ** \*****************************************************************************/ -/* structure for all calls */ struct chan_call { struct chan_call *next; /* link to next call instance */ int state; /* current call state CHAN_LCR_STATE */ - unsigned long ref; /* callref for this channel */ - struct ast_channel *ast; /* current asterisk channel */ - unsigned long bchannel_handle; - /* reference to bchannel, if set */ - unsigned short bridge_id; /* 0 = off, equal ids are bridged */ + unsigned int ref; /* callref for this channel */ + int ref_was_assigned; + void *ast; /* current asterisk channel */ + int pbx_started; + /* indicates if pbx que is available */ + int audiopath; + /* audio is available */ + int cause, location; + /* store cause from lcr */ + char dialque[64]; + /* queue dialing prior setup ack */ + char oad[64];/* caller id in number format */ + + struct caller_info callerinfo; + struct redir_info redirinfo; + struct connect_info connectinfo; + /* store connectinfo form lcr */ + int bridge_id; + /* current ID or 0 */ + struct chan_call *bridge_call; + /* remote instance or NULL */ + int pipe[2]; + /* pipe for receive data */ + unsigned char read_buff[1024]; + /* read buffer for frame */ + struct ast_frame read_fr; + /* frame for read */ + char interface[32]; + /* LCR interface name for setup */ + char dialstring[64]; + /* cached dial string for setup */ +#ifndef AST_PARTY_CALLER + char cid_num[64]; /* cached cid for setup */ + char cid_name[64]; /* cached cid for setup */ + char cid_rdnis[64]; /* cached cid for setup */ +#endif + char display[128]; + /* display for setup */ + int dsp_dtmf; + /* decode dtmf by dsp */ + int inband_dtmf; /* generate dtmf tones, if + requested by asterisk */ + int rebuffer; /* send only 160 bytes frames + to asterisk */ + + int framepos; /* send only 160 bytes frames to asterisk */ + + int on_hold; /* track hold management, since + sip phones sometimes screw it up */ + char pipeline[256]; + /* echo cancel pipeline by option */ + int tx_gain, rx_gain; + /* gain by option */ + int keypad; + /* use keypad to dial number */ + unsigned char bf_key[56]; + int bf_len; /* blowfish crypt key */ + struct ast_dsp *dsp; /* ast dsp processor for fax/tone detection */ + struct ast_trans_pvt *trans; /* Codec translation path as fax/tone detection requires slin */ + int tx_queue, hdlc, faxdetect, ast_dsp; + /* flags for bchannel mode */ + char queue_string[64]; + /* queue for asterisk */ + int has_pattern; + /* pattern are available, PROGRESS has been indicated */ + }; enum { @@ -38,8 +98,8 @@ enum { }; #define CHAN_LCR_STATE static const struct chan_lcr_state { \ - char name, \ - char meaning, \ + char *name; \ + char *meaning; \ } chan_lcr_state[] = { \ { "IN_PREPARE", \ "New call from ISDN is waiting for setup." }, \ @@ -72,3 +132,10 @@ enum { }; +#define SOCKET_RETRY_TIMER 5 + +#define CERROR(call, ast, arg...) chan_lcr_log(__LOG_ERROR, __FILE__, __LINE__, __FUNCTION__, call, ast, ##arg) +#define CDEBUG(call, ast, arg...) chan_lcr_log(__LOG_NOTICE, __FILE__, __LINE__, __FUNCTION__, call, ast, ##arg) +void chan_lcr_log(int type, const char *file, int line, const char *function, struct chan_call *call, struct ast_channel *ast, const char *fmt, ...); +extern unsigned char flip_bits[256]; +void lcr_in_dtmf(struct chan_call *call, int val);