multiplayer pong game for LPC 1768

Dependencies:   mbed MbedJSONValue mbed-rtos Adafruit_ST7735 Adafruit_GFX EthernetInterface DebouncedInterrupt

main.cpp

Committer:
vsoltan
Date:
2020-11-13
Revision:
16:7fd48cda0773
Parent:
15:9d90f68e53da
Child:
17:32ae1f106002

File content as of revision 16:7fd48cda0773:

#include "mbed.h"
#include "EthernetInterface.h"
#include "network.h"
#include "gamestate.h"
#include "graphics.h" 
#include "DebouncedInterrupt.h"

#define DEBOUNCE 50

DebouncedInterrupt leftButton(p21);
DebouncedInterrupt middleButton(p22);
DebouncedInterrupt rightButton(p23);

EthernetInterface eth; 
UDPSocket sock; 
Endpoint nist; 

volatile int count = 0;
volatile int sendFlag = 0; 
volatile int moveData = 0;

// interrupt service routines 
void pressLeft( void ) {
    sendFlag = 1;
    moveData--; 
}

void pressMiddle() {
//    count++;
}

void pressRight() {
    sendFlag = 1;
    moveData++; 
}
 
int main() {
     initEthernet(&eth, &sock, &nist); 
    
    // initialize GPIO
    leftButton.attach(&pressLeft, IRQ_RISE, DEBOUNCE);
    middleButton.attach(&pressMiddle, IRQ_RISE, DEBOUNCE);
    rightButton.attach(&pressRight, IRQ_RISE, DEBOUNCE);
    
    GameState *gs = new GameState(); 
    Graphics *gfx = new Graphics(); 
    
    char toSend[] = "{\"type\": \"connected\", \"data\": \"Ay whats good\"}"; 
    char readTo[256]; 
    
    while (1) { // keep program running
    
        /* TODO: poll for navigation within menu
         * press any button to start
         */
    
        while (!gs->done()) {
            if (sendFlag != 0) {
                printf("Move value: %i\n\r", moveData); 
                sendFlag = 0; 
                moveData = 0; 
                sock.sendTo(nist, toSend, sizeof(toSend) - 1);
            }
            int bytesRead = sock.receiveFrom(nist, readTo, sizeof(readTo));
            if (bytesRead > 0) {
                printf("Reading: %i bytes, data: %s\n\r", bytesRead, readTo); 
                // TODO: update game state with json string 
            } 
            wait(.1);
        }
        wait(0.5); 
    }
    // cleanupEthernet(&eth, &sock);
}