[asterisk-commits] moy: branch moy/mfcr2 r115577 - in /team/moy/mfcr2: channels/ configs/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri May 9 00:47:33 CDT 2008
Author: moy
Date: Fri May 9 00:47:29 2008
New Revision: 115577
URL: http://svn.digium.com/view/asterisk?view=rev&rev=115577
Log:
added basic pulse metering handling
Modified:
team/moy/mfcr2/channels/chan_zap.c
team/moy/mfcr2/configs/zapata.conf.sample
Modified: team/moy/mfcr2/channels/chan_zap.c
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/channels/chan_zap.c?view=diff&rev=115577&r1=115576&r2=115577
==============================================================================
--- team/moy/mfcr2/channels/chan_zap.c (original)
+++ team/moy/mfcr2/channels/chan_zap.c Fri May 9 00:47:29 2008
@@ -415,6 +415,7 @@
static struct zt_mfcr2 r2links[NUM_SPANS];
static openr2_variant_t mfcr2_cur_variant = OR2VAR_UNKNOWN;
static int mfcr2_cur_mfback_timeout = -1;
+static int mfcr2_cur_metering_pulse_timeout = -1;
static int mfcr2_cur_max_ani = 10;
static int mfcr2_cur_max_dnis = 4;
static int mfcr2_cur_get_ani_first = 0;
@@ -1443,10 +1444,10 @@
}
} else {
/* being the backward side and not UP yet, we only need to request hangup */
+ /* TODO: what about doing this same thing when were AST_STATE_UP? */
ast_queue_hangup(p->owner, zt_r2_cause_to_ast_cause(cause));
}
}
- openr2_chan_disconnect_call(r2chan, OR2_CAUSE_NORMAL_CLEARING);
}
static void zt_r2_write_log(openr2_log_level_t level, char *logmessage)
@@ -8803,6 +8804,7 @@
openr2_context_set_ani_first(zap_r2->protocol_context, mfcr2_cur_get_ani_first);
openr2_context_set_mf_threshold(zap_r2->protocol_context, threshold);
openr2_context_set_mf_back_timeout(zap_r2->protocol_context, mfcr2_cur_mfback_timeout);
+ openr2_context_set_metering_pulse_timeout(zap_r2->protocol_context, mfcr2_cur_metering_pulse_timeout);
if (ast_strlen_zero(mfcr2_cur_logdir)) {
openr2_context_set_log_directory(zap_r2->protocol_context, "/tmp");
} else {
@@ -13039,6 +13041,7 @@
ast_cli(a->fd, "MFC/R2 Max DNIS: %d\n", openr2_context_get_max_dnis(r2context));
ast_cli(a->fd, "MFC/R2 Get ANI First: %s\n", openr2_context_get_ani_first(r2context) ? "Yes" : "No");
ast_cli(a->fd, "MFC/R2 MF Back Timeout: %dms\n", openr2_context_get_mf_back_timeout(r2context));
+ ast_cli(a->fd, "MFC/R2 R2 Metering Pulse Timeout: %dms\n", openr2_context_get_metering_pulse_timeout(r2context));
ast_cli(a->fd, "MFC/R2 Rx State: %s\n", openr2_proto_get_rx_state_string(tmp->r2chan));
ast_cli(a->fd, "MFC/R2 Tx State: %s\n", openr2_proto_get_tx_state_string(tmp->r2chan));
ast_cli(a->fd, "MFC/R2 MF Tx Signal: %d\n", openr2_proto_get_mf_tx(tmp->r2chan));
@@ -14967,7 +14970,12 @@
ast_log(LOG_WARNING, "MF timeout of 0? hum, I will protect you from your ignorance. Setting default.\n");
mfcr2_cur_mfback_timeout = -1;
} else if (mfcr2_cur_mfback_timeout > 0 && mfcr2_cur_mfback_timeout < 500) {
- ast_log(LOG_WARNING, "MF less than 500ms is not recommended, you have been warned!\n");
+ ast_log(LOG_WARNING, "MF timeout less than 500ms is not recommended, you have been warned!\n");
+ }
+ } else if (!strcasecmp(v->name, "mfcr2_metering_pulse_timeout")) {
+ mfcr2_cur_metering_pulse_timeout = atoi(v->value);
+ if (mfcr2_cur_metering_pulse_timeout > 500) {
+ ast_log(LOG_WARNING, "Metering pulse timeout greater than 500ms is not recommended, you have been warned!\n");
}
} else if (!strcasecmp(v->name, "mfcr2_get_ani_first")) {
mfcr2_cur_get_ani_first = ast_true(v->value);
Modified: team/moy/mfcr2/configs/zapata.conf.sample
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/configs/zapata.conf.sample?view=diff&rev=115577&r1=115576&r2=115577
==============================================================================
--- team/moy/mfcr2/configs/zapata.conf.sample (original)
+++ team/moy/mfcr2/configs/zapata.conf.sample Fri May 9 00:47:29 2008
@@ -853,9 +853,10 @@
; MFC/R2 variant. This depends on the OpenR2 supported variants
; A list of values can be found at libopenr2.org
; some valid values are:
+; ar (Argentina)
+; br (Brazil)
; mx (Mexico)
-; br (Brazil)
-; ar (Argentina)
+; ph (Philippines)
; itu (per ITU spec)
; mfcr2_variant=mx
@@ -912,9 +913,25 @@
; MFC/R2 value in milliseconds for the MF timeout. Any negative value
; means 'default', smaller values than 500ms are not recommended
-; and can cause malfunctioning. If you experiment protocol error
-; due to MF timeout try incrementing this value
+; and can cause malfunctioning. If you experience protocol error
+; due to MF timeout try incrementing this value in 500ms steps
; mfcr2_mfback_timeout=-1
+
+; MFC/R2 value in milliseconds for the metering pulse timeout.
+; Metering pulses are sent by some telcos for some R2 variants
+; during a call presumably for billing purposes to indicate costs,
+; however this pulses use the same signal that is used to indicate
+; call hangup, therefore a timeout is sometimes required to distinguish
+; between a *real* hangup and a billing pulse that should not
+; last more than 500ms, If you experience call drops after some
+; minutes of being stablished try setting a value of some ms here,
+; values greater than 500ms are not recommended.
+; BE AWARE that choosing the proper protocol mfcr2_variant parameter
+; implicitly sets a good recommended value for this timer, use this
+; parameter only when you *really* want to override the default, otherwise
+; just comment out this value or put a -1
+; Any negative value means 'default'.
+; mfcr2_metering_pulse_timeout=-1
; ---------------- END of options to be used with signalling=mfcr2
More information about the asterisk-commits
mailing list