- /* send dialing information */
- message = message_create(p_serial, ACTIVE_EPOINT(p_epointlist), PORT_TO_EPOINT, MESSAGE_INFORMATION);
- memcpy(&message->param.information, &p_dialinginfo, sizeof(struct dialing_info));
- message_put(message);
+ if (p_g_rtp_bridge) {
+ class Port *remote = bridge_remote();
+
+ if (remote) {
+ struct lcr_msg *message;
+
+ /* send dtmf information, because we bridge RTP directly */
+ message = message_create(0, remote->p_serial, EPOINT_TO_PORT, MESSAGE_DTMF);
+ message->param.dtmf = mncc->keypad;
+ message_put(message);
+ }
+ } else {
+ /* generate DTMF tones, since we do audio forwarding inside LCR */
+ switch (mncc->keypad) {
+ case '1': p_g_dtmf = dtmf_samples[0]; break;
+ case '2': p_g_dtmf = dtmf_samples[1]; break;
+ case '3': p_g_dtmf = dtmf_samples[2]; break;
+ case 'a':
+ case 'A': p_g_dtmf = dtmf_samples[3]; break;
+ case '4': p_g_dtmf = dtmf_samples[4]; break;
+ case '5': p_g_dtmf = dtmf_samples[5]; break;
+ case '6': p_g_dtmf = dtmf_samples[6]; break;
+ case 'b':
+ case 'B': p_g_dtmf = dtmf_samples[7]; break;
+ case '7': p_g_dtmf = dtmf_samples[8]; break;
+ case '8': p_g_dtmf = dtmf_samples[9]; break;
+ case '9': p_g_dtmf = dtmf_samples[10]; break;
+ case 'c':
+ case 'C': p_g_dtmf = dtmf_samples[11]; break;
+ case '*': p_g_dtmf = dtmf_samples[12]; break;
+ case '0': p_g_dtmf = dtmf_samples[13]; break;
+ case '#': p_g_dtmf = dtmf_samples[14]; break;
+ case 'd':
+ case 'D': p_g_dtmf = dtmf_samples[15]; break;
+ }
+ p_g_dtmf_index = 0;
+ }