diff options
Diffstat (limited to 'Software/Visual_Studio')
27 files changed, 656 insertions, 417 deletions
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/Events/IEventsProvider.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/Events/IEventsProvider.cs index 799031234..a5ea88b5e 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.Common/Events/IEventsProvider.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/Events/IEventsProvider.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL.Entities; +using Tango.PMR.Diagnostics; namespace Tango.FSE.Common.Events { @@ -28,5 +29,12 @@ namespace Tango.FSE.Common.Events /// Gets the current active events. /// </summary> ObservableCollection<MachinesEvent> ActiveEvents { get; } + + /// <summary> + /// Emulates a hardware event that will last for the specified timeout. + /// </summary> + /// <param name="ev">Type of the event.</param> + /// <param name="timeout">The timeout.</param> + Task PushEmulatedEvent(Event ev, TimeSpan timeout); } } diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Dialogs/EmulateMachineEventDialogView.xaml b/Software/Visual_Studio/FSE/Tango.FSE.UI/Dialogs/EmulateMachineEventDialogView.xaml new file mode 100644 index 000000000..63d25e706 --- /dev/null +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Dialogs/EmulateMachineEventDialogView.xaml @@ -0,0 +1,63 @@ +<UserControl x:Class="Tango.FSE.UI.Dialogs.EmulateMachineEventDialogView" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" + xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls" + xmlns:controls="clr-namespace:Tango.SharedUI.Controls;assembly=Tango.SharedUI" + xmlns:local="clr-namespace:Tango.FSE.UI.Dialogs" + mc:Ignorable="d" + Height="300" Width="700" d:DataContext="{d:DesignInstance Type=local:EmulateMachineEventDialogViewVM, IsDesignTimeCreatable=False}" Background="{StaticResource FSE_PrimaryBackgroundLightBrush}" Foreground="{StaticResource FSE_PrimaryForegroundBrush}"> + <Grid> + <DockPanel Margin="10"> + <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0"> + <materialDesign:PackIcon Kind="LightningBolt" Width="48" Height="48" Foreground="{StaticResource FSE_EmulatorBrush}" /> + <TextBlock Text="Emulate Machine Event" FontWeight="SemiBold" VerticalAlignment="Center" Margin="10 0 0 0" FontSize="{StaticResource FSE_MessageBoxTitleFontSize}"></TextBlock> + </StackPanel> + + <TextBlock DockPanel.Dock="Top" TextWrapping="Wrap" Margin="10"> + <Run>This dialog can help you emulate a machine hardware event for demonstration or testing purposes.</Run> + <LineBreak/> + <Run>Please select the event type and a duration for the event to remain active.</Run> + </TextBlock> + + <StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10 20 10 0" Width="650"> + <DockPanel> + <StackPanel DockPanel.Dock="Right" Margin="50 0 0 0"> + <TextBlock Foreground="{StaticResource FSE_EmulatorBrush}">Duration (seconds)</TextBlock> + <mahapps:NumericUpDown Height="36" HasDecimals="False" Value="{Binding DurationSeconds,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Maximum="500" Minimum="1" /> + </StackPanel> + + <StackPanel> + <TextBlock Foreground="{StaticResource FSE_EmulatorBrush}">Event Type</TextBlock> + <controls:SearchComboBox Margin="0 5 0 0" Height="31" FontSize="{StaticResource FSE_SmallFontSize}" ItemsSource="{Binding EventTypes}" SelectedItem="{Binding SelectedEventType,Mode=TwoWay}" SearchProperty="Name"> + <controls:SearchComboBox.ItemTemplate> + <DataTemplate> + <DockPanel> + <materialDesign:PackIcon Opacity="0.5" Kind="LightningBolt" Width="24" Height="24" Foreground="{StaticResource FSE_EmulatorBrush}" /> + <StackPanel Margin="10 0 0 0"> + <TextBlock> + <Run FontWeight="SemiBold">#</Run><Run FontWeight="SemiBold" Text="{Binding Code}"></Run> + <Run></Run> + <Run></Run> + <Run Text="{Binding Name}"></Run> + <LineBreak/> + <Run Text="{Binding Title}" FontSize="{StaticResource FSE_SmallerFontSize}" Foreground="{StaticResource FSE_GrayBrush}"></Run> + </TextBlock> + </StackPanel> + </DockPanel> + </DataTemplate> + </controls:SearchComboBox.ItemTemplate> + </controls:SearchComboBox> + </StackPanel> + </DockPanel> + + <StackPanel Margin="0 20 0 0"> + <TextBlock Foreground="{StaticResource FSE_EmulatorBrush}">Message</TextBlock> + <TextBox Style="{StaticResource FSE_Rounded_Corners_TextBox_Multiline}" Text="{Binding Message}" Margin="0 5 0 0" Height="50" FontSize="{StaticResource FSE_SmallFontSize}"></TextBox> + </StackPanel> + </StackPanel> + </DockPanel> + </Grid> +</UserControl> diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Dialogs/EmulateMachineEventDialogView.xaml.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/Dialogs/EmulateMachineEventDialogView.xaml.cs new file mode 100644 index 000000000..177e99a6a --- /dev/null +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Dialogs/EmulateMachineEventDialogView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace Tango.FSE.UI.Dialogs +{ + /// <summary> + /// Interaction logic for EmulateMachineEventDialogView.xaml + /// </summary> + public partial class EmulateMachineEventDialogView : UserControl + { + public EmulateMachineEventDialogView() + { + InitializeComponent(); + } + } +} diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Dialogs/EmulateMachineEventDialogViewVM.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/Dialogs/EmulateMachineEventDialogViewVM.cs new file mode 100644 index 000000000..0026a47ff --- /dev/null +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Dialogs/EmulateMachineEventDialogViewVM.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.BL.Entities; +using Tango.FSE.Common; + +namespace Tango.FSE.UI.Dialogs +{ + public class EmulateMachineEventDialogViewVM : FSEDialogViewVM + { + public List<EventType> EventTypes { get; set; } + + private EventType _selectedEventType; + public EventType SelectedEventType + { + get { return _selectedEventType; } + set { _selectedEventType = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } + } + + private int _durationSeconds; + public int DurationSeconds + { + get { return _durationSeconds; } + set { _durationSeconds = value; RaisePropertyChangedAuto(); } + } + + public String Message { get; set; } + + public EmulateMachineEventDialogViewVM() + { + EventTypes = new List<EventType>(); + DurationSeconds = 5; + } + + protected override bool CanOK() + { + return base.CanOK() && SelectedEventType != null && DurationSeconds > 0; + } + } +} diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Events/DefaultEventsProvider.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/Events/DefaultEventsProvider.cs index b5791032d..a4ff03fc5 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Events/DefaultEventsProvider.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Events/DefaultEventsProvider.cs @@ -17,6 +17,8 @@ using Tango.FSE.Common.Notifications; using Tango.FSE.Common.Threading; using Tango.FSE.UI.ViewModels; using Tango.FSE.UI.Views; +using Tango.PMR.Diagnostics; +using Tango.PPC.Shared.Events; namespace Tango.FSE.UI.Events { @@ -226,5 +228,14 @@ namespace Tango.FSE.UI.Events { RaisePropertyChanged(nameof(HasActiveEvents)); } + + public async Task PushEmulatedEvent(Event ev, TimeSpan timeout) + { + await MachineProvider.MachineOperator.SendGenericRequest<PushEmulatedEventRequest, PushEmulatedEventResponse>(new PushEmulatedEventRequest() + { + Event = ev, + Timeout = timeout + }); + } } } diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Tango.FSE.UI.csproj b/Software/Visual_Studio/FSE/Tango.FSE.UI/Tango.FSE.UI.csproj index 4a1934404..667c97963 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Tango.FSE.UI.csproj +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Tango.FSE.UI.csproj @@ -282,6 +282,10 @@ </Compile> <Compile Include="Dialogs\BugReportFullViewVM.cs" /> <Compile Include="Dialogs\BugReportViewVM.cs" /> + <Compile Include="Dialogs\EmulateMachineEventDialogView.xaml.cs"> + <DependentUpon>EmulateMachineEventDialogView.xaml</DependentUpon> + </Compile> + <Compile Include="Dialogs\EmulateMachineEventDialogViewVM.cs" /> <Compile Include="Dialogs\MachineConnectionBaseViewVM.cs" /> <Compile Include="Dialogs\MachineConnectionEmulatorView.xaml.cs"> <DependentUpon>MachineConnectionEmulatorView.xaml</DependentUpon> @@ -446,6 +450,10 @@ <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> + <Page Include="Dialogs\EmulateMachineEventDialogView.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> <Page Include="Dialogs\MachineConnectionEmulatorView.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/ViewModels/EventsViewVM.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/ViewModels/EventsViewVM.cs index 9c655de78..57279f276 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/ViewModels/EventsViewVM.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/ViewModels/EventsViewVM.cs @@ -6,9 +6,11 @@ using System.Text; using System.Threading.Tasks; using Tango.BL.Entities; using Tango.BL.Enumerations; +using Tango.Core.Commands; using Tango.FSE.Common; using Tango.FSE.Common.Navigation; using Tango.FSE.UI.Contracts; +using Tango.FSE.UI.Dialogs; using static Tango.FSE.UI.ViewModels.EventsViewVM; namespace Tango.FSE.UI.ViewModels @@ -62,9 +64,45 @@ namespace Tango.FSE.UI.ViewModels set { _selectedEvent = value; RaisePropertyChangedAuto(); } } + public RelayCommand EmulateMachineEventCommand { get; set; } + public EventsViewVM() { CanExecuteJob = true; + EmulateMachineEventCommand = new RelayCommand(EmulateMachineEvent); + } + + private async void EmulateMachineEvent() + { + var events = await Services.MachineEventsService.GetAllEventTypes(); + + events = events.Where(x => x.Group != EventTypeGroups.Application && x.Group != EventTypeGroups.Jobs && x.Group != EventTypeGroups.Transport).OrderBy(x => x.Code).ToList(); + + var vm = await NotificationProvider.ShowDialog(new EmulateMachineEventDialogViewVM() + { + EventTypes = events + }); + + if (vm.DialogResult) + { + try + { + using (NotificationProvider.PushTaskItem("Pushing emulated event...")) + { + await Task.Delay(1000); + await EventsProvider.PushEmulatedEvent(new PMR.Diagnostics.Event() + { + Type = (PMR.Diagnostics.EventType)vm.SelectedEventType.Type, + Message = vm.Message.ToStringOrEmpty() + }, TimeSpan.FromSeconds(vm.DurationSeconds)); + } + } + catch (Exception ex) + { + LogManager.Log(ex, "Error pushing emulated event."); + await NotificationProvider.ShowError($"Error pushing emulated event.\n{ex.FlattenMessage()}"); + } + } } public override void OnApplicationStarted() diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/EventsView.xaml b/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/EventsView.xaml index c3715700b..58b194163 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/EventsView.xaml +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/EventsView.xaml @@ -8,6 +8,7 @@ xmlns:controls="clr-namespace:Tango.FSE.Common.Controls;assembly=Tango.FSE.Common" xmlns:material="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:resolution="clr-namespace:Tango.FSE.Common.Resolution;assembly=Tango.FSE.Common" + xmlns:auth="clr-namespace:Tango.FSE.Common.Authorization;assembly=Tango.FSE.Common" xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf" xmlns:local="clr-namespace:Tango.FSE.UI.Views" mc:Ignorable="d" @@ -231,6 +232,8 @@ </TextBlock.Style> </TextBlock> </DockPanel> + + <Button Margin="0 20 0 0" auth:AuthorizationHelper.Mode="Collapsed" auth:AuthorizationHelper.Permission="FSE_EmulateMachineEvents" Command="{Binding EmulateMachineEventCommand}" ToolTip="Emulate a machine hardware event (for testing purpose only)" Style="{StaticResource FSE_Button_Polygon}" Width="170" IsEnabled="{Binding MachineProvider.IsPPCAvailable}">Emulate Machine Event</Button> </StackPanel> </DockPanel> </StackPanel> diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs index f7269e0b1..c0dc61150 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs @@ -147,7 +147,7 @@ namespace Tango.PPC.Maintenance.ViewModels } else { - return true; + return MachineProvider.MachineOperator.MachineEventsStateProvider.Events.Any(x => x.Type == BL.Enumerations.EventTypes.DYEING_HEAD_COVER_IS_OPEN); } }); diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/EventLogging/DefaultEventLogger.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/EventLogging/DefaultEventLogger.cs index e9bcd4246..ee96a77a5 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/EventLogging/DefaultEventLogger.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/EventLogging/DefaultEventLogger.cs @@ -17,6 +17,9 @@ using Tango.PPC.Common.Application; using Tango.PPC.Common.Authentication; using Tango.PPC.Common.Connection; using Tango.Transport; +using Tango.PPC.Common.ExternalBridge; +using Tango.PPC.Shared.Events; +using Tango.Core.DI; namespace Tango.PPC.Common.EventLogging { @@ -52,6 +55,21 @@ namespace Tango.PPC.Common.EventLogging #endregion + private IPPCExternalBridgeService _externalBridge; + [TangoInject(Mode = TangoInjectMode.WhenAvailable)] + public IPPCExternalBridgeService ExternalBridgeService + { + get { return _externalBridge; } + set + { + if (_externalBridge != value) + { + _externalBridge = value; + _externalBridge.RegisterRequestHandler(this); + } + } + } + #region Constructors /// <summary> @@ -396,5 +414,21 @@ namespace Tango.PPC.Common.EventLogging } #endregion + + #region External Bridge Handler + + [ExternalBridgeRequestHandlerMethod(typeof(PushEmulatedEventRequest), RequestHandlerLoggingMode.LogRequestNameAndContent)] + public async Task OnStartPerformanceUpdatesRequest(PushEmulatedEventRequest request, String token, ExternalBridgeReceiver receiver) + { + _machineProvider.MachineOperator.PushEmulatedEvent(request.Event, request.Timeout); + await receiver.SendGenericResponse(new PushEmulatedEventResponse(), token); + } + + public void OnReceiverDisconnected(ExternalBridgeReceiver receiver) + { + + } + + #endregion } } diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/EventLogging/IEventLogger.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/EventLogging/IEventLogger.cs index 10560e034..81cce927d 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/EventLogging/IEventLogger.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/EventLogging/IEventLogger.cs @@ -5,6 +5,7 @@ using System.Text; using System.Threading.Tasks; using Tango.BL.Entities; using Tango.BL.Enumerations; +using Tango.Integration.ExternalBridge; using Tango.PMR.Diagnostics; namespace Tango.PPC.Common.EventLogging @@ -12,7 +13,7 @@ namespace Tango.PPC.Common.EventLogging /// <summary> /// Represents a database events logger. /// </summary> - public interface IEventLogger + public interface IEventLogger : IExternalBridgeRequestHandler { /// <summary> /// Occurs when a new machine event has been received. diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/Events/PushEmulatedEventRequest.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Events/PushEmulatedEventRequest.cs new file mode 100644 index 000000000..3546c285f --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Events/PushEmulatedEventRequest.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.PMR.Diagnostics; + +namespace Tango.PPC.Shared.Events +{ + public class PushEmulatedEventRequest + { + public Event Event { get; set; } + public TimeSpan Timeout { get; set; } + + public PushEmulatedEventRequest() + { + Timeout = TimeSpan.FromSeconds(5); + } + } +} diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/Events/PushEmulatedEventResponse.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Events/PushEmulatedEventResponse.cs new file mode 100644 index 000000000..2fb3a2a70 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Events/PushEmulatedEventResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.PPC.Shared.Events +{ + public class PushEmulatedEventResponse + { + } +} diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/Tango.PPC.Shared.csproj b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Tango.PPC.Shared.csproj index bfd4d587b..8c3908bba 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Shared/Tango.PPC.Shared.csproj +++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Tango.PPC.Shared.csproj @@ -62,6 +62,8 @@ <Compile Include="..\..\Versioning\GlobalVersionInfo.cs"> <Link>GlobalVersionInfo.cs</Link> </Compile> + <Compile Include="Events\PushEmulatedEventRequest.cs" /> + <Compile Include="Events\PushEmulatedEventResponse.cs" /> <Compile Include="Information\GetMachineInformationRequest.cs" /> <Compile Include="Information\GetMachineInformationResponse.cs" /> <Compile Include="Information\InformationPackage.cs" /> diff --git a/Software/Visual_Studio/Resources/Events Revisions/Tango alarm events handling chart_Rev28.xlsx b/Software/Visual_Studio/Resources/Events Revisions/Tango alarm events handling chart_Rev28.xlsx Binary files differnew file mode 100644 index 000000000..0df827d73 --- /dev/null +++ b/Software/Visual_Studio/Resources/Events Revisions/Tango alarm events handling chart_Rev28.xlsx diff --git a/Software/Visual_Studio/Tango.BL/Enumerations/EventTypes.cs b/Software/Visual_Studio/Tango.BL/Enumerations/EventTypes.cs index fe0009818..92096878e 100644 --- a/Software/Visual_Studio/Tango.BL/Enumerations/EventTypes.cs +++ b/Software/Visual_Studio/Tango.BL/Enumerations/EventTypes.cs @@ -1292,6 +1292,12 @@ namespace Tango.BL.Enumerations DYEING_HEAD_TUNNEL_LID_IS_OPEN = 5098, /// <summary> + /// (Dyeing head cover is open. Cannot execute job) + /// </summary> + [Description("Dyeing head cover is open. Cannot execute job")] + DYEING_HEAD_COVER_IS_OPEN = 5099, + + /// <summary> /// (The temperature in the mixer is too high. Cannot execute job) /// </summary> [Description("The temperature in the mixer is too high. Cannot execute job")] diff --git a/Software/Visual_Studio/Tango.BL/Enumerations/HardwareDancerTypes.cs b/Software/Visual_Studio/Tango.BL/Enumerations/HardwareDancerTypes.cs index 385df558b..2684f7dc4 100644 --- a/Software/Visual_Studio/Tango.BL/Enumerations/HardwareDancerTypes.cs +++ b/Software/Visual_Studio/Tango.BL/Enumerations/HardwareDancerTypes.cs @@ -37,5 +37,17 @@ namespace Tango.BL.Enumerations [Description("Right Dancer")] RightDancer = 2, + /// <summary> + /// (Third Dancer) + /// </summary> + [Description("Third Dancer")] + ThirdDancer = 3, + + /// <summary> + /// (Fourth Dancer) + /// </summary> + [Description("Fourth Dancer")] + FourthDancer = 4, + } } diff --git a/Software/Visual_Studio/Tango.BL/Enumerations/Permissions.cs b/Software/Visual_Studio/Tango.BL/Enumerations/Permissions.cs index 231bc4a5e..58a57cbc9 100644 --- a/Software/Visual_Studio/Tango.BL/Enumerations/Permissions.cs +++ b/Software/Visual_Studio/Tango.BL/Enumerations/Permissions.cs @@ -337,5 +337,11 @@ namespace Tango.BL.Enumerations [Description("Allows creating and writing global data store items and collections")] DataStoreCreateWriteGlobal = 1031, + /// <summary> + /// (Allows emulating machine events remotely) + /// </summary> + [Description("Allows emulating machine events remotely")] + FSE_EmulateMachineEvents = 1032, + } } diff --git a/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs index 232446cb6..e7d3cd0e8 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs @@ -550,5 +550,12 @@ namespace Tango.Integration.Operation /// </summary> /// <returns></returns> Task AttemptThreadJogging(); + + /// <summary> + /// Emulates a hardware event that will last for the specified timeout. + /// </summary> + /// <param name="ev">Type of the event.</param> + /// <param name="timeout">The timeout.</param> + void PushEmulatedEvent(Event ev, TimeSpan timeout); } } diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs index 93320c646..bce386bfe 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs @@ -85,6 +85,7 @@ namespace Tango.Integration.Operation private DateTime? _jobUploadingStartDate; private DateTime? _jobHeatingStartDate; private DateTime? _jobActualStartDate; + private List<Event> _emulatedEvents; public static String EmbeddedLogsFolder { get; private set; } public static String EmbeddedLogsTag { get; private set; } @@ -124,6 +125,7 @@ namespace Tango.Integration.Operation /// </summary> public MachineOperator() : base() { + _emulatedEvents = new List<Event>(); ComponentName = $"Machine Operator {_component_counter++}"; DeviceInformation = new DeviceInformation(); MachineEventsStateProvider = new DefaultMachineEventsStateProvider(); @@ -957,7 +959,17 @@ namespace Tango.Integration.Operation { if (MachineEventsStateProvider != null) { - MachineEventsStateProvider.ApplyEvents(response.Events); + var events = response.Events; + + foreach (var emulated in _emulatedEvents) + { + if (!events.Any(x => x.Type == emulated.Type)) + { + events.Add(emulated); + } + } + + MachineEventsStateProvider.ApplyEvents(events); } EventsNotification?.Invoke(this, response); @@ -1373,6 +1385,7 @@ namespace Tango.Integration.Operation if (MachineEventsStateProvider != null) { LogManager.Log("Resetting active events..."); + _emulatedEvents.Clear(); MachineEventsStateProvider.Reset(); } } @@ -4154,6 +4167,21 @@ namespace Tango.Integration.Operation }, new TransportRequestConfig() { ShouldLog = true, Timeout = TimeSpan.FromSeconds(20) }); } + /// <summary> + /// Emulates a hardware event that will last for the specified timeout. + /// </summary> + /// <param name="ev">Type of the event.</param> + /// <param name="timeout">The timeout.</param> + public async void PushEmulatedEvent(Event ev, TimeSpan timeout) + { + if (!_emulatedEvents.Exists(x => x.Type == ev.Type)) + { + _emulatedEvents.Add(ev); + await Task.Delay(timeout); + _emulatedEvents.Remove(ev); + } + } + #endregion } } diff --git a/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs b/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs index 8c8b838f0..03b9e40bf 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( - "ChFNZXNzYWdlVHlwZS5wcm90bxIQVGFuZ28uUE1SLkNvbW1vbirOPwoLTWVz", + "ChFNZXNzYWdlVHlwZS5wcm90bxIQVGFuZ28uUE1SLkNvbW1vbiqVPwoLTWVz", "c2FnZVR5cGUSCAoETm9uZRAAEhEKDUVycm9yUmVzcG9uc2UQARIUChBDYWxj", "dWxhdGVSZXF1ZXN0EAMSFQoRQ2FsY3VsYXRlUmVzcG9uc2UQBBITCg9Qcm9n", "cmVzc1JlcXVlc3QQBRIUChBQcm9ncmVzc1Jlc3BvbnNlEAYSHAoYU3R1YkNh", @@ -97,114 +97,113 @@ namespace Tango.PMR.Common { "c3QQbxIjCh9TdHViTWFpbkNhcmRFRXByb21Xcml0ZVJlc3BvbnNlEHASGQoV", "U3R1YkhlYWRFRXByb21SZXF1ZXN0EHESGgoWU3R1YkhlYWRFRXByb21SZXNw", "b25zZRByEhQKEFByb2NlZHVyZVJlcXVlc3QQcxIVChFQcm9jZWR1cmVSZXNw", - "b25zZRB0EhoKFlN0dWJBbGxIYXJkd2FyZVJlcXVlc3QQdRIbChdTdHViQWxs", - "SGFyZHdhcmVSZXNwb25zZRB2EiUKIEV4dGVybmFsQnJpZGdlVWRwRGlzY292", - "ZXJ5UGFja2V0EOgHEh8KGkV4dGVybmFsQnJpZGdlTG9naW5SZXF1ZXN0EOkH", - "EiAKG0V4dGVybmFsQnJpZGdlTG9naW5SZXNwb25zZRDqBxIgChtFeHRlcm5h", - "bEJyaWRnZUxvZ291dFJlcXVlc3QQ6wcSIQocRXh0ZXJuYWxCcmlkZ2VMb2dv", - "dXRSZXNwb25zZRDsBxIhChxEaXJlY3RTeW5jaHJvbml6YXRpb25SZXF1ZXN0", - "EO0HEiIKHURpcmVjdFN5bmNocm9uaXphdGlvblJlc3BvbnNlEO4HEhwKF092", - "ZXJyaWRlRGF0YUJhc2VSZXF1ZXN0EO8HEh0KGE92ZXJyaWRlRGF0YUJhc2VS", - "ZXNwb25zZRDwBxIgChtTdGFydEFwcGxpY2F0aW9uTG9nc1JlcXVlc3QQ8QcS", - "IQocU3RhcnRBcHBsaWNhdGlvbkxvZ3NSZXNwb25zZRDyBxIfChpTdG9wQXBw", - "bGljYXRpb25Mb2dzUmVxdWVzdBDzBxIgChtTdG9wQXBwbGljYXRpb25Mb2dz", - "UmVzcG9uc2UQ9AcSGAoTQ29sb3JQcm9maWxlUmVxdWVzdBD1BxIZChRDb2xv", - "clByb2ZpbGVSZXNwb25zZRD2BxIYChNVcGRhdGVTdGF0dXNSZXF1ZXN0EPcH", - "EhkKFFVwZGF0ZVN0YXR1c1Jlc3BvbnNlEPgHEhMKDkdlbmVyaWNSZXF1ZXN0", - "EPkHEhQKD0dlbmVyaWNSZXNwb25zZRD6BxIdChhDb25maWd1cmVQcm90b2Nv", - "bFJlcXVlc3QQ+wcSHgoZQ29uZmlndXJlUHJvdG9jb2xSZXNwb25zZRD8BxIc", - "ChdTdGFydERpYWdub3N0aWNzUmVxdWVzdBDQDxIdChhTdGFydERpYWdub3N0", - "aWNzUmVzcG9uc2UQ0Q8SHAoXTW90b3JBYm9ydEhvbWluZ1JlcXVlc3QQ0g8S", - "HQoYTW90b3JBYm9ydEhvbWluZ1Jlc3BvbnNlENMPEhcKEk1vdG9ySG9taW5n", - "UmVxdWVzdBDUDxIYChNNb3RvckhvbWluZ1Jlc3BvbnNlENUPEhgKE01vdG9y", - "Sm9nZ2luZ1JlcXVlc3QQ1g8SGQoUTW90b3JKb2dnaW5nUmVzcG9uc2UQ1w8S", - "HQoYTW90b3JBYm9ydEpvZ2dpbmdSZXF1ZXN0ENgPEh4KGU1vdG9yQWJvcnRK", - "b2dnaW5nUmVzcG9uc2UQ2Q8SIAobRGlzcGVuc2VyQWJvcnRIb21pbmdSZXF1", - "ZXN0ENoPEiEKHERpc3BlbnNlckFib3J0SG9taW5nUmVzcG9uc2UQ2w8SGwoW", - "RGlzcGVuc2VySG9taW5nUmVxdWVzdBDcDxIcChdEaXNwZW5zZXJIb21pbmdS", - "ZXNwb25zZRDdDxIcChdEaXNwZW5zZXJKb2dnaW5nUmVxdWVzdBDeDxIdChhE", - "aXNwZW5zZXJKb2dnaW5nUmVzcG9uc2UQ3w8SIQocRGlzcGVuc2VyQWJvcnRK", - "b2dnaW5nUmVxdWVzdBDgDxIiCh1EaXNwZW5zZXJBYm9ydEpvZ2dpbmdSZXNw", - "b25zZRDhDxIZChRTZXREaWdpdGFsT3V0UmVxdWVzdBDiDxIaChVTZXREaWdp", - "dGFsT3V0UmVzcG9uc2UQ4w8SGQoUVGhyZWFkSm9nZ2luZ1JlcXVlc3QQ5A8S", - "GgoVVGhyZWFkSm9nZ2luZ1Jlc3BvbnNlEOUPEh4KGVRocmVhZEFib3J0Sm9n", - "Z2luZ1JlcXVlc3QQ5g8SHwoaVGhyZWFkQWJvcnRKb2dnaW5nUmVzcG9uc2UQ", - "5w8SHQoYU2V0Q29tcG9uZW50VmFsdWVSZXF1ZXN0EOgPEh4KGVNldENvbXBv", - "bmVudFZhbHVlUmVzcG9uc2UQ6Q8SGAoTUmVzb2x2ZUV2ZW50UmVxdWVzdBDq", - "DxIZChRSZXNvbHZlRXZlbnRSZXNwb25zZRDrDxIbChZTdG9wRGlhZ25vc3Rp", - "Y3NSZXF1ZXN0EOwPEhwKF1N0b3BEaWFnbm9zdGljc1Jlc3BvbnNlEO0PEiMK", - "HlN0YXJ0RXZlbnRzTm90aWZpY2F0aW9uUmVxdWVzdBDuDxIkCh9TdGFydEV2", - "ZW50c05vdGlmaWNhdGlvblJlc3BvbnNlEO8PEiIKHVN0b3BFdmVudHNOb3Rp", - "ZmljYXRpb25SZXF1ZXN0EPAPEiMKHlN0b3BFdmVudHNOb3RpZmljYXRpb25S", - "ZXNwb25zZRDxDxIaChVTZXRIZWF0ZXJTdGF0ZVJlcXVlc3QQ8g8SGwoWU2V0", - "SGVhdGVyU3RhdGVSZXNwb25zZRDzDxIaChVTZXRCbG93ZXJTdGF0ZVJlcXVl", - "c3QQ9A8SGwoWU2V0Qmxvd2VyU3RhdGVSZXNwb25zZRD1DxIZChRTZXRWYWx2", - "ZVN0YXRlUmVxdWVzdBD2DxIaChVTZXRWYWx2ZVN0YXRlUmVzcG9uc2UQ9w8S", - "HwoaQ2FydHJpZGdlVmFsaWRhdGlvblJlcXVlc3QQ/A8SIAobQ2FydHJpZGdl", - "VmFsaWRhdGlvblJlc3BvbnNlEP0PEg8KCkpvYlJlcXVlc3QQuBcSEAoLSm9i", - "UmVzcG9uc2UQuRcSFAoPQWJvcnRKb2JSZXF1ZXN0ELoXEhUKEEFib3J0Sm9i", - "UmVzcG9uc2UQuxcSIwoeVXBsb2FkUHJvY2Vzc1BhcmFtZXRlcnNSZXF1ZXN0", - "ELwXEiQKH1VwbG9hZFByb2Nlc3NQYXJhbWV0ZXJzUmVzcG9uc2UQvRcSFgoR", - "Q3VycmVudEpvYlJlcXVlc3QQvhcSFwoSQ3VycmVudEpvYlJlc3BvbnNlEL8X", - "EhwKF1Jlc3VtZUN1cnJlbnRKb2JSZXF1ZXN0EMAXEh0KGFJlc3VtZUN1cnJl", - "bnRKb2JSZXNwb25zZRDBFxIdChhTdGFydEhlYWRDbGVhbmluZ1JlcXVlc3QQ", - "whcSHgoZU3RhcnRIZWFkQ2xlYW5pbmdSZXNwb25zZRDDFxIdChhBYm9ydEhl", - "YWRDbGVhbmluZ1JlcXVlc3QQxBcSHgoZQWJvcnRIZWFkQ2xlYW5pbmdSZXNw", - "b25zZRDFFxIZChRTdGFydERlYnVnTG9nUmVxdWVzdBCgHxIaChVTdGFydERl", - "YnVnTG9nUmVzcG9uc2UQoR8SGAoTU3RvcERlYnVnTG9nUmVxdWVzdBCiHxIZ", - "ChRTdG9wRGVidWdMb2dSZXNwb25zZRCjHxIfChpTZXREZWJ1Z0xvZ0NhdGVn", - "b3J5UmVxdWVzdBCkHxIgChtTZXREZWJ1Z0xvZ0NhdGVnb3J5UmVzcG9uc2UQ", - "pR8SIQocU2V0dXBEZWJ1Z0Rpc3JpYnV0b3JzUmVxdWVzdBCmHxIiCh1TZXR1", - "cERlYnVnRGlzcmlidXRvcnNSZXNwb25zZRCnHxInCiJVcGxvYWRIYXJkd2Fy", - "ZUNvbmZpZ3VyYXRpb25SZXF1ZXN0EIgnEigKI1VwbG9hZEhhcmR3YXJlQ29u", - "ZmlndXJhdGlvblJlc3BvbnNlEIknEhcKElN5c3RlbVJlc2V0UmVxdWVzdBCK", - "JxIYChNTeXN0ZW1SZXNldFJlc3BvbnNlEIsnEhUKEEtlZXBBbGl2ZVJlcXVl", - "c3QQ8C4SFgoRS2VlcEFsaXZlUmVzcG9uc2UQ8S4SEwoOQ29ubmVjdFJlcXVl", - "c3QQ8i4SFAoPQ29ubmVjdFJlc3BvbnNlEPMuEhYKEURpc2Nvbm5lY3RSZXF1", - "ZXN0EPQuEhcKEkRpc2Nvbm5lY3RSZXNwb25zZRD1LhIWChFGaWxlVXBsb2Fk", - "UmVxdWVzdBDYNhIXChJGaWxlVXBsb2FkUmVzcG9uc2UQ2TYSGwoWRmlsZUNo", - "dW5rVXBsb2FkUmVxdWVzdBDaNhIcChdGaWxlQ2h1bmtVcGxvYWRSZXNwb25z", - "ZRDbNhIaChVFeGVjdXRlUHJvY2Vzc1JlcXVlc3QQ3DYSGwoWRXhlY3V0ZVBy", - "b2Nlc3NSZXNwb25zZRDdNhIXChJLaWxsUHJvY2Vzc1JlcXVlc3QQ3jYSGAoT", - "S2lsbFByb2Nlc3NSZXNwb25zZRDfNhISCg1DcmVhdGVSZXF1ZXN0EOA2EhMK", - "DkNyZWF0ZVJlc3BvbnNlEOE2EhIKDURlbGV0ZVJlcXVlc3QQ4jYSEwoORGVs", - "ZXRlUmVzcG9uc2UQ4zYSGgoVR2V0U3RvcmFnZUluZm9SZXF1ZXN0EOQ2EhsK", - "FkdldFN0b3JhZ2VJbmZvUmVzcG9uc2UQ5TYSFAoPR2V0RmlsZXNSZXF1ZXN0", - "EOY2EhUKEEdldEZpbGVzUmVzcG9uc2UQ5zYSGAoTRmlsZURvd25sb2FkUmVx", - "dWVzdBDoNhIZChRGaWxlRG93bmxvYWRSZXNwb25zZRDpNhIdChhGaWxlQ2h1", - "bmtEb3dubG9hZFJlcXVlc3QQ6jYSHgoZRmlsZUNodW5rRG93bmxvYWRSZXNw", - "b25zZRDrNhIbChZWYWxpZGF0ZVZlcnNpb25SZXF1ZXN0EOw2EhwKF1ZhbGlk", - "YXRlVmVyc2lvblJlc3BvbnNlEO02EhsKFkFjdGl2YXRlVmVyc2lvblJlcXVl", - "c3QQ7jYSHAoXQWN0aXZhdGVWZXJzaW9uUmVzcG9uc2UQ7zYSGQoURGlzcGVu", - "c2VyRGF0YVJlcXVlc3QQwD4SGgoVRGlzcGVuc2VyRGF0YVJlc3BvbnNlEME+", - "EhwKF01pZFRhbmtEYXRhU2V0dXBSZXF1ZXN0EMI+Eh0KGE1pZFRhbmtEYXRh", - "U2V0dXBSZXNwb25zZRDDPhIiCh1NYWNoaW5lQ2FsaWJyYXRpb25EYXRhUmVx", - "dWVzdBDEPhIjCh5NYWNoaW5lQ2FsaWJyYXRpb25EYXRhUmVzcG9uc2UQxT4S", - "HgoZTWFpbkNhcmRTdG9yZWREYXRhUmVxdWVzdBDGPhIfChpNYWluQ2FyZFN0", - "b3JlZERhdGFSZXNwb25zZRDHPhIkCh9TdGFydE1hY2hpbmVTdGF0dXNVcGRh", - "dGVSZXF1ZXN0EKhGEiUKIFN0YXJ0TWFjaGluZVN0YXR1c1VwZGF0ZVJlc3Bv", - "bnNlEKlGEiMKHlN0b3BNYWNoaW5lU3RhdHVzVXBkYXRlUmVxdWVzdBCqRhIk", - "Ch9TdG9wTWFjaGluZVN0YXR1c1VwZGF0ZVJlc3BvbnNlEKtGEhoKFVN0YXJ0", - "UG93ZXJEb3duUmVxdWVzdBCQThIbChZTdGFydFBvd2VyRG93blJlc3BvbnNl", - "EJFOEhoKFUFib3J0UG93ZXJEb3duUmVxdWVzdBCSThIbChZBYm9ydFBvd2Vy", - "RG93blJlc3BvbnNlEJNOEhgKE1N0YXJ0UG93ZXJVcFJlcXVlc3QQlE4SGQoU", - "U3RhcnRQb3dlclVwUmVzcG9uc2UQlU4SGAoTQWJvcnRQb3dlclVwUmVxdWVz", - "dBCWThIZChRBYm9ydFBvd2VyVXBSZXNwb25zZRCXThITCg5TdGFuZEJ5UmVx", - "dWVzdBCYThIUCg9TdGFuZEJ5UmVzcG9uc2UQmU4SHgoZU3RhcnRUaHJlYWRM", - "b2FkaW5nUmVxdWVzdBD4VRIfChpTdGFydFRocmVhZExvYWRpbmdSZXNwb25z", - "ZRD5VRIhChxDb250aW51ZVRocmVhZExvYWRpbmdSZXF1ZXN0EPpVEiIKHUNv", - "bnRpbnVlVGhyZWFkTG9hZGluZ1Jlc3BvbnNlEPtVEh0KGFN0b3BUaHJlYWRM", - "b2FkaW5nUmVxdWVzdBD8VRIeChlTdG9wVGhyZWFkTG9hZGluZ1Jlc3BvbnNl", - "EP1VEhwKF1RyeVRocmVhZExvYWRpbmdSZXF1ZXN0EP5VEh0KGFRyeVRocmVh", - "ZExvYWRpbmdSZXNwb25zZRD/VRIgChtBdHRlbXB0VGhyZWFkSm9nZ2luZ1Jl", - "cXVlc3QQgFYSIQocQXR0ZW1wdFRocmVhZEpvZ2dpbmdSZXNwb25zZRCBVhIh", - "ChxTdGFydElua0ZpbGxpbmdTdGF0dXNSZXF1ZXN0EOBdEiIKHVN0YXJ0SW5r", - "RmlsbGluZ1N0YXR1c1Jlc3BvbnNlEOFdEhwKF1B1dERhdGFTdG9yZUl0ZW1S", - "ZXF1ZXN0EMhlEh0KGFB1dERhdGFTdG9yZUl0ZW1SZXNwb25zZRDJZRIcChdH", - "ZXREYXRhU3RvcmVJdGVtUmVxdWVzdBDKZRIdChhHZXREYXRhU3RvcmVJdGVt", - "UmVzcG9uc2UQy2USIQocRGF0YVN0b3JlSXRlbU1vZGlmaWVkUmVxdWVzdBDM", - "ZRIiCh1EYXRhU3RvcmVJdGVtTW9kaWZpZWRSZXNwb25zZRDNZUIcChpjb20u", - "dHdpbmUudGFuZ28ucG1yLmNvbW1vbmIGcHJvdG8z")); + "b25zZRB0EiUKIEV4dGVybmFsQnJpZGdlVWRwRGlzY292ZXJ5UGFja2V0EOgH", + "Eh8KGkV4dGVybmFsQnJpZGdlTG9naW5SZXF1ZXN0EOkHEiAKG0V4dGVybmFs", + "QnJpZGdlTG9naW5SZXNwb25zZRDqBxIgChtFeHRlcm5hbEJyaWRnZUxvZ291", + "dFJlcXVlc3QQ6wcSIQocRXh0ZXJuYWxCcmlkZ2VMb2dvdXRSZXNwb25zZRDs", + "BxIhChxEaXJlY3RTeW5jaHJvbml6YXRpb25SZXF1ZXN0EO0HEiIKHURpcmVj", + "dFN5bmNocm9uaXphdGlvblJlc3BvbnNlEO4HEhwKF092ZXJyaWRlRGF0YUJh", + "c2VSZXF1ZXN0EO8HEh0KGE92ZXJyaWRlRGF0YUJhc2VSZXNwb25zZRDwBxIg", + "ChtTdGFydEFwcGxpY2F0aW9uTG9nc1JlcXVlc3QQ8QcSIQocU3RhcnRBcHBs", + "aWNhdGlvbkxvZ3NSZXNwb25zZRDyBxIfChpTdG9wQXBwbGljYXRpb25Mb2dz", + "UmVxdWVzdBDzBxIgChtTdG9wQXBwbGljYXRpb25Mb2dzUmVzcG9uc2UQ9AcS", + "GAoTQ29sb3JQcm9maWxlUmVxdWVzdBD1BxIZChRDb2xvclByb2ZpbGVSZXNw", + "b25zZRD2BxIYChNVcGRhdGVTdGF0dXNSZXF1ZXN0EPcHEhkKFFVwZGF0ZVN0", + "YXR1c1Jlc3BvbnNlEPgHEhMKDkdlbmVyaWNSZXF1ZXN0EPkHEhQKD0dlbmVy", + "aWNSZXNwb25zZRD6BxIdChhDb25maWd1cmVQcm90b2NvbFJlcXVlc3QQ+wcS", + "HgoZQ29uZmlndXJlUHJvdG9jb2xSZXNwb25zZRD8BxIcChdTdGFydERpYWdu", + "b3N0aWNzUmVxdWVzdBDQDxIdChhTdGFydERpYWdub3N0aWNzUmVzcG9uc2UQ", + "0Q8SHAoXTW90b3JBYm9ydEhvbWluZ1JlcXVlc3QQ0g8SHQoYTW90b3JBYm9y", + "dEhvbWluZ1Jlc3BvbnNlENMPEhcKEk1vdG9ySG9taW5nUmVxdWVzdBDUDxIY", + "ChNNb3RvckhvbWluZ1Jlc3BvbnNlENUPEhgKE01vdG9ySm9nZ2luZ1JlcXVl", + "c3QQ1g8SGQoUTW90b3JKb2dnaW5nUmVzcG9uc2UQ1w8SHQoYTW90b3JBYm9y", + "dEpvZ2dpbmdSZXF1ZXN0ENgPEh4KGU1vdG9yQWJvcnRKb2dnaW5nUmVzcG9u", + "c2UQ2Q8SIAobRGlzcGVuc2VyQWJvcnRIb21pbmdSZXF1ZXN0ENoPEiEKHERp", + "c3BlbnNlckFib3J0SG9taW5nUmVzcG9uc2UQ2w8SGwoWRGlzcGVuc2VySG9t", + "aW5nUmVxdWVzdBDcDxIcChdEaXNwZW5zZXJIb21pbmdSZXNwb25zZRDdDxIc", + "ChdEaXNwZW5zZXJKb2dnaW5nUmVxdWVzdBDeDxIdChhEaXNwZW5zZXJKb2dn", + "aW5nUmVzcG9uc2UQ3w8SIQocRGlzcGVuc2VyQWJvcnRKb2dnaW5nUmVxdWVz", + "dBDgDxIiCh1EaXNwZW5zZXJBYm9ydEpvZ2dpbmdSZXNwb25zZRDhDxIZChRT", + "ZXREaWdpdGFsT3V0UmVxdWVzdBDiDxIaChVTZXREaWdpdGFsT3V0UmVzcG9u", + "c2UQ4w8SGQoUVGhyZWFkSm9nZ2luZ1JlcXVlc3QQ5A8SGgoVVGhyZWFkSm9n", + "Z2luZ1Jlc3BvbnNlEOUPEh4KGVRocmVhZEFib3J0Sm9nZ2luZ1JlcXVlc3QQ", + "5g8SHwoaVGhyZWFkQWJvcnRKb2dnaW5nUmVzcG9uc2UQ5w8SHQoYU2V0Q29t", + "cG9uZW50VmFsdWVSZXF1ZXN0EOgPEh4KGVNldENvbXBvbmVudFZhbHVlUmVz", + "cG9uc2UQ6Q8SGAoTUmVzb2x2ZUV2ZW50UmVxdWVzdBDqDxIZChRSZXNvbHZl", + "RXZlbnRSZXNwb25zZRDrDxIbChZTdG9wRGlhZ25vc3RpY3NSZXF1ZXN0EOwP", + "EhwKF1N0b3BEaWFnbm9zdGljc1Jlc3BvbnNlEO0PEiMKHlN0YXJ0RXZlbnRz", + "Tm90aWZpY2F0aW9uUmVxdWVzdBDuDxIkCh9TdGFydEV2ZW50c05vdGlmaWNh", + "dGlvblJlc3BvbnNlEO8PEiIKHVN0b3BFdmVudHNOb3RpZmljYXRpb25SZXF1", + "ZXN0EPAPEiMKHlN0b3BFdmVudHNOb3RpZmljYXRpb25SZXNwb25zZRDxDxIa", + "ChVTZXRIZWF0ZXJTdGF0ZVJlcXVlc3QQ8g8SGwoWU2V0SGVhdGVyU3RhdGVS", + "ZXNwb25zZRDzDxIaChVTZXRCbG93ZXJTdGF0ZVJlcXVlc3QQ9A8SGwoWU2V0", + "Qmxvd2VyU3RhdGVSZXNwb25zZRD1DxIZChRTZXRWYWx2ZVN0YXRlUmVxdWVz", + "dBD2DxIaChVTZXRWYWx2ZVN0YXRlUmVzcG9uc2UQ9w8SHwoaQ2FydHJpZGdl", + "VmFsaWRhdGlvblJlcXVlc3QQ/A8SIAobQ2FydHJpZGdlVmFsaWRhdGlvblJl", + "c3BvbnNlEP0PEg8KCkpvYlJlcXVlc3QQuBcSEAoLSm9iUmVzcG9uc2UQuRcS", + "FAoPQWJvcnRKb2JSZXF1ZXN0ELoXEhUKEEFib3J0Sm9iUmVzcG9uc2UQuxcS", + "IwoeVXBsb2FkUHJvY2Vzc1BhcmFtZXRlcnNSZXF1ZXN0ELwXEiQKH1VwbG9h", + "ZFByb2Nlc3NQYXJhbWV0ZXJzUmVzcG9uc2UQvRcSFgoRQ3VycmVudEpvYlJl", + "cXVlc3QQvhcSFwoSQ3VycmVudEpvYlJlc3BvbnNlEL8XEhwKF1Jlc3VtZUN1", + "cnJlbnRKb2JSZXF1ZXN0EMAXEh0KGFJlc3VtZUN1cnJlbnRKb2JSZXNwb25z", + "ZRDBFxIdChhTdGFydEhlYWRDbGVhbmluZ1JlcXVlc3QQwhcSHgoZU3RhcnRI", + "ZWFkQ2xlYW5pbmdSZXNwb25zZRDDFxIdChhBYm9ydEhlYWRDbGVhbmluZ1Jl", + "cXVlc3QQxBcSHgoZQWJvcnRIZWFkQ2xlYW5pbmdSZXNwb25zZRDFFxIZChRT", + "dGFydERlYnVnTG9nUmVxdWVzdBCgHxIaChVTdGFydERlYnVnTG9nUmVzcG9u", + "c2UQoR8SGAoTU3RvcERlYnVnTG9nUmVxdWVzdBCiHxIZChRTdG9wRGVidWdM", + "b2dSZXNwb25zZRCjHxIfChpTZXREZWJ1Z0xvZ0NhdGVnb3J5UmVxdWVzdBCk", + "HxIgChtTZXREZWJ1Z0xvZ0NhdGVnb3J5UmVzcG9uc2UQpR8SIQocU2V0dXBE", + "ZWJ1Z0Rpc3JpYnV0b3JzUmVxdWVzdBCmHxIiCh1TZXR1cERlYnVnRGlzcmli", + "dXRvcnNSZXNwb25zZRCnHxInCiJVcGxvYWRIYXJkd2FyZUNvbmZpZ3VyYXRp", + "b25SZXF1ZXN0EIgnEigKI1VwbG9hZEhhcmR3YXJlQ29uZmlndXJhdGlvblJl", + "c3BvbnNlEIknEhcKElN5c3RlbVJlc2V0UmVxdWVzdBCKJxIYChNTeXN0ZW1S", + "ZXNldFJlc3BvbnNlEIsnEhUKEEtlZXBBbGl2ZVJlcXVlc3QQ8C4SFgoRS2Vl", + "cEFsaXZlUmVzcG9uc2UQ8S4SEwoOQ29ubmVjdFJlcXVlc3QQ8i4SFAoPQ29u", + "bmVjdFJlc3BvbnNlEPMuEhYKEURpc2Nvbm5lY3RSZXF1ZXN0EPQuEhcKEkRp", + "c2Nvbm5lY3RSZXNwb25zZRD1LhIWChFGaWxlVXBsb2FkUmVxdWVzdBDYNhIX", + "ChJGaWxlVXBsb2FkUmVzcG9uc2UQ2TYSGwoWRmlsZUNodW5rVXBsb2FkUmVx", + "dWVzdBDaNhIcChdGaWxlQ2h1bmtVcGxvYWRSZXNwb25zZRDbNhIaChVFeGVj", + "dXRlUHJvY2Vzc1JlcXVlc3QQ3DYSGwoWRXhlY3V0ZVByb2Nlc3NSZXNwb25z", + "ZRDdNhIXChJLaWxsUHJvY2Vzc1JlcXVlc3QQ3jYSGAoTS2lsbFByb2Nlc3NS", + "ZXNwb25zZRDfNhISCg1DcmVhdGVSZXF1ZXN0EOA2EhMKDkNyZWF0ZVJlc3Bv", + "bnNlEOE2EhIKDURlbGV0ZVJlcXVlc3QQ4jYSEwoORGVsZXRlUmVzcG9uc2UQ", + "4zYSGgoVR2V0U3RvcmFnZUluZm9SZXF1ZXN0EOQ2EhsKFkdldFN0b3JhZ2VJ", + "bmZvUmVzcG9uc2UQ5TYSFAoPR2V0RmlsZXNSZXF1ZXN0EOY2EhUKEEdldEZp", + "bGVzUmVzcG9uc2UQ5zYSGAoTRmlsZURvd25sb2FkUmVxdWVzdBDoNhIZChRG", + "aWxlRG93bmxvYWRSZXNwb25zZRDpNhIdChhGaWxlQ2h1bmtEb3dubG9hZFJl", + "cXVlc3QQ6jYSHgoZRmlsZUNodW5rRG93bmxvYWRSZXNwb25zZRDrNhIbChZW", + "YWxpZGF0ZVZlcnNpb25SZXF1ZXN0EOw2EhwKF1ZhbGlkYXRlVmVyc2lvblJl", + "c3BvbnNlEO02EhsKFkFjdGl2YXRlVmVyc2lvblJlcXVlc3QQ7jYSHAoXQWN0", + "aXZhdGVWZXJzaW9uUmVzcG9uc2UQ7zYSGQoURGlzcGVuc2VyRGF0YVJlcXVl", + "c3QQwD4SGgoVRGlzcGVuc2VyRGF0YVJlc3BvbnNlEME+EhwKF01pZFRhbmtE", + "YXRhU2V0dXBSZXF1ZXN0EMI+Eh0KGE1pZFRhbmtEYXRhU2V0dXBSZXNwb25z", + "ZRDDPhIiCh1NYWNoaW5lQ2FsaWJyYXRpb25EYXRhUmVxdWVzdBDEPhIjCh5N", + "YWNoaW5lQ2FsaWJyYXRpb25EYXRhUmVzcG9uc2UQxT4SHgoZTWFpbkNhcmRT", + "dG9yZWREYXRhUmVxdWVzdBDGPhIfChpNYWluQ2FyZFN0b3JlZERhdGFSZXNw", + "b25zZRDHPhIkCh9TdGFydE1hY2hpbmVTdGF0dXNVcGRhdGVSZXF1ZXN0EKhG", + "EiUKIFN0YXJ0TWFjaGluZVN0YXR1c1VwZGF0ZVJlc3BvbnNlEKlGEiMKHlN0", + "b3BNYWNoaW5lU3RhdHVzVXBkYXRlUmVxdWVzdBCqRhIkCh9TdG9wTWFjaGlu", + "ZVN0YXR1c1VwZGF0ZVJlc3BvbnNlEKtGEhoKFVN0YXJ0UG93ZXJEb3duUmVx", + "dWVzdBCQThIbChZTdGFydFBvd2VyRG93blJlc3BvbnNlEJFOEhoKFUFib3J0", + "UG93ZXJEb3duUmVxdWVzdBCSThIbChZBYm9ydFBvd2VyRG93blJlc3BvbnNl", + "EJNOEhgKE1N0YXJ0UG93ZXJVcFJlcXVlc3QQlE4SGQoUU3RhcnRQb3dlclVw", + "UmVzcG9uc2UQlU4SGAoTQWJvcnRQb3dlclVwUmVxdWVzdBCWThIZChRBYm9y", + "dFBvd2VyVXBSZXNwb25zZRCXThITCg5TdGFuZEJ5UmVxdWVzdBCYThIUCg9T", + "dGFuZEJ5UmVzcG9uc2UQmU4SHgoZU3RhcnRUaHJlYWRMb2FkaW5nUmVxdWVz", + "dBD4VRIfChpTdGFydFRocmVhZExvYWRpbmdSZXNwb25zZRD5VRIhChxDb250", + "aW51ZVRocmVhZExvYWRpbmdSZXF1ZXN0EPpVEiIKHUNvbnRpbnVlVGhyZWFk", + "TG9hZGluZ1Jlc3BvbnNlEPtVEh0KGFN0b3BUaHJlYWRMb2FkaW5nUmVxdWVz", + "dBD8VRIeChlTdG9wVGhyZWFkTG9hZGluZ1Jlc3BvbnNlEP1VEhwKF1RyeVRo", + "cmVhZExvYWRpbmdSZXF1ZXN0EP5VEh0KGFRyeVRocmVhZExvYWRpbmdSZXNw", + "b25zZRD/VRIgChtBdHRlbXB0VGhyZWFkSm9nZ2luZ1JlcXVlc3QQgFYSIQoc", + "QXR0ZW1wdFRocmVhZEpvZ2dpbmdSZXNwb25zZRCBVhIhChxTdGFydElua0Zp", + "bGxpbmdTdGF0dXNSZXF1ZXN0EOBdEiIKHVN0YXJ0SW5rRmlsbGluZ1N0YXR1", + "c1Jlc3BvbnNlEOFdEhwKF1B1dERhdGFTdG9yZUl0ZW1SZXF1ZXN0EMhlEh0K", + "GFB1dERhdGFTdG9yZUl0ZW1SZXNwb25zZRDJZRIcChdHZXREYXRhU3RvcmVJ", + "dGVtUmVxdWVzdBDKZRIdChhHZXREYXRhU3RvcmVJdGVtUmVzcG9uc2UQy2US", + "IQocRGF0YVN0b3JlSXRlbU1vZGlmaWVkUmVxdWVzdBDMZRIiCh1EYXRhU3Rv", + "cmVJdGVtTW9kaWZpZWRSZXNwb25zZRDNZUIcChpjb20udHdpbmUudGFuZ28u", + "cG1yLmNvbW1vbmIGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.Common.MessageType), }, null)); @@ -338,12 +337,10 @@ namespace Tango.PMR.Common { [pbr::OriginalName("StubHeadEEpromRequest")] StubHeadEepromRequest = 113, [pbr::OriginalName("StubHeadEEpromResponse")] StubHeadEepromResponse = 114, [pbr::OriginalName("ProcedureRequest")] ProcedureRequest = 115, - [pbr::OriginalName("ProcedureResponse")] ProcedureResponse = 116, - [pbr::OriginalName("StubAllHardwareRequest")] StubAllHardwareRequest = 117, /// <summary> ///------------------------------------ /// </summary> - [pbr::OriginalName("StubAllHardwareResponse")] StubAllHardwareResponse = 118, + [pbr::OriginalName("ProcedureResponse")] ProcedureResponse = 116, /// <summary> ///Integration /// </summary> diff --git a/Software/Visual_Studio/Tango.PMR/Diagnostics/EventType.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/EventType.cs index 59a807634..800780c32 100644 --- a/Software/Visual_Studio/Tango.PMR/Diagnostics/EventType.cs +++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/EventType.cs @@ -22,7 +22,7 @@ namespace Tango.PMR.Diagnostics { static EventTypeReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( - "Cg9FdmVudFR5cGUucHJvdG8SFVRhbmdvLlBNUi5EaWFnbm9zdGljcyq+aAoJ", + "Cg9FdmVudFR5cGUucHJvdG8SFVRhbmdvLlBNUi5EaWFnbm9zdGljcyreaAoJ", "RXZlbnRUeXBlEggKBE5vbmUQABIRCgxSRVFVRVNUX1NFTlQQ6AcSFgoRUkVT", "UE9OU0VfUkVDRUlWRUQQ6QcSEwoOUkVRVUVTVF9GQUlMRUQQ6gcSGgoVQVBQ", "TElDQVRJT05fRVhDRVBUSU9OEOsHEhwKF0FQUExJQ0FUSU9OX0lORk9STUFU", @@ -201,127 +201,127 @@ namespace Tango.PMR.Diagnostics { "X0JMT1dFUl8yX0ZMT1dfVE9PX0hJR0gQ5icSJgohRFlFSU5HX0hFQURfQkxP", "V0VSXzFfRkxPV19UT09fTE9XEOcnEiYKIURZRUlOR19IRUFEX0JMT1dFUl8y", "X0ZMT1dfVE9PX0xPVxDoJxIgChtEWUVJTkdfSEVBRF9BUkNfTElEX0lTX09Q", - "RU4Q6ScSIwoeRFlFSU5HX0hFQURfVFVOTkVMX0xJRF9JU19PUEVOEOonEhoK", - "FU1JWEVSX09WRVJURU1QRVJBVFVSRRDwLhIdChhNSVhFUl9VTkRFUlRFTVBF", - "UkFUVVJFX0EQ8S4SHQoYTUlYRVJfVU5ERVJURU1QRVJBVFVSRV9CEPIuEhkK", - "FE1JWEVSX1RIRVJNQUxfQ1VUT0ZGEPMuEh8KGk1JWEVSX0NVUlJFTlRfT1VU", - "X09GX1JBTkdFEPQuEh0KGE1JWEVSX0NVUlJFTlRfTE9PUF9CUkVBSxD1LhId", - "ChhESVNQRU5TRVJfMV9PVkVSUFJFU1NVUkUQ2DYSHQoYRElTUEVOU0VSXzJf", - "T1ZFUlBSRVNTVVJFENk2Eh0KGERJU1BFTlNFUl8zX09WRVJQUkVTU1VSRRDa", - "NhIdChhESVNQRU5TRVJfNF9PVkVSUFJFU1NVUkUQ2zYSHQoYRElTUEVOU0VS", - "XzVfT1ZFUlBSRVNTVVJFENw2Eh0KGERJU1BFTlNFUl82X09WRVJQUkVTU1VS", - "RRDdNhIdChhESVNQRU5TRVJfN19PVkVSUFJFU1NVUkUQ3jYSHQoYRElTUEVO", - "U0VSXzhfT1ZFUlBSRVNTVVJFEN82Eh4KGURJU1BFTlNFUl8xX1VOREVSUFJF", - "U1NVUkUQ4DYSHgoZRElTUEVOU0VSXzJfVU5ERVJQUkVTU1VSRRDhNhIeChlE", - "SVNQRU5TRVJfM19VTkRFUlBSRVNTVVJFEOI2Eh4KGURJU1BFTlNFUl80X1VO", - "REVSUFJFU1NVUkUQ4zYSHgoZRElTUEVOU0VSXzVfVU5ERVJQUkVTU1VSRRDk", - "NhIeChlESVNQRU5TRVJfNl9VTkRFUlBSRVNTVVJFEOU2Eh4KGURJU1BFTlNF", - "Ul83X1VOREVSUFJFU1NVUkUQ5jYSHgoZRElTUEVOU0VSXzhfVU5ERVJQUkVT", - "U1VSRRDnNhIWChFESVNQRU5TRVJfMV9FTVBUWRDoNhIWChFESVNQRU5TRVJf", - "Ml9FTVBUWRDpNhIWChFESVNQRU5TRVJfM19FTVBUWRDqNhIWChFESVNQRU5T", - "RVJfNF9FTVBUWRDrNhIWChFESVNQRU5TRVJfNV9FTVBUWRDsNhIWChFESVNQ", - "RU5TRVJfNl9FTVBUWRDtNhIWChFESVNQRU5TRVJfN19FTVBUWRDuNhIWChFE", - "SVNQRU5TRVJfOF9FTVBUWRDvNhIfChpESVNQRU5TRVJfMV9SRUZJTExfRkFJ", - "TFVSRRDwNhIfChpESVNQRU5TRVJfMl9SRUZJTExfRkFJTFVSRRDxNhIfChpE", - "SVNQRU5TRVJfM19SRUZJTExfRkFJTFVSRRDyNhIfChpESVNQRU5TRVJfNF9S", - "RUZJTExfRkFJTFVSRRDzNhIfChpESVNQRU5TRVJfNV9SRUZJTExfRkFJTFVS", - "RRD0NhIfChpESVNQRU5TRVJfNl9SRUZJTExfRkFJTFVSRRD1NhIfChpESVNQ", - "RU5TRVJfN19SRUZJTExfRkFJTFVSRRD2NhIfChpESVNQRU5TRVJfOF9SRUZJ", - "TExfRkFJTFVSRRD3NhIiCh1ESVNQRU5TRVJfMV9NT1RPUl9PVkVSQ1VSUkVO", - "VBD4NhIiCh1ESVNQRU5TRVJfMl9NT1RPUl9PVkVSQ1VSUkVOVBD5NhIiCh1E", - "SVNQRU5TRVJfM19NT1RPUl9PVkVSQ1VSUkVOVBD6NhIiCh1ESVNQRU5TRVJf", - "NF9NT1RPUl9PVkVSQ1VSUkVOVBD7NhIiCh1ESVNQRU5TRVJfNV9NT1RPUl9P", - "VkVSQ1VSUkVOVBD8NhIiCh1ESVNQRU5TRVJfNl9NT1RPUl9PVkVSQ1VSUkVO", - "VBD9NhIiCh1ESVNQRU5TRVJfN19NT1RPUl9PVkVSQ1VSUkVOVBD+NhIiCh1E", - "SVNQRU5TRVJfOF9NT1RPUl9PVkVSQ1VSUkVOVBD/NhImCiFESVNQRU5TRVJf", - "MV9NT1RPUl9PVkVSVEVNUEVSQVRVUkUQgDcSJgohRElTUEVOU0VSXzJfTU9U", - "T1JfT1ZFUlRFTVBFUkFUVVJFEIE3EiYKIURJU1BFTlNFUl8zX01PVE9SX09W", - "RVJURU1QRVJBVFVSRRCCNxImCiFESVNQRU5TRVJfNF9NT1RPUl9PVkVSVEVN", - "UEVSQVRVUkUQgzcSJgohRElTUEVOU0VSXzVfTU9UT1JfT1ZFUlRFTVBFUkFU", - "VVJFEIQ3EiYKIURJU1BFTlNFUl82X01PVE9SX09WRVJURU1QRVJBVFVSRRCF", - "NxImCiFESVNQRU5TRVJfN19NT1RPUl9PVkVSVEVNUEVSQVRVUkUQhjcSJgoh", - "RElTUEVOU0VSXzhfTU9UT1JfT1ZFUlRFTVBFUkFUVVJFEIc3EhwKF0RJU1BF", - "TlNFUl8xX01PVE9SX1NUQUxMEIg3EhwKF0RJU1BFTlNFUl8yX01PVE9SX1NU", - "QUxMEIk3EhwKF0RJU1BFTlNFUl8zX01PVE9SX1NUQUxMEIo3EhwKF0RJU1BF", - "TlNFUl80X01PVE9SX1NUQUxMEIs3EhwKF0RJU1BFTlNFUl81X01PVE9SX1NU", - "QUxMEIw3EhwKF0RJU1BFTlNFUl82X01PVE9SX1NUQUxMEI03EhwKF0RJU1BF", - "TlNFUl83X01PVE9SX1NUQUxMEI43EhwKF0RJU1BFTlNFUl84X01PVE9SX1NU", - "QUxMEI83EiMKHkRJU1BFTlNFUl8xX01PVE9SX1VOREVSVk9MVEFHRRCQNxIj", - "Ch5ESVNQRU5TRVJfMl9NT1RPUl9VTkRFUlZPTFRBR0UQkTcSIwoeRElTUEVO", - "U0VSXzNfTU9UT1JfVU5ERVJWT0xUQUdFEJI3EiMKHkRJU1BFTlNFUl80X01P", - "VE9SX1VOREVSVk9MVEFHRRCTNxIjCh5ESVNQRU5TRVJfNV9NT1RPUl9VTkRF", - "UlZPTFRBR0UQlDcSIwoeRElTUEVOU0VSXzZfTU9UT1JfVU5ERVJWT0xUQUdF", - "EJU3EiMKHkRJU1BFTlNFUl83X01PVE9SX1VOREVSVk9MVEFHRRCWNxIjCh5E", - "SVNQRU5TRVJfOF9NT1RPUl9VTkRFUlZPTFRBR0UQlzcSIQocRElTUEVOU0VS", - "XzFfVVBQRVJfSEFSRF9MSU1JVBCYNxIhChxESVNQRU5TRVJfMl9VUFBFUl9I", - "QVJEX0xJTUlUEJk3EiEKHERJU1BFTlNFUl8zX1VQUEVSX0hBUkRfTElNSVQQ", - "mjcSIQocRElTUEVOU0VSXzRfVVBQRVJfSEFSRF9MSU1JVBCbNxIhChxESVNQ", - "RU5TRVJfNV9VUFBFUl9IQVJEX0xJTUlUEJw3EiEKHERJU1BFTlNFUl82X1VQ", - "UEVSX0hBUkRfTElNSVQQnTcSIQocRElTUEVOU0VSXzdfVVBQRVJfSEFSRF9M", - "SU1JVBCeNxIhChxESVNQRU5TRVJfOF9VUFBFUl9IQVJEX0xJTUlUEJ83EiEK", - "HERJU1BFTlNFUl8xX0xPV0VSX0hBUkRfTElNSVQQoDcSIQocRElTUEVOU0VS", - "XzJfTE9XRVJfSEFSRF9MSU1JVBChNxIhChxESVNQRU5TRVJfM19MT1dFUl9I", - "QVJEX0xJTUlUEKI3EiEKHERJU1BFTlNFUl80X0xPV0VSX0hBUkRfTElNSVQQ", - "ozcSIQocRElTUEVOU0VSXzVfTE9XRVJfSEFSRF9MSU1JVBCkNxIhChxESVNQ", - "RU5TRVJfNl9MT1dFUl9IQVJEX0xJTUlUEKU3EiEKHERJU1BFTlNFUl83X0xP", - "V0VSX0hBUkRfTElNSVQQpjcSIQocRElTUEVOU0VSXzhfTE9XRVJfSEFSRF9M", - "SU1JVBCnNxIeChlESVNQRU5TRVJfMV9ISUdIX1BSRVNTVVJFEKg3Eh4KGURJ", - "U1BFTlNFUl8yX0hJR0hfUFJFU1NVUkUQqTcSHgoZRElTUEVOU0VSXzNfSElH", - "SF9QUkVTU1VSRRCqNxIeChlESVNQRU5TRVJfNF9ISUdIX1BSRVNTVVJFEKs3", - "Eh4KGURJU1BFTlNFUl81X0hJR0hfUFJFU1NVUkUQrDcSHgoZRElTUEVOU0VS", - "XzZfSElHSF9QUkVTU1VSRRCtNxIeChlESVNQRU5TRVJfN19ISUdIX1BSRVNT", - "VVJFEK43Eh4KGURJU1BFTlNFUl84X0hJR0hfUFJFU1NVUkUQrzcSGQoUTUlE", - "X1RBTktfMV9MT1dfTEVWRUwQwD4SGQoUTUlEX1RBTktfMl9MT1dfTEVWRUwQ", - "wT4SGQoUTUlEX1RBTktfM19MT1dfTEVWRUwQwj4SGQoUTUlEX1RBTktfNF9M", - "T1dfTEVWRUwQwz4SGQoUTUlEX1RBTktfNV9MT1dfTEVWRUwQxD4SGQoUTUlE", - "X1RBTktfNl9MT1dfTEVWRUwQxT4SGQoUTUlEX1RBTktfN19MT1dfTEVWRUwQ", - "xj4SGQoUTUlEX1RBTktfOF9MT1dfTEVWRUwQxz4SFQoQTUlEX1RBTktfMV9F", - "TVBUWRDIPhIVChBNSURfVEFOS18yX0VNUFRZEMk+EhUKEE1JRF9UQU5LXzNf", - "RU1QVFkQyj4SFQoQTUlEX1RBTktfNF9FTVBUWRDLPhIVChBNSURfVEFOS181", - "X0VNUFRZEMw+EhUKEE1JRF9UQU5LXzZfRU1QVFkQzT4SFQoQTUlEX1RBTktf", - "N19FTVBUWRDOPhIVChBNSURfVEFOS184X0VNUFRZEM8+EhgKE01JRF9UQU5L", - "XzFfT1ZFUkZMT1cQ0D4SGAoTTUlEX1RBTktfMl9PVkVSRkxPVxDRPhIYChNN", - "SURfVEFOS18zX09WRVJGTE9XENI+EhgKE01JRF9UQU5LXzRfT1ZFUkZMT1cQ", - "0z4SGAoTTUlEX1RBTktfNV9PVkVSRkxPVxDUPhIYChNNSURfVEFOS182X09W", - "RVJGTE9XENU+EhgKE01JRF9UQU5LXzdfT1ZFUkZMT1cQ1j4SGAoTTUlEX1RB", - "TktfOF9PVkVSRkxPVxDXPhIcChdNSURfVEFOS18xX0ZJTExfVElNRU9VVBDY", - "PhIcChdNSURfVEFOS18yX0ZJTExfVElNRU9VVBDZPhIcChdNSURfVEFOS18z", - "X0ZJTExfVElNRU9VVBDaPhIcChdNSURfVEFOS180X0ZJTExfVElNRU9VVBDb", - "PhIcChdNSURfVEFOS181X0ZJTExfVElNRU9VVBDcPhIcChdNSURfVEFOS182", - "X0ZJTExfVElNRU9VVBDdPhIcChdNSURfVEFOS183X0ZJTExfVElNRU9VVBDe", - "PhIcChdNSURfVEFOS184X0ZJTExfVElNRU9VVBDfPhIdChhBSVJfRklMVEVS", - "X05PVF9JTlNUQUxMRUQQqEYSFwoSQUlSX0ZJTFRFUl9DTE9HR0VEEKlGEiUK", - "IFdBU1RFX0NPTlRBSU5FUl9FTVBUWUlOR19USU1FT1VUEKpGEhQKD05PX0FJ", - "Ul9QUkVTU1VSRRCrRhIdChhXQVNURV9DT05UQUlORVJfT1ZFUkZMT1cQrEYS", - "GgoVVk9DX1NFTlNPUl9BTEFSTV9USU1FEK1GEhgKE0NISUxMRVJfRFJZX0NP", - "TlRBQ1QQrkYSGgoVSU5TVUZGSUNJRU5UX0FJUl9GTE9XEK9GEhsKFlZPQ19T", - "RU5TT1JfQUxBUk1fU0xPUEUQsEYSHQoYUFJFX0NPT0xFUl9GQU5fMV9TVE9Q", - "UEVEELFGEh0KGFBSRV9DT09MRVJfRkFOXzJfU1RPUFBFRBCyRhIZChRDT09M", - "RVJfRkFOXzFfU1RPUFBFRBCzRhIZChRDT09MRVJfRkFOXzJfU1RPUFBFRBC0", - "RhIZChRDT09MRVJfRkFOXzNfU1RPUFBFRBC1RhIZChRDT09MRVJfRkFOXzRf", - "U1RPUFBFRBC2RhIhChxQUkVfQ09PTEVSX0ZBTl8xX1JQTV9UT09fTE9XELdG", - "EiEKHFBSRV9DT09MRVJfRkFOXzJfUlBNX1RPT19MT1cQuEYSHQoYQ09PTEVS", - "X0ZBTl8xX1JQTV9UT09fTE9XELlGEh0KGENPT0xFUl9GQU5fMl9SUE1fVE9P", - "X0xPVxC6RhIdChhDT09MRVJfRkFOXzNfUlBNX1RPT19MT1cQu0YSHQoYQ09P", - "TEVSX0ZBTl80X1JQTV9UT09fTE9XELxGEiAKG0NPT0xFUl9URU1QRVJBVFVS", - "RV9UT09fSElHSBC9RhIfChpDT09MRVJfVEVNUEVSQVRVUkVfVE9PX0xPVxC+", - "RhIqCiVJTktfQ0FSVFJJREdFX1BSRVNFTkNFX1NFTlNPUl9USU1FT1VUEJBO", - "Eh8KGklOS19DQVJUUklER0VfUkZJRF9USU1FT1VUEJFOEiEKHE5PX1dBU1RF", - "X0NBUlRSSURHRV9BVkFJTEFCTEUQkk4SHgoZQUxMX1dBU1RFX0NBUlRSSURH", - "RVNfRlVMTBCTThIsCidXQVNURV9DQVJUUklER0VfUFJFU0VOQ0VfU0VOU09S", - "X1RJTUVPVVQQlE4SIQocV0FTVEVfQ0FSVFJJREdFX1JGSURfVElNRU9VVBCV", - "ThIqCiVJTktfQ0FSVFJJREdFX1JGSURfVEFHX0NBTk5PVF9CRV9SRUFEEJZO", - "EiwKJ1dBU1RFX0NBUlRSSURHRV9SRklEX1RBR19DQU5OT1RfQkVfUkVBRBCX", - "ThIoCiNJTktfQ0FSVFJJREdFX1JGSURfVEFHX0lTX05PVF9WQUxJRBCYThIq", - "CiVXQVNURV9DQVJUUklER0VfUkZJRF9UQUdfSVNfTk9UX1ZBTElEEJlOEigK", - "I0lOS19DQVJUUklER0VfQVVUSEVOVElDQVRJT05fRkFJTEVEEJpOEioKJVdB", - "U1RFX0NBUlRSSURHRV9BVVRIRU5USUNBVElPTl9GQUlMRUQQm04SHQoYSU5L", - "X0NBUlRSSURHRV9JU19CTE9DS0VEEJxOEh8KGldBU1RFX0NBUlRSSURHRV9J", - "U19CTE9DS0VEEJ1OEi0KKElOS19DQVJUUklER0VfUkZJRF9UQUdfQ0FOTk9U", - "X0JFX1VQREFURUQQnk4SLwoqV0FTVEVfQ0FSVFJJREdFX1JGSURfVEFHX0NB", - "Tk5PVF9CRV9VUERBVEVEEJ9OEiAKG0lOS19JTl9DQVJUUklER0VfSVNfRVhQ", - "SVJFRBCgTkIhCh9jb20udHdpbmUudGFuZ28ucG1yLmRpYWdub3N0aWNzYgZw", - "cm90bzM=")); + "RU4Q6ScSIwoeRFlFSU5HX0hFQURfVFVOTkVMX0xJRF9JU19PUEVOEOonEh4K", + "GURZRUlOR19IRUFEX0NPVkVSX0lTX09QRU4Q6ycSGgoVTUlYRVJfT1ZFUlRF", + "TVBFUkFUVVJFEPAuEh0KGE1JWEVSX1VOREVSVEVNUEVSQVRVUkVfQRDxLhId", + "ChhNSVhFUl9VTkRFUlRFTVBFUkFUVVJFX0IQ8i4SGQoUTUlYRVJfVEhFUk1B", + "TF9DVVRPRkYQ8y4SHwoaTUlYRVJfQ1VSUkVOVF9PVVRfT0ZfUkFOR0UQ9C4S", + "HQoYTUlYRVJfQ1VSUkVOVF9MT09QX0JSRUFLEPUuEh0KGERJU1BFTlNFUl8x", + "X09WRVJQUkVTU1VSRRDYNhIdChhESVNQRU5TRVJfMl9PVkVSUFJFU1NVUkUQ", + "2TYSHQoYRElTUEVOU0VSXzNfT1ZFUlBSRVNTVVJFENo2Eh0KGERJU1BFTlNF", + "Ul80X09WRVJQUkVTU1VSRRDbNhIdChhESVNQRU5TRVJfNV9PVkVSUFJFU1NV", + "UkUQ3DYSHQoYRElTUEVOU0VSXzZfT1ZFUlBSRVNTVVJFEN02Eh0KGERJU1BF", + "TlNFUl83X09WRVJQUkVTU1VSRRDeNhIdChhESVNQRU5TRVJfOF9PVkVSUFJF", + "U1NVUkUQ3zYSHgoZRElTUEVOU0VSXzFfVU5ERVJQUkVTU1VSRRDgNhIeChlE", + "SVNQRU5TRVJfMl9VTkRFUlBSRVNTVVJFEOE2Eh4KGURJU1BFTlNFUl8zX1VO", + "REVSUFJFU1NVUkUQ4jYSHgoZRElTUEVOU0VSXzRfVU5ERVJQUkVTU1VSRRDj", + "NhIeChlESVNQRU5TRVJfNV9VTkRFUlBSRVNTVVJFEOQ2Eh4KGURJU1BFTlNF", + "Ul82X1VOREVSUFJFU1NVUkUQ5TYSHgoZRElTUEVOU0VSXzdfVU5ERVJQUkVT", + "U1VSRRDmNhIeChlESVNQRU5TRVJfOF9VTkRFUlBSRVNTVVJFEOc2EhYKEURJ", + "U1BFTlNFUl8xX0VNUFRZEOg2EhYKEURJU1BFTlNFUl8yX0VNUFRZEOk2EhYK", + "EURJU1BFTlNFUl8zX0VNUFRZEOo2EhYKEURJU1BFTlNFUl80X0VNUFRZEOs2", + "EhYKEURJU1BFTlNFUl81X0VNUFRZEOw2EhYKEURJU1BFTlNFUl82X0VNUFRZ", + "EO02EhYKEURJU1BFTlNFUl83X0VNUFRZEO42EhYKEURJU1BFTlNFUl84X0VN", + "UFRZEO82Eh8KGkRJU1BFTlNFUl8xX1JFRklMTF9GQUlMVVJFEPA2Eh8KGkRJ", + "U1BFTlNFUl8yX1JFRklMTF9GQUlMVVJFEPE2Eh8KGkRJU1BFTlNFUl8zX1JF", + "RklMTF9GQUlMVVJFEPI2Eh8KGkRJU1BFTlNFUl80X1JFRklMTF9GQUlMVVJF", + "EPM2Eh8KGkRJU1BFTlNFUl81X1JFRklMTF9GQUlMVVJFEPQ2Eh8KGkRJU1BF", + "TlNFUl82X1JFRklMTF9GQUlMVVJFEPU2Eh8KGkRJU1BFTlNFUl83X1JFRklM", + "TF9GQUlMVVJFEPY2Eh8KGkRJU1BFTlNFUl84X1JFRklMTF9GQUlMVVJFEPc2", + "EiIKHURJU1BFTlNFUl8xX01PVE9SX09WRVJDVVJSRU5UEPg2EiIKHURJU1BF", + "TlNFUl8yX01PVE9SX09WRVJDVVJSRU5UEPk2EiIKHURJU1BFTlNFUl8zX01P", + "VE9SX09WRVJDVVJSRU5UEPo2EiIKHURJU1BFTlNFUl80X01PVE9SX09WRVJD", + "VVJSRU5UEPs2EiIKHURJU1BFTlNFUl81X01PVE9SX09WRVJDVVJSRU5UEPw2", + "EiIKHURJU1BFTlNFUl82X01PVE9SX09WRVJDVVJSRU5UEP02EiIKHURJU1BF", + "TlNFUl83X01PVE9SX09WRVJDVVJSRU5UEP42EiIKHURJU1BFTlNFUl84X01P", + "VE9SX09WRVJDVVJSRU5UEP82EiYKIURJU1BFTlNFUl8xX01PVE9SX09WRVJU", + "RU1QRVJBVFVSRRCANxImCiFESVNQRU5TRVJfMl9NT1RPUl9PVkVSVEVNUEVS", + "QVRVUkUQgTcSJgohRElTUEVOU0VSXzNfTU9UT1JfT1ZFUlRFTVBFUkFUVVJF", + "EII3EiYKIURJU1BFTlNFUl80X01PVE9SX09WRVJURU1QRVJBVFVSRRCDNxIm", + "CiFESVNQRU5TRVJfNV9NT1RPUl9PVkVSVEVNUEVSQVRVUkUQhDcSJgohRElT", + "UEVOU0VSXzZfTU9UT1JfT1ZFUlRFTVBFUkFUVVJFEIU3EiYKIURJU1BFTlNF", + "Ul83X01PVE9SX09WRVJURU1QRVJBVFVSRRCGNxImCiFESVNQRU5TRVJfOF9N", + "T1RPUl9PVkVSVEVNUEVSQVRVUkUQhzcSHAoXRElTUEVOU0VSXzFfTU9UT1Jf", + "U1RBTEwQiDcSHAoXRElTUEVOU0VSXzJfTU9UT1JfU1RBTEwQiTcSHAoXRElT", + "UEVOU0VSXzNfTU9UT1JfU1RBTEwQijcSHAoXRElTUEVOU0VSXzRfTU9UT1Jf", + "U1RBTEwQizcSHAoXRElTUEVOU0VSXzVfTU9UT1JfU1RBTEwQjDcSHAoXRElT", + "UEVOU0VSXzZfTU9UT1JfU1RBTEwQjTcSHAoXRElTUEVOU0VSXzdfTU9UT1Jf", + "U1RBTEwQjjcSHAoXRElTUEVOU0VSXzhfTU9UT1JfU1RBTEwQjzcSIwoeRElT", + "UEVOU0VSXzFfTU9UT1JfVU5ERVJWT0xUQUdFEJA3EiMKHkRJU1BFTlNFUl8y", + "X01PVE9SX1VOREVSVk9MVEFHRRCRNxIjCh5ESVNQRU5TRVJfM19NT1RPUl9V", + "TkRFUlZPTFRBR0UQkjcSIwoeRElTUEVOU0VSXzRfTU9UT1JfVU5ERVJWT0xU", + "QUdFEJM3EiMKHkRJU1BFTlNFUl81X01PVE9SX1VOREVSVk9MVEFHRRCUNxIj", + "Ch5ESVNQRU5TRVJfNl9NT1RPUl9VTkRFUlZPTFRBR0UQlTcSIwoeRElTUEVO", + "U0VSXzdfTU9UT1JfVU5ERVJWT0xUQUdFEJY3EiMKHkRJU1BFTlNFUl84X01P", + "VE9SX1VOREVSVk9MVEFHRRCXNxIhChxESVNQRU5TRVJfMV9VUFBFUl9IQVJE", + "X0xJTUlUEJg3EiEKHERJU1BFTlNFUl8yX1VQUEVSX0hBUkRfTElNSVQQmTcS", + "IQocRElTUEVOU0VSXzNfVVBQRVJfSEFSRF9MSU1JVBCaNxIhChxESVNQRU5T", + "RVJfNF9VUFBFUl9IQVJEX0xJTUlUEJs3EiEKHERJU1BFTlNFUl81X1VQUEVS", + "X0hBUkRfTElNSVQQnDcSIQocRElTUEVOU0VSXzZfVVBQRVJfSEFSRF9MSU1J", + "VBCdNxIhChxESVNQRU5TRVJfN19VUFBFUl9IQVJEX0xJTUlUEJ43EiEKHERJ", + "U1BFTlNFUl84X1VQUEVSX0hBUkRfTElNSVQQnzcSIQocRElTUEVOU0VSXzFf", + "TE9XRVJfSEFSRF9MSU1JVBCgNxIhChxESVNQRU5TRVJfMl9MT1dFUl9IQVJE", + "X0xJTUlUEKE3EiEKHERJU1BFTlNFUl8zX0xPV0VSX0hBUkRfTElNSVQQojcS", + "IQocRElTUEVOU0VSXzRfTE9XRVJfSEFSRF9MSU1JVBCjNxIhChxESVNQRU5T", + "RVJfNV9MT1dFUl9IQVJEX0xJTUlUEKQ3EiEKHERJU1BFTlNFUl82X0xPV0VS", + "X0hBUkRfTElNSVQQpTcSIQocRElTUEVOU0VSXzdfTE9XRVJfSEFSRF9MSU1J", + "VBCmNxIhChxESVNQRU5TRVJfOF9MT1dFUl9IQVJEX0xJTUlUEKc3Eh4KGURJ", + "U1BFTlNFUl8xX0hJR0hfUFJFU1NVUkUQqDcSHgoZRElTUEVOU0VSXzJfSElH", + "SF9QUkVTU1VSRRCpNxIeChlESVNQRU5TRVJfM19ISUdIX1BSRVNTVVJFEKo3", + "Eh4KGURJU1BFTlNFUl80X0hJR0hfUFJFU1NVUkUQqzcSHgoZRElTUEVOU0VS", + "XzVfSElHSF9QUkVTU1VSRRCsNxIeChlESVNQRU5TRVJfNl9ISUdIX1BSRVNT", + "VVJFEK03Eh4KGURJU1BFTlNFUl83X0hJR0hfUFJFU1NVUkUQrjcSHgoZRElT", + "UEVOU0VSXzhfSElHSF9QUkVTU1VSRRCvNxIZChRNSURfVEFOS18xX0xPV19M", + "RVZFTBDAPhIZChRNSURfVEFOS18yX0xPV19MRVZFTBDBPhIZChRNSURfVEFO", + "S18zX0xPV19MRVZFTBDCPhIZChRNSURfVEFOS180X0xPV19MRVZFTBDDPhIZ", + "ChRNSURfVEFOS181X0xPV19MRVZFTBDEPhIZChRNSURfVEFOS182X0xPV19M", + "RVZFTBDFPhIZChRNSURfVEFOS183X0xPV19MRVZFTBDGPhIZChRNSURfVEFO", + "S184X0xPV19MRVZFTBDHPhIVChBNSURfVEFOS18xX0VNUFRZEMg+EhUKEE1J", + "RF9UQU5LXzJfRU1QVFkQyT4SFQoQTUlEX1RBTktfM19FTVBUWRDKPhIVChBN", + "SURfVEFOS180X0VNUFRZEMs+EhUKEE1JRF9UQU5LXzVfRU1QVFkQzD4SFQoQ", + "TUlEX1RBTktfNl9FTVBUWRDNPhIVChBNSURfVEFOS183X0VNUFRZEM4+EhUK", + "EE1JRF9UQU5LXzhfRU1QVFkQzz4SGAoTTUlEX1RBTktfMV9PVkVSRkxPVxDQ", + "PhIYChNNSURfVEFOS18yX09WRVJGTE9XENE+EhgKE01JRF9UQU5LXzNfT1ZF", + "UkZMT1cQ0j4SGAoTTUlEX1RBTktfNF9PVkVSRkxPVxDTPhIYChNNSURfVEFO", + "S181X09WRVJGTE9XENQ+EhgKE01JRF9UQU5LXzZfT1ZFUkZMT1cQ1T4SGAoT", + "TUlEX1RBTktfN19PVkVSRkxPVxDWPhIYChNNSURfVEFOS184X09WRVJGTE9X", + "ENc+EhwKF01JRF9UQU5LXzFfRklMTF9USU1FT1VUENg+EhwKF01JRF9UQU5L", + "XzJfRklMTF9USU1FT1VUENk+EhwKF01JRF9UQU5LXzNfRklMTF9USU1FT1VU", + "ENo+EhwKF01JRF9UQU5LXzRfRklMTF9USU1FT1VUENs+EhwKF01JRF9UQU5L", + "XzVfRklMTF9USU1FT1VUENw+EhwKF01JRF9UQU5LXzZfRklMTF9USU1FT1VU", + "EN0+EhwKF01JRF9UQU5LXzdfRklMTF9USU1FT1VUEN4+EhwKF01JRF9UQU5L", + "XzhfRklMTF9USU1FT1VUEN8+Eh0KGEFJUl9GSUxURVJfTk9UX0lOU1RBTExF", + "RBCoRhIXChJBSVJfRklMVEVSX0NMT0dHRUQQqUYSJQogV0FTVEVfQ09OVEFJ", + "TkVSX0VNUFRZSU5HX1RJTUVPVVQQqkYSFAoPTk9fQUlSX1BSRVNTVVJFEKtG", + "Eh0KGFdBU1RFX0NPTlRBSU5FUl9PVkVSRkxPVxCsRhIaChVWT0NfU0VOU09S", + "X0FMQVJNX1RJTUUQrUYSGAoTQ0hJTExFUl9EUllfQ09OVEFDVBCuRhIaChVJ", + "TlNVRkZJQ0lFTlRfQUlSX0ZMT1cQr0YSGwoWVk9DX1NFTlNPUl9BTEFSTV9T", + "TE9QRRCwRhIdChhQUkVfQ09PTEVSX0ZBTl8xX1NUT1BQRUQQsUYSHQoYUFJF", + "X0NPT0xFUl9GQU5fMl9TVE9QUEVEELJGEhkKFENPT0xFUl9GQU5fMV9TVE9Q", + "UEVEELNGEhkKFENPT0xFUl9GQU5fMl9TVE9QUEVEELRGEhkKFENPT0xFUl9G", + "QU5fM19TVE9QUEVEELVGEhkKFENPT0xFUl9GQU5fNF9TVE9QUEVEELZGEiEK", + "HFBSRV9DT09MRVJfRkFOXzFfUlBNX1RPT19MT1cQt0YSIQocUFJFX0NPT0xF", + "Ul9GQU5fMl9SUE1fVE9PX0xPVxC4RhIdChhDT09MRVJfRkFOXzFfUlBNX1RP", + "T19MT1cQuUYSHQoYQ09PTEVSX0ZBTl8yX1JQTV9UT09fTE9XELpGEh0KGENP", + "T0xFUl9GQU5fM19SUE1fVE9PX0xPVxC7RhIdChhDT09MRVJfRkFOXzRfUlBN", + "X1RPT19MT1cQvEYSIAobQ09PTEVSX1RFTVBFUkFUVVJFX1RPT19ISUdIEL1G", + "Eh8KGkNPT0xFUl9URU1QRVJBVFVSRV9UT09fTE9XEL5GEioKJUlOS19DQVJU", + "UklER0VfUFJFU0VOQ0VfU0VOU09SX1RJTUVPVVQQkE4SHwoaSU5LX0NBUlRS", + "SURHRV9SRklEX1RJTUVPVVQQkU4SIQocTk9fV0FTVEVfQ0FSVFJJREdFX0FW", + "QUlMQUJMRRCSThIeChlBTExfV0FTVEVfQ0FSVFJJREdFU19GVUxMEJNOEiwK", + "J1dBU1RFX0NBUlRSSURHRV9QUkVTRU5DRV9TRU5TT1JfVElNRU9VVBCUThIh", + "ChxXQVNURV9DQVJUUklER0VfUkZJRF9USU1FT1VUEJVOEioKJUlOS19DQVJU", + "UklER0VfUkZJRF9UQUdfQ0FOTk9UX0JFX1JFQUQQlk4SLAonV0FTVEVfQ0FS", + "VFJJREdFX1JGSURfVEFHX0NBTk5PVF9CRV9SRUFEEJdOEigKI0lOS19DQVJU", + "UklER0VfUkZJRF9UQUdfSVNfTk9UX1ZBTElEEJhOEioKJVdBU1RFX0NBUlRS", + "SURHRV9SRklEX1RBR19JU19OT1RfVkFMSUQQmU4SKAojSU5LX0NBUlRSSURH", + "RV9BVVRIRU5USUNBVElPTl9GQUlMRUQQmk4SKgolV0FTVEVfQ0FSVFJJREdF", + "X0FVVEhFTlRJQ0FUSU9OX0ZBSUxFRBCbThIdChhJTktfQ0FSVFJJREdFX0lT", + "X0JMT0NLRUQQnE4SHwoaV0FTVEVfQ0FSVFJJREdFX0lTX0JMT0NLRUQQnU4S", + "LQooSU5LX0NBUlRSSURHRV9SRklEX1RBR19DQU5OT1RfQkVfVVBEQVRFRBCe", + "ThIvCipXQVNURV9DQVJUUklER0VfUkZJRF9UQUdfQ0FOTk9UX0JFX1VQREFU", + "RUQQn04SIAobSU5LX0lOX0NBUlRSSURHRV9JU19FWFBJUkVEEKBOQiEKH2Nv", + "bS50d2luZS50YW5nby5wbXIuZGlhZ25vc3RpY3NiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.Diagnostics.EventType), }, null)); @@ -1184,6 +1184,10 @@ namespace Tango.PMR.Diagnostics { /// </summary> [pbr::OriginalName("DYEING_HEAD_TUNNEL_LID_IS_OPEN")] DyeingHeadTunnelLidIsOpen = 5098, /// <summary> + ///Dyeing head cover is open. Cannot execute job (Group = DyeingHead, Category = Warning) + /// </summary> + [pbr::OriginalName("DYEING_HEAD_COVER_IS_OPEN")] DyeingHeadCoverIsOpen = 5099, + /// <summary> ///The temperature in the mixer is too high. Cannot execute job (Group = Mixer, Category = Error) /// </summary> [pbr::OriginalName("MIXER_OVERTEMPERATURE")] MixerOvertemperature = 6000, diff --git a/Software/Visual_Studio/Tango.PMR/Hardware/HardwareDancerType.cs b/Software/Visual_Studio/Tango.PMR/Hardware/HardwareDancerType.cs index f9273789e..7d2bdd014 100644 --- a/Software/Visual_Studio/Tango.PMR/Hardware/HardwareDancerType.cs +++ b/Software/Visual_Studio/Tango.PMR/Hardware/HardwareDancerType.cs @@ -23,9 +23,10 @@ namespace Tango.PMR.Hardware { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "ChhIYXJkd2FyZURhbmNlclR5cGUucHJvdG8SElRhbmdvLlBNUi5IYXJkd2Fy", - "ZSpHChJIYXJkd2FyZURhbmNlclR5cGUSDgoKTGVmdERhbmNlchAAEhAKDE1p", - "ZGRsZURhbmNlchABEg8KC1JpZ2h0RGFuY2VyEAJCHgocY29tLnR3aW5lLnRh", - "bmdvLnBtci5oYXJkd2FyZWIGcHJvdG8z")); + "ZSpqChJIYXJkd2FyZURhbmNlclR5cGUSDgoKTGVmdERhbmNlchAAEhAKDE1p", + "ZGRsZURhbmNlchABEg8KC1JpZ2h0RGFuY2VyEAISDwoLVGhpcmREYW5jZXIQ", + "AxIQCgxGb3VydGhEYW5jZXIQBEIeChxjb20udHdpbmUudGFuZ28ucG1yLmhh", + "cmR3YXJlYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.Hardware.HardwareDancerType), }, null)); @@ -47,6 +48,14 @@ namespace Tango.PMR.Hardware { ///Right Dancer /// </summary> [pbr::OriginalName("RightDancer")] RightDancer = 2, + /// <summary> + ///Third Dancer + /// </summary> + [pbr::OriginalName("ThirdDancer")] ThirdDancer = 3, + /// <summary> + ///Fourth Dancer + /// </summary> + [pbr::OriginalName("FourthDancer")] FourthDancer = 4, } #endregion diff --git a/Software/Visual_Studio/Tango.PMR/Stubs/ProcedureRequest.cs b/Software/Visual_Studio/Tango.PMR/Stubs/ProcedureRequest.cs index 771aaf4f0..0070fbe33 100644 --- a/Software/Visual_Studio/Tango.PMR/Stubs/ProcedureRequest.cs +++ b/Software/Visual_Studio/Tango.PMR/Stubs/ProcedureRequest.cs @@ -22,15 +22,14 @@ namespace Tango.PMR.Stubs { static ProcedureRequestReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( - "ChZQcm9jZWR1cmVSZXF1ZXN0LnByb3RvEg9UYW5nby5QTVIuU3R1YnMicQoQ", + "ChZQcm9jZWR1cmVSZXF1ZXN0LnByb3RvEg9UYW5nby5QTVIuU3R1YnMiUgoQ", "UHJvY2VkdXJlUmVxdWVzdBIMCgRUeXBlGAEgASgFEg8KB1RpbWVvdXQYAiAB", - "KAUSDgoGUGFyYW0xGAMgASgCEg4KBlBhcmFtMhgEIAEoAhIOCgZQYXJhbTMY", - "BSABKAISDgoGUGFyYW00GAYgASgCQhsKGWNvbS50d2luZS50YW5nby5wbXIu", - "c3R1YnNiBnByb3RvMw==")); + "KAUSEAoIVGVzdE5hbWUYAyABKAkSDQoFUGFyYW0YBCADKAJCGwoZY29tLnR3", + "aW5lLnRhbmdvLnBtci5zdHVic2IGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Stubs.ProcedureRequest), global::Tango.PMR.Stubs.ProcedureRequest.Parser, new[]{ "Type", "Timeout", "Param1", "Param2", "Param3", "Param4" }, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Stubs.ProcedureRequest), global::Tango.PMR.Stubs.ProcedureRequest.Parser, new[]{ "Type", "Timeout", "TestName", "Param" }, null, null, null) })); } #endregion @@ -63,10 +62,8 @@ namespace Tango.PMR.Stubs { public ProcedureRequest(ProcedureRequest other) : this() { type_ = other.type_; timeout_ = other.timeout_; - param1_ = other.param1_; - param2_ = other.param2_; - param3_ = other.param3_; - param4_ = other.param4_; + testName_ = other.testName_; + param_ = other.param_.Clone(); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -96,48 +93,25 @@ namespace Tango.PMR.Stubs { } } - /// <summary>Field number for the "Param1" field.</summary> - public const int Param1FieldNumber = 3; - private float param1_; + /// <summary>Field number for the "TestName" field.</summary> + public const int TestNameFieldNumber = 3; + private string testName_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public float Param1 { - get { return param1_; } + public string TestName { + get { return testName_; } set { - param1_ = value; + testName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } - /// <summary>Field number for the "Param2" field.</summary> - public const int Param2FieldNumber = 4; - private float param2_; + /// <summary>Field number for the "Param" field.</summary> + public const int ParamFieldNumber = 4; + private static readonly pb::FieldCodec<float> _repeated_param_codec + = pb::FieldCodec.ForFloat(34); + private readonly pbc::RepeatedField<float> param_ = new pbc::RepeatedField<float>(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public float Param2 { - get { return param2_; } - set { - param2_ = value; - } - } - - /// <summary>Field number for the "Param3" field.</summary> - public const int Param3FieldNumber = 5; - private float param3_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public float Param3 { - get { return param3_; } - set { - param3_ = value; - } - } - - /// <summary>Field number for the "Param4" field.</summary> - public const int Param4FieldNumber = 6; - private float param4_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public float Param4 { - get { return param4_; } - set { - param4_ = value; - } + public pbc::RepeatedField<float> Param { + get { return param_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -155,10 +129,8 @@ namespace Tango.PMR.Stubs { } if (Type != other.Type) return false; if (Timeout != other.Timeout) return false; - if (Param1 != other.Param1) return false; - if (Param2 != other.Param2) return false; - if (Param3 != other.Param3) return false; - if (Param4 != other.Param4) return false; + if (TestName != other.TestName) return false; + if(!param_.Equals(other.param_)) return false; return true; } @@ -167,10 +139,8 @@ namespace Tango.PMR.Stubs { int hash = 1; if (Type != 0) hash ^= Type.GetHashCode(); if (Timeout != 0) hash ^= Timeout.GetHashCode(); - if (Param1 != 0F) hash ^= Param1.GetHashCode(); - if (Param2 != 0F) hash ^= Param2.GetHashCode(); - if (Param3 != 0F) hash ^= Param3.GetHashCode(); - if (Param4 != 0F) hash ^= Param4.GetHashCode(); + if (TestName.Length != 0) hash ^= TestName.GetHashCode(); + hash ^= param_.GetHashCode(); return hash; } @@ -189,22 +159,11 @@ namespace Tango.PMR.Stubs { output.WriteRawTag(16); output.WriteInt32(Timeout); } - if (Param1 != 0F) { - output.WriteRawTag(29); - output.WriteFloat(Param1); - } - if (Param2 != 0F) { - output.WriteRawTag(37); - output.WriteFloat(Param2); - } - if (Param3 != 0F) { - output.WriteRawTag(45); - output.WriteFloat(Param3); - } - if (Param4 != 0F) { - output.WriteRawTag(53); - output.WriteFloat(Param4); + if (TestName.Length != 0) { + output.WriteRawTag(26); + output.WriteString(TestName); } + param_.WriteTo(output, _repeated_param_codec); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -216,18 +175,10 @@ namespace Tango.PMR.Stubs { if (Timeout != 0) { size += 1 + pb::CodedOutputStream.ComputeInt32Size(Timeout); } - if (Param1 != 0F) { - size += 1 + 4; - } - if (Param2 != 0F) { - size += 1 + 4; - } - if (Param3 != 0F) { - size += 1 + 4; - } - if (Param4 != 0F) { - size += 1 + 4; + if (TestName.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(TestName); } + size += param_.CalculateSize(_repeated_param_codec); return size; } @@ -242,18 +193,10 @@ namespace Tango.PMR.Stubs { if (other.Timeout != 0) { Timeout = other.Timeout; } - if (other.Param1 != 0F) { - Param1 = other.Param1; - } - if (other.Param2 != 0F) { - Param2 = other.Param2; - } - if (other.Param3 != 0F) { - Param3 = other.Param3; - } - if (other.Param4 != 0F) { - Param4 = other.Param4; + if (other.TestName.Length != 0) { + TestName = other.TestName; } + param_.Add(other.param_); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -272,20 +215,13 @@ namespace Tango.PMR.Stubs { Timeout = input.ReadInt32(); break; } - case 29: { - Param1 = input.ReadFloat(); + case 26: { + TestName = input.ReadString(); break; } + case 34: case 37: { - Param2 = input.ReadFloat(); - break; - } - case 45: { - Param3 = input.ReadFloat(); - break; - } - case 53: { - Param4 = input.ReadFloat(); + param_.AddEntriesFrom(input, _repeated_param_codec); break; } } diff --git a/Software/Visual_Studio/Tango.PMR/Stubs/ProcedureResponse.cs b/Software/Visual_Studio/Tango.PMR/Stubs/ProcedureResponse.cs index afbad9a4d..85c14a6a1 100644 --- a/Software/Visual_Studio/Tango.PMR/Stubs/ProcedureResponse.cs +++ b/Software/Visual_Studio/Tango.PMR/Stubs/ProcedureResponse.cs @@ -22,15 +22,14 @@ namespace Tango.PMR.Stubs { static ProcedureResponseReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( - "ChdQcm9jZWR1cmVSZXNwb25zZS5wcm90bxIPVGFuZ28uUE1SLlN0dWJzIm4K", + "ChdQcm9jZWR1cmVSZXNwb25zZS5wcm90bxIPVGFuZ28uUE1SLlN0dWJzIlkK", "EVByb2NlZHVyZVJlc3BvbnNlEgwKBFR5cGUYASABKAUSDAoEVGltZRgCIAEo", - "BRITCgtSZXBseVZhbHVlMRgDIAEoAhITCgtSZXBseVZhbHVlMhgEIAEoAhIT", - "CgtSZXBseVZhbHVlMxgFIAEoAkIbChljb20udHdpbmUudGFuZ28ucG1yLnN0", - "dWJzYgZwcm90bzM=")); + "BRIUCgxSZXBseU1lc3NhZ2UYAyABKAkSEgoKUmVwbHlWYWx1ZRgEIAMoAkIb", + "Chljb20udHdpbmUudGFuZ28ucG1yLnN0dWJzYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Stubs.ProcedureResponse), global::Tango.PMR.Stubs.ProcedureResponse.Parser, new[]{ "Type", "Time", "ReplyValue1", "ReplyValue2", "ReplyValue3" }, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Stubs.ProcedureResponse), global::Tango.PMR.Stubs.ProcedureResponse.Parser, new[]{ "Type", "Time", "ReplyMessage", "ReplyValue" }, null, null, null) })); } #endregion @@ -63,9 +62,8 @@ namespace Tango.PMR.Stubs { public ProcedureResponse(ProcedureResponse other) : this() { type_ = other.type_; time_ = other.time_; - replyValue1_ = other.replyValue1_; - replyValue2_ = other.replyValue2_; - replyValue3_ = other.replyValue3_; + replyMessage_ = other.replyMessage_; + replyValue_ = other.replyValue_.Clone(); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -95,37 +93,25 @@ namespace Tango.PMR.Stubs { } } - /// <summary>Field number for the "ReplyValue1" field.</summary> - public const int ReplyValue1FieldNumber = 3; - private float replyValue1_; + /// <summary>Field number for the "ReplyMessage" field.</summary> + public const int ReplyMessageFieldNumber = 3; + private string replyMessage_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public float ReplyValue1 { - get { return replyValue1_; } + public string ReplyMessage { + get { return replyMessage_; } set { - replyValue1_ = value; + replyMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } - /// <summary>Field number for the "ReplyValue2" field.</summary> - public const int ReplyValue2FieldNumber = 4; - private float replyValue2_; + /// <summary>Field number for the "ReplyValue" field.</summary> + public const int ReplyValueFieldNumber = 4; + private static readonly pb::FieldCodec<float> _repeated_replyValue_codec + = pb::FieldCodec.ForFloat(34); + private readonly pbc::RepeatedField<float> replyValue_ = new pbc::RepeatedField<float>(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public float ReplyValue2 { - get { return replyValue2_; } - set { - replyValue2_ = value; - } - } - - /// <summary>Field number for the "ReplyValue3" field.</summary> - public const int ReplyValue3FieldNumber = 5; - private float replyValue3_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public float ReplyValue3 { - get { return replyValue3_; } - set { - replyValue3_ = value; - } + public pbc::RepeatedField<float> ReplyValue { + get { return replyValue_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -143,9 +129,8 @@ namespace Tango.PMR.Stubs { } if (Type != other.Type) return false; if (Time != other.Time) return false; - if (ReplyValue1 != other.ReplyValue1) return false; - if (ReplyValue2 != other.ReplyValue2) return false; - if (ReplyValue3 != other.ReplyValue3) return false; + if (ReplyMessage != other.ReplyMessage) return false; + if(!replyValue_.Equals(other.replyValue_)) return false; return true; } @@ -154,9 +139,8 @@ namespace Tango.PMR.Stubs { int hash = 1; if (Type != 0) hash ^= Type.GetHashCode(); if (Time != 0) hash ^= Time.GetHashCode(); - if (ReplyValue1 != 0F) hash ^= ReplyValue1.GetHashCode(); - if (ReplyValue2 != 0F) hash ^= ReplyValue2.GetHashCode(); - if (ReplyValue3 != 0F) hash ^= ReplyValue3.GetHashCode(); + if (ReplyMessage.Length != 0) hash ^= ReplyMessage.GetHashCode(); + hash ^= replyValue_.GetHashCode(); return hash; } @@ -175,18 +159,11 @@ namespace Tango.PMR.Stubs { output.WriteRawTag(16); output.WriteInt32(Time); } - if (ReplyValue1 != 0F) { - output.WriteRawTag(29); - output.WriteFloat(ReplyValue1); - } - if (ReplyValue2 != 0F) { - output.WriteRawTag(37); - output.WriteFloat(ReplyValue2); - } - if (ReplyValue3 != 0F) { - output.WriteRawTag(45); - output.WriteFloat(ReplyValue3); + if (ReplyMessage.Length != 0) { + output.WriteRawTag(26); + output.WriteString(ReplyMessage); } + replyValue_.WriteTo(output, _repeated_replyValue_codec); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -198,15 +175,10 @@ namespace Tango.PMR.Stubs { if (Time != 0) { size += 1 + pb::CodedOutputStream.ComputeInt32Size(Time); } - if (ReplyValue1 != 0F) { - size += 1 + 4; - } - if (ReplyValue2 != 0F) { - size += 1 + 4; - } - if (ReplyValue3 != 0F) { - size += 1 + 4; + if (ReplyMessage.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ReplyMessage); } + size += replyValue_.CalculateSize(_repeated_replyValue_codec); return size; } @@ -221,15 +193,10 @@ namespace Tango.PMR.Stubs { if (other.Time != 0) { Time = other.Time; } - if (other.ReplyValue1 != 0F) { - ReplyValue1 = other.ReplyValue1; - } - if (other.ReplyValue2 != 0F) { - ReplyValue2 = other.ReplyValue2; - } - if (other.ReplyValue3 != 0F) { - ReplyValue3 = other.ReplyValue3; + if (other.ReplyMessage.Length != 0) { + ReplyMessage = other.ReplyMessage; } + replyValue_.Add(other.replyValue_); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -248,16 +215,13 @@ namespace Tango.PMR.Stubs { Time = input.ReadInt32(); break; } - case 29: { - ReplyValue1 = input.ReadFloat(); + case 26: { + ReplyMessage = input.ReadString(); break; } + case 34: case 37: { - ReplyValue2 = input.ReadFloat(); - break; - } - case 45: { - ReplyValue3 = input.ReadFloat(); + replyValue_.AddEntriesFrom(input, _repeated_replyValue_codec); break; } } diff --git a/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Program.cs b/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Program.cs index af1e6cfeb..ae7bae072 100644 --- a/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Program.cs +++ b/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Program.cs @@ -16,7 +16,7 @@ namespace Tango.EventsTypesGenerator { class Program { - private static string EVENTS_FILE = "Tango alarm events handling chart_Rev27.xlsx"; + private static string EVENTS_FILE = "Tango alarm events handling chart_Rev28.xlsx"; private class ExcelEventType { diff --git a/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Tango.EventsTypesGenerator.csproj b/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Tango.EventsTypesGenerator.csproj index 240ba67f5..ea00f8746 100644 --- a/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Tango.EventsTypesGenerator.csproj +++ b/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Tango.EventsTypesGenerator.csproj @@ -56,8 +56,8 @@ <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> - <None Include="..\..\Resources\Events Revisions\Tango alarm events handling chart_Rev27.xlsx"> - <Link>Tango alarm events handling chart_Rev27.xlsx</Link> + <None Include="..\..\Resources\Events Revisions\Tango alarm events handling chart_Rev28.xlsx"> + <Link>Tango alarm events handling chart_Rev28.xlsx</Link> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Include="App.config" /> |
