From 82f0b9620cf2470a6a6471a7b3229b056aa990e9 Mon Sep 17 00:00:00 2001
From: Starbeamrainbowlabs <sbrl@starbeamrainbowlabs.com>
Date: Fri, 21 Oct 2016 21:16:15 +0100
Subject: [PATCH] Tweak a few things & replace spaces with tabs

---
 PixelHub-Client/PixelHub-Client.ino | 206 +++++++++++++++-------------
 PixelHub-Client/Utilities.cpp       |   6 +-
 2 files changed, 116 insertions(+), 96 deletions(-)

diff --git a/PixelHub-Client/PixelHub-Client.ino b/PixelHub-Client/PixelHub-Client.ino
index 4b2207b..75bbb98 100644
--- a/PixelHub-Client/PixelHub-Client.ino
+++ b/PixelHub-Client/PixelHub-Client.ino
@@ -23,116 +23,136 @@ WiFiUDP UdpClient;
 // The size of the datagram buffer that is used to buffer incoming messages.
 int datagramBufferSize = 256;
 
+WiFiClient tcpClient;
+char pixelHubServerIp[16];
+int pixelHubPortNumber;
+
 void setup()
 {
-  // Setup the serial connection
-  Serial.begin(4800);
-  
-  Serial.println("Hello, world!");
-  
-  Serial.println("Beginning connection sequence.");
-  Serial.print("Attempting to connect to ");
-  Serial.print(ssid);
-  Serial.print(" - ");
-  
-  WiFi.begin(ssid, password);
-  
-  while(WiFi.status() != WL_CONNECTED)
-  {
-
-
-    //  Wait 10 seconds for the connection to start
-    delay(10000);
-  }
-  
-  Serial.println("success!");
-
-  printWiFiInfoLocal();
-  findServer();
+	// Setup the serial connection
+	Serial.begin(4800);
+	
+	Serial.println("Hello, world!");
+	
+	Serial.println("Beginning connection sequence.");
+	Serial.print("Attempting to connect to ");
+	Serial.print(ssid);
+	Serial.print(" - ");
+	
+	WiFi.begin(ssid, password);
+	
+	while(WiFi.status() != WL_CONNECTED)
+	{
+		// Wait a second for the connection to be established
+		delay(1000);
+	}
+	
+	Serial.println("success!");
+	
+	printWiFiInfoLocal();
+	findServer();
 }
 
+
 void loop()
 {
-  
+	
 }
 
+
+// ~~~ WiFi Diagnostics ~~~ //
+
+/// <summary>
+/// Prints the local IP address to the serial connection.
+/// </summary>
 void printWiFiInfoLocal()
 {
-  Serial.print("IP Address: ");
-  Serial.println(WiFi.localIP());
+	Serial.print("IP Address: ");
+	Serial.println(WiFi.localIP());
 }
 
+// ~~~ PixelHub auto discovery system ~~~ //
+
+/// <summary>
+/// Listens for PixelHub beacon pings in order to determine the location of the PixelHub server.
+/// </summary>
+/// <description>
+/// Puts the details it finds into the `pixelHubServerIp` and `pixelHubPortNumber`
+/// </description>
 void findServer()
 {
-  Serial.print("Initialising PixelHub auto detection system - ");
-  byte datagramBuffer[datagramBufferSize];
-  UdpClient.beginMulticast(WiFi.localIP(), beaconAddress, beaconPort);
-  Serial.println("success!");
+	Serial.print("Initialising PixelHub auto detection system - ");
+	byte datagramBuffer[datagramBufferSize];
+	memset(datagramBuffer, '\0', datagramBufferSize); // Prefill the buffer with zeros for protection later
+	UdpClient.beginMulticast(WiFi.localIP(), beaconAddress, beaconPort);
+	Serial.println("success!");
 
-  Serial.println("Listening for PixelHub beacon pings.");
-  while(true) {
-    int datagramSize = UdpClient.parsePacket();
-    if(!datagramSize) continue;
-    
-    Serial.print("Received datagram #");
-    Serial.print(datagramSize);
-    Serial.print(" bytes in size from ");
-    Serial.print(UdpClient.remoteIP());
-    Serial.print(":");
-    Serial.print(UdpClient.remotePort());
-    if(datagramSize > datagramBufferSize) {
-      Serial.println(", but the message is larger than the datagram buffer size.");
-      continue;
-    }
-    Serial.println(".");
-    
-    UdpClient.read(datagramBuffer, datagramSize);
-    
-    Serial.print("Content as hex: ");
-    for(int i = 0; i < datagramSize; i++) {
-      Serial.print(datagramBuffer[i], HEX);
-      Serial.print(" ");
-    }
-    Serial.println();
-    Serial.print("Raw content: ");
-    Serial.write(datagramBuffer, datagramSize);
-    Serial.println();
+	Serial.println("Listening for PixelHub beacon pings.");
+	while(true) {
+		int datagramSize = UdpClient.parsePacket();
+		if(!datagramSize) continue;
+		
+		Serial.print("Received datagram #");
+		Serial.print(datagramSize);
+		Serial.print(" bytes in size from ");
+		Serial.print(UdpClient.remoteIP());
+		Serial.print(":");
+		Serial.print(UdpClient.remotePort());
+		if(datagramSize > datagramBufferSize) {
+			Serial.println(", but the message is larger than the datagram buffer size.");
+			continue;
+		}
+		Serial.println(".");
+		
+		UdpClient.read(datagramBuffer, datagramSize);
+		
+		Serial.print("Content as hex: ");
+		for(int i = 0; i < datagramSize; i++) {
+			Serial.print(datagramBuffer[i], HEX);
+			Serial.print(" ");
+		}
+		Serial.println();
+		Serial.print("Raw content: ");
+		Serial.write(datagramBuffer, datagramSize);
+		Serial.println();
 
-    Serial.print("Parsing datagram - ");
+		Serial.print("Parsing datagram - ");
 
-    // Parse the recieved message
-    char* datagramStr = (char*)datagramBuffer;
+		// Parse the recieved message
+		char* datagramStr = (char*)datagramBuffer;
 
-    // Find the positions of the key characters
-    //int atPos = getPosition(datagramStr, datagramSize, '@');
-    //int colonPos = getPosition(datagramStr, datagramSize, ':');
-    int atPos = findChar(datagramStr, '@');
-    int colonPos = findChar(datagramStr, ':');
-    
-    char role[7];
-    char serverIp[16];
-    char portNumberText[7];
-    memset(role, '\0', 7);
-    memset(serverIp, '\0', 16);
-    memset(portNumberText, '\0', 7);
-    
-    strncpy(role, datagramStr, atPos); Serial.print("R: "); Serial.println(role);
-    strncpy(serverIp, datagramStr + atPos + 1, colonPos - atPos - 1);
-    strncpy(portNumberText, datagramStr + colonPos + 1, datagramSize - colonPos - 1);
-    
-    Serial.println("complete.");
-    
-    Serial.print("atPos: "); Serial.println(atPos);
-    Serial.print("colonPos: "); Serial.println(colonPos);
-    
-    Serial.print("Role: "); Serial.print(role); Serial.print(" ");
-    Serial.print("Remote IP: "); Serial.print(serverIp); Serial.print(" ");
-    Serial.print("Port number: "); Serial.print(portNumberText);
-    Serial.println();
-    
-    // If the advertiser isn't playing the role of a server, then we're not interested
-    if(role != "server") continue;
+		// Find the positions of the key characters
+		//int atPos = getPosition(datagramStr, datagramSize, '@');
+		//int colonPos = getPosition(datagramStr, datagramSize, ':');
+		int atPos = findChar(datagramStr, '@');
+		int colonPos = findChar(datagramStr, ':');
+		
+		char role[7];
+		char portNumberText[7];
+		memset(role, '\0', 7);
+		memset(pixelHubServerIp, '\0', 16);
+		memset(portNumberText, '\0', 7);
+		
+		strncpy(role, datagramStr, atPos);
+		strncpy(pixelHubServerIp, datagramStr + atPos + 1, colonPos - atPos - 1);
+		strncpy(portNumberText, datagramStr + colonPos + 1, datagramSize - colonPos - 1);
+		
+		Serial.println("complete.");
+		
+		Serial.print("atPos: "); Serial.println(atPos);
+		Serial.print("colonPos: "); Serial.println(colonPos);
+		
+		Serial.print("Role: "); Serial.print(role); Serial.print(" ");
+		Serial.print("Remote IP: "); Serial.print(serverIp); Serial.print(" ");
+		Serial.print("Port number: "); Serial.print(portNumberText);
+		Serial.println();
+		
+		// If the advertiser isn't playing the role of a server, then we're not interested
+		if(role != "server") continue;
 
-    int portNumber = atoi(portNumberText);
-  }
+		pixelHubPortNumber = atoi(portNumberText);
+
+		return;
+	}
 }
+
diff --git a/PixelHub-Client/Utilities.cpp b/PixelHub-Client/Utilities.cpp
index 755d9d3..7cf75b6 100644
--- a/PixelHub-Client/Utilities.cpp
+++ b/PixelHub-Client/Utilities.cpp
@@ -4,9 +4,9 @@
 
 int findChar(char* str, char targetChar)
 {
-  for(int i = 0; str[i] != '\0'; i++) {
-    if(str[i] == targetChar) return i;
-  }
+	for(int i = 0; str[i] != '\0'; i++) {
+		if(str[i] == targetChar) return i;
+	}
 }
 
 /*
