aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2021-02-16 23:38:14 +0200
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2021-02-16 23:38:14 +0200
commitf4b04f631207a3bc849fd8f4b789cc028926d041 (patch)
treefaec3f8d927a378e4e01b3999c8c49eb29df8d99
parentfe6d54eadd778487c9e6fdb9cc39cc88289d426f (diff)
downloadTango-f4b04f631207a3bc849fd8f4b789cc028926d041.tar.gz
Tango-f4b04f631207a3bc849fd8f4b789cc028926d041.zip
Job Prepare + Major fix with job ticket not filling as the actual job.
-rw-r--r--Software/PMR/Messages/Common/MessageType.proto2
-rw-r--r--Software/PMR/Messages/Printing/JobPrepareDispenser.proto14
-rw-r--r--Software/PMR/Messages/Printing/JobPrepareRequest.proto13
-rw-r--r--Software/PMR/Messages/Printing/JobPrepareResponse.proto9
-rw-r--r--Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs9
-rw-r--r--Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs57
-rw-r--r--Software/Visual_Studio/Tango.PMR/Common/MessageType.cs117
-rw-r--r--Software/Visual_Studio/Tango.PMR/Printing/JobPrepareDispenser.cs246
-rw-r--r--Software/Visual_Studio/Tango.PMR/Printing/JobPrepareRequest.cs189
-rw-r--r--Software/Visual_Studio/Tango.PMR/Printing/JobPrepareResponse.cs131
-rw-r--r--Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj5
11 files changed, 731 insertions, 61 deletions
diff --git a/Software/PMR/Messages/Common/MessageType.proto b/Software/PMR/Messages/Common/MessageType.proto
index a1965ee91..d4dced16e 100644
--- a/Software/PMR/Messages/Common/MessageType.proto
+++ b/Software/PMR/Messages/Common/MessageType.proto
@@ -214,6 +214,8 @@ enum MessageType
StartHeadCleaningResponse = 3011;
AbortHeadCleaningRequest = 3012;
AbortHeadCleaningResponse = 3013;
+ JobPrepareRequest = 3014;
+ JobPrepareResponse = 3015;
diff --git a/Software/PMR/Messages/Printing/JobPrepareDispenser.proto b/Software/PMR/Messages/Printing/JobPrepareDispenser.proto
new file mode 100644
index 000000000..07ef4cdff
--- /dev/null
+++ b/Software/PMR/Messages/Printing/JobPrepareDispenser.proto
@@ -0,0 +1,14 @@
+syntax = "proto3";
+
+import "DispenserLiquidType.proto";
+
+package Tango.PMR.Printing;
+option java_package = "com.twine.tango.pmr.printing";
+
+message JobPrepareDispenser
+{
+ int32 Index = 1;
+ DispenserLiquidType DispenserLiquidType = 2;
+ int32 TotalNanoliter = 3;
+ bool Active = 4;
+} \ No newline at end of file
diff --git a/Software/PMR/Messages/Printing/JobPrepareRequest.proto b/Software/PMR/Messages/Printing/JobPrepareRequest.proto
new file mode 100644
index 000000000..638be05e6
--- /dev/null
+++ b/Software/PMR/Messages/Printing/JobPrepareRequest.proto
@@ -0,0 +1,13 @@
+syntax = "proto3";
+
+import "ProcessParameters.proto";
+import "JobPrepareDispenser.proto";
+
+package Tango.PMR.Printing;
+option java_package = "com.twine.tango.pmr.printing";
+
+message JobPrepareRequest
+{
+ ProcessParameters ProcessParameters = 1;
+ repeated JobPrepareDispenser Dispensers = 2;
+} \ No newline at end of file
diff --git a/Software/PMR/Messages/Printing/JobPrepareResponse.proto b/Software/PMR/Messages/Printing/JobPrepareResponse.proto
new file mode 100644
index 000000000..a99256684
--- /dev/null
+++ b/Software/PMR/Messages/Printing/JobPrepareResponse.proto
@@ -0,0 +1,9 @@
+syntax = "proto3";
+
+package Tango.PMR.Printing;
+option java_package = "com.twine.tango.pmr.printing";
+
+message JobPrepareResponse
+{
+
+} \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
index ca8bacaa4..b3f1d3dc4 100644
--- a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
+++ b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
@@ -476,6 +476,9 @@ namespace Tango.Emulations.Emulators
case MessageType.DataStoreItemModifiedRequest:
HandleDataStoreItemModifiedRequest(MessageFactory.ParseTangoMessageFromContainer<DataStoreItemModifiedRequest>(container));
break;
+ case MessageType.JobPrepareRequest:
+ HandleJobPrepareRequest(MessageFactory.ParseTangoMessageFromContainer<JobPrepareRequest>(container));
+ break;
}
}
@@ -1768,6 +1771,12 @@ namespace Tango.Emulations.Emulators
});
}
+ private async void HandleJobPrepareRequest(TangoMessage<JobPrepareRequest> request)
+ {
+ await Task.Delay(2000);
+ await Transporter.SendResponse<JobPrepareResponse>(new JobPrepareResponse(), request.Container.Token);
+ }
+
#endregion
#region Public Methods
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
index 83a836c2f..05026791d 100644
--- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
+++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
@@ -92,6 +92,16 @@ namespace Tango.Integration.Operation
public static SessionFileLogger SessionLogger { get; set; }
public static String CachedJobOperationFile { get; set; }
+ #region Classes
+
+ private class RequiredLiquid
+ {
+ public IdsPack IdsPack { get; set; }
+ public int Quantity { get; set; }
+ }
+
+ #endregion
+
#region Constructors
/// <summary>
@@ -2006,11 +2016,12 @@ namespace Tango.Integration.Operation
});
}
- private void ValidateJobLiquidQuantity(Job job, ProcessParametersTable processParameters, Configuration configuration)
+ private List<RequiredLiquid> ValidateJobLiquidQuantity(Job job, ProcessParametersTable processParameters, Configuration configuration)
{
LogManager.Log("Validating job liquid quantities...");
Dictionary<int, double> liquidQuantities = new Dictionary<int, double>();
+ List<RequiredLiquid> requiredLiquids = new List<RequiredLiquid>();
foreach (var pack in configuration.NoneEmptyIdsPacks.OrderBy(x => x.PackIndex))
{
@@ -2091,6 +2102,12 @@ namespace Tango.Integration.Operation
Maximum = MAX_DISPENSER_NANOLITER,
};
+ requiredLiquids.Add(new RequiredLiquid()
+ {
+ IdsPack = idsPack,
+ Quantity = (int)liquidQuantities[index]
+ });
+
LogManager.Log($"Required {idsLevel.IdsPack.LiquidType.Type}: {idsLevel.Required}, Current: {idsLevel.Current}");
if (idsLevel.Required > idsLevel.Current)
@@ -2132,6 +2149,8 @@ namespace Tango.Integration.Operation
{
LogManager.Log("Could not validate required liquid quantity for job. No machine status received", LogCategory.Warning);
}
+
+ return requiredLiquids;
}
/// <summary>
@@ -2584,10 +2603,12 @@ namespace Tango.Integration.Operation
}
}
+ List<RequiredLiquid> requiredLiquids = null;
+
//Validate liquid quantities..
if (EnableJobLiquidQuantityValidation)
{
- ValidateJobLiquidQuantity(job, processParameters, job.Machine.Configuration);
+ requiredLiquids = ValidateJobLiquidQuantity(job, processParameters, job.Machine.Configuration);
}
else
{
@@ -2746,7 +2767,7 @@ namespace Tango.Integration.Operation
Message = "Preparing Job...",
});
- foreach (var segment in originalJob.OrderedSegments)
+ foreach (var segment in segments)
{
try
{
@@ -2835,6 +2856,36 @@ namespace Tango.Integration.Operation
var oldKeepAlive = UseKeepAlive;
+ if (requiredLiquids != null)
+ {
+ JobPrepareRequest prepareRequest = new JobPrepareRequest();
+ prepareRequest.ProcessParameters = ticket.ProcessParameters;
+
+ foreach (var requiredLiquid in requiredLiquids)
+ {
+ JobPrepareDispenser prepareDispenser = new JobPrepareDispenser();
+ prepareDispenser.DispenserLiquidType = (DispenserLiquidType)requiredLiquid.IdsPack.LiquidType.Type;
+ prepareDispenser.Index = requiredLiquid.IdsPack.PackIndex;
+ prepareDispenser.TotalNanoliter = requiredLiquid.Quantity;
+ prepareDispenser.Active = requiredLiquid.Quantity > 0;
+
+ prepareRequest.Dispensers.Add(prepareDispenser);
+ }
+
+ try
+ {
+ var response = await SendRequest<JobPrepareRequest, JobPrepareResponse>(prepareRequest, new TransportRequestConfig()
+ {
+ ShouldLog = true,
+ Timeout = TimeSpan.FromSeconds(10)
+ });
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error sending job preparation request.");
+ }
+ }
+
if (JobUploadStrategy == JobUploadStrategy.JobDescriptionFile)
{
LogManager.Log("Generating job description file...");
diff --git a/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs b/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs
index 03b9e40bf..a46b2d2d0 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(
- "ChFNZXNzYWdlVHlwZS5wcm90bxIQVGFuZ28uUE1SLkNvbW1vbiqVPwoLTWVz",
+ "ChFNZXNzYWdlVHlwZS5wcm90bxIQVGFuZ28uUE1SLkNvbW1vbirGPwoLTWVz",
"c2FnZVR5cGUSCAoETm9uZRAAEhEKDUVycm9yUmVzcG9uc2UQARIUChBDYWxj",
"dWxhdGVSZXF1ZXN0EAMSFQoRQ2FsY3VsYXRlUmVzcG9uc2UQBBITCg9Qcm9n",
"cmVzc1JlcXVlc3QQBRIUChBQcm9ncmVzc1Jlc3BvbnNlEAYSHAoYU3R1YkNh",
@@ -148,62 +148,63 @@ namespace Tango.PMR.Common {
"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"));
+ "cXVlc3QQxBcSHgoZQWJvcnRIZWFkQ2xlYW5pbmdSZXNwb25zZRDFFxIWChFK",
+ "b2JQcmVwYXJlUmVxdWVzdBDGFxIXChJKb2JQcmVwYXJlUmVzcG9uc2UQxxcS",
+ "GQoUU3RhcnREZWJ1Z0xvZ1JlcXVlc3QQoB8SGgoVU3RhcnREZWJ1Z0xvZ1Jl",
+ "c3BvbnNlEKEfEhgKE1N0b3BEZWJ1Z0xvZ1JlcXVlc3QQoh8SGQoUU3RvcERl",
+ "YnVnTG9nUmVzcG9uc2UQox8SHwoaU2V0RGVidWdMb2dDYXRlZ29yeVJlcXVl",
+ "c3QQpB8SIAobU2V0RGVidWdMb2dDYXRlZ29yeVJlc3BvbnNlEKUfEiEKHFNl",
+ "dHVwRGVidWdEaXNyaWJ1dG9yc1JlcXVlc3QQph8SIgodU2V0dXBEZWJ1Z0Rp",
+ "c3JpYnV0b3JzUmVzcG9uc2UQpx8SJwoiVXBsb2FkSGFyZHdhcmVDb25maWd1",
+ "cmF0aW9uUmVxdWVzdBCIJxIoCiNVcGxvYWRIYXJkd2FyZUNvbmZpZ3VyYXRp",
+ "b25SZXNwb25zZRCJJxIXChJTeXN0ZW1SZXNldFJlcXVlc3QQiicSGAoTU3lz",
+ "dGVtUmVzZXRSZXNwb25zZRCLJxIVChBLZWVwQWxpdmVSZXF1ZXN0EPAuEhYK",
+ "EUtlZXBBbGl2ZVJlc3BvbnNlEPEuEhMKDkNvbm5lY3RSZXF1ZXN0EPIuEhQK",
+ "D0Nvbm5lY3RSZXNwb25zZRDzLhIWChFEaXNjb25uZWN0UmVxdWVzdBD0LhIX",
+ "ChJEaXNjb25uZWN0UmVzcG9uc2UQ9S4SFgoRRmlsZVVwbG9hZFJlcXVlc3QQ",
+ "2DYSFwoSRmlsZVVwbG9hZFJlc3BvbnNlENk2EhsKFkZpbGVDaHVua1VwbG9h",
+ "ZFJlcXVlc3QQ2jYSHAoXRmlsZUNodW5rVXBsb2FkUmVzcG9uc2UQ2zYSGgoV",
+ "RXhlY3V0ZVByb2Nlc3NSZXF1ZXN0ENw2EhsKFkV4ZWN1dGVQcm9jZXNzUmVz",
+ "cG9uc2UQ3TYSFwoSS2lsbFByb2Nlc3NSZXF1ZXN0EN42EhgKE0tpbGxQcm9j",
+ "ZXNzUmVzcG9uc2UQ3zYSEgoNQ3JlYXRlUmVxdWVzdBDgNhITCg5DcmVhdGVS",
+ "ZXNwb25zZRDhNhISCg1EZWxldGVSZXF1ZXN0EOI2EhMKDkRlbGV0ZVJlc3Bv",
+ "bnNlEOM2EhoKFUdldFN0b3JhZ2VJbmZvUmVxdWVzdBDkNhIbChZHZXRTdG9y",
+ "YWdlSW5mb1Jlc3BvbnNlEOU2EhQKD0dldEZpbGVzUmVxdWVzdBDmNhIVChBH",
+ "ZXRGaWxlc1Jlc3BvbnNlEOc2EhgKE0ZpbGVEb3dubG9hZFJlcXVlc3QQ6DYS",
+ "GQoURmlsZURvd25sb2FkUmVzcG9uc2UQ6TYSHQoYRmlsZUNodW5rRG93bmxv",
+ "YWRSZXF1ZXN0EOo2Eh4KGUZpbGVDaHVua0Rvd25sb2FkUmVzcG9uc2UQ6zYS",
+ "GwoWVmFsaWRhdGVWZXJzaW9uUmVxdWVzdBDsNhIcChdWYWxpZGF0ZVZlcnNp",
+ "b25SZXNwb25zZRDtNhIbChZBY3RpdmF0ZVZlcnNpb25SZXF1ZXN0EO42EhwK",
+ "F0FjdGl2YXRlVmVyc2lvblJlc3BvbnNlEO82EhkKFERpc3BlbnNlckRhdGFS",
+ "ZXF1ZXN0EMA+EhoKFURpc3BlbnNlckRhdGFSZXNwb25zZRDBPhIcChdNaWRU",
+ "YW5rRGF0YVNldHVwUmVxdWVzdBDCPhIdChhNaWRUYW5rRGF0YVNldHVwUmVz",
+ "cG9uc2UQwz4SIgodTWFjaGluZUNhbGlicmF0aW9uRGF0YVJlcXVlc3QQxD4S",
+ "IwoeTWFjaGluZUNhbGlicmF0aW9uRGF0YVJlc3BvbnNlEMU+Eh4KGU1haW5D",
+ "YXJkU3RvcmVkRGF0YVJlcXVlc3QQxj4SHwoaTWFpbkNhcmRTdG9yZWREYXRh",
+ "UmVzcG9uc2UQxz4SJAofU3RhcnRNYWNoaW5lU3RhdHVzVXBkYXRlUmVxdWVz",
+ "dBCoRhIlCiBTdGFydE1hY2hpbmVTdGF0dXNVcGRhdGVSZXNwb25zZRCpRhIj",
+ "Ch5TdG9wTWFjaGluZVN0YXR1c1VwZGF0ZVJlcXVlc3QQqkYSJAofU3RvcE1h",
+ "Y2hpbmVTdGF0dXNVcGRhdGVSZXNwb25zZRCrRhIaChVTdGFydFBvd2VyRG93",
+ "blJlcXVlc3QQkE4SGwoWU3RhcnRQb3dlckRvd25SZXNwb25zZRCRThIaChVB",
+ "Ym9ydFBvd2VyRG93blJlcXVlc3QQkk4SGwoWQWJvcnRQb3dlckRvd25SZXNw",
+ "b25zZRCTThIYChNTdGFydFBvd2VyVXBSZXF1ZXN0EJROEhkKFFN0YXJ0UG93",
+ "ZXJVcFJlc3BvbnNlEJVOEhgKE0Fib3J0UG93ZXJVcFJlcXVlc3QQlk4SGQoU",
+ "QWJvcnRQb3dlclVwUmVzcG9uc2UQl04SEwoOU3RhbmRCeVJlcXVlc3QQmE4S",
+ "FAoPU3RhbmRCeVJlc3BvbnNlEJlOEh4KGVN0YXJ0VGhyZWFkTG9hZGluZ1Jl",
+ "cXVlc3QQ+FUSHwoaU3RhcnRUaHJlYWRMb2FkaW5nUmVzcG9uc2UQ+VUSIQoc",
+ "Q29udGludWVUaHJlYWRMb2FkaW5nUmVxdWVzdBD6VRIiCh1Db250aW51ZVRo",
+ "cmVhZExvYWRpbmdSZXNwb25zZRD7VRIdChhTdG9wVGhyZWFkTG9hZGluZ1Jl",
+ "cXVlc3QQ/FUSHgoZU3RvcFRocmVhZExvYWRpbmdSZXNwb25zZRD9VRIcChdU",
+ "cnlUaHJlYWRMb2FkaW5nUmVxdWVzdBD+VRIdChhUcnlUaHJlYWRMb2FkaW5n",
+ "UmVzcG9uc2UQ/1USIAobQXR0ZW1wdFRocmVhZEpvZ2dpbmdSZXF1ZXN0EIBW",
+ "EiEKHEF0dGVtcHRUaHJlYWRKb2dnaW5nUmVzcG9uc2UQgVYSIQocU3RhcnRJ",
+ "bmtGaWxsaW5nU3RhdHVzUmVxdWVzdBDgXRIiCh1TdGFydElua0ZpbGxpbmdT",
+ "dGF0dXNSZXNwb25zZRDhXRIcChdQdXREYXRhU3RvcmVJdGVtUmVxdWVzdBDI",
+ "ZRIdChhQdXREYXRhU3RvcmVJdGVtUmVzcG9uc2UQyWUSHAoXR2V0RGF0YVN0",
+ "b3JlSXRlbVJlcXVlc3QQymUSHQoYR2V0RGF0YVN0b3JlSXRlbVJlc3BvbnNl",
+ "EMtlEiEKHERhdGFTdG9yZUl0ZW1Nb2RpZmllZFJlcXVlc3QQzGUSIgodRGF0",
+ "YVN0b3JlSXRlbU1vZGlmaWVkUmVzcG9uc2UQzWVCHAoaY29tLnR3aW5lLnRh",
+ "bmdvLnBtci5jb21tb25iBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.Common.MessageType), }, null));
@@ -427,6 +428,8 @@ namespace Tango.PMR.Common {
[pbr::OriginalName("StartHeadCleaningResponse")] StartHeadCleaningResponse = 3011,
[pbr::OriginalName("AbortHeadCleaningRequest")] AbortHeadCleaningRequest = 3012,
[pbr::OriginalName("AbortHeadCleaningResponse")] AbortHeadCleaningResponse = 3013,
+ [pbr::OriginalName("JobPrepareRequest")] JobPrepareRequest = 3014,
+ [pbr::OriginalName("JobPrepareResponse")] JobPrepareResponse = 3015,
/// <summary>
///Debugging
/// </summary>
diff --git a/Software/Visual_Studio/Tango.PMR/Printing/JobPrepareDispenser.cs b/Software/Visual_Studio/Tango.PMR/Printing/JobPrepareDispenser.cs
new file mode 100644
index 000000000..426142fd4
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Printing/JobPrepareDispenser.cs
@@ -0,0 +1,246 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: JobPrepareDispenser.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.Printing {
+
+ /// <summary>Holder for reflection information generated from JobPrepareDispenser.proto</summary>
+ public static partial class JobPrepareDispenserReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for JobPrepareDispenser.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static JobPrepareDispenserReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "ChlKb2JQcmVwYXJlRGlzcGVuc2VyLnByb3RvEhJUYW5nby5QTVIuUHJpbnRp",
+ "bmcaGURpc3BlbnNlckxpcXVpZFR5cGUucHJvdG8ikgEKE0pvYlByZXBhcmVE",
+ "aXNwZW5zZXISDQoFSW5kZXgYASABKAUSRAoTRGlzcGVuc2VyTGlxdWlkVHlw",
+ "ZRgCIAEoDjInLlRhbmdvLlBNUi5QcmludGluZy5EaXNwZW5zZXJMaXF1aWRU",
+ "eXBlEhYKDlRvdGFsTmFub2xpdGVyGAMgASgFEg4KBkFjdGl2ZRgEIAEoCEIe",
+ "Chxjb20udHdpbmUudGFuZ28ucG1yLnByaW50aW5nYgZwcm90bzM="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { global::Tango.PMR.Printing.DispenserLiquidTypeReflection.Descriptor, },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Printing.JobPrepareDispenser), global::Tango.PMR.Printing.JobPrepareDispenser.Parser, new[]{ "Index", "DispenserLiquidType", "TotalNanoliter", "Active" }, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class JobPrepareDispenser : pb::IMessage<JobPrepareDispenser> {
+ private static readonly pb::MessageParser<JobPrepareDispenser> _parser = new pb::MessageParser<JobPrepareDispenser>(() => new JobPrepareDispenser());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<JobPrepareDispenser> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Printing.JobPrepareDispenserReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobPrepareDispenser() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobPrepareDispenser(JobPrepareDispenser other) : this() {
+ index_ = other.index_;
+ dispenserLiquidType_ = other.dispenserLiquidType_;
+ totalNanoliter_ = other.totalNanoliter_;
+ active_ = other.active_;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobPrepareDispenser Clone() {
+ return new JobPrepareDispenser(this);
+ }
+
+ /// <summary>Field number for the "Index" field.</summary>
+ public const int IndexFieldNumber = 1;
+ private int index_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int Index {
+ get { return index_; }
+ set {
+ index_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "DispenserLiquidType" field.</summary>
+ public const int DispenserLiquidTypeFieldNumber = 2;
+ private global::Tango.PMR.Printing.DispenserLiquidType dispenserLiquidType_ = 0;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public global::Tango.PMR.Printing.DispenserLiquidType DispenserLiquidType {
+ get { return dispenserLiquidType_; }
+ set {
+ dispenserLiquidType_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "TotalNanoliter" field.</summary>
+ public const int TotalNanoliterFieldNumber = 3;
+ private int totalNanoliter_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int TotalNanoliter {
+ get { return totalNanoliter_; }
+ set {
+ totalNanoliter_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Active" field.</summary>
+ public const int ActiveFieldNumber = 4;
+ private bool active_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Active {
+ get { return active_; }
+ set {
+ active_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as JobPrepareDispenser);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(JobPrepareDispenser other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Index != other.Index) return false;
+ if (DispenserLiquidType != other.DispenserLiquidType) return false;
+ if (TotalNanoliter != other.TotalNanoliter) return false;
+ if (Active != other.Active) return false;
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Index != 0) hash ^= Index.GetHashCode();
+ if (DispenserLiquidType != 0) hash ^= DispenserLiquidType.GetHashCode();
+ if (TotalNanoliter != 0) hash ^= TotalNanoliter.GetHashCode();
+ if (Active != false) hash ^= Active.GetHashCode();
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Index != 0) {
+ output.WriteRawTag(8);
+ output.WriteInt32(Index);
+ }
+ if (DispenserLiquidType != 0) {
+ output.WriteRawTag(16);
+ output.WriteEnum((int) DispenserLiquidType);
+ }
+ if (TotalNanoliter != 0) {
+ output.WriteRawTag(24);
+ output.WriteInt32(TotalNanoliter);
+ }
+ if (Active != false) {
+ output.WriteRawTag(32);
+ output.WriteBool(Active);
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (Index != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Index);
+ }
+ if (DispenserLiquidType != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DispenserLiquidType);
+ }
+ if (TotalNanoliter != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(TotalNanoliter);
+ }
+ if (Active != false) {
+ size += 1 + 1;
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(JobPrepareDispenser other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Index != 0) {
+ Index = other.Index;
+ }
+ if (other.DispenserLiquidType != 0) {
+ DispenserLiquidType = other.DispenserLiquidType;
+ }
+ if (other.TotalNanoliter != 0) {
+ TotalNanoliter = other.TotalNanoliter;
+ }
+ if (other.Active != false) {
+ Active = other.Active;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 8: {
+ Index = input.ReadInt32();
+ break;
+ }
+ case 16: {
+ dispenserLiquidType_ = (global::Tango.PMR.Printing.DispenserLiquidType) input.ReadEnum();
+ break;
+ }
+ case 24: {
+ TotalNanoliter = input.ReadInt32();
+ break;
+ }
+ case 32: {
+ Active = input.ReadBool();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Printing/JobPrepareRequest.cs b/Software/Visual_Studio/Tango.PMR/Printing/JobPrepareRequest.cs
new file mode 100644
index 000000000..3acf52229
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Printing/JobPrepareRequest.cs
@@ -0,0 +1,189 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: JobPrepareRequest.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.Printing {
+
+ /// <summary>Holder for reflection information generated from JobPrepareRequest.proto</summary>
+ public static partial class JobPrepareRequestReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for JobPrepareRequest.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static JobPrepareRequestReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "ChdKb2JQcmVwYXJlUmVxdWVzdC5wcm90bxISVGFuZ28uUE1SLlByaW50aW5n",
+ "GhdQcm9jZXNzUGFyYW1ldGVycy5wcm90bxoZSm9iUHJlcGFyZURpc3BlbnNl",
+ "ci5wcm90byKSAQoRSm9iUHJlcGFyZVJlcXVlc3QSQAoRUHJvY2Vzc1BhcmFt",
+ "ZXRlcnMYASABKAsyJS5UYW5nby5QTVIuUHJpbnRpbmcuUHJvY2Vzc1BhcmFt",
+ "ZXRlcnMSOwoKRGlzcGVuc2VycxgCIAMoCzInLlRhbmdvLlBNUi5QcmludGlu",
+ "Zy5Kb2JQcmVwYXJlRGlzcGVuc2VyQh4KHGNvbS50d2luZS50YW5nby5wbXIu",
+ "cHJpbnRpbmdiBnByb3RvMw=="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { global::Tango.PMR.Printing.ProcessParametersReflection.Descriptor, global::Tango.PMR.Printing.JobPrepareDispenserReflection.Descriptor, },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Printing.JobPrepareRequest), global::Tango.PMR.Printing.JobPrepareRequest.Parser, new[]{ "ProcessParameters", "Dispensers" }, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class JobPrepareRequest : pb::IMessage<JobPrepareRequest> {
+ private static readonly pb::MessageParser<JobPrepareRequest> _parser = new pb::MessageParser<JobPrepareRequest>(() => new JobPrepareRequest());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<JobPrepareRequest> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Printing.JobPrepareRequestReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobPrepareRequest() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobPrepareRequest(JobPrepareRequest other) : this() {
+ ProcessParameters = other.processParameters_ != null ? other.ProcessParameters.Clone() : null;
+ dispensers_ = other.dispensers_.Clone();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobPrepareRequest Clone() {
+ return new JobPrepareRequest(this);
+ }
+
+ /// <summary>Field number for the "ProcessParameters" field.</summary>
+ public const int ProcessParametersFieldNumber = 1;
+ private global::Tango.PMR.Printing.ProcessParameters processParameters_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public global::Tango.PMR.Printing.ProcessParameters ProcessParameters {
+ get { return processParameters_; }
+ set {
+ processParameters_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Dispensers" field.</summary>
+ public const int DispensersFieldNumber = 2;
+ private static readonly pb::FieldCodec<global::Tango.PMR.Printing.JobPrepareDispenser> _repeated_dispensers_codec
+ = pb::FieldCodec.ForMessage(18, global::Tango.PMR.Printing.JobPrepareDispenser.Parser);
+ private readonly pbc::RepeatedField<global::Tango.PMR.Printing.JobPrepareDispenser> dispensers_ = new pbc::RepeatedField<global::Tango.PMR.Printing.JobPrepareDispenser>();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField<global::Tango.PMR.Printing.JobPrepareDispenser> Dispensers {
+ get { return dispensers_; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as JobPrepareRequest);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(JobPrepareRequest other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (!object.Equals(ProcessParameters, other.ProcessParameters)) return false;
+ if(!dispensers_.Equals(other.dispensers_)) return false;
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (processParameters_ != null) hash ^= ProcessParameters.GetHashCode();
+ hash ^= dispensers_.GetHashCode();
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (processParameters_ != null) {
+ output.WriteRawTag(10);
+ output.WriteMessage(ProcessParameters);
+ }
+ dispensers_.WriteTo(output, _repeated_dispensers_codec);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (processParameters_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(ProcessParameters);
+ }
+ size += dispensers_.CalculateSize(_repeated_dispensers_codec);
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(JobPrepareRequest other) {
+ if (other == null) {
+ return;
+ }
+ if (other.processParameters_ != null) {
+ if (processParameters_ == null) {
+ processParameters_ = new global::Tango.PMR.Printing.ProcessParameters();
+ }
+ ProcessParameters.MergeFrom(other.ProcessParameters);
+ }
+ dispensers_.Add(other.dispensers_);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 10: {
+ if (processParameters_ == null) {
+ processParameters_ = new global::Tango.PMR.Printing.ProcessParameters();
+ }
+ input.ReadMessage(processParameters_);
+ break;
+ }
+ case 18: {
+ dispensers_.AddEntriesFrom(input, _repeated_dispensers_codec);
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Printing/JobPrepareResponse.cs b/Software/Visual_Studio/Tango.PMR/Printing/JobPrepareResponse.cs
new file mode 100644
index 000000000..1baa42b81
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Printing/JobPrepareResponse.cs
@@ -0,0 +1,131 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: JobPrepareResponse.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.Printing {
+
+ /// <summary>Holder for reflection information generated from JobPrepareResponse.proto</summary>
+ public static partial class JobPrepareResponseReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for JobPrepareResponse.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static JobPrepareResponseReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "ChhKb2JQcmVwYXJlUmVzcG9uc2UucHJvdG8SElRhbmdvLlBNUi5QcmludGlu",
+ "ZyIUChJKb2JQcmVwYXJlUmVzcG9uc2VCHgocY29tLnR3aW5lLnRhbmdvLnBt",
+ "ci5wcmludGluZ2IGcHJvdG8z"));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Printing.JobPrepareResponse), global::Tango.PMR.Printing.JobPrepareResponse.Parser, null, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class JobPrepareResponse : pb::IMessage<JobPrepareResponse> {
+ private static readonly pb::MessageParser<JobPrepareResponse> _parser = new pb::MessageParser<JobPrepareResponse>(() => new JobPrepareResponse());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<JobPrepareResponse> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Printing.JobPrepareResponseReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobPrepareResponse() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobPrepareResponse(JobPrepareResponse other) : this() {
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobPrepareResponse Clone() {
+ return new JobPrepareResponse(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as JobPrepareResponse);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(JobPrepareResponse 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(JobPrepareResponse 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/Tango.PMR.csproj b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj
index 72418fe91..cdd9e23a2 100644
--- a/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj
+++ b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj
@@ -315,6 +315,9 @@
<Compile Include="Printing\JobDescriptionFileBrushStop.cs" />
<Compile Include="Printing\JobDescriptionFileSegment.cs" />
<Compile Include="Printing\JobDispenser.cs" />
+ <Compile Include="Printing\JobPrepareDispenser.cs" />
+ <Compile Include="Printing\JobPrepareRequest.cs" />
+ <Compile Include="Printing\JobPrepareResponse.cs" />
<Compile Include="Printing\JobRequest.cs" />
<Compile Include="Printing\JobResponse.cs" />
<Compile Include="Printing\JobSegment.cs" />
@@ -493,7 +496,7 @@
</PropertyGroup>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file