Revision: 6435
          http://playerstage.svn.sourceforge.net/playerstage/?rev=6435&view=rev
Author:   thjc
Date:     2008-05-12 20:46:59 -0700 (Mon, 12 May 2008)

Log Message:
-----------
Enhancement to allow nav200 to recover better from comms errors

Modified Paths:
--------------
    
code/player/branches/release-2-1-patches/server/drivers/position/nav200/nav200.cc

Modified: 
code/player/branches/release-2-1-patches/server/drivers/position/nav200/nav200.cc
===================================================================
--- 
code/player/branches/release-2-1-patches/server/drivers/position/nav200/nav200.cc
   2008-05-13 00:06:59 UTC (rev 6434)
+++ 
code/player/branches/release-2-1-patches/server/drivers/position/nav200/nav200.cc
   2008-05-13 03:46:59 UTC (rev 6435)
@@ -1,6 +1,7 @@
 #include "nav200.h"
 
 
+
 Nav200::Nav200()
 {
 }
@@ -585,6 +586,14 @@
   player_opaque_data_t mData;
   mData.data_count = length;
   mData.data = buffer;
+  
+  // before we send a command to the NAV200, flush and data coming in from the 
remote file
+  if (!sn200->InQueue->Empty())
+  {
+    PLAYER_WARN("Queue was not empty on NAV200, flushing");
+    while (sn200->InQueue->Pop());
+  }
+  
   opaque->PutMsg(sn200->InQueue, PLAYER_MSGTYPE_CMD, PLAYER_OPAQUE_CMD_DATA, 
reinterpret_cast<void*>(&mData), 0, NULL);
   
 /*  if((length && (write(fd, buffer, length)) < length))
@@ -626,12 +635,6 @@
   
   for (;;)
   {
-    gettimeofday(&now,NULL);
-    if ((now.tv_sec - start.tv_sec) * 1e6 + now.tv_usec - start.tv_usec > 
timeout_usec)
-    {
-      fprintf(stderr,"Timed out waiting for packet %d uSecs 
passed\n",static_cast<int>((now.tv_sec - start.tv_sec) * 1e6 + now.tv_usec - 
start.tv_usec));
-      return -1;
-    }
     //puts("waiting for data");
     sn200->ProcessMessages();
     
@@ -722,6 +725,12 @@
         return 1;
       }
     }
+    gettimeofday(&now,NULL);
+    if ((now.tv_sec - start.tv_sec) * 1e6 + now.tv_usec - start.tv_usec > 
timeout_usec)
+    {
+      fprintf(stderr,"Timed out waiting for packet %d uSecs 
passed\n",static_cast<int>((now.tv_sec - start.tv_sec) * 1e6 + now.tv_usec - 
start.tv_usec));
+      return -1;
+    }
     usleep(1000);
   }
   sn200->InQueue->ClearFilter();


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft 
Defy all challenges. Microsoft(R) Visual Studio 2008. 
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to