mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-15 16:39:14 +00:00
freetdm - ISDN added Q.931 timers
This commit is contained in:
parent
959e4ab22d
commit
393ba72c1a
@ -281,6 +281,253 @@ with the signaling protocols that you can run on top of your I/O interfaces.
|
|||||||
</span>
|
</span>
|
||||||
</r2_spans>
|
</r2_spans>
|
||||||
|
|
||||||
|
<!-- Sangoma ISDN PRI/BRI spans. Requires libsng_isdn to be installed -->
|
||||||
|
<sangoma_pri_spans>
|
||||||
|
<span name="wp1">
|
||||||
|
<!--
|
||||||
|
Switch emulation/Variant
|
||||||
|
Possible values are:
|
||||||
|
national
|
||||||
|
4ess
|
||||||
|
5ess
|
||||||
|
qsig
|
||||||
|
euroisdn
|
||||||
|
ntt
|
||||||
|
|
||||||
|
<param name="switchtype" value="national"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Signalling
|
||||||
|
Possible values are:
|
||||||
|
net
|
||||||
|
cpe
|
||||||
|
|
||||||
|
<param name="signalling" value="cpe"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Overlap - whether to support overlap receive
|
||||||
|
Possible values are: Yes/No
|
||||||
|
|
||||||
|
<param name="overlap" value="yes"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Facility - whether to support facility messages
|
||||||
|
Possible values are: Yes/No
|
||||||
|
|
||||||
|
<param name="facility" value="yes"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Minimum Digits
|
||||||
|
In overlap receive mode.
|
||||||
|
Minimum number of digits to receive before sending notification
|
||||||
|
to the dialplan
|
||||||
|
Possible values are: <Any digit>
|
||||||
|
|
||||||
|
<param name="min-digits" value="8"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
TEI - default value for Terminal Equipment Identifier.
|
||||||
|
Used in Point-to-point connections
|
||||||
|
Possible values are: <1-127>
|
||||||
|
|
||||||
|
<param name="tei" value="0"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Type of Number (TON)
|
||||||
|
Set the TON on outbound calls
|
||||||
|
Possible values are:
|
||||||
|
unknown
|
||||||
|
international
|
||||||
|
national
|
||||||
|
network-specific
|
||||||
|
subscriber-number
|
||||||
|
abbreviated-number
|
||||||
|
|
||||||
|
<param name="outbound-called-ton" value="unknown"/>
|
||||||
|
<param name="outbound-calling-ton" value="unknown"/>
|
||||||
|
<param name="outbound-rdnis-ton" value="unknown"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Numbering Plan Indendification (NPI)
|
||||||
|
Set the NPI on outbound calls
|
||||||
|
Possible values are:
|
||||||
|
unknown
|
||||||
|
isdn
|
||||||
|
data
|
||||||
|
telex
|
||||||
|
national
|
||||||
|
private
|
||||||
|
reserved
|
||||||
|
|
||||||
|
<param name="outbound-called-npi" value="unknown"/>
|
||||||
|
<param name="outbound-calling-npi" value="unknown"/>
|
||||||
|
<param name="outbound-rdnis-npi" value="unknown"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Bearer Capability - Transfer Capability
|
||||||
|
Set the Bearer Capability - Transfer Capability on outbound calls
|
||||||
|
Possible values are:
|
||||||
|
speech
|
||||||
|
unrestricted-digital-information
|
||||||
|
restricted-digital-information
|
||||||
|
3.1-Khz-audio
|
||||||
|
7-Khz-audio
|
||||||
|
15-Khz-audio
|
||||||
|
video
|
||||||
|
|
||||||
|
<param name="outbound-bc-transfer-cap" value="speech"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Bearer Capability - User Layer 1
|
||||||
|
Set the Bearer Capability - User Layer 1 on outbound calls
|
||||||
|
Possible values are:
|
||||||
|
|
||||||
|
V.110
|
||||||
|
ulaw
|
||||||
|
alaw
|
||||||
|
|
||||||
|
<param name="outbound-bc-user-layer1" value="speech"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Channel Restart Timeout
|
||||||
|
If we do not receive a RESTART message within this timeout on link
|
||||||
|
UP, we will send a channel restart.
|
||||||
|
|
||||||
|
|
||||||
|
<param name="channel-restart-timeout" value="20"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Local Number (MSN)
|
||||||
|
On incoming calls, we will only respond to this call if
|
||||||
|
the Called Party Number matches this value.
|
||||||
|
|
||||||
|
Note: Up to 8 local numbers can be added per span.
|
||||||
|
<param name="local-number" value="9054741990"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Facility Timeout
|
||||||
|
Amount of time to wait for the FACILITY message after a SETUP message is
|
||||||
|
received
|
||||||
|
<param name="facility-timeout" value="1"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Transfer Timeout
|
||||||
|
Amount of time to wait for the remote switch to respond to a transfer request
|
||||||
|
<param name="transfer-timeout" value="20"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
AT&T Transfer - Remove DTMF
|
||||||
|
Whether to remove DTMF tones received from remote switch when performing
|
||||||
|
AT&T Transfer.
|
||||||
|
|
||||||
|
<param name="att-remove-dtmf" value="yes/no"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Facility Information Element Decoding
|
||||||
|
Whether to decode contents within Facility IE. You should only disable this option if your custom application has its own Facility IE decoding.
|
||||||
|
|
||||||
|
<param name="facility-ie-decode" value="yes/no"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Ignore cause value
|
||||||
|
When using 5ESS switchtype, whether or not do initiate disconnects based on cause code.
|
||||||
|
|
||||||
|
<param name="ignore-cause-value" value="yes/no"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Trace (Interpreted)
|
||||||
|
Whether or not to enable Q921/Q931 trace on start
|
||||||
|
|
||||||
|
<param name="q931-trace" value="yes/no"/>
|
||||||
|
<param name="q921-trace" value="yes/no"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Trace (Raw)
|
||||||
|
Whether or not to enable Q921/Q931 trace on start
|
||||||
|
|
||||||
|
<param name="q931-raw-trace" value="yes/no"/>
|
||||||
|
<param name="q921-raw-trace" value="yes/no"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Force sending complete
|
||||||
|
Will add Sending Complete IE to outgoing SETUP message
|
||||||
|
By default, enabled on EuroISDN, disabled on US variants.
|
||||||
|
|
||||||
|
<param name="force-sending-complete" value="yes/no"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Early Media Override
|
||||||
|
Assume early media is available, even if Q.931 message does not have
|
||||||
|
progress indicator IE = in-band data ready
|
||||||
|
|
||||||
|
Possible values
|
||||||
|
on-proceed
|
||||||
|
on-progress
|
||||||
|
on-alert
|
||||||
|
|
||||||
|
<param name="early-media-override" value="on-alert"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Invert Channel ID Invert Bit
|
||||||
|
|
||||||
|
Invert the Channel ID Extend Bit
|
||||||
|
|
||||||
|
<param name="chan-id-invert-extend-bit" value="yes/no"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
CID Name transmit method
|
||||||
|
|
||||||
|
How to transmit Caller ID Name
|
||||||
|
|
||||||
|
Possible values:
|
||||||
|
display-ie
|
||||||
|
user-user-ie
|
||||||
|
facility-ie
|
||||||
|
default (will transmit CID-Name based on variant)
|
||||||
|
|
||||||
|
<param name="cid-name-transmit-method" value="default"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
CID Name transmit
|
||||||
|
|
||||||
|
Whether to transmit Caller ID Name
|
||||||
|
|
||||||
|
Possible values:
|
||||||
|
yes - always send CID-name
|
||||||
|
no - nether send CID-name
|
||||||
|
default (will transmit CID-Name based on variant)
|
||||||
|
|
||||||
|
<param name="cid-name-transmit-method" value="default"/>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Q.931 Timers in seconds
|
||||||
|
|
||||||
|
Override default Q.931 values
|
||||||
|
|
||||||
|
timers:
|
||||||
|
timer-t301
|
||||||
|
timer-t302
|
||||||
|
timer-t303
|
||||||
|
timer-t304
|
||||||
|
timer-t305
|
||||||
|
timer-t306
|
||||||
|
timer-t307
|
||||||
|
timer-t308
|
||||||
|
timer-t310
|
||||||
|
timer-t312
|
||||||
|
timer-t313
|
||||||
|
timer-t314
|
||||||
|
timer-t316
|
||||||
|
timer-t318
|
||||||
|
timer-t319
|
||||||
|
timer-t322
|
||||||
|
|
||||||
|
<param name="timer-t301" value="10"/>
|
||||||
|
-->
|
||||||
|
</span>
|
||||||
|
</sangoma_pri_spans>
|
||||||
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
PRI passive tapping spans. Requires patched version from libpri at http://svn.digium.com/svn/libpri/team/moy/tap-1.4
|
PRI passive tapping spans. Requires patched version from libpri at http://svn.digium.com/svn/libpri/team/moy/tap-1.4
|
||||||
You must also configure FreeTDM with "-with-pritap" (see ./configure help for details)
|
You must also configure FreeTDM with "-with-pritap" (see ./configure help for details)
|
||||||
|
@ -71,8 +71,6 @@
|
|||||||
#define MI_NOTIFY 0x14
|
#define MI_NOTIFY 0x14
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* TODO: rename all *_cc_* to *_an_* */
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
FLAG_RESET_RX = (1 << 0),
|
FLAG_RESET_RX = (1 << 0),
|
||||||
FLAG_RESET_TX = (1 << 1),
|
FLAG_RESET_TX = (1 << 1),
|
||||||
@ -262,7 +260,7 @@ typedef struct sngisdn_span_data {
|
|||||||
uint8_t setup_arb;
|
uint8_t setup_arb;
|
||||||
uint8_t facility_ie_decode;
|
uint8_t facility_ie_decode;
|
||||||
uint8_t facility;
|
uint8_t facility;
|
||||||
int8_t facility_timeout;
|
int32_t facility_timeout;
|
||||||
uint8_t att_remove_dtmf;
|
uint8_t att_remove_dtmf;
|
||||||
int32_t transfer_timeout;
|
int32_t transfer_timeout;
|
||||||
uint8_t num_local_numbers;
|
uint8_t num_local_numbers;
|
||||||
@ -277,6 +275,24 @@ typedef struct sngisdn_span_data {
|
|||||||
uint8_t force_sending_complete;
|
uint8_t force_sending_complete;
|
||||||
uint8_t cid_name_method;
|
uint8_t cid_name_method;
|
||||||
uint8_t send_cid_name;
|
uint8_t send_cid_name;
|
||||||
|
|
||||||
|
int32_t timer_t301;
|
||||||
|
int32_t timer_t302;
|
||||||
|
int32_t timer_t303;
|
||||||
|
int32_t timer_t304;
|
||||||
|
int32_t timer_t305;
|
||||||
|
int32_t timer_t306;
|
||||||
|
int32_t timer_t307;
|
||||||
|
int32_t timer_t308;
|
||||||
|
int32_t timer_t310;
|
||||||
|
int32_t timer_t312;
|
||||||
|
int32_t timer_t313;
|
||||||
|
int32_t timer_t314;
|
||||||
|
int32_t timer_t316;
|
||||||
|
int32_t timer_t318;
|
||||||
|
int32_t timer_t319;
|
||||||
|
int32_t timer_t322;
|
||||||
|
|
||||||
char* local_numbers[SNGISDN_NUM_LOCAL_NUMBERS];
|
char* local_numbers[SNGISDN_NUM_LOCAL_NUMBERS];
|
||||||
ftdm_timer_id_t timers[SNGISDN_NUM_SPAN_TIMERS];
|
ftdm_timer_id_t timers[SNGISDN_NUM_SPAN_TIMERS];
|
||||||
ftdm_sched_t *sched;
|
ftdm_sched_t *sched;
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
|
|
||||||
#include "ftmod_sangoma_isdn.h"
|
#include "ftmod_sangoma_isdn.h"
|
||||||
|
|
||||||
|
static ftdm_status_t parse_timer(const char* val, int32_t *target);
|
||||||
static ftdm_status_t parse_switchtype(const char* switch_name, ftdm_span_t *span);
|
static ftdm_status_t parse_switchtype(const char* switch_name, ftdm_span_t *span);
|
||||||
static ftdm_status_t parse_signalling(const char* signalling, ftdm_span_t *span);
|
static ftdm_status_t parse_signalling(const char* signalling, ftdm_span_t *span);
|
||||||
static ftdm_status_t add_local_number(const char* val, ftdm_span_t *span);
|
static ftdm_status_t add_local_number(const char* val, ftdm_span_t *span);
|
||||||
@ -42,6 +43,16 @@ static ftdm_status_t set_switchtype_defaults(ftdm_span_t *span);
|
|||||||
|
|
||||||
extern ftdm_sngisdn_data_t g_sngisdn_data;
|
extern ftdm_sngisdn_data_t g_sngisdn_data;
|
||||||
|
|
||||||
|
|
||||||
|
static ftdm_status_t parse_timer(const char* val, int32_t *target)
|
||||||
|
{
|
||||||
|
*target = atoi(val);
|
||||||
|
if (*target < 0) {
|
||||||
|
*target = 0;
|
||||||
|
}
|
||||||
|
return FTDM_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
static ftdm_status_t parse_yesno(const char* var, const char* val, uint8_t *target)
|
static ftdm_status_t parse_yesno(const char* var, const char* val, uint8_t *target)
|
||||||
{
|
{
|
||||||
if (ftdm_true(val)) {
|
if (ftdm_true(val)) {
|
||||||
@ -369,15 +380,9 @@ ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_
|
|||||||
return FTDM_FAIL;
|
return FTDM_FAIL;
|
||||||
}
|
}
|
||||||
} else if (!strcasecmp(var, "facility-timeout")) {
|
} else if (!strcasecmp(var, "facility-timeout")) {
|
||||||
signal_data->facility_timeout = atoi(val);
|
parse_timer(val, &signal_data->facility_timeout);
|
||||||
if (signal_data->facility_timeout < 0) {
|
|
||||||
signal_data->facility_timeout = 0;
|
|
||||||
}
|
|
||||||
} else if (!strcasecmp(var, "transfer-timeout")) {
|
} else if (!strcasecmp(var, "transfer-timeout")) {
|
||||||
signal_data->transfer_timeout = atoi(val);
|
parse_timer(val, &signal_data->transfer_timeout);
|
||||||
if (signal_data->transfer_timeout < 0) {
|
|
||||||
signal_data->transfer_timeout = 0;
|
|
||||||
}
|
|
||||||
} else if (!strcasecmp(var, "att-remove-dtmf")) {
|
} else if (!strcasecmp(var, "att-remove-dtmf")) {
|
||||||
parse_yesno(var, val, &signal_data->att_remove_dtmf);
|
parse_yesno(var, val, &signal_data->att_remove_dtmf);
|
||||||
} else if (!strcasecmp(var, "facility-ie-decode")) {
|
} else if (!strcasecmp(var, "facility-ie-decode")) {
|
||||||
@ -428,6 +433,38 @@ ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_
|
|||||||
ftdm_log(FTDM_LOG_WARNING, "Invalid option %s for parameter %s\n", val, var);
|
ftdm_log(FTDM_LOG_WARNING, "Invalid option %s for parameter %s\n", val, var);
|
||||||
signal_data->send_cid_name = SNGISDN_OPT_DEFAULT;
|
signal_data->send_cid_name = SNGISDN_OPT_DEFAULT;
|
||||||
}
|
}
|
||||||
|
} else if (!strcasecmp(var, "timer-t301")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t301);
|
||||||
|
} else if (!strcasecmp(var, "timer-t302")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t302);
|
||||||
|
} else if (!strcasecmp(var, "timer-t303")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t303);
|
||||||
|
} else if (!strcasecmp(var, "timer-t304")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t304);
|
||||||
|
} else if (!strcasecmp(var, "timer-t305")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t305);
|
||||||
|
} else if (!strcasecmp(var, "timer-t306")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t306);
|
||||||
|
} else if (!strcasecmp(var, "timer-t307")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t307);
|
||||||
|
} else if (!strcasecmp(var, "timer-t308")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t308);
|
||||||
|
} else if (!strcasecmp(var, "timer-t310")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t310);
|
||||||
|
} else if (!strcasecmp(var, "timer-t312")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t312);
|
||||||
|
} else if (!strcasecmp(var, "timer-t313")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t313);
|
||||||
|
} else if (!strcasecmp(var, "timer-t314")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t314);
|
||||||
|
} else if (!strcasecmp(var, "timer-t316")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t316);
|
||||||
|
} else if (!strcasecmp(var, "timer-t318")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t318);
|
||||||
|
} else if (!strcasecmp(var, "timer-t319")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t319);
|
||||||
|
} else if (!strcasecmp(var, "timer-t322")) {
|
||||||
|
parse_timer(val, &signal_data->timer_t322);
|
||||||
} else {
|
} else {
|
||||||
ftdm_log(FTDM_LOG_WARNING, "Ignoring unknown parameter %s\n", ftdm_parameters[paramindex].var);
|
ftdm_log(FTDM_LOG_WARNING, "Ignoring unknown parameter %s\n", ftdm_parameters[paramindex].var);
|
||||||
}
|
}
|
||||||
|
@ -747,9 +747,11 @@ ftdm_status_t sngisdn_stack_cfg_q931_dlsap(ftdm_span_t *span)
|
|||||||
cfg.t.cfg.s.inDLSAP.forwSubsc = FALSE; /* programmed forwarding subscription */
|
cfg.t.cfg.s.inDLSAP.forwSubsc = FALSE; /* programmed forwarding subscription */
|
||||||
cfg.t.cfg.s.inDLSAP.cndSubsc = TRUE; /* calling adddress delivery service subscription */
|
cfg.t.cfg.s.inDLSAP.cndSubsc = TRUE; /* calling adddress delivery service subscription */
|
||||||
|
|
||||||
/* TODO: Fill in these timers with proper values - eventually pass them */
|
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t301.enb = TRUE;
|
cfg.t.cfg.s.inDLSAP.tmr.t301.enb = TRUE;
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t301.val = 180;
|
cfg.t.cfg.s.inDLSAP.tmr.t301.val = 180;
|
||||||
|
if (signal_data->timer_t301 > 0) {
|
||||||
|
cfg.t.cfg.s.inDLSAP.tmr.t301.val = signal_data->timer_t301;
|
||||||
|
}
|
||||||
|
|
||||||
/* It looks like ETSI is the only variant that supports Overlap */
|
/* It looks like ETSI is the only variant that supports Overlap */
|
||||||
if (signal_data->switchtype == SNGISDN_SWITCH_EUROISDN) {
|
if (signal_data->switchtype == SNGISDN_SWITCH_EUROISDN) {
|
||||||
@ -760,19 +762,52 @@ ftdm_status_t sngisdn_stack_cfg_q931_dlsap(ftdm_span_t *span)
|
|||||||
cfg.t.cfg.s.inDLSAP.tmr.t302.val = 0;
|
cfg.t.cfg.s.inDLSAP.tmr.t302.val = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (signal_data->timer_t302 > 0) {
|
||||||
|
cfg.t.cfg.s.inDLSAP.tmr.t302.val = signal_data->timer_t302;
|
||||||
|
}
|
||||||
|
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t303.enb = TRUE;
|
cfg.t.cfg.s.inDLSAP.tmr.t303.enb = TRUE;
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t303.val = 4;
|
cfg.t.cfg.s.inDLSAP.tmr.t303.val = 4;
|
||||||
|
|
||||||
|
if (signal_data->timer_t303 > 0) {
|
||||||
|
cfg.t.cfg.s.inDLSAP.tmr.t303.val = signal_data->timer_t303;
|
||||||
|
}
|
||||||
|
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t304.enb = TRUE;
|
cfg.t.cfg.s.inDLSAP.tmr.t304.enb = TRUE;
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t304.val = 30;
|
cfg.t.cfg.s.inDLSAP.tmr.t304.val = 30;
|
||||||
|
|
||||||
|
if (signal_data->timer_t304 > 0) {
|
||||||
|
cfg.t.cfg.s.inDLSAP.tmr.t304.val = signal_data->timer_t304;
|
||||||
|
}
|
||||||
|
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t305.enb = TRUE;
|
cfg.t.cfg.s.inDLSAP.tmr.t305.enb = TRUE;
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t305.val = 30;
|
cfg.t.cfg.s.inDLSAP.tmr.t305.val = 30;
|
||||||
|
|
||||||
|
if (signal_data->timer_t305 > 0) {
|
||||||
|
cfg.t.cfg.s.inDLSAP.tmr.t305.val = signal_data->timer_t305;
|
||||||
|
}
|
||||||
|
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t306.enb = FALSE;
|
cfg.t.cfg.s.inDLSAP.tmr.t306.enb = FALSE;
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t306.val = 35;
|
cfg.t.cfg.s.inDLSAP.tmr.t306.val = 35;
|
||||||
|
|
||||||
|
if (signal_data->timer_t306 > 0) {
|
||||||
|
cfg.t.cfg.s.inDLSAP.tmr.t306.val = signal_data->timer_t306;
|
||||||
|
}
|
||||||
|
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t307.enb = FALSE;
|
cfg.t.cfg.s.inDLSAP.tmr.t307.enb = FALSE;
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t307.val = 35;
|
cfg.t.cfg.s.inDLSAP.tmr.t307.val = 35;
|
||||||
|
|
||||||
|
if (signal_data->timer_t307 > 0) {
|
||||||
|
cfg.t.cfg.s.inDLSAP.tmr.t307.val = signal_data->timer_t307;
|
||||||
|
}
|
||||||
|
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t308.enb = TRUE;
|
cfg.t.cfg.s.inDLSAP.tmr.t308.enb = TRUE;
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t308.val = 4;
|
cfg.t.cfg.s.inDLSAP.tmr.t308.val = 4;
|
||||||
|
|
||||||
|
if (signal_data->timer_t308 > 0) {
|
||||||
|
cfg.t.cfg.s.inDLSAP.tmr.t308.val = signal_data->timer_t308;
|
||||||
|
}
|
||||||
|
|
||||||
if (signal_data->signalling == SNGISDN_SIGNALING_NET) {
|
if (signal_data->signalling == SNGISDN_SIGNALING_NET) {
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t310.enb = TRUE;
|
cfg.t.cfg.s.inDLSAP.tmr.t310.enb = TRUE;
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t310.val = 10;
|
cfg.t.cfg.s.inDLSAP.tmr.t310.val = 10;
|
||||||
@ -784,18 +819,52 @@ ftdm_status_t sngisdn_stack_cfg_q931_dlsap(ftdm_span_t *span)
|
|||||||
cfg.t.cfg.s.inDLSAP.tmr.t312.enb = FALSE;
|
cfg.t.cfg.s.inDLSAP.tmr.t312.enb = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (signal_data->timer_t310 > 0) {
|
||||||
|
cfg.t.cfg.s.inDLSAP.tmr.t310.val = signal_data->timer_t310;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (signal_data->timer_t312 > 0) {
|
||||||
|
cfg.t.cfg.s.inDLSAP.tmr.t312.val = signal_data->timer_t312;
|
||||||
|
}
|
||||||
|
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t313.enb = TRUE;
|
cfg.t.cfg.s.inDLSAP.tmr.t313.enb = TRUE;
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t313.val = 4;
|
cfg.t.cfg.s.inDLSAP.tmr.t313.val = 4;
|
||||||
|
|
||||||
|
if (signal_data->timer_t313 > 0) {
|
||||||
|
cfg.t.cfg.s.inDLSAP.tmr.t313.val = signal_data->timer_t313;
|
||||||
|
}
|
||||||
|
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t316.enb = TRUE;
|
cfg.t.cfg.s.inDLSAP.tmr.t316.enb = TRUE;
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t316.val = 120;
|
cfg.t.cfg.s.inDLSAP.tmr.t316.val = 120;
|
||||||
|
|
||||||
|
if (signal_data->timer_t316 > 0) {
|
||||||
|
cfg.t.cfg.s.inDLSAP.tmr.t316.val = signal_data->timer_t316;
|
||||||
|
}
|
||||||
|
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t316c.enb = FALSE;
|
cfg.t.cfg.s.inDLSAP.tmr.t316c.enb = FALSE;
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t316c.val = 35;
|
cfg.t.cfg.s.inDLSAP.tmr.t316c.val = 35;
|
||||||
|
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t318.enb = TRUE;
|
cfg.t.cfg.s.inDLSAP.tmr.t318.enb = TRUE;
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t318.val = 4;
|
cfg.t.cfg.s.inDLSAP.tmr.t318.val = 4;
|
||||||
|
|
||||||
|
if (signal_data->timer_t318 > 0) {
|
||||||
|
cfg.t.cfg.s.inDLSAP.tmr.t318.val = signal_data->timer_t318;
|
||||||
|
}
|
||||||
|
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t319.enb = TRUE;
|
cfg.t.cfg.s.inDLSAP.tmr.t319.enb = TRUE;
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t319.val = 4;
|
cfg.t.cfg.s.inDLSAP.tmr.t319.val = 4;
|
||||||
|
|
||||||
|
if (signal_data->timer_t319 > 0) {
|
||||||
|
cfg.t.cfg.s.inDLSAP.tmr.t319.val = signal_data->timer_t319;
|
||||||
|
}
|
||||||
|
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t322.enb = TRUE;
|
cfg.t.cfg.s.inDLSAP.tmr.t322.enb = TRUE;
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t322.val = 4;
|
cfg.t.cfg.s.inDLSAP.tmr.t322.val = 4;
|
||||||
|
|
||||||
|
if (signal_data->timer_t322 > 0) {
|
||||||
|
cfg.t.cfg.s.inDLSAP.tmr.t322.val = signal_data->timer_t322;
|
||||||
|
}
|
||||||
|
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t332.enb = FALSE;
|
cfg.t.cfg.s.inDLSAP.tmr.t332.enb = FALSE;
|
||||||
cfg.t.cfg.s.inDLSAP.tmr.t332.val = 35;
|
cfg.t.cfg.s.inDLSAP.tmr.t332.val = 35;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user