Chris Samuel wrote:

I guess now that we've got control of the code there might be the opportunity to put in a callback in the main body of the code to the OpenMoko specific library rather than relying on the existing callbacks.

That might be the best bet.

IMO all the needed callbacks are already there. Attached is patch that
fixes echo for both incoming and outgoing calls. I have also binary [1].

Next step is to send AT%N0187 on init and _after_ call is made (as
suggested by Joerg). Answering and making calls could by a bit faster
but no idea if it will be noticable.

Radek

[1] http://activationrecord.net/radekp/openmoko/libneovendor.so
diff --git a/devices/neo/src/plugins/phonevendors/neo/vendor_neo.cpp b/devices/neo/src/plugins/phonevendors/neo/vendor_neo.cpp
index d27b4eb..22463c9 100644
--- a/devices/neo/src/plugins/phonevendors/neo/vendor_neo.cpp
+++ b/devices/neo/src/plugins/phonevendors/neo/vendor_neo.cpp
@@ -66,6 +66,14 @@ void NeoCallProvider::abortDial( uint id, QPhoneCall::Scope scope )
     QModemCallProvider::abortDial( id, scope );
 }
 
+QString NeoCallProvider::acceptCallCommand( bool otherActiveCalls ) const
+{
+    // do undocumented echo cancellation and noise reduction
+    modemService->primaryAtChat()->chat( "a...@st=\"-26\"" );
+    modemService->primaryAtChat()->chat( "AT%N0187" );
+    return QModemCallProvider::acceptCallCommand( otherActiveCalls );
+}
+
 void NeoCallProvider::cpiNotification( const QString& msg )
 {
     // Call progress notification for the NEO device.
@@ -150,11 +158,9 @@ void NeoCallProvider::cnapNotification( const QString& msg )
 
 QString NeoCallProvider::dialVoiceCommand(const QDialOptions& options) const
 {
-// do undocumented echo cancellation and noise reduction
-
+    // do undocumented echo cancellation and noise reduction
     modemService->primaryAtChat()->chat( "a...@st=\"-26\"" );
-    modemService->primaryAtChat()->chat( "AT%N028B" );
-    modemService->primaryAtChat()->chat( "AT%N0125" );
+    modemService->primaryAtChat()->chat( "AT%N0187" );
     return QModemCallProvider::dialVoiceCommand(options);
 }
 
diff --git a/devices/neo/src/plugins/phonevendors/neo/vendor_neo_p.h b/devices/neo/src/plugins/phonevendors/neo/vendor_neo_p.h
index 73df81d..1d62db5 100644
--- a/devices/neo/src/plugins/phonevendors/neo/vendor_neo_p.h
+++ b/devices/neo/src/plugins/phonevendors/neo/vendor_neo_p.h
@@ -45,6 +45,7 @@ public:
 protected:
     QModemCallProvider::AtdBehavior atdBehavior() const;
     void abortDial( uint modemIdentifier, QPhoneCall::Scope scope );
+    QString acceptCallCommand( bool otherActiveCalls ) const;
     QModemService *modemService;
 
     QString dialVoiceCommand(const QDialOptions& options) const;
_______________________________________________
Openmoko community mailing list
community@lists.openmoko.org
http://lists.openmoko.org/mailman/listinfo/community

Reply via email to