aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs')
-rw-r--r--Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs57
1 files changed, 54 insertions, 3 deletions
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...");