static bool WaitForStateChange(int index)
        {
            bool result = false;
            LanXIRESTBoundary module          = modules[index];
            int lastUpdate                    = 0;
            Dictionary <string, dynamic> prev = module.RequestWithPath("/rest/rec/onchange?last=0", "GET", null, false);

            for (; ;)
            {
                // Get the module state
                Dictionary <string, dynamic> dict = module.RequestWithPath("/rest/rec/onchange?last=" + lastUpdate.ToString(), "GET", null, false);
                TimeSpan elapsed = runTime.Elapsed;      // Get elapsed time
                if (stopThreads == true)
                {
                    break;
                }
                lastUpdate = dict["lastUpdateTag"];
                dict.Remove("lastUpdateTag");
                dict.Remove("lastSdCardUpdateTag");
                dict.Remove("lastTransducerUpdateTag");
                if (dict.ContainsKey("recordingStatus"))
                {
                    (dict["recordingStatus"] as Dictionary <string, dynamic>).Remove("channelStatus");
                }

                Recurse(dict, prev, elapsed, modules_ip[index]);

                prev = dict;
            }
            return(result);
        }