return FTDM_FAIL;
case FTDM_SIG_STATE_SUSPENDED:
if (!ftdm_test_flag(ftdmchan, FTDM_CHANNEL_SUSPENDED)) {
+ int cas_bits = 0xFF;
ftdm_set_flag(ftdmchan, FTDM_CHANNEL_SUSPENDED);
+ ftdm_channel_command(ftdmchan, FTDM_COMMAND_SET_CAS_BITS, &cas_bits);
+ if (!ftdm_test_flag(ftdmchan, FTDM_CHANNEL_OFFHOOK)) {
+ ftdm_channel_command(ftdmchan, FTDM_COMMAND_OFFHOOK, NULL);
+ }
ftdm_analog_set_chan_sig_status(ftdmchan, FTDM_SIG_STATE_SUSPENDED);
}
break;
case FTDM_SIG_STATE_UP:
if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_SUSPENDED)) {
+ int cas_bits = 0x00;
ftdm_clear_flag(ftdmchan, FTDM_CHANNEL_SUSPENDED);
+ ftdm_channel_command(ftdmchan, FTDM_COMMAND_SET_CAS_BITS, &cas_bits);
+ if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_OFFHOOK)) {
+ ftdm_channel_command(ftdmchan, FTDM_COMMAND_ONHOOK, NULL);
+ }
if (!ftdm_test_flag(ftdmchan, FTDM_CHANNEL_IN_ALARM)) {
ftdm_analog_set_chan_sig_status(ftdmchan, FTDM_SIG_STATE_UP);
}