[PATCH] Added echo suppression fixes for the OpenMoko Neo phone.

Chris Samuel chris at csamuel.org
Mon Mar 9 13:21:41 CET 2009


The original Qt Extended 4.4.3 initially set both echo
suppression and noise reduction in separate AT commands
which might result in the second command negating the
first one.  It also only set them for outgoing calls.

This new version uses the AT command to set both
echo suppression and noise reduction at the same
time as well as setting them on initialisation and
after a wake up.

This is identical to the patch against QtE 4.4.2 and
applied cleanly with no fuzz with QtE 4.4.3.

Signed-off-by: Chris Samuel <chris at csamuel.org>
---
 .../src/plugins/phonevendors/neo/vendor_neo.cpp    |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/devices/neo/src/plugins/phonevendors/neo/vendor_neo.cpp b/devices/neo/src/plugins/phonevendors/neo/vendor_neo.cpp
index d27b4eb..35f7a0b 100644
--- a/devices/neo/src/plugins/phonevendors/neo/vendor_neo.cpp
+++ b/devices/neo/src/plugins/phonevendors/neo/vendor_neo.cpp
@@ -153,8 +153,7 @@ QString NeoCallProvider::dialVoiceCommand(const QDialOptions& options) const
 // do undocumented echo cancellation and noise reduction
 
     modemService->primaryAtChat()->chat( "AT at ST=\"-26\"" );
-    modemService->primaryAtChat()->chat( "AT%N028B" );
-    modemService->primaryAtChat()->chat( "AT%N0125" );
+    modemService->primaryAtChat()->chat( "AT%N0187" );
     return QModemCallProvider::dialVoiceCommand(options);
 }
 
@@ -551,11 +550,14 @@ NeoModemService::NeoModemService
 
     //  chat("AT%CMGRS=1"); //message transmission to get any failed sms during suspend
 
-   chat("AT%SLEEP=2"); //makes my Moko8 not respond to calls during sosuend
+   chat("AT%SLEEP=2"); //makes my Moko8 not respond to calls during suspend
     // Turn cell id information back on.
     chat( "AT+CREG=2" );
     chat( "AT+CGREG=2" );
 
+    // Turn on echo suppression and noise reduction.
+    chat( "AT%N0187" );
+
     QTimer::singleShot(200, this, SLOT(sendRego()));
 }
 
@@ -572,6 +574,9 @@ void NeoModemService::sendRego()
     if( !cfg.value("PlaneMode",false).toBool()) {
         //       chat("AT%NRG=0,0"); //force auto operations
         chat("AT+COPS=0"); //force auto operations
+
+        // Turn on echo suppression and noise reduction.
+        chat( "AT%N0187" );
     }
 }
 
@@ -679,6 +684,9 @@ void NeoModemService::reset()
     chat("AT%CWUP=1");
     chat("ATE0");
 
+    // Turn on echo suppression and noise reduction.
+    chat( "AT%N0187" );
+
     // Turn on "%CNAP" notifications, which supply the caller's
     // name on an call.  Only supported on some networks.
     chat( "AT%CNAP=1" );
@@ -738,6 +746,9 @@ void NeoModemService::wake()
 
     // Re-enable signal quality notifications when the system wakes up again.
     chat( "AT%CSQ=1", this, SLOT(mcsqOn()) );
+
+    // Turn on echo suppression and noise reduction.
+    chat( "AT%N0187" );
 }
 
 void NeoModemService::mcsqOff()
-- 
1.5.6.3





More information about the community mailing list