Merge branch 'master' of ssh://jolly@www.mISDN.org/var/git/lcr

Conflicts:

	chan_lcr.c
This commit is contained in:
Super User 2008-04-28 19:34:33 +02:00
commit f94f30b0c5
2 changed files with 87 additions and 7 deletions

View File

@ -135,6 +135,8 @@ CHAN_LCR_STATE // state description structure
int lcr_debug=1;
int mISDN_created=1;
char lcr_type[]="LCR";
int lcr_sock = -1;
@ -788,6 +790,47 @@ static void send_setup_to_lcr(struct chan_call *call)
call->state = CHAN_LCR_STATE_OUT_SETUP;
}
#if 0
CHRISTIAN: das war ein konflikt beim pullen
siehe anderes lcr_request();
bedenke: das ast_log muss noch üeberall eingepflegt werden
static struct ast_channel *lcr_request(const char *type, int format, void *data, int *cause)
{
struct chan_call *call=alloc_call();
if (call) {
#warning hier muss jetzt wohl eine Ref angefordert werden!
ast=lcr_ast_new(call, ext, NULL, 0 );
if (ast) {
call->ast=ast;
} else {
ast_log(LOG_WARNING, "Could not create new Asterisk Channel\n");
free_call(call);
}
} else {
ast_log(LOG_WARNING, "Could not create new Lcr Call Handle\n");
}
return ast;
}
struct ast_channel *ast=NULL;
char buf[128];
char *port_str, *ext, *p;
int port;
ast_copy_string(buf, data, sizeof(buf)-1);
p=buf;
port_str=strsep(&p, "/");
ext=strsep(&p, "/");
ast_verbose("portstr:%s ext:%s\n",port_str, ext);
sprintf(buf,"%s/%s",lcr_type,(char*)data);
#endif
/*
* send dialing info to LCR
* this function is called, when setup acknowledge is received and dialing
@ -841,9 +884,9 @@ static struct ast_channel *lcr_request(const char *type, int format, void *data,
*/
static int lcr_call(struct ast_channel *ast, char *dest, int timeout)
{
struct lcr_pvt *lcr=ast->tech_pvt;
struct chan_call *call=ast->tech_pvt;
if (!lcr) return -1;
if (!call) return -1;
char buf[128];
char *port_str, *dad, *p;
@ -861,7 +904,8 @@ static int lcr_call(struct ast_channel *ast, char *dest, int timeout)
if (lcr_debug)
ast_verbose("Call: ext:%s dest:(%s) -> dad(%s) \n", ast->exten,dest, dad);
#warning hier müssen wi eine der geholten REFs nehmen und ein SETUP schicken, die INFOS zum SETUP stehen im Ast pointer drin, bzw. werden hier übergeben.
return 0;
}
@ -892,13 +936,19 @@ digits kommen, koennen aber nicht verwendet werden.
static int lcr_answer(struct ast_channel *c)
{
struct lcr_pvt *lcr=c->tech_pvt;
struct chan_call *call=c->tech_pvt;
return 0;
}
static int lcr_hangup(struct ast_channel *ast)
{
<<<<<<< HEAD:chan_lcr.c
struct chan_call *call = ast->tech_pvt;
=======
struct chan_call *call=c->tech_pvt;
c->tech_pvt=NULL;
}
>>>>>>> 350450b9cadc6107449fe2630843d4f898f680b7:chan_lcr.c
/* disconnect asterisk, maybe not required */
ast->tech_pvt = NULL;
@ -929,13 +979,13 @@ static int lcr_hangup(struct ast_channel *ast)
static int lcr_write(struct ast_channel *c, struct ast_frame *f)
{
struct lcr_pvt *lcrm= c->tech_pvt;
struct chan_call *callm= c->tech_pvt;
}
static struct ast_frame *lcr_read(struct ast_channel *c)
{
struct lcr_pvt *lcr = c->tech_pvt;
struct chan_call *call = c->tech_pvt;
}
static int lcr_indicate(struct ast_channel *c, int cond, const void *data, size_t datalen)
@ -971,7 +1021,7 @@ static int lcr_indicate(struct ast_channel *c, int cond, const void *data, size_
}
static struct ast_channel_tech lcr_tech = {
.type="lcr",
.type=lcr_type,
.description="Channel driver for connecting to Linux-Call-Router",
.capabilities=AST_FORMAT_ALAW,
.requester=lcr_request,
@ -988,6 +1038,34 @@ static struct ast_channel_tech lcr_tech = {
.properties=0
};
#warning das muss mal aus der config datei gelesen werden:
char lcr_context[]="from-lcr";
static struct ast_channel *lcr_ast_new(struct chan_call *call, char *exten, char *callerid, int ref)
{
struct ast_channel *tmp;
char *cid_name = 0, *cid_num = 0;
if (callerid)
ast_callerid_parse(callerid, &cid_name, &cid_num);
tmp = ast_channel_alloc(1, AST_STATE_RESERVED, cid_num, cid_name, "", exten, "", 0, "%s/%d", lcr_type, ref);
if (tmp) {
tmp->tech = &lcr_tech;
tmp->writeformat = AST_FORMAT_ALAW;
tmp->readformat = AST_FORMAT_ALAW;
ast_copy_string(tmp->context, lcr_context, AST_MAX_CONTEXT);
}
return tmp;
}
/*
* cli
*/

View File

@ -18,6 +18,8 @@ struct chan_call {
unsigned long bchannel_handle;
/* reference to bchannel, if set */
unsigned short bridge_id; /* 0 = off, equal ids are bridged */
struct ast_channel *ast;
};
enum {