If a bridge is enabled, tones (e.g. hangup tone) will have priority
over the bridge. The bridge will continue to forward audio, after
tone is removed. (e.g after beeing on hold music)
/* send traffic to gsm */
int Pgsm::bridge_rx(unsigned char *data, int len)
{
+ if (p_tone_name[0])
+ return -EINVAL;
+
+ return audio_send(data, len);
+}
+
+int Pgsm::audio_send(unsigned char *data, int len)
+{
unsigned char frame[33];
/* encoder init failed */
void frame_send(void *_frame);
void frame_receive(void *_frame);
+ int audio_send(unsigned char *data, int len);
int bridge_rx(unsigned char *data, int len);
int hunt_bchannel(void);
} else
pgsm_bs->frame_receive(arg);
/* if we do not bridge we need to inject audio, if available */
- if (!pgsm_bs->p_bridge) {
+ if (!pgsm_bs->p_bridge || pgsm_bs->p_tone_name[0]) {
unsigned char data[160];
int i;
i = pgsm_bs->read_audio(data, 160);
if (i)
- pgsm_bs->bridge_rx(data, i);
+ pgsm_bs->audio_send(data, i);
}
}
return 0;