The following patch enables Qtopia to forcibly flow-control the GSM
as suspend, and release the flow-control upon resume.  This eliminates
some race conditions, and ensures that no GSM data will be lost during
suspend and resume operations.

This patch has no effect without the kernel changes to support this
functionality; those kernel changes are currently committed on the
"andy" branch in the git repository.

Regards,
Mike (mwester)

--- 
git/devices/ficgta01/src/plugins/phonevendors/ficgta01/vendor_ficgta01.cpp.orig 
    2008-06-10 21:28:52.000000000 -0500
+++ git/devices/ficgta01/src/plugins/phonevendors/ficgta01/vendor_ficgta01.cpp  
2008-06-11 18:38:16.000000000 -0500
@@ -661,6 +661,15 @@

 void Ficgta01ModemService::sendSuspendDone()
 {
+// set forced flow control
+    usleep(100000);
+    QFile flow( "/sys/devices/platform/neo1973-pm-gsm.0/flowcontrolled");
+    if (flow.open(QIODevice::WriteOnly | QIODevice::Text | 
QIODevice::Truncate)) {
+      QTextStream outf(&flow);
+      outf<<"1";
+      flow.close();
+    }
+
     suspendDone();
 }

@@ -683,6 +695,14 @@
 {
     qLog(AtChat)<<" Ficgta01ModemService::wake()";

+// release forced flow control
+    QFile flow( "/sys/devices/platform/neo1973-pm-gsm.0/flowcontrolled");
+    if (flow.open(QIODevice::WriteOnly | QIODevice::Text | 
QIODevice::Truncate)) {
+      QTextStream outf(&flow);
+      outf<<"0";
+      flow.close();
+    }
+
 //reset modem

 //  chat( "AT%CWUP=1" );

Reply via email to