]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
update
authorAnthony Minessale <anthony.minessale@gmail.com>
Fri, 25 May 2007 19:37:16 +0000 (19:37 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Fri, 25 May 2007 19:37:16 +0000 (19:37 +0000)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@152 a93c3328-9c30-0410-af19-c9cd2b2d52af

libs/freetdm/src/include/openzap.h
libs/freetdm/src/zap_io.c
libs/freetdm/src/zap_wanpipe.c

index dca0bc3d067257f056888f7fdf2b595bfa6ba9aa..f1a2c938541d0594db6ce3656915c37fdc4da395 100644 (file)
@@ -34,7 +34,9 @@
 #ifndef OPENZAP_H
 #define OPENZAP_H
 
+#ifndef _XOPEN_SOURCE
 #define _XOPEN_SOURCE 500
+#endif
 
 #ifndef HAVE_STRINGS_H
 #define HAVE_STRINGS_H 1
 #define GOTO_STATUS(label,st) status = st; goto label ;
 
 #define zap_copy_string(x,y,z) strncpy(x, y, z - 1) 
+#define zap_strlen_zero(s) (!s || *s == '\0')
 
 
 #define zap_channel_test_feature(obj, flag) ((obj)->features & flag)
@@ -241,6 +244,8 @@ struct zap_channel {
        uint32_t dtmf_off;
        teletone_generation_session_t tone_session;
        zap_time_t last_event_time;
+       char chan_name[80];
+       char chan_number[25];
        struct zap_span *span;
        struct zap_io_interface *zio;
 };
@@ -293,6 +298,7 @@ struct zap_span {
        char last_error[256];
        char tone_map[ZAP_TONEMAP_INVALID+1][ZAP_TONEMAP_LEN];
        zap_channel_t channels[ZAP_MAX_CHANNELS_SPAN];
+       void *app_data;
 };
 
 
index a1f6a0bcbaa377524dd63999d721737be9210411..61c73bb9666f14b38a491a2ab9183e87e7f95aee 100644 (file)
@@ -1045,11 +1045,11 @@ zap_status_t zap_channel_read(zap_channel_t *zchan, void *data, zap_size_t *data
                        }
 
                        if (zchan->effective_codec == ZAP_CODEC_ULAW) {
-                               for(i = 0; i < max; i++) {
+                               for(i = 0; i < slen; i++) {
                                        *sln++ = ulaw_to_linear(*lp++);
                                } 
                        } else if (zchan->effective_codec == ZAP_CODEC_ALAW) {
-                               for(i = 0; i < max; i++) {
+                               for(i = 0; i < slen; i++) {
                                        *sln++ = alaw_to_linear(*lp++);
                                } 
                        }
index 175cdc50da79a97491b9c7163b1e4e86430bf15c..65385c11e4487ac628f685a3fc11994e270fbafe 100644 (file)
@@ -60,7 +60,7 @@ static zap_status_t wp_tdm_cmd_exec(zap_channel_t *zchan, wanpipe_tdm_api_t *tdm
        return ZAP_SUCCESS;
 }
 
-static unsigned wp_open_range(zap_span_t *span, unsigned spanno, unsigned start, unsigned end, zap_chan_type_t type)
+static unsigned wp_open_range(zap_span_t *span, unsigned spanno, unsigned start, unsigned end, zap_chan_type_t type, char *name, char *number)
 {
        unsigned configured = 0, x;
 
@@ -91,6 +91,12 @@ static unsigned wp_open_range(zap_span_t *span, unsigned spanno, unsigned start,
                                        chan->native_codec = chan->effective_codec = ZAP_CODEC_ULAW;
                                }
                        }
+                       if (!zap_strlen_zero(name)) {
+                               zap_copy_string(chan->chan_name, name, sizeof(chan->chan_name));
+                       }
+                       if (!zap_strlen_zero(number)) {
+                               zap_copy_string(chan->chan_number, number, sizeof(chan->chan_number));
+                       }
                        configured++;
                } else {
                        zap_log(ZAP_LOG_ERROR, "failure configuring device s%dc%d\n", spanno, x);
@@ -100,7 +106,7 @@ static unsigned wp_open_range(zap_span_t *span, unsigned spanno, unsigned start,
        return configured;
 }
 
-static unsigned wp_configure_channel(zap_config_t *cfg, const char *str, zap_span_t *span, zap_chan_type_t type)
+static unsigned wp_configure_channel(zap_config_t *cfg, const char *str, zap_span_t *span, zap_chan_type_t type, char *name, char *number)
 {
        int items, i;
     char *mydata, *item_list[10];
@@ -158,7 +164,7 @@ static unsigned wp_configure_channel(zap_config_t *cfg, const char *str, zap_spa
                        continue;
                }
 
-               configured += wp_open_range(span, spanno, channo, top, type);
+               configured += wp_open_range(span, spanno, channo, top, type, name, number);
 
        }
        
@@ -175,6 +181,8 @@ static ZIO_CONFIGURE_FUNCTION(wanpipe_configure)
        zap_span_t *span = NULL;
        int new_span = 0;
        unsigned configured = 0, d = 0;
+       char name[80] = "";
+       char number[25] = "";
 
        ZIO_CONFIGURE_MUZZLE;
 
@@ -227,13 +235,25 @@ static ZIO_CONFIGURE_FUNCTION(wanpipe_configure)
                        } else if (!strcasecmp(var, "trunk_type")) {
                                span->trunk_type = zap_str2zap_trunk_type(val);
                                zap_log(ZAP_LOG_DEBUG, "setting trunk type to '%s'\n", zap_trunk_type2str(span->trunk_type)); 
+                       } else if (!strcasecmp(var, "name")) {
+                               if (!strcasecmp(val, "undef")) {
+                                       *name = '\0';
+                               } else {
+                                       zap_copy_string(name, val, sizeof(name));
+                               }
+                       } else if (!strcasecmp(var, "number")) {
+                               if (!strcasecmp(val, "undef")) {
+                                       *number = '\0';
+                               } else {
+                                       zap_copy_string(number, val, sizeof(number));
+                               }
                        } else if (!strcasecmp(var, "fxo-channel")) {
                                if (span->trunk_type == ZAP_TRUNK_NONE) {
                                        span->trunk_type = ZAP_TRUNK_FXO;
                                        zap_log(ZAP_LOG_DEBUG, "setting trunk type to '%s'\n", zap_trunk_type2str(span->trunk_type)); 
                                }
                                if (span->trunk_type == ZAP_TRUNK_FXO) {
-                                       configured += wp_configure_channel(&cfg, val, span, ZAP_CHAN_TYPE_FXO);
+                                       configured += wp_configure_channel(&cfg, val, span, ZAP_CHAN_TYPE_FXO, name, number);
                                } else {
                                        zap_log(ZAP_LOG_WARNING, "Cannot add FXO channels to an FXS trunk!\n");
                                }
@@ -243,12 +263,12 @@ static ZIO_CONFIGURE_FUNCTION(wanpipe_configure)
                                        zap_log(ZAP_LOG_DEBUG, "setting trunk type to '%s'\n", zap_trunk_type2str(span->trunk_type)); 
                                }
                                if (span->trunk_type == ZAP_TRUNK_FXS) {
-                                       configured += wp_configure_channel(&cfg, val, span, ZAP_CHAN_TYPE_FXS);
+                                       configured += wp_configure_channel(&cfg, val, span, ZAP_CHAN_TYPE_FXS, name, number);
                                } else {
                                        zap_log(ZAP_LOG_WARNING, "Cannot add FXS channels to an FXO trunk!\n");
                                }
                        } else if (!strcasecmp(var, "b-channel")) {
-                               configured += wp_configure_channel(&cfg, val, span, ZAP_CHAN_TYPE_B);
+                               configured += wp_configure_channel(&cfg, val, span, ZAP_CHAN_TYPE_B, name, number);
                        } else if (!strcasecmp(var, "d-channel")) {
                                if (d) {
                                        zap_log(ZAP_LOG_WARNING, "ignoring extra d-channel\n");
@@ -260,7 +280,7 @@ static ZIO_CONFIGURE_FUNCTION(wanpipe_configure)
                                        } else {
                                                qtype = ZAP_CHAN_TYPE_DQ921;
                                        }
-                                       configured += wp_configure_channel(&cfg, val, span, qtype);
+                                       configured += wp_configure_channel(&cfg, val, span, qtype, name, number);
                                        d++;
                                }
                        }