From cc556a1c4a0813a548bf95d693c4e2748f895e13 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Thu, 21 Aug 2025 15:08:34 +0300 Subject: Telemetry Wire + Machine Status Pumps. --- .../Tango.PMR/MachineStatus/IDSPackLevel.cs | 42 +++- .../Tango.PMR/MachineStatus/PumpState.cs | 48 ++++ .../Tango.PMR/MachineStatus/PumpStatus.cs | 246 +++++++++++++++++++++ .../Tango.PMR/MachineStatus/PumpType.cs | 45 ++++ 4 files changed, 371 insertions(+), 10 deletions(-) create mode 100644 Software/Visual_Studio/Tango.PMR/MachineStatus/PumpState.cs create mode 100644 Software/Visual_Studio/Tango.PMR/MachineStatus/PumpStatus.cs create mode 100644 Software/Visual_Studio/Tango.PMR/MachineStatus/PumpType.cs (limited to 'Software/Visual_Studio/Tango.PMR/MachineStatus') diff --git a/Software/Visual_Studio/Tango.PMR/MachineStatus/IDSPackLevel.cs b/Software/Visual_Studio/Tango.PMR/MachineStatus/IDSPackLevel.cs index b25739df8..a62f0d261 100644 --- a/Software/Visual_Studio/Tango.PMR/MachineStatus/IDSPackLevel.cs +++ b/Software/Visual_Studio/Tango.PMR/MachineStatus/IDSPackLevel.cs @@ -23,18 +23,20 @@ namespace Tango.PMR.MachineStatus { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "ChJJRFNQYWNrTGV2ZWwucHJvdG8SF1RhbmdvLlBNUi5NYWNoaW5lU3RhdHVz", - "IqcCCgxJRFNQYWNrTGV2ZWwSDQoFSW5kZXgYASABKAUSFgoORGlzcGVuc2Vy", - "TGV2ZWwYAiABKAUSFAoMTWlkVGFua0xldmVsGAMgASgBEhcKD0plcnJpY2Fu", - "UHJlc2VudBgEIAEoCBIbChNGaWxsaW5nVGltZW91dEVycm9yGAUgASgIEhQK", - "DE1pZFRhbmtFbXB0eRgGIAEoCBIfChdNaWRUYW5rUmVmaWxsUHVtcEFjdGl2", - "ZRgHIAEoCBIdChVUaW1lclJlbWFpbmluZ1NlY29uZHMYCCABKAUSGAoQRGlz", - "cGVuc2VyTGV2ZWw2NBgJIAEoAxIVCg1Ub3RhbFB1bXBGbG93GAogASgCEh0K", - "FVRvdGFsUHVtcEFjdGl2aXR5VGltZRgLIAEoDUIjCiFjb20udHdpbmUudGFu", - "Z28ucG1yLm1hY2hpbmVzdGF0dXNiBnByb3RvMw==")); + "GhBQdW1wU3RhdHVzLnByb3RvItsCCgxJRFNQYWNrTGV2ZWwSDQoFSW5kZXgY", + "ASABKAUSFgoORGlzcGVuc2VyTGV2ZWwYAiABKAUSFAoMTWlkVGFua0xldmVs", + "GAMgASgBEhcKD0plcnJpY2FuUHJlc2VudBgEIAEoCBIbChNGaWxsaW5nVGlt", + "ZW91dEVycm9yGAUgASgIEhQKDE1pZFRhbmtFbXB0eRgGIAEoCBIfChdNaWRU", + "YW5rUmVmaWxsUHVtcEFjdGl2ZRgHIAEoCBIdChVUaW1lclJlbWFpbmluZ1Nl", + "Y29uZHMYCCABKAUSGAoQRGlzcGVuc2VyTGV2ZWw2NBgJIAEoAxIVCg1Ub3Rh", + "bFB1bXBGbG93GAogASgCEh0KFVRvdGFsUHVtcEFjdGl2aXR5VGltZRgLIAEo", + "DRIyCgVQdW1wcxgMIAMoCzIjLlRhbmdvLlBNUi5NYWNoaW5lU3RhdHVzLlB1", + "bXBTdGF0dXNCIwohY29tLnR3aW5lLnRhbmdvLnBtci5tYWNoaW5lc3RhdHVz", + "YgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, + new pbr::FileDescriptor[] { global::Tango.PMR.MachineStatus.PumpStatusReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.MachineStatus.IDSPackLevel), global::Tango.PMR.MachineStatus.IDSPackLevel.Parser, new[]{ "Index", "DispenserLevel", "MidTankLevel", "JerricanPresent", "FillingTimeoutError", "MidTankEmpty", "MidTankRefillPumpActive", "TimerRemainingSeconds", "DispenserLevel64", "TotalPumpFlow", "TotalPumpActivityTime" }, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.MachineStatus.IDSPackLevel), global::Tango.PMR.MachineStatus.IDSPackLevel.Parser, new[]{ "Index", "DispenserLevel", "MidTankLevel", "JerricanPresent", "FillingTimeoutError", "MidTankEmpty", "MidTankRefillPumpActive", "TimerRemainingSeconds", "DispenserLevel64", "TotalPumpFlow", "TotalPumpActivityTime", "Pumps" }, null, null, null) })); } #endregion @@ -76,6 +78,7 @@ namespace Tango.PMR.MachineStatus { dispenserLevel64_ = other.dispenserLevel64_; totalPumpFlow_ = other.totalPumpFlow_; totalPumpActivityTime_ = other.totalPumpActivityTime_; + pumps_ = other.pumps_.Clone(); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -207,6 +210,16 @@ namespace Tango.PMR.MachineStatus { } } + /// Field number for the "Pumps" field. + public const int PumpsFieldNumber = 12; + private static readonly pb::FieldCodec _repeated_pumps_codec + = pb::FieldCodec.ForMessage(98, global::Tango.PMR.MachineStatus.PumpStatus.Parser); + private readonly pbc::RepeatedField pumps_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField Pumps { + get { return pumps_; } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as IDSPackLevel); @@ -231,6 +244,7 @@ namespace Tango.PMR.MachineStatus { if (DispenserLevel64 != other.DispenserLevel64) return false; if (TotalPumpFlow != other.TotalPumpFlow) return false; if (TotalPumpActivityTime != other.TotalPumpActivityTime) return false; + if(!pumps_.Equals(other.pumps_)) return false; return true; } @@ -248,6 +262,7 @@ namespace Tango.PMR.MachineStatus { if (DispenserLevel64 != 0L) hash ^= DispenserLevel64.GetHashCode(); if (TotalPumpFlow != 0F) hash ^= TotalPumpFlow.GetHashCode(); if (TotalPumpActivityTime != 0) hash ^= TotalPumpActivityTime.GetHashCode(); + hash ^= pumps_.GetHashCode(); return hash; } @@ -302,6 +317,7 @@ namespace Tango.PMR.MachineStatus { output.WriteRawTag(88); output.WriteUInt32(TotalPumpActivityTime); } + pumps_.WriteTo(output, _repeated_pumps_codec); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -340,6 +356,7 @@ namespace Tango.PMR.MachineStatus { if (TotalPumpActivityTime != 0) { size += 1 + pb::CodedOutputStream.ComputeUInt32Size(TotalPumpActivityTime); } + size += pumps_.CalculateSize(_repeated_pumps_codec); return size; } @@ -381,6 +398,7 @@ namespace Tango.PMR.MachineStatus { if (other.TotalPumpActivityTime != 0) { TotalPumpActivityTime = other.TotalPumpActivityTime; } + pumps_.Add(other.pumps_); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -435,6 +453,10 @@ namespace Tango.PMR.MachineStatus { TotalPumpActivityTime = input.ReadUInt32(); break; } + case 98: { + pumps_.AddEntriesFrom(input, _repeated_pumps_codec); + break; + } } } } diff --git a/Software/Visual_Studio/Tango.PMR/MachineStatus/PumpState.cs b/Software/Visual_Studio/Tango.PMR/MachineStatus/PumpState.cs new file mode 100644 index 000000000..22cbb61a9 --- /dev/null +++ b/Software/Visual_Studio/Tango.PMR/MachineStatus/PumpState.cs @@ -0,0 +1,48 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: PumpState.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.MachineStatus { + + /// Holder for reflection information generated from PumpState.proto + public static partial class PumpStateReflection { + + #region Descriptor + /// File descriptor for PumpState.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static PumpStateReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "Cg9QdW1wU3RhdGUucHJvdG8SF1RhbmdvLlBNUi5NYWNoaW5lU3RhdHVzKjkK", + "CVB1bXBTdGF0ZRIGCgJPSxAAEgsKB01pc3NpbmcQARIKCgZGYXVsdHkQAhIL", + "CgdXb3JuT3V0EANCIwohY29tLnR3aW5lLnRhbmdvLnBtci5tYWNoaW5lc3Rh", + "dHVzYgZwcm90bzM=")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { }, + new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.MachineStatus.PumpState), }, null)); + } + #endregion + + } + #region Enums + public enum PumpState { + [pbr::OriginalName("OK")] Ok = 0, + [pbr::OriginalName("Missing")] Missing = 1, + [pbr::OriginalName("Faulty")] Faulty = 2, + [pbr::OriginalName("WornOut")] WornOut = 3, + } + + #endregion + +} + +#endregion Designer generated code diff --git a/Software/Visual_Studio/Tango.PMR/MachineStatus/PumpStatus.cs b/Software/Visual_Studio/Tango.PMR/MachineStatus/PumpStatus.cs new file mode 100644 index 000000000..11eb3d62f --- /dev/null +++ b/Software/Visual_Studio/Tango.PMR/MachineStatus/PumpStatus.cs @@ -0,0 +1,246 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: PumpStatus.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.MachineStatus { + + /// Holder for reflection information generated from PumpStatus.proto + public static partial class PumpStatusReflection { + + #region Descriptor + /// File descriptor for PumpStatus.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static PumpStatusReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "ChBQdW1wU3RhdHVzLnByb3RvEhdUYW5nby5QTVIuTWFjaGluZVN0YXR1cxoO", + "UHVtcFR5cGUucHJvdG8aD1B1bXBTdGF0ZS5wcm90byKRAQoKUHVtcFN0YXR1", + "cxIvCgRUeXBlGAEgASgOMiEuVGFuZ28uUE1SLk1hY2hpbmVTdGF0dXMuUHVt", + "cFR5cGUSDQoFSW5kZXgYAiABKAUSEAoIQ2FwYWNpdHkYAyABKAMSMQoFU3Rh", + "dGUYBCABKA4yIi5UYW5nby5QTVIuTWFjaGluZVN0YXR1cy5QdW1wU3RhdGVC", + "IwohY29tLnR3aW5lLnRhbmdvLnBtci5tYWNoaW5lc3RhdHVzYgZwcm90bzM=")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { global::Tango.PMR.MachineStatus.PumpTypeReflection.Descriptor, global::Tango.PMR.MachineStatus.PumpStateReflection.Descriptor, }, + new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.MachineStatus.PumpStatus), global::Tango.PMR.MachineStatus.PumpStatus.Parser, new[]{ "Type", "Index", "Capacity", "State" }, null, null, null) + })); + } + #endregion + + } + #region Messages + public sealed partial class PumpStatus : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PumpStatus()); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::Tango.PMR.MachineStatus.PumpStatusReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public PumpStatus() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public PumpStatus(PumpStatus other) : this() { + type_ = other.type_; + index_ = other.index_; + capacity_ = other.capacity_; + state_ = other.state_; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public PumpStatus Clone() { + return new PumpStatus(this); + } + + /// Field number for the "Type" field. + public const int TypeFieldNumber = 1; + private global::Tango.PMR.MachineStatus.PumpType type_ = 0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Tango.PMR.MachineStatus.PumpType Type { + get { return type_; } + set { + type_ = value; + } + } + + /// Field number for the "Index" field. + public const int IndexFieldNumber = 2; + private int index_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int Index { + get { return index_; } + set { + index_ = value; + } + } + + /// Field number for the "Capacity" field. + public const int CapacityFieldNumber = 3; + private long capacity_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long Capacity { + get { return capacity_; } + set { + capacity_ = value; + } + } + + /// Field number for the "State" field. + public const int StateFieldNumber = 4; + private global::Tango.PMR.MachineStatus.PumpState state_ = 0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::Tango.PMR.MachineStatus.PumpState State { + get { return state_; } + set { + state_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as PumpStatus); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(PumpStatus other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Type != other.Type) return false; + if (Index != other.Index) return false; + if (Capacity != other.Capacity) return false; + if (State != other.State) return false; + return true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (Type != 0) hash ^= Type.GetHashCode(); + if (Index != 0) hash ^= Index.GetHashCode(); + if (Capacity != 0L) hash ^= Capacity.GetHashCode(); + if (State != 0) hash ^= State.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 (Type != 0) { + output.WriteRawTag(8); + output.WriteEnum((int) Type); + } + if (Index != 0) { + output.WriteRawTag(16); + output.WriteInt32(Index); + } + if (Capacity != 0L) { + output.WriteRawTag(24); + output.WriteInt64(Capacity); + } + if (State != 0) { + output.WriteRawTag(32); + output.WriteEnum((int) State); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (Type != 0) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type); + } + if (Index != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Index); + } + if (Capacity != 0L) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(Capacity); + } + if (State != 0) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) State); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(PumpStatus other) { + if (other == null) { + return; + } + if (other.Type != 0) { + Type = other.Type; + } + if (other.Index != 0) { + Index = other.Index; + } + if (other.Capacity != 0L) { + Capacity = other.Capacity; + } + if (other.State != 0) { + State = other.State; + } + } + + [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: { + type_ = (global::Tango.PMR.MachineStatus.PumpType) input.ReadEnum(); + break; + } + case 16: { + Index = input.ReadInt32(); + break; + } + case 24: { + Capacity = input.ReadInt64(); + break; + } + case 32: { + state_ = (global::Tango.PMR.MachineStatus.PumpState) input.ReadEnum(); + break; + } + } + } + } + + } + + #endregion + +} + +#endregion Designer generated code diff --git a/Software/Visual_Studio/Tango.PMR/MachineStatus/PumpType.cs b/Software/Visual_Studio/Tango.PMR/MachineStatus/PumpType.cs new file mode 100644 index 000000000..c9c7b2d42 --- /dev/null +++ b/Software/Visual_Studio/Tango.PMR/MachineStatus/PumpType.cs @@ -0,0 +1,45 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: PumpType.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.MachineStatus { + + /// Holder for reflection information generated from PumpType.proto + public static partial class PumpTypeReflection { + + #region Descriptor + /// File descriptor for PumpType.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static PumpTypeReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "Cg5QdW1wVHlwZS5wcm90bxIXVGFuZ28uUE1SLk1hY2hpbmVTdGF0dXMqHgoI", + "UHVtcFR5cGUSCAoEVDMzMBAAEggKBFQ0NTAQAUIjCiFjb20udHdpbmUudGFu", + "Z28ucG1yLm1hY2hpbmVzdGF0dXNiBnByb3RvMw==")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { }, + new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.MachineStatus.PumpType), }, null)); + } + #endregion + + } + #region Enums + public enum PumpType { + [pbr::OriginalName("T330")] T330 = 0, + [pbr::OriginalName("T450")] T450 = 1, + } + + #endregion + +} + +#endregion Designer generated code -- cgit v1.3.1