diff options
Diffstat (limited to 'Software')
13 files changed, 927 insertions, 91 deletions
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs index c99e83558..0f9f3b008 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs @@ -268,6 +268,11 @@ namespace Tango.Integration.Operation event EventHandler<InkFillingStatusChangedEventArgs> InkFillingStatusChanged; /// <summary> + /// Occurs when a new telemetry wire is available. + /// </summary> + event EventHandler<StartTelemetryWireResponse> TelemetryWireAvailable; + + /// <summary> /// Occurs when waste replacement is required. /// </summary> event EventHandler WasteReplacementRequired; @@ -313,6 +318,11 @@ namespace Tango.Integration.Operation bool EnableInkFillingStatus { get; set; } /// <summary> + /// Gets or set a value indicating whether to enable telemetry flow from the firmware to the cloud. + /// </summary> + bool EnableTelemetryWire { get; set; } + + /// <summary> /// Gets the last process parameters table sent to the embedded device. /// </summary> ProcessParametersTable CurrentProcessParameters { get; } diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs index f77ea978c..eb994afc6 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs @@ -75,6 +75,7 @@ namespace Tango.Integration.Operation private bool _debugSent; private bool _machineStatusSent; private bool _inkFillingStatusSent; + private bool _telemetryWireSent; private bool _threadLoadingSent; private bool _isPowerDownRequestInProgress; private bool _isHeadCleaningInProgress; @@ -355,6 +356,8 @@ namespace Tango.Integration.Operation /// </summary> public event EventHandler WasteReplacementRequired; + public event EventHandler<StartTelemetryWireResponse> TelemetryWireAvailable; + #endregion #region Properties @@ -655,6 +658,22 @@ namespace Tango.Integration.Operation set { _enablePowerUpSequence = value; RaisePropertyChangedAuto(); } } + private bool _enableTelemetryWire; + public bool EnableTelemetryWire + { + get { return _enableTelemetryWire; } + set + { + if (_enableTelemetryWire != value) + { + _enableTelemetryWire = value; + RaisePropertyChangedAuto(); + OnEnableTelemetryWireChanged(value); + } + } + } + + /// <summary> /// Gets or sets the machine events state provider used to get notifications about current machine events and errors. /// </summary> @@ -778,6 +797,33 @@ namespace Tango.Integration.Operation } } + private void OnEnableTelemetryWireChanged(bool value) + { + if (value && State == TransportComponentState.Connected && !_telemetryWireSent) + { + var request = new StartTelemetryWireRequest(); + + _telemetryWireSent = true; + + LogManager.Log($"Sending '{nameof(StartTelemetryWireRequest)}'..."); + + SendContinuousRequest<StartTelemetryWireRequest, StartTelemetryWireResponse>(request, new TransportContinuousRequestConfig() { ShouldLog = false }).ObserveOn(new NewThreadScheduler()).Subscribe( + (response) => + { + OnTelemetryWireAvailable(response); + }, + (ex) => + { + _telemetryWireSent = false; + }, + () => + { + _telemetryWireSent = false; + LogManager.Log("Telemetry Wire response completed!?", LogCategory.Warning); + }); + } + } + /// <summary> /// Called when the enable events property has been changed. /// </summary> @@ -1028,6 +1074,11 @@ namespace Tango.Integration.Operation DiagnosticsDataAvailable?.Invoke(this, data); } + private void OnTelemetryWireAvailable(StartTelemetryWireResponse response) + { + TelemetryWireAvailable?.Invoke(this, response); + } + /// <summary> /// Called when events notification message has been received. /// </summary> @@ -1491,6 +1542,7 @@ namespace Tango.Integration.Operation _debugSent = false; _eventsSent = false; _machineStatusSent = false; + _telemetryWireSent = false; //MachineStatus = null; @@ -1593,6 +1645,7 @@ namespace Tango.Integration.Operation _eventsSent = false; _debugSent = false; _machineStatusSent = false; + _telemetryWireSent = false; _bitResults = null; @@ -1602,6 +1655,7 @@ namespace Tango.Integration.Operation OnEnableMachineStatusUpdatesChanged(EnableMachineStatusUpdates); OnEnableAutomaticThreadLoadingChanged(EnableAutomaticThreadLoading); OnEnableInkFillingStatus(EnableInkFillingStatus); + OnEnableTelemetryWireChanged(EnableTelemetryWire); if (EnablePowerUpSequence) { diff --git a/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs b/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs index b561ccc15..981ffe4f4 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( - "ChFNZXNzYWdlVHlwZS5wcm90bxIQVGFuZ28uUE1SLkNvbW1vbiqiRQoLTWVz", + "ChFNZXNzYWdlVHlwZS5wcm90bxIQVGFuZ28uUE1SLkNvbW1vbirjRQoLTWVz", "c2FnZVR5cGUSCAoETm9uZRAAEhEKDUVycm9yUmVzcG9uc2UQARIUChBDYWxj", "dWxhdGVSZXF1ZXN0EAMSFQoRQ2FsY3VsYXRlUmVzcG9uc2UQBBITCg9Qcm9n", "cmVzc1JlcXVlc3QQBRIUChBQcm9ncmVzc1Jlc3BvbnNlEAYSHAoYU3R1YkNh", @@ -142,85 +142,87 @@ namespace Tango.PMR.Common { "VmFsaWRhdGlvblJlcXVlc3QQ/A8SIAobQ2FydHJpZGdlVmFsaWRhdGlvblJl", "c3BvbnNlEP0PEhYKEUJpdFJlc3VsdHNSZXF1ZXN0EP4PEhcKEkJpdFJlc3Vs", "dHNSZXNwb25zZRD/DxIVChBSZXNldENhcmRSZXF1ZXN0EIAQEhYKEVJlc2V0", - "Q2FyZFJlc3BvbnNlEIEQEg8KCkpvYlJlcXVlc3QQuBcSEAoLSm9iUmVzcG9u", - "c2UQuRcSFAoPQWJvcnRKb2JSZXF1ZXN0ELoXEhUKEEFib3J0Sm9iUmVzcG9u", - "c2UQuxcSIwoeVXBsb2FkUHJvY2Vzc1BhcmFtZXRlcnNSZXF1ZXN0ELwXEiQK", - "H1VwbG9hZFByb2Nlc3NQYXJhbWV0ZXJzUmVzcG9uc2UQvRcSFgoRQ3VycmVu", - "dEpvYlJlcXVlc3QQvhcSFwoSQ3VycmVudEpvYlJlc3BvbnNlEL8XEhwKF1Jl", - "c3VtZUN1cnJlbnRKb2JSZXF1ZXN0EMAXEh0KGFJlc3VtZUN1cnJlbnRKb2JS", - "ZXNwb25zZRDBFxIdChhTdGFydEhlYWRDbGVhbmluZ1JlcXVlc3QQwhcSHgoZ", - "U3RhcnRIZWFkQ2xlYW5pbmdSZXNwb25zZRDDFxIdChhBYm9ydEhlYWRDbGVh", - "bmluZ1JlcXVlc3QQxBcSHgoZQWJvcnRIZWFkQ2xlYW5pbmdSZXNwb25zZRDF", - "FxIWChFKb2JQcmVwYXJlUmVxdWVzdBDGFxIXChJKb2JQcmVwYXJlUmVzcG9u", - "c2UQxxcSGQoUU3RhcnREZWJ1Z0xvZ1JlcXVlc3QQoB8SGgoVU3RhcnREZWJ1", - "Z0xvZ1Jlc3BvbnNlEKEfEhgKE1N0b3BEZWJ1Z0xvZ1JlcXVlc3QQoh8SGQoU", - "U3RvcERlYnVnTG9nUmVzcG9uc2UQox8SHwoaU2V0RGVidWdMb2dDYXRlZ29y", - "eVJlcXVlc3QQpB8SIAobU2V0RGVidWdMb2dDYXRlZ29yeVJlc3BvbnNlEKUf", - "EiEKHFNldHVwRGVidWdEaXNyaWJ1dG9yc1JlcXVlc3QQph8SIgodU2V0dXBE", - "ZWJ1Z0Rpc3JpYnV0b3JzUmVzcG9uc2UQpx8SJwoiVXBsb2FkSGFyZHdhcmVD", - "b25maWd1cmF0aW9uUmVxdWVzdBCIJxIoCiNVcGxvYWRIYXJkd2FyZUNvbmZp", - "Z3VyYXRpb25SZXNwb25zZRCJJxIXChJTeXN0ZW1SZXNldFJlcXVlc3QQiicS", - "GAoTU3lzdGVtUmVzZXRSZXNwb25zZRCLJxIVChBLZWVwQWxpdmVSZXF1ZXN0", - "EPAuEhYKEUtlZXBBbGl2ZVJlc3BvbnNlEPEuEhMKDkNvbm5lY3RSZXF1ZXN0", - "EPIuEhQKD0Nvbm5lY3RSZXNwb25zZRDzLhIWChFEaXNjb25uZWN0UmVxdWVz", - "dBD0LhIXChJEaXNjb25uZWN0UmVzcG9uc2UQ9S4SFgoRRmlsZVVwbG9hZFJl", - "cXVlc3QQ2DYSFwoSRmlsZVVwbG9hZFJlc3BvbnNlENk2EhsKFkZpbGVDaHVu", - "a1VwbG9hZFJlcXVlc3QQ2jYSHAoXRmlsZUNodW5rVXBsb2FkUmVzcG9uc2UQ", - "2zYSGgoVRXhlY3V0ZVByb2Nlc3NSZXF1ZXN0ENw2EhsKFkV4ZWN1dGVQcm9j", - "ZXNzUmVzcG9uc2UQ3TYSFwoSS2lsbFByb2Nlc3NSZXF1ZXN0EN42EhgKE0tp", - "bGxQcm9jZXNzUmVzcG9uc2UQ3zYSEgoNQ3JlYXRlUmVxdWVzdBDgNhITCg5D", - "cmVhdGVSZXNwb25zZRDhNhISCg1EZWxldGVSZXF1ZXN0EOI2EhMKDkRlbGV0", - "ZVJlc3BvbnNlEOM2EhoKFUdldFN0b3JhZ2VJbmZvUmVxdWVzdBDkNhIbChZH", - "ZXRTdG9yYWdlSW5mb1Jlc3BvbnNlEOU2EhQKD0dldEZpbGVzUmVxdWVzdBDm", - "NhIVChBHZXRGaWxlc1Jlc3BvbnNlEOc2EhgKE0ZpbGVEb3dubG9hZFJlcXVl", - "c3QQ6DYSGQoURmlsZURvd25sb2FkUmVzcG9uc2UQ6TYSHQoYRmlsZUNodW5r", - "RG93bmxvYWRSZXF1ZXN0EOo2Eh4KGUZpbGVDaHVua0Rvd25sb2FkUmVzcG9u", - "c2UQ6zYSGwoWVmFsaWRhdGVWZXJzaW9uUmVxdWVzdBDsNhIcChdWYWxpZGF0", - "ZVZlcnNpb25SZXNwb25zZRDtNhIbChZBY3RpdmF0ZVZlcnNpb25SZXF1ZXN0", - "EO42EhwKF0FjdGl2YXRlVmVyc2lvblJlc3BvbnNlEO82EiEKHEdldFZlcnNp", - "b25EZXNjcmlwdG9yc1JlcXVlc3QQ8DYSIgodR2V0VmVyc2lvbkRlc2NyaXB0", - "b3JzUmVzcG9uc2UQ8TYSGQoURGlzcGVuc2VyRGF0YVJlcXVlc3QQwD4SGgoV", - "RGlzcGVuc2VyRGF0YVJlc3BvbnNlEME+EhwKF01pZFRhbmtEYXRhU2V0dXBS", - "ZXF1ZXN0EMI+Eh0KGE1pZFRhbmtEYXRhU2V0dXBSZXNwb25zZRDDPhIiCh1N", - "YWNoaW5lQ2FsaWJyYXRpb25EYXRhUmVxdWVzdBDEPhIjCh5NYWNoaW5lQ2Fs", - "aWJyYXRpb25EYXRhUmVzcG9uc2UQxT4SHgoZTWFpbkNhcmRTdG9yZWREYXRh", - "UmVxdWVzdBDGPhIfChpNYWluQ2FyZFN0b3JlZERhdGFSZXNwb25zZRDHPhIk", - "Ch9TdGFydE1hY2hpbmVTdGF0dXNVcGRhdGVSZXF1ZXN0EKhGEiUKIFN0YXJ0", - "TWFjaGluZVN0YXR1c1VwZGF0ZVJlc3BvbnNlEKlGEiMKHlN0b3BNYWNoaW5l", - "U3RhdHVzVXBkYXRlUmVxdWVzdBCqRhIkCh9TdG9wTWFjaGluZVN0YXR1c1Vw", - "ZGF0ZVJlc3BvbnNlEKtGEiEKHFNldElua0F1dG9GaWxsaW5nTW9kZVJlcXVl", - "c3QQrEYSIgodU2V0SW5rQXV0b0ZpbGxpbmdNb2RlUmVzcG9uc2UQrUYSHAoX", - "U3Bvb2xUeXBlQ2hhbmdlZFJlcXVlc3QQrkYSHQoYU3Bvb2xUeXBlQ2hhbmdl", - "ZFJlc3BvbnNlEK9GEhwKF1NldFBvd2VyRG93blRpbWVSZXF1ZXN0ELBGEh0K", - "GFNldFBvd2VyRG93blRpbWVSZXNwb25zZRCxRhIdChhTZXRCdXp6ZXJTZXR0", - "aW5nc1JlcXVlc3QQskYSHgoZU2V0QnV6emVyU2V0dGluZ3NSZXNwb25zZRCz", - "RhIeChlTZXRXaGl0ZVRocmVhZFNraXBSZXF1ZXN0ELRGEh8KGlNldFdoaXRl", - "VGhyZWFkU2tpcFJlc3BvbnNlELVGEhoKFVN0YXJ0UG93ZXJEb3duUmVxdWVz", - "dBCQThIbChZTdGFydFBvd2VyRG93blJlc3BvbnNlEJFOEhoKFUFib3J0UG93", - "ZXJEb3duUmVxdWVzdBCSThIbChZBYm9ydFBvd2VyRG93blJlc3BvbnNlEJNO", - "EhgKE1N0YXJ0UG93ZXJVcFJlcXVlc3QQlE4SGQoUU3RhcnRQb3dlclVwUmVz", - "cG9uc2UQlU4SGAoTQWJvcnRQb3dlclVwUmVxdWVzdBCWThIZChRBYm9ydFBv", - "d2VyVXBSZXNwb25zZRCXThITCg5TdGFuZEJ5UmVxdWVzdBCYThIUCg9TdGFu", - "ZEJ5UmVzcG9uc2UQmU4SHgoZU3RhcnRUaHJlYWRMb2FkaW5nUmVxdWVzdBD4", - "VRIfChpTdGFydFRocmVhZExvYWRpbmdSZXNwb25zZRD5VRIhChxDb250aW51", - "ZVRocmVhZExvYWRpbmdSZXF1ZXN0EPpVEiIKHUNvbnRpbnVlVGhyZWFkTG9h", - "ZGluZ1Jlc3BvbnNlEPtVEh0KGFN0b3BUaHJlYWRMb2FkaW5nUmVxdWVzdBD8", - "VRIeChlTdG9wVGhyZWFkTG9hZGluZ1Jlc3BvbnNlEP1VEhwKF1RyeVRocmVh", - "ZExvYWRpbmdSZXF1ZXN0EP5VEh0KGFRyeVRocmVhZExvYWRpbmdSZXNwb25z", - "ZRD/VRIgChtBdHRlbXB0VGhyZWFkSm9nZ2luZ1JlcXVlc3QQgFYSIQocQXR0", - "ZW1wdFRocmVhZEpvZ2dpbmdSZXNwb25zZRCBVhIeChlBYm9ydFRocmVhZExv", - "YWRpbmdSZXF1ZXN0EIJWEh8KGkFib3J0VGhyZWFkTG9hZGluZ1Jlc3BvbnNl", - "EINWEiEKHFN0YXJ0SW5rRmlsbGluZ1N0YXR1c1JlcXVlc3QQ4F0SIgodU3Rh", - "cnRJbmtGaWxsaW5nU3RhdHVzUmVzcG9uc2UQ4V0SHgoZSW5pdGlhdGVJbmtG", - "aWxsaW5nUmVxdWVzdBDiXRIfChpJbml0aWF0ZUlua0ZpbGxpbmdSZXNwb25z", - "ZRDjXRIYChNXYXN0ZVJlcGxhY2VSZXF1ZXN0EORdEhkKFFdhc3RlUmVwbGFj", - "ZVJlc3BvbnNlEOVdEhwKF1NldEplcnJpY2FuTGV2ZWxSZXF1ZXN0EOZdEh0K", - "GFNldEplcnJpY2FuTGV2ZWxSZXNwb25zZRDnXRIcChdQdXREYXRhU3RvcmVJ", - "dGVtUmVxdWVzdBDIZRIdChhQdXREYXRhU3RvcmVJdGVtUmVzcG9uc2UQyWUS", - "HAoXR2V0RGF0YVN0b3JlSXRlbVJlcXVlc3QQymUSHQoYR2V0RGF0YVN0b3Jl", - "SXRlbVJlc3BvbnNlEMtlEiEKHERhdGFTdG9yZUl0ZW1Nb2RpZmllZFJlcXVl", - "c3QQzGUSIgodRGF0YVN0b3JlSXRlbU1vZGlmaWVkUmVzcG9uc2UQzWVCHAoa", - "Y29tLnR3aW5lLnRhbmdvLnBtci5jb21tb25iBnByb3RvMw==")); + "Q2FyZFJlc3BvbnNlEIEQEh4KGVN0YXJ0VGVsZW1ldHJ5V2lyZVJlcXVlc3QQ", + "ghASHwoaU3RhcnRUZWxlbWV0cnlXaXJlUmVzcG9uc2UQgxASDwoKSm9iUmVx", + "dWVzdBC4FxIQCgtKb2JSZXNwb25zZRC5FxIUCg9BYm9ydEpvYlJlcXVlc3QQ", + "uhcSFQoQQWJvcnRKb2JSZXNwb25zZRC7FxIjCh5VcGxvYWRQcm9jZXNzUGFy", + "YW1ldGVyc1JlcXVlc3QQvBcSJAofVXBsb2FkUHJvY2Vzc1BhcmFtZXRlcnNS", + "ZXNwb25zZRC9FxIWChFDdXJyZW50Sm9iUmVxdWVzdBC+FxIXChJDdXJyZW50", + "Sm9iUmVzcG9uc2UQvxcSHAoXUmVzdW1lQ3VycmVudEpvYlJlcXVlc3QQwBcS", + "HQoYUmVzdW1lQ3VycmVudEpvYlJlc3BvbnNlEMEXEh0KGFN0YXJ0SGVhZENs", + "ZWFuaW5nUmVxdWVzdBDCFxIeChlTdGFydEhlYWRDbGVhbmluZ1Jlc3BvbnNl", + "EMMXEh0KGEFib3J0SGVhZENsZWFuaW5nUmVxdWVzdBDEFxIeChlBYm9ydEhl", + "YWRDbGVhbmluZ1Jlc3BvbnNlEMUXEhYKEUpvYlByZXBhcmVSZXF1ZXN0EMYX", + "EhcKEkpvYlByZXBhcmVSZXNwb25zZRDHFxIZChRTdGFydERlYnVnTG9nUmVx", + "dWVzdBCgHxIaChVTdGFydERlYnVnTG9nUmVzcG9uc2UQoR8SGAoTU3RvcERl", + "YnVnTG9nUmVxdWVzdBCiHxIZChRTdG9wRGVidWdMb2dSZXNwb25zZRCjHxIf", + "ChpTZXREZWJ1Z0xvZ0NhdGVnb3J5UmVxdWVzdBCkHxIgChtTZXREZWJ1Z0xv", + "Z0NhdGVnb3J5UmVzcG9uc2UQpR8SIQocU2V0dXBEZWJ1Z0Rpc3JpYnV0b3Jz", + "UmVxdWVzdBCmHxIiCh1TZXR1cERlYnVnRGlzcmlidXRvcnNSZXNwb25zZRCn", + "HxInCiJVcGxvYWRIYXJkd2FyZUNvbmZpZ3VyYXRpb25SZXF1ZXN0EIgnEigK", + "I1VwbG9hZEhhcmR3YXJlQ29uZmlndXJhdGlvblJlc3BvbnNlEIknEhcKElN5", + "c3RlbVJlc2V0UmVxdWVzdBCKJxIYChNTeXN0ZW1SZXNldFJlc3BvbnNlEIsn", + "EhUKEEtlZXBBbGl2ZVJlcXVlc3QQ8C4SFgoRS2VlcEFsaXZlUmVzcG9uc2UQ", + "8S4SEwoOQ29ubmVjdFJlcXVlc3QQ8i4SFAoPQ29ubmVjdFJlc3BvbnNlEPMu", + "EhYKEURpc2Nvbm5lY3RSZXF1ZXN0EPQuEhcKEkRpc2Nvbm5lY3RSZXNwb25z", + "ZRD1LhIWChFGaWxlVXBsb2FkUmVxdWVzdBDYNhIXChJGaWxlVXBsb2FkUmVz", + "cG9uc2UQ2TYSGwoWRmlsZUNodW5rVXBsb2FkUmVxdWVzdBDaNhIcChdGaWxl", + "Q2h1bmtVcGxvYWRSZXNwb25zZRDbNhIaChVFeGVjdXRlUHJvY2Vzc1JlcXVl", + "c3QQ3DYSGwoWRXhlY3V0ZVByb2Nlc3NSZXNwb25zZRDdNhIXChJLaWxsUHJv", + "Y2Vzc1JlcXVlc3QQ3jYSGAoTS2lsbFByb2Nlc3NSZXNwb25zZRDfNhISCg1D", + "cmVhdGVSZXF1ZXN0EOA2EhMKDkNyZWF0ZVJlc3BvbnNlEOE2EhIKDURlbGV0", + "ZVJlcXVlc3QQ4jYSEwoORGVsZXRlUmVzcG9uc2UQ4zYSGgoVR2V0U3RvcmFn", + "ZUluZm9SZXF1ZXN0EOQ2EhsKFkdldFN0b3JhZ2VJbmZvUmVzcG9uc2UQ5TYS", + "FAoPR2V0RmlsZXNSZXF1ZXN0EOY2EhUKEEdldEZpbGVzUmVzcG9uc2UQ5zYS", + "GAoTRmlsZURvd25sb2FkUmVxdWVzdBDoNhIZChRGaWxlRG93bmxvYWRSZXNw", + "b25zZRDpNhIdChhGaWxlQ2h1bmtEb3dubG9hZFJlcXVlc3QQ6jYSHgoZRmls", + "ZUNodW5rRG93bmxvYWRSZXNwb25zZRDrNhIbChZWYWxpZGF0ZVZlcnNpb25S", + "ZXF1ZXN0EOw2EhwKF1ZhbGlkYXRlVmVyc2lvblJlc3BvbnNlEO02EhsKFkFj", + "dGl2YXRlVmVyc2lvblJlcXVlc3QQ7jYSHAoXQWN0aXZhdGVWZXJzaW9uUmVz", + "cG9uc2UQ7zYSIQocR2V0VmVyc2lvbkRlc2NyaXB0b3JzUmVxdWVzdBDwNhIi", + "Ch1HZXRWZXJzaW9uRGVzY3JpcHRvcnNSZXNwb25zZRDxNhIZChREaXNwZW5z", + "ZXJEYXRhUmVxdWVzdBDAPhIaChVEaXNwZW5zZXJEYXRhUmVzcG9uc2UQwT4S", + "HAoXTWlkVGFua0RhdGFTZXR1cFJlcXVlc3QQwj4SHQoYTWlkVGFua0RhdGFT", + "ZXR1cFJlc3BvbnNlEMM+EiIKHU1hY2hpbmVDYWxpYnJhdGlvbkRhdGFSZXF1", + "ZXN0EMQ+EiMKHk1hY2hpbmVDYWxpYnJhdGlvbkRhdGFSZXNwb25zZRDFPhIe", + "ChlNYWluQ2FyZFN0b3JlZERhdGFSZXF1ZXN0EMY+Eh8KGk1haW5DYXJkU3Rv", + "cmVkRGF0YVJlc3BvbnNlEMc+EiQKH1N0YXJ0TWFjaGluZVN0YXR1c1VwZGF0", + "ZVJlcXVlc3QQqEYSJQogU3RhcnRNYWNoaW5lU3RhdHVzVXBkYXRlUmVzcG9u", + "c2UQqUYSIwoeU3RvcE1hY2hpbmVTdGF0dXNVcGRhdGVSZXF1ZXN0EKpGEiQK", + "H1N0b3BNYWNoaW5lU3RhdHVzVXBkYXRlUmVzcG9uc2UQq0YSIQocU2V0SW5r", + "QXV0b0ZpbGxpbmdNb2RlUmVxdWVzdBCsRhIiCh1TZXRJbmtBdXRvRmlsbGlu", + "Z01vZGVSZXNwb25zZRCtRhIcChdTcG9vbFR5cGVDaGFuZ2VkUmVxdWVzdBCu", + "RhIdChhTcG9vbFR5cGVDaGFuZ2VkUmVzcG9uc2UQr0YSHAoXU2V0UG93ZXJE", + "b3duVGltZVJlcXVlc3QQsEYSHQoYU2V0UG93ZXJEb3duVGltZVJlc3BvbnNl", + "ELFGEh0KGFNldEJ1enplclNldHRpbmdzUmVxdWVzdBCyRhIeChlTZXRCdXp6", + "ZXJTZXR0aW5nc1Jlc3BvbnNlELNGEh4KGVNldFdoaXRlVGhyZWFkU2tpcFJl", + "cXVlc3QQtEYSHwoaU2V0V2hpdGVUaHJlYWRTa2lwUmVzcG9uc2UQtUYSGgoV", + "U3RhcnRQb3dlckRvd25SZXF1ZXN0EJBOEhsKFlN0YXJ0UG93ZXJEb3duUmVz", + "cG9uc2UQkU4SGgoVQWJvcnRQb3dlckRvd25SZXF1ZXN0EJJOEhsKFkFib3J0", + "UG93ZXJEb3duUmVzcG9uc2UQk04SGAoTU3RhcnRQb3dlclVwUmVxdWVzdBCU", + "ThIZChRTdGFydFBvd2VyVXBSZXNwb25zZRCVThIYChNBYm9ydFBvd2VyVXBS", + "ZXF1ZXN0EJZOEhkKFEFib3J0UG93ZXJVcFJlc3BvbnNlEJdOEhMKDlN0YW5k", + "QnlSZXF1ZXN0EJhOEhQKD1N0YW5kQnlSZXNwb25zZRCZThIeChlTdGFydFRo", + "cmVhZExvYWRpbmdSZXF1ZXN0EPhVEh8KGlN0YXJ0VGhyZWFkTG9hZGluZ1Jl", + "c3BvbnNlEPlVEiEKHENvbnRpbnVlVGhyZWFkTG9hZGluZ1JlcXVlc3QQ+lUS", + "IgodQ29udGludWVUaHJlYWRMb2FkaW5nUmVzcG9uc2UQ+1USHQoYU3RvcFRo", + "cmVhZExvYWRpbmdSZXF1ZXN0EPxVEh4KGVN0b3BUaHJlYWRMb2FkaW5nUmVz", + "cG9uc2UQ/VUSHAoXVHJ5VGhyZWFkTG9hZGluZ1JlcXVlc3QQ/lUSHQoYVHJ5", + "VGhyZWFkTG9hZGluZ1Jlc3BvbnNlEP9VEiAKG0F0dGVtcHRUaHJlYWRKb2dn", + "aW5nUmVxdWVzdBCAVhIhChxBdHRlbXB0VGhyZWFkSm9nZ2luZ1Jlc3BvbnNl", + "EIFWEh4KGUFib3J0VGhyZWFkTG9hZGluZ1JlcXVlc3QQglYSHwoaQWJvcnRU", + "aHJlYWRMb2FkaW5nUmVzcG9uc2UQg1YSIQocU3RhcnRJbmtGaWxsaW5nU3Rh", + "dHVzUmVxdWVzdBDgXRIiCh1TdGFydElua0ZpbGxpbmdTdGF0dXNSZXNwb25z", + "ZRDhXRIeChlJbml0aWF0ZUlua0ZpbGxpbmdSZXF1ZXN0EOJdEh8KGkluaXRp", + "YXRlSW5rRmlsbGluZ1Jlc3BvbnNlEONdEhgKE1dhc3RlUmVwbGFjZVJlcXVl", + "c3QQ5F0SGQoUV2FzdGVSZXBsYWNlUmVzcG9uc2UQ5V0SHAoXU2V0SmVycmlj", + "YW5MZXZlbFJlcXVlc3QQ5l0SHQoYU2V0SmVycmljYW5MZXZlbFJlc3BvbnNl", + "EOddEhwKF1B1dERhdGFTdG9yZUl0ZW1SZXF1ZXN0EMhlEh0KGFB1dERhdGFT", + "dG9yZUl0ZW1SZXNwb25zZRDJZRIcChdHZXREYXRhU3RvcmVJdGVtUmVxdWVz", + "dBDKZRIdChhHZXREYXRhU3RvcmVJdGVtUmVzcG9uc2UQy2USIQocRGF0YVN0", + "b3JlSXRlbU1vZGlmaWVkUmVxdWVzdBDMZRIiCh1EYXRhU3RvcmVJdGVtTW9k", + "aWZpZWRSZXNwb25zZRDNZUIcChpjb20udHdpbmUudGFuZ28ucG1yLmNvbW1v", + "bmIGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.Common.MessageType), }, null)); @@ -431,6 +433,8 @@ namespace Tango.PMR.Common { [pbr::OriginalName("BitResultsResponse")] BitResultsResponse = 2047, [pbr::OriginalName("ResetCardRequest")] ResetCardRequest = 2048, [pbr::OriginalName("ResetCardResponse")] ResetCardResponse = 2049, + [pbr::OriginalName("StartTelemetryWireRequest")] StartTelemetryWireRequest = 2050, + [pbr::OriginalName("StartTelemetryWireResponse")] StartTelemetryWireResponse = 2051, /// <summary> ///Printing /// </summary> diff --git a/Software/Visual_Studio/Tango.PMR/Diagnostics/StartTelemetryWireRequest.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/StartTelemetryWireRequest.cs new file mode 100644 index 000000000..352ef2ffa --- /dev/null +++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/StartTelemetryWireRequest.cs @@ -0,0 +1,131 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: StartTelemetryWireRequest.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 StartTelemetryWireRequest.proto</summary> + public static partial class StartTelemetryWireRequestReflection { + + #region Descriptor + /// <summary>File descriptor for StartTelemetryWireRequest.proto</summary> + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static StartTelemetryWireRequestReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "Ch9TdGFydFRlbGVtZXRyeVdpcmVSZXF1ZXN0LnByb3RvEhVUYW5nby5QTVIu", + "RGlhZ25vc3RpY3MiGwoZU3RhcnRUZWxlbWV0cnlXaXJlUmVxdWVzdEIhCh9j", + "b20udHdpbmUudGFuZ28ucG1yLmRpYWdub3N0aWNzYgZwcm90bzM=")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { }, + new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.StartTelemetryWireRequest), global::Tango.PMR.Diagnostics.StartTelemetryWireRequest.Parser, null, null, null, null) + })); + } + #endregion + + } + #region Messages + public sealed partial class StartTelemetryWireRequest : pb::IMessage<StartTelemetryWireRequest> { + private static readonly pb::MessageParser<StartTelemetryWireRequest> _parser = new pb::MessageParser<StartTelemetryWireRequest>(() => new StartTelemetryWireRequest()); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser<StartTelemetryWireRequest> Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::Tango.PMR.Diagnostics.StartTelemetryWireRequestReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public StartTelemetryWireRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public StartTelemetryWireRequest(StartTelemetryWireRequest other) : this() { + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public StartTelemetryWireRequest Clone() { + return new StartTelemetryWireRequest(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as StartTelemetryWireRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(StartTelemetryWireRequest 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(StartTelemetryWireRequest 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/StartTelemetryWireResponse.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/StartTelemetryWireResponse.cs new file mode 100644 index 000000000..b9155dcb4 --- /dev/null +++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/StartTelemetryWireResponse.cs @@ -0,0 +1,188 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: StartTelemetryWireResponse.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 StartTelemetryWireResponse.proto</summary> + public static partial class StartTelemetryWireResponseReflection { + + #region Descriptor + /// <summary>File descriptor for StartTelemetryWireResponse.proto</summary> + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static StartTelemetryWireResponseReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "CiBTdGFydFRlbGVtZXRyeVdpcmVSZXNwb25zZS5wcm90bxIVVGFuZ28uUE1S", + "LkRpYWdub3N0aWNzIjkKGlN0YXJ0VGVsZW1ldHJ5V2lyZVJlc3BvbnNlEgwK", + "BE5hbWUYASABKAkSDQoFVmFsdWUYAiABKAJCIQofY29tLnR3aW5lLnRhbmdv", + "LnBtci5kaWFnbm9zdGljc2IGcHJvdG8z")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { }, + new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.StartTelemetryWireResponse), global::Tango.PMR.Diagnostics.StartTelemetryWireResponse.Parser, new[]{ "Name", "Value" }, null, null, null) + })); + } + #endregion + + } + #region Messages + public sealed partial class StartTelemetryWireResponse : pb::IMessage<StartTelemetryWireResponse> { + private static readonly pb::MessageParser<StartTelemetryWireResponse> _parser = new pb::MessageParser<StartTelemetryWireResponse>(() => new StartTelemetryWireResponse()); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser<StartTelemetryWireResponse> Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::Tango.PMR.Diagnostics.StartTelemetryWireResponseReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public StartTelemetryWireResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public StartTelemetryWireResponse(StartTelemetryWireResponse other) : this() { + name_ = other.name_; + value_ = other.value_; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public StartTelemetryWireResponse Clone() { + return new StartTelemetryWireResponse(this); + } + + /// <summary>Field number for the "Name" field.</summary> + public const int NameFieldNumber = 1; + private string name_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string Name { + get { return name_; } + set { + name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// <summary>Field number for the "Value" field.</summary> + public const int ValueFieldNumber = 2; + private float value_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public float Value { + get { return value_; } + set { + value_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as StartTelemetryWireResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(StartTelemetryWireResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Name != other.Name) return false; + if (Value != other.Value) return false; + return true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (Name.Length != 0) hash ^= Name.GetHashCode(); + if (Value != 0F) hash ^= Value.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 (Name.Length != 0) { + output.WriteRawTag(10); + output.WriteString(Name); + } + if (Value != 0F) { + output.WriteRawTag(21); + output.WriteFloat(Value); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (Name.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); + } + if (Value != 0F) { + size += 1 + 4; + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(StartTelemetryWireResponse other) { + if (other == null) { + return; + } + if (other.Name.Length != 0) { + Name = other.Name; + } + if (other.Value != 0F) { + Value = other.Value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + input.SkipLastField(); + break; + case 10: { + Name = input.ReadString(); + break; + } + case 21: { + Value = input.ReadFloat(); + break; + } + } + } + } + + } + + #endregion + +} + +#endregion Designer generated code 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 { } } + /// <summary>Field number for the "Pumps" field.</summary> + public const int PumpsFieldNumber = 12; + private static readonly pb::FieldCodec<global::Tango.PMR.MachineStatus.PumpStatus> _repeated_pumps_codec + = pb::FieldCodec.ForMessage(98, global::Tango.PMR.MachineStatus.PumpStatus.Parser); + private readonly pbc::RepeatedField<global::Tango.PMR.MachineStatus.PumpStatus> pumps_ = new pbc::RepeatedField<global::Tango.PMR.MachineStatus.PumpStatus>(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField<global::Tango.PMR.MachineStatus.PumpStatus> 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 { + + /// <summary>Holder for reflection information generated from PumpState.proto</summary> + public static partial class PumpStateReflection { + + #region Descriptor + /// <summary>File descriptor for PumpState.proto</summary> + 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 { + + /// <summary>Holder for reflection information generated from PumpStatus.proto</summary> + public static partial class PumpStatusReflection { + + #region Descriptor + /// <summary>File descriptor for PumpStatus.proto</summary> + 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<PumpStatus> { + private static readonly pb::MessageParser<PumpStatus> _parser = new pb::MessageParser<PumpStatus>(() => new PumpStatus()); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser<PumpStatus> 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); + } + + /// <summary>Field number for the "Type" field.</summary> + 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; + } + } + + /// <summary>Field number for the "Index" field.</summary> + public const int IndexFieldNumber = 2; + private int index_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int Index { + get { return index_; } + set { + index_ = value; + } + } + + /// <summary>Field number for the "Capacity" field.</summary> + public const int CapacityFieldNumber = 3; + private long capacity_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long Capacity { + get { return capacity_; } + set { + capacity_ = value; + } + } + + /// <summary>Field number for the "State" field.</summary> + 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 { + + /// <summary>Holder for reflection information generated from PumpType.proto</summary> + public static partial class PumpTypeReflection { + + #region Descriptor + /// <summary>File descriptor for PumpType.proto</summary> + 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 diff --git a/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj index b96cd5d12..79dab6329 100644 --- a/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj +++ b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj @@ -163,6 +163,8 @@ <Compile Include="Diagnostics\StartDiagnosticsResponse.cs" /> <Compile Include="Diagnostics\StartEventsNotificationRequest.cs" /> <Compile Include="Diagnostics\StartEventsNotificationResponse.cs" /> + <Compile Include="Diagnostics\StartTelemetryWireRequest.cs" /> + <Compile Include="Diagnostics\StartTelemetryWireResponse.cs" /> <Compile Include="Diagnostics\StopDiagnosticsRequest.cs" /> <Compile Include="Diagnostics\StopDiagnosticsResponse.cs" /> <Compile Include="Diagnostics\StopEventsNotificationRequest.cs" /> @@ -305,6 +307,9 @@ <Compile Include="MachineStatus\IDSPackLevel.cs" /> <Compile Include="MachineStatus\MachineState.cs" /> <Compile Include="MachineStatus\MachineStatus.cs" /> + <Compile Include="MachineStatus\PumpState.cs" /> + <Compile Include="MachineStatus\PumpStatus.cs" /> + <Compile Include="MachineStatus\PumpType.cs" /> <Compile Include="MachineStatus\SetBuzzerSettingsRequest.cs" /> <Compile Include="MachineStatus\SetBuzzerSettingsResponse.cs" /> <Compile Include="MachineStatus\SetInkAutoFillingModeRequest.cs" /> @@ -531,7 +536,7 @@ </PropertyGroup> <ProjectExtensions> <VisualStudio> - <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" /> + <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" /> </VisualStudio> </ProjectExtensions> </Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryWireStreamingSource.cs b/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryWireStreamingSource.cs new file mode 100644 index 000000000..41ac42324 --- /dev/null +++ b/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryWireStreamingSource.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Integration.Operation; +using Tango.Telemetry.Telemetries; + +namespace Tango.Telemetry.Sources +{ + public class TelemetryWireStreamingSource : ITelemetryStreamingSource + { + private IMachineOperator _machineOperator; + + public bool IsStarted { get; private set; } + public string Name { get; } = "Wire Streaming"; + public bool RequiresTelemetryDuplicationTracking { get; } + + public event EventHandler<TelemetryAvailableEventArgs> TelemetryAvailable; + + public TelemetryWireStreamingSource(IMachineOperator machineOperator) + { + _machineOperator = machineOperator; + } + + public void Start() + { + if (!IsStarted) + { + IsStarted = true; + _machineOperator.TelemetryWireAvailable += MachineOperator_TelemetryWireAvailable; + } + } + + public void Stop() + { + if (IsStarted) + { + IsStarted = false; + _machineOperator.TelemetryWireAvailable -= MachineOperator_TelemetryWireAvailable; + } + } + + private void MachineOperator_TelemetryWireAvailable(object sender, PMR.Diagnostics.StartTelemetryWireResponse e) + { + if (IsStarted) + { + TelemetryAvailable?.Invoke(this, new TelemetryAvailableEventArgs() + { + DisableDeliveryRetries = true, + TelemetryObject = new TelemetryWire() + { + ID = String.Empty, + Time = DateTime.UtcNow, + Name = e.Name, + Value = e.Value + } + }); + } + } + + public void Dispose() + { + Stop(); + } + } +} diff --git a/Software/Visual_Studio/Tango.Telemetry/Tango.Telemetry.csproj b/Software/Visual_Studio/Tango.Telemetry/Tango.Telemetry.csproj index 80c49ccfa..8b0c4dcc8 100644 --- a/Software/Visual_Studio/Tango.Telemetry/Tango.Telemetry.csproj +++ b/Software/Visual_Studio/Tango.Telemetry/Tango.Telemetry.csproj @@ -278,11 +278,13 @@ <Compile Include="Sources\TelemetryMachineStatusStreamingSource.cs" /> <Compile Include="Sources\TelemetryMachineUpdatesStreamingSource.cs" /> <Compile Include="Sources\TelemetryMachineUpdatesHistorySource.cs" /> + <Compile Include="Sources\TelemetryWireStreamingSource.cs" /> <Compile Include="Telemetries\TelemetryEvent.cs" /> <Compile Include="Telemetries\TelemetryJobStatus.cs" /> <Compile Include="Telemetries\TelemetryLog.cs" /> <Compile Include="Telemetries\TelemetryMachineStatus.cs" /> <Compile Include="Telemetries\TelemetryMachineUpdate.cs" /> + <Compile Include="Telemetries\TelemetryWire.cs" /> <Compile Include="TelemetryConfigurableSource.cs" /> <Compile Include="TelemetryHistorySourceCheckPoint.cs" /> <Compile Include="TelemetryHistorySourceDirection.cs" /> diff --git a/Software/Visual_Studio/Tango.Telemetry/Telemetries/TelemetryWire.cs b/Software/Visual_Studio/Tango.Telemetry/Telemetries/TelemetryWire.cs new file mode 100644 index 000000000..5b3d82fbc --- /dev/null +++ b/Software/Visual_Studio/Tango.Telemetry/Telemetries/TelemetryWire.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.Telemetry.Telemetries +{ + public class TelemetryWire : TelemetryBase + { + public String Name { get; set; } + public double Value { get; set; } + } +} |
