aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2018-06-15 15:22:11 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2018-06-15 15:22:11 +0300
commit84700eb44cffe4b503a9ad22b1dfa8c703f356d2 (patch)
tree53b152ffd2e2ac09d4e30e72c26cb9441049ce9b /Software/Visual_Studio
parent52da473c1a7bf1f3e1c3d7690f980d5afdc3f960 (diff)
downloadTango-84700eb44cffe4b503a9ad22b1dfa8c703f356d2.tar.gz
Tango-84700eb44cffe4b503a9ad22b1dfa8c703f356d2.zip
Improved LightTouchDataGrid Selection.
Diffstat (limited to 'Software/Visual_Studio')
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobsView.xaml6
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Styles.xaml2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/MainWindow.xaml8
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/MainWindow.xaml.cs12
-rw-r--r--Software/Visual_Studio/SideChains/RealTimeGraphEx/DirectXGraphs/RealTimeGraphExDirectXLineScroll.cs11
-rw-r--r--Software/Visual_Studio/SideChains/RealTimeGraphEx/ReachGraphs/RealTimeGraphExReachLineScroll.cs11
-rw-r--r--Software/Visual_Studio/SideChains/RealTimeGraphEx/WriteableBitmap/WriteableBitmapBlitExtensions.cs2
-rw-r--r--Software/Visual_Studio/Tango.PMR/Common/MessageType.cs100
-rw-r--r--Software/Visual_Studio/Tango.PMR/Stubs/StubI2CReadBytesRequest.cs218
-rw-r--r--Software/Visual_Studio/Tango.PMR/Stubs/StubI2CReadBytesResponse.cs274
-rw-r--r--Software/Visual_Studio/Tango.PMR/Stubs/StubI2CResponse.cs14
-rw-r--r--Software/Visual_Studio/Tango.PMR/Stubs/StubI2CWriteBytesRequest.cs211
-rw-r--r--Software/Visual_Studio/Tango.PMR/Stubs/StubI2CWriteBytesResponse.cs253
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/LightTouchDataGrid.cs3
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/LightTouchDataGrid.xaml52
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/LightTouchDataGridRow.cs10
-rw-r--r--Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj3
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/App_Data/Tango.dbbin430080 -> 12124160 bytes
18 files changed, 1088 insertions, 102 deletions
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobsView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobsView.xaml
index dd76d0ed5..1686aef84 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobsView.xaml
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobsView.xaml
@@ -60,7 +60,7 @@
<Grid Grid.Row="1">
<touch:LightTouchDataGrid x:Name="dataGridJobs" OnDragAndDropCommand="{Binding JobDragedDroppedCommand}" ItemsSource="{Binding JobsCollectionView}" ItemSelectedCommand="{Binding JobSelectedCommand}" Margin="10">
<touch:LightTouchDataGrid.Columns>
- <touch:LightTouchDataGridColumn>
+ <touch:LightTouchDataGridColumn Width="50">
<touch:LightTouchDataGridColumn.Header>
<Image Source="../Images/warning.png" Width="24" />
</touch:LightTouchDataGridColumn.Header>
@@ -70,14 +70,14 @@
</DataTemplate>
</touch:LightTouchDataGridColumn.CellTemplate>
</touch:LightTouchDataGridColumn>
- <touch:LightTouchDataGridColumn Width="90" Header="Status" SortMember="JobStatus">
+ <touch:LightTouchDataGridColumn Width="100" Header="Status" SortMember="JobStatus">
<touch:LightTouchDataGridColumn.CellTemplate>
<DataTemplate>
<TextBlock IsHitTestVisible="False" Text="{Binding JobStatus,Converter={StaticResource EnumToDescriptionConverter}}"></TextBlock>
</DataTemplate>
</touch:LightTouchDataGridColumn.CellTemplate>
</touch:LightTouchDataGridColumn>
- <touch:LightTouchDataGridColumn Width="240" Header="Name" SortMember="Name">
+ <touch:LightTouchDataGridColumn Width="1*" Header="Name" SortMember="Name" HorizontalContentAlignment="Left">
<touch:LightTouchDataGridColumn.CellTemplate>
<DataTemplate>
<TextBlock IsHitTestVisible="False" Text="{Binding Name}"></TextBlock>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Styles.xaml b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Styles.xaml
index 5ffaa4c80..57eb78a52 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Styles.xaml
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Styles.xaml
@@ -8,7 +8,7 @@
<Setter Property="Background" Value="{StaticResource TangoMidAccentBrush}"></Setter>
<Setter Property="Foreground" Value="{StaticResource TangoLightForegroundBrush}"></Setter>
<Setter Property="BorderThickness" Value="1"></Setter>
- <Setter Property="BorderBrush" Value="{StaticResource TangoLightBorderBrush}"></Setter>
+ <Setter Property="BorderBrush" Value="{StaticResource TangoLowerAccentBrush}"></Setter>
<Setter Property="Height" Value="68"></Setter>
<Setter Property="Margin" Value="5 0 5 5"></Setter>
<Setter Property="CornerRadius" Value="5"></Setter>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/MainWindow.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/MainWindow.xaml
index 289d0cdf2..cabd05265 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/MainWindow.xaml
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/MainWindow.xaml
@@ -6,15 +6,11 @@
xmlns:local="clr-namespace:Tango.PPC.UI"
xmlns:views="clr-namespace:Tango.PPC.UI.Views"
mc:Ignorable="d"
- Title="MainWindow" Height="1000" Stylus.IsTapFeedbackEnabled="False" Stylus.IsPressAndHoldEnabled="False" Stylus.IsTouchFeedbackEnabled="False" Width="625" WindowStyle="None" ResizeMode="NoResize"
+ Title="MainWindow" Height="1000" Stylus.IsTapFeedbackEnabled="False" Stylus.IsPressAndHoldEnabled="False" Stylus.IsTouchFeedbackEnabled="False" Width="800" WindowStyle="SingleBorderWindow" ResizeMode="CanResize" WindowStartupLocation="CenterScreen"
FontFamily="{StaticResource TangoFlexoFontFamily}"
FontSize="{StaticResource TangoDefaultFontSize}"
Foreground="{StaticResource TangoDarkForegroundBrush}">
<Grid>
- <Viewbox Stretch="Fill">
- <Grid Height="1280" Width="800">
- <views:MainView/>
- </Grid>
- </Viewbox>
+ <views:MainView/>
</Grid>
</Window>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/MainWindow.xaml.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/MainWindow.xaml.cs
index 42ea21123..26fe06c5f 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/MainWindow.xaml.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/MainWindow.xaml.cs
@@ -29,12 +29,12 @@ namespace Tango.PPC.UI
InitializeComponent();
- WindowStartupLocation = WindowStartupLocation.Manual;
- var lastMonitor = Screen.AllScreens.LastOrDefault();
- Left = lastMonitor.Bounds.Left;
- Top = lastMonitor.Bounds.Top;
- Width = lastMonitor.Bounds.Width;
- Height = lastMonitor.Bounds.Height;
+ //WindowStartupLocation = WindowStartupLocation.Manual;
+ //var lastMonitor = Screen.AllScreens.LastOrDefault();
+ //Left = lastMonitor.Bounds.Left;
+ //Top = lastMonitor.Bounds.Top;
+ //Width = lastMonitor.Bounds.Width;
+ //Height = lastMonitor.Bounds.Height;
}
}
}
diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphEx/DirectXGraphs/RealTimeGraphExDirectXLineScroll.cs b/Software/Visual_Studio/SideChains/RealTimeGraphEx/DirectXGraphs/RealTimeGraphExDirectXLineScroll.cs
index e85d56a4d..0d1284c19 100644
--- a/Software/Visual_Studio/SideChains/RealTimeGraphEx/DirectXGraphs/RealTimeGraphExDirectXLineScroll.cs
+++ b/Software/Visual_Studio/SideChains/RealTimeGraphEx/DirectXGraphs/RealTimeGraphExDirectXLineScroll.cs
@@ -45,17 +45,6 @@ namespace RealTimeGraphEx.DirectXGraphs
#region Properties
- /// <summary>
- /// Gets or sets the maximum vectorsCollection to display on the graph (default 1000, affects performance).
- /// </summary>
- public int MaxPoints
- {
- get { return (int)GetValue(MaxPointsProperty); }
- set { SetValue(MaxPointsProperty, value); }
- }
- public static readonly DependencyProperty MaxPointsProperty =
- DependencyProperty.Register("MaxPoints", typeof(int), typeof(RealTimeGraphExDirectXLineScroll), new PropertyMetadata(1000, new PropertyChangedCallback(CrossModelChanged)));
-
/// <summary>
/// Gets or sets the graph fill color.
diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphEx/ReachGraphs/RealTimeGraphExReachLineScroll.cs b/Software/Visual_Studio/SideChains/RealTimeGraphEx/ReachGraphs/RealTimeGraphExReachLineScroll.cs
index 77ac77479..d4026f7c3 100644
--- a/Software/Visual_Studio/SideChains/RealTimeGraphEx/ReachGraphs/RealTimeGraphExReachLineScroll.cs
+++ b/Software/Visual_Studio/SideChains/RealTimeGraphEx/ReachGraphs/RealTimeGraphExReachLineScroll.cs
@@ -37,17 +37,6 @@ namespace RealTimeGraphEx.ReachGraphs
#region Properties
/// <summary>
- /// Gets or sets the maximum points to display on the graph (default 1000, affects performance).
- /// </summary>
- public int MaxPoints
- {
- get { return (int)GetValue(MaxPointsProperty); }
- set { SetValue(MaxPointsProperty, value); }
- }
- public static readonly DependencyProperty MaxPointsProperty =
- DependencyProperty.Register("MaxPoints", typeof(int), typeof(RealTimeGraphExReachLineScroll), new PropertyMetadata(1000, new PropertyChangedCallback(CrossModelChanged)));
-
- /// <summary>
/// Gets or sets the graph strokes color.
/// </summary>
public Brush Stroke
diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphEx/WriteableBitmap/WriteableBitmapBlitExtensions.cs b/Software/Visual_Studio/SideChains/RealTimeGraphEx/WriteableBitmap/WriteableBitmapBlitExtensions.cs
index 4219983d2..f52b515b8 100644
--- a/Software/Visual_Studio/SideChains/RealTimeGraphEx/WriteableBitmap/WriteableBitmapBlitExtensions.cs
+++ b/Software/Visual_Studio/SideChains/RealTimeGraphEx/WriteableBitmap/WriteableBitmapBlitExtensions.cs
@@ -382,8 +382,6 @@ namespace System.Windows.Media.Imaging
internal static void Blit(BitmapContext destContext, int dpw, int dph, Rect destRect, BitmapContext srcContext, Rect sourceRect, int sourceWidth)
{
- const BlendMode blendMode = BlendMode.Alpha;
-
int dw = (int)destRect.Width;
int dh = (int)destRect.Height;
diff --git a/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs b/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs
index 69f27e180..de184cee7 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(
- "ChFNZXNzYWdlVHlwZS5wcm90bxIQVGFuZ28uUE1SLkNvbW1vbirXIgoLTWVz",
+ "ChFNZXNzYWdlVHlwZS5wcm90bxIQVGFuZ28uUE1SLkNvbW1vbirPIwoLTWVz",
"c2FnZVR5cGUSCAoETm9uZRAAEhEKDUVycm9yUmVzcG9uc2UQARIUChBDYWxj",
"dWxhdGVSZXF1ZXN0EAMSFQoRQ2FsY3VsYXRlUmVzcG9uc2UQBBITCg9Qcm9n",
"cmVzc1JlcXVlc3QQBRIUChBQcm9ncmVzc1Jlc3BvbnNlEAYSHAoYU3R1YkNh",
@@ -79,50 +79,53 @@ namespace Tango.PMR.Common {
"bFRpbWVVc2FnZVJlcXVlc3QQVRIdChlTdHViUmVhbFRpbWVVc2FnZVJlc3Bv",
"bnNlEFYSGQoVU3R1YkludEFEQ1JlYWRSZXF1ZXN0EFcSGgoWU3R1YkludEFE",
"Q1JlYWRSZXNwb25zZRBYEhkKFVN0dWJUZW1wU2Vuc29yUmVxdWVzdBBZEhoK",
- "FlN0dWJUZW1wU2Vuc29yUmVzcG9uc2UQWhIlCiBFeHRlcm5hbEJyaWRnZVVk",
- "cERpc2NvdmVyeVBhY2tldBDoBxIfChpFeHRlcm5hbENsaWVudExvZ2luUmVx",
- "dWVzdBDpBxIgChtFeHRlcm5hbENsaWVudExvZ2luUmVzcG9uc2UQ6gcSIQoc",
- "RGlyZWN0U3luY2hyb25pemF0aW9uUmVxdWVzdBDrBxIiCh1EaXJlY3RTeW5j",
- "aHJvbml6YXRpb25SZXNwb25zZRDsBxIcChdPdmVycmlkZURhdGFCYXNlUmVx",
- "dWVzdBDtBxIdChhPdmVycmlkZURhdGFCYXNlUmVzcG9uc2UQ7gcSHAoXU3Rh",
- "cnREaWFnbm9zdGljc1JlcXVlc3QQ0A8SHQoYU3RhcnREaWFnbm9zdGljc1Jl",
- "c3BvbnNlENEPEhwKF01vdG9yQWJvcnRIb21pbmdSZXF1ZXN0ENIPEh0KGE1v",
- "dG9yQWJvcnRIb21pbmdSZXNwb25zZRDTDxIXChJNb3RvckhvbWluZ1JlcXVl",
- "c3QQ1A8SGAoTTW90b3JIb21pbmdSZXNwb25zZRDVDxIYChNNb3RvckpvZ2dp",
- "bmdSZXF1ZXN0ENYPEhkKFE1vdG9ySm9nZ2luZ1Jlc3BvbnNlENcPEh0KGE1v",
- "dG9yQWJvcnRKb2dnaW5nUmVxdWVzdBDYDxIeChlNb3RvckFib3J0Sm9nZ2lu",
- "Z1Jlc3BvbnNlENkPEiAKG0Rpc3BlbnNlckFib3J0SG9taW5nUmVxdWVzdBDa",
- "DxIhChxEaXNwZW5zZXJBYm9ydEhvbWluZ1Jlc3BvbnNlENsPEhsKFkRpc3Bl",
- "bnNlckhvbWluZ1JlcXVlc3QQ3A8SHAoXRGlzcGVuc2VySG9taW5nUmVzcG9u",
- "c2UQ3Q8SHAoXRGlzcGVuc2VySm9nZ2luZ1JlcXVlc3QQ3g8SHQoYRGlzcGVu",
- "c2VySm9nZ2luZ1Jlc3BvbnNlEN8PEiEKHERpc3BlbnNlckFib3J0Sm9nZ2lu",
- "Z1JlcXVlc3QQ4A8SIgodRGlzcGVuc2VyQWJvcnRKb2dnaW5nUmVzcG9uc2UQ",
- "4Q8SGQoUU2V0RGlnaXRhbE91dFJlcXVlc3QQ4g8SGgoVU2V0RGlnaXRhbE91",
- "dFJlc3BvbnNlEOMPEhkKFFRocmVhZEpvZ2dpbmdSZXF1ZXN0EOQPEhoKFVRo",
- "cmVhZEpvZ2dpbmdSZXNwb25zZRDlDxIeChlUaHJlYWRBYm9ydEpvZ2dpbmdS",
- "ZXF1ZXN0EOYPEh8KGlRocmVhZEFib3J0Sm9nZ2luZ1Jlc3BvbnNlEOcPEh0K",
- "GFNldENvbXBvbmVudFZhbHVlUmVxdWVzdBDoDxIeChlTZXRDb21wb25lbnRW",
- "YWx1ZVJlc3BvbnNlEOkPEhgKE1Jlc29sdmVFdmVudFJlcXVlc3QQ6g8SGQoU",
- "UmVzb2x2ZUV2ZW50UmVzcG9uc2UQ6w8SGwoWU3RvcERpYWdub3N0aWNzUmVx",
- "dWVzdBDsDxIcChdTdG9wRGlhZ25vc3RpY3NSZXNwb25zZRDtDxIPCgpKb2JS",
- "ZXF1ZXN0ELgXEhAKC0pvYlJlc3BvbnNlELkXEhQKD0Fib3J0Sm9iUmVxdWVz",
- "dBC6FxIVChBBYm9ydEpvYlJlc3BvbnNlELsXEiMKHlVwbG9hZFByb2Nlc3NQ",
- "YXJhbWV0ZXJzUmVxdWVzdBC8FxIkCh9VcGxvYWRQcm9jZXNzUGFyYW1ldGVy",
- "c1Jlc3BvbnNlEL0XEhkKFFN0YXJ0RGVidWdMb2dSZXF1ZXN0EKAfEhoKFVN0",
- "YXJ0RGVidWdMb2dSZXNwb25zZRChHxIYChNTdG9wRGVidWdMb2dSZXF1ZXN0",
- "EKIfEhkKFFN0b3BEZWJ1Z0xvZ1Jlc3BvbnNlEKMfEicKIlVwbG9hZEhhcmR3",
- "YXJlQ29uZmlndXJhdGlvblJlcXVlc3QQiCcSKAojVXBsb2FkSGFyZHdhcmVD",
- "b25maWd1cmF0aW9uUmVzcG9uc2UQiScSFwoSU3lzdGVtUmVzZXRSZXF1ZXN0",
- "EIonEhgKE1N5c3RlbVJlc2V0UmVzcG9uc2UQiycSFQoQS2VlcEFsaXZlUmVx",
- "dWVzdBDwLhIWChFLZWVwQWxpdmVSZXNwb25zZRDxLhITCg5Db25uZWN0UmVx",
- "dWVzdBDyLhIUCg9Db25uZWN0UmVzcG9uc2UQ8y4SFgoRRGlzY29ubmVjdFJl",
- "cXVlc3QQ9C4SFwoSRGlzY29ubmVjdFJlc3BvbnNlEPUuEhYKEUZpbGVVcGxv",
- "YWRSZXF1ZXN0ENg2EhcKEkZpbGVVcGxvYWRSZXNwb25zZRDZNhIbChZGaWxl",
- "Q2h1bmtVcGxvYWRSZXF1ZXN0ENo2EhwKF0ZpbGVDaHVua1VwbG9hZFJlc3Bv",
- "bnNlENs2EhoKFUV4ZWN1dGVQcm9jZXNzUmVxdWVzdBDcNhIbChZFeGVjdXRl",
- "UHJvY2Vzc1Jlc3BvbnNlEN02EhcKEktpbGxQcm9jZXNzUmVxdWVzdBDeNhIY",
- "ChNLaWxsUHJvY2Vzc1Jlc3BvbnNlEN82QhwKGmNvbS50d2luZS50YW5nby5w",
- "bXIuY29tbW9uYgZwcm90bzM="));
+ "FlN0dWJUZW1wU2Vuc29yUmVzcG9uc2UQWhIbChdTdHViSTJDUmVhZEJ5dGVz",
+ "UmVxdWVzdBBbEhwKGFN0dWJJMkNSZWFkQnl0ZXNSZXNwb25zZRBcEhwKGFN0",
+ "dWJJMkNXcml0ZUJ5dGVzUmVxdWVzdBBdEh0KGVN0dWJJMkNXcml0ZUJ5dGVz",
+ "UmVzcG9uc2UQXhIlCiBFeHRlcm5hbEJyaWRnZVVkcERpc2NvdmVyeVBhY2tl",
+ "dBDoBxIfChpFeHRlcm5hbENsaWVudExvZ2luUmVxdWVzdBDpBxIgChtFeHRl",
+ "cm5hbENsaWVudExvZ2luUmVzcG9uc2UQ6gcSIQocRGlyZWN0U3luY2hyb25p",
+ "emF0aW9uUmVxdWVzdBDrBxIiCh1EaXJlY3RTeW5jaHJvbml6YXRpb25SZXNw",
+ "b25zZRDsBxIcChdPdmVycmlkZURhdGFCYXNlUmVxdWVzdBDtBxIdChhPdmVy",
+ "cmlkZURhdGFCYXNlUmVzcG9uc2UQ7gcSHAoXU3RhcnREaWFnbm9zdGljc1Jl",
+ "cXVlc3QQ0A8SHQoYU3RhcnREaWFnbm9zdGljc1Jlc3BvbnNlENEPEhwKF01v",
+ "dG9yQWJvcnRIb21pbmdSZXF1ZXN0ENIPEh0KGE1vdG9yQWJvcnRIb21pbmdS",
+ "ZXNwb25zZRDTDxIXChJNb3RvckhvbWluZ1JlcXVlc3QQ1A8SGAoTTW90b3JI",
+ "b21pbmdSZXNwb25zZRDVDxIYChNNb3RvckpvZ2dpbmdSZXF1ZXN0ENYPEhkK",
+ "FE1vdG9ySm9nZ2luZ1Jlc3BvbnNlENcPEh0KGE1vdG9yQWJvcnRKb2dnaW5n",
+ "UmVxdWVzdBDYDxIeChlNb3RvckFib3J0Sm9nZ2luZ1Jlc3BvbnNlENkPEiAK",
+ "G0Rpc3BlbnNlckFib3J0SG9taW5nUmVxdWVzdBDaDxIhChxEaXNwZW5zZXJB",
+ "Ym9ydEhvbWluZ1Jlc3BvbnNlENsPEhsKFkRpc3BlbnNlckhvbWluZ1JlcXVl",
+ "c3QQ3A8SHAoXRGlzcGVuc2VySG9taW5nUmVzcG9uc2UQ3Q8SHAoXRGlzcGVu",
+ "c2VySm9nZ2luZ1JlcXVlc3QQ3g8SHQoYRGlzcGVuc2VySm9nZ2luZ1Jlc3Bv",
+ "bnNlEN8PEiEKHERpc3BlbnNlckFib3J0Sm9nZ2luZ1JlcXVlc3QQ4A8SIgod",
+ "RGlzcGVuc2VyQWJvcnRKb2dnaW5nUmVzcG9uc2UQ4Q8SGQoUU2V0RGlnaXRh",
+ "bE91dFJlcXVlc3QQ4g8SGgoVU2V0RGlnaXRhbE91dFJlc3BvbnNlEOMPEhkK",
+ "FFRocmVhZEpvZ2dpbmdSZXF1ZXN0EOQPEhoKFVRocmVhZEpvZ2dpbmdSZXNw",
+ "b25zZRDlDxIeChlUaHJlYWRBYm9ydEpvZ2dpbmdSZXF1ZXN0EOYPEh8KGlRo",
+ "cmVhZEFib3J0Sm9nZ2luZ1Jlc3BvbnNlEOcPEh0KGFNldENvbXBvbmVudFZh",
+ "bHVlUmVxdWVzdBDoDxIeChlTZXRDb21wb25lbnRWYWx1ZVJlc3BvbnNlEOkP",
+ "EhgKE1Jlc29sdmVFdmVudFJlcXVlc3QQ6g8SGQoUUmVzb2x2ZUV2ZW50UmVz",
+ "cG9uc2UQ6w8SGwoWU3RvcERpYWdub3N0aWNzUmVxdWVzdBDsDxIcChdTdG9w",
+ "RGlhZ25vc3RpY3NSZXNwb25zZRDtDxIPCgpKb2JSZXF1ZXN0ELgXEhAKC0pv",
+ "YlJlc3BvbnNlELkXEhQKD0Fib3J0Sm9iUmVxdWVzdBC6FxIVChBBYm9ydEpv",
+ "YlJlc3BvbnNlELsXEiMKHlVwbG9hZFByb2Nlc3NQYXJhbWV0ZXJzUmVxdWVz",
+ "dBC8FxIkCh9VcGxvYWRQcm9jZXNzUGFyYW1ldGVyc1Jlc3BvbnNlEL0XEhkK",
+ "FFN0YXJ0RGVidWdMb2dSZXF1ZXN0EKAfEhoKFVN0YXJ0RGVidWdMb2dSZXNw",
+ "b25zZRChHxIYChNTdG9wRGVidWdMb2dSZXF1ZXN0EKIfEhkKFFN0b3BEZWJ1",
+ "Z0xvZ1Jlc3BvbnNlEKMfEicKIlVwbG9hZEhhcmR3YXJlQ29uZmlndXJhdGlv",
+ "blJlcXVlc3QQiCcSKAojVXBsb2FkSGFyZHdhcmVDb25maWd1cmF0aW9uUmVz",
+ "cG9uc2UQiScSFwoSU3lzdGVtUmVzZXRSZXF1ZXN0EIonEhgKE1N5c3RlbVJl",
+ "c2V0UmVzcG9uc2UQiycSFQoQS2VlcEFsaXZlUmVxdWVzdBDwLhIWChFLZWVw",
+ "QWxpdmVSZXNwb25zZRDxLhITCg5Db25uZWN0UmVxdWVzdBDyLhIUCg9Db25u",
+ "ZWN0UmVzcG9uc2UQ8y4SFgoRRGlzY29ubmVjdFJlcXVlc3QQ9C4SFwoSRGlz",
+ "Y29ubmVjdFJlc3BvbnNlEPUuEhYKEUZpbGVVcGxvYWRSZXF1ZXN0ENg2EhcK",
+ "EkZpbGVVcGxvYWRSZXNwb25zZRDZNhIbChZGaWxlQ2h1bmtVcGxvYWRSZXF1",
+ "ZXN0ENo2EhwKF0ZpbGVDaHVua1VwbG9hZFJlc3BvbnNlENs2EhoKFUV4ZWN1",
+ "dGVQcm9jZXNzUmVxdWVzdBDcNhIbChZFeGVjdXRlUHJvY2Vzc1Jlc3BvbnNl",
+ "EN02EhcKEktpbGxQcm9jZXNzUmVxdWVzdBDeNhIYChNLaWxsUHJvY2Vzc1Jl",
+ "c3BvbnNlEN82QhwKGmNvbS50d2luZS50YW5nby5wbXIuY29tbW9uYgZwcm90",
+ "bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.Common.MessageType), }, null));
@@ -230,10 +233,11 @@ namespace Tango.PMR.Common {
[pbr::OriginalName("StubIntADCReadRequest")] StubIntAdcreadRequest = 87,
[pbr::OriginalName("StubIntADCReadResponse")] StubIntAdcreadResponse = 88,
[pbr::OriginalName("StubTempSensorRequest")] StubTempSensorRequest = 89,
- /// <summary>
- ///------------------------------------
- /// </summary>
[pbr::OriginalName("StubTempSensorResponse")] StubTempSensorResponse = 90,
+ [pbr::OriginalName("StubI2CReadBytesRequest")] StubI2CreadBytesRequest = 91,
+ [pbr::OriginalName("StubI2CReadBytesResponse")] StubI2CreadBytesResponse = 92,
+ [pbr::OriginalName("StubI2CWriteBytesRequest")] StubI2CwriteBytesRequest = 93,
+ [pbr::OriginalName("StubI2CWriteBytesResponse")] StubI2CwriteBytesResponse = 94,
/// <summary>
///Integration
/// </summary>
diff --git a/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CReadBytesRequest.cs b/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CReadBytesRequest.cs
new file mode 100644
index 000000000..7f20d8841
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CReadBytesRequest.cs
@@ -0,0 +1,218 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: StubI2CReadBytesRequest.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.Stubs {
+
+ /// <summary>Holder for reflection information generated from StubI2CReadBytesRequest.proto</summary>
+ public static partial class StubI2CReadBytesRequestReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for StubI2CReadBytesRequest.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static StubI2CReadBytesRequestReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Ch1TdHViSTJDUmVhZEJ5dGVzUmVxdWVzdC5wcm90bxIPVGFuZ28uUE1SLlN0",
+ "dWJzIlsKF1N0dWJJMkNSZWFkQnl0ZXNSZXF1ZXN0Eg0KBUkyQ0lkGAEgASgN",
+ "EhQKDFNsYXZlQWRkcmVzcxgCIAEoDRIbChNOdW1iZXJPZkJ5dGVzVG9SZWFk",
+ "GAMgASgNQhsKGWNvbS50d2luZS50YW5nby5wbXIuc3R1YnNiBnByb3RvMw=="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Stubs.StubI2CReadBytesRequest), global::Tango.PMR.Stubs.StubI2CReadBytesRequest.Parser, new[]{ "I2CId", "SlaveAddress", "NumberOfBytesToRead" }, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class StubI2CReadBytesRequest : pb::IMessage<StubI2CReadBytesRequest> {
+ private static readonly pb::MessageParser<StubI2CReadBytesRequest> _parser = new pb::MessageParser<StubI2CReadBytesRequest>(() => new StubI2CReadBytesRequest());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<StubI2CReadBytesRequest> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Stubs.StubI2CReadBytesRequestReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public StubI2CReadBytesRequest() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public StubI2CReadBytesRequest(StubI2CReadBytesRequest other) : this() {
+ i2CId_ = other.i2CId_;
+ slaveAddress_ = other.slaveAddress_;
+ numberOfBytesToRead_ = other.numberOfBytesToRead_;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public StubI2CReadBytesRequest Clone() {
+ return new StubI2CReadBytesRequest(this);
+ }
+
+ /// <summary>Field number for the "I2CId" field.</summary>
+ public const int I2CIdFieldNumber = 1;
+ private uint i2CId_;
+ /// <summary>
+ /// </summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public uint I2CId {
+ get { return i2CId_; }
+ set {
+ i2CId_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "SlaveAddress" field.</summary>
+ public const int SlaveAddressFieldNumber = 2;
+ private uint slaveAddress_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public uint SlaveAddress {
+ get { return slaveAddress_; }
+ set {
+ slaveAddress_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "NumberOfBytesToRead" field.</summary>
+ public const int NumberOfBytesToReadFieldNumber = 3;
+ private uint numberOfBytesToRead_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public uint NumberOfBytesToRead {
+ get { return numberOfBytesToRead_; }
+ set {
+ numberOfBytesToRead_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as StubI2CReadBytesRequest);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(StubI2CReadBytesRequest other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (I2CId != other.I2CId) return false;
+ if (SlaveAddress != other.SlaveAddress) return false;
+ if (NumberOfBytesToRead != other.NumberOfBytesToRead) return false;
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (I2CId != 0) hash ^= I2CId.GetHashCode();
+ if (SlaveAddress != 0) hash ^= SlaveAddress.GetHashCode();
+ if (NumberOfBytesToRead != 0) hash ^= NumberOfBytesToRead.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 (I2CId != 0) {
+ output.WriteRawTag(8);
+ output.WriteUInt32(I2CId);
+ }
+ if (SlaveAddress != 0) {
+ output.WriteRawTag(16);
+ output.WriteUInt32(SlaveAddress);
+ }
+ if (NumberOfBytesToRead != 0) {
+ output.WriteRawTag(24);
+ output.WriteUInt32(NumberOfBytesToRead);
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (I2CId != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(I2CId);
+ }
+ if (SlaveAddress != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(SlaveAddress);
+ }
+ if (NumberOfBytesToRead != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(NumberOfBytesToRead);
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(StubI2CReadBytesRequest other) {
+ if (other == null) {
+ return;
+ }
+ if (other.I2CId != 0) {
+ I2CId = other.I2CId;
+ }
+ if (other.SlaveAddress != 0) {
+ SlaveAddress = other.SlaveAddress;
+ }
+ if (other.NumberOfBytesToRead != 0) {
+ NumberOfBytesToRead = other.NumberOfBytesToRead;
+ }
+ }
+
+ [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: {
+ I2CId = input.ReadUInt32();
+ break;
+ }
+ case 16: {
+ SlaveAddress = input.ReadUInt32();
+ break;
+ }
+ case 24: {
+ NumberOfBytesToRead = input.ReadUInt32();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CReadBytesResponse.cs b/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CReadBytesResponse.cs
new file mode 100644
index 000000000..a57b54d22
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CReadBytesResponse.cs
@@ -0,0 +1,274 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: StubI2CReadBytesResponse.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.Stubs {
+
+ /// <summary>Holder for reflection information generated from StubI2CReadBytesResponse.proto</summary>
+ public static partial class StubI2CReadBytesResponseReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for StubI2CReadBytesResponse.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static StubI2CReadBytesResponseReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Ch5TdHViSTJDUmVhZEJ5dGVzUmVzcG9uc2UucHJvdG8SD1RhbmdvLlBNUi5T",
+ "dHVicyJ2ChhTdHViSTJDUmVhZEJ5dGVzUmVzcG9uc2USDQoFSTJDSWQYASAB",
+ "KA0SFAoMU2xhdmVBZGRyZXNzGAIgASgNEhEKCVJlYWRCeXRlcxgDIAMoDRIO",
+ "CgZTdGF0dXMYBCABKAkSEgoKU3RhdHVzV29yZBgFIAEoDUIbChljb20udHdp",
+ "bmUudGFuZ28ucG1yLnN0dWJzYgZwcm90bzM="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Stubs.StubI2CReadBytesResponse), global::Tango.PMR.Stubs.StubI2CReadBytesResponse.Parser, new[]{ "I2CId", "SlaveAddress", "ReadBytes", "Status", "StatusWord" }, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class StubI2CReadBytesResponse : pb::IMessage<StubI2CReadBytesResponse> {
+ private static readonly pb::MessageParser<StubI2CReadBytesResponse> _parser = new pb::MessageParser<StubI2CReadBytesResponse>(() => new StubI2CReadBytesResponse());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<StubI2CReadBytesResponse> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Stubs.StubI2CReadBytesResponseReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public StubI2CReadBytesResponse() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public StubI2CReadBytesResponse(StubI2CReadBytesResponse other) : this() {
+ i2CId_ = other.i2CId_;
+ slaveAddress_ = other.slaveAddress_;
+ readBytes_ = other.readBytes_.Clone();
+ status_ = other.status_;
+ statusWord_ = other.statusWord_;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public StubI2CReadBytesResponse Clone() {
+ return new StubI2CReadBytesResponse(this);
+ }
+
+ /// <summary>Field number for the "I2CId" field.</summary>
+ public const int I2CIdFieldNumber = 1;
+ private uint i2CId_;
+ /// <summary>
+ /// </summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public uint I2CId {
+ get { return i2CId_; }
+ set {
+ i2CId_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "SlaveAddress" field.</summary>
+ public const int SlaveAddressFieldNumber = 2;
+ private uint slaveAddress_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public uint SlaveAddress {
+ get { return slaveAddress_; }
+ set {
+ slaveAddress_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "ReadBytes" field.</summary>
+ public const int ReadBytesFieldNumber = 3;
+ private static readonly pb::FieldCodec<uint> _repeated_readBytes_codec
+ = pb::FieldCodec.ForUInt32(26);
+ private readonly pbc::RepeatedField<uint> readBytes_ = new pbc::RepeatedField<uint>();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField<uint> ReadBytes {
+ get { return readBytes_; }
+ }
+
+ /// <summary>Field number for the "Status" field.</summary>
+ public const int StatusFieldNumber = 4;
+ private string status_ = "";
+ /// <summary>
+ /// Passed/Failed
+ /// </summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string Status {
+ get { return status_; }
+ set {
+ status_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "StatusWord" field.</summary>
+ public const int StatusWordFieldNumber = 5;
+ private uint statusWord_;
+ /// <summary>
+ /// Error number/bit when the status is Failed
+ /// </summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public uint StatusWord {
+ get { return statusWord_; }
+ set {
+ statusWord_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as StubI2CReadBytesResponse);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(StubI2CReadBytesResponse other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (I2CId != other.I2CId) return false;
+ if (SlaveAddress != other.SlaveAddress) return false;
+ if(!readBytes_.Equals(other.readBytes_)) return false;
+ if (Status != other.Status) return false;
+ if (StatusWord != other.StatusWord) return false;
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (I2CId != 0) hash ^= I2CId.GetHashCode();
+ if (SlaveAddress != 0) hash ^= SlaveAddress.GetHashCode();
+ hash ^= readBytes_.GetHashCode();
+ if (Status.Length != 0) hash ^= Status.GetHashCode();
+ if (StatusWord != 0) hash ^= StatusWord.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 (I2CId != 0) {
+ output.WriteRawTag(8);
+ output.WriteUInt32(I2CId);
+ }
+ if (SlaveAddress != 0) {
+ output.WriteRawTag(16);
+ output.WriteUInt32(SlaveAddress);
+ }
+ readBytes_.WriteTo(output, _repeated_readBytes_codec);
+ if (Status.Length != 0) {
+ output.WriteRawTag(34);
+ output.WriteString(Status);
+ }
+ if (StatusWord != 0) {
+ output.WriteRawTag(40);
+ output.WriteUInt32(StatusWord);
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (I2CId != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(I2CId);
+ }
+ if (SlaveAddress != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(SlaveAddress);
+ }
+ size += readBytes_.CalculateSize(_repeated_readBytes_codec);
+ if (Status.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Status);
+ }
+ if (StatusWord != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(StatusWord);
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(StubI2CReadBytesResponse other) {
+ if (other == null) {
+ return;
+ }
+ if (other.I2CId != 0) {
+ I2CId = other.I2CId;
+ }
+ if (other.SlaveAddress != 0) {
+ SlaveAddress = other.SlaveAddress;
+ }
+ readBytes_.Add(other.readBytes_);
+ if (other.Status.Length != 0) {
+ Status = other.Status;
+ }
+ if (other.StatusWord != 0) {
+ StatusWord = other.StatusWord;
+ }
+ }
+
+ [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: {
+ I2CId = input.ReadUInt32();
+ break;
+ }
+ case 16: {
+ SlaveAddress = input.ReadUInt32();
+ break;
+ }
+ case 26:
+ case 24: {
+ readBytes_.AddEntriesFrom(input, _repeated_readBytes_codec);
+ break;
+ }
+ case 34: {
+ Status = input.ReadString();
+ break;
+ }
+ case 40: {
+ StatusWord = input.ReadUInt32();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CResponse.cs b/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CResponse.cs
index 31031d3da..0ee294f27 100644
--- a/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CResponse.cs
+++ b/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CResponse.cs
@@ -24,7 +24,7 @@ namespace Tango.PMR.Stubs {
string.Concat(
"ChVTdHViSTJDUmVzcG9uc2UucHJvdG8SD1RhbmdvLlBNUi5TdHVicyJWCg9T",
"dHViSTJDUmVzcG9uc2USDQoFSTJDSWQYASABKA0SEAoIUmVhZEJ5dGUYAiAB",
- "KA0SDgoGU3RhdHVzGAUgASgJEhIKClN0YXR1c1dvcmQYBiABKA1CGwoZY29t",
+ "KA0SDgoGU3RhdHVzGAMgASgJEhIKClN0YXR1c1dvcmQYBCABKA1CGwoZY29t",
"LnR3aW5lLnRhbmdvLnBtci5zdHVic2IGcHJvdG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
@@ -96,7 +96,7 @@ namespace Tango.PMR.Stubs {
}
/// <summary>Field number for the "Status" field.</summary>
- public const int StatusFieldNumber = 5;
+ public const int StatusFieldNumber = 3;
private string status_ = "";
/// <summary>
/// Passed/Failed
@@ -110,7 +110,7 @@ namespace Tango.PMR.Stubs {
}
/// <summary>Field number for the "StatusWord" field.</summary>
- public const int StatusWordFieldNumber = 6;
+ public const int StatusWordFieldNumber = 4;
private uint statusWord_;
/// <summary>
/// Error number/bit when the status is Failed
@@ -169,11 +169,11 @@ namespace Tango.PMR.Stubs {
output.WriteUInt32(ReadByte);
}
if (Status.Length != 0) {
- output.WriteRawTag(42);
+ output.WriteRawTag(26);
output.WriteString(Status);
}
if (StatusWord != 0) {
- output.WriteRawTag(48);
+ output.WriteRawTag(32);
output.WriteUInt32(StatusWord);
}
}
@@ -231,11 +231,11 @@ namespace Tango.PMR.Stubs {
ReadByte = input.ReadUInt32();
break;
}
- case 42: {
+ case 26: {
Status = input.ReadString();
break;
}
- case 48: {
+ case 32: {
StatusWord = input.ReadUInt32();
break;
}
diff --git a/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CWriteBytesRequest.cs b/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CWriteBytesRequest.cs
new file mode 100644
index 000000000..de44468de
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CWriteBytesRequest.cs
@@ -0,0 +1,211 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: StubI2CWriteBytesRequest.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.Stubs {
+
+ /// <summary>Holder for reflection information generated from StubI2CWriteBytesRequest.proto</summary>
+ public static partial class StubI2CWriteBytesRequestReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for StubI2CWriteBytesRequest.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static StubI2CWriteBytesRequestReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Ch5TdHViSTJDV3JpdGVCeXRlc1JlcXVlc3QucHJvdG8SD1RhbmdvLlBNUi5T",
+ "dHVicyJUChhTdHViSTJDV3JpdGVCeXRlc1JlcXVlc3QSDQoFSTJDSWQYASAB",
+ "KA0SFAoMU2xhdmVBZGRyZXNzGAIgASgNEhMKC0J5dGVzVFdyaXRlGAMgAygN",
+ "QhsKGWNvbS50d2luZS50YW5nby5wbXIuc3R1YnNiBnByb3RvMw=="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Stubs.StubI2CWriteBytesRequest), global::Tango.PMR.Stubs.StubI2CWriteBytesRequest.Parser, new[]{ "I2CId", "SlaveAddress", "BytesTWrite" }, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class StubI2CWriteBytesRequest : pb::IMessage<StubI2CWriteBytesRequest> {
+ private static readonly pb::MessageParser<StubI2CWriteBytesRequest> _parser = new pb::MessageParser<StubI2CWriteBytesRequest>(() => new StubI2CWriteBytesRequest());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<StubI2CWriteBytesRequest> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Stubs.StubI2CWriteBytesRequestReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public StubI2CWriteBytesRequest() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public StubI2CWriteBytesRequest(StubI2CWriteBytesRequest other) : this() {
+ i2CId_ = other.i2CId_;
+ slaveAddress_ = other.slaveAddress_;
+ bytesTWrite_ = other.bytesTWrite_.Clone();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public StubI2CWriteBytesRequest Clone() {
+ return new StubI2CWriteBytesRequest(this);
+ }
+
+ /// <summary>Field number for the "I2CId" field.</summary>
+ public const int I2CIdFieldNumber = 1;
+ private uint i2CId_;
+ /// <summary>
+ /// </summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public uint I2CId {
+ get { return i2CId_; }
+ set {
+ i2CId_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "SlaveAddress" field.</summary>
+ public const int SlaveAddressFieldNumber = 2;
+ private uint slaveAddress_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public uint SlaveAddress {
+ get { return slaveAddress_; }
+ set {
+ slaveAddress_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "BytesTWrite" field.</summary>
+ public const int BytesTWriteFieldNumber = 3;
+ private static readonly pb::FieldCodec<uint> _repeated_bytesTWrite_codec
+ = pb::FieldCodec.ForUInt32(26);
+ private readonly pbc::RepeatedField<uint> bytesTWrite_ = new pbc::RepeatedField<uint>();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField<uint> BytesTWrite {
+ get { return bytesTWrite_; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as StubI2CWriteBytesRequest);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(StubI2CWriteBytesRequest other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (I2CId != other.I2CId) return false;
+ if (SlaveAddress != other.SlaveAddress) return false;
+ if(!bytesTWrite_.Equals(other.bytesTWrite_)) return false;
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (I2CId != 0) hash ^= I2CId.GetHashCode();
+ if (SlaveAddress != 0) hash ^= SlaveAddress.GetHashCode();
+ hash ^= bytesTWrite_.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 (I2CId != 0) {
+ output.WriteRawTag(8);
+ output.WriteUInt32(I2CId);
+ }
+ if (SlaveAddress != 0) {
+ output.WriteRawTag(16);
+ output.WriteUInt32(SlaveAddress);
+ }
+ bytesTWrite_.WriteTo(output, _repeated_bytesTWrite_codec);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (I2CId != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(I2CId);
+ }
+ if (SlaveAddress != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(SlaveAddress);
+ }
+ size += bytesTWrite_.CalculateSize(_repeated_bytesTWrite_codec);
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(StubI2CWriteBytesRequest other) {
+ if (other == null) {
+ return;
+ }
+ if (other.I2CId != 0) {
+ I2CId = other.I2CId;
+ }
+ if (other.SlaveAddress != 0) {
+ SlaveAddress = other.SlaveAddress;
+ }
+ bytesTWrite_.Add(other.bytesTWrite_);
+ }
+
+ [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: {
+ I2CId = input.ReadUInt32();
+ break;
+ }
+ case 16: {
+ SlaveAddress = input.ReadUInt32();
+ break;
+ }
+ case 26:
+ case 24: {
+ bytesTWrite_.AddEntriesFrom(input, _repeated_bytesTWrite_codec);
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CWriteBytesResponse.cs b/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CWriteBytesResponse.cs
new file mode 100644
index 000000000..dd25c1b7c
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Stubs/StubI2CWriteBytesResponse.cs
@@ -0,0 +1,253 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: StubI2CWriteBytesResponse.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.Stubs {
+
+ /// <summary>Holder for reflection information generated from StubI2CWriteBytesResponse.proto</summary>
+ public static partial class StubI2CWriteBytesResponseReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for StubI2CWriteBytesResponse.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static StubI2CWriteBytesResponseReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Ch9TdHViSTJDV3JpdGVCeXRlc1Jlc3BvbnNlLnByb3RvEg9UYW5nby5QTVIu",
+ "U3R1YnMiZAoZU3R1YkkyQ1dyaXRlQnl0ZXNSZXNwb25zZRINCgVJMkNJZBgB",
+ "IAEoDRIUCgxTbGF2ZUFkZHJlc3MYAiABKA0SDgoGU3RhdHVzGAMgASgJEhIK",
+ "ClN0YXR1c1dvcmQYBCABKA1CGwoZY29tLnR3aW5lLnRhbmdvLnBtci5zdHVi",
+ "c2IGcHJvdG8z"));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Stubs.StubI2CWriteBytesResponse), global::Tango.PMR.Stubs.StubI2CWriteBytesResponse.Parser, new[]{ "I2CId", "SlaveAddress", "Status", "StatusWord" }, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class StubI2CWriteBytesResponse : pb::IMessage<StubI2CWriteBytesResponse> {
+ private static readonly pb::MessageParser<StubI2CWriteBytesResponse> _parser = new pb::MessageParser<StubI2CWriteBytesResponse>(() => new StubI2CWriteBytesResponse());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<StubI2CWriteBytesResponse> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Stubs.StubI2CWriteBytesResponseReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public StubI2CWriteBytesResponse() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public StubI2CWriteBytesResponse(StubI2CWriteBytesResponse other) : this() {
+ i2CId_ = other.i2CId_;
+ slaveAddress_ = other.slaveAddress_;
+ status_ = other.status_;
+ statusWord_ = other.statusWord_;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public StubI2CWriteBytesResponse Clone() {
+ return new StubI2CWriteBytesResponse(this);
+ }
+
+ /// <summary>Field number for the "I2CId" field.</summary>
+ public const int I2CIdFieldNumber = 1;
+ private uint i2CId_;
+ /// <summary>
+ /// </summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public uint I2CId {
+ get { return i2CId_; }
+ set {
+ i2CId_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "SlaveAddress" field.</summary>
+ public const int SlaveAddressFieldNumber = 2;
+ private uint slaveAddress_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public uint SlaveAddress {
+ get { return slaveAddress_; }
+ set {
+ slaveAddress_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Status" field.</summary>
+ public const int StatusFieldNumber = 3;
+ private string status_ = "";
+ /// <summary>
+ /// Passed/Failed
+ /// </summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string Status {
+ get { return status_; }
+ set {
+ status_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "StatusWord" field.</summary>
+ public const int StatusWordFieldNumber = 4;
+ private uint statusWord_;
+ /// <summary>
+ /// Error number/bit when the status is Failed
+ /// </summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public uint StatusWord {
+ get { return statusWord_; }
+ set {
+ statusWord_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as StubI2CWriteBytesResponse);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(StubI2CWriteBytesResponse other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (I2CId != other.I2CId) return false;
+ if (SlaveAddress != other.SlaveAddress) return false;
+ if (Status != other.Status) return false;
+ if (StatusWord != other.StatusWord) return false;
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (I2CId != 0) hash ^= I2CId.GetHashCode();
+ if (SlaveAddress != 0) hash ^= SlaveAddress.GetHashCode();
+ if (Status.Length != 0) hash ^= Status.GetHashCode();
+ if (StatusWord != 0) hash ^= StatusWord.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 (I2CId != 0) {
+ output.WriteRawTag(8);
+ output.WriteUInt32(I2CId);
+ }
+ if (SlaveAddress != 0) {
+ output.WriteRawTag(16);
+ output.WriteUInt32(SlaveAddress);
+ }
+ if (Status.Length != 0) {
+ output.WriteRawTag(26);
+ output.WriteString(Status);
+ }
+ if (StatusWord != 0) {
+ output.WriteRawTag(32);
+ output.WriteUInt32(StatusWord);
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (I2CId != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(I2CId);
+ }
+ if (SlaveAddress != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(SlaveAddress);
+ }
+ if (Status.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Status);
+ }
+ if (StatusWord != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(StatusWord);
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(StubI2CWriteBytesResponse other) {
+ if (other == null) {
+ return;
+ }
+ if (other.I2CId != 0) {
+ I2CId = other.I2CId;
+ }
+ if (other.SlaveAddress != 0) {
+ SlaveAddress = other.SlaveAddress;
+ }
+ if (other.Status.Length != 0) {
+ Status = other.Status;
+ }
+ if (other.StatusWord != 0) {
+ StatusWord = other.StatusWord;
+ }
+ }
+
+ [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: {
+ I2CId = input.ReadUInt32();
+ break;
+ }
+ case 16: {
+ SlaveAddress = input.ReadUInt32();
+ break;
+ }
+ case 26: {
+ Status = input.ReadString();
+ break;
+ }
+ case 32: {
+ StatusWord = input.ReadUInt32();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/LightTouchDataGrid.cs b/Software/Visual_Studio/Tango.Touch/Controls/LightTouchDataGrid.cs
index 410ed6056..8355995d6 100644
--- a/Software/Visual_Studio/Tango.Touch/Controls/LightTouchDataGrid.cs
+++ b/Software/Visual_Studio/Tango.Touch/Controls/LightTouchDataGrid.cs
@@ -235,9 +235,10 @@ namespace Tango.Touch.Controls
if (row != _firstMultiSelectionRow)
{
row.IsSelected = !row.IsSelected;
- _firstMultiSelectionRow = null;
}
+ _firstMultiSelectionRow = null;
+
if (!row.IsSelected && otherRows.All(x => !x.IsSelected))
{
IsMultiSelecting = false;
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/LightTouchDataGrid.xaml b/Software/Visual_Studio/Tango.Touch/Controls/LightTouchDataGrid.xaml
index bbbc48724..623ead7b0 100644
--- a/Software/Visual_Studio/Tango.Touch/Controls/LightTouchDataGrid.xaml
+++ b/Software/Visual_Studio/Tango.Touch/Controls/LightTouchDataGrid.xaml
@@ -42,16 +42,45 @@
<Style TargetType="{x:Type local:LightTouchDataGridRow}">
<Setter Property="VerticalContentAlignment" Value="Center"></Setter>
<Setter Property="HorizontalContentAlignment" Value="Center"></Setter>
+ <Setter Property="RenderTransform">
+ <Setter.Value>
+ <ScaleTransform ScaleX="1" ScaleY="1" />
+ </Setter.Value>
+ </Setter>
+ <Setter Property="SelectedMaskTemplate">
+ <Setter.Value>
+ <DataTemplate>
+ <Grid HorizontalAlignment="Left" VerticalAlignment="Top" Margin="-5 -5 0 0">
+ <Ellipse Width="24" Height="24" Fill="#56B814"></Ellipse>
+ <fa:ImageAwesome Width="10" Height="10" Icon="Check" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center" />
+ </Grid>
+ </DataTemplate>
+ </Setter.Value>
+ </Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:LightTouchDataGridRow}">
- <Border Background="{TemplateBinding Background}"
+ <Grid>
+ <Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="{TemplateBinding CornerRadius}"
Padding="{TemplateBinding Padding}">
- <ContentPresenter Content="{TemplateBinding Content}" />
- </Border>
+ <ContentPresenter Content="{TemplateBinding Content}" />
+ </Border>
+ <ContentControl x:Name="mask" IsHitTestVisible="False" Content="{Binding}" ContentTemplate="{TemplateBinding SelectedMaskTemplate}">
+ <ContentControl.Style>
+ <Style TargetType="ContentControl">
+ <Setter Property="Visibility" Value="Hidden"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=local:LightTouchDataGridRow},Path=IsSelected}" Value="True">
+ <Setter Property="Visibility" Value="Visible"></Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </ContentControl.Style>
+ </ContentControl>
+ </Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
@@ -63,6 +92,23 @@
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="{StaticResource TangoLightSelectedBrush}"></Setter>
+
+ <MultiDataTrigger.EnterActions>
+ <BeginStoryboard>
+ <Storyboard>
+ <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" To="0.98" Duration="00:00:0.1" />
+ <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY" To="0.98" Duration="00:00:0.1" />
+ </Storyboard>
+ </BeginStoryboard>
+ </MultiDataTrigger.EnterActions>
+ <MultiDataTrigger.ExitActions>
+ <BeginStoryboard>
+ <Storyboard>
+ <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" To="1" Duration="00:00:0.1" />
+ <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY" To="1" Duration="00:00:0.1" />
+ </Storyboard>
+ </BeginStoryboard>
+ </MultiDataTrigger.ExitActions>
</MultiDataTrigger>
</Style.Triggers>
</Style>
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/LightTouchDataGridRow.cs b/Software/Visual_Studio/Tango.Touch/Controls/LightTouchDataGridRow.cs
index a22567278..c0bb2c45d 100644
--- a/Software/Visual_Studio/Tango.Touch/Controls/LightTouchDataGridRow.cs
+++ b/Software/Visual_Studio/Tango.Touch/Controls/LightTouchDataGridRow.cs
@@ -24,6 +24,16 @@ namespace Tango.Touch.Controls
public static readonly DependencyProperty IsSelectedProperty =
DependencyProperty.Register("IsSelected", typeof(bool), typeof(LightTouchDataGridRow), new PropertyMetadata(false));
+ public DataTemplate SelectedMaskTemplate
+ {
+ get { return (DataTemplate)GetValue(SelectedMaskTemplateProperty); }
+ set { SetValue(SelectedMaskTemplateProperty, value); }
+ }
+ public static readonly DependencyProperty SelectedMaskTemplateProperty =
+ DependencyProperty.Register("SelectedMaskTemplate", typeof(DataTemplate), typeof(LightTouchDataGridRow), new PropertyMetadata(null));
+
+
+
static LightTouchDataGridRow()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(LightTouchDataGridRow), new FrameworkPropertyMetadata(typeof(LightTouchDataGridRow)));
diff --git a/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj b/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj
index 02e287828..9dd79de83 100644
--- a/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj
+++ b/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj
@@ -34,9 +34,6 @@
<Reference Include="FontAwesome.WPF, Version=4.7.0.37774, Culture=neutral, PublicKeyToken=0758b07a11a4f466, processorArchitecture=MSIL">
<HintPath>..\packages\FontAwesome.WPF.4.7.0.9\lib\net40\FontAwesome.WPF.dll</HintPath>
</Reference>
- <Reference Include="Microsoft.Surface, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
- <Reference Include="Microsoft.Surface.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
- <Reference Include="Microsoft.Surface.Presentation, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
<Reference Include="PresentationFramework.Aero" />
<Reference Include="System" />
<Reference Include="System.Data" />
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/App_Data/Tango.db b/Software/Visual_Studio/Web/Tango.MachineService/App_Data/Tango.db
index 336f96dcf..59973a131 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/App_Data/Tango.db
+++ b/Software/Visual_Studio/Web/Tango.MachineService/App_Data/Tango.db
Binary files differ