+ /* update mute on RX */
+ if ((p_m_mISDNport->ss5 & SS5_FEATURE_MUTE_RX)) {
+ int mdigit;
+ memcpy(p_m_s_delay_mute, p_m_s_delay_mute+1, sizeof(p_m_s_delay_mute)-1);
+ p_m_s_delay_mute[sizeof(p_m_s_delay_mute)-1] = digit;
+ mdigit = p_m_s_delay_mute[0];
+ if (mdigit == 'A' || mdigit == 'B' || mdigit == 'C')
+ mute = 1;
+ }
+
+ /* mute when TX */
+ if ((p_m_mISDNport->ss5 & SS5_FEATURE_MUTE_TX)) {
+ switch(p_m_s_signal) {
+ case SS5_SIGNAL_SEND_ON_RECOG:
+ case SS5_SIGNAL_RECEIVE_RECOG:
+ if (p_m_s_recog > SS5_DELAY_MUTE)
+ mute = 1;
+ break;
+ case SS5_SIGNAL_SEND_OFF:
+ case SS5_SIGNAL_RECEIVE:
+ mute = 1;
+ break;
+ }
+ }
+
+ /* apply mute state */
+ if (p_m_mute) {
+ /* mute is on */
+ if (!mute)
+ mute_off();
+ } else {
+ /* mute is off */
+ if (mute)
+ mute_on();
+ }
+