changed naming of mISDN channels, so that hinting works proper
authorChristian Richter <christian.richter@beronet.com>
Mon, 7 Aug 2006 09:09:17 +0000 (09:09 +0000)
committerChristian Richter <christian.richter@beronet.com>
Mon, 7 Aug 2006 09:09:17 +0000 (09:09 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@39131 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_misdn.c
channels/misdn/isdn_lib.c
channels/misdn/isdn_lib.h

index f093af0..21edb0d 100644 (file)
@@ -3042,18 +3042,20 @@ static struct ast_channel_tech misdn_tech_wo_bridge = {
 };
 
 
 };
 
 
-static unsigned long glob_channel=0;
+static int glob_channel=0;
 
 static void update_name(struct ast_channel *tmp, int port, int c) 
 {
 
 static void update_name(struct ast_channel *tmp, int port, int c) 
 {
-       if (c<=0) {
-                       c=glob_channel++;
-                       ast_string_field_build(tmp, name, "%s/%d-u%d",
-                                misdn_type, port, c);
-       } else {
-                        ast_string_field_build(tmp, name, "%s/%d-%d",
-                                misdn_type, port, c);
+       int chan_offset=0;
+       int tmp_port = misdn_cfg_get_next_port(0);
+       for (; tmp_port > 0; tmp_port=misdn_cfg_get_next_port(tmp_port)) {
+       if (tmp_port == port) break;
+               chan_offset+=misdn_lib_port_is_pri(tmp_port)?30:2;      
        }
        }
+       if (c<0) c=0;
+
+       ast_string_field_build(tmp, name, "%s/%d-u%d",
+                                misdn_type, chan_offset+c, glob_channel++);
 
        chan_misdn_log(3,port," --> updating channel name to [%s]\n",tmp->name);
        
 
        chan_misdn_log(3,port," --> updating channel name to [%s]\n",tmp->name);
        
index b0fab30..eb26cd9 100644 (file)
@@ -27,6 +27,18 @@ struct misdn_stack* get_misdn_stack( void );
 static int bec_initialized=0;
 #endif
 
 static int bec_initialized=0;
 #endif
 
+int misdn_lib_port_is_pri(int port)
+{
+       struct misdn_stack *stack=get_misdn_stack();
+       for ( ; stack; stack=stack->next) {
+               if (stack->port == port) {
+                       return stack->pri;
+               }
+       }
+       
+       return -1;
+}
+
 
 int misdn_lib_port_block(int port)
 {
 
 int misdn_lib_port_block(int port)
 {
index 918d3a6..736a99f 100644 (file)
@@ -413,6 +413,8 @@ int misdn_lib_get_port_info(int port);
 int misdn_lib_port_block(int port);
 int misdn_lib_port_unblock(int port);
 
 int misdn_lib_port_block(int port);
 int misdn_lib_port_unblock(int port);
 
+int misdn_lib_port_is_pri(int port);
+
 int misdn_lib_port_up(int port, int notcheck);
 
 int misdn_lib_get_port_down(int port);
 int misdn_lib_port_up(int port, int notcheck);
 
 int misdn_lib_get_port_down(int port);