From 599f7c3a456a21ca0f42db05d64cd4809e4ab0ea Mon Sep 17 00:00:00 2001
From: Giovanni Maruzzelli <gmaruzz@gmail.com>
Date: Tue, 10 Apr 2012 13:18:49 +0200
Subject: [PATCH] gsmopen: cleaning write-read frame

---
 src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 61 ++++++-------------
 1 file changed, 17 insertions(+), 44 deletions(-)

diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp
index e1afc59e96..62aeba9a13 100644
--- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp
+++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp
@@ -712,12 +712,12 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch
 
 	switch_core_timer_next(&tech_pvt->timer_read);
 
-	if (tech_pvt->no_sound == 1) {
+	if (tech_pvt->no_sound) {
 		goto cng;
 	}
-//  if ((samples = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0)
+	samples = tech_pvt->serialPort_serial_audio->Read(buffer2, 640);
 
-	if ((samples = tech_pvt->serialPort_serial_audio->Read(buffer2, 640)) >= 320) {
+	if (samples >= 320) {
 		tech_pvt->buffer2_full = 0;
 
 		if (samples >= 640) {
@@ -726,20 +726,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch
 			tech_pvt->buffer2_full = 1;
 		}
 		samples = 320;
-
 		memcpy(tech_pvt->read_frame.data, buffer2, 320);
-		tech_pvt->read_frame.datalen = samples;
-		tech_pvt->read_frame.samples = samples / 2;
-
-		tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount;
-
-		*frame = &tech_pvt->read_frame;
-
-		//if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){
-		//  WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2);
-		//}
-		//status = SWITCH_STATUS_SUCCESS;
-		switch_set_flag(tech_pvt, TFLAG_VOICE);
 	} else {
 		DEBUGA_GSMOPEN("MINGA samples=%d\n", GSMOPEN_P_LOG, samples);
 		if (tech_pvt->buffer2_full) {
@@ -747,35 +734,24 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch
 			tech_pvt->buffer2_full = 0;
 			samples = 320;
 			DEBUGA_GSMOPEN("samples=%d FROM BUFFER\n", GSMOPEN_P_LOG, samples);
-
-			tech_pvt->read_frame.datalen = samples;
-			tech_pvt->read_frame.samples = samples / 2;
-
-			tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount;
-
-			*frame = &tech_pvt->read_frame;
-
-			//if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){
-			//  WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2);
-			//}
-			//status = SWITCH_STATUS_SUCCESS;
-			switch_set_flag(tech_pvt, TFLAG_VOICE);
 		}
 
 	}
-	//WARNINGA("samples=%d\n", GSMOPEN_P_LOG, samples);
+
+	tech_pvt->read_frame.datalen = samples;
+	tech_pvt->read_frame.samples = samples / 2;
+	tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount;
+
+	*frame = &tech_pvt->read_frame;
+
+	switch_set_flag(tech_pvt, TFLAG_VOICE);
+
 	if (samples != 320) {
 		DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples);
 		goto cng;
 	}
-//DEBUGA_GSMOPEN("samples=%d tech_pvt->read_frame.timestamp=%d\n", GSMOPEN_P_LOG, samples, tech_pvt->read_frame.timestamp);
-
-//usleep(17000);
-//usleep(17000);
 
 	memset(digit_str, 0, sizeof(digit_str));
-	//teletone_dtmf_detect(&tech_pvt->dtmf_detect, (int16_t *) tech_pvt->read_frame.data, tech_pvt->read_frame.samples);
-	//teletone_dtmf_get(&tech_pvt->dtmf_detect, digit_str, sizeof(digit_str));
 	dtmf_rx(&tech_pvt->dtmf_state, (int16_t *) tech_pvt->read_frame.data, tech_pvt->read_frame.samples);
 	dtmf_rx_get(&tech_pvt->dtmf_state, digit_str, sizeof(digit_str));
 
@@ -875,17 +851,14 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc
 #endif
 
 	//switch_core_timer_next(&tech_pvt->timer_write);
-	//sent = frame->datalen;
-
-	//ERRORA("PLAY \n", GSMOPEN_P_LOG);
-
 	gsmopen_sound_boost(frame->data, frame->samples, tech_pvt->playback_boost);
-	sent = tech_pvt->serialPort_serial_audio->Write((char *) frame->data, (int) (frame->datalen));
+	if(!tech_pvt->no_sound){
+		sent = tech_pvt->serialPort_serial_audio->Write((char *) frame->data, (int) (frame->datalen));
 
-	if (sent && sent != frame->datalen && sent != -1) {
-		DEBUGA_GSMOPEN("sent %d\n", GSMOPEN_P_LOG, sent);
+		if (sent && sent != frame->datalen && sent != -1) {
+			DEBUGA_GSMOPEN("sent %d\n", GSMOPEN_P_LOG, sent);
+		}
 	}
-	//NOTICA("sent=%d\n", GSMOPEN_P_LOG, sent);
 	return SWITCH_STATUS_SUCCESS;
 }