aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.PMR
diff options
context:
space:
mode:
authorRoy <roy.mail.net@gmail.com>2018-02-10 02:13:37 +0200
committerRoy <roy.mail.net@gmail.com>2018-02-10 02:13:37 +0200
commit07e686eb253ffd29f36dbe530b3a17633e02b353 (patch)
treed9663f1c92a400349dffc743adb0114ee1a7f618 /Software/Visual_Studio/Tango.PMR
parentc8c9606e545f49aae3d9f0524775436adbdf27e9 (diff)
downloadTango-07e686eb253ffd29f36dbe530b3a17633e02b353.tar.gz
Tango-07e686eb253ffd29f36dbe530b3a17633e02b353.zip
Added support for motor controllers.
Diffstat (limited to 'Software/Visual_Studio/Tango.PMR')
-rw-r--r--Software/Visual_Studio/Tango.PMR/Common/MessageType.cs26
-rw-r--r--Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortHomingRequest.cs160
-rw-r--r--Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortHomingResponse.cs131
-rw-r--r--Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortJoggingRequest.cs160
-rw-r--r--Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortJoggingResponse.cs160
-rw-r--r--Software/Visual_Studio/Tango.PMR/Diagnostics/MotorDirection.cs45
-rw-r--r--Software/Visual_Studio/Tango.PMR/Diagnostics/MotorHomingRequest.cs188
-rw-r--r--Software/Visual_Studio/Tango.PMR/Diagnostics/MotorHomingResponse.cs188
-rw-r--r--Software/Visual_Studio/Tango.PMR/Diagnostics/MotorJoggingRequest.cs217
-rw-r--r--Software/Visual_Studio/Tango.PMR/Diagnostics/MotorJoggingResponse.cs131
-rw-r--r--Software/Visual_Studio/Tango.PMR/ITangoMessage.cs2
-rw-r--r--Software/Visual_Studio/Tango.PMR/MessageFactory.cs14
-rw-r--r--Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj9
-rw-r--r--Software/Visual_Studio/Tango.PMR/TangoMessage.cs2
14 files changed, 1422 insertions, 11 deletions
diff --git a/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs b/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs
index ac58c616b..ec378556b 100644
--- a/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs
+++ b/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs
@@ -22,7 +22,7 @@ namespace Tango.PMR.Common {
static MessageTypeReflection() {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
- "ChFNZXNzYWdlVHlwZS5wcm90bxIQVGFuZ28uUE1SLkNvbW1vbiq4CwoLTWVz",
+ "ChFNZXNzYWdlVHlwZS5wcm90bxIQVGFuZ28uUE1SLkNvbW1vbireDAoLTWVz",
"c2FnZVR5cGUSCAoETm9uZRAAEhQKEENhbGN1bGF0ZVJlcXVlc3QQAxIVChFD",
"YWxjdWxhdGVSZXNwb25zZRAEEhMKD1Byb2dyZXNzUmVxdWVzdBAFEhQKEFBy",
"b2dyZXNzUmVzcG9uc2UQBhIcChhTdHViQ2FydHJpZGdlUmVhZFJlcXVlc3QQ",
@@ -52,11 +52,14 @@ namespace Tango.PMR.Common {
"UmVxdWVzdBDtBxIdChhPdmVycmlkZURhdGFCYXNlUmVzcG9uc2UQ7gcSFQoQ",
"S2VlcEFsaXZlUmVxdWVzdBDvBxIWChFLZWVwQWxpdmVSZXNwb25zZRDwBxIb",
"ChZQdXNoRGlhZ25vc3RpY3NSZXF1ZXN0ENAPEhwKF1B1c2hEaWFnbm9zdGlj",
- "c1Jlc3BvbnNlENEPEhIKDVJlcG9ydFJlcXVlc3QQ0g8SEwoOUmVwb3J0UmVz",
- "cG9uc2UQ0w8SEwoOU3RhdHVzUmVzcG9uc2UQ1A8SDwoKSm9iUmVxdWVzdBC4",
- "FxIQCgtKb2JSZXNwb25zZRC5FxIUCg9BYm9ydEpvYlJlcXVlc3QQuhcSFQoQ",
- "QWJvcnRKb2JSZXNwb25zZRC7F0IcChpjb20udHdpbmUudGFuZ28ucG1yLmNv",
- "bW1vbmIGcHJvdG8z"));
+ "c1Jlc3BvbnNlENEPEhwKF01vdG9yQWJvcnRIb21pbmdSZXF1ZXN0ENIPEh0K",
+ "GE1vdG9yQWJvcnRIb21pbmdSZXNwb25zZRDTDxIXChJNb3RvckhvbWluZ1Jl",
+ "cXVlc3QQ1A8SGAoTTW90b3JIb21pbmdSZXNwb25zZRDVDxIYChNNb3Rvckpv",
+ "Z2dpbmdSZXF1ZXN0ENYPEhkKFE1vdG9ySm9nZ2luZ1Jlc3BvbnNlENcPEh0K",
+ "GE1vdG9yQWJvcnRKb2dnaW5nUmVxdWVzdBDYDxIeChlNb3RvckFib3J0Sm9n",
+ "Z2luZ1Jlc3BvbnNlENkPEg8KCkpvYlJlcXVlc3QQuBcSEAoLSm9iUmVzcG9u",
+ "c2UQuRcSFAoPQWJvcnRKb2JSZXF1ZXN0ELoXEhUKEEFib3J0Sm9iUmVzcG9u",
+ "c2UQuxdCHAoaY29tLnR3aW5lLnRhbmdvLnBtci5jb21tb25iBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.Common.MessageType), }, null));
@@ -124,9 +127,14 @@ namespace Tango.PMR.Common {
/// </summary>
[pbr::OriginalName("PushDiagnosticsRequest")] PushDiagnosticsRequest = 2000,
[pbr::OriginalName("PushDiagnosticsResponse")] PushDiagnosticsResponse = 2001,
- [pbr::OriginalName("ReportRequest")] ReportRequest = 2002,
- [pbr::OriginalName("ReportResponse")] ReportResponse = 2003,
- [pbr::OriginalName("StatusResponse")] StatusResponse = 2004,
+ [pbr::OriginalName("MotorAbortHomingRequest")] MotorAbortHomingRequest = 2002,
+ [pbr::OriginalName("MotorAbortHomingResponse")] MotorAbortHomingResponse = 2003,
+ [pbr::OriginalName("MotorHomingRequest")] MotorHomingRequest = 2004,
+ [pbr::OriginalName("MotorHomingResponse")] MotorHomingResponse = 2005,
+ [pbr::OriginalName("MotorJoggingRequest")] MotorJoggingRequest = 2006,
+ [pbr::OriginalName("MotorJoggingResponse")] MotorJoggingResponse = 2007,
+ [pbr::OriginalName("MotorAbortJoggingRequest")] MotorAbortJoggingRequest = 2008,
+ [pbr::OriginalName("MotorAbortJoggingResponse")] MotorAbortJoggingResponse = 2009,
/// <summary>
///Printing
/// </summary>
diff --git a/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortHomingRequest.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortHomingRequest.cs
new file mode 100644
index 000000000..d5385333c
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortHomingRequest.cs
@@ -0,0 +1,160 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: MotorAbortHomingRequest.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Tango.PMR.Diagnostics {
+
+ /// <summary>Holder for reflection information generated from MotorAbortHomingRequest.proto</summary>
+ public static partial class MotorAbortHomingRequestReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for MotorAbortHomingRequest.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static MotorAbortHomingRequestReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Ch1Nb3RvckFib3J0SG9taW5nUmVxdWVzdC5wcm90bxIVVGFuZ28uUE1SLkRp",
+ "YWdub3N0aWNzIicKF01vdG9yQWJvcnRIb21pbmdSZXF1ZXN0EgwKBENvZGUY",
+ "ASABKAVCIQofY29tLnR3aW5lLnRhbmdvLnBtci5kaWFnbm9zdGljc2IGcHJv",
+ "dG8z"));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.MotorAbortHomingRequest), global::Tango.PMR.Diagnostics.MotorAbortHomingRequest.Parser, new[]{ "Code" }, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class MotorAbortHomingRequest : pb::IMessage<MotorAbortHomingRequest> {
+ private static readonly pb::MessageParser<MotorAbortHomingRequest> _parser = new pb::MessageParser<MotorAbortHomingRequest>(() => new MotorAbortHomingRequest());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<MotorAbortHomingRequest> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Diagnostics.MotorAbortHomingRequestReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorAbortHomingRequest() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorAbortHomingRequest(MotorAbortHomingRequest other) : this() {
+ code_ = other.code_;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorAbortHomingRequest Clone() {
+ return new MotorAbortHomingRequest(this);
+ }
+
+ /// <summary>Field number for the "Code" field.</summary>
+ public const int CodeFieldNumber = 1;
+ private int code_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int Code {
+ get { return code_; }
+ set {
+ code_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as MotorAbortHomingRequest);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(MotorAbortHomingRequest other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Code != other.Code) return false;
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Code != 0) hash ^= Code.GetHashCode();
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Code != 0) {
+ output.WriteRawTag(8);
+ output.WriteInt32(Code);
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (Code != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Code);
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(MotorAbortHomingRequest other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Code != 0) {
+ Code = other.Code;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 8: {
+ Code = input.ReadInt32();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortHomingResponse.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortHomingResponse.cs
new file mode 100644
index 000000000..8f6401a3f
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortHomingResponse.cs
@@ -0,0 +1,131 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: MotorAbortHomingResponse.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Tango.PMR.Diagnostics {
+
+ /// <summary>Holder for reflection information generated from MotorAbortHomingResponse.proto</summary>
+ public static partial class MotorAbortHomingResponseReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for MotorAbortHomingResponse.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static MotorAbortHomingResponseReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Ch5Nb3RvckFib3J0SG9taW5nUmVzcG9uc2UucHJvdG8SFVRhbmdvLlBNUi5E",
+ "aWFnbm9zdGljcyIaChhNb3RvckFib3J0SG9taW5nUmVzcG9uc2VCIQofY29t",
+ "LnR3aW5lLnRhbmdvLnBtci5kaWFnbm9zdGljc2IGcHJvdG8z"));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.MotorAbortHomingResponse), global::Tango.PMR.Diagnostics.MotorAbortHomingResponse.Parser, null, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class MotorAbortHomingResponse : pb::IMessage<MotorAbortHomingResponse> {
+ private static readonly pb::MessageParser<MotorAbortHomingResponse> _parser = new pb::MessageParser<MotorAbortHomingResponse>(() => new MotorAbortHomingResponse());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<MotorAbortHomingResponse> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Diagnostics.MotorAbortHomingResponseReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorAbortHomingResponse() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorAbortHomingResponse(MotorAbortHomingResponse other) : this() {
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorAbortHomingResponse Clone() {
+ return new MotorAbortHomingResponse(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as MotorAbortHomingResponse);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(MotorAbortHomingResponse other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void WriteTo(pb::CodedOutputStream output) {
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(MotorAbortHomingResponse other) {
+ if (other == null) {
+ return;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortJoggingRequest.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortJoggingRequest.cs
new file mode 100644
index 000000000..cf9f015d3
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortJoggingRequest.cs
@@ -0,0 +1,160 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: MotorAbortJoggingRequest.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Tango.PMR.Diagnostics {
+
+ /// <summary>Holder for reflection information generated from MotorAbortJoggingRequest.proto</summary>
+ public static partial class MotorAbortJoggingRequestReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for MotorAbortJoggingRequest.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static MotorAbortJoggingRequestReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Ch5Nb3RvckFib3J0Sm9nZ2luZ1JlcXVlc3QucHJvdG8SFVRhbmdvLlBNUi5E",
+ "aWFnbm9zdGljcyIoChhNb3RvckFib3J0Sm9nZ2luZ1JlcXVlc3QSDAoEQ29k",
+ "ZRgCIAEoBUIhCh9jb20udHdpbmUudGFuZ28ucG1yLmRpYWdub3N0aWNzYgZw",
+ "cm90bzM="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.MotorAbortJoggingRequest), global::Tango.PMR.Diagnostics.MotorAbortJoggingRequest.Parser, new[]{ "Code" }, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class MotorAbortJoggingRequest : pb::IMessage<MotorAbortJoggingRequest> {
+ private static readonly pb::MessageParser<MotorAbortJoggingRequest> _parser = new pb::MessageParser<MotorAbortJoggingRequest>(() => new MotorAbortJoggingRequest());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<MotorAbortJoggingRequest> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Diagnostics.MotorAbortJoggingRequestReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorAbortJoggingRequest() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorAbortJoggingRequest(MotorAbortJoggingRequest other) : this() {
+ code_ = other.code_;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorAbortJoggingRequest Clone() {
+ return new MotorAbortJoggingRequest(this);
+ }
+
+ /// <summary>Field number for the "Code" field.</summary>
+ public const int CodeFieldNumber = 2;
+ private int code_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int Code {
+ get { return code_; }
+ set {
+ code_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as MotorAbortJoggingRequest);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(MotorAbortJoggingRequest other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Code != other.Code) return false;
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Code != 0) hash ^= Code.GetHashCode();
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Code != 0) {
+ output.WriteRawTag(16);
+ output.WriteInt32(Code);
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (Code != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Code);
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(MotorAbortJoggingRequest other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Code != 0) {
+ Code = other.Code;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 16: {
+ Code = input.ReadInt32();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortJoggingResponse.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortJoggingResponse.cs
new file mode 100644
index 000000000..5624c5827
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorAbortJoggingResponse.cs
@@ -0,0 +1,160 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: MotorAbortJoggingResponse.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Tango.PMR.Diagnostics {
+
+ /// <summary>Holder for reflection information generated from MotorAbortJoggingResponse.proto</summary>
+ public static partial class MotorAbortJoggingResponseReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for MotorAbortJoggingResponse.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static MotorAbortJoggingResponseReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Ch9Nb3RvckFib3J0Sm9nZ2luZ1Jlc3BvbnNlLnByb3RvEhVUYW5nby5QTVIu",
+ "RGlhZ25vc3RpY3MiKQoZTW90b3JBYm9ydEpvZ2dpbmdSZXNwb25zZRIMCgRD",
+ "b2RlGAIgASgFQiEKH2NvbS50d2luZS50YW5nby5wbXIuZGlhZ25vc3RpY3Ni",
+ "BnByb3RvMw=="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.MotorAbortJoggingResponse), global::Tango.PMR.Diagnostics.MotorAbortJoggingResponse.Parser, new[]{ "Code" }, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class MotorAbortJoggingResponse : pb::IMessage<MotorAbortJoggingResponse> {
+ private static readonly pb::MessageParser<MotorAbortJoggingResponse> _parser = new pb::MessageParser<MotorAbortJoggingResponse>(() => new MotorAbortJoggingResponse());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<MotorAbortJoggingResponse> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Diagnostics.MotorAbortJoggingResponseReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorAbortJoggingResponse() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorAbortJoggingResponse(MotorAbortJoggingResponse other) : this() {
+ code_ = other.code_;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorAbortJoggingResponse Clone() {
+ return new MotorAbortJoggingResponse(this);
+ }
+
+ /// <summary>Field number for the "Code" field.</summary>
+ public const int CodeFieldNumber = 2;
+ private int code_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int Code {
+ get { return code_; }
+ set {
+ code_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as MotorAbortJoggingResponse);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(MotorAbortJoggingResponse other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Code != other.Code) return false;
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Code != 0) hash ^= Code.GetHashCode();
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Code != 0) {
+ output.WriteRawTag(16);
+ output.WriteInt32(Code);
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (Code != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Code);
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(MotorAbortJoggingResponse other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Code != 0) {
+ Code = other.Code;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 16: {
+ Code = input.ReadInt32();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorDirection.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorDirection.cs
new file mode 100644
index 000000000..59c355cd6
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorDirection.cs
@@ -0,0 +1,45 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: MotorDirection.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Tango.PMR.Diagnostics {
+
+ /// <summary>Holder for reflection information generated from MotorDirection.proto</summary>
+ public static partial class MotorDirectionReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for MotorDirection.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static MotorDirectionReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "ChRNb3RvckRpcmVjdGlvbi5wcm90bxIVVGFuZ28uUE1SLkRpYWdub3N0aWNz",
+ "KisKDk1vdG9yRGlyZWN0aW9uEgsKB0ZvcndhcmQQABIMCghCYWNrd2FyZBAB",
+ "QiEKH2NvbS50d2luZS50YW5nby5wbXIuZGlhZ25vc3RpY3NiBnByb3RvMw=="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.Diagnostics.MotorDirection), }, null));
+ }
+ #endregion
+
+ }
+ #region Enums
+ public enum MotorDirection {
+ [pbr::OriginalName("Forward")] Forward = 0,
+ [pbr::OriginalName("Backward")] Backward = 1,
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorHomingRequest.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorHomingRequest.cs
new file mode 100644
index 000000000..5044fa2ed
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorHomingRequest.cs
@@ -0,0 +1,188 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: MotorHomingRequest.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Tango.PMR.Diagnostics {
+
+ /// <summary>Holder for reflection information generated from MotorHomingRequest.proto</summary>
+ public static partial class MotorHomingRequestReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for MotorHomingRequest.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static MotorHomingRequestReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "ChhNb3RvckhvbWluZ1JlcXVlc3QucHJvdG8SFVRhbmdvLlBNUi5EaWFnbm9z",
+ "dGljcyIxChJNb3RvckhvbWluZ1JlcXVlc3QSDAoEQ29kZRgBIAEoBRINCgVT",
+ "cGVlZBgCIAEoAUIhCh9jb20udHdpbmUudGFuZ28ucG1yLmRpYWdub3N0aWNz",
+ "YgZwcm90bzM="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.MotorHomingRequest), global::Tango.PMR.Diagnostics.MotorHomingRequest.Parser, new[]{ "Code", "Speed" }, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class MotorHomingRequest : pb::IMessage<MotorHomingRequest> {
+ private static readonly pb::MessageParser<MotorHomingRequest> _parser = new pb::MessageParser<MotorHomingRequest>(() => new MotorHomingRequest());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<MotorHomingRequest> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Diagnostics.MotorHomingRequestReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorHomingRequest() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorHomingRequest(MotorHomingRequest other) : this() {
+ code_ = other.code_;
+ speed_ = other.speed_;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorHomingRequest Clone() {
+ return new MotorHomingRequest(this);
+ }
+
+ /// <summary>Field number for the "Code" field.</summary>
+ public const int CodeFieldNumber = 1;
+ private int code_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int Code {
+ get { return code_; }
+ set {
+ code_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Speed" field.</summary>
+ public const int SpeedFieldNumber = 2;
+ private double speed_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double Speed {
+ get { return speed_; }
+ set {
+ speed_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as MotorHomingRequest);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(MotorHomingRequest other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Code != other.Code) return false;
+ if (Speed != other.Speed) return false;
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Code != 0) hash ^= Code.GetHashCode();
+ if (Speed != 0D) hash ^= Speed.GetHashCode();
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Code != 0) {
+ output.WriteRawTag(8);
+ output.WriteInt32(Code);
+ }
+ if (Speed != 0D) {
+ output.WriteRawTag(17);
+ output.WriteDouble(Speed);
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (Code != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Code);
+ }
+ if (Speed != 0D) {
+ size += 1 + 8;
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(MotorHomingRequest other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Code != 0) {
+ Code = other.Code;
+ }
+ if (other.Speed != 0D) {
+ Speed = other.Speed;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 8: {
+ Code = input.ReadInt32();
+ break;
+ }
+ case 17: {
+ Speed = input.ReadDouble();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorHomingResponse.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorHomingResponse.cs
new file mode 100644
index 000000000..7dd9f982b
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorHomingResponse.cs
@@ -0,0 +1,188 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: MotorHomingResponse.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Tango.PMR.Diagnostics {
+
+ /// <summary>Holder for reflection information generated from MotorHomingResponse.proto</summary>
+ public static partial class MotorHomingResponseReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for MotorHomingResponse.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static MotorHomingResponseReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "ChlNb3RvckhvbWluZ1Jlc3BvbnNlLnByb3RvEhVUYW5nby5QTVIuRGlhZ25v",
+ "c3RpY3MiPAoTTW90b3JIb21pbmdSZXNwb25zZRIQCghQcm9ncmVzcxgBIAEo",
+ "BRITCgtNYXhQcm9ncmVzcxgCIAEoBUIhCh9jb20udHdpbmUudGFuZ28ucG1y",
+ "LmRpYWdub3N0aWNzYgZwcm90bzM="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.MotorHomingResponse), global::Tango.PMR.Diagnostics.MotorHomingResponse.Parser, new[]{ "Progress", "MaxProgress" }, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class MotorHomingResponse : pb::IMessage<MotorHomingResponse> {
+ private static readonly pb::MessageParser<MotorHomingResponse> _parser = new pb::MessageParser<MotorHomingResponse>(() => new MotorHomingResponse());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<MotorHomingResponse> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Diagnostics.MotorHomingResponseReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorHomingResponse() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorHomingResponse(MotorHomingResponse other) : this() {
+ progress_ = other.progress_;
+ maxProgress_ = other.maxProgress_;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorHomingResponse Clone() {
+ return new MotorHomingResponse(this);
+ }
+
+ /// <summary>Field number for the "Progress" field.</summary>
+ public const int ProgressFieldNumber = 1;
+ private int progress_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int Progress {
+ get { return progress_; }
+ set {
+ progress_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "MaxProgress" field.</summary>
+ public const int MaxProgressFieldNumber = 2;
+ private int maxProgress_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int MaxProgress {
+ get { return maxProgress_; }
+ set {
+ maxProgress_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as MotorHomingResponse);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(MotorHomingResponse other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Progress != other.Progress) return false;
+ if (MaxProgress != other.MaxProgress) return false;
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Progress != 0) hash ^= Progress.GetHashCode();
+ if (MaxProgress != 0) hash ^= MaxProgress.GetHashCode();
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Progress != 0) {
+ output.WriteRawTag(8);
+ output.WriteInt32(Progress);
+ }
+ if (MaxProgress != 0) {
+ output.WriteRawTag(16);
+ output.WriteInt32(MaxProgress);
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (Progress != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Progress);
+ }
+ if (MaxProgress != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxProgress);
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(MotorHomingResponse other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Progress != 0) {
+ Progress = other.Progress;
+ }
+ if (other.MaxProgress != 0) {
+ MaxProgress = other.MaxProgress;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 8: {
+ Progress = input.ReadInt32();
+ break;
+ }
+ case 16: {
+ MaxProgress = input.ReadInt32();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorJoggingRequest.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorJoggingRequest.cs
new file mode 100644
index 000000000..99f1a56c6
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorJoggingRequest.cs
@@ -0,0 +1,217 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: MotorJoggingRequest.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Tango.PMR.Diagnostics {
+
+ /// <summary>Holder for reflection information generated from MotorJoggingRequest.proto</summary>
+ public static partial class MotorJoggingRequestReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for MotorJoggingRequest.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static MotorJoggingRequestReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "ChlNb3RvckpvZ2dpbmdSZXF1ZXN0LnByb3RvEhVUYW5nby5QTVIuRGlhZ25v",
+ "c3RpY3MaFE1vdG9yRGlyZWN0aW9uLnByb3RvImwKE01vdG9ySm9nZ2luZ1Jl",
+ "cXVlc3QSOAoJRGlyZWN0aW9uGAEgASgOMiUuVGFuZ28uUE1SLkRpYWdub3N0",
+ "aWNzLk1vdG9yRGlyZWN0aW9uEgwKBENvZGUYAiABKAUSDQoFU3BlZWQYAyAB",
+ "KAFCIQofY29tLnR3aW5lLnRhbmdvLnBtci5kaWFnbm9zdGljc2IGcHJvdG8z"));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { global::Tango.PMR.Diagnostics.MotorDirectionReflection.Descriptor, },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.MotorJoggingRequest), global::Tango.PMR.Diagnostics.MotorJoggingRequest.Parser, new[]{ "Direction", "Code", "Speed" }, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class MotorJoggingRequest : pb::IMessage<MotorJoggingRequest> {
+ private static readonly pb::MessageParser<MotorJoggingRequest> _parser = new pb::MessageParser<MotorJoggingRequest>(() => new MotorJoggingRequest());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<MotorJoggingRequest> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Diagnostics.MotorJoggingRequestReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorJoggingRequest() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorJoggingRequest(MotorJoggingRequest other) : this() {
+ direction_ = other.direction_;
+ code_ = other.code_;
+ speed_ = other.speed_;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorJoggingRequest Clone() {
+ return new MotorJoggingRequest(this);
+ }
+
+ /// <summary>Field number for the "Direction" field.</summary>
+ public const int DirectionFieldNumber = 1;
+ private global::Tango.PMR.Diagnostics.MotorDirection direction_ = 0;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public global::Tango.PMR.Diagnostics.MotorDirection Direction {
+ get { return direction_; }
+ set {
+ direction_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Code" field.</summary>
+ public const int CodeFieldNumber = 2;
+ private int code_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int Code {
+ get { return code_; }
+ set {
+ code_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Speed" field.</summary>
+ public const int SpeedFieldNumber = 3;
+ private double speed_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double Speed {
+ get { return speed_; }
+ set {
+ speed_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as MotorJoggingRequest);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(MotorJoggingRequest other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Direction != other.Direction) return false;
+ if (Code != other.Code) return false;
+ if (Speed != other.Speed) return false;
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Direction != 0) hash ^= Direction.GetHashCode();
+ if (Code != 0) hash ^= Code.GetHashCode();
+ if (Speed != 0D) hash ^= Speed.GetHashCode();
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Direction != 0) {
+ output.WriteRawTag(8);
+ output.WriteEnum((int) Direction);
+ }
+ if (Code != 0) {
+ output.WriteRawTag(16);
+ output.WriteInt32(Code);
+ }
+ if (Speed != 0D) {
+ output.WriteRawTag(25);
+ output.WriteDouble(Speed);
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (Direction != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Direction);
+ }
+ if (Code != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Code);
+ }
+ if (Speed != 0D) {
+ size += 1 + 8;
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(MotorJoggingRequest other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Direction != 0) {
+ Direction = other.Direction;
+ }
+ if (other.Code != 0) {
+ Code = other.Code;
+ }
+ if (other.Speed != 0D) {
+ Speed = other.Speed;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 8: {
+ direction_ = (global::Tango.PMR.Diagnostics.MotorDirection) input.ReadEnum();
+ break;
+ }
+ case 16: {
+ Code = input.ReadInt32();
+ break;
+ }
+ case 25: {
+ Speed = input.ReadDouble();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorJoggingResponse.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorJoggingResponse.cs
new file mode 100644
index 000000000..259949ca4
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/MotorJoggingResponse.cs
@@ -0,0 +1,131 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: MotorJoggingResponse.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Tango.PMR.Diagnostics {
+
+ /// <summary>Holder for reflection information generated from MotorJoggingResponse.proto</summary>
+ public static partial class MotorJoggingResponseReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for MotorJoggingResponse.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static MotorJoggingResponseReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "ChpNb3RvckpvZ2dpbmdSZXNwb25zZS5wcm90bxIVVGFuZ28uUE1SLkRpYWdu",
+ "b3N0aWNzIhYKFE1vdG9ySm9nZ2luZ1Jlc3BvbnNlQiEKH2NvbS50d2luZS50",
+ "YW5nby5wbXIuZGlhZ25vc3RpY3NiBnByb3RvMw=="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.MotorJoggingResponse), global::Tango.PMR.Diagnostics.MotorJoggingResponse.Parser, null, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class MotorJoggingResponse : pb::IMessage<MotorJoggingResponse> {
+ private static readonly pb::MessageParser<MotorJoggingResponse> _parser = new pb::MessageParser<MotorJoggingResponse>(() => new MotorJoggingResponse());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<MotorJoggingResponse> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Diagnostics.MotorJoggingResponseReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorJoggingResponse() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorJoggingResponse(MotorJoggingResponse other) : this() {
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public MotorJoggingResponse Clone() {
+ return new MotorJoggingResponse(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as MotorJoggingResponse);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(MotorJoggingResponse other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void WriteTo(pb::CodedOutputStream output) {
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(MotorJoggingResponse other) {
+ if (other == null) {
+ return;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/ITangoMessage.cs b/Software/Visual_Studio/Tango.PMR/ITangoMessage.cs
index d61e374ff..6d3d8d405 100644
--- a/Software/Visual_Studio/Tango.PMR/ITangoMessage.cs
+++ b/Software/Visual_Studio/Tango.PMR/ITangoMessage.cs
@@ -15,7 +15,7 @@ namespace Tango.PMR
/// <summary>
/// Gets the container that will encapsulate the actual PMR message.
/// </summary>
- MessageContainer Container { get; }
+ MessageContainer Container { get; set; }
/// <summary>
/// Gets or sets the PMR message type.
diff --git a/Software/Visual_Studio/Tango.PMR/MessageFactory.cs b/Software/Visual_Studio/Tango.PMR/MessageFactory.cs
index 4e3f67570..2c4eb3d13 100644
--- a/Software/Visual_Studio/Tango.PMR/MessageFactory.cs
+++ b/Software/Visual_Studio/Tango.PMR/MessageFactory.cs
@@ -76,6 +76,20 @@ namespace Tango.PMR
}
/// <summary>
+ /// Parses the specified tango message type from the specified message container.
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="data">The data.</param>
+ /// <returns></returns>
+ public static TangoMessage<T> ParseTangoMessageFromContainer<T>(MessageContainer container) where T : IMessage<T>
+ {
+ MessageParser<T> parser = new MessageParser<T>(() => Activator.CreateInstance<T>());
+ TangoMessage<T> tango = new TangoMessage<T>(parser.ParseFrom(container.Data), container.Type);
+ tango.Container = container;
+ return tango;
+ }
+
+ /// <summary>
/// Parses an unknown tango message from the specified byte array.
/// </summary>
/// <param name="data">The data.</param>
diff --git a/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj
index e0f79daa9..e6f671ca7 100644
--- a/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj
+++ b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj
@@ -56,6 +56,15 @@
<Compile Include="ColorLab\OutputColor.cs" />
<Compile Include="Diagnostics\DataFileFrame.cs" />
<Compile Include="Diagnostics\DoubleArray.cs" />
+ <Compile Include="Diagnostics\MotorAbortHomingRequest.cs" />
+ <Compile Include="Diagnostics\MotorAbortHomingResponse.cs" />
+ <Compile Include="Diagnostics\MotorAbortJoggingRequest.cs" />
+ <Compile Include="Diagnostics\MotorAbortJoggingResponse.cs" />
+ <Compile Include="Diagnostics\MotorDirection.cs" />
+ <Compile Include="Diagnostics\MotorHomingRequest.cs" />
+ <Compile Include="Diagnostics\MotorHomingResponse.cs" />
+ <Compile Include="Diagnostics\MotorJoggingRequest.cs" />
+ <Compile Include="Diagnostics\MotorJoggingResponse.cs" />
<Compile Include="Diagnostics\PushDiagnosticsRequest.cs" />
<Compile Include="Diagnostics\PushDiagnosticsResponse.cs" />
<Compile Include="ExtensionMethods.cs" />
diff --git a/Software/Visual_Studio/Tango.PMR/TangoMessage.cs b/Software/Visual_Studio/Tango.PMR/TangoMessage.cs
index 7bc951148..c2cf94b38 100644
--- a/Software/Visual_Studio/Tango.PMR/TangoMessage.cs
+++ b/Software/Visual_Studio/Tango.PMR/TangoMessage.cs
@@ -18,7 +18,7 @@ namespace Tango.PMR
/// <summary>
/// Gets the container that will encapsulate the actual PMR message.
/// </summary>
- public MessageContainer Container { get; }
+ public MessageContainer Container { get; set; }
/// <summary>
/// Gets or sets the message.