dialogic的问题 ( 积分: 100 )

  • 主题发起人 主题发起人 babysheep
  • 开始时间 开始时间
B

babysheep

Unregistered / Unconfirmed
GUEST, unregistred user!
想问一些关于dialogic的问题。这两天正为一个函数发愁,就是ATDX_STATE(),这个函数在手册上有很清楚的解释和例子,但是应用起来却没有达到我想要的效果。我想侦测某个通道的当前状态(主要是空闲、来电、用户挂机)。我主要是通过下面的方法来做的。
首先初始化(举个例子):
void sysinit(void)
{
int channel =1;
dxinfo[channel].devhandle = dx_open( "dxxxB1C1", 0 )
}
接着在另外的地方调用ATDX_STATE:
int getstate(int channel)
{
long channelstate;
channelstate = ATDX_STATE(dxinfo[ channel ].devhandle);
switch(channelstate)
{
case CS_CALL:return 2;
case CS_HOOK:return 7;
case CS_IDLE:return 0;
case CS_DIAL:return 11;
case CS_GTDIG:return 12;
case CS_PLAY:return 13;
case CS_RECD:return 14;
case CS_STOPD:return 15;
case CS_TONE:return 16;
case CS_WINK:return 17;
default:return 1;
}
}
但是不管是打电话进来也好,怎么也好,ATDX_STATE返回的始终都是0,IDLE状态。
我用了其他的方法测试,比如用sr_wait()函数来获取event,然后用chdev = sr_getevtdev();来获取设备,再调用event = sr_getevttype();来判断事件类型,得到正确的结果。但是,我需要的是获取某个通道上的状态,如果那个通道没有event发生,用后面的方法就没有作用了,这个问题困扰了我很久了,希望能够得到解决,谢谢。
 
想问一些关于dialogic的问题。这两天正为一个函数发愁,就是ATDX_STATE(),这个函数在手册上有很清楚的解释和例子,但是应用起来却没有达到我想要的效果。我想侦测某个通道的当前状态(主要是空闲、来电、用户挂机)。我主要是通过下面的方法来做的。
首先初始化(举个例子):
void sysinit(void)
{
int channel =1;
dxinfo[channel].devhandle = dx_open( "dxxxB1C1", 0 )
}
接着在另外的地方调用ATDX_STATE:
int getstate(int channel)
{
long channelstate;
channelstate = ATDX_STATE(dxinfo[ channel ].devhandle);
switch(channelstate)
{
case CS_CALL:return 2;
case CS_HOOK:return 7;
case CS_IDLE:return 0;
case CS_DIAL:return 11;
case CS_GTDIG:return 12;
case CS_PLAY:return 13;
case CS_RECD:return 14;
case CS_STOPD:return 15;
case CS_TONE:return 16;
case CS_WINK:return 17;
default:return 1;
}
}
但是不管是打电话进来也好,怎么也好,ATDX_STATE返回的始终都是0,IDLE状态。
我用了其他的方法测试,比如用sr_wait()函数来获取event,然后用chdev = sr_getevtdev();来获取设备,再调用event = sr_getevttype();来判断事件类型,得到正确的结果。但是,我需要的是获取某个通道上的状态,如果那个通道没有event发生,用后面的方法就没有作用了,这个问题困扰了我很久了,希望能够得到解决,谢谢。
 
通道上的状态一定要有个地方保留,或者硬件也行(每隔一定时间去读)。不然就监控所有的事件,没有事件发生那么就是初使状态了。
 
确定了状态的种类,有些状态可以明确监控,就使用排除法,剩下的就是
不可监控的状态。
 
后退
顶部