]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: E&M: Set the line offhook when suspended
authorMoises Silva <moy@sangoma.com>
Mon, 4 Nov 2013 01:22:41 +0000 (20:22 -0500)
committerMoises Silva <moy@sangoma.com>
Fri, 8 Nov 2013 07:22:36 +0000 (02:22 -0500)
libs/freetdm/src/ftmod/ftmod_analog_em/ftmod_analog_em.c

index fd9c36dadf10e6cf64f3e319e98937989baa73c2..fdeb67f4b979e138c1306df05808fe37b25b3b7c 100644 (file)
@@ -291,13 +291,23 @@ static FIO_CHANNEL_SET_SIG_STATUS_FUNCTION(analog_em_set_channel_sig_status)
                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);
                        }