Modified: freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen.h (16154 => 16155)
--- freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen.h 2010-01-05 15:55:24 UTC (rev 16154)
+++ freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen.h 2010-01-05 18:22:58 UTC (rev 16155)
@@ -445,6 +445,8 @@
teletone_dtmf_detect_state_t dtmf_detect;
switch_time_t old_dtmf_timestamp;
+ int no_sound;
+
};
typedef struct private_object private_t;
Modified: freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen_protocol.cpp (16154 => 16155)
--- freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen_protocol.cpp 2010-01-05 15:55:24 UTC (rev 16154)
+++ freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen_protocol.cpp 2010-01-05 18:22:58 UTC (rev 16155)
@@ -2725,6 +2725,9 @@
snd_pcm_sframes_t delayp1;
snd_pcm_sframes_t delayp2;
+ if(tech_pvt->no_sound==1){
+ return res;
+ }
//ERRORA("data=%p, datalen=%d\n", GSMOPEN_P_LOG, (void *)data, datalen);
/* We have to digest the frame in 160-byte portions */
if (datalen > sizeof(sizbuf) - sizpos) {
@@ -2940,6 +2943,9 @@
+ if(tech_pvt->no_sound==1){
+ return r;
+ }
left = datalen;
Modified: freeswitch/branches/gmaruzz/mod_gsmopen/mod_gsmopen.cpp (16154 => 16155)
--- freeswitch/branches/gmaruzz/mod_gsmopen/mod_gsmopen.cpp 2010-01-05 15:55:24 UTC (rev 16154)
+++ freeswitch/branches/gmaruzz/mod_gsmopen/mod_gsmopen.cpp 2010-01-05 18:22:58 UTC (rev 16155)
@@ -263,10 +263,12 @@
//teletone_dtmf_detect_init(&tech_pvt->dtmf_detect, tech_pvt->read_codec.implementation->actual_samples_per_second);
teletone_dtmf_detect_init(&tech_pvt->dtmf_detect, 8000);
- if (alsa_init(tech_pvt)) {
- ERRORA("alsa_init failed\n", GSMOPEN_P_LOG);
- return SWITCH_STATUS_FALSE;
+ if(tech_pvt->no_sound==0){
+ if (alsa_init(tech_pvt)) {
+ ERRORA("alsa_init failed\n", GSMOPEN_P_LOG);
+ return SWITCH_STATUS_FALSE;
+ }
}
if (switch_core_timer_init(&tech_pvt->timer_read, "soft", 20, tech_pvt->read_codec.implementation->samples_per_packet, gsmopen_module_pool) !=
SWITCH_STATUS_SUCCESS) {
@@ -495,7 +497,9 @@
switch_core_timer_destroy(&tech_pvt->timer_read);
switch_core_timer_destroy(&tech_pvt->timer_write);
+ if(tech_pvt->no_sound==0){
alsa_shutdown(tech_pvt);
+ }
*tech_pvt->session_uuid_str = '\0';
tech_pvt->interface_state = GSMOPEN_STATE_IDLE;
@@ -717,7 +721,9 @@
}
if (samples != 160) {
- ERRORA("samples=%d\n", GSMOPEN_P_LOG, samples);
+ if(tech_pvt->no_sound==0){
+ ERRORA("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);
@@ -1231,6 +1237,7 @@
const char *alsa_capture_is_mono = "1";
const char *capture_boost = "5";
const char *playback_boost = "10";
+ const char *no_sound = "0";
uint32_t interface_id = 0;
uint32_t controldevice_speed = B115200; //FIXME TODO
@@ -1399,10 +1406,11 @@
capture_boost = val;
} else if (!strcasecmp(var, "playback_boost")) {
playback_boost = val;
+ } else if (!strcasecmp(var, "no_sound")) {
+ no_sound = val;
+ }
- }
-
}
/* BEGIN: Changes here */
@@ -1478,6 +1486,10 @@
ERRORA("interface param 'playback_boost' MUST be a number, now playback_boost='%s'\n", GSMOPEN_P_LOG, playback_boost);
continue;
}
+ if (!switch_is_number(no_sound)) {
+ ERRORA("interface param 'no_sound' MUST be a number, now no_sound='%s'\n", GSMOPEN_P_LOG, no_sound);
+ continue;
+ }
if (interface_id && interface_id < GSMOPEN_MAX_INTERFACES) {
@@ -1567,6 +1579,7 @@
globals.GSMOPEN_INTERFACES[interface_id].alsa_capture_is_mono = atoi(alsa_capture_is_mono);
globals.GSMOPEN_INTERFACES[interface_id].capture_boost = atoi(capture_boost);
globals.GSMOPEN_INTERFACES[interface_id].playback_boost = atoi(playback_boost);
+ globals.GSMOPEN_INTERFACES[interface_id].no_sound = atoi(no_sound);
@@ -1608,16 +1621,18 @@
}
}
- if (alsa_init(&globals.GSMOPEN_INTERFACES[interface_id])) {
- ERRORA("alsa_init failed\n", GSMOPEN_P_LOG);
- return SWITCH_STATUS_FALSE;
+ if(globals.GSMOPEN_INTERFACES[interface_id].no_sound==0){
+ if (alsa_init(&globals.GSMOPEN_INTERFACES[interface_id])) {
+ ERRORA("alsa_init failed\n", GSMOPEN_P_LOG);
+ return SWITCH_STATUS_FALSE;
- }
+ }
- if (alsa_shutdown(&globals.GSMOPEN_INTERFACES[interface_id])) {
- ERRORA("alsa_shutdown failed\n", GSMOPEN_P_LOG);
- return SWITCH_STATUS_FALSE;
+ if (alsa_shutdown(&globals.GSMOPEN_INTERFACES[interface_id])) {
+ ERRORA("alsa_shutdown failed\n", GSMOPEN_P_LOG);
+ return SWITCH_STATUS_FALSE;
+ }
}
//gsmopen_store_boost((char *)"5", &globals.GSMOPEN_INTERFACES[interface_id].capture_boost); //FIXME
//gsmopen_store_boost((char *)"10", &globals.GSMOPEN_INTERFACES[interface_id].playback_boost); //FIXME