<!--<param name="enable-analog-option" value="call-swap"/>-->
<!--<param name="enable-analog-option" value="3-way"/>-->
</settings>
+ <pri_spans>
+ <span name="PRI_1">
+ <!-- Log Levels: none, alert, crit, err, warning, notice, info, debug -->
+ <param name="q921loglevel" value="alert"/>
+ <param name="q931loglevel" value="alert"/>
+ <param name="mode" value="user"/>
+ <param name="dialect" value="5ess"/>
+ <param name="dialplan" value="XML"/>
+ <param name="context" value="default"/>
+ </span>
+ <span name="PRI_2">
+ <param name="q921loglevel" value="alert"/>
+ <param name="q931loglevel" value="alert"/>
+ <param name="mode" value="user"/>
+ <param name="dialect" value="5ess"/>
+ <param name="dialplan" value="XML"/>
+ <param name="context" value="default"/>
+ </span>
+ </pri_spans>
<!-- one entry here per openzap span -->
<analog_spans>
<span id="1">
zap_span_t *span = NULL;
char *tonegroup = NULL;
uint32_t opts = 0;
-
+ int q921loglevel = -1;
+ int q931loglevel = -1;
+
for (param = switch_xml_child(myspan, "param"); param; param = param->next) {
char *var = (char *) switch_xml_attr_soft(param, "name");
char *val = (char *) switch_xml_attr_soft(param, "value");
mode = val;
} else if (!strcasecmp(var, "dialect")) {
dialect = val;
+ } else if (!strcasecmp(var, "q921loglevel")) {
+ if ((q921loglevel = switch_log_str2level(val)) == SWITCH_LOG_INVALID) {
+ q921loglevel = -1;
+ }
+ } else if (!strcasecmp(var, "q931loglevel")) {
+ if ((q931loglevel = switch_log_str2level(val)) == SWITCH_LOG_INVALID) {
+ q931loglevel = -1;
+ }
} else if (!strcasecmp(var, "context")) {
context = val;
} else if (!strcasecmp(var, "suggest-channel") && switch_true(val)) {
dialplan = val;
}
}
-
-
+
if (!id && !name) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "span missing required param 'id'\n");
continue;
if (zap_configure_span("isdn", span, on_clear_channel_signal,
"mode", mode,
"dialect", dialect,
+ "q921loglevel", q921loglevel,
+ "q931loglevel", q931loglevel,
TAG_END) != ZAP_SUCCESS) {
zap_log(ZAP_LOG_ERROR, "Error starting OpenZAP span %d mode: %d dialect: %d error: %s\n", span_id, mode, dialect, span->last_error);
continue;
static int zap_isdn_q921_log(void *pvt, Q921LogLevel_t level, char *msg, L2INT size)
{
zap_span_t *span = (zap_span_t *) pvt;
- int loglevel = ZAP_LOG_LEVEL_DEBUG;
- switch(level) {
- case Q921_LOG_DEBUG:
- loglevel = ZAP_LOG_LEVEL_DEBUG;
- break;
-
- case Q921_LOG_INFO:
- loglevel = ZAP_LOG_LEVEL_INFO;
- break;
-
- case Q921_LOG_NOTICE:
- loglevel = ZAP_LOG_LEVEL_NOTICE;
- break;
-
- case Q921_LOG_WARNING:
- loglevel = ZAP_LOG_LEVEL_WARNING;
- break;
-
- case Q921_LOG_ERROR:
- loglevel = ZAP_LOG_LEVEL_ERROR;
- break;
-
- default:
- return 0;
- }
-
- zap_log("Span", "Q.921", span->span_id, loglevel, "%s", msg);
+ zap_log("Span", "Q.921", span->span_id, (int)level, "%s", msg);
return 0;
}
{
zap_span_t *span = (zap_span_t *) pvt;
- zap_log("Span", "Q.931", span->span_id, ZAP_LOG_LEVEL_DEBUG, "%s", msg);
+ zap_log("Span", "Q.931", span->span_id, (int)level, "%s", msg);
return 0;
}
char *var, *val;
Q931Dialect_t dialect = Q931_Dialect_National;
uint32_t opts = 0;
+ int q921loglevel = 0;
+ int q931loglevel = 0;
if (span->signal_type) {
snprintf(span->last_error, sizeof(span->last_error), "Span is already configured for signalling [%d].", span->signal_type);
break;
}
tonemap = (const char *)val;
+ } else if (!strcasecmp(var, "q921loglevel")) {
+ q921loglevel = va_arg(ap, int);
+ if (q921loglevel < Q921_LOG_NONE) {
+ q921loglevel = Q921_LOG_NONE;
+ } else if (q921loglevel > Q921_LOG_DEBUG) {
+ q921loglevel = Q921_LOG_DEBUG;
+ }
+ } else if (!strcasecmp(var, "q931loglevel")) {
+ q931loglevel = va_arg(ap, int);
+ if (q931loglevel < Q931_LOG_NONE) {
+ q931loglevel = Q931_LOG_NONE;
+ } else if (q931loglevel > Q931_LOG_DEBUG) {
+ q931loglevel = Q931_LOG_DEBUG;
+ }
}
}
-
+
span->start = zap_isdn_start;
isdn_data->sig_cb = sig_cb;
isdn_data->dchans[0] = dchans[0];
&isdn_data->q931);
Q921SetLogCB(&isdn_data->q921, &zap_isdn_q921_log, isdn_data);
- Q921SetLogLevel(&isdn_data->q921, Q921_LOG_NONE);
+ Q921SetLogLevel(&isdn_data->q921, (Q921LogLevel_t)q921loglevel);
Q931Api_InitTrunk(&isdn_data->q931,
dialect,
span);
Q931SetLogCB(&isdn_data->q931, &zap_isdn_q931_log, isdn_data);
- Q931SetLogLevel(&isdn_data->q931, Q931_LOG_DEBUG);
+ Q931SetLogLevel(&isdn_data->q931, (Q931LogLevel_t)q931loglevel);
isdn_data->q931.autoRestartAck = 1;
isdn_data->q931.autoConnectAck = 0;