Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
F
freeswitch
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
张华
freeswitch
Commits
c9ee4fab
提交
c9ee4fab
authored
2月 14, 2011
作者:
Moises Silva
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
freetdm: remove deprecated channel variables code
上级
c0e340b1
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
41 行增加
和
184 行删除
+41
-184
mod_freetdm.c
libs/freetdm/mod_freetdm/mod_freetdm.c
+3
-11
ftdm_io.c
libs/freetdm/src/ftdm_io.c
+2
-115
ftmod_sangoma_ss7_out.c
...eetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_out.c
+18
-18
freetdm.h
libs/freetdm/src/include/freetdm.h
+0
-39
ftdm_core.h
libs/freetdm/src/include/private/ftdm_core.h
+18
-1
没有找到文件。
libs/freetdm/mod_freetdm/mod_freetdm.c
浏览文件 @
c9ee4fab
...
...
@@ -1552,6 +1552,8 @@ ftdm_status_t ftdm_channel_from_event(ftdm_sigmsg_t *sigmsg, switch_core_session
switch_channel_set_variable_printf
(
channel
,
"freetdm_chan_number"
,
"%d"
,
chanid
);
switch_channel_set_variable_printf
(
channel
,
"freetdm_bearer_capability"
,
"%d"
,
channel_caller_data
->
bearer_capability
);
switch_channel_set_variable_printf
(
channel
,
"freetdm_bearer_layer1"
,
"%d"
,
channel_caller_data
->
bearer_layer1
);
switch_channel_set_variable_printf
(
channel
,
"freetdm_screening_ind"
,
ftdm_screening2str
(
channel_caller_data
->
screen
));
switch_channel_set_variable_printf
(
channel
,
"freetdm_presentation_ind"
,
ftdm_presentation2str
(
channel_caller_data
->
pres
));
if
(
globals
.
sip_headers
)
{
switch_channel_set_variable
(
channel
,
"sip_h_X-FreeTDM-SpanName"
,
ftdm_channel_get_span_name
(
sigmsg
->
channel
));
...
...
@@ -1580,21 +1582,13 @@ ftdm_status_t ftdm_channel_from_event(ftdm_sigmsg_t *sigmsg, switch_core_session
if
(
channel_caller_data
->
raw_data_len
)
{
switch_channel_set_variable_printf
(
channel
,
"freetdm_custom_call_data"
,
"%s"
,
channel_caller_data
->
raw_data
);
}
/* Add any channel variable to the dial plan */
iter
=
ftdm_channel_get_var_iterator
(
sigmsg
->
channel
,
NULL
);
for
(
curr
=
iter
;
curr
;
curr
=
ftdm_iterator_next
(
curr
))
{
ftdm_channel_get_current_var
(
curr
,
&
var_name
,
&
var_value
);
snprintf
(
name
,
sizeof
(
name
),
FREETDM_VAR_PREFIX
"%s"
,
var_name
);
switch_channel_set_variable_printf
(
channel
,
name
,
"%s"
,
var_value
);
}
/* Add any call variable to the dial plan */
iter
=
ftdm_call_get_var_iterator
(
channel_caller_data
,
iter
);
for
(
curr
=
iter
;
curr
;
curr
=
ftdm_iterator_next
(
curr
))
{
ftdm_call_get_current_var
(
curr
,
&
var_name
,
&
var_value
);
snprintf
(
name
,
sizeof
(
name
),
FREETDM_VAR_PREFIX
"%s"
,
var_name
);
switch_channel_set_variable_printf
(
channel
,
name
,
"%s"
,
var_value
);
switch_log_printf
(
SWITCH_CHANNEL_LOG
,
SWITCH_LOG_DEBUG
,
"Call Variable: %s
=
%s
\n
"
,
name
,
var_value
);
switch_log_printf
(
SWITCH_CHANNEL_LOG
,
SWITCH_LOG_DEBUG
,
"Call Variable: %s
=
%s
\n
"
,
name
,
var_value
);
}
ftdm_iterator_free
(
iter
);
...
...
@@ -2149,8 +2143,6 @@ static FIO_SIGNAL_CB_FUNCTION(on_clear_channel_signal)
switch
(
sigmsg
->
event_id
)
{
case
FTDM_SIGEVENT_START
:
{
ftdm_call_add_var
(
caller_data
,
"screening_ind"
,
ftdm_screening2str
(
caller_data
->
screen
));
ftdm_call_add_var
(
caller_data
,
"presentation_ind"
,
ftdm_presentation2str
(
caller_data
->
pres
));
return
ftdm_channel_from_event
(
sigmsg
,
&
session
);
}
break
;
...
...
libs/freetdm/src/ftdm_io.c
浏览文件 @
c9ee4fab
...
...
@@ -65,7 +65,6 @@ ftdm_time_t time_current_throttle_log = 0;
static
ftdm_iterator_t
*
get_iterator
(
ftdm_iterator_type_t
type
,
ftdm_iterator_t
*
iter
);
static
ftdm_status_t
ftdm_call_set_call_id
(
ftdm_channel_t
*
fchan
,
ftdm_caller_data_t
*
caller_data
);
static
ftdm_status_t
ftdm_call_clear_call_id
(
ftdm_caller_data_t
*
caller_data
);
static
ftdm_status_t
ftdm_channel_clear_vars
(
ftdm_channel_t
*
ftdmchan
);
static
ftdm_status_t
ftdm_channel_done
(
ftdm_channel_t
*
ftdmchan
);
static
int
time_is_init
=
0
;
...
...
@@ -2633,7 +2632,6 @@ static ftdm_status_t ftdm_channel_done(ftdm_channel_t *ftdmchan)
ftdm_buffer_destroy
(
&
ftdmchan
->
pre_buffer
);
ftdmchan
->
pre_buffer_size
=
0
;
ftdm_mutex_unlock
(
ftdmchan
->
pre_buffer_mutex
);
ftdm_channel_clear_vars
(
ftdmchan
);
if
(
ftdmchan
->
hangup_timer
)
{
ftdm_sched_cancel_timer
(
globals
.
timingsched
,
ftdmchan
->
hangup_timer
);
}
...
...
@@ -4033,20 +4031,13 @@ done:
}
FT_DECLARE
(
void
)
ftdm_call_clear_data
(
ftdm_caller_data_t
*
caller_data
)
{
ftdm_call_clear_vars
(
caller_data
);
memset
(
&
caller_data
->
raw_data
,
0
,
sizeof
(
caller_data
->
raw_data
));
caller_data
->
raw_data_len
=
0
;
return
;
}
FT_DECLARE
(
ftdm_status_t
)
ftdm_call_clear_vars
(
ftdm_caller_data_t
*
caller_data
)
{
if
(
caller_data
->
variables
)
{
hashtable_destroy
(
caller_data
->
variables
);
}
caller_data
->
variables
=
NULL
;
return
FTDM_SUCCESS
;
memset
(
&
caller_data
->
raw_data
,
0
,
sizeof
(
caller_data
->
raw_data
));
caller_data
->
raw_data_len
=
0
;
}
FT_DECLARE
(
ftdm_status_t
)
ftdm_call_remove_var
(
ftdm_caller_data_t
*
caller_data
,
const
char
*
var_name
)
...
...
@@ -4058,7 +4049,6 @@ FT_DECLARE(ftdm_status_t) ftdm_call_remove_var(ftdm_caller_data_t *caller_data,
return
FTDM_SUCCESS
;
}
FT_DECLARE
(
ftdm_status_t
)
ftdm_call_add_var
(
ftdm_caller_data_t
*
caller_data
,
const
char
*
var_name
,
const
char
*
value
)
{
char
*
t_name
=
0
,
*
t_val
=
0
;
...
...
@@ -4125,72 +4115,6 @@ FT_DECLARE(ftdm_status_t) ftdm_call_get_current_var(ftdm_iterator_t *iter, const
return
FTDM_SUCCESS
;
}
static
ftdm_status_t
ftdm_channel_clear_vars
(
ftdm_channel_t
*
ftdmchan
)
{
ftdm_channel_lock
(
ftdmchan
);
if
(
ftdmchan
->
variable_hash
)
{
hashtable_destroy
(
ftdmchan
->
variable_hash
);
}
ftdmchan
->
variable_hash
=
NULL
;
ftdm_channel_unlock
(
ftdmchan
);
return
FTDM_SUCCESS
;
}
FT_DECLARE
(
ftdm_status_t
)
ftdm_channel_add_var
(
ftdm_channel_t
*
ftdmchan
,
const
char
*
var_name
,
const
char
*
value
)
{
char
*
t_name
=
0
,
*
t_val
=
0
;
ftdm_status_t
status
=
FTDM_FAIL
;
if
(
!
var_name
||
!
value
)
{
return
FTDM_FAIL
;
}
ftdm_channel_lock
(
ftdmchan
);
if
(
!
ftdmchan
->
variable_hash
)
{
/* initialize on first use */
ftdmchan
->
variable_hash
=
create_hashtable
(
16
,
ftdm_hash_hashfromstring
,
ftdm_hash_equalkeys
);
if
(
!
ftdmchan
->
variable_hash
)
{
goto
done
;
}
}
t_name
=
ftdm_strdup
(
var_name
);
t_val
=
ftdm_strdup
(
value
);
hashtable_insert
(
ftdmchan
->
variable_hash
,
t_name
,
t_val
,
HASHTABLE_FLAG_FREE_KEY
|
HASHTABLE_FLAG_FREE_VALUE
);
status
=
FTDM_SUCCESS
;
done
:
ftdm_channel_unlock
(
ftdmchan
);
return
status
;
}
FT_DECLARE
(
const
char
*
)
ftdm_channel_get_var
(
ftdm_channel_t
*
ftdmchan
,
const
char
*
var_name
)
{
const
char
*
var
=
NULL
;
ftdm_channel_lock
(
ftdmchan
);
if
(
!
ftdmchan
->
variable_hash
||
!
var_name
)
{
goto
done
;
}
var
=
(
const
char
*
)
hashtable_search
(
ftdmchan
->
variable_hash
,
(
void
*
)
var_name
);
done
:
ftdm_channel_unlock
(
ftdmchan
);
return
var
;
}
static
ftdm_iterator_t
*
get_iterator
(
ftdm_iterator_type_t
type
,
ftdm_iterator_t
*
iter
)
{
int
allocated
=
0
;
...
...
@@ -4215,25 +4139,6 @@ static ftdm_iterator_t *get_iterator(ftdm_iterator_type_t type, ftdm_iterator_t
return
iter
;
}
FT_DECLARE
(
ftdm_iterator_t
*
)
ftdm_channel_get_var_iterator
(
const
ftdm_channel_t
*
ftdmchan
,
ftdm_iterator_t
*
iter
)
{
ftdm_hash_iterator_t
*
hashiter
=
NULL
;
ftdm_channel_lock
(
ftdmchan
);
hashiter
=
ftdmchan
->
variable_hash
==
NULL
?
NULL
:
hashtable_first
(
ftdmchan
->
variable_hash
);
ftdm_channel_unlock
(
ftdmchan
);
if
(
hashiter
==
NULL
)
{
return
NULL
;
}
if
(
!
(
iter
=
get_iterator
(
FTDM_ITERATOR_VARS
,
iter
)))
{
return
NULL
;
}
iter
->
pvt
.
hashiter
=
hashiter
;
return
iter
;
}
FT_DECLARE
(
ftdm_iterator_t
*
)
ftdm_span_get_chan_iterator
(
const
ftdm_span_t
*
span
,
ftdm_iterator_t
*
iter
)
{
if
(
!
(
iter
=
get_iterator
(
FTDM_ITERATOR_CHANS
,
iter
)))
{
...
...
@@ -4244,24 +4149,6 @@ FT_DECLARE(ftdm_iterator_t *) ftdm_span_get_chan_iterator(const ftdm_span_t *spa
return
iter
;
}
FT_DECLARE
(
ftdm_status_t
)
ftdm_channel_get_current_var
(
ftdm_iterator_t
*
iter
,
const
char
**
var_name
,
const
char
**
var_val
)
{
const
void
*
key
=
NULL
;
void
*
val
=
NULL
;
*
var_name
=
NULL
;
*
var_val
=
NULL
;
ftdm_assert_return
(
iter
&&
(
iter
->
type
==
FTDM_ITERATOR_VARS
)
&&
iter
->
pvt
.
hashiter
,
FTDM_FAIL
,
"Cannot get variable from invalid iterator!
\n
"
);
hashtable_this
(
iter
->
pvt
.
hashiter
,
&
key
,
NULL
,
&
val
);
*
var_name
=
key
;
*
var_val
=
val
;
return
FTDM_SUCCESS
;
}
FT_DECLARE
(
ftdm_iterator_t
*
)
ftdm_iterator_next
(
ftdm_iterator_t
*
iter
)
{
ftdm_assert_return
(
iter
&&
iter
->
type
,
NULL
,
"Invalid iterator
\n
"
);
...
...
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_out.c
浏览文件 @
c9ee4fab
...
...
@@ -299,7 +299,7 @@ void ft_to_sngss7_iam (ftdm_channel_t * ftdmchan)
ftdmchan
->
caller_data
.
dnis
.
digits
,
iam
.
cdPtyNum
.
natAddrInd
.
val
);
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -379,7 +379,7 @@ void ft_to_sngss7_acm (ftdm_channel_t * ftdmchan)
ADDRCMPLT
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Tx ACM
\n
"
,
sngss7_info
->
circuit
->
cic
);
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -403,7 +403,7 @@ void ft_to_sngss7_anm (ftdm_channel_t * ftdmchan)
5
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Tx ANM
\n
"
,
sngss7_info
->
circuit
->
cic
);
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -438,7 +438,7 @@ void ft_to_sngss7_rel (ftdm_channel_t * ftdmchan)
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Tx REL cause=%d
\n
"
,
sngss7_info
->
circuit
->
cic
,
ftdmchan
->
caller_data
.
hangup_cause
);
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -461,7 +461,7 @@ void ft_to_sngss7_rlc (ftdm_channel_t * ftdmchan)
&
rlc
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Tx RLC
\n
"
,
sngss7_info
->
circuit
->
cic
);
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -482,7 +482,7 @@ void ft_to_sngss7_rsc (ftdm_channel_t * ftdmchan)
NULL
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Tx RSC
\n
"
,
sngss7_info
->
circuit
->
cic
);
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -503,7 +503,7 @@ void ft_to_sngss7_rsca (ftdm_channel_t * ftdmchan)
NULL
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Tx RSC-RLC
\n
"
,
sngss7_info
->
circuit
->
cic
);
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -524,7 +524,7 @@ void ft_to_sngss7_blo (ftdm_channel_t * ftdmchan)
NULL
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Tx BLO
\n
"
,
sngss7_info
->
circuit
->
cic
);
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -545,7 +545,7 @@ void ft_to_sngss7_bla (ftdm_channel_t * ftdmchan)
NULL
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Tx BLA
\n
"
,
sngss7_info
->
circuit
->
cic
);
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -567,7 +567,7 @@ ft_to_sngss7_ubl (ftdm_channel_t * ftdmchan)
NULL
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Tx UBL
\n
"
,
sngss7_info
->
circuit
->
cic
);
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -588,7 +588,7 @@ void ft_to_sngss7_uba (ftdm_channel_t * ftdmchan)
NULL
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Tx UBA
\n
"
,
sngss7_info
->
circuit
->
cic
);
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -609,7 +609,7 @@ void ft_to_sngss7_lpa (ftdm_channel_t * ftdmchan)
NULL
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Tx LPA
\n
"
,
sngss7_info
->
circuit
->
cic
);
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -654,7 +654,7 @@ void ft_to_sngss7_gra (ftdm_channel_t * ftdmchan)
sngss7_info
->
circuit
->
cic
,
(
sngss7_info
->
circuit
->
cic
+
sngss7_span
->
rx_grs
.
range
));
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -688,7 +688,7 @@ void ft_to_sngss7_grs (ftdm_channel_t * ftdmchan)
sngss7_info
->
circuit
->
cic
,
(
sngss7_info
->
circuit
->
cic
+
sngss7_span
->
tx_grs
.
range
));
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -737,7 +737,7 @@ void ft_to_sngss7_cgba(ftdm_channel_t * ftdmchan)
/* clean out the saved data */
memset
(
&
sngss7_span
->
rx_cgb
,
0x0
,
sizeof
(
sngss7_group_data_t
));
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -787,7 +787,7 @@ void ft_to_sngss7_cgua(ftdm_channel_t * ftdmchan)
/* clean out the saved data */
memset
(
&
sngss7_span
->
rx_cgu
,
0x0
,
sizeof
(
sngss7_group_data_t
));
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -838,7 +838,7 @@ void ft_to_sngss7_cgb(ftdm_channel_t * ftdmchan)
/* clean out the saved data */
memset
(
&
sngss7_span
->
tx_cgb
,
0x0
,
sizeof
(
sngss7_group_data_t
));
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
@@ -889,7 +889,7 @@ void ft_to_sngss7_cgu(ftdm_channel_t * ftdmchan)
/* clean out the saved data */
memset
(
&
sngss7_span
->
tx_cgu
,
0x0
,
sizeof
(
sngss7_group_data_t
));
ftdm_call_clear_
vars
(
&
ftdmchan
->
caller_data
);
ftdm_call_clear_
data
(
&
ftdmchan
->
caller_data
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
return
;
}
...
...
libs/freetdm/src/include/freetdm.h
浏览文件 @
c9ee4fab
...
...
@@ -1368,34 +1368,12 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_read(ftdm_channel_t *ftdmchan, void *data
*/
FT_DECLARE
(
ftdm_status_t
)
ftdm_channel_write
(
ftdm_channel_t
*
ftdmchan
,
void
*
data
,
ftdm_size_t
datasize
,
ftdm_size_t
*
datalen
);
/*! \brief Add a custom variable to the channel
* \note This variables may be used by signaling modules to override signaling parameters
* \todo Document which signaling variables are available
* */
FT_DECLARE
(
ftdm_status_t
)
ftdm_channel_add_var
(
ftdm_channel_t
*
ftdmchan
,
const
char
*
var_name
,
const
char
*
value
);
/*! \brief Get a custom variable from the channel.
* \note The variable pointer returned is only valid while the channel is open and it'll be destroyed when the channel is closed. */
FT_DECLARE
(
const
char
*
)
ftdm_channel_get_var
(
ftdm_channel_t
*
ftdmchan
,
const
char
*
var_name
);
/*! \brief Get an iterator to iterate over the channel variables
* \param ftdmchan The channel structure containing the variables
* \param iter Optional iterator. You can reuse an old iterator (not previously freed) to avoid the extra allocation of a new iterator.
* \note The iterator pointer returned is only valid while the channel is open and it'll be destroyed when the channel is closed.
* This iterator is completely non-thread safe, if you are adding variables or removing variables while iterating
* results are unpredictable
*/
FT_DECLARE
(
ftdm_iterator_t
*
)
ftdm_channel_get_var_iterator
(
const
ftdm_channel_t
*
ftdmchan
,
ftdm_iterator_t
*
iter
);
/*! \brief Get iterator current value (depends on the iterator type)
* \note Channel iterators return a pointer to ftdm_channel_t
* Variable iterators return a pointer to the variable name (not the variable value)
*/
FT_DECLARE
(
void
*
)
ftdm_iterator_current
(
ftdm_iterator_t
*
iter
);
/*! \brief Get variable name and value for the current iterator position */
FT_DECLARE
(
ftdm_status_t
)
ftdm_channel_get_current_var
(
ftdm_iterator_t
*
iter
,
const
char
**
var_name
,
const
char
**
var_val
);
/*! \brief Advance iterator */
FT_DECLARE
(
ftdm_iterator_t
*
)
ftdm_iterator_next
(
ftdm_iterator_t
*
iter
);
...
...
@@ -1426,23 +1404,6 @@ FT_DECLARE(ftdm_iterator_t *) ftdm_call_get_var_iterator(const ftdm_caller_data_
/*! \brief Get variable name and value for the current iterator position */
FT_DECLARE
(
ftdm_status_t
)
ftdm_call_get_current_var
(
ftdm_iterator_t
*
iter
,
const
char
**
var_name
,
const
char
**
var_val
);
/*! \brief Clear all variables attached to the call
* \note Variables are cleared at the end of each call back, so it is not necessary for the user to call this function.
* \todo Document which signaling variables are available
* */
FT_DECLARE
(
ftdm_status_t
)
ftdm_call_clear_vars
(
ftdm_caller_data_t
*
caller_data
);
/*! \brief Remove a variable attached to the call
* \note Removes a variable that was attached to the call.
* \todo Document which call variables are available
* */
FT_DECLARE
(
ftdm_status_t
)
ftdm_call_remove_var
(
ftdm_caller_data_t
*
caller_data
,
const
char
*
var_name
);
/*! \brief Clears all the temporary data attached to this call
* \note Clears caller_data->variables and caller_data->raw_data.
* */
FT_DECLARE
(
void
)
ftdm_call_clear_data
(
ftdm_caller_data_t
*
caller_data
);
/*! \brief Get the span pointer associated to the channel */
FT_DECLARE
(
ftdm_span_t
*
)
ftdm_channel_get_span
(
const
ftdm_channel_t
*
ftdmchan
);
...
...
libs/freetdm/src/include/private/ftdm_core.h
浏览文件 @
c9ee4fab
...
...
@@ -451,7 +451,6 @@ struct ftdm_channel {
struct
ftdm_caller_data
caller_data
;
struct
ftdm_span
*
span
;
struct
ftdm_io_interface
*
fio
;
ftdm_hash_t
*
variable_hash
;
unsigned
char
rx_cas_bits
;
uint32_t
pre_buffer_size
;
uint8_t
rxgain_table
[
FTDM_GAINS_TABLE_SIZE
];
...
...
@@ -629,6 +628,24 @@ FT_DECLARE(void) ftdm_channel_clear_detected_tones(ftdm_channel_t *ftdmchan);
FT_DECLARE
(
void
)
ftdm_set_echocancel_call_begin
(
ftdm_channel_t
*
chan
);
FT_DECLARE
(
void
)
ftdm_set_echocancel_call_end
(
ftdm_channel_t
*
chan
);
/*! \brief Clear all variables attached to the call
* \note Variables are cleared at the end of each call back, so it is not necessary for the user to call this function.
* \todo Document which signaling variables are available
* */
FT_DECLARE
(
ftdm_status_t
)
ftdm_call_clear_vars
(
ftdm_caller_data_t
*
caller_data
);
/*! \brief Remove a variable attached to the call
* \note Removes a variable that was attached to the call.
* \todo Document which call variables are available
* */
FT_DECLARE
(
ftdm_status_t
)
ftdm_call_remove_var
(
ftdm_caller_data_t
*
caller_data
,
const
char
*
var_name
);
/*! \brief Clears all the temporary data attached to this call
* \note Clears caller_data->variables and caller_data->raw_data.
* */
FT_DECLARE
(
void
)
ftdm_call_clear_data
(
ftdm_caller_data_t
*
caller_data
);
/*!
\brief Assert condition
*/
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论