LaserGameV1.ino 2 ko
Newer Older
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
DeadMeon's avatar
DeadMeon a validé
#include "arduino_secrets.h"

unsigned int localPort = 2390;
DeadMeon's avatar
DeadMeon a validé
char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;
char separateur[] = ":";
IPAddress multicastAddress = IPAddress(229, 97, 225, 142);

char packetBuffer[256]; //buffer to hold incoming packet
DeadMeon's avatar
DeadMeon a validé
void setup()
{
	Serial.begin(115200);
	WiFi.mode(WIFI_STA);
	Serial.print("Attempting to connect to SSID: ");
	Serial.println(ssid);
	Serial.print("Connecting");
	// Connect to WPA/WPA2 network. Change this line if using open or WEP network:
	WiFi.begin(ssid, pass);
	do
	{
		delay(1000);
		Serial.print(".");
	} while (WiFi.status() != WL_CONNECTED);
	Serial.print("Connected! IP address: ");
	Serial.println(WiFi.localIP());
	Serial.printf("UDP server on port %d\n", localPort);
	Udp.beginMulticast(WiFi.localIP(), multicastAddress, localPort);
	Serial.println(multicastAddress);
DeadMeon's avatar
DeadMeon a validé
void loop()
{
}

void parseData()
DeadMeon's avatar
DeadMeon a validé
{
	int packetSize = Udp.parsePacket();
	if (packetSize)
	{
DeadMeon's avatar
DeadMeon a validé
		int len = Udp.read(packetBuffer, 255);
		if (len > 0)
		{
			packetBuffer[len] = 0;
		}

		printData(packetSize);
		token = strtok(packetBuffer, separateur);

		if (strcmp(token, key) == 0)
		{
			token = strtok(NULL, separateur);
			if (strcmp(token, servKey) == 0)
			{
				token = strtok(NULL, separateur);
				if (strcmp(token, "SERVER_TEST") == 0)
				{
					sendMsg("TEST_RECEIVED");
				}
				else if (strcmp(token, "SERVER_STILLCONNECTED") == 0)
				{
					sendMsg("STILLCONNECTED");
				}
			}
		}
	}
DeadMeon's avatar
DeadMeon a validé
void printData(int packetSize)
{
	Serial.print("Received packet of size ");
	Serial.println(packetSize);
DeadMeon's avatar
DeadMeon a validé
	Serial.print("From ");
	IPAddress remoteIp = Udp.remoteIP();
	Serial.print(remoteIp);
	Serial.print(", port ");
	Serial.println(Udp.remotePort());
DeadMeon's avatar
DeadMeon a validé
	Serial.println("Contents : ");
	Serial.println(packetBuffer);
DeadMeon's avatar
DeadMeon a validé
void sendMsg(char *msg)
{
	char str[256];
	sprintf(str, "%s%s%s%s%s", servKey, separateur, key, separateur, msg);
	Udp.beginPacket(multicastAddress, localPort);
	Udp.write(str);
	Udp.endPacket();