1 2 3movecmd_t movecmd; 4 5 6input from 7 8packet sender 9 wake up on alarms or input signal 10 if on input signal, set skipnextalrm 11 else 12 if skipnextalarm 13 skipnextalarm = false; 14 continue; 15 lock packet 16 get current movecmd 17 send message 18 unlock packet 19 20packet receiver 21 wake up only on packet arrival 22 identify the packet source 23 calculate exact latency 24 save the packet off 25 26 27 28 29 // cause timer messages to be issued 30 SetTimer (mainwindow, 1, 50, NULL); 31 32 // cause packet received messages to be issued 33 WSAAsyncSelect ( net_socket, mainwindow, WM_USER, FD_READ ); 34 35 if (!GetMessage (&msg, NULL, 0, 0)) 36 { 37 TranslateMessage (&msg); 38 DispatchMessage (&msg); 39 while (PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE)) 40 { 41 if (!GetMessage (&msg, NULL, 0, 0)) 42 break; 43 TranslateMessage (&msg); 44 DispatchMessage (&msg); 45 } 46 PrepareToBlock (); 47 } 48 49