public static string buildIP(string baseIP, CTRProductStuff.Devices device, uint deviceID, CTRProductStuff.Action action, string extraOptions = "")
        {
            string address = baseIP;

            address += "?";
            switch (device)
            {
            case CTRProductStuff.Devices.None:
                break;     //No device selected, fall through

            default:
                address += "device=" + CTRProductStuff.DeviceMap[device];
                break;
            }
            address += "&";

            address += "id=" + deviceID;

            address += "&";

            switch (action)
            {
            case CTRProductStuff.Action.None:
                break;     //Just calling the address for a ping

            case CTRProductStuff.Action.SetID:
            case CTRProductStuff.Action.SetDeviceName:
            case CTRProductStuff.Action.UpdateFirmware:
                address += CTRProductStuff.ActionMap[action] + extraOptions;
                break;

            default:
                address += CTRProductStuff.ActionMap[action];
                break;
            }
            address = Uri.EscapeUriString(address);
            return(address);
        }
        public static string HttpGet(string ip, CTRProductStuff.Devices device, uint deviceID, CTRProductStuff.Action action, string extraOptions = "", int timeout = 500)
        {
            string address = buildIP(ip, device, deviceID, action, extraOptions);

            Console.WriteLine(address);
            string retval = "";

            Form1.GetInstance().Invoke(new Action(() =>
            {
                Form1.GetInstance().returnList.Items.Add("GET: " + address);
            }));

            //Request a GET at specified address
            WebRequest request = WebRequest.Create(address);

            request.Timeout = timeout;
            try
            {
                //Stream malarky to get response from GET request
                using (WebResponse response = request.GetResponse())
                {
                    Stream       dataStream = response.GetResponseStream();
                    StreamReader reader     = new StreamReader(dataStream);
                    //Got the string resposne
                    retval = reader.ReadToEnd();

                    //Clean up afterwards
                    reader.Close();
                    dataStream.Close();
                    response.Close();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                retval = "Failed";
            }

            Form1.GetInstance().Invoke(new Action(() =>
            {
                Form1.GetInstance().returnList.Items.Add(retval);
            }));
            //Return that string
            return(retval);
        }