Make LCR work with the current openbsc lcr_rtp branch. (soon merged with master branch)
[lcr.git] / ss5.cpp
diff --git a/ss5.cpp b/ss5.cpp
index d038769..0d453e4 100644 (file)
--- a/ss5.cpp
+++ b/ss5.cpp
@@ -35,6 +35,8 @@
 
 #include "main.h"
 
+//#define DEBUG_DETECT
+
 /* ss5 signal states */
 enum {
        SS5_STATE_IDLE,                 /* no signal */
@@ -225,13 +227,13 @@ static void ss5_trace_header(struct mISDNport *mISDNport, class PmISDN *port, un
 
 
 /*
- * changes release tone int busy signal
- * this makes the line more authentic
+ * changes release tone into silence
+ * this makes the line sound more authentic
  */
 void Pss5::set_tone(const char *dir, const char *name)
 {
        if (name && !strcmp(name, "cause_10"))
-               name = "busy";
+               name = NULL;
 
        PmISDN::set_tone(dir, name);
 }
@@ -504,7 +506,6 @@ void Pss5::inband_receive(unsigned char *buffer, int len)
                        PDEBUG(DEBUG_SS5, "%s: received clear-forward in idle state, waiting for recognition\n", p_name);
                        break;
                }
-               new_state(PORT_STATE_RELEASE);
                new_ss5_state(SS5_STATE_RELEASE_GUARD);
                new_ss5_signal(SS5_SIGNAL_RECEIVE_RECOG);
                p_m_s_recog = 0;
@@ -795,6 +796,7 @@ void Pss5::inband_receive(unsigned char *buffer, int len)
                                PDEBUG(DEBUG_SS5, "%s: incomming release-guard is recognized, responding...\n", p_name);
                        else
                                PDEBUG(DEBUG_SS5, "%s: incomming clear-forward is recognized, responding...\n", p_name);
+                       new_state(PORT_STATE_RELEASE);
                        new_ss5_signal(SS5_SIGNAL_RECEIVE);
                        p_m_s_sample_nr = 0;
                        inband_send_on();
@@ -1264,6 +1266,7 @@ void Pss5::seizing_ind(void)
        end_trace();
 
        new_state(PORT_STATE_IN_SETUP);
+       set_tone("", "noise");
 }
 
 void Pss5::digit_ind(char digit)