aboutsummaryrefslogtreecommitdiffstats
path: root/Software
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2024-05-19 09:59:19 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2024-05-19 09:59:19 +0300
commit61fdeccc6976d5dd2cca30495a26a67233fcde02 (patch)
tree6f58487a33692607fe1e74ea2bcca8c1eb16c403 /Software
parentd35f80a12e3b4258e429f479a489ba930c583873 (diff)
downloadTango-61fdeccc6976d5dd2cca30495a26a67233fcde02.tar.gz
Tango-61fdeccc6976d5dd2cca30495a26a67233fcde02.zip
Abort Thread Loading.
Diffstat (limited to 'Software')
-rw-r--r--Software/PMR/Messages/Common/MessageType.proto2
-rw-r--r--Software/PMR/Messages/ThreadLoading/AbortThreadLoadingRequest.proto9
-rw-r--r--Software/PMR/Messages/ThreadLoading/AbortThreadLoadingResponse.proto9
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs107
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/EurekaMaintenanceView.xaml9
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/ThreadLoading/DefaultThreadLoadingService.cs4
-rw-r--r--Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs6
-rw-r--r--Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs5
-rw-r--r--Software/Visual_Studio/Tango.PMR/Common/MessageType.cs26
-rw-r--r--Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj4
-rw-r--r--Software/Visual_Studio/Tango.PMR/ThreadLoading/AbortThreadLoadingRequest.cs131
-rw-r--r--Software/Visual_Studio/Tango.PMR/ThreadLoading/AbortThreadLoadingResponse.cs131
12 files changed, 398 insertions, 45 deletions
diff --git a/Software/PMR/Messages/Common/MessageType.proto b/Software/PMR/Messages/Common/MessageType.proto
index 8bd0c6e98..0c70eca00 100644
--- a/Software/PMR/Messages/Common/MessageType.proto
+++ b/Software/PMR/Messages/Common/MessageType.proto
@@ -319,6 +319,8 @@ enum MessageType
TryThreadLoadingResponse = 11007;
AttemptThreadJoggingRequest = 11008;
AttemptThreadJoggingResponse = 11009;
+ AbortThreadLoadingRequest = 11010;
+ AbortThreadLoadingResponse = 11011;
//IFS
StartInkFillingStatusRequest = 12000;
diff --git a/Software/PMR/Messages/ThreadLoading/AbortThreadLoadingRequest.proto b/Software/PMR/Messages/ThreadLoading/AbortThreadLoadingRequest.proto
new file mode 100644
index 000000000..b86b71fd0
--- /dev/null
+++ b/Software/PMR/Messages/ThreadLoading/AbortThreadLoadingRequest.proto
@@ -0,0 +1,9 @@
+syntax = "proto3";
+
+package Tango.PMR.ThreadLoading;
+option java_package = "com.twine.tango.pmr.threadloading";
+
+message AbortThreadLoadingRequest
+{
+
+} \ No newline at end of file
diff --git a/Software/PMR/Messages/ThreadLoading/AbortThreadLoadingResponse.proto b/Software/PMR/Messages/ThreadLoading/AbortThreadLoadingResponse.proto
new file mode 100644
index 000000000..6efaa92b8
--- /dev/null
+++ b/Software/PMR/Messages/ThreadLoading/AbortThreadLoadingResponse.proto
@@ -0,0 +1,9 @@
+syntax = "proto3";
+
+package Tango.PMR.ThreadLoading;
+option java_package = "com.twine.tango.pmr.threadloading";
+
+message AbortThreadLoadingResponse
+{
+
+} \ No newline at end of file
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 2279b8bb5..2dc494cb3 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
@@ -64,7 +64,7 @@ namespace Tango.PPC.Maintenance.ViewModels
Winder_3 = 13,
[Description("Winder 4")]
Winder_4 = 14,
-
+
}
public class WasteStateModel : ExtendedObject
{
@@ -154,19 +154,24 @@ namespace Tango.PPC.Maintenance.ViewModels
public Boards SelecteadBoard
{
get { return _selectedBoard; }
- set { _selectedBoard = value;
+ set
+ {
+ _selectedBoard = value;
RaisePropertyChangedAuto();
}
}
public List<Rml> Rmls { get; set; }
-
+
private ObservableCollection<WasteStateModel.RMLDisplayModel> _RMLDisplayList;
public ObservableCollection<WasteStateModel.RMLDisplayModel> RMLDisplayList
{
get { return _RMLDisplayList; }
- set { _RMLDisplayList = value;
- RaisePropertyChangedAuto();}
+ set
+ {
+ _RMLDisplayList = value;
+ RaisePropertyChangedAuto();
+ }
}
@@ -189,7 +194,8 @@ namespace Tango.PPC.Maintenance.ViewModels
public String ThreadLoadingStatus
{
get { return _threadLoadingStatus; }
- set {
+ set
+ {
_threadLoadingStatus = value;
RaisePropertyChangedAuto();
}
@@ -200,8 +206,11 @@ namespace Tango.PPC.Maintenance.ViewModels
public bool ReadyForLoading
{
get { return _readyForLoading; }
- set { _readyForLoading = value;
- RaisePropertyChangedAuto();}
+ set
+ {
+ _readyForLoading = value;
+ RaisePropertyChangedAuto();
+ }
}
private bool _startedDryerWinding;
@@ -221,8 +230,9 @@ namespace Tango.PPC.Maintenance.ViewModels
public bool EnableHeaters
{
get { return _enableHeaters; }
- set {
- if(_enableHeaters != value)
+ set
+ {
+ if (_enableHeaters != value)
{
_enableHeaters = value;
OnHeatersStateChanged();
@@ -230,7 +240,7 @@ namespace Tango.PPC.Maintenance.ViewModels
}
}
}
-
+
public RelayCommand ExportLogsCommand { get; set; }
public OpenCloseDyeingHeadCommand OpenCloseDyeingHeadCommand { get; set; }
@@ -257,6 +267,15 @@ namespace Tango.PPC.Maintenance.ViewModels
public RelayCommand StartDryerWindingCommand { get; set; }
+ public RelayCommand AbortThreadLoadingCommand { get; set; }
+
+ private bool _canAbortThreadLoading;
+ public bool CanAbortThreadLoading
+ {
+ get { return _canAbortThreadLoading; }
+ set { _canAbortThreadLoading = value; RaisePropertyChangedAuto(); }
+ }
+
public MaintenanceViewVM()
{
Guides = new ObservableCollection<GuideBase>(GuideHelper.CreateAllGuides());
@@ -273,11 +292,11 @@ namespace Tango.PPC.Maintenance.ViewModels
StartThreadLoadingCommand = new RelayCommand(StartThreadLoadingWizard, () => MachineProvider.MachineOperator.CanPrint);
StartThreadBreakCommand = new RelayCommand(StartThreadBreakWizard, () => MachineProvider.MachineOperator.CanPrint);
ViewBitResultsCommand = new RelayCommand(ViewBitResult, () => MachineProvider.MachineOperator.IsConnected);
-
+
ResetBoardCommand = new RelayCommand(RunReset, () => MachineProvider.MachineOperator.IsConnected);
- MoveToLoadPositionCommand = new RelayCommand( MoveToLoadPosition, () => { return MachineProvider.MachineOperator.IsConnected && MachineProvider.MachineOperator.CanPrint && false == StartedDryerWinding; });
+ MoveToLoadPositionCommand = new RelayCommand(MoveToLoadPosition, () => { return MachineProvider.MachineOperator.IsConnected && MachineProvider.MachineOperator.CanPrint && false == StartedDryerWinding; });
StartDryerWindingCommand = new RelayCommand(StartDryerWinding, () => ReadyForLoading);
WasteStates = new List<WasteStateModel>()
@@ -288,9 +307,10 @@ namespace Tango.PPC.Maintenance.ViewModels
SelecteadBoard = Boards.Dryer;
ReadyForLoading = false;
+
+ AbortThreadLoadingCommand = new RelayCommand(AbortThreadLoading);
}
-
public override void OnApplicationStarted()
{
MachineProvider.MachineOperator.InkFillingStatusChanged += MachineOperator_InkFillingStatusChanged;
@@ -312,19 +332,19 @@ namespace Tango.PPC.Maintenance.ViewModels
RaisePropertyChanged(nameof(DispenseCleanerLiquidCommand));
_enableHeaters = true;
- RaisePropertyChanged( nameof(EnableHeaters));
+ RaisePropertyChanged(nameof(EnableHeaters));
}
-
+
public async void CresteRMLS()
{
using (ObservablesContext db = ObservablesContext.CreateDefault())
{
- LogManager.Log("Loading RMLS...");
+ LogManager.Log("Loading RMLS...");
Rmls = (await new RmlsCollectionBuilder(db).SetAll().WithActiveParametersGroup().ForHeadType(MachineProvider.Machine.MachineHeadType).ForSite(MachineProvider.Machine.SiteGuid).BuildAsync()).OrderBy(x => x.FinalName).ToList();
//Rmls = (await new RmlsCollectionBuilder(db).SetAll().WithActiveParametersGroup().BuildAsync()).OrderBy(x => x.FinalName).ToList();
RMLDisplayList = Rmls.Select(p => new WasteStateModel.RMLDisplayModel { Guid = p.Guid, Name = p.Name, FinalName = p.FinalName }).OrderBy(x => x.FinalName).ToObservableCollection();
- SelectedRML = RMLDisplayList.FirstOrDefault();
+ SelectedRML = RMLDisplayList.FirstOrDefault();
}
}
@@ -377,7 +397,7 @@ namespace Tango.PPC.Maintenance.ViewModels
private void MachineOperator_ThreadLoadingStatusChanged(object sender, StartThreadLoadingResponse e)
{
- if( e != null)
+ if (e != null)
{
var State = e.State;
switch (e.State)
@@ -419,13 +439,17 @@ namespace Tango.PPC.Maintenance.ViewModels
break;
}
default:
- {
+ {
ThreadLoadingStatus = "";
StartedDryerWinding = false;
return;
}
-
};
+
+ if (e.State != ThreadLoadingState.None && e.State != ThreadLoadingState.Completed)
+ {
+ CanAbortThreadLoading = true;
+ }
}
}
@@ -619,28 +643,48 @@ namespace Tango.PPC.Maintenance.ViewModels
await NotificationProvider.ShowError($"We could not reset the {SelecteadBoard.ToDescription()}.\n{ex.FlattenMessage()}");
}
}
-
- private void MoveToLoadPosition(object obj)
+
+ private void MoveToLoadPosition()
{
MachineProvider.MachineOperator.StartThreadLoading();
}
- private void StartDryerWinding(object obj)
+ private async void AbortThreadLoading()
+ {
+ if (CanAbortThreadLoading)
+ {
+ try
+ {
+ CanAbortThreadLoading = false;
+ ThreadLoadingStatus = "Aborting thread loading...";
+ await MachineProvider.MachineOperator.AbortThreadLoading();
+ await Task.Delay(1000);
+ ThreadLoadingStatus = "Thread loading aborted";
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error aborting thread loading.");
+ CanAbortThreadLoading = true;
+ }
+ }
+ }
+
+ private void StartDryerWinding()
{
try
{
- var rml = Rmls.Where( x=> x.Guid == SelectedRML.Guid).FirstOrDefault();
- if(rml != null && rml.GetActiveProcessGroup()!= null)
+ var rml = Rmls.Where(x => x.Guid == SelectedRML.Guid).FirstOrDefault();
+ if (rml != null && rml.GetActiveProcessGroup() != null)
{
var processParametersTable = rml.GetActiveProcessGroup().ProcessParametersTables.FirstOrDefault();
- if(processParametersTable != null)
+ if (processParametersTable != null)
{
StartedDryerWinding = true;
MachineProvider.MachineOperator.ContinueThreadLoading(processParametersTable.Clone());
}
}
}
- catch (Exception ex)
+ catch (Exception)
{
StartedDryerWinding = false;
}
@@ -648,7 +692,7 @@ namespace Tango.PPC.Maintenance.ViewModels
private async void OnHeatersStateChanged()
{
- if(EnableHeaters == false)//turn off heaters
+ if (EnableHeaters == false)//turn off heaters
{
try
{
@@ -659,14 +703,15 @@ namespace Tango.PPC.Maintenance.ViewModels
LogManager.Log(ex, "Error resetting process parameters.");
}
}
- else {
+ else
+ {
try
{
var currentProcessParameters = MachineProvider.MachineOperator.CurrentProcessParameters;
if (currentProcessParameters == null || currentProcessParameters.Guid == null)
{
var settings = SettingsManager.Default.GetOrCreate<MaitenanceModuleSettings>();
-
+
var defRmlGuid = Settings.DefaultRmlGuid ?? Rmls.First().Guid;
var rml = Rmls.Where(x => x.Guid == defRmlGuid).FirstOrDefault();
if (rml != null && rml.GetActiveProcessGroup() != null)
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/EurekaMaintenanceView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/EurekaMaintenanceView.xaml
index 0b30d697e..1101ad54a 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/EurekaMaintenanceView.xaml
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/EurekaMaintenanceView.xaml
@@ -233,6 +233,15 @@
</Border>
</DockPanel>
</UniformGrid>
+ <touch:TouchButton Width="150" HorizontalAlignment="Right" Margin="0 0 55 0" CornerRadius="20" Height="40" FontSize="18" Command="{Binding AbortThreadLoadingCommand}" IsEnabled="{Binding CanAbortThreadLoading}">
+ <touch:TouchButton.Style>
+ <Style TargetType="touch:TouchButton" BasedOn="{StaticResource TangoHollowButton}">
+ <Setter Property="Foreground" Value="{StaticResource TangoRedBrush}"></Setter>
+ <Setter Property="BorderBrush" Value="{StaticResource TangoRedBrush}"></Setter>
+ <Setter Property="Content" Value="ABORT"></Setter>
+ </Style>
+ </touch:TouchButton.Style>
+ </touch:TouchButton>
</StackPanel>
</StackPanel>
</touch:TouchDropShadowBorder>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/ThreadLoading/DefaultThreadLoadingService.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/ThreadLoading/DefaultThreadLoadingService.cs
index 4d6a848d3..cc8f867cc 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/ThreadLoading/DefaultThreadLoadingService.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ThreadLoading/DefaultThreadLoadingService.cs
@@ -26,8 +26,8 @@ namespace Tango.PPC.UI.ThreadLoading
_notificationsProvider = notificationsProvider;
_machineProvider = machineProvider;
_dispatcher = dispatcher;
- if(false == TangoIOC.Default.GetInstance<IBuildProvider>().IsEureka)
- _machineProvider.MachineOperator.ThreadLoadingStatusChanged += MachineOperator_ThreadLoadingStatusChanged;
+ if (false == TangoIOC.Default.GetInstance<IBuildProvider>().IsEureka)
+ _machineProvider.MachineOperator.ThreadLoadingStatusChanged += MachineOperator_ThreadLoadingStatusChanged;
}
private void MachineOperator_ThreadLoadingStatusChanged(object sender, PMR.ThreadLoading.StartThreadLoadingResponse e)
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs
index 68ed696fa..7951bc584 100644
--- a/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs
+++ b/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs
@@ -563,6 +563,12 @@ namespace Tango.Integration.Operation
Task ContinueThreadLoading(ProcessParametersTable processParameters);
/// <summary>
+ /// Aborts the current thread loading process.
+ /// </summary>
+ /// <returns></returns>
+ Task AbortThreadLoading();
+
+ /// <summary>
/// Attempts to jog the thread in order to check whether there are no thread breaking issues.
/// </summary>
/// <returns></returns>
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
index 9596dc29c..a2fc447af 100644
--- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
+++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
@@ -4560,6 +4560,11 @@ namespace Tango.Integration.Operation
}, new TransportRequestConfig() { ShouldLog = true });
}
+ public async Task AbortThreadLoading()
+ {
+ var response = await SendRequest<AbortThreadLoadingRequest, AbortThreadLoadingResponse>(new AbortThreadLoadingRequest());
+ }
+
/// <summary>
/// Attempts to jog the thread in order to check whether there are no thread breaking issues.
/// </summary>
diff --git a/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs b/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs
index d106ab382..a75ed1705 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(
- "ChFNZXNzYWdlVHlwZS5wcm90bxIQVGFuZ28uUE1SLkNvbW1vbirnQgoLTWVz",
+ "ChFNZXNzYWdlVHlwZS5wcm90bxIQVGFuZ28uUE1SLkNvbW1vbiqoQwoLTWVz",
"c2FnZVR5cGUSCAoETm9uZRAAEhEKDUVycm9yUmVzcG9uc2UQARIUChBDYWxj",
"dWxhdGVSZXF1ZXN0EAMSFQoRQ2FsY3VsYXRlUmVzcG9uc2UQBBITCg9Qcm9n",
"cmVzc1JlcXVlc3QQBRIUChBQcm9ncmVzc1Jlc3BvbnNlEAYSHAoYU3R1YkNh",
@@ -204,16 +204,18 @@ namespace Tango.PMR.Common {
"VGhyZWFkTG9hZGluZ1Jlc3BvbnNlEP1VEhwKF1RyeVRocmVhZExvYWRpbmdS",
"ZXF1ZXN0EP5VEh0KGFRyeVRocmVhZExvYWRpbmdSZXNwb25zZRD/VRIgChtB",
"dHRlbXB0VGhyZWFkSm9nZ2luZ1JlcXVlc3QQgFYSIQocQXR0ZW1wdFRocmVh",
- "ZEpvZ2dpbmdSZXNwb25zZRCBVhIhChxTdGFydElua0ZpbGxpbmdTdGF0dXNS",
- "ZXF1ZXN0EOBdEiIKHVN0YXJ0SW5rRmlsbGluZ1N0YXR1c1Jlc3BvbnNlEOFd",
- "Eh4KGUluaXRpYXRlSW5rRmlsbGluZ1JlcXVlc3QQ4l0SHwoaSW5pdGlhdGVJ",
- "bmtGaWxsaW5nUmVzcG9uc2UQ410SGAoTV2FzdGVSZXBsYWNlUmVxdWVzdBDk",
- "XRIZChRXYXN0ZVJlcGxhY2VSZXNwb25zZRDlXRIcChdQdXREYXRhU3RvcmVJ",
- "dGVtUmVxdWVzdBDIZRIdChhQdXREYXRhU3RvcmVJdGVtUmVzcG9uc2UQyWUS",
- "HAoXR2V0RGF0YVN0b3JlSXRlbVJlcXVlc3QQymUSHQoYR2V0RGF0YVN0b3Jl",
- "SXRlbVJlc3BvbnNlEMtlEiEKHERhdGFTdG9yZUl0ZW1Nb2RpZmllZFJlcXVl",
- "c3QQzGUSIgodRGF0YVN0b3JlSXRlbU1vZGlmaWVkUmVzcG9uc2UQzWVCHAoa",
- "Y29tLnR3aW5lLnRhbmdvLnBtci5jb21tb25iBnByb3RvMw=="));
+ "ZEpvZ2dpbmdSZXNwb25zZRCBVhIeChlBYm9ydFRocmVhZExvYWRpbmdSZXF1",
+ "ZXN0EIJWEh8KGkFib3J0VGhyZWFkTG9hZGluZ1Jlc3BvbnNlEINWEiEKHFN0",
+ "YXJ0SW5rRmlsbGluZ1N0YXR1c1JlcXVlc3QQ4F0SIgodU3RhcnRJbmtGaWxs",
+ "aW5nU3RhdHVzUmVzcG9uc2UQ4V0SHgoZSW5pdGlhdGVJbmtGaWxsaW5nUmVx",
+ "dWVzdBDiXRIfChpJbml0aWF0ZUlua0ZpbGxpbmdSZXNwb25zZRDjXRIYChNX",
+ "YXN0ZVJlcGxhY2VSZXF1ZXN0EORdEhkKFFdhc3RlUmVwbGFjZVJlc3BvbnNl",
+ "EOVdEhwKF1B1dERhdGFTdG9yZUl0ZW1SZXF1ZXN0EMhlEh0KGFB1dERhdGFT",
+ "dG9yZUl0ZW1SZXNwb25zZRDJZRIcChdHZXREYXRhU3RvcmVJdGVtUmVxdWVz",
+ "dBDKZRIdChhHZXREYXRhU3RvcmVJdGVtUmVzcG9uc2UQy2USIQocRGF0YVN0",
+ "b3JlSXRlbU1vZGlmaWVkUmVxdWVzdBDMZRIiCh1EYXRhU3RvcmVJdGVtTW9k",
+ "aWZpZWRSZXNwb25zZRDNZUIcChpjb20udHdpbmUudGFuZ28ucG1yLmNvbW1v",
+ "bmIGcHJvdG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.Common.MessageType), }, null));
@@ -547,6 +549,8 @@ namespace Tango.PMR.Common {
[pbr::OriginalName("TryThreadLoadingResponse")] TryThreadLoadingResponse = 11007,
[pbr::OriginalName("AttemptThreadJoggingRequest")] AttemptThreadJoggingRequest = 11008,
[pbr::OriginalName("AttemptThreadJoggingResponse")] AttemptThreadJoggingResponse = 11009,
+ [pbr::OriginalName("AbortThreadLoadingRequest")] AbortThreadLoadingRequest = 11010,
+ [pbr::OriginalName("AbortThreadLoadingResponse")] AbortThreadLoadingResponse = 11011,
/// <summary>
///IFS
/// </summary>
diff --git a/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj
index d7ef29237..a7fe17a56 100644
--- a/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj
+++ b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj
@@ -493,6 +493,8 @@
<Compile Include="TCC\DetectionColorFile.cs" />
<Compile Include="TCC\DetectionInput.cs" />
<Compile Include="TCC\DetectionOutput.cs" />
+ <Compile Include="ThreadLoading\AbortThreadLoadingRequest.cs" />
+ <Compile Include="ThreadLoading\AbortThreadLoadingResponse.cs" />
<Compile Include="ThreadLoading\AttemptThreadJoggingRequest.cs" />
<Compile Include="ThreadLoading\AttemptThreadJoggingResponse.cs" />
<Compile Include="ThreadLoading\ContinueThreadLoadingRequest.cs" />
@@ -521,7 +523,7 @@
</PropertyGroup>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
+ <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.PMR/ThreadLoading/AbortThreadLoadingRequest.cs b/Software/Visual_Studio/Tango.PMR/ThreadLoading/AbortThreadLoadingRequest.cs
new file mode 100644
index 000000000..ace68d6a8
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/ThreadLoading/AbortThreadLoadingRequest.cs
@@ -0,0 +1,131 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: AbortThreadLoadingRequest.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.ThreadLoading {
+
+ /// <summary>Holder for reflection information generated from AbortThreadLoadingRequest.proto</summary>
+ public static partial class AbortThreadLoadingRequestReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for AbortThreadLoadingRequest.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static AbortThreadLoadingRequestReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Ch9BYm9ydFRocmVhZExvYWRpbmdSZXF1ZXN0LnByb3RvEhdUYW5nby5QTVIu",
+ "VGhyZWFkTG9hZGluZyIbChlBYm9ydFRocmVhZExvYWRpbmdSZXF1ZXN0QiMK",
+ "IWNvbS50d2luZS50YW5nby5wbXIudGhyZWFkbG9hZGluZ2IGcHJvdG8z"));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.ThreadLoading.AbortThreadLoadingRequest), global::Tango.PMR.ThreadLoading.AbortThreadLoadingRequest.Parser, null, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class AbortThreadLoadingRequest : pb::IMessage<AbortThreadLoadingRequest> {
+ private static readonly pb::MessageParser<AbortThreadLoadingRequest> _parser = new pb::MessageParser<AbortThreadLoadingRequest>(() => new AbortThreadLoadingRequest());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<AbortThreadLoadingRequest> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.ThreadLoading.AbortThreadLoadingRequestReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public AbortThreadLoadingRequest() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public AbortThreadLoadingRequest(AbortThreadLoadingRequest other) : this() {
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public AbortThreadLoadingRequest Clone() {
+ return new AbortThreadLoadingRequest(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as AbortThreadLoadingRequest);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(AbortThreadLoadingRequest 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(AbortThreadLoadingRequest 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/ThreadLoading/AbortThreadLoadingResponse.cs b/Software/Visual_Studio/Tango.PMR/ThreadLoading/AbortThreadLoadingResponse.cs
new file mode 100644
index 000000000..42f21a1a7
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/ThreadLoading/AbortThreadLoadingResponse.cs
@@ -0,0 +1,131 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: AbortThreadLoadingResponse.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.ThreadLoading {
+
+ /// <summary>Holder for reflection information generated from AbortThreadLoadingResponse.proto</summary>
+ public static partial class AbortThreadLoadingResponseReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for AbortThreadLoadingResponse.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static AbortThreadLoadingResponseReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "CiBBYm9ydFRocmVhZExvYWRpbmdSZXNwb25zZS5wcm90bxIXVGFuZ28uUE1S",
+ "LlRocmVhZExvYWRpbmciHAoaQWJvcnRUaHJlYWRMb2FkaW5nUmVzcG9uc2VC",
+ "IwohY29tLnR3aW5lLnRhbmdvLnBtci50aHJlYWRsb2FkaW5nYgZwcm90bzM="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.ThreadLoading.AbortThreadLoadingResponse), global::Tango.PMR.ThreadLoading.AbortThreadLoadingResponse.Parser, null, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class AbortThreadLoadingResponse : pb::IMessage<AbortThreadLoadingResponse> {
+ private static readonly pb::MessageParser<AbortThreadLoadingResponse> _parser = new pb::MessageParser<AbortThreadLoadingResponse>(() => new AbortThreadLoadingResponse());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<AbortThreadLoadingResponse> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.ThreadLoading.AbortThreadLoadingResponseReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public AbortThreadLoadingResponse() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public AbortThreadLoadingResponse(AbortThreadLoadingResponse other) : this() {
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public AbortThreadLoadingResponse Clone() {
+ return new AbortThreadLoadingResponse(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as AbortThreadLoadingResponse);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(AbortThreadLoadingResponse 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(AbortThreadLoadingResponse 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