Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
F
freeswitch
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
张华
freeswitch
Commits
3ad8a33b
提交
3ad8a33b
authored
10月 25, 2010
作者:
Konrad Hammel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
freetdm: ss7, bug fix in obci_bita handling
freetdm: ss7, added support for SAM freetdm: ss7, updated support for COT in IAM
上级
09dc7c32
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
172 行增加
和
37 行删除
+172
-37
ftmod_sangoma_ss7_handle.c
...dm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c
+95
-11
ftmod_sangoma_ss7_main.c
...etdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c
+29
-25
ftmod_sangoma_ss7_main.h
...etdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.h
+2
-0
ftmod_sangoma_ss7_out.c
...eetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_out.c
+2
-1
ftmod_sangoma_ss7_support.c
...m/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c
+44
-0
没有找到文件。
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c
浏览文件 @
3ad8a33b
...
@@ -216,8 +216,20 @@ ftdm_status_t handle_con_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
...
@@ -216,8 +216,20 @@ ftdm_status_t handle_con_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
sprintf
(
nadi
,
"%d"
,
siConEvnt
->
cdPtyNum
.
natAddrInd
.
val
);
sprintf
(
nadi
,
"%d"
,
siConEvnt
->
cdPtyNum
.
natAddrInd
.
val
);
ftdm_channel_add_var
(
ftdmchan
,
"ss7_cld_nadi"
,
nadi
);
ftdm_channel_add_var
(
ftdmchan
,
"ss7_cld_nadi"
,
nadi
);
/* set the state of the channel to collecting...the rest is done by the chan monitor */
ftdm_set_state_locked
(
ftdmchan
,
FTDM_CHANNEL_STATE_COLLECT
);
/* check if a COT test is requested */
if
((
siConEvnt
->
natConInd
.
eh
.
pres
)
&&
(
siConEvnt
->
natConInd
.
contChkInd
.
pres
))
{
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Found COT Request
\n
"
,
sngss7_info
->
circuit
->
cic
);
/* tell the core to loop the channel */
ftdm_channel_command
(
ftdmchan
,
FTDM_COMMAND_ENABLE_LOOP
,
NULL
);
/* move to in loop state */
ftdm_set_state_locked
(
ftdmchan
,
FTDM_CHANNEL_STATE_IN_LOOP
);
}
else
{
/* set the state of the channel to collecting...the rest is done by the chan monitor */
ftdm_set_state_locked
(
ftdmchan
,
FTDM_CHANNEL_STATE_COLLECT
);
}
}
/* if (channel is usable */
}
/* if (channel is usable */
...
@@ -256,6 +268,9 @@ handle_glare:
...
@@ -256,6 +268,9 @@ handle_glare:
default:
/* should not have gotten an IAM while in this state */
default:
/* should not have gotten an IAM while in this state */
SS7_ERROR_CHAN
(
ftdmchan
,
"Got IAM on channel in invalid state(%s)...reset!
\n
"
,
ftdm_channel_state2str
(
ftdmchan
->
state
));
SS7_ERROR_CHAN
(
ftdmchan
,
"Got IAM on channel in invalid state(%s)...reset!
\n
"
,
ftdm_channel_state2str
(
ftdmchan
->
state
));
/* reset the cic */
sngss7_set_flag
(
sngss7_info
,
FLAG_RESET_TX
);
/* move the state of the channel to RESTART to force a reset */
/* move the state of the channel to RESTART to force a reset */
ftdm_set_state_locked
(
ftdmchan
,
FTDM_CHANNEL_STATE_RESTART
);
ftdm_set_state_locked
(
ftdmchan
,
FTDM_CHANNEL_STATE_RESTART
);
...
@@ -292,6 +307,7 @@ ftdm_status_t handle_con_sta(uint32_t suInstId, uint32_t spInstId, uint32_t circ
...
@@ -292,6 +307,7 @@ ftdm_status_t handle_con_sta(uint32_t suInstId, uint32_t spInstId, uint32_t circ
/**************************************************************************/
/**************************************************************************/
case
(
ADDRCMPLT
):
case
(
ADDRCMPLT
):
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Rx ACM
\n
"
,
sngss7_info
->
circuit
->
cic
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Rx ACM
\n
"
,
sngss7_info
->
circuit
->
cic
);
switch
(
ftdmchan
->
state
)
{
switch
(
ftdmchan
->
state
)
{
/**********************************************************************/
/**********************************************************************/
case
FTDM_CHANNEL_STATE_DIALING
:
case
FTDM_CHANNEL_STATE_DIALING
:
...
@@ -315,14 +331,22 @@ ftdm_status_t handle_con_sta(uint32_t suInstId, uint32_t spInstId, uint32_t circ
...
@@ -315,14 +331,22 @@ ftdm_status_t handle_con_sta(uint32_t suInstId, uint32_t spInstId, uint32_t circ
ftdm_set_state_locked
(
ftdmchan
,
FTDM_CHANNEL_STATE_PROGRESS_MEDIA
);
ftdm_set_state_locked
(
ftdmchan
,
FTDM_CHANNEL_STATE_PROGRESS_MEDIA
);
}
}
break
;
break
;
/**********************************************************************/
/**********************************************************************/
default:
/* incorrect state...reset the CIC */
default:
/* incorrect state...reset the CIC */
SS7_ERROR_CHAN
(
ftdmchan
,
"RX ACM in invalid state :%s...resetting CIC
\n
"
,
ftdm_channel_state2str
(
ftdmchan
->
state
));
/* reset the cic */
sngss7_set_flag
(
sngss7_info
,
FLAG_RESET_TX
);
/* go to RESTART */
/* go to RESTART */
ftdm_set_state_locked
(
ftdmchan
,
FTDM_CHANNEL_STATE_
PROGRESS
);
ftdm_set_state_locked
(
ftdmchan
,
FTDM_CHANNEL_STATE_
RESTART
);
break
;
break
;
/**********************************************************************/
/**********************************************************************/
}
/* switch (ftdmchan->state) */
}
/* switch (ftdmchan->state) */
break
;
/**************************************************************************/
/**************************************************************************/
case
(
MODIFY
):
case
(
MODIFY
):
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Rx MODIFY
\n
"
,
sngss7_info
->
circuit
->
cic
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Rx MODIFY
\n
"
,
sngss7_info
->
circuit
->
cic
);
...
@@ -354,6 +378,34 @@ ftdm_status_t handle_con_sta(uint32_t suInstId, uint32_t spInstId, uint32_t circ
...
@@ -354,6 +378,34 @@ ftdm_status_t handle_con_sta(uint32_t suInstId, uint32_t spInstId, uint32_t circ
/**************************************************************************/
/**************************************************************************/
case
(
SUBSADDR
):
case
(
SUBSADDR
):
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Rx SAM
\n
"
,
sngss7_info
->
circuit
->
cic
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Rx SAM
\n
"
,
sngss7_info
->
circuit
->
cic
);
/* check the channel state */
switch
(
ftdmchan
->
state
)
{
/**********************************************************************/
case
(
FTDM_CHANNEL_STATE_COLLECT
):
/* confirm that the event contains the subsquent number field */
if
(
siCnStEvnt
->
subNum
.
eh
.
pres
&&
siCnStEvnt
->
subNum
.
addrSig
.
pres
)
{
/* add the digits to the ftdm channel variable */
append_tknStr_from_sngss7
(
siCnStEvnt
->
subNum
.
addrSig
,
ftdmchan
->
caller_data
.
dnis
.
digits
,
siCnStEvnt
->
subNum
.
oddEven
);
}
else
{
SS7_INFO_CHAN
(
ftdmchan
,
"No Called party (DNIS) information in SAM!%s
\n
"
,
" "
);
}
/* go to idle so that collect state is processed again */
ftdm_set_state_locked
(
ftdmchan
,
FTDM_CHANNEL_STATE_IDLE
);
break
;
/**********************************************************************/
default:
SS7_ERROR_CHAN
(
ftdmchan
,
"RX SAM in invalid state :%s...ignoring
\n
"
,
ftdm_channel_state2str
(
ftdmchan
->
state
));
break
;
/**********************************************************************/
}
/* switch (ftdmchan->state) */
break
;
break
;
/**************************************************************************/
/**************************************************************************/
case
(
EXIT
):
case
(
EXIT
):
...
@@ -830,7 +882,7 @@ ftdm_status_t handle_sta_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
...
@@ -830,7 +882,7 @@ ftdm_status_t handle_sta_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
break
;
break
;
/**************************************************************************/
/**************************************************************************/
case
SIT_STA_CONTCHK
:
/* continuity check */
case
SIT_STA_CONTCHK
:
/* continuity check */
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Rx C
OT
start
\n
"
,
sngss7_info
->
circuit
->
cic
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Rx C
CR
start
\n
"
,
sngss7_info
->
circuit
->
cic
);
handle_cot_start
(
suInstId
,
spInstId
,
circuit
,
globalFlg
,
evntType
,
siStaEvnt
);
handle_cot_start
(
suInstId
,
spInstId
,
circuit
,
globalFlg
,
evntType
,
siStaEvnt
);
break
;
break
;
/**************************************************************************/
/**************************************************************************/
...
@@ -840,7 +892,7 @@ ftdm_status_t handle_sta_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
...
@@ -840,7 +892,7 @@ ftdm_status_t handle_sta_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
break
;
break
;
/**************************************************************************/
/**************************************************************************/
case
SIT_STA_STPCONTIN
:
/* stop continuity */
case
SIT_STA_STPCONTIN
:
/* stop continuity */
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Rx C
OT
stop
\n
"
,
sngss7_info
->
circuit
->
cic
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Rx C
CR
stop
\n
"
,
sngss7_info
->
circuit
->
cic
);
handle_cot_stop
(
suInstId
,
spInstId
,
circuit
,
globalFlg
,
evntType
,
siStaEvnt
);
handle_cot_stop
(
suInstId
,
spInstId
,
circuit
,
globalFlg
,
evntType
,
siStaEvnt
);
break
;
break
;
/**************************************************************************/
/**************************************************************************/
...
@@ -1225,7 +1277,7 @@ ftdm_status_t handle_cot_start(uint32_t suInstId, uint32_t spInstId, uint32_t ci
...
@@ -1225,7 +1277,7 @@ ftdm_status_t handle_cot_start(uint32_t suInstId, uint32_t spInstId, uint32_t ci
/* open the channel if it is not open */
/* open the channel if it is not open */
if
(
!
ftdm_test_flag
(
ftdmchan
,
FTDM_CHANNEL_OPEN
))
{
if
(
!
ftdm_test_flag
(
ftdmchan
,
FTDM_CHANNEL_OPEN
))
{
if
(
ftdm_channel_open_chan
(
ftdmchan
)
!=
FTDM_SUCCESS
)
{
if
(
ftdm_channel_open_chan
(
ftdmchan
)
!=
FTDM_SUCCESS
)
{
SS7_ERROR
(
"Failed to open CIC %d for C
OT
test!
\n
"
,
sngss7_info
->
circuit
->
cic
);
SS7_ERROR
(
"Failed to open CIC %d for C
CR
test!
\n
"
,
sngss7_info
->
circuit
->
cic
);
/* KONRAD FIX ME */
/* KONRAD FIX ME */
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
FTDM_FAIL
;
return
FTDM_FAIL
;
...
@@ -1290,6 +1342,38 @@ ftdm_status_t handle_cot(uint32_t suInstId, uint32_t spInstId, uint32_t circuit,
...
@@ -1290,6 +1342,38 @@ ftdm_status_t handle_cot(uint32_t suInstId, uint32_t spInstId, uint32_t circuit,
{
{
SS7_FUNC_TRACE_ENTER
(
__FUNCTION__
);
SS7_FUNC_TRACE_ENTER
(
__FUNCTION__
);
sngss7_chan_data_t
*
sngss7_info
=
NULL
;
ftdm_channel_t
*
ftdmchan
=
NULL
;
/* get the ftdmchan and ss7_chan_data from the circuit */
if
(
extract_chan_data
(
circuit
,
&
sngss7_info
,
&
ftdmchan
))
{
SS7_ERROR
(
"Failed to extract channel data for circuit = %d!
\n
"
,
circuit
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
FTDM_FAIL
;
}
/* lock the channel */
ftdm_mutex_lock
(
ftdmchan
->
mutex
);
switch
(
ftdmchan
->
state
)
{
/**************************************************************************/
case
(
FTDM_CHANNEL_STATE_IN_LOOP
):
/* tell the core to stop looping the channel */
ftdm_channel_command
(
ftdmchan
,
FTDM_COMMAND_DISABLE_LOOP
,
NULL
);
/* exit out of the LOOP state and go to collect */
ftdm_set_state_locked
(
ftdmchan
,
FTDM_CHANNEL_STATE_COLLECT
);
break
;
/**************************************************************************/
default:
/* exit out of the LOOP state to the last state */
ftdm_set_state_locked
(
ftdmchan
,
ftdmchan
->
last_state
);
break
;
/**************************************************************************/
}
/* switch (ftdmchan->state) */
if
(
(
siStaEvnt
->
contInd
.
eh
.
pres
>
0
)
&&
(
siStaEvnt
->
contInd
.
contInd
.
pres
>
0
))
{
if
(
(
siStaEvnt
->
contInd
.
eh
.
pres
>
0
)
&&
(
siStaEvnt
->
contInd
.
contInd
.
pres
>
0
))
{
SS7_INFO
(
"Continuity Test result for CIC = %d (span %d, chan %d) is:
\"
%s
\"\n
"
,
SS7_INFO
(
"Continuity Test result for CIC = %d (span %d, chan %d) is:
\"
%s
\"\n
"
,
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
circuit
].
cic
,
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
circuit
].
cic
,
...
@@ -1300,13 +1384,13 @@ ftdm_status_t handle_cot(uint32_t suInstId, uint32_t spInstId, uint32_t circuit,
...
@@ -1300,13 +1384,13 @@ ftdm_status_t handle_cot(uint32_t suInstId, uint32_t spInstId, uint32_t circuit,
SS7_ERROR
(
"Recieved Continuity report containing no results!
\n
"
);
SS7_ERROR
(
"Recieved Continuity report containing no results!
\n
"
);
}
}
/* unlock the channel again before we exit */
ftdm_mutex_unlock
(
ftdmchan
->
mutex
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
FTDM_SUCCESS
;
return
FTDM_SUCCESS
;
}
}
/******************************************************************************/
/******************************************************************************/
/******************************************************************************/
ftdm_status_t
handle_blo_req
(
uint32_t
suInstId
,
uint32_t
spInstId
,
uint32_t
circuit
,
uint8_t
globalFlg
,
uint8_t
evntType
,
SiStaEvnt
*
siStaEvnt
)
ftdm_status_t
handle_blo_req
(
uint32_t
suInstId
,
uint32_t
spInstId
,
uint32_t
circuit
,
uint8_t
globalFlg
,
uint8_t
evntType
,
SiStaEvnt
*
siStaEvnt
)
{
{
...
...
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c
浏览文件 @
3ad8a33b
...
@@ -79,7 +79,7 @@ ftdm_state_map_t sangoma_ss7_state_map = {
...
@@ -79,7 +79,7 @@ ftdm_state_map_t sangoma_ss7_state_map = {
ZSD_INBOUND
,
ZSD_INBOUND
,
ZSM_UNACCEPTABLE
,
ZSM_UNACCEPTABLE
,
{
FTDM_CHANNEL_STATE_IDLE
,
FTDM_END
},
{
FTDM_CHANNEL_STATE_IDLE
,
FTDM_END
},
{
FTDM_CHANNEL_STATE_RESTART
,
FTDM_END
}
{
FTDM_CHANNEL_STATE_RESTART
,
FTDM_
CHANNEL_STATE_COLLECT
,
FTDM_
END
}
},
},
{
{
ZSD_INBOUND
,
ZSD_INBOUND
,
...
@@ -100,7 +100,8 @@ ftdm_state_map_t sangoma_ss7_state_map = {
...
@@ -100,7 +100,8 @@ ftdm_state_map_t sangoma_ss7_state_map = {
ZSM_UNACCEPTABLE
,
ZSM_UNACCEPTABLE
,
{
FTDM_CHANNEL_STATE_COLLECT
,
FTDM_END
},
{
FTDM_CHANNEL_STATE_COLLECT
,
FTDM_END
},
{
FTDM_CHANNEL_STATE_SUSPENDED
,
FTDM_CHANNEL_STATE_RESTART
,
{
FTDM_CHANNEL_STATE_SUSPENDED
,
FTDM_CHANNEL_STATE_RESTART
,
FTDM_CHANNEL_STATE_CANCEL
,
FTDM_CHANNEL_STATE_RING
,
FTDM_END
}
FTDM_CHANNEL_STATE_CANCEL
,
FTDM_CHANNEL_STATE_RING
,
FTDM_CHANNEL_STATE_IDLE
,
FTDM_END
}
},
},
{
{
ZSD_INBOUND
,
ZSD_INBOUND
,
...
@@ -526,29 +527,32 @@ void ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
...
@@ -526,29 +527,32 @@ void ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
ftdm_set_state_locked
(
ftdmchan
,
FTDM_CHANNEL_STATE_RING
);
ftdm_set_state_locked
(
ftdmchan
,
FTDM_CHANNEL_STATE_RING
);
}
else
{
}
else
{
SS7_INFO_CHAN
(
ftdmchan
,
"Received %d out of %d so far: %s...starting T35
\n
"
,
/* if we are coming from idle state then we have already been here once before */
i
,
if
(
ftdmchan
->
last_state
!=
FTDM_CHANNEL_STATE_IDLE
)
{
g_ftdm_sngss7_data
.
min_digits
,
SS7_INFO_CHAN
(
ftdmchan
,
"Received %d out of %d so far: %s...starting T35
\n
"
,
ftdmchan
->
caller_data
.
dnis
.
digits
);
i
,
g_ftdm_sngss7_data
.
min_digits
,
/* start ISUP t35 */
ftdmchan
->
caller_data
.
dnis
.
digits
);
if
(
ftdm_sched_timer
(
sngss7_info
->
t35
.
sched
,
"t35"
,
/* start ISUP t35 */
sngss7_info
->
t35
.
beat
,
if
(
ftdm_sched_timer
(
sngss7_info
->
t35
.
sched
,
sngss7_info
->
t35
.
callback
,
"t35"
,
&
sngss7_info
->
t35
,
sngss7_info
->
t35
.
beat
,
&
sngss7_info
->
t35
.
hb_timer_id
))
{
sngss7_info
->
t35
.
callback
,
&
sngss7_info
->
t35
,
SS7_ERROR
(
"Unable to schedule timer, hanging up call!
\n
"
);
&
sngss7_info
->
t35
.
hb_timer_id
))
{
ftdmchan
->
caller_data
.
hangup_cause
=
41
;
SS7_ERROR
(
"Unable to schedule timer, hanging up call!
\n
"
);
/* set the flag to indicate this hangup is started from the local side */
ftdmchan
->
caller_data
.
hangup_cause
=
41
;
sngss7_set_flag
(
sngss7_info
,
FLAG_LOCAL_REL
);
/* set the flag to indicate this hangup is started from the local side */
/* end the call */
sngss7_set_flag
(
sngss7_info
,
FLAG_LOCAL_REL
);
ftdm_set_state_locked
(
ftdmchan
,
FTDM_CHANNEL_STATE_CANCEL
);
}
/* if (ftdm_sched_timer(sngss7_info->t35.sched, */
/* end the call */
ftdm_set_state_locked
(
ftdmchan
,
FTDM_CHANNEL_STATE_CANCEL
);
}
/* if (ftdm_sched_timer(sngss7_info->t35.sched, */
}
/* if (ftdmchan->last_state != FTDM_CHANNEL_STATE_IDLE) */
}
/* checking ST/#digits */
}
/* checking ST/#digits */
break
;
break
;
...
...
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.h
浏览文件 @
3ad8a33b
...
@@ -581,6 +581,8 @@ uint8_t copy_cgPtyNum_to_sngss7(ftdm_caller_data_t *ftdm, SiCgPtyNum *cgPtyNum);
...
@@ -581,6 +581,8 @@ uint8_t copy_cgPtyNum_to_sngss7(ftdm_caller_data_t *ftdm, SiCgPtyNum *cgPtyNum);
uint8_t
copy_cdPtyNum_from_sngss7
(
ftdm_caller_data_t
*
ftdm
,
SiCdPtyNum
*
cdPtyNum
);
uint8_t
copy_cdPtyNum_from_sngss7
(
ftdm_caller_data_t
*
ftdm
,
SiCdPtyNum
*
cdPtyNum
);
uint8_t
copy_cdPtyNum_to_sngss7
(
ftdm_caller_data_t
*
ftdm
,
SiCdPtyNum
*
cdPtyNum
);
uint8_t
copy_cdPtyNum_to_sngss7
(
ftdm_caller_data_t
*
ftdm
,
SiCdPtyNum
*
cdPtyNum
);
uint8_t
copy_tknStr_from_sngss7
(
TknStr
str
,
char
*
ftdm
,
TknU8
oddEven
);
uint8_t
copy_tknStr_from_sngss7
(
TknStr
str
,
char
*
ftdm
,
TknU8
oddEven
);
uint8_t
append_tknStr_from_sngss7
(
TknStr
str
,
char
*
ftdm
,
TknU8
oddEven
);
int
check_for_state_change
(
ftdm_channel_t
*
ftdmchan
);
int
check_for_state_change
(
ftdm_channel_t
*
ftdmchan
);
int
check_cics_in_range
(
sngss7_chan_data_t
*
sngss7_info
);
int
check_cics_in_range
(
sngss7_chan_data_t
*
sngss7_info
);
int
check_for_reset
(
sngss7_chan_data_t
*
sngss7_info
);
int
check_for_reset
(
sngss7_chan_data_t
*
sngss7_info
);
...
...
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_out.c
浏览文件 @
3ad8a33b
...
@@ -341,9 +341,10 @@ void ft_to_sngss7_acm (ftdm_channel_t * ftdmchan)
...
@@ -341,9 +341,10 @@ void ft_to_sngss7_acm (ftdm_channel_t * ftdmchan)
/* fill in any optional parameters */
/* fill in any optional parameters */
if
(
sngss7_test_options
(
isup_intf
,
SNGSS7_ACM_OBCI_BITA
))
{
if
(
sngss7_test_options
(
isup_intf
,
SNGSS7_ACM_OBCI_BITA
))
{
SS7_DEBUG_CHAN
(
ftdmchan
,
"Found ACM_OBCI_BITA flag:0x%X
\n
"
,
isup_intf
->
options
);
acm
.
optBckCalInd
.
eh
.
pres
=
PRSNT_NODEF
;
acm
.
optBckCalInd
.
eh
.
pres
=
PRSNT_NODEF
;
acm
.
optBckCalInd
.
inbndInfoInd
.
pres
=
PRSNT_NODEF
;
acm
.
optBckCalInd
.
inbndInfoInd
.
pres
=
PRSNT_NODEF
;
acm
.
optBckCalInd
.
inbndInfoInd
.
val
=
sngss7_test_options
(
isup_intf
,
SNGSS7_ACM_OBCI_BITA
)
;
acm
.
optBckCalInd
.
inbndInfoInd
.
val
=
0x1
;
acm
.
optBckCalInd
.
caFwdMayOcc
.
pres
=
PRSNT_DEF
;
acm
.
optBckCalInd
.
caFwdMayOcc
.
pres
=
PRSNT_DEF
;
acm
.
optBckCalInd
.
simpleSegmInd
.
pres
=
PRSNT_DEF
;
acm
.
optBckCalInd
.
simpleSegmInd
.
pres
=
PRSNT_DEF
;
acm
.
optBckCalInd
.
mlppUserInd
.
pres
=
PRSNT_DEF
;
acm
.
optBckCalInd
.
mlppUserInd
.
pres
=
PRSNT_DEF
;
...
...
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c
浏览文件 @
3ad8a33b
...
@@ -44,6 +44,7 @@ uint32_t sngss7_id;
...
@@ -44,6 +44,7 @@ uint32_t sngss7_id;
/* PROTOTYPES *****************************************************************/
/* PROTOTYPES *****************************************************************/
uint8_t
copy_tknStr_from_sngss7
(
TknStr
str
,
char
*
ftdm
,
TknU8
oddEven
);
uint8_t
copy_tknStr_from_sngss7
(
TknStr
str
,
char
*
ftdm
,
TknU8
oddEven
);
uint8_t
append_tknStr_from_sngss7
(
TknStr
str
,
char
*
ftdm
,
TknU8
oddEven
);
uint8_t
copy_cgPtyNum_from_sngss7
(
ftdm_caller_data_t
*
ftdm
,
SiCgPtyNum
*
cgPtyNum
);
uint8_t
copy_cgPtyNum_from_sngss7
(
ftdm_caller_data_t
*
ftdm
,
SiCgPtyNum
*
cgPtyNum
);
uint8_t
copy_cgPtyNum_to_sngss7
(
ftdm_caller_data_t
*
ftdm
,
SiCgPtyNum
*
cgPtyNum
);
uint8_t
copy_cgPtyNum_to_sngss7
(
ftdm_caller_data_t
*
ftdm
,
SiCgPtyNum
*
cgPtyNum
);
uint8_t
copy_cdPtyNum_from_sngss7
(
ftdm_caller_data_t
*
ftdm
,
SiCdPtyNum
*
cdPtyNum
);
uint8_t
copy_cdPtyNum_from_sngss7
(
ftdm_caller_data_t
*
ftdm
,
SiCdPtyNum
*
cdPtyNum
);
...
@@ -343,6 +344,49 @@ uint8_t copy_tknStr_from_sngss7(TknStr str, char *ftdm, TknU8 oddEven)
...
@@ -343,6 +344,49 @@ uint8_t copy_tknStr_from_sngss7(TknStr str, char *ftdm, TknU8 oddEven)
return
0
;
return
0
;
}
}
/******************************************************************************/
uint8_t
append_tknStr_from_sngss7
(
TknStr
str
,
char
*
ftdm
,
TknU8
oddEven
)
{
int
i
=
0
;
int
j
=
0
;
/* check if the token string is present */
if
(
str
.
pres
==
1
)
{
/* find the length of the digits so far */
j
=
strlen
(
ftdm
);
/* confirm that we found an acceptable length */
if
(
j
>
25
)
{
SS7_ERROR
(
"string length exceeds maxium value...aborting append!
\n
"
);
return
1
;
}
/* if ( j > 25 ) */
/* copy in digits */
for
(
i
=
0
;
i
<
str
.
len
;
i
++
)
{
/* convert 4 bit integer to char and copy into lower nibblet*/
sprintf
(
&
ftdm
[
j
],
"%X"
,
(
str
.
val
[
i
]
&
0x0F
));
/* move along */
j
++
;
/* convert 4 bit integer to char and copy into upper nibblet */
sprintf
(
&
ftdm
[
j
],
"%X"
,
((
str
.
val
[
i
]
&
0xF0
)
>>
4
));
/* move along */
j
++
;
}
/* for (i = 0; i < str.len; i++) */
/* if the odd flag is up the last digit is a fake "0" */
if
((
oddEven
.
pres
==
1
)
&&
(
oddEven
.
val
==
1
))
{
ftdm
[
j
-
1
]
=
'\0'
;
}
else
{
ftdm
[
j
]
=
'\0'
;
}
/* if ((oddEven.pres == 1) && (oddEven.val == 1)) */
}
else
{
SS7_ERROR
(
"Asked to copy tknStr that is not present!
\n
"
);
return
1
;
}
/* if (str.pres == 1) */
return
0
;
}
/******************************************************************************/
/******************************************************************************/
int
check_for_state_change
(
ftdm_channel_t
*
ftdmchan
)
int
check_for_state_change
(
ftdm_channel_t
*
ftdmchan
)
{
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论