X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=chan_lcr.h;h=ab7101de8f34fc9f336dd4f08e80f5fdf1ed7300;hp=87a493f455784800f45906014e60ef4813ec7d48;hb=034d3a91404addedc1c7a3494862c79532b0b878;hpb=b93eda54f0af4fc05a6a2eca8dbf3b39b759a20b diff --git a/chan_lcr.h b/chan_lcr.h index 87a493f..ab7101d 100644 --- a/chan_lcr.h +++ b/chan_lcr.h @@ -9,25 +9,75 @@ ** ** \*****************************************************************************/ -/* structure for all calls */ -struct bchannel; 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 */ + unsigned int ref; /* callref for this channel */ + int ref_was_assigned; void *ast; /* current asterisk channel */ - struct bchannel *bchannel; - /* reference to bchannel, if set */ + int pbx_started; + /* indicates if pbx que is available */ + int audiopath; + /* audio is available */ int cause, location; /* store cause from lcr */ - unsigned char dialque[64]; + 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 { @@ -82,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);