using System; using Microsoft.SPOT; using Microsoft.SPOT.Hardware; using System.Text; using GHI.Processor; namespace CPF { class CPFUtilities { private static DateTime synchDateTime; private static DateTime tickStartTime; private static DateTime tockEndTime; private static TimeSpan timeDiff; private static long elapsedMilliseconds; private static object utilLock = new object(); private static StringBuilder sb = new StringBuilder(256); public static void synchTime(int year, int month, int day, int hour, int minute, int second) { synchDateTime = new DateTime(year, month, day, hour, minute, second); // lock (utilLock) { Program.MessageQueue.Enqueue(Logger.getNewLogArrayHeader(UTF8Encoding.UTF8.GetBytes("Before synchTime DateTime.Now = " + DateTime.Now.ToString()))); } // lock (utilLock) { Program.MessageQueue.Enqueue(Logger.getNewLogArrayHeader(UTF8Encoding.UTF8.GetBytes("Before synchTime RTC.Now = " + RealTimeClock.GetTime().ToString()))); } Utility.SetLocalTime(synchDateTime); //Set .Net DateTime RealTimeClock.SetDateTime(synchDateTime); //Set RTC to .Net DateTime // lock (utilLock) { Program.MessageQueue.Enqueue(Logger.getNewLogArrayHeader(UTF8Encoding.UTF8.GetBytes("After synchTime DateTime.Now = " + DateTime.Now.ToString()))); } // lock (utilLock) { Program.MessageQueue.Enqueue(Logger.getNewLogArrayHeader(UTF8Encoding.UTF8.GetBytes("After synchTime RTC.Now = " + RealTimeClock.GetTime().ToString()))); } Program.SV.timeSynched = true; } public static void tick() { tickStartTime = DateTime.Now; } public static void tock() { tockEndTime = DateTime.Now; timeDiff = tockEndTime - tickStartTime; elapsedMilliseconds = (timeDiff.Days * 24 * 3600 * 1000) + (timeDiff.Hours * 3600 * 1000) + (timeDiff.Seconds * 1000) + timeDiff.Milliseconds; sb.Clear(); sb.Append("Elapsed time (mSec) = "); sb.Append(elapsedMilliseconds.ToString()); Debug.Print(sb.ToString()); } public static void setStateNames() { //Need to make sure names are properly assigned to correct value every time states are changed Program.sbStateNames[(int)Program.CPFStates.NotRunning] = new StringBuilder("SM Not Running "); Program.sbStateNames[(int)Program.CPFStates.RunEngrTest] = new StringBuilder("Run Engr Test "); Program.sbStateNames[(int)Program.CPFStates.InitializeMission] = new StringBuilder("Init Mission "); Program.sbStateNames[(int)Program.CPFStates.InitializeProfile] = new StringBuilder("Init Profile "); Program.sbStateNames[(int)Program.CPFStates.SurfaceOpsSetBellows] = new StringBuilder("SOSetBellows "); Program.sbStateNames[(int)Program.CPFStates.PreMissionDelay] = new StringBuilder("PreMissionDelay "); Program.sbStateNames[(int)Program.CPFStates.SurfaceOps] = new StringBuilder("SurfaceOps "); Program.sbStateNames[(int)Program.CPFStates.ABSetFast] = new StringBuilder("AB Set Fast "); Program.sbStateNames[(int)Program.CPFStates.ABRetractSlow] = new StringBuilder("AB Retract Slow "); Program.sbStateNames[(int)Program.CPFStates.Descend] = new StringBuilder("Descend "); Program.sbStateNames[(int)Program.CPFStates.Anchor] = new StringBuilder("Anchor "); Program.sbStateNames[(int)Program.CPFStates.StartCPMode] = new StringBuilder("Start CP mode "); Program.sbStateNames[(int)Program.CPFStates.DumpCPData] = new StringBuilder("Dumping CP Data "); Program.sbStateNames[(int)Program.CPFStates.DeAnchor] = new StringBuilder("DeAnchor "); Program.sbStateNames[(int)Program.CPFStates.Ascend] = new StringBuilder("Ascend "); Program.sbStateNames[(int)Program.CPFStates.Surface] = new StringBuilder("Surface "); Program.sbStateNames[(int)Program.CPFStates.SetRecoveryMode] = new StringBuilder("Set Recovery Mode "); Program.sbStateNames[(int)Program.CPFStates.ProcessErrors] = new StringBuilder("ProcessErrors "); Program.sbStateNames[(int)Program.CPFStates.Exit] = new StringBuilder("Exit "); } public static void divideByZero() { int divideByZero = 0; int zero = 0; Debug.Print("Dividing by Zero"); divideByZero = 1 / zero; } } }