multiplayer pong game for LPC 1768

Dependencies:   mbed MbedJSONValue mbed-rtos Adafruit_ST7735 Adafruit_GFX EthernetInterface DebouncedInterrupt

Revision:
32:7cbf4d9a82af
Parent:
31:f70cf03c8ef9
Child:
33:98ba7b0b8c2b
--- a/main.cpp	Sat Nov 28 02:54:12 2020 +0000
+++ b/main.cpp	Sat Nov 28 03:22:06 2020 +0000
@@ -19,6 +19,8 @@
 volatile int moveData = 0;
 volatile int menuPress = 0; 
 
+int numGamesPlayed = 0; 
+
 // interrupts service routines 
 
 void pressButtonMenu(void) {
@@ -59,6 +61,7 @@
     while (1) { // keep program running
         if (menuPress) {
             GameState *gs = new GameState();
+            numGamesPlayed++; 
             
             // request an open lobby from the server 
             sock.sendTo(nist, connectionRequest, strlen(connectionRequest)); 
@@ -68,7 +71,7 @@
             middleButton.reset(); 
             rightButton.attach(&pressRightGame, IRQ_RISE, DEBOUNCE);
             
-            while (!gs->isConnected() || !gs->done()) {
+            while (!gs->done()) {
                 if (sendFlag != 0) {
                     serverRequest["type"] = "move"; 
                     serverRequest["hash"] = "jaredyeagersflipflop"; 
@@ -84,6 +87,9 @@
                 }
                 int bytesRead = sock.receiveFrom(nist, tmp_buffer, sizeof(tmp_buffer));
                 tmp_buffer[bytesRead] = 0; 
+                if (numGamesPlayed == 2) {
+                    printf("read: %s\n\r", tmp_buffer); 
+                }
                 if (bytesRead > 0) {
                     parse(serverResponse, tmp_buffer); 
                     gs->updateAndRender(&serverResponse, gfx);
@@ -98,7 +104,12 @@
             int len = disconnectRequestContent.size(); 
             char *disconnectRequestPayload = (char *)disconnectRequestContent.c_str(); 
             
-            sock.sendTo(nist, disconnectRequestPayload, len);  
+            sock.sendTo(nist, disconnectRequestPayload, len); 
+            
+            // cleanup the socket from the previous game
+            int flushBytes = 0; 
+            while ((receiveFrom = sock.receiveFrom(nist, tmp_buffer, sizeof(tmp_buffer))) != 0) {}
+             
             gfx->renderGameOver(gs);
             
             // reset the game