/* * Commands from android app; * "Track" * "Cycle" * "Stop" * "GetConfiguration" * "GetDateTime" * "BroadcastPosition" * "StopBroadcast" * "SetC" * "SetL" * "SetO" * "SetDateTime" * "MoveTo" */ private void DoCommand(String command, String data) { var json = new JsonFormatter(); var enc = new UTF8Encoding(); StringBuilder sb; byte[] bytes; switch (command) { case "Track": Track(); break; case "Cycle": Test(); break; case "Stop": StopTracking(); break; case "GetConfiguration": var txfr = Configuration.GetConfigTransfer(); var sconfig = json.ToJson(txfr); sb = new StringBuilder(); sb.Append("\n"); sb.Append("Cf|"); sb.Append(sconfig); sb.Append("\r"); bytes = enc.GetBytes(sb.ToString()); _netduinoSerialPort.Write(bytes, 0, bytes.Length); _netduinoSerialPort.Flush(); break; case "GetDateTime": sb = new StringBuilder(); sb.Append("\n"); sb.Append("Dt|{"); sb.Append("\"sT\":"); // seconds in unixtime sb.Append(GetEpochTime().ToString()); sb.Append("}"); bytes = enc.GetBytes(sb.ToString()); _netduinoSerialPort.Write(bytes, 0, bytes.Length); _netduinoSerialPort.Flush(); break; case "BroadcastPosition": if (_broadcastTimer == null) { _broadcastTimer = new Timer(BroadcastTimerFunction, null, 2000, 2000); } break; case "StopBroadcast": if (_broadcastTimer != null) { _broadcastTimer.Dispose(); _broadcastTimer = null; } break; case "SetA": var ca = (Actuator)json.FromJson(enc.GetBytes(data), typeof(Actuator)); Configuration.SetActuator(ca); break; case "SetC": var cf = (Location)json.FromJson(enc.GetBytes(data), typeof(Location)); Configuration.SetLocation(cf); break; case "SetL": var limits = (Limits)json.FromJson(enc.GetBytes(data), typeof(Limits)); Configuration.SetLimits(limits); break; case "SetO": var options = (Options)json.FromJson(enc.GetBytes(data), typeof(Options)); Configuration.SetOptions(options); break; case "SetDateTime": var dt = UnixTimeStampToDateTime(double.Parse(data)); Utility.SetLocalTime(dt); DS1307.SetRTCTime(dt); break; case "MoveTo": MoveTo(data); break; } }