summaryrefslogtreecommitdiffstats
path: root/chan_lcr.c
diff options
context:
space:
mode:
authorSuper User2008-04-29 11:02:02 +0200
committerSuper User2008-04-29 11:02:02 +0200
commit81c485c126c08982e0d9120d5198c5515a0779d6 (patch)
tree15203eaeffd5a706e76e3718240efa7b5e8eccf7 /chan_lcr.c
parentlocking work (diff)
downloadlcr-81c485c126c08982e0d9120d5198c5515a0779d6.tar.gz
lcr-81c485c126c08982e0d9120d5198c5515a0779d6.tar.xz
lcr-81c485c126c08982e0d9120d5198c5515a0779d6.zip
work
modified: chan_lcr.c
Diffstat (limited to 'chan_lcr.c')
-rw-r--r--chan_lcr.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/chan_lcr.c b/chan_lcr.c
index 0a38304..2cf2ae6 100644
--- a/chan_lcr.c
+++ b/chan_lcr.c
@@ -85,6 +85,41 @@ debug of call handling
denke an alle info-elements in jeder message (from asterisk & from lcr)
ausloesen beim socket-verlust
+bei "ast_channel_alloc" kannste die Callerid und den type usw. setzten.
+da kannste auch die calledPartyNum setzen. Um asterisk ein Setup zu schicken rufst du einfach "ast_pbx_start( channel ) " auf. Die ganzen queue baren indications und Controls findest du in "include/asterisk/frame.h"
+
+Also zusammenfassend:
+
+Messages die zum Asterisk gehen:
+
+SETUP - > ast_pbx_start(ast)
+ CONNECT -> ast_queue_control(ast,
+ AST_CONTROL_ANSWER);
+PROCEEDING -> ast_queue_control(ast,
+ AST_CONTROL_PROCEEDING);
+ALERTING -> ast_queue_control(ast,
+ AST_CONTROL_RINGING);
+DISCONNECT -> ast_queue_hangup(ast);
+
+Messages die vom Asterisk kommen:
+
+lcr_request -> NEWREF
+lcr_call -> SETUP
+lcr_answer -> CONNECT
+lcr_hangup -> RELEASE_(complete)
+ lcr_indicate(AST_CONTROL_RINGING) -> ALERTING
+ lcr_indicate(AST_CONTROL_PROCEEDING) -> PROCEEDING
+ lcr_indicate(AST_CONTROL_PROGRESS) -> PROGRESS
+ lcr_indicate(AST_CONTROL_BUSY) -> DISCONNECT ( cause=17 )
+
+
+
+
+
+
+
+
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -1209,12 +1244,15 @@ int load_module(void)
if (!bchannel_initialize()) {
ast_log(LOG_ERROR, "Unable to open mISDN device\n");
+ close_socket(lcr_sock);
return -1;
}
mISDN_created = 1;
if (ast_channel_register(&lcr_tech)) {
ast_log(LOG_ERROR, "Unable to register channel class\n");
+ bchannel_deinitialize();
+ close_socket(lcr_sock);
return -1;
}
@@ -1256,6 +1294,9 @@ int load_module(void)
if ((pthread_create(&chan_tid, NULL, chan_thread, arg)<0))
{
failed to create thread
+ bchannel_deinitialize();
+ close_socket(lcr_sock);
+ ast_channel_unregister(&lcr_tech);
return -1;
}
return 0;