aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Software/DB/Tango.mdfbin75497472 -> 75497472 bytes
-rw-r--r--Software/DB/Tango_log.ldfbin1835008 -> 1835008 bytes
-rw-r--r--Software/Graphics/blower-big.pngbin0 -> 5897 bytes
-rw-r--r--Software/Graphics/break-big.pngbin0 -> 4963 bytes
-rw-r--r--Software/PMR/Messages/Diagnostics/DiagnosticsMonitors.proto3
-rw-r--r--Software/PMR/Messages/Hardware/HardwareBlower.proto4
-rw-r--r--Software/PMR/Messages/Hardware/HardwareConfiguration.proto4
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml79
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml.cs103
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml79
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml.cs103
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower-big.pngbin0 -> 5897 bytes
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower.pngbin0 -> 1575 bytes
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break-big.pngbin0 -> 4963 bytes
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break.pngbin0 -> 1388 bytes
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.xaml77
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.xaml.cs28
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.xaml77
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.xaml.cs28
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Tango.MachineStudio.Technician.csproj42
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BlowerItem.cs102
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BreakSensorItem.cs102
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/TechItem.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs78
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/MachineTechView.xaml8
-rw-r--r--Software/Visual_Studio/Tango.BL/Enumerations/HardwareBlowerTypes.cs7
-rw-r--r--Software/Visual_Studio/Tango.BL/Enumerations/HardwareBreakSensorTypes.cs7
-rw-r--r--Software/Visual_Studio/Tango.BL/Enumerations/TechMonitors.cs6
-rw-r--r--Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs1
-rw-r--r--Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs16
-rw-r--r--Software/Visual_Studio/Tango.PMR/Diagnostics/DiagnosticsMonitors.cs33
-rw-r--r--Software/Visual_Studio/Tango.PMR/Hardware/HardwareBlower.cs69
-rw-r--r--Software/Visual_Studio/Tango.PMR/Hardware/HardwareConfiguration.cs67
-rw-r--r--Software/Visual_Studio/Utilities/Tango.PMRGenerator.CLI/Program.cs4
34 files changed, 1088 insertions, 41 deletions
diff --git a/Software/DB/Tango.mdf b/Software/DB/Tango.mdf
index 796aa89a7..c7f3c97bc 100644
--- a/Software/DB/Tango.mdf
+++ b/Software/DB/Tango.mdf
Binary files differ
diff --git a/Software/DB/Tango_log.ldf b/Software/DB/Tango_log.ldf
index 9c4f92cbd..2733ed1d2 100644
--- a/Software/DB/Tango_log.ldf
+++ b/Software/DB/Tango_log.ldf
Binary files differ
diff --git a/Software/Graphics/blower-big.png b/Software/Graphics/blower-big.png
new file mode 100644
index 000000000..c93daea65
--- /dev/null
+++ b/Software/Graphics/blower-big.png
Binary files differ
diff --git a/Software/Graphics/break-big.png b/Software/Graphics/break-big.png
new file mode 100644
index 000000000..363ee88a1
--- /dev/null
+++ b/Software/Graphics/break-big.png
Binary files differ
diff --git a/Software/PMR/Messages/Diagnostics/DiagnosticsMonitors.proto b/Software/PMR/Messages/Diagnostics/DiagnosticsMonitors.proto
index 8b4107420..65e5ebea5 100644
--- a/Software/PMR/Messages/Diagnostics/DiagnosticsMonitors.proto
+++ b/Software/PMR/Messages/Diagnostics/DiagnosticsMonitors.proto
@@ -135,4 +135,7 @@ message DiagnosticsMonitors
//Head Zone 6 (Min = 0, Max = 300, PPF = 10)
repeated double HeadZone6Temperature = 39;
+ //Blower Voltage (Min = 0, Max = 100, PPF = 10)
+ repeated double BlowerVoltage = 40;
+
}
diff --git a/Software/PMR/Messages/Hardware/HardwareBlower.proto b/Software/PMR/Messages/Hardware/HardwareBlower.proto
index aa6b43cff..22f73f585 100644
--- a/Software/PMR/Messages/Hardware/HardwareBlower.proto
+++ b/Software/PMR/Messages/Hardware/HardwareBlower.proto
@@ -20,6 +20,8 @@ message HardwareBlower
HardwareBlowerType HardwareBlowerType = 1;
- int32 Code = 2;
+ bool Enabled = 2;
+
+ double Voltage = 3;
}
diff --git a/Software/PMR/Messages/Hardware/HardwareConfiguration.proto b/Software/PMR/Messages/Hardware/HardwareConfiguration.proto
index 70376a1dc..4115bc710 100644
--- a/Software/PMR/Messages/Hardware/HardwareConfiguration.proto
+++ b/Software/PMR/Messages/Hardware/HardwareConfiguration.proto
@@ -6,6 +6,8 @@ import "HardwareMotor.proto";
import "HardwarePidControl.proto";
import "HardwareWinder.proto";
import "HardwareSpeedSensor.proto";
+import "HardwareBlower.proto";
+import "HardwareBreakSensor.proto";
package Tango.PMR.Hardware;
option java_package = "com.twine.tango.pmr.hardware";
@@ -18,4 +20,6 @@ message HardwareConfiguration
repeated HardwarePidControl PidControls = 4;
repeated HardwareWinder Winders = 5;
repeated HardwareSpeedSensor SpeedSensors = 6;
+ repeated HardwareBlower Blowers = 7;
+ repeated HardwareBreakSensor BreakSensors = 8;
} \ No newline at end of file
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml
new file mode 100644
index 000000000..675571657
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml
@@ -0,0 +1,79 @@
+<local:ElementEditor x:Class="Tango.MachineStudio.Technician.Editors.BlowerElementEditor"
+ 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:sharedConverters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI"
+ xmlns:items="clr-namespace:Tango.MachineStudio.Technician.TechItems"
+ xmlns:converters="clr-namespace:Tango.Editors.Converters;assembly=Tango.Editors"
+ xmlns:visuals="clr-namespace:Tango.Visuals;assembly=Tango.Visuals"
+ xmlns:local="clr-namespace:Tango.Editors;assembly=Tango.Editors"
+ mc:Ignorable="d" Background="Transparent" ClipToBounds="False" BorderThickness="0" MinWidth="1" MinHeight="1" RenderTransformOrigin="0.5,0.5" d:DataContext="{d:DesignInstance Type=items:BlowerItem, IsDesignTimeCreatable=False}" Height="99.188" Width="163.459">
+
+ <UserControl.Resources>
+ <converters:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter"></converters:BoolToVisibilityConverter>
+ <sharedConverters:BooleanInverseConverter x:Key="BooleanInverseConverter" />
+
+ <!--Theme-->
+ <SolidColorBrush x:Key="BorderBrush" Color="Transparent"></SolidColorBrush>
+ <SolidColorBrush x:Key="CornersBrush" Color="Red"></SolidColorBrush>
+ </UserControl.Resources>
+
+ <UserControl.RenderTransform>
+ <RotateTransform Angle="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=Angle}"></RotateTransform>
+ </UserControl.RenderTransform>
+
+ <Grid>
+
+
+ <!--Content-->
+ <Grid IsHitTestVisible="{Binding RelativeSource={RelativeSource AncestorType=local:ElementsEditor},Path=IsEditable,Converter={StaticResource BooleanInverseConverter}}">
+
+ <Image Source="../Images/blower-big.png"></Image>
+
+ <Border Margin="0 0 0 -23" VerticalAlignment="Bottom">
+ <TextBlock Text="{Binding HardwareBlowerType.Description}" FontSize="14" Foreground="DimGray" HorizontalAlignment="Center"></TextBlock>
+ </Border>
+ </Grid>
+ <!--Content-->
+
+
+ <Border BorderThickness="1" BorderBrush="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=BorderBrush,TargetNullValue={StaticResource BorderBrush},FallbackValue={StaticResource BorderBrush}}" Visibility="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=(local:ElementsEditor.IsSelected),Converter={StaticResource BoolToVisibilityConverter}}">
+ <Grid>
+ <ContentPresenter Content="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=InnerContent}"></ContentPresenter>
+
+ <Thumb Opacity="0" DragDelta="MoveDrag" DragStarted="DragStarted" DragCompleted="OnDragEnded"></Thumb>
+ <Thumb HorizontalAlignment="Left" Cursor="SizeWE" Opacity="0" DragDelta="DragLeft" DragStarted="DragStarted" DragCompleted="OnDragEnded"></Thumb>
+ <Thumb HorizontalAlignment="Right" Cursor="SizeWE" Opacity="0" DragDelta="DragRight" DragStarted="DragStarted" DragCompleted="OnDragEnded"></Thumb>
+ <Thumb VerticalAlignment="Top" Cursor="SizeNS" Opacity="0" DragDelta="DragTop" DragStarted="DragStarted" DragCompleted="OnDragEnded"></Thumb>
+ <Thumb VerticalAlignment="Bottom" Cursor="SizeNS" Opacity="0" DragDelta="DragBottom" DragStarted="DragStarted" DragCompleted="OnDragEnded"></Thumb>
+
+ <Grid ClipToBounds="False" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0 -20 0 0" Width="10" Height="10">
+ <Ellipse Stroke="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=CornersBrush,TargetNullValue={StaticResource CornersBrush},FallbackValue={StaticResource CornersBrush}}" StrokeThickness="2"></Ellipse>
+ <Rectangle HorizontalAlignment="Center" VerticalAlignment="Stretch" Margin="0 10 0 -8" StrokeThickness="1" Stroke="Red"></Rectangle>
+ <Thumb Opacity="0" DragDelta="DragAngle" DragStarted="DragStarted" Cursor="Arrow" DragCompleted="OnDragEnded"></Thumb>
+ </Grid>
+
+ <Grid Width="10" Height="10" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="-8 -8 0 0">
+ <Border BorderBrush="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=CornersBrush,TargetNullValue={StaticResource CornersBrush},FallbackValue={StaticResource CornersBrush}}" BorderThickness="2 2 0 0"></Border>
+ <Thumb Opacity="0" DragDelta="DragTopLeft" DragStarted="DragStarted" Cursor="SizeNWSE" DragCompleted="OnDragEnded"></Thumb>
+ </Grid>
+
+ <Grid Width="10" Height="10" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0 -8 -8 0">
+ <Border BorderBrush="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=CornersBrush,TargetNullValue={StaticResource CornersBrush},FallbackValue={StaticResource CornersBrush}}" BorderThickness="0 2 2 0"></Border>
+ <Thumb Opacity="0" DragDelta="DragTopRight" DragStarted="DragStarted" Cursor="SizeNESW" DragCompleted="OnDragEnded"></Thumb>
+ </Grid>
+
+ <Grid Width="10" Height="10" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0 0 -8 -8">
+ <Border BorderBrush="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=CornersBrush,TargetNullValue={StaticResource CornersBrush},FallbackValue={StaticResource CornersBrush}}" BorderThickness="0 0 2 2"></Border>
+ <Thumb Opacity="0" DragDelta="DragBottomRight" DragStarted="DragStarted" Cursor="SizeNWSE" DragCompleted="OnDragEnded"></Thumb>
+ </Grid>
+
+ <Grid Width="10" Height="10" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="-8 0 0 -8">
+ <Border BorderBrush="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=CornersBrush,TargetNullValue={StaticResource CornersBrush},FallbackValue={StaticResource CornersBrush}}" BorderThickness="2 0 0 2"></Border>
+ <Thumb Opacity="0" DragDelta="DragBottomLeft" DragStarted="DragStarted" Cursor="SizeNESW" DragCompleted="OnDragEnded"></Thumb>
+ </Grid>
+ </Grid>
+ </Border>
+ </Grid>
+</local:ElementEditor>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml.cs
new file mode 100644
index 000000000..558cc6fcc
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BlowerElementEditor.xaml.cs
@@ -0,0 +1,103 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using Tango.Editors;
+using Tango.BL.Entities;
+using Tango.MachineStudio.Technician.TechItems;
+using Tango.Core;
+
+namespace Tango.MachineStudio.Technician.Editors
+{
+ [ContentProperty("InnerContent")]
+ public partial class BlowerElementEditor : ElementEditor
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="MonitorElementEditor"/> class.
+ /// </summary>
+ public BlowerElementEditor()
+ : base()
+ {
+ InitializeComponent();
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="MonitorElementEditor"/> class.
+ /// </summary>
+ /// <param name="frameworkElement">The framework element.</param>
+ public BlowerElementEditor(BlowerItem blowerItem)
+ : this()
+ {
+ BlowerItem = blowerItem;
+ DataContext = BlowerItem;
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="MonitorElementEditor"/> class.
+ /// </summary>
+ /// <param name="frameworkElement">The framework element.</param>
+ /// <param name="bounds">The bounds.</param>
+ public BlowerElementEditor(BlowerItem blowerItem, Rect bounds)
+ : this(blowerItem)
+ {
+ Left = bounds.Left;
+ Top = bounds.Top;
+ Width = bounds.Width;
+ Height = bounds.Height;
+ }
+
+ private BlowerItem _blowerItem;
+
+ public BlowerItem BlowerItem
+ {
+ get { return _blowerItem; }
+ set { _blowerItem = value; RaisePropertyChanged(nameof(BlowerItem)); }
+ }
+
+
+ /// <summary>
+ /// Clones this instance.
+ /// </summary>
+ /// <returns></returns>
+ public override IElementEditor Clone()
+ {
+ try
+ {
+ var clonedItem = BlowerItem.Clone() as BlowerItem;
+ BlowerElementEditor cloned = new BlowerElementEditor(clonedItem);
+ cloned.Top = Top;
+ cloned.Left = Left;
+ cloned.Width = Width;
+ cloned.Height = Height;
+ cloned.Angle = Angle;
+ return cloned;
+ }
+ catch (Exception ex)
+ {
+ throw new InvalidOperationException("Could not clone this editor. You may have to create a custom editor and implement a custom Clone method.", ex);
+ }
+ }
+
+ /// <summary>
+ /// Gets the hosted element.
+ /// </summary>
+ [ParameterIgnore]
+ public override Object HostedElement
+ {
+ get { return BlowerItem; }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml
new file mode 100644
index 000000000..18c992193
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml
@@ -0,0 +1,79 @@
+<local:ElementEditor x:Class="Tango.MachineStudio.Technician.Editors.BreakSensorElementEditor"
+ 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:sharedConverters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI"
+ xmlns:items="clr-namespace:Tango.MachineStudio.Technician.TechItems"
+ xmlns:converters="clr-namespace:Tango.Editors.Converters;assembly=Tango.Editors"
+ xmlns:visuals="clr-namespace:Tango.Visuals;assembly=Tango.Visuals"
+ xmlns:local="clr-namespace:Tango.Editors;assembly=Tango.Editors"
+ mc:Ignorable="d" Background="Transparent" ClipToBounds="False" BorderThickness="0" MinWidth="1" MinHeight="1" RenderTransformOrigin="0.5,0.5" d:DataContext="{d:DesignInstance Type=items:BreakSensorItem, IsDesignTimeCreatable=False}" Height="99.188" Width="163.459">
+
+ <UserControl.Resources>
+ <converters:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter"></converters:BoolToVisibilityConverter>
+ <sharedConverters:BooleanInverseConverter x:Key="BooleanInverseConverter" />
+
+ <!--Theme-->
+ <SolidColorBrush x:Key="BorderBrush" Color="Transparent"></SolidColorBrush>
+ <SolidColorBrush x:Key="CornersBrush" Color="Red"></SolidColorBrush>
+ </UserControl.Resources>
+
+ <UserControl.RenderTransform>
+ <RotateTransform Angle="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=Angle}"></RotateTransform>
+ </UserControl.RenderTransform>
+
+ <Grid>
+
+
+ <!--Content-->
+ <Grid IsHitTestVisible="{Binding RelativeSource={RelativeSource AncestorType=local:ElementsEditor},Path=IsEditable,Converter={StaticResource BooleanInverseConverter}}">
+
+ <Image Source="../Images/break-big.png"></Image>
+
+ <Border Margin="0 0 0 -23" VerticalAlignment="Bottom">
+ <TextBlock Text="{Binding HardwareBreakSensorType.Description}" FontSize="14" Foreground="DimGray" HorizontalAlignment="Center"></TextBlock>
+ </Border>
+ </Grid>
+ <!--Content-->
+
+
+ <Border BorderThickness="1" BorderBrush="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=BorderBrush,TargetNullValue={StaticResource BorderBrush},FallbackValue={StaticResource BorderBrush}}" Visibility="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=(local:ElementsEditor.IsSelected),Converter={StaticResource BoolToVisibilityConverter}}">
+ <Grid>
+ <ContentPresenter Content="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=InnerContent}"></ContentPresenter>
+
+ <Thumb Opacity="0" DragDelta="MoveDrag" DragStarted="DragStarted" DragCompleted="OnDragEnded"></Thumb>
+ <Thumb HorizontalAlignment="Left" Cursor="SizeWE" Opacity="0" DragDelta="DragLeft" DragStarted="DragStarted" DragCompleted="OnDragEnded"></Thumb>
+ <Thumb HorizontalAlignment="Right" Cursor="SizeWE" Opacity="0" DragDelta="DragRight" DragStarted="DragStarted" DragCompleted="OnDragEnded"></Thumb>
+ <Thumb VerticalAlignment="Top" Cursor="SizeNS" Opacity="0" DragDelta="DragTop" DragStarted="DragStarted" DragCompleted="OnDragEnded"></Thumb>
+ <Thumb VerticalAlignment="Bottom" Cursor="SizeNS" Opacity="0" DragDelta="DragBottom" DragStarted="DragStarted" DragCompleted="OnDragEnded"></Thumb>
+
+ <Grid ClipToBounds="False" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0 -20 0 0" Width="10" Height="10">
+ <Ellipse Stroke="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=CornersBrush,TargetNullValue={StaticResource CornersBrush},FallbackValue={StaticResource CornersBrush}}" StrokeThickness="2"></Ellipse>
+ <Rectangle HorizontalAlignment="Center" VerticalAlignment="Stretch" Margin="0 10 0 -8" StrokeThickness="1" Stroke="Red"></Rectangle>
+ <Thumb Opacity="0" DragDelta="DragAngle" DragStarted="DragStarted" Cursor="Arrow" DragCompleted="OnDragEnded"></Thumb>
+ </Grid>
+
+ <Grid Width="10" Height="10" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="-8 -8 0 0">
+ <Border BorderBrush="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=CornersBrush,TargetNullValue={StaticResource CornersBrush},FallbackValue={StaticResource CornersBrush}}" BorderThickness="2 2 0 0"></Border>
+ <Thumb Opacity="0" DragDelta="DragTopLeft" DragStarted="DragStarted" Cursor="SizeNWSE" DragCompleted="OnDragEnded"></Thumb>
+ </Grid>
+
+ <Grid Width="10" Height="10" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0 -8 -8 0">
+ <Border BorderBrush="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=CornersBrush,TargetNullValue={StaticResource CornersBrush},FallbackValue={StaticResource CornersBrush}}" BorderThickness="0 2 2 0"></Border>
+ <Thumb Opacity="0" DragDelta="DragTopRight" DragStarted="DragStarted" Cursor="SizeNESW" DragCompleted="OnDragEnded"></Thumb>
+ </Grid>
+
+ <Grid Width="10" Height="10" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0 0 -8 -8">
+ <Border BorderBrush="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=CornersBrush,TargetNullValue={StaticResource CornersBrush},FallbackValue={StaticResource CornersBrush}}" BorderThickness="0 0 2 2"></Border>
+ <Thumb Opacity="0" DragDelta="DragBottomRight" DragStarted="DragStarted" Cursor="SizeNWSE" DragCompleted="OnDragEnded"></Thumb>
+ </Grid>
+
+ <Grid Width="10" Height="10" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="-8 0 0 -8">
+ <Border BorderBrush="{Binding RelativeSource={RelativeSource AncestorType=local:ElementEditor},Path=CornersBrush,TargetNullValue={StaticResource CornersBrush},FallbackValue={StaticResource CornersBrush}}" BorderThickness="2 0 0 2"></Border>
+ <Thumb Opacity="0" DragDelta="DragBottomLeft" DragStarted="DragStarted" Cursor="SizeNESW" DragCompleted="OnDragEnded"></Thumb>
+ </Grid>
+ </Grid>
+ </Border>
+ </Grid>
+</local:ElementEditor>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml.cs
new file mode 100644
index 000000000..da4530e35
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Editors/BreakSensorElementEditor.xaml.cs
@@ -0,0 +1,103 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using Tango.Editors;
+using Tango.BL.Entities;
+using Tango.MachineStudio.Technician.TechItems;
+using Tango.Core;
+
+namespace Tango.MachineStudio.Technician.Editors
+{
+ [ContentProperty("InnerContent")]
+ public partial class BreakSensorElementEditor : ElementEditor
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="MonitorElementEditor"/> class.
+ /// </summary>
+ public BreakSensorElementEditor()
+ : base()
+ {
+ InitializeComponent();
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="MonitorElementEditor"/> class.
+ /// </summary>
+ /// <param name="frameworkElement">The framework element.</param>
+ public BreakSensorElementEditor(BreakSensorItem breakSensorItem)
+ : this()
+ {
+ BreakSensorItem = breakSensorItem;
+ DataContext = BreakSensorItem;
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="MonitorElementEditor"/> class.
+ /// </summary>
+ /// <param name="frameworkElement">The framework element.</param>
+ /// <param name="bounds">The bounds.</param>
+ public BreakSensorElementEditor(BreakSensorItem breakSensorItem, Rect bounds)
+ : this(breakSensorItem)
+ {
+ Left = bounds.Left;
+ Top = bounds.Top;
+ Width = bounds.Width;
+ Height = bounds.Height;
+ }
+
+ private BreakSensorItem _breakSensorItem;
+
+ public BreakSensorItem BreakSensorItem
+ {
+ get { return _breakSensorItem; }
+ set { _breakSensorItem = value; RaisePropertyChanged(nameof(BreakSensorItem)); }
+ }
+
+
+ /// <summary>
+ /// Clones this instance.
+ /// </summary>
+ /// <returns></returns>
+ public override IElementEditor Clone()
+ {
+ try
+ {
+ var clonedItem = BreakSensorItem.Clone() as BreakSensorItem;
+ BreakSensorElementEditor cloned = new BreakSensorElementEditor(clonedItem);
+ cloned.Top = Top;
+ cloned.Left = Left;
+ cloned.Width = Width;
+ cloned.Height = Height;
+ cloned.Angle = Angle;
+ return cloned;
+ }
+ catch (Exception ex)
+ {
+ throw new InvalidOperationException("Could not clone this editor. You may have to create a custom editor and implement a custom Clone method.", ex);
+ }
+ }
+
+ /// <summary>
+ /// Gets the hosted element.
+ /// </summary>
+ [ParameterIgnore]
+ public override Object HostedElement
+ {
+ get { return BreakSensorItem; }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower-big.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower-big.png
new file mode 100644
index 000000000..c93daea65
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower-big.png
Binary files differ
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower.png
new file mode 100644
index 000000000..a3797b514
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/blower.png
Binary files differ
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break-big.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break-big.png
new file mode 100644
index 000000000..363ee88a1
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break-big.png
Binary files differ
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break.png
new file mode 100644
index 000000000..67bd5982e
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Images/break.png
Binary files differ
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.xaml
new file mode 100644
index 000000000..16d270f01
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.xaml
@@ -0,0 +1,77 @@
+<UserControl x:Class="Tango.MachineStudio.Technician.PropertiesTemplates.BlowerTemplate"
+ 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:converters="clr-namespace:Tango.MachineStudio.Technician.Converters"
+ xmlns:sharedConverters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI"
+ xmlns:items="clr-namespace:Tango.MachineStudio.Technician.TechItems"
+ xmlns:editors="clr-namespace:Tango.SharedUI.Editors;assembly=Tango.SharedUI"
+ xmlns:mahApps="http://metro.mahapps.com/winfx/xaml/controls"
+ xmlns:colorPicker="clr-namespace:Tango;assembly=Tango.ColorPicker"
+ xmlns:local="clr-namespace:Tango.MachineStudio.Technician.PropertiesTemplates"
+ mc:Ignorable="d"
+ d:DesignHeight="500" d:DesignWidth="200" d:DataContext="{d:DesignInstance Type=items:BlowerItem, IsDesignTimeCreatable=False}">
+
+ <UserControl.Resources>
+ <sharedConverters:DoubleToIntConverter x:Key="DoubleToIntConverter" />
+
+ <Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
+ <Setter Property="mahApps:ControlsHelper.HeaderFontSize" Value="14" />
+ <Setter Property="Margin" Value="2" />
+ </Style>
+ </UserControl.Resources>
+
+ <Grid>
+ <StackPanel>
+ <GroupBox Header="BLOWER">
+ <StackPanel>
+ <TextBlock FontSize="10">Selected Blower</TextBlock>
+ <ComboBox Margin="0 5 0 0" ItemsSource="{Binding Adapter.HardwareBlowerTypes}" SelectedItem="{Binding HardwareBlowerType,Mode=TwoWay}" DisplayMemberPath="Description" />
+ </StackPanel>
+ </GroupBox>
+
+ <GroupBox Header="PARAMETERS" Margin="0 10 0 0">
+ <editors:ParameterizedEditor ParameterizedObject="{Binding HardwareBlower}" Padding="10">
+ <editors:ParameterizedEditor.ItemsPanel>
+ <ItemsPanelTemplate>
+ <StackPanel></StackPanel>
+ </ItemsPanelTemplate>
+ </editors:ParameterizedEditor.ItemsPanel>
+ <editors:ParameterizedEditor.DoubleTemplate>
+ <DataTemplate>
+ <DockPanel>
+ <mahApps:NumericUpDown DockPanel.Dock="Right" Background="Transparent" BorderThickness="0 0 0 0" Value="{Binding Value,UpdateSourceTrigger=PropertyChanged}" HasDecimals="True" HorizontalContentAlignment="Center" Width="100" />
+ <TextBlock Text="{Binding Name}" VerticalAlignment="Center"></TextBlock>
+ </DockPanel>
+ </DataTemplate>
+ </editors:ParameterizedEditor.DoubleTemplate>
+ <editors:ParameterizedEditor.Int32Template>
+ <DataTemplate>
+ <DockPanel>
+ <mahApps:NumericUpDown DockPanel.Dock="Right" Background="Transparent" BorderThickness="0 0 0 0" Value="{Binding Value,Converter={StaticResource DoubleToIntConverter},UpdateSourceTrigger=PropertyChanged}" HasDecimals="False" HorizontalContentAlignment="Center" Width="100" />
+ <TextBlock Text="{Binding Name}" VerticalAlignment="Center"></TextBlock>
+ </DockPanel>
+ </DataTemplate>
+ </editors:ParameterizedEditor.Int32Template>
+ <editors:ParameterizedEditor.BooleanTemplate>
+ <DataTemplate>
+ <DockPanel Margin="0 5 0 0">
+ <ToggleButton DockPanel.Dock="Right" Width="100" IsChecked="{Binding Value}" HorizontalAlignment="Right" />
+ <TextBlock Text="{Binding Name}" VerticalAlignment="Center"></TextBlock>
+ </DockPanel>
+ </DataTemplate>
+ </editors:ParameterizedEditor.BooleanTemplate>
+ </editors:ParameterizedEditor>
+ </GroupBox>
+
+ <GroupBox Header="COLOR" Margin="0 10 0 0">
+ <StackPanel>
+ <Viewbox Margin="0 5 0 0">
+ <colorPicker:ColorCanvas SelectedColor="{Binding Color,Mode=TwoWay}" Background="Transparent" />
+ </Viewbox>
+ </StackPanel>
+ </GroupBox>
+ </StackPanel>
+ </Grid>
+</UserControl>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.xaml.cs
new file mode 100644
index 000000000..3622735d2
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BlowerTemplate.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.MachineStudio.Technician.PropertiesTemplates
+{
+ /// <summary>
+ /// Interaction logic for MonitorTemplate.xaml
+ /// </summary>
+ public partial class BlowerTemplate : UserControl
+ {
+ public BlowerTemplate()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.xaml
new file mode 100644
index 000000000..7914c5a52
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.xaml
@@ -0,0 +1,77 @@
+<UserControl x:Class="Tango.MachineStudio.Technician.PropertiesTemplates.BreakSensorTemplate"
+ 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:converters="clr-namespace:Tango.MachineStudio.Technician.Converters"
+ xmlns:sharedConverters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI"
+ xmlns:items="clr-namespace:Tango.MachineStudio.Technician.TechItems"
+ xmlns:editors="clr-namespace:Tango.SharedUI.Editors;assembly=Tango.SharedUI"
+ xmlns:mahApps="http://metro.mahapps.com/winfx/xaml/controls"
+ xmlns:colorPicker="clr-namespace:Tango;assembly=Tango.ColorPicker"
+ xmlns:local="clr-namespace:Tango.MachineStudio.Technician.PropertiesTemplates"
+ mc:Ignorable="d"
+ d:DesignHeight="500" d:DesignWidth="200" d:DataContext="{d:DesignInstance Type=items:BreakSensorItem, IsDesignTimeCreatable=False}">
+
+ <UserControl.Resources>
+ <sharedConverters:DoubleToIntConverter x:Key="DoubleToIntConverter" />
+
+ <Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
+ <Setter Property="mahApps:ControlsHelper.HeaderFontSize" Value="14" />
+ <Setter Property="Margin" Value="2" />
+ </Style>
+ </UserControl.Resources>
+
+ <Grid>
+ <StackPanel>
+ <GroupBox Header="SPEED SENSOR">
+ <StackPanel>
+ <TextBlock FontSize="10">Selected Break Sensor</TextBlock>
+ <ComboBox Margin="0 5 0 0" ItemsSource="{Binding Adapter.HardwareBreakSensorTypes}" SelectedItem="{Binding HardwareBreakSensorType,Mode=TwoWay}" DisplayMemberPath="Description" />
+ </StackPanel>
+ </GroupBox>
+
+ <GroupBox Header="PARAMETERS" Margin="0 10 0 0">
+ <editors:ParameterizedEditor ParameterizedObject="{Binding HardwareBreakSensor}" Padding="10">
+ <editors:ParameterizedEditor.ItemsPanel>
+ <ItemsPanelTemplate>
+ <StackPanel></StackPanel>
+ </ItemsPanelTemplate>
+ </editors:ParameterizedEditor.ItemsPanel>
+ <editors:ParameterizedEditor.DoubleTemplate>
+ <DataTemplate>
+ <DockPanel>
+ <mahApps:NumericUpDown DockPanel.Dock="Right" Background="Transparent" BorderThickness="0 0 0 0" Value="{Binding Value,UpdateSourceTrigger=PropertyChanged}" HasDecimals="True" HorizontalContentAlignment="Center" Width="100" />
+ <TextBlock Text="{Binding Name}" VerticalAlignment="Center"></TextBlock>
+ </DockPanel>
+ </DataTemplate>
+ </editors:ParameterizedEditor.DoubleTemplate>
+ <editors:ParameterizedEditor.Int32Template>
+ <DataTemplate>
+ <DockPanel>
+ <mahApps:NumericUpDown DockPanel.Dock="Right" Background="Transparent" BorderThickness="0 0 0 0" Value="{Binding Value,Converter={StaticResource DoubleToIntConverter},UpdateSourceTrigger=PropertyChanged}" HasDecimals="False" HorizontalContentAlignment="Center" Width="100" />
+ <TextBlock Text="{Binding Name}" VerticalAlignment="Center"></TextBlock>
+ </DockPanel>
+ </DataTemplate>
+ </editors:ParameterizedEditor.Int32Template>
+ <editors:ParameterizedEditor.BooleanTemplate>
+ <DataTemplate>
+ <DockPanel Margin="0 5 0 0">
+ <ToggleButton DockPanel.Dock="Right" Width="100" IsChecked="{Binding Value}" HorizontalAlignment="Right" />
+ <TextBlock Text="{Binding Name}" VerticalAlignment="Center"></TextBlock>
+ </DockPanel>
+ </DataTemplate>
+ </editors:ParameterizedEditor.BooleanTemplate>
+ </editors:ParameterizedEditor>
+ </GroupBox>
+
+ <GroupBox Header="COLOR" Margin="0 10 0 0">
+ <StackPanel>
+ <Viewbox Margin="0 5 0 0">
+ <colorPicker:ColorCanvas SelectedColor="{Binding Color,Mode=TwoWay}" Background="Transparent" />
+ </Viewbox>
+ </StackPanel>
+ </GroupBox>
+ </StackPanel>
+ </Grid>
+</UserControl>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.xaml.cs
new file mode 100644
index 000000000..7c9fc5ad0
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/PropertiesTemplates/BreakSensorTemplate.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.MachineStudio.Technician.PropertiesTemplates
+{
+ /// <summary>
+ /// Interaction logic for MonitorTemplate.xaml
+ /// </summary>
+ public partial class BreakSensorTemplate : UserControl
+ {
+ public BreakSensorTemplate()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Tango.MachineStudio.Technician.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Tango.MachineStudio.Technician.csproj
index c9e30457e..14b88de03 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Tango.MachineStudio.Technician.csproj
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Tango.MachineStudio.Technician.csproj
@@ -114,6 +114,12 @@
<Compile Include="Editors\DancerElementEditor.xaml.cs">
<DependentUpon>DancerElementEditor.xaml</DependentUpon>
</Compile>
+ <Compile Include="Editors\BlowerElementEditor.xaml.cs">
+ <DependentUpon>BlowerElementEditor.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="Editors\BreakSensorElementEditor.xaml.cs">
+ <DependentUpon>BreakSensorElementEditor.xaml</DependentUpon>
+ </Compile>
<Compile Include="Editors\SpeedSensorElementEditor.xaml.cs">
<DependentUpon>SpeedSensorElementEditor.xaml</DependentUpon>
</Compile>
@@ -179,6 +185,12 @@
<Compile Include="PropertiesTemplates\ProcessParametersTemplate.xaml.cs">
<DependentUpon>ProcessParametersTemplate.xaml</DependentUpon>
</Compile>
+ <Compile Include="PropertiesTemplates\BlowerTemplate.xaml.cs">
+ <DependentUpon>BlowerTemplate.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="PropertiesTemplates\BreakSensorTemplate.xaml.cs">
+ <DependentUpon>BreakSensorTemplate.xaml</DependentUpon>
+ </Compile>
<Compile Include="PropertiesTemplates\SpeedSensorTemplate.xaml.cs">
<DependentUpon>SpeedSensorTemplate.xaml</DependentUpon>
</Compile>
@@ -203,6 +215,8 @@
<Compile Include="PropertiesTemplates\SingleGraphTemplate.xaml.cs">
<DependentUpon>SingleGraphTemplate.xaml</DependentUpon>
</Compile>
+ <Compile Include="TechItems\BlowerItem.cs" />
+ <Compile Include="TechItems\BreakSensorItem.cs" />
<Compile Include="TechItems\ControllerItem.cs" />
<Compile Include="TechItems\DigitalInItem.cs" />
<Compile Include="TechItems\DigitalOutItem.cs" />
@@ -258,6 +272,14 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
+ <Page Include="Editors\BlowerElementEditor.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
+ <Page Include="Editors\BreakSensorElementEditor.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
<Page Include="Editors\SpeedSensorElementEditor.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -334,6 +356,14 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
+ <Page Include="PropertiesTemplates\BlowerTemplate.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
+ <Page Include="PropertiesTemplates\BreakSensorTemplate.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
<Page Include="PropertiesTemplates\SpeedSensorTemplate.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -569,10 +599,20 @@
<ItemGroup>
<Resource Include="Images\rgb-big.png" />
</ItemGroup>
+ <ItemGroup>
+ <Resource Include="Images\blower.png" />
+ <Resource Include="Images\break.png" />
+ </ItemGroup>
+ <ItemGroup>
+ <Resource Include="Images\break-big.png" />
+ </ItemGroup>
+ <ItemGroup>
+ <Resource Include="Images\blower-big.png" />
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<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/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BlowerItem.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BlowerItem.cs
new file mode 100644
index 000000000..59a96f107
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BlowerItem.cs
@@ -0,0 +1,102 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Media;
+using System.Xml.Serialization;
+using Tango.BL.Entities;
+using Tango.SharedUI.Helpers;
+
+namespace Tango.MachineStudio.Technician.TechItems
+{
+ /// <summary>
+ /// Represents a Blower controller item.
+ /// </summary>
+ /// <seealso cref="Tango.MachineStudio.Technician.TechItems.TechItem" />
+ [TechItem(16)]
+ public class BlowerItem : TechItem
+ {
+ private static List<HardwareBlower> _BlowerConfigurations;
+ /// <summary>
+ /// Gets or sets the Blower configurations.
+ /// </summary>
+ public static List<HardwareBlower> BlowerConfigurations
+ {
+ get { return _BlowerConfigurations; }
+ set { _BlowerConfigurations = value; }
+ }
+
+ static BlowerItem()
+ {
+ BlowerConfigurations = new List<HardwareBlower>();
+
+ foreach (var BlowerType in BL.ObservablesEntitiesAdapter.Instance.HardwareBlowerTypes)
+ {
+ BlowerConfigurations.Add(new HardwareBlower() { HardwareBlowerType = BlowerType });
+ }
+ }
+
+ private HardwareBlowerType _hardwareBlowerType;
+ /// <summary>
+ /// Gets or sets the type of the hardware Blower.
+ /// </summary>
+ [XmlIgnore]
+ public HardwareBlowerType HardwareBlowerType
+ {
+ get { return _hardwareBlowerType; }
+ set
+ {
+ _hardwareBlowerType = value; RaisePropertyChangedAuto(); TechName = _hardwareBlowerType != null ? _hardwareBlowerType.Description : null; ItemGuid = value != null ? value.Guid : null;
+
+ if (_hardwareBlowerType != null)
+ {
+ HardwareBlower = BlowerConfigurations.SingleOrDefault(x => x.HardwareBlowerType == _hardwareBlowerType);
+ }
+ }
+ }
+
+ private HardwareBlower _hardwareBlower;
+ /// <summary>
+ /// Gets or sets the hardware Blower.
+ /// </summary>
+ [XmlIgnore]
+ public HardwareBlower HardwareBlower
+ {
+ get { return _hardwareBlower; }
+ set { _hardwareBlower = value; RaisePropertyChangedAuto(); }
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="BlowerItem"/> class.
+ /// </summary>
+ public BlowerItem() : base()
+ {
+ Name = "Blower";
+ Description = "Blower Controller";
+ Image = ResourceHelper.GetImageFromResources("Images/blower.png");
+ Color = Colors.White;
+ HardwareBlower = new HardwareBlower();
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="BlowerItem"/> class.
+ /// </summary>
+ /// <param name="BlowerType">Type of the Blower.</param>
+ public BlowerItem(HardwareBlowerType BlowerType) : this()
+ {
+ HardwareBlowerType = BlowerType;
+ }
+
+ /// <summary>
+ /// Clones this instance.
+ /// </summary>
+ /// <returns></returns>
+ public override TechItem Clone()
+ {
+ BlowerItem cloned = base.Clone() as BlowerItem;
+ cloned.HardwareBlowerType = HardwareBlowerType;
+ return cloned;
+ }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BreakSensorItem.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BreakSensorItem.cs
new file mode 100644
index 000000000..cf1ed682e
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/BreakSensorItem.cs
@@ -0,0 +1,102 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Media;
+using System.Xml.Serialization;
+using Tango.BL.Entities;
+using Tango.SharedUI.Helpers;
+
+namespace Tango.MachineStudio.Technician.TechItems
+{
+ /// <summary>
+ /// Represents a BreakSensor controller item.
+ /// </summary>
+ /// <seealso cref="Tango.MachineStudio.Technician.TechItems.TechItem" />
+ [TechItem(17)]
+ public class BreakSensorItem : TechItem
+ {
+ private static List<HardwareBreakSensor> _BreakSensorConfigurations;
+ /// <summary>
+ /// Gets or sets the BreakSensor configurations.
+ /// </summary>
+ public static List<HardwareBreakSensor> BreakSensorConfigurations
+ {
+ get { return _BreakSensorConfigurations; }
+ set { _BreakSensorConfigurations = value; }
+ }
+
+ static BreakSensorItem()
+ {
+ BreakSensorConfigurations = new List<HardwareBreakSensor>();
+
+ foreach (var BreakSensorType in BL.ObservablesEntitiesAdapter.Instance.HardwareBreakSensorTypes)
+ {
+ BreakSensorConfigurations.Add(new HardwareBreakSensor() { HardwareBreakSensorType = BreakSensorType });
+ }
+ }
+
+ private HardwareBreakSensorType _hardwareBreakSensorType;
+ /// <summary>
+ /// Gets or sets the type of the hardware BreakSensor.
+ /// </summary>
+ [XmlIgnore]
+ public HardwareBreakSensorType HardwareBreakSensorType
+ {
+ get { return _hardwareBreakSensorType; }
+ set
+ {
+ _hardwareBreakSensorType = value; RaisePropertyChangedAuto(); TechName = _hardwareBreakSensorType != null ? _hardwareBreakSensorType.Description : null; ItemGuid = value != null ? value.Guid : null;
+
+ if (_hardwareBreakSensorType != null)
+ {
+ HardwareBreakSensor = BreakSensorConfigurations.SingleOrDefault(x => x.HardwareBreakSensorType == _hardwareBreakSensorType);
+ }
+ }
+ }
+
+ private HardwareBreakSensor _hardwareBreakSensor;
+ /// <summary>
+ /// Gets or sets the hardware BreakSensor.
+ /// </summary>
+ [XmlIgnore]
+ public HardwareBreakSensor HardwareBreakSensor
+ {
+ get { return _hardwareBreakSensor; }
+ set { _hardwareBreakSensor = value; RaisePropertyChangedAuto(); }
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="BreakSensorItem"/> class.
+ /// </summary>
+ public BreakSensorItem() : base()
+ {
+ Name = "Break Sensor";
+ Description = "Break Sensor Controller";
+ Image = ResourceHelper.GetImageFromResources("Images/break.png");
+ Color = Colors.White;
+ HardwareBreakSensor = new HardwareBreakSensor();
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="BreakSensorItem"/> class.
+ /// </summary>
+ /// <param name="BreakSensorType">Type of the BreakSensor.</param>
+ public BreakSensorItem(HardwareBreakSensorType BreakSensorType) : this()
+ {
+ HardwareBreakSensorType = BreakSensorType;
+ }
+
+ /// <summary>
+ /// Clones this instance.
+ /// </summary>
+ /// <returns></returns>
+ public override TechItem Clone()
+ {
+ BreakSensorItem cloned = base.Clone() as BreakSensorItem;
+ cloned.HardwareBreakSensorType = HardwareBreakSensorType;
+ return cloned;
+ }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/TechItem.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/TechItem.cs
index a1aba597b..11188c69d 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/TechItem.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/TechItem.cs
@@ -34,6 +34,8 @@ namespace Tango.MachineStudio.Technician.TechItems
[XmlInclude(typeof(WinderItem))]
[XmlInclude(typeof(DancerItem))]
[XmlInclude(typeof(SpeedSensorItem))]
+ [XmlInclude(typeof(BlowerItem))]
+ [XmlInclude(typeof(BreakSensorItem))]
[XmlInclude(typeof(ProcessParametersItem))]
[XmlInclude(typeof(JobRunnerItem))]
public abstract class TechItem : ExtendedObject
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs
index cd7582fe9..f79ebb29b 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs
@@ -617,6 +617,14 @@ namespace Tango.MachineStudio.Technician.ViewModels
{
CreateElement<SpeedSensorElementEditor, SpeedSensorItem, HardwareSpeedSensorType>(bounds, Adapter.HardwareSpeedSensorTypes.FirstOrDefault());
}
+ else if (item is BlowerItem)
+ {
+ CreateElement<BlowerElementEditor, BlowerItem, HardwareBlowerType>(bounds, Adapter.HardwareBlowerTypes.FirstOrDefault());
+ }
+ else if (item is BreakSensorItem)
+ {
+ CreateElement<BreakSensorElementEditor, BreakSensorItem, HardwareBreakSensorType>(bounds, Adapter.HardwareBreakSensorTypes.FirstOrDefault());
+ }
else if (item is ProcessParametersItem)
{
var editor = CreateElement<ProcessParametersElementEditor, ProcessParametersItem, object>(bounds, null);
@@ -746,6 +754,16 @@ namespace Tango.MachineStudio.Technician.ViewModels
(item as SpeedSensorItem).HardwareSpeedSensorType = Adapter.HardwareSpeedSensorTypes.FirstOrDefault(x => x.Guid == item.ItemGuid);
CreateElement<SpeedSensorElementEditor>(item);
}
+ else if (item is BlowerItem)
+ {
+ (item as BlowerItem).HardwareBlowerType = Adapter.HardwareBlowerTypes.FirstOrDefault(x => x.Guid == item.ItemGuid);
+ CreateElement<BlowerElementEditor>(item);
+ }
+ else if (item is BreakSensorItem)
+ {
+ (item as BreakSensorItem).HardwareBreakSensorType = Adapter.HardwareBreakSensorTypes.FirstOrDefault(x => x.Guid == item.ItemGuid);
+ CreateElement<BreakSensorElementEditor>(item);
+ }
else if (item is ProcessParametersItem)
{
var editor = CreateElement<ProcessParametersElementEditor>(item);
@@ -1610,6 +1628,26 @@ namespace Tango.MachineStudio.Technician.ViewModels
}
}
+ foreach (var blowerConfig in config.Blowers)
+ {
+ var itemConfig = BlowerItem.BlowerConfigurations.SingleOrDefault(x => x.HardwareBlowerType.Code == blowerConfig.HardwareBlowerType.ToInt32());
+
+ if (itemConfig != null)
+ {
+ blowerConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ foreach (var breakSensorConfig in config.BreakSensors)
+ {
+ var itemConfig = BreakSensorItem.BreakSensorConfigurations.SingleOrDefault(x => x.HardwareBreakSensorType.Code == breakSensorConfig.HardwareBreakSensorType.ToInt32());
+
+ if (itemConfig != null)
+ {
+ breakSensorConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
_notification.ShowInfo("Visual elements synced to the last uploaded hardware configuration.");
}
else
@@ -1674,6 +1712,26 @@ namespace Tango.MachineStudio.Technician.ViewModels
}
}
+ foreach (var blowerConfig in hw.HardwareBlowers)
+ {
+ var itemConfig = BlowerItem.BlowerConfigurations.SingleOrDefault(x => x.HardwareBlowerType.Code == blowerConfig.HardwareBlowerType.Code);
+
+ if (itemConfig != null)
+ {
+ itemConfig.MapPrimitivesTo(blowerConfig);
+ }
+ }
+
+ foreach (var breakSensorConfig in hw.HardwareBreakSensors)
+ {
+ var itemConfig = BreakSensorItem.BreakSensorConfigurations.SingleOrDefault(x => x.HardwareBreakSensorType.Code == breakSensorConfig.HardwareBreakSensorType.Code);
+
+ if (itemConfig != null)
+ {
+ itemConfig.MapPrimitivesTo(breakSensorConfig);
+ }
+ }
+
using (_notification.PushTaskItem("Uploading hardware configuration..."))
{
try
@@ -1745,6 +1803,26 @@ namespace Tango.MachineStudio.Technician.ViewModels
}
}
+ foreach (var blowerSensorConfig in hw.HardwareBlowers)
+ {
+ var itemConfig = BlowerItem.BlowerConfigurations.SingleOrDefault(x => x.HardwareBlowerType.Code == blowerSensorConfig.HardwareBlowerType.Code);
+
+ if (itemConfig != null)
+ {
+ blowerSensorConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ foreach (var breakSensorConfig in hw.HardwareBreakSensors)
+ {
+ var itemConfig = BreakSensorItem.BreakSensorConfigurations.SingleOrDefault(x => x.HardwareBreakSensorType.Code == breakSensorConfig.HardwareBreakSensorType.Code);
+
+ if (itemConfig != null)
+ {
+ breakSensorConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
if (showMessage)
{
_notification.ShowInfo("Visual elements synced to hardware version " + hw.Name + ", " + hw.Version + ".");
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/MachineTechView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/MachineTechView.xaml
index c11dbc525..cc6ade388 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/MachineTechView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/Views/MachineTechView.xaml
@@ -202,7 +202,7 @@
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type techItems:TechItem}">
- <Border Cursor="Hand" ToolTip="{Binding Description}" RenderTransformOrigin="0.5,0.5" Width="70" Padding="10" Margin="5" Height="70" BorderThickness="1" CornerRadius="100">
+ <Border Cursor="Hand" ToolTip="{Binding Description}" RenderTransformOrigin="0.5,0.5" Width="60" Height="60" Padding="10" Margin="5" BorderThickness="1" CornerRadius="100">
<Border.Style>
<Style TargetType="Border">
<Setter Property="RenderTransform">
@@ -400,6 +400,12 @@
<DataTemplate DataType="{x:Type items:ProcessParametersItem}">
<templates:ProcessParametersTemplate/>
</DataTemplate>
+ <DataTemplate DataType="{x:Type items:BreakSensorItem}">
+ <templates:BreakSensorTemplate/>
+ </DataTemplate>
+ <DataTemplate DataType="{x:Type items:BlowerItem}">
+ <templates:BlowerTemplate/>
+ </DataTemplate>
<DataTemplate DataType="{x:Type items:SpeedSensorItem}">
<templates:SpeedSensorTemplate/>
</DataTemplate>
diff --git a/Software/Visual_Studio/Tango.BL/Enumerations/HardwareBlowerTypes.cs b/Software/Visual_Studio/Tango.BL/Enumerations/HardwareBlowerTypes.cs
index 0f8b447fd..00edf80a8 100644
--- a/Software/Visual_Studio/Tango.BL/Enumerations/HardwareBlowerTypes.cs
+++ b/Software/Visual_Studio/Tango.BL/Enumerations/HardwareBlowerTypes.cs
@@ -18,5 +18,12 @@ namespace Tango.BL.Enumerations
{
public enum HardwareBlowerTypes
{
+
+ /// <summary>
+ /// (Standard Blower)
+ /// </summary>
+ [Description("Standard Blower")]
+ StandardBlower = 0,
+
}
}
diff --git a/Software/Visual_Studio/Tango.BL/Enumerations/HardwareBreakSensorTypes.cs b/Software/Visual_Studio/Tango.BL/Enumerations/HardwareBreakSensorTypes.cs
index a43869bf5..9ed516a25 100644
--- a/Software/Visual_Studio/Tango.BL/Enumerations/HardwareBreakSensorTypes.cs
+++ b/Software/Visual_Studio/Tango.BL/Enumerations/HardwareBreakSensorTypes.cs
@@ -18,5 +18,12 @@ namespace Tango.BL.Enumerations
{
public enum HardwareBreakSensorTypes
{
+
+ /// <summary>
+ /// (Standard Break Sensor)
+ /// </summary>
+ [Description("Standard Break Sensor")]
+ StandardBreakSensor = 0,
+
}
}
diff --git a/Software/Visual_Studio/Tango.BL/Enumerations/TechMonitors.cs b/Software/Visual_Studio/Tango.BL/Enumerations/TechMonitors.cs
index 79e578f43..fb41986a8 100644
--- a/Software/Visual_Studio/Tango.BL/Enumerations/TechMonitors.cs
+++ b/Software/Visual_Studio/Tango.BL/Enumerations/TechMonitors.cs
@@ -20,6 +20,12 @@ namespace Tango.BL.Enumerations
{
/// <summary>
+ /// (Blower Voltage)
+ /// </summary>
+ [Description("Blower Voltage")]
+ BlowerVoltage = 39,
+
+ /// <summary>
/// (Chiller Temperature)
/// </summary>
[Description("Chiller Temperature")]
diff --git a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
index aec6e562b..c88f5d991 100644
--- a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
+++ b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
@@ -311,6 +311,7 @@ namespace Tango.Emulations.Emulators
{
value++;
monitors.Dancer1Angle.Add((int)(150 + _graphAmplitude * Math.Sin(2 * 3.14 * ((int)_graphFrequency) * value)));
+ monitors.BlowerVoltage.Add((int)(150 + _graphAmplitude * Math.Sin(2 * 3.14 * ((int)_graphFrequency) * value)));
}
monitors.Dancer2Angle.Add(Cursor.Position.Y);
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
index 70c9f0bb5..984c4e7fe 100644
--- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
+++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
@@ -911,6 +911,22 @@ namespace Tango.Integration.Operation
hardwareConfiguration.SpeedSensors.Add(item);
}
+ foreach (var blower in hardwareVersion.HardwareBlowers)
+ {
+ PMR.Hardware.HardwareBlower item = new PMR.Hardware.HardwareBlower();
+ blower.MapPrimitivesTo(item);
+ item.HardwareBlowerType = (PMR.Hardware.HardwareBlowerType)blower.HardwareBlowerType.Code;
+ hardwareConfiguration.Blowers.Add(item);
+ }
+
+ foreach (var breakSensor in hardwareVersion.HardwareBreakSensors)
+ {
+ PMR.Hardware.HardwareBreakSensor item = new PMR.Hardware.HardwareBreakSensor();
+ breakSensor.MapPrimitivesTo(item);
+ item.HardwareBreakSensorType = (PMR.Hardware.HardwareBreakSensorType)breakSensor.HardwareBreakSensorType.Code;
+ hardwareConfiguration.BreakSensors.Add(item);
+ }
+
foreach (var idsPack in configuration.NoneEmptyIdsPacks.OrderBy(x => x.PackIndex))
{
PMR.Hardware.HardwareDispenser item = new PMR.Hardware.HardwareDispenser();
diff --git a/Software/Visual_Studio/Tango.PMR/Diagnostics/DiagnosticsMonitors.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/DiagnosticsMonitors.cs
index a9ce72407..1a5edab37 100644
--- a/Software/Visual_Studio/Tango.PMR/Diagnostics/DiagnosticsMonitors.cs
+++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/DiagnosticsMonitors.cs
@@ -23,7 +23,7 @@ namespace Tango.PMR.Diagnostics {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
"ChlEaWFnbm9zdGljc01vbml0b3JzLnByb3RvEhVUYW5nby5QTVIuRGlhZ25v",
- "c3RpY3MaEURvdWJsZUFycmF5LnByb3RvIu4JChNEaWFnbm9zdGljc01vbml0",
+ "c3RpY3MaEURvdWJsZUFycmF5LnByb3RvIoUKChNEaWFnbm9zdGljc01vbml0",
"b3JzEhQKDERhbmNlcjFBbmdsZRgBIAMoARIUCgxEYW5jZXIyQW5nbGUYAiAD",
"KAESFAoMRGFuY2VyM0FuZ2xlGAMgAygBEhwKFEZlZWRlck1vdG9yRnJlcXVl",
"bmN5GAQgAygBEhIKCkRyeWVyTW90b3IYBSADKAESEwoLUG9sbGVyTW90b3IY",
@@ -51,12 +51,13 @@ namespace Tango.PMR.Diagnostics {
"GCIgAygBEiAKGERpc3BlbnNlcjdNb3RvckZyZXF1ZW5jeRgjIAMoARIgChhE",
"aXNwZW5zZXI4TW90b3JGcmVxdWVuY3kYJCADKAESHAoUSGVhZFpvbmU0VGVt",
"cGVyYXR1cmUYJSADKAESHAoUSGVhZFpvbmU1VGVtcGVyYXR1cmUYJiADKAES",
- "HAoUSGVhZFpvbmU2VGVtcGVyYXR1cmUYJyADKAFCIQofY29tLnR3aW5lLnRh",
- "bmdvLnBtci5kaWFnbm9zdGljc2IGcHJvdG8z"));
+ "HAoUSGVhZFpvbmU2VGVtcGVyYXR1cmUYJyADKAESFQoNQmxvd2VyVm9sdGFn",
+ "ZRgoIAMoAUIhCh9jb20udHdpbmUudGFuZ28ucG1yLmRpYWdub3N0aWNzYgZw",
+ "cm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tango.PMR.Diagnostics.DoubleArrayReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
- new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.DiagnosticsMonitors), global::Tango.PMR.Diagnostics.DiagnosticsMonitors.Parser, new[]{ "Dancer1Angle", "Dancer2Angle", "Dancer3Angle", "FeederMotorFrequency", "DryerMotor", "PollerMotor", "WinderMotor", "ScrewMotor", "ThreadSpeed", "MixerTemperature", "HeadZone1Temperature", "HeadZone2Temperature", "HeadZone3Temperature", "HeadAirFlow", "FeederTension", "PullerTension", "DryerZone1Temperature", "DryerZone2Temperature", "DryerZone3Temperature", "DryerAirFlow", "WinderTension", "DispensersMotorsFrequency", "DispensersAngularEncoders", "DispensersLinearPositions", "DispensersPressure", "MidTankPressure", "FilterDeltaPressure", "ChillerTemperature", "Dispenser1MotorFrequency", "Dispenser2MotorFrequency", "Dispenser3MotorFrequency", "Dispenser4MotorFrequency", "Dispenser5MotorFrequency", "Dispenser6MotorFrequency", "Dispenser7MotorFrequency", "Dispenser8MotorFrequency", "HeadZone4Temperature", "HeadZone5Temperature", "HeadZone6Temperature" }, null, null, null)
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.DiagnosticsMonitors), global::Tango.PMR.Diagnostics.DiagnosticsMonitors.Parser, new[]{ "Dancer1Angle", "Dancer2Angle", "Dancer3Angle", "FeederMotorFrequency", "DryerMotor", "PollerMotor", "WinderMotor", "ScrewMotor", "ThreadSpeed", "MixerTemperature", "HeadZone1Temperature", "HeadZone2Temperature", "HeadZone3Temperature", "HeadAirFlow", "FeederTension", "PullerTension", "DryerZone1Temperature", "DryerZone2Temperature", "DryerZone3Temperature", "DryerAirFlow", "WinderTension", "DispensersMotorsFrequency", "DispensersAngularEncoders", "DispensersLinearPositions", "DispensersPressure", "MidTankPressure", "FilterDeltaPressure", "ChillerTemperature", "Dispenser1MotorFrequency", "Dispenser2MotorFrequency", "Dispenser3MotorFrequency", "Dispenser4MotorFrequency", "Dispenser5MotorFrequency", "Dispenser6MotorFrequency", "Dispenser7MotorFrequency", "Dispenser8MotorFrequency", "HeadZone4Temperature", "HeadZone5Temperature", "HeadZone6Temperature", "BlowerVoltage" }, null, null, null)
}));
}
#endregion
@@ -126,6 +127,7 @@ namespace Tango.PMR.Diagnostics {
headZone4Temperature_ = other.headZone4Temperature_.Clone();
headZone5Temperature_ = other.headZone5Temperature_.Clone();
headZone6Temperature_ = other.headZone6Temperature_.Clone();
+ blowerVoltage_ = other.blowerVoltage_.Clone();
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -640,6 +642,19 @@ namespace Tango.PMR.Diagnostics {
get { return headZone6Temperature_; }
}
+ /// <summary>Field number for the "BlowerVoltage" field.</summary>
+ public const int BlowerVoltageFieldNumber = 40;
+ private static readonly pb::FieldCodec<double> _repeated_blowerVoltage_codec
+ = pb::FieldCodec.ForDouble(322);
+ private readonly pbc::RepeatedField<double> blowerVoltage_ = new pbc::RepeatedField<double>();
+ /// <summary>
+ ///Blower Voltage (Min = 0, Max = 100, PPF = 10)
+ /// </summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField<double> BlowerVoltage {
+ get { return blowerVoltage_; }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as DiagnosticsMonitors);
@@ -692,6 +707,7 @@ namespace Tango.PMR.Diagnostics {
if(!headZone4Temperature_.Equals(other.headZone4Temperature_)) return false;
if(!headZone5Temperature_.Equals(other.headZone5Temperature_)) return false;
if(!headZone6Temperature_.Equals(other.headZone6Temperature_)) return false;
+ if(!blowerVoltage_.Equals(other.blowerVoltage_)) return false;
return true;
}
@@ -737,6 +753,7 @@ namespace Tango.PMR.Diagnostics {
hash ^= headZone4Temperature_.GetHashCode();
hash ^= headZone5Temperature_.GetHashCode();
hash ^= headZone6Temperature_.GetHashCode();
+ hash ^= blowerVoltage_.GetHashCode();
return hash;
}
@@ -786,6 +803,7 @@ namespace Tango.PMR.Diagnostics {
headZone4Temperature_.WriteTo(output, _repeated_headZone4Temperature_codec);
headZone5Temperature_.WriteTo(output, _repeated_headZone5Temperature_codec);
headZone6Temperature_.WriteTo(output, _repeated_headZone6Temperature_codec);
+ blowerVoltage_.WriteTo(output, _repeated_blowerVoltage_codec);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -830,6 +848,7 @@ namespace Tango.PMR.Diagnostics {
size += headZone4Temperature_.CalculateSize(_repeated_headZone4Temperature_codec);
size += headZone5Temperature_.CalculateSize(_repeated_headZone5Temperature_codec);
size += headZone6Temperature_.CalculateSize(_repeated_headZone6Temperature_codec);
+ size += blowerVoltage_.CalculateSize(_repeated_blowerVoltage_codec);
return size;
}
@@ -877,6 +896,7 @@ namespace Tango.PMR.Diagnostics {
headZone4Temperature_.Add(other.headZone4Temperature_);
headZone5Temperature_.Add(other.headZone5Temperature_);
headZone6Temperature_.Add(other.headZone6Temperature_);
+ blowerVoltage_.Add(other.blowerVoltage_);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1078,6 +1098,11 @@ namespace Tango.PMR.Diagnostics {
headZone6Temperature_.AddEntriesFrom(input, _repeated_headZone6Temperature_codec);
break;
}
+ case 322:
+ case 321: {
+ blowerVoltage_.AddEntriesFrom(input, _repeated_blowerVoltage_codec);
+ break;
+ }
}
}
}
diff --git a/Software/Visual_Studio/Tango.PMR/Hardware/HardwareBlower.cs b/Software/Visual_Studio/Tango.PMR/Hardware/HardwareBlower.cs
index 785e57ce4..caf7f29a8 100644
--- a/Software/Visual_Studio/Tango.PMR/Hardware/HardwareBlower.cs
+++ b/Software/Visual_Studio/Tango.PMR/Hardware/HardwareBlower.cs
@@ -23,14 +23,15 @@ namespace Tango.PMR.Hardware {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
"ChRIYXJkd2FyZUJsb3dlci5wcm90bxISVGFuZ28uUE1SLkhhcmR3YXJlGhhI",
- "YXJkd2FyZUJsb3dlclR5cGUucHJvdG8iYgoOSGFyZHdhcmVCbG93ZXISQgoS",
+ "YXJkd2FyZUJsb3dlclR5cGUucHJvdG8idgoOSGFyZHdhcmVCbG93ZXISQgoS",
"SGFyZHdhcmVCbG93ZXJUeXBlGAEgASgOMiYuVGFuZ28uUE1SLkhhcmR3YXJl",
- "LkhhcmR3YXJlQmxvd2VyVHlwZRIMCgRDb2RlGAIgASgFQh4KHGNvbS50d2lu",
- "ZS50YW5nby5wbXIuaGFyZHdhcmViBnByb3RvMw=="));
+ "LkhhcmR3YXJlQmxvd2VyVHlwZRIPCgdFbmFibGVkGAIgASgIEg8KB1ZvbHRh",
+ "Z2UYAyABKAFCHgocY29tLnR3aW5lLnRhbmdvLnBtci5oYXJkd2FyZWIGcHJv",
+ "dG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tango.PMR.Hardware.HardwareBlowerTypeReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
- new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Hardware.HardwareBlower), global::Tango.PMR.Hardware.HardwareBlower.Parser, new[]{ "HardwareBlowerType", "Code" }, null, null, null)
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Hardware.HardwareBlower), global::Tango.PMR.Hardware.HardwareBlower.Parser, new[]{ "HardwareBlowerType", "Enabled", "Voltage" }, null, null, null)
}));
}
#endregion
@@ -62,7 +63,8 @@ namespace Tango.PMR.Hardware {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public HardwareBlower(HardwareBlower other) : this() {
hardwareBlowerType_ = other.hardwareBlowerType_;
- code_ = other.code_;
+ enabled_ = other.enabled_;
+ voltage_ = other.voltage_;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -81,14 +83,25 @@ namespace Tango.PMR.Hardware {
}
}
- /// <summary>Field number for the "Code" field.</summary>
- public const int CodeFieldNumber = 2;
- private int code_;
+ /// <summary>Field number for the "Enabled" field.</summary>
+ public const int EnabledFieldNumber = 2;
+ private bool enabled_;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
- public int Code {
- get { return code_; }
+ public bool Enabled {
+ get { return enabled_; }
set {
- code_ = value;
+ enabled_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Voltage" field.</summary>
+ public const int VoltageFieldNumber = 3;
+ private double voltage_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double Voltage {
+ get { return voltage_; }
+ set {
+ voltage_ = value;
}
}
@@ -106,7 +119,8 @@ namespace Tango.PMR.Hardware {
return true;
}
if (HardwareBlowerType != other.HardwareBlowerType) return false;
- if (Code != other.Code) return false;
+ if (Enabled != other.Enabled) return false;
+ if (Voltage != other.Voltage) return false;
return true;
}
@@ -114,7 +128,8 @@ namespace Tango.PMR.Hardware {
public override int GetHashCode() {
int hash = 1;
if (HardwareBlowerType != 0) hash ^= HardwareBlowerType.GetHashCode();
- if (Code != 0) hash ^= Code.GetHashCode();
+ if (Enabled != false) hash ^= Enabled.GetHashCode();
+ if (Voltage != 0D) hash ^= Voltage.GetHashCode();
return hash;
}
@@ -129,9 +144,13 @@ namespace Tango.PMR.Hardware {
output.WriteRawTag(8);
output.WriteEnum((int) HardwareBlowerType);
}
- if (Code != 0) {
+ if (Enabled != false) {
output.WriteRawTag(16);
- output.WriteInt32(Code);
+ output.WriteBool(Enabled);
+ }
+ if (Voltage != 0D) {
+ output.WriteRawTag(25);
+ output.WriteDouble(Voltage);
}
}
@@ -141,8 +160,11 @@ namespace Tango.PMR.Hardware {
if (HardwareBlowerType != 0) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) HardwareBlowerType);
}
- if (Code != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Code);
+ if (Enabled != false) {
+ size += 1 + 1;
+ }
+ if (Voltage != 0D) {
+ size += 1 + 8;
}
return size;
}
@@ -155,8 +177,11 @@ namespace Tango.PMR.Hardware {
if (other.HardwareBlowerType != 0) {
HardwareBlowerType = other.HardwareBlowerType;
}
- if (other.Code != 0) {
- Code = other.Code;
+ if (other.Enabled != false) {
+ Enabled = other.Enabled;
+ }
+ if (other.Voltage != 0D) {
+ Voltage = other.Voltage;
}
}
@@ -173,7 +198,11 @@ namespace Tango.PMR.Hardware {
break;
}
case 16: {
- Code = input.ReadInt32();
+ Enabled = input.ReadBool();
+ break;
+ }
+ case 25: {
+ Voltage = input.ReadDouble();
break;
}
}
diff --git a/Software/Visual_Studio/Tango.PMR/Hardware/HardwareConfiguration.cs b/Software/Visual_Studio/Tango.PMR/Hardware/HardwareConfiguration.cs
index 6800711e3..e51fe00dc 100644
--- a/Software/Visual_Studio/Tango.PMR/Hardware/HardwareConfiguration.cs
+++ b/Software/Visual_Studio/Tango.PMR/Hardware/HardwareConfiguration.cs
@@ -26,20 +26,23 @@ namespace Tango.PMR.Hardware {
"d2FyZRoUSGFyZHdhcmVEYW5jZXIucHJvdG8aF0hhcmR3YXJlRGlzcGVuc2Vy",
"LnByb3RvGhNIYXJkd2FyZU1vdG9yLnByb3RvGhhIYXJkd2FyZVBpZENvbnRy",
"b2wucHJvdG8aFEhhcmR3YXJlV2luZGVyLnByb3RvGhlIYXJkd2FyZVNwZWVk",
- "U2Vuc29yLnByb3RvIusCChVIYXJkd2FyZUNvbmZpZ3VyYXRpb24SMwoHRGFu",
- "Y2VycxgBIAMoCzIiLlRhbmdvLlBNUi5IYXJkd2FyZS5IYXJkd2FyZURhbmNl",
- "chI5CgpEaXNwZW5zZXJzGAIgAygLMiUuVGFuZ28uUE1SLkhhcmR3YXJlLkhh",
- "cmR3YXJlRGlzcGVuc2VyEjEKBk1vdG9ycxgDIAMoCzIhLlRhbmdvLlBNUi5I",
- "YXJkd2FyZS5IYXJkd2FyZU1vdG9yEjsKC1BpZENvbnRyb2xzGAQgAygLMiYu",
- "VGFuZ28uUE1SLkhhcmR3YXJlLkhhcmR3YXJlUGlkQ29udHJvbBIzCgdXaW5k",
- "ZXJzGAUgAygLMiIuVGFuZ28uUE1SLkhhcmR3YXJlLkhhcmR3YXJlV2luZGVy",
- "Ej0KDFNwZWVkU2Vuc29ycxgGIAMoCzInLlRhbmdvLlBNUi5IYXJkd2FyZS5I",
- "YXJkd2FyZVNwZWVkU2Vuc29yQh4KHGNvbS50d2luZS50YW5nby5wbXIuaGFy",
- "ZHdhcmViBnByb3RvMw=="));
+ "U2Vuc29yLnByb3RvGhRIYXJkd2FyZUJsb3dlci5wcm90bxoZSGFyZHdhcmVC",
+ "cmVha1NlbnNvci5wcm90byLfAwoVSGFyZHdhcmVDb25maWd1cmF0aW9uEjMK",
+ "B0RhbmNlcnMYASADKAsyIi5UYW5nby5QTVIuSGFyZHdhcmUuSGFyZHdhcmVE",
+ "YW5jZXISOQoKRGlzcGVuc2VycxgCIAMoCzIlLlRhbmdvLlBNUi5IYXJkd2Fy",
+ "ZS5IYXJkd2FyZURpc3BlbnNlchIxCgZNb3RvcnMYAyADKAsyIS5UYW5nby5Q",
+ "TVIuSGFyZHdhcmUuSGFyZHdhcmVNb3RvchI7CgtQaWRDb250cm9scxgEIAMo",
+ "CzImLlRhbmdvLlBNUi5IYXJkd2FyZS5IYXJkd2FyZVBpZENvbnRyb2wSMwoH",
+ "V2luZGVycxgFIAMoCzIiLlRhbmdvLlBNUi5IYXJkd2FyZS5IYXJkd2FyZVdp",
+ "bmRlchI9CgxTcGVlZFNlbnNvcnMYBiADKAsyJy5UYW5nby5QTVIuSGFyZHdh",
+ "cmUuSGFyZHdhcmVTcGVlZFNlbnNvchIzCgdCbG93ZXJzGAcgAygLMiIuVGFu",
+ "Z28uUE1SLkhhcmR3YXJlLkhhcmR3YXJlQmxvd2VyEj0KDEJyZWFrU2Vuc29y",
+ "cxgIIAMoCzInLlRhbmdvLlBNUi5IYXJkd2FyZS5IYXJkd2FyZUJyZWFrU2Vu",
+ "c29yQh4KHGNvbS50d2luZS50YW5nby5wbXIuaGFyZHdhcmViBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
- new pbr::FileDescriptor[] { global::Tango.PMR.Hardware.HardwareDancerReflection.Descriptor, global::Tango.PMR.Hardware.HardwareDispenserReflection.Descriptor, global::Tango.PMR.Hardware.HardwareMotorReflection.Descriptor, global::Tango.PMR.Hardware.HardwarePidControlReflection.Descriptor, global::Tango.PMR.Hardware.HardwareWinderReflection.Descriptor, global::Tango.PMR.Hardware.HardwareSpeedSensorReflection.Descriptor, },
+ new pbr::FileDescriptor[] { global::Tango.PMR.Hardware.HardwareDancerReflection.Descriptor, global::Tango.PMR.Hardware.HardwareDispenserReflection.Descriptor, global::Tango.PMR.Hardware.HardwareMotorReflection.Descriptor, global::Tango.PMR.Hardware.HardwarePidControlReflection.Descriptor, global::Tango.PMR.Hardware.HardwareWinderReflection.Descriptor, global::Tango.PMR.Hardware.HardwareSpeedSensorReflection.Descriptor, global::Tango.PMR.Hardware.HardwareBlowerReflection.Descriptor, global::Tango.PMR.Hardware.HardwareBreakSensorReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
- new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Hardware.HardwareConfiguration), global::Tango.PMR.Hardware.HardwareConfiguration.Parser, new[]{ "Dancers", "Dispensers", "Motors", "PidControls", "Winders", "SpeedSensors" }, null, null, null)
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Hardware.HardwareConfiguration), global::Tango.PMR.Hardware.HardwareConfiguration.Parser, new[]{ "Dancers", "Dispensers", "Motors", "PidControls", "Winders", "SpeedSensors", "Blowers", "BreakSensors" }, null, null, null)
}));
}
#endregion
@@ -76,6 +79,8 @@ namespace Tango.PMR.Hardware {
pidControls_ = other.pidControls_.Clone();
winders_ = other.winders_.Clone();
speedSensors_ = other.speedSensors_.Clone();
+ blowers_ = other.blowers_.Clone();
+ breakSensors_ = other.breakSensors_.Clone();
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -143,6 +148,26 @@ namespace Tango.PMR.Hardware {
get { return speedSensors_; }
}
+ /// <summary>Field number for the "Blowers" field.</summary>
+ public const int BlowersFieldNumber = 7;
+ private static readonly pb::FieldCodec<global::Tango.PMR.Hardware.HardwareBlower> _repeated_blowers_codec
+ = pb::FieldCodec.ForMessage(58, global::Tango.PMR.Hardware.HardwareBlower.Parser);
+ private readonly pbc::RepeatedField<global::Tango.PMR.Hardware.HardwareBlower> blowers_ = new pbc::RepeatedField<global::Tango.PMR.Hardware.HardwareBlower>();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField<global::Tango.PMR.Hardware.HardwareBlower> Blowers {
+ get { return blowers_; }
+ }
+
+ /// <summary>Field number for the "BreakSensors" field.</summary>
+ public const int BreakSensorsFieldNumber = 8;
+ private static readonly pb::FieldCodec<global::Tango.PMR.Hardware.HardwareBreakSensor> _repeated_breakSensors_codec
+ = pb::FieldCodec.ForMessage(66, global::Tango.PMR.Hardware.HardwareBreakSensor.Parser);
+ private readonly pbc::RepeatedField<global::Tango.PMR.Hardware.HardwareBreakSensor> breakSensors_ = new pbc::RepeatedField<global::Tango.PMR.Hardware.HardwareBreakSensor>();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField<global::Tango.PMR.Hardware.HardwareBreakSensor> BreakSensors {
+ get { return breakSensors_; }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as HardwareConfiguration);
@@ -162,6 +187,8 @@ namespace Tango.PMR.Hardware {
if(!pidControls_.Equals(other.pidControls_)) return false;
if(!winders_.Equals(other.winders_)) return false;
if(!speedSensors_.Equals(other.speedSensors_)) return false;
+ if(!blowers_.Equals(other.blowers_)) return false;
+ if(!breakSensors_.Equals(other.breakSensors_)) return false;
return true;
}
@@ -174,6 +201,8 @@ namespace Tango.PMR.Hardware {
hash ^= pidControls_.GetHashCode();
hash ^= winders_.GetHashCode();
hash ^= speedSensors_.GetHashCode();
+ hash ^= blowers_.GetHashCode();
+ hash ^= breakSensors_.GetHashCode();
return hash;
}
@@ -190,6 +219,8 @@ namespace Tango.PMR.Hardware {
pidControls_.WriteTo(output, _repeated_pidControls_codec);
winders_.WriteTo(output, _repeated_winders_codec);
speedSensors_.WriteTo(output, _repeated_speedSensors_codec);
+ blowers_.WriteTo(output, _repeated_blowers_codec);
+ breakSensors_.WriteTo(output, _repeated_breakSensors_codec);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -201,6 +232,8 @@ namespace Tango.PMR.Hardware {
size += pidControls_.CalculateSize(_repeated_pidControls_codec);
size += winders_.CalculateSize(_repeated_winders_codec);
size += speedSensors_.CalculateSize(_repeated_speedSensors_codec);
+ size += blowers_.CalculateSize(_repeated_blowers_codec);
+ size += breakSensors_.CalculateSize(_repeated_breakSensors_codec);
return size;
}
@@ -215,6 +248,8 @@ namespace Tango.PMR.Hardware {
pidControls_.Add(other.pidControls_);
winders_.Add(other.winders_);
speedSensors_.Add(other.speedSensors_);
+ blowers_.Add(other.blowers_);
+ breakSensors_.Add(other.breakSensors_);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -249,6 +284,14 @@ namespace Tango.PMR.Hardware {
speedSensors_.AddEntriesFrom(input, _repeated_speedSensors_codec);
break;
}
+ case 58: {
+ blowers_.AddEntriesFrom(input, _repeated_blowers_codec);
+ break;
+ }
+ case 66: {
+ breakSensors_.AddEntriesFrom(input, _repeated_breakSensors_codec);
+ break;
+ }
}
}
}
diff --git a/Software/Visual_Studio/Utilities/Tango.PMRGenerator.CLI/Program.cs b/Software/Visual_Studio/Utilities/Tango.PMRGenerator.CLI/Program.cs
index c96b94dad..e3e225bbb 100644
--- a/Software/Visual_Studio/Utilities/Tango.PMRGenerator.CLI/Program.cs
+++ b/Software/Visual_Studio/Utilities/Tango.PMRGenerator.CLI/Program.cs
@@ -319,9 +319,9 @@ namespace Tango.PMRGenerator.CLI
messageFile.Properties.Add(new ProtoProperty("HardwareBlowerType", "HardwareBlowerType"));
- foreach (var prop in typeof(HardwareBlowerType).GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly).Where(x => x.PropertyType.IsPrimitive))
+ foreach (var prop in typeof(HardwareBlower).GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly).Where(x => x.PropertyType.IsPrimitive))
{
- messageFile.Properties.Add(new ProtoProperty(prop.Name, CoercePropertyType(prop.PropertyType), GetDbDescription<HardwareBlowerType>(prop)));
+ messageFile.Properties.Add(new ProtoProperty(prop.Name, CoercePropertyType(prop.PropertyType), GetDbDescription<HardwareBlower>(prop)));
}
String enumString = enumFile.GenerateCode();