aboutsummaryrefslogtreecommitdiffstats
path: root/Software
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-12-17 16:22:49 +0200
committerShlomo Hecht <shlomo@twine-s.com>2020-12-17 16:22:49 +0200
commit50433ea885a3ebdc6a55f733c9083b6e07c2cb3e (patch)
tree878e54f684fa24aae504b9dda006f4068bb86353 /Software
parent39cf804612a97dfb848ac308a1b40bafc3780783 (diff)
parentf0f46e7e560cf5e9999e5ba9904634f01176f27e (diff)
downloadTango-50433ea885a3ebdc6a55f733c9083b6e07c2cb3e.tar.gz
Tango-50433ea885a3ebdc6a55f733c9083b6e07c2cb3e.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software')
-rw-r--r--Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/MCU_MAIN_pinout.c9
-rw-r--r--Software/Embedded_SW/Embedded/DataDef.h9
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/ff.c70
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c4
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/IO_Extender_Ports_TCA9555/WHS_IO.c16
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.c630
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.h65
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Uart_Comm/WHS_Controller_Comm/WHS_UART/WHS_Uart.c7
-rw-r--r--Software/Embedded_SW/Embedded/Main.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c15
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c184
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c4
-rw-r--r--Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip621
-rw-r--r--Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txtbin52 -> 52 bytes
-rw-r--r--Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip25
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationInput.pb-c.c144
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationInput.pb-c.h82
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationMeasurement.pb-c.c131
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationMeasurement.pb-c.h78
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationOutput.pb-c.c119
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationOutput.pb-c.h75
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LiquidType.pb-c.c16
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LiquidType.pb-c.h5
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationInput.pb-c.c144
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationInput.pb-c.h82
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationMeasurement.pb-c.c131
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationMeasurement.pb-c.h78
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationOutput.pb-c.c119
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationOutput.pb-c.h75
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LiquidType.pb-c.c16
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LiquidType.pb-c.h5
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationInput.pb-c.c144
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationInput.pb-c.h82
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationMeasurement.pb-c.c131
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationMeasurement.pb-c.h78
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationOutput.pb-c.c119
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationOutput.pb-c.h75
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LiquidType.pb-c.c16
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LiquidType.pb-c.h5
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorCalibrator.cpp12
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorCalibrator.h2
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp41
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.h1
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Firmware/ViewModels/FileSystemViewVM.cs53
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.MachineConfiguration/ViewModels/SettingsViewVM.cs49
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/FileSystemViewVM.cs92
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures.Documentation/Help/proc-doc.chmbin245831 -> 245831 bytes
-rw-r--r--Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.eddxbin19707 -> 19839 bytes
-rw-r--r--Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.pdfbin25792 -> 25787 bytes
-rw-r--r--Software/Visual_Studio/FSE/Roles & Permissions/Twine Technician.csv1
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachineConfigurationService.cs15
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.BL/Tango.FSE.BL.csproj12
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.BL/packages.config6
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Common/Resources/Converters.xaml2
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/App.xaml.cs27
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/Authentication/DefaultAuthenticationProvider.cs7
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/FileAssociation/DefaultFileAssociationProvider.cs2
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/AssemblyInfo.cs2
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/Views/LayoutView.xaml15
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs6
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj49
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Dialogs/CleanerDispensingView.xaml35
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Dialogs/CleanerDispensingViewVM.cs2
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml3
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Application/IPPCApplicationManager.cs10
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/IMachineUpdateManager.cs6
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs116
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/PPCSettings.cs6
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Merged.xaml2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs30
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj46
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs34
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Updater/IdentityUtils.cs118
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Updater/Images/warning.pngbin0 -> 8947 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Updater/MainWindow.xaml35
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Updater/MainWindow.xaml.cs156
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Updater/Tango.PPC.Updater.csproj4
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/App.config6
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Program.cs66
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Properties/AssemblyInfo.cs36
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Tango.StubsUtils.Client.CLI.csproj63
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/packages.config4
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/App.config6
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Program.cs90
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Properties/AssemblyInfo.cs36
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Tango.StubsUtils.PerformanceTest.CLI.csproj63
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.config22
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.xaml92
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.xaml.cs25
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_connected.icobin0 -> 109412 bytes
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_connected.pngbin0 -> 2914 bytes
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_disconnected.icobin0 -> 109141 bytes
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_disconnected.pngbin0 -> 2817 bytes
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_none.pngbin0 -> 3171 bytes
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/MainWindow.xaml15
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/MainWindow.xaml.cs55
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/AssemblyInfo.cs55
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Resources.Designer.cs71
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Resources.resx117
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Settings.Designer.cs30
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Settings.settings7
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Resources/Colors.xaml140
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Resources/Converters.xaml45
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Resources/Fonts.xaml14
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/ServiceUISettings.cs13
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Tango.StubsUtils.Service.UI.csproj183
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/ViewModels/MainViewVM.cs68
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Views/MainView.xaml144
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Views/MainView.xaml.cs30
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/packages.config9
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Properties/AssemblyInfo.cs36
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubReflection.cs49
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsService.cs334
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsServiceSettings.cs19
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Tango.StubsUtils.Service.csproj89
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/app.config19
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/packages.config6
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/App.config6
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Program.cs79
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Properties/AssemblyInfo.cs36
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Tango.StubsUtils.SessionClient.CLI.csproj59
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/Properties/AssemblyInfo.cs36
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/StubPackageRequestDTO.cs14
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/StubPackageResponseDTO.cs20
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/StubPackageResponseStatus.cs16
-rw-r--r--Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/Tango.StubsUtils.Shared.csproj50
-rw-r--r--Software/Visual_Studio/Tango.BL/Tango.BL.csproj14
-rw-r--r--Software/Visual_Studio/Tango.BL/packages.config6
-rw-r--r--Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs18
-rw-r--r--Software/Visual_Studio/Tango.SharedUI/Converters/IsToStringEqualToVisibilityConverter.cs23
-rw-r--r--Software/Visual_Studio/Tango.SharedUI/Tango.SharedUI.csproj3
-rw-r--r--Software/Visual_Studio/Tango.sln148
-rw-r--r--Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/Tango.JobRunsGenerator.csproj12
-rw-r--r--Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/packages.config6
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Properties/AssemblyInfo.cs2
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj14
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/packages.config6
138 files changed, 6284 insertions, 953 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/MCU_MAIN_pinout.c b/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/MCU_MAIN_pinout.c
index 93ce6cf51..fcede699f 100644
--- a/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/MCU_MAIN_pinout.c
+++ b/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/MCU_MAIN_pinout.c
@@ -859,9 +859,14 @@ PinoutSet(void)
// Configure the GPIO Pin Mux for PR0
// for I2C1SCL
//
- MAP_GPIOPinConfigure(GPIO_PR0_I2C1SCL);
- MAP_GPIOPinTypeI2CSCL(GPIO_PORTR_BASE, GPIO_PIN_0);
+ //MAP_GPIOPinConfigure(GPIO_PR0_I2C1SCL);
+ //MAP_GPIOPinTypeI2CSCL(GPIO_PORTR_BASE, GPIO_PIN_0);
+ #ifdef USE_UART4_FOR_BTSR
+ // Configure the GPIO Pin PR0 for BTSR RS485 UART - Set as output to change to uart4 RS485 Direction:
+ ROM_GPIOPinTypeGPIOOutput(GPIO_PORTR_BASE, GPIO_PIN_0);
+ ROM_GPIOPinWrite(GPIO_PORTR_BASE, GPIO_PIN_0, 0);
+ #endif
//
// Configure the GPIO Pin Mux for PR1
// for I2C1SDA
diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h
index 291c94e9d..1bed505f2 100644
--- a/Software/Embedded_SW/Embedded/DataDef.h
+++ b/Software/Embedded_SW/Embedded/DataDef.h
@@ -20,7 +20,7 @@
#define NO_INITIAL_HEATING
#define MAX_STRING_LEN 255 //Embedded version + filter.c
-#define WATCHDOG
+//#define WATCHDOG
//#define DISPESER_TEST
//#define FPGA_WATCHDOG_DISABLE
@@ -32,7 +32,11 @@
#ifdef FOUR_WINDERS
#define BTSR_NO_FEEDER_TFU
#define BTSR_NO_PULLER_TFU
+#define BTSR_ROTATED_WINDER_TFU
#endif
+//#define BTSR_ROTATED_WINDER_TFU
+
+#define USE_UART4_FOR_BTSR // need change in FRPGA FPGA_1 yy > 0x20 + jumpers in main board need to read HW Version
//#define USE_RFID_STUB //stub only. to use it undef USE_RFID_LOGIC
//#define RFID_READ_ONLY //
@@ -152,6 +156,9 @@ typedef enum
#define TX 0
#define RX 1
#define TXRX 2
+#define TX_FIRST_BYTE 3 //for BTSR
+#define TX_NOT_FIRST_BYTE 4 //for BTSR
+
#define ODD 0
#define EVEN 1
diff --git a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/ff.c b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/ff.c
index 66f209421..632dfb0d5 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/ff.c
+++ b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/ff.c
@@ -98,7 +98,9 @@
#include "ff.h" /* FatFs configurations and declarations */
//#include "diskio.h" /* Declarations of low level disk I/O functions */
+#include <DataDef.h>
#include "third_party/fatfs/src/diskio.h"
+#include "Common/report/report.h"
/*--------------------------------------------------------------------------
@@ -894,7 +896,10 @@ FRESULT put_fat (
if (clst < 2 || clst >= fs->n_fatent) { /* Check range */
- res = FR_INT_ERR;
+ {
+ res = FR_INT_ERR;
+ Report("put_fat FR_INT_ERR",__FILE__,__LINE__,(int)clst,RpWarning,(int)fs->n_fatent,0);
+ }
} else {
switch (fs->fs_type) {
@@ -929,6 +934,8 @@ FRESULT put_fat (
default :
res = FR_INT_ERR;
+ Report("put_fat FR_INT_ERR",__FILE__,__LINE__,(int)clst,RpWarning,(int)fs->fs_type,0);
+
}
fs->wflag = 1;
}
@@ -958,13 +965,16 @@ FRESULT remove_chain (
if (clst < 2 || clst >= fs->n_fatent) { /* Check range */
res = FR_INT_ERR;
-
+ Report("remove_chain FR_INT_ERR",__FILE__,__LINE__,(int)clst,RpWarning,(int)fs->n_fatent,0);
} else {
res = FR_OK;
while (clst < fs->n_fatent) { /* Not a last link? */
nxt = get_fat(fs, clst); /* Get cluster status */
if (nxt == 0) break; /* Empty cluster? */
- if (nxt == 1) { res = FR_INT_ERR; break; } /* Internal error? */
+ if (nxt == 1) {
+ res = FR_INT_ERR;
+ Report("remove_chain FR_INT_ERR",__FILE__,__LINE__,(int)res,RpWarning,(int)fs->n_fatent,0);
+ break; } /* Internal error? */
if (nxt == 0xFFFFFFFF) { res = FR_DISK_ERR; break; } /* Disk error? */
res = put_fat(fs, clst, 0); /* Mark the cluster "empty" */
if (res != FR_OK) break;
@@ -1097,14 +1107,20 @@ FRESULT dir_sdi (
dj->index = idx;
clst = dj->sclust;
if (clst == 1 || clst >= dj->fs->n_fatent) /* Check start cluster range */
+ {
+ Report("dir_sdi FR_INT_ERR",__FILE__,__LINE__,(int)clst,RpWarning,(int)dj->fs->n_fatent,0);
return FR_INT_ERR;
+ }
if (!clst && dj->fs->fs_type == FS_FAT32) /* Replace cluster# 0 with root cluster# if in FAT32 */
clst = dj->fs->dirbase;
if (clst == 0) { /* Static table (root-dir in FAT12/16) */
dj->clust = clst;
if (idx >= dj->fs->n_rootdir) /* Index is out of range */
- return FR_INT_ERR;
+ {
+ Report("dir_sdi FR_INT_ERR",__FILE__,__LINE__,(int)idx,RpWarning,(int)dj->fs->n_rootdir,0);
+ return FR_INT_ERR;
+ }
dj->sect = dj->fs->dirbase + idx / (SS(dj->fs) / SZ_DIR); /* Sector# */
}
else { /* Dynamic table (sub-dirs or root-dir in FAT32) */
@@ -1113,7 +1129,10 @@ FRESULT dir_sdi (
clst = get_fat(dj->fs, clst); /* Get next cluster */
if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */
if (clst < 2 || clst >= dj->fs->n_fatent) /* Reached to end of table or int error */
+ {
+ Report("dir_sdi FR_INT_ERR",__FILE__,__LINE__,(int)clst,RpWarning,(int)dj->fs->n_fatent,0);
return FR_INT_ERR;
+ }
idx -= ic;
}
dj->clust = clst;
@@ -2558,7 +2577,10 @@ FRESULT f_write (
res = validate(fp); /* Check validity */
if (res != FR_OK) LEAVE_FF(fp->fs, res);
if (fp->flag & FA__ERROR) /* Aborted file? */
+ {
+ Report("f_write FR_INT_ERR",__FILE__,__LINE__,(int)fp->flag,RpWarning,(int)btw,0);
LEAVE_FF(fp->fs, FR_INT_ERR);
+ }
if (!(fp->flag & FA_WRITE)) /* Check access mode */
LEAVE_FF(fp->fs, FR_DENIED);
if ((DWORD)(fp->fsize + btw) < fp->fsize) btw = 0; /* File size cannot reach 4GB */
@@ -2596,7 +2618,11 @@ FRESULT f_write (
}
#endif
sect = clust2sect(fp->fs, fp->clust); /* Get current sector */
- if (!sect) ABORT(fp->fs, FR_INT_ERR);
+ if (!sect)
+ {
+ Report("f_write FR_INT_ERR",__FILE__,__LINE__,(int)sect,RpWarning,(int)btw,0);
+ ABORT(fp->fs, FR_INT_ERR);
+ }
sect += csect;
cc = btw / SS(fp->fs); /* When remaining bytes >= sector size, */
if (cc) { /* Write maximum contiguous sectors directly */
@@ -2886,7 +2912,10 @@ FRESULT f_lseek (
res = validate(fp); /* Check validity of the object */
if (res != FR_OK) LEAVE_FF(fp->fs, res);
if (fp->flag & FA__ERROR) /* Check abort flag */
+ {
+ Report("f_lseek FR_INT_ERR",__FILE__,__LINE__,(int)fp->flag,RpWarning,(int)FA__ERROR,0);
LEAVE_FF(fp->fs, FR_INT_ERR);
+ }
#if _USE_FASTSEEK
if (fp->cltbl) { /* Fast seek */
@@ -2969,7 +2998,11 @@ FRESULT f_lseek (
#if !_FS_READONLY
if (clst == 0) { /* If no cluster chain, create a new chain */
clst = create_chain(fp->fs, 0);
- if (clst == 1) ABORT(fp->fs, FR_INT_ERR);
+ if (clst == 1)
+ {
+ Report("f_lseek FR_INT_ERR",__FILE__,__LINE__,(int)clst,RpWarning,(int)FA__ERROR,0);
+ ABORT(fp->fs, FR_INT_ERR);
+ }
if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
fp->sclust = clst;
}
@@ -2988,7 +3021,11 @@ FRESULT f_lseek (
#endif
clst = get_fat(fp->fs, clst); /* Follow cluster chain if not in write mode */
if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
- if (clst <= 1 || clst >= fp->fs->n_fatent) ABORT(fp->fs, FR_INT_ERR);
+ if (clst <= 1 || clst >= fp->fs->n_fatent)
+ {
+ Report("f_lseek FR_INT_ERR",__FILE__,__LINE__,(int)clst,RpWarning,(int)fp->fs->n_fatent,0);
+ ABORT(fp->fs, FR_INT_ERR);
+ }
fp->clust = clst;
fp->fptr += bcs;
ofs -= bcs;
@@ -2996,7 +3033,11 @@ FRESULT f_lseek (
fp->fptr += ofs;
if (ofs % SS(fp->fs)) {
nsect = clust2sect(fp->fs, clst); /* Current sector */
- if (!nsect) ABORT(fp->fs, FR_INT_ERR);
+ if (!nsect)
+ {
+ Report("f_lseek FR_INT_ERR",__FILE__,__LINE__,(int)nsect,RpWarning,(int)0,0);
+ ABORT(fp->fs, FR_INT_ERR);
+ }
nsect += ofs / SS(fp->fs);
}
}
@@ -3184,7 +3225,10 @@ FRESULT f_getfree (
do {
stat = get_fat(fs, clst);
if (stat == 0xFFFFFFFF) { res = FR_DISK_ERR; break; }
- if (stat == 1) { res = FR_INT_ERR; break; }
+ if (stat == 1)
+ {
+ Report("f_getfree FR_INT_ERR",__FILE__,__LINE__,(int)stat,RpWarning,(int)0,0);
+ res = FR_INT_ERR; break; }
if (stat == 0) n++;
} while (++clst < fs->n_fatent);
} else {
@@ -3233,6 +3277,7 @@ FRESULT f_truncate (
res = validate(fp); /* Check validity of the object */
if (res == FR_OK) {
if (fp->flag & FA__ERROR) { /* Check abort flag */
+ Report("f_truncate FR_INT_ERR",__FILE__,__LINE__,(int)fp->flag,RpWarning,(int)0,0);
res = FR_INT_ERR;
} else {
if (!(fp->flag & FA_WRITE)) /* Check access mode */
@@ -3250,7 +3295,11 @@ FRESULT f_truncate (
ncl = get_fat(fp->fs, fp->clust);
res = FR_OK;
if (ncl == 0xFFFFFFFF) res = FR_DISK_ERR;
- if (ncl == 1) res = FR_INT_ERR;
+ if (ncl == 1)
+ {
+ Report("f_truncate FR_INT_ERR",__FILE__,__LINE__,(int)ncl,RpWarning,(int)0,0);
+ res = FR_INT_ERR;
+ }
if (res == FR_OK && ncl < fp->fs->n_fatent) {
res = put_fat(fp->fs, fp->clust, 0x0FFFFFFF);
if (res == FR_OK) res = remove_chain(fp->fs, ncl);
@@ -3301,6 +3350,7 @@ FRESULT f_unlink (
dclst = ld_clust(dj.fs, dir);
if (res == FR_OK && (dir[DIR_Attr] & AM_DIR)) { /* Is it a sub-dir? */
if (dclst < 2) {
+ Report("f_unlink FR_INT_ERR",__FILE__,__LINE__,(int)dclst,RpWarning,(int)0,0);
res = FR_INT_ERR;
} else {
mem_cpy(&sdj, &dj, sizeof (DIR)); /* Check if the sub-dir is empty or not */
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c
index 854153218..a600c3b9f 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c
@@ -497,10 +497,10 @@ double CalculateWHSWasteTankLevelMiliLiter()
get_vlev1(&Vm_mv);//mV (VREF = 4.096V 12bit so 1bit is 1mV)
- //Report("***** get waste level in mV ********", __FILE__, __LINE__, 0, RpMessage, (int)(Vm_mv), 0);
-
Vm_ml = Vm_mv * 1500/mvfor1500mL;
+ Report("***** get waste level in mV ********", __FILE__, __LINE__, (int)(Vm_ml), RpMessage, (int)(Vm_mv), 0);
+
if(Vm_ml < LocalV0_ml)
{
//LocalV0_ml = Vm_ml;
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/IO_Extender_Ports_TCA9555/WHS_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/IO_Extender_Ports_TCA9555/WHS_IO.c
index ea45c89fe..30565df7d 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/IO_Extender_Ports_TCA9555/WHS_IO.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/IO_Extender_Ports_TCA9555/WHS_IO.c
@@ -716,16 +716,18 @@ bool WHS_Reset_485(bool value)
uint8_t RS485_Change_Direction(bool TX_OR_RX)//TX or RX - trigger i2c task
{
- if(TX_OR_RX == TX)
+ if((TX_OR_RX == TX) && (Whs_I2C_EXP_U4_0x42_VALUE.bits.VALUE_ACTLOW_DE_REn != true))
+ {
Whs_I2C_EXP_U4_0x42_VALUE.bits.VALUE_ACTLOW_DE_REn = true;
- else
+ WHS_Write_IO(I2CExp2_ADDRESS,D_TCA9555_PORT_0);
+ }
+ else if((TX_OR_RX == RX) && (Whs_I2C_EXP_U4_0x42_VALUE.bits.VALUE_ACTLOW_DE_REn != false))
+ {
Whs_I2C_EXP_U4_0x42_VALUE.bits.VALUE_ACTLOW_DE_REn = false;
-
- WHS_Write_IO(I2CExp2_ADDRESS,D_TCA9555_PORT_0);
-
+ WHS_Write_IO(I2CExp2_ADDRESS,D_TCA9555_PORT_0);
+ }
return OK;
-
-};
+}
uint8_t RS485_Direction(bool TX_OR_RX)//TX or RX
{
diff --git a/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.c b/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.c
new file mode 100644
index 000000000..12699a1fd
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.c
@@ -0,0 +1,630 @@
+/*
+ * BTSR.c
+ *
+ * Created on: 1 Dec 2020
+ * Author: avi
+ */
+
+#include "include.h"
+#include <stdint.h>
+#include <stdbool.h>
+
+#include <ti/sysbios/hal/Hwi.h>
+#include <xdc/runtime/Error.h>
+#include <xdc/runtime/System.h>
+
+#include <inc/hw_ints.h>
+
+#include "inc/hw_memmap.h"
+#include "inc/hw_types.h"
+#include "driverlib/gpio.h"
+#include "driverlib/pin_map.h"
+#include "driverlib/rom.h"
+#include "driverlib/rom_map.h"
+#include "driverlib/sysctl.h"
+#include "driverlib/interrupt.h"
+#include "utils/uartstdio.h"
+#include "driverlib/uart.h"
+
+//#include <Drivers/I2C_Communication/WHS_Card/IO_Extender_Ports_TCA9555/WHS_IO.h>
+#include "Modules/Control/MillisecTask.h"
+#include <DataDef.h>
+#include <Drivers/I2C_Communication/I2C_Task.h>
+//#include "Drivers/Uart_Comm/WHS_Controller_Comm/WHS_UART/WHS_Uart.h"
+#include "Drivers/FPGA/FPGA_Comm.h"
+#include "Drivers/Uart_Comm/BTSR/BTSR.h"
+
+
+
+static uint32_t GlobalClk;
+uint8_t BTSR_RX_Buff[Max_BTSR_RX_Bytes];
+uint16_t TX_Timeout = 0xFFFF;//6250
+uint16_t RX_Timeout = 0xFFFF;//1
+
+typedef enum
+{
+ BTSR_UART_CONFIG_PAR_1 = (UART_CONFIG_WLEN_8 |UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_ONE),
+ BTSR_UART_CONFIG_PAR_0 = (UART_CONFIG_WLEN_8 |UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_ZERO),
+}UAR_CFG;
+UAR_CFG BTSR_UART_CONFIG;
+
+uint8_t txlen = 0;
+uint8_t txcounter = 0, rxcounter = 0;
+uint8_t BTSR_TX_Buff[Max_BTSR_TX_Bytes];
+
+
+uint8_t RX_Int_Counter = 0, RT_Int_Counter = 0, TX_Int_Counter = 0;
+
+uint8_t UART4_RS485_Direction(bool TX_OR_RX)//TX or RX
+{
+ ROM_GPIOPinWrite(GPIO_PORTR_BASE, GPIO_PIN_0, !(TX_OR_RX));
+
+ return OK;
+}
+void U4TX()
+{
+ UARTIntEnable(UART4_BASE, UART_INT_TX);
+ ROM_UARTCharPutNonBlocking(UART4_BASE,BTSR_TX_Buff[txcounter]);
+}
+void U4RX()
+{
+ UARTIntEnable(UART4_BASE, UART_INT_TX);
+ BTSR_RX_Buff[rxcounter] = ROM_UARTCharGetNonBlocking(UART4_BASE);//Receive data
+ rxcounter++;
+
+
+}
+
+void uart4_intHandler()
+{
+ static uint8_t nop = 0;
+ //Get interrupt flags
+ unsigned long status = UARTIntStatus(UART4_BASE, 1);
+
+ //Clear flags
+ UARTIntClear(UART4_BASE, status);
+
+ //Treat both of these interrupts the same
+ if(status & UART_INT_RX)
+ {
+ RX_Int_Counter++;
+ U4RX();
+ }
+ else
+ if(status & UART_INT_RT) /// Receive Timeout Interrupt
+ {
+ RT_Int_Counter++;
+ U4RX();
+ }
+ if(status & UART_INT_TX)
+ {
+ UARTIntDisable(UART4_BASE, UART_INT_TX);
+
+ TX_Int_Counter++;
+
+ BTSR_Change_Comm_Mode(TX_NOT_FIRST_BYTE);
+ txcounter++;
+ if(txcounter >= txlen )
+ {
+ txcounter = 0;
+ rxcounter = 0;
+
+ BTSR_Change_Comm_Mode(RX);
+ UARTIntEnable(UART4_BASE, UART_INT_RT | UART_INT_RX);
+
+ }
+ else
+ {
+ U4TX();
+ }
+
+ }
+
+}
+
+
+
+
+void InitConsole_BTSR_UART4(int32_t ui32SysClock)
+{
+
+ ROM_IntMasterDisable();
+
+ GlobalClk = ui32SysClock;
+
+ //uint32_t ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), SYS_CLK_FREQ);
+
+ SysCtlPeripheralEnable(SYSCTL_PERIPH_UART4);
+ //
+ // Enable GPIO port A which is used for UART4 pins.
+ // TODO: change this to whichever GPIO port you are using.
+ //
+ SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
+
+ SysCtlDelay(3);
+
+ //
+ // Configure the pin muxing for UART4 functions on port A0 and A1.
+ // This step is not necessary if your part does not support pin muxing.
+ //
+ MAP_GPIOPinConfigure(GPIO_PA2_U4RX);
+ MAP_GPIOPinConfigure(GPIO_PA3_U4TX);
+
+ //
+ // Enable UART4 so that we can configure the clock.
+ //
+ SysCtlPeripheralEnable(SYSCTL_PERIPH_UART4);
+
+ SysCtlDelay(3);
+
+ //
+ // Use the internal 16MHz oscillator as the UART clock source.
+ //
+ UARTClockSourceSet(UART4_BASE, UART_CLOCK_SYSTEM);//UART_CLOCK_PIOSC);
+
+ //
+ // Select the alternate (UART) function for these pins.
+ //
+ MAP_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3);
+
+ //
+ // Initialize the UART for console I/O.
+ //
+ UARTFIFOEnable(UART4_BASE);
+
+ MAP_UARTConfigSetExpClk(UART4_BASE, ui32SysClock, 57600,(UART_CONFIG_WLEN_7 |UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_ONE));//BTSR protocol
+ UART4_RS485_Direction(TX);
+
+ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ //Set UART FIFO level to 1/2
+ //UARTFIFOLevelSet(UART4_BASE, UART_FIFO_TX7_8, UART_FIFO_RX1_8);
+//
+// //Register interrupt handler
+// UARTIntRegister(UART4_BASE, uart4_intHandler);
+//
+ //
+ // Configure and enable UART interrupts.
+ //
+ ROM_UARTIntClear(UART4_BASE, ROM_UARTIntStatus(UART4_BASE, false));
+ //Declare HWI dynamically "TI-RTOS Kernel User's Guide" Page. 167 or Section 8.2.1
+ Hwi_Handle Uart4Hwi;
+ Error_Block eb;
+ Error_init(&eb);
+ Uart4Hwi = Hwi_create(INT_UART4, uart4_intHandler, NULL, &eb);
+ if (Uart4Hwi == NULL)
+ {
+ System_abort("Uart4Hwi create failed");
+ }
+
+ UARTTxIntModeSet(UART4_BASE, UART_TXINT_MODE_EOT);//generate a TX interrupt when the last character has completed transmission
+
+ //Enable RX and RT interrupts
+ UARTIntEnable(UART4_BASE, /*UART_INT_RT | UART_INT_RX | */UART_INT_TX);
+ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+//#define UART4_CTL_R (*((volatile uint32_t *)0x40010030))
+//
+// UART4_CTL_R |= UART_CTL_EOT;// End of Transmission
+
+ ROM_UARTEnable(UART4_BASE);
+ //
+ // Enable interrupts now that the application is ready to start.
+ //
+ ROM_IntEnable(INT_UART4);
+
+
+
+ ROM_IntMasterEnable();
+}
+
+
+unsigned long UARTStatus()
+{
+ return(HWREG(UART4_BASE + UART_O_FR));
+}
+
+bool BTSR_Change_Comm_Mode(uint8_t Mode)
+{
+
+ if(Mode == TX_FIRST_BYTE)
+ {
+ UART4_RS485_Direction(TX);
+
+ Task_sleep (eOneMillisecond);//Doesn't work without it - maybe to change to TX after RX
+ if(BTSR_UART_CONFIG != BTSR_UART_CONFIG_PAR_1)
+ {
+ BTSR_UART_CONFIG = BTSR_UART_CONFIG_PAR_1;
+ MAP_UARTConfigSetExpClk(UART4_BASE, GlobalClk, 57600,BTSR_UART_CONFIG_PAR_1);
+ }
+ }
+ else if(Mode == TX_NOT_FIRST_BYTE)
+ {
+ UART4_RS485_Direction(TX);
+
+ //Task_sleep (eOneMillisecond);
+ if(BTSR_UART_CONFIG != BTSR_UART_CONFIG_PAR_0)
+ {
+ BTSR_UART_CONFIG = BTSR_UART_CONFIG_PAR_0;
+ MAP_UARTConfigSetExpClk(UART4_BASE, GlobalClk, 57600,BTSR_UART_CONFIG_PAR_0);
+ }
+ }
+ else if(Mode == RX)
+ {
+ UART4_RS485_Direction(RX);
+
+ //Task_sleep (eOneMillisecond);
+ if(BTSR_UART_CONFIG != BTSR_UART_CONFIG_PAR_0)
+ {
+ BTSR_UART_CONFIG = BTSR_UART_CONFIG_PAR_0;
+ MAP_UARTConfigSetExpClk(UART4_BASE, GlobalClk, 57600,BTSR_UART_CONFIG_PAR_0);
+ }
+ }
+ return OK;
+}
+
+int Uart4TransmitResult = 0;
+
+uint8_t BTSR_Auto_Identify(uint8_t BTSR_Id)//AUTOMATIC IDENTIFICATION PROCEDURE (IDENTIFY)
+{
+ uint8_t i = 0;
+ uint8_t FUNCTION_STRING_FD = 0xFD;
+ uint8_t TX_Timeout = 10;
+ uint8_t RX_Timeout = 10;
+
+ BTSR_Change_Comm_Mode(TX_FIRST_BYTE);
+ Task_sleep (eOneMillisecond);
+
+ for(i = 0 ;i < 3; i++)
+ {
+
+ Uart4TransmitResult |=ROM_UARTCharPutNonBlocking(UART4_BASE,FUNCTION_STRING_FD);
+ Task_sleep (eOneMillisecond);
+ }
+
+ while(UARTBusy(UART4_BASE) == true)//true if the UART is transmitting, false if all transmissions are complete
+ {
+ if(TX_Timeout)
+ {
+ TX_Timeout--;
+ Task_sleep (eOneMillisecond);
+ }
+ else
+ return ERROR;
+ }
+
+ BTSR_Change_Comm_Mode(RX);
+
+ while(UARTCharsAvail(UART4_BASE) == false);//true if there is data in the receive FIFO or false if there is no data in the receive FIFO
+ {
+ if(RX_Timeout)
+ {
+ RX_Timeout--;
+ Task_sleep (eOneMillisecond);
+ }
+ else
+ return ERROR;
+ }
+ BTSR_RX_Buff[0] = ROM_UARTCharGetNonBlocking(UART4_BASE);//Receive data
+
+ if(BTSR_RX_Buff[0] == 0xFD)
+ {
+ BTSR_Change_Comm_Mode(TX_FIRST_BYTE);
+ Task_sleep (eOneMillisecond);
+ Uart4TransmitResult |=ROM_UARTCharPutNonBlocking(UART4_BASE,BTSR_Id);
+ return OK; //Need to press ENTER in BTSR!
+ }
+ else
+ {
+ return ERROR;
+ }
+}
+
+//////////////////////////////////////////////////
+
+uint8_t BTSR_Calculate_CheckSum(uint8_t *Buf, uint8_t size_without_Checksum)
+{
+ uint8_t i = 0;
+ uint16_t Sum = 0;
+
+ for(i=0;i<(size_without_Checksum);i++)
+ {
+ Sum += Buf[i];
+ }
+ Buf[i] = Sum & 0xFF;
+ Buf[i+1] = Sum >> 8;
+
+ return OK;
+}
+
+uint8_t Check_Received_CheckSum(uint8_t CODE_STRING, uint8_t Function_Code, uint8_t *Buf, uint8_t size_include_Checksum)//Function_Code + CODE_STRING needed only for FUNCTION_STRING = 0x33
+{
+ uint8_t Status = OK;
+ uint8_t i = 0;
+ uint16_t Sum = 0;
+
+ //uint8_t temp[10];
+
+ if(size_include_Checksum > 2) // No checkSum for <=2
+ {
+ for(i = 0; i < (size_include_Checksum - 2); i++)
+ {
+ Sum += Buf[i];//Sum Of DATA_STRING
+ }
+
+// for(i = 0; i < size_include_Checksum ; i++)//debug
+// {
+// temp[i] = Buf[i];
+// }
+
+ if(size_include_Checksum == 6) //FUNCTION_STRING = 0x33
+ {
+ //Sum Of DATA_STRING, Device Code, Function Code.
+ Sum += Function_Code + CODE_STRING;
+ }
+
+ if( (Buf[size_include_Checksum - 2] != (Sum & 0xFF)) ||
+ (Buf[size_include_Checksum - 1] != (Sum >> 8)) )
+ {
+ Status = ERROR;
+ }
+ }
+ return Status;
+}
+
+
+
+//APPLICATION AND YARN TYPOLOGY SET
+typedef union
+{
+ struct
+ {
+ uint8_t Code;
+ uint8_t Function;
+ uint8_t Data[2];
+ uint8_t Check[2];
+ }String;
+ uint8_t Buf[6];
+}BTSR_TYPOLOGY_SET;
+
+BTSR_TYPOLOGY_SET Typology_Set;
+
+uint8_t BTSR_Send_Buf(uint8_t *Buf, uint8_t size)
+{
+ int TxResult = 0;
+ uint8_t i;
+
+ txlen = size;
+ for(i=0;i<size;i++)
+ BTSR_TX_Buff[i] = Buf[i];
+
+ UARTIntEnable(UART4_BASE, UART_INT_TX);
+ BTSR_Change_Comm_Mode(TX_FIRST_BYTE);
+ //Task_sleep (eOneMillisecond);
+ TxResult |=ROM_UARTCharPutNonBlocking(UART4_BASE,Buf[0]);
+
+ return TxResult;
+}
+
+
+/*
+uint8_t BTSR_Send_Buf(uint8_t *Buf, uint8_t size)
+{
+ int TxResult = 0;
+ uint8_t i = 1;//change to ADD0 and send the rest of bytes (1..Size)
+ const uint8_t Save_Size = size;
+
+ BTSR_Change_Comm_Mode(TX_FIRST_BYTE);
+ Task_sleep (eOneMillisecond);
+ TxResult |=ROM_UARTCharPutNonBlocking(UART4_BASE,Buf[0]);
+
+ BTSR_Change_Comm_Mode(TX_NOT_FIRST_BYTE);
+ Task_sleep (eOneMillisecond);
+
+ while(size)
+ {
+ if(size <= 16) //FIFO is working for data up to 16 bytes
+ {
+ for(; i < Save_Size; i++)
+ {
+ TxResult |=ROM_UARTCharPutNonBlocking(UART4_BASE,Buf[i]);
+ }
+ size = 0;// all sent
+ }
+ else
+ {
+ for(; i < 16; i++)
+ {
+ TxResult |=ROM_UARTCharPutNonBlocking(UART4_BASE,Buf[i]);
+ }
+ size -= 16;
+ }
+
+ while(HWREG(UART4_BASE + UART_O_FR) & UART_FR_BUSY)//UARTFR
+ {
+ if(TX_Timeout)
+ {
+ TX_Timeout--;
+ }
+ else
+ return ERROR;
+ }
+ }
+
+ UART4_RS485_Direction(RX);
+
+ return TxResult;
+}
+*/
+uint8_t BTSR_Send_Buf_3xADD1(uint8_t *Buf, uint8_t size)//Only for commands with 3 bytes with Address 1 (0x06/0xFD)
+{
+ int TxResult = 0;
+ uint8_t i = 0;
+
+ if((Buf[4] != 0x06) || (size < 3))
+ return ERROR;
+
+ BTSR_Change_Comm_Mode(TX_FIRST_BYTE);
+ Task_sleep (eOneMillisecond);
+
+ for(i = 0; i < 3; i++)
+ {
+ TxResult |=ROM_UARTCharPutNonBlocking(UART4_BASE,Buf[i]);
+ Task_sleep (eOneMillisecond);
+ }
+
+ BTSR_Change_Comm_Mode(TX_NOT_FIRST_BYTE);
+ Task_sleep (eOneMillisecond);
+
+ for(; i < size; i++)
+ {
+ TxResult |=ROM_UARTCharPutNonBlocking(UART4_BASE,Buf[i]);
+ }
+
+ while(HWREG(UART4_BASE + UART_O_FR) & UART_FR_BUSY)//UARTFR
+ {
+ if(TX_Timeout)
+ {
+ TX_Timeout--;
+ }
+ else
+ return ERROR;
+ }
+ UART4_RS485_Direction(RX);
+
+ return TxResult;
+}
+
+uint8_t BTSR_RECEIVE_Buf(uint8_t *Buf, uint8_t size) //to test with BTSR_Set_Parmeters(0x01,SHOES,ALL_YARNS);
+{
+ uint8_t i = 0;
+
+ BTSR_Change_Comm_Mode(RX);
+
+ while(UARTCharsAvail(UART4_BASE) == false)//true if there is data in the receive FIFO or false if there is no data in the receive FIFO
+ {
+ if(RX_Timeout)
+ {
+ RX_Timeout--;
+ }
+ else
+ return ERROR;
+ }
+
+ memset (BTSR_RX_Buff,0,sizeof(BTSR_RX_Buff));
+
+ i=0;
+ while(UARTCharsAvail(UART4_BASE) == true)
+ {
+ BTSR_RX_Buff[i] = ROM_UARTCharGetNonBlocking(UART4_BASE);//Receive data
+ i++;
+ }
+// for(i=0;i<4;i++)
+// {
+// BTSR_RX_Buff[i] = ROM_UARTCharGetNonBlocking(UART4_BASE);//Receive data
+// }
+
+ if(size == i)
+ return OK;//as expected
+ return ERROR;
+}
+
+uint8_t BTSR_Set_Parmeters(uint8_t BTSR_Id, uint8_t Application, uint8_t Yarn_Type )
+{
+ //uint16_t Sum = 0;
+ //uint8_t i = 0;
+
+ //BTSR_RX_Buff[0] = 0;
+
+ Typology_Set.String.Code = BTSR_Id;
+ Typology_Set.String.Function = 0x3F;
+ Typology_Set.String.Data[0] = Application;
+ Typology_Set.String.Data[1] = Yarn_Type;
+ BTSR_Calculate_CheckSum(Typology_Set.Buf,(sizeof(Typology_Set.Buf))- 2);
+ /*
+ for(i=0;i<(sizeof(Typology_Set) - sizeof(Typology_Set.String.Check));i++)
+ {
+ Sum += Typology_Set.Buf[i];
+ }
+ Typology_Set.String.Check[0] = Sum & 0xFF;
+ Typology_Set.String.Check[1] = Sum >> 8;
+*/
+
+
+ BTSR_Send_Buf(Typology_Set.Buf, sizeof(Typology_Set));
+
+ //BTSR_RECEIVE_Buf(BTSR_RX_Buff, 1);
+
+/*
+ if(BTSR_RX_Buff[0] == 0xFB)
+ return OK;
+ else
+ return ERROR;
+ */
+ return BTSR_RX_Buff[0];
+}
+
+
+//------------------------------------------------------------------------
+
+
+typedef union
+{
+ struct
+ {
+ uint8_t Data[2];
+ uint8_t Check[2];
+ }String;
+ uint8_t Buf[4];
+}BTSR_2_2;
+
+typedef union
+{
+ struct
+ {
+ uint8_t Code;
+ uint8_t Function;
+ uint8_t Check[2];
+ }String;
+ uint8_t Buf[4];
+}BTSR_1_1_2;
+
+BTSR_1_1_2 Status_Read_Command;//ALARM AND ENABLING STATUS READ
+BTSR_2_2 Status_Read_Response;
+
+uint8_t BTSR_Read_Status(uint8_t BTSR_Id, uint8_t Application, uint8_t Yarn_Type )
+{
+ uint16_t Sum = 0;
+ uint8_t i = 0;
+
+ Typology_Set.String.Code = BTSR_Id;
+ Typology_Set.String.Function = 0x1F;
+ for(i=0;i<(sizeof(Typology_Set) - sizeof(Typology_Set.String.Check));i++)
+ {
+ Sum += Typology_Set.Buf[i];
+ }
+ Typology_Set.String.Check[0] = Sum & 0xFF;
+ Typology_Set.String.Check[1] = Sum >> 8;
+
+ BTSR_Send_Buf(Typology_Set.Buf, sizeof(Typology_Set));
+
+ BTSR_RECEIVE_Buf(BTSR_RX_Buff, 6);
+
+ for(i=0;i<(sizeof(Status_Read_Response) - sizeof(Status_Read_Response.String.Check));i++)
+ {
+ Sum += BTSR_RX_Buff[i];
+ }
+ if( (BTSR_RX_Buff[sizeof(Status_Read_Response) - 2] == Sum & 0xFF) &&
+ (BTSR_RX_Buff[sizeof(Status_Read_Response) - 1] == Sum >> 8) )
+ {
+ for(i=0;i<(sizeof(Status_Read_Response) - sizeof(Status_Read_Response.String.Check));i++)
+ {
+ Status_Read_Response.Buf[i] = BTSR_RX_Buff[i];
+ }
+ return OK;
+ }
+ else
+ return ERROR;
+}
+
+
+
diff --git a/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.h b/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.h
new file mode 100644
index 000000000..14fda8f19
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.h
@@ -0,0 +1,65 @@
+/*
+ * BTSR.h
+ *
+ * Created on: 1 Dec 2020
+ * Author: avi
+ */
+
+#ifndef DRIVERS_UART_COMM_BTSR_BTSR_H_
+#define DRIVERS_UART_COMM_BTSR_BTSR_H_
+
+#define Max_BTSR_RX_Bytes 55
+#define Max_BTSR_TX_Bytes 40
+
+typedef enum
+{
+ SOCKS = 1 ,
+ REVERSE_SOCKS = 2 ,
+ MEDICAL_SOCKS = 3 ,
+ PANTYHOSE = 4 ,
+ SEAMLESS = 5 ,
+ KNIT = 6 ,
+ REVERSE_KNIT = 7 ,
+ RASCHEL = 8 ,
+ SEWING = 9 ,
+ FLAT_KNIT = 10,
+ SMALL_LOOM = 11,
+ SHOES = 12,
+ FLAT_SHOES = 21,
+ INLAY = 22,
+ WARP = 34,
+ REWIND = 35,
+}BTSR_APPLICATION;
+
+typedef enum
+{
+ ELASTOMERIC_YARN = 1,
+ ALL_YARNS = 2,
+ ALL_YARNS2 = 3,
+ ALL_YARNS3 = 4,
+ ELASTIC2 = 5,
+ ELASTIC3 = 6,
+}BTSR_YARN_TYPE;
+
+typedef enum
+{
+ BTSR_RISP_OK = 0xFB,
+ BTSR_RISP_FAILED = 0xFA,
+ BTSR_RISP_OUT_OF_RANFE = 0xF9,
+}BTSR_RISP_BYTE;
+
+extern uint8_t BTSR_RX_Buff[Max_BTSR_RX_Bytes];
+
+unsigned long UARTStatus();
+bool BTSR_Change_Comm_Mode(uint8_t Mode);
+uint8_t BTSR_Auto_Identify(uint8_t BTSR_Id);//AUTOMATIC IDENTIFICATION PROCEDURE (IDENTIFY)
+uint8_t BTSR_Set_Parmeters(uint8_t BTSR_Id, uint8_t Application, uint8_t Yarn_Type );
+
+uint8_t BTSR_Send_Buf(uint8_t *Buf, uint8_t size);
+uint8_t BTSR_RECEIVE_Buf(uint8_t *Buf, uint8_t size);
+uint8_t BTSR_Calculate_CheckSum(uint8_t *Buf, uint8_t size_without_Checksum);
+uint8_t Check_Received_CheckSum(uint8_t CODE_STRING, uint8_t Function_Code, uint8_t *Buf, uint8_t size_include_Checksum);
+uint8_t BTSR_Send_Buf_3xADD1(uint8_t *Buf, uint8_t size);//Only for commands with 3 bytes with Address 1 (0x06/0xFD)
+void InitConsole_BTSR_UART4(int32_t ui32SysClock);
+
+#endif /* DRIVERS_UART_COMM_BTSR_BTSR_H_ */
diff --git a/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/WHS_Controller_Comm/WHS_UART/WHS_Uart.c b/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/WHS_Controller_Comm/WHS_UART/WHS_Uart.c
index 771a67f81..17427407e 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/WHS_Controller_Comm/WHS_UART/WHS_Uart.c
+++ b/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/WHS_Controller_Comm/WHS_UART/WHS_Uart.c
@@ -112,6 +112,7 @@ uint8_t Uart3_Transmit(uint8_t * Uart3_Tx_Buff, uint32_t Length)
uint8_t Uart3_Receive(uint8_t * Uart3_Rx_Buff, uint32_t RX_Length)
{
uint8_t i,Status = OK;
+ uint8_t timeout = 5;
uint8_t temp_buf[Size_Shinko_Res];
@@ -119,7 +120,11 @@ uint8_t Uart3_Receive(uint8_t * Uart3_Rx_Buff, uint32_t RX_Length)
{
for(i=0;i<RX_Length;i++)
{
- temp_buf[i] = ROM_UARTCharGet/*NonBlocking*/(UART3_BASE);//Receive data
+ while((UARTCharsAvail(UART3_BASE) != true) && timeout)
+ {
+ Task_sleep (eOneMillisecond);
+ }
+ temp_buf[i] = ROM_UARTCharGetNonBlocking(UART3_BASE);//Receive data
if ((i == 0) && (temp_buf[0] == 0) )// There isn't communication / The controller is not connected - Shinko_Header_Asccii_ACK = 0x06
{
Status = ERROR;
diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c
index 16334a0ad..c1eeff837 100644
--- a/Software/Embedded_SW/Embedded/Main.c
+++ b/Software/Embedded_SW/Embedded/Main.c
@@ -44,6 +44,7 @@
#include <Drivers/I2C_Communication/I2C.h>
#include "drivers/Uart_Comm/WHS_Controller_Comm/WHS_UART/WHS_Uart.h"
#include <Drivers/I2C_Communication/WHS_Card/IO_Extender_Ports_TCA9555/WHS_IO.h>
+#include "Drivers/Uart_Comm/BTSR/BTSR.h"
/*
#include "Drivers/SPI_SDCARD/SDSPI.h"
@@ -396,6 +397,9 @@ int main(void)
Trigger_RS485_Direction_Init();//init i/o
}
+ #ifdef USE_UART4_FOR_BTSR
+ InitConsole_BTSR_UART4(ui32SysClock);
+ #endif
//EMAC_initEMAC();
ControlInit();
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index 73282fa97..659a308db 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -52,6 +52,7 @@
#include "StateMachines/Initialization/PowerOffSequence.h"
#include "StateMachines/Initialization/PowerIdle.h"
+#include "Drivers/Uart_Comm/BTSR/BTSR.h"
extern HeadBoardTempSensConfigStruc HeadTempSensConfig[MAX_HEAD_CARD_TEMP_SENS_ID];
extern float NumberOfRotationPerPassage; // how many rotations per spool passage
@@ -90,7 +91,19 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
uint8_t ReadBackReg[1];
-
+ if(request->amount == 0xFEED)//BTSR Feeder
+ {
+ if((request->delay) >> 4 == 0)
+ {
+ response.progress = BTSR_Auto_Identify(request->delay & 0xF);
+ }
+ else
+ {
+ response.progress = BTSR_Set_Parmeters(request->delay & 0xF,(request->delay & 0xFF00)>>8,(request->delay & 0xFF0000)>>16);
+ }
+ response.has_progress = true;
+ }
+ else
if(request->amount == 0xacc1e)
{
response.progress = IDS_Cleaning_Move_Actuators();
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c
index e749b41ec..d07a4de59 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c
@@ -28,6 +28,12 @@
#include "Stub_Status.h"
#include "drivers/I2C_Communication/I2C.h"
+
+#include "Drivers/Uart_Comm/BTSR/BTSR.h"
+
+static uint8_t CODE_STRING;//BTSR ID needed to check the checksum, in the response for FUNCTION_STRING = 0x33/0x1C
+static uint8_t Function_Code;//needed to check the checksum, in the response for FUNCTION_STRING = 0x33/0x1C
+
void Stub_I2CRequest(MessageContainer* requestContainer)
{
@@ -91,33 +97,134 @@ void Stub_I2CWriteBytesRequest(MessageContainer* requestContainer)
response.slaveaddress = request->slaveaddress;
response.has_slaveaddress = true;
- //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytetowrite );
- //response.has_readbyte= true;
+// if(request->i2cid != 0xFEED)//BTSR FEEDR (Script identification)
+// {
+//
+// //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytetowrite );
+// //response.has_readbyte= true;
+//
+// //--------------------------
+//
+// //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytestwrite[0]);
+// //response.has_readbyte= true;
+//
+// uint8_t I2C_W_buf[256] = {0},i;
+//
+// for(i = 0; i < request->n_bytestwrite;i++)
+// {
+// I2C_W_buf[i] = (uint8_t)(request->bytestwrite[i] & 0xff);
+// }
+//
+// //response.readbytes = I2C_W_buf;
+// //response.n_readbytes = request->n_bytestwrite;
+//
+// //-------------------------------
+//
+//
+// //----------------------
+//
+// status = I2C_Write/*Write_I2C*/(request->i2cid, request->slaveaddress, I2C_W_buf, request->n_bytestwrite);
+//
+// }
+// else
+// {
+// //--------------- RS485 BTSR FEEDR ---------------
+//
+//
+// uint8_t BTSR_TX_Buff[Max_BTSR_TX_Bytes] = {0},i;
+//
+// for(i = 0; i < request->n_bytestwrite;i++)
+// {
+// BTSR_TX_Buff[i] = (uint8_t)(request->bytestwrite[i] & 0xff);
+// }
+//
+// CODE_STRING = BTSR_TX_Buff[0];
+// Function_Code = BTSR_TX_Buff[1];
+//
+// if(request->slaveaddress)//Auto_Calc_CheckSum
+// {
+// BTSR_Calculate_CheckSum(BTSR_TX_Buff,request->n_bytestwrite);
+// BTSR_Send_Buf(BTSR_TX_Buff, request->n_bytestwrite + 2);//2 bytes of CheckSum
+// }
+// else
+// {
+// BTSR_Send_Buf(BTSR_TX_Buff, request->n_bytestwrite);
+// }
+//
+// Task_sleep (10);
+// BTSR_RECEIVE_Buf(BTSR_RX_Buff, 0);//size not in use (need to ignore the returned error)
+//
+//
+// }
+ if((request->i2cid != 0xFEED) && (request->i2cid != 0xFEED3ADD))//BTSR FEEDR (Script identification)
+ {
- //--------------------------
+ //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytetowrite );
+ //response.has_readbyte= true;
- //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytestwrite[0]);
- //response.has_readbyte= true;
+ //--------------------------
- uint8_t I2C_W_buf[256] = {0},i;
+ //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytestwrite[0]);
+ //response.has_readbyte= true;
+
+ uint8_t I2C_W_buf[256] = {0},i;
+
+ for(i = 0; i < request->n_bytestwrite;i++)
+ {
+ I2C_W_buf[i] = (uint8_t)(request->bytestwrite[i] & 0xff);
+ }
+
+ //response.readbytes = I2C_W_buf;
+ //response.n_readbytes = request->n_bytestwrite;
+
+ //-------------------------------
+
+
+ //----------------------
+
+ status = I2C_Write/*Write_I2C*/(request->i2cid, request->slaveaddress, I2C_W_buf, request->n_bytestwrite);
- for(i = 0; i < request->n_bytestwrite;i++)
- {
- I2C_W_buf[i] = (uint8_t)(request->bytestwrite[i] & 0xff);
}
+ else
+ {
+ //--------------- RS485 BTSR FEEDR ---------------
- //response.readbytes = I2C_W_buf;
- //response.n_readbytes = request->n_bytestwrite;
- //-------------------------------
+ uint8_t BTSR_TX_Buff[Max_BTSR_TX_Bytes] = {0},i;
+ for(i = 0; i < request->n_bytestwrite;i++)
+ {
+ BTSR_TX_Buff[i] = (uint8_t)(request->bytestwrite[i] & 0xff);
+ }
- //----------------------
+ CODE_STRING = BTSR_TX_Buff[0];
- status = I2C_Write/*Write_I2C*/(request->i2cid, request->slaveaddress, I2C_W_buf, request->n_bytestwrite);
+ if(request->i2cid == 0xFEED3ADD)//Only for commands with 3 bytes with Address 1 (0x06/0xFD)
+ {
+ Function_Code = BTSR_TX_Buff[4];
- //--------------------------
+ BTSR_Send_Buf_3xADD1(BTSR_TX_Buff, request->n_bytestwrite);
+ }
+ else
+ {
+ Function_Code = BTSR_TX_Buff[1];
+
+ if(request->slaveaddress)//Auto_Calc_CheckSum
+ {
+ BTSR_Calculate_CheckSum(BTSR_TX_Buff,request->n_bytestwrite);
+ BTSR_Send_Buf(BTSR_TX_Buff, request->n_bytestwrite + 2);//2 bytes of CheckSum
+ }
+ else
+ {
+ BTSR_Send_Buf(BTSR_TX_Buff, request->n_bytestwrite);
+ }
+ }
+ //Task_sleep (10);
+ //BTSR_RECEIVE_Buf(BTSR_RX_Buff, 0);//size not in use (need to ignore the returned error)
+
+
+ }
status_response(status,&response.status, &response.statusword ,&response.has_statusword);
@@ -150,27 +257,48 @@ void Stub_I2CReadBytesRequest(MessageContainer* requestContainer)
response.slaveaddress = request->slaveaddress;
response.has_slaveaddress = true;
- status = I2C_Read/*Read_I2C*/(request->i2cid, request->slaveaddress, I2C_R_buf, request->numberofbytestoread);
+ if(request->i2cid != 0xFEED)//BTSR FEEDR (Script identification)
+ {
- //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytetowrite );
- //response.has_readbyte= true;
+ status = I2C_Read/*Read_I2C*/(request->i2cid, request->slaveaddress, I2C_R_buf, request->numberofbytestoread);
- //--------------------------
+ //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytetowrite );
+ //response.has_readbyte= true;
- //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytestwrite[0]);
- //response.has_readbyte= true;
+ //--------------------------
- //uint32_t I2C_W_buf[256] = {0},i;
+ //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytestwrite[0]);
+ //response.has_readbyte= true;
- for(i = 0; i < request->numberofbytestoread;i++)
- {
- I2C_R32_buf[i]= (uint32_t)I2C_R_buf[i] ;
+ //uint32_t I2C_W_buf[256] = {0},i;
+
+ for(i = 0; i < request->numberofbytestoread;i++)
+ {
+ I2C_R32_buf[i]= (uint32_t)I2C_R_buf[i] ;
+ }
+
+
+ response.readbytes = I2C_R32_buf;
+ response.n_readbytes = request->numberofbytestoread;
+
+ //-------------------------------
}
+ else
+ {
+ //--------------- RS485 BTSR FEEDR ---------------
+ for(i = 0; i < request->numberofbytestoread - request->slaveaddress;i++)
+ {
+ I2C_R32_buf[i]= (uint32_t)BTSR_RX_Buff[i] ;
+ }
- response.readbytes = I2C_R32_buf;
- response.n_readbytes = request->numberofbytestoread;
+ if(((request->numberofbytestoread- request->slaveaddress) > 2) && (request->slaveaddress))//Verify_Received_CheckSum
+ {
+ I2C_R32_buf[i] = Check_Received_CheckSum(CODE_STRING, Function_Code, BTSR_RX_Buff, (request->numberofbytestoread - request->slaveaddress));//use the next byte to return the checksum status
+ }
+ response.readbytes = I2C_R32_buf;
+ response.n_readbytes = request->numberofbytestoread;
+ }
- //-------------------------------
status_response(status,&response.status, &response.statusword ,&response.has_statusword);
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
index 8b72c1a30..4ced1e5fe 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
@@ -714,6 +714,10 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue)
{
NormalizedError = (-1*NormalizedError);
}
+/*#ifdef BTSR_ROTATED_WINDER_TFU
+ if (index == WINDER_MOTOR)
+ TranslatedReadValue = (-1*TranslatedReadValue);
+#endif*/
MotorControlConfig[index].m_mesuredParam = NormalizedError;
DancerError[DancerId] = NormalizedError;
diff --git a/Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip b/Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip
index 916ca7451..ccac49ada 100644
--- a/Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip
+++ b/Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip
@@ -29,10 +29,10 @@
<ROW Property="ExtractFilesFirst" Value="1"/>
<ROW Property="LogoIcon" Value="externalui.ico" MultiBuildValue="DefaultBuild:machine_full_0UZ_icon.ico_1" Type="1" MsiKey="LogoIcon"/>
<ROW Property="Manufacturer" Value="Twine Solutions LTD"/>
- <ROW Property="ProductCode" Value="1033:{A2A478FB-D160-477D-8870-101D803596FB} " Type="16"/>
+ <ROW Property="ProductCode" Value="1033:{0DFFFC98-851D-497C-88CE-43D0B7486DED} " Type="16"/>
<ROW Property="ProductLanguage" Value="1033"/>
<ROW Property="ProductName" Value="Tango FSE"/>
- <ROW Property="ProductVersion" Value="1.1.2.0" Type="32"/>
+ <ROW Property="ProductVersion" Value="1.1.3.0" Type="32"/>
<ROW Property="RUNAPPLICATION" Value="1" Type="4"/>
<ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND;AI_SETUPEXEPATH;SETUPEXEDIR"/>
<ROW Property="UpgradeCode" Value="{0E13CB0D-89F7-465E-9F56-F1CBD6773E6E}"/>
@@ -53,26 +53,11 @@
<ROW Directory="APPDIR" Directory_Parent="TARGETDIR" DefaultDir="APPDIR:." IsPseudoRoot="1" DirectoryOptions="3"/>
<ROW Directory="DesktopFolder" Directory_Parent="TARGETDIR" DefaultDir="DESKTO~1|DesktopFolder" IsPseudoRoot="1"/>
<ROW Directory="ProgramMenuFolder" Directory_Parent="TARGETDIR" DefaultDir="PROGRA~1|ProgramMenuFolder" IsPseudoRoot="1"/>
- <ROW Directory="ProtoCompilers_Dir" Directory_Parent="APPDIR" DefaultDir="PROTOC~1|ProtoCompilers" DirectoryOptions="3"/>
<ROW Directory="SHORTCUTDIR" Directory_Parent="TARGETDIR" DefaultDir="SHORTC~1|SHORTCUTDIR" IsPseudoRoot="1"/>
<ROW Directory="SQLExaminer_Dir" Directory_Parent="APPDIR" DefaultDir="SQLEXA~1|SQLExaminer" DirectoryOptions="3"/>
<ROW Directory="TARGETDIR" DefaultDir="SourceDir"/>
- <ROW Directory="cs_Dir" Directory_Parent="APPDIR" DefaultDir="cs" DirectoryOptions="3"/>
- <ROW Directory="de_Dir" Directory_Parent="APPDIR" DefaultDir="de" DirectoryOptions="3"/>
- <ROW Directory="es_Dir" Directory_Parent="APPDIR" DefaultDir="es" DirectoryOptions="3"/>
- <ROW Directory="fr_Dir" Directory_Parent="APPDIR" DefaultDir="fr" DirectoryOptions="3"/>
- <ROW Directory="it_Dir" Directory_Parent="APPDIR" DefaultDir="it" DirectoryOptions="3"/>
- <ROW Directory="ja_Dir" Directory_Parent="APPDIR" DefaultDir="ja" DirectoryOptions="3"/>
- <ROW Directory="ko_Dir" Directory_Parent="APPDIR" DefaultDir="ko" DirectoryOptions="3"/>
- <ROW Directory="pl_Dir" Directory_Parent="APPDIR" DefaultDir="pl" DirectoryOptions="3"/>
- <ROW Directory="ptBR_Dir" Directory_Parent="APPDIR" DefaultDir="pt-BR" DirectoryOptions="3"/>
- <ROW Directory="roslyn_Dir" Directory_Parent="APPDIR" DefaultDir="roslyn" DirectoryOptions="3"/>
- <ROW Directory="ru_Dir" Directory_Parent="APPDIR" DefaultDir="ru" DirectoryOptions="3"/>
- <ROW Directory="tr_Dir" Directory_Parent="APPDIR" DefaultDir="tr" DirectoryOptions="3"/>
<ROW Directory="win7x64_Dir" Directory_Parent="APPDIR" DefaultDir="win7-x64" DirectoryOptions="3"/>
<ROW Directory="win7x86_Dir" Directory_Parent="APPDIR" DefaultDir="win7-x86" DirectoryOptions="3"/>
- <ROW Directory="zhHans_Dir" Directory_Parent="APPDIR" DefaultDir="zh-Hans" DirectoryOptions="3"/>
- <ROW Directory="zhHant_Dir" Directory_Parent="APPDIR" DefaultDir="zh-Hant" DirectoryOptions="3"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiCompsComponent">
<ROW Component="AI_ExePath" ComponentId="{C34670D7-E692-46D3-8154-6A8F253B99E5}" Directory_="APPDIR" Attributes="4" KeyPath="AI_ExePath"/>
@@ -107,22 +92,14 @@
<ROW Component="MaterialDesignThemes.Wpf.dll" ComponentId="{D4A89F22-F969-46C3-915C-C565E7BE99D1}" Directory_="APPDIR" Attributes="0" KeyPath="MaterialDesignThemes.Wpf.dll"/>
<ROW Component="Microsoft.AspNet.SignalR.Client.dll" ComponentId="{A6A1BE43-A965-4718-8B9B-E8BB2D2B6FA9}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.AspNet.SignalR.Client.dll"/>
<ROW Component="Microsoft.Azure.ActiveDirectory.GraphClient.dll" ComponentId="{623FE6DD-F44D-4E99-8FD5-E54A608BE511}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.Azure.ActiveDirectory.GraphClient.dll"/>
- <ROW Component="Microsoft.Build.Tasks.CodeAnalysis.dll" ComponentId="{E9B1B6BD-3C60-47D4-B989-D2F075FA1C68}" Directory_="roslyn_Dir" Attributes="0" KeyPath="Microsoft.Build.Tasks.CodeAnalysis.dll"/>
- <ROW Component="Microsoft.CodeAnalysis.CSharp.Scripting.dll" ComponentId="{ACF48BD1-792B-451A-AD96-C4637D7E6DD6}" Directory_="roslyn_Dir" Attributes="0" KeyPath="Microsoft.CodeAnalysis.CSharp.Scripting.dll"/>
<ROW Component="Microsoft.CodeAnalysis.CSharp.Scripting.dll_1" ComponentId="{2D21153E-2576-4B08-8FFD-966EA9074B3E}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.CodeAnalysis.CSharp.Scripting.dll_1"/>
- <ROW Component="Microsoft.CodeAnalysis.CSharp.dll" ComponentId="{C61CE6FB-26D0-4665-A4C6-4433B90C371F}" Directory_="roslyn_Dir" Attributes="0" KeyPath="Microsoft.CodeAnalysis.CSharp.dll"/>
<ROW Component="Microsoft.CodeAnalysis.CSharp.dll_1" ComponentId="{19BBB256-0863-41A0-A93F-B98CE50E55F0}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.CodeAnalysis.CSharp.dll_1"/>
- <ROW Component="Microsoft.CodeAnalysis.Scripting.dll" ComponentId="{01064D65-A5F3-4860-A695-D8ABC653D68A}" Directory_="roslyn_Dir" Attributes="0" KeyPath="Microsoft.CodeAnalysis.Scripting.dll"/>
<ROW Component="Microsoft.CodeAnalysis.Scripting.dll_1" ComponentId="{D262D06F-31E7-4CAE-9B99-6E0A8D0389EF}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.CodeAnalysis.Scripting.dll_1"/>
- <ROW Component="Microsoft.CodeAnalysis.VisualBasic.dll" ComponentId="{4AA227FD-D16D-4266-9451-E7E7FCE75BD9}" Directory_="roslyn_Dir" Attributes="0" KeyPath="Microsoft.CodeAnalysis.VisualBasic.dll"/>
<ROW Component="Microsoft.CodeAnalysis.Workspaces.dll" ComponentId="{49A621D3-E54C-46A2-8A72-BD89E56DE547}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.CodeAnalysis.Workspaces.dll"/>
- <ROW Component="Microsoft.CodeAnalysis.dll" ComponentId="{7F02FF98-8C8F-4460-A63C-ABD1BD970DEE}" Directory_="roslyn_Dir" Attributes="0" KeyPath="Microsoft.CodeAnalysis.dll"/>
<ROW Component="Microsoft.CodeAnalysis.dll_1" ComponentId="{D74916F9-4E71-47FC-99FC-4535D7D867CE}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.CodeAnalysis.dll_1"/>
<ROW Component="Microsoft.Data.Edm.dll" ComponentId="{48D510EC-A662-45DF-9EE4-DDC38BC77EFC}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.Data.Edm.dll"/>
<ROW Component="Microsoft.Data.OData.dll" ComponentId="{0916ABDB-52AA-410D-899B-0E89ED90AD69}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.Data.OData.dll"/>
<ROW Component="Microsoft.Data.Services.Client.dll" ComponentId="{259E96BC-E40A-4F26-A72F-E25D9582376E}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.Data.Services.Client.dll"/>
- <ROW Component="Microsoft.DiaSymReader.Native.amd64.dll" ComponentId="{66D1DF1B-6207-4513-8BE5-B37F798F4468}" Directory_="roslyn_Dir" Attributes="256" KeyPath="Microsoft.DiaSymReader.Native.amd64.dll"/>
- <ROW Component="Microsoft.DiaSymReader.Native.x86.dll" ComponentId="{E37EEF1A-F5ED-49AE-AC04-D480040A5D37}" Directory_="roslyn_Dir" Attributes="0" KeyPath="Microsoft.DiaSymReader.Native.x86.dll"/>
<ROW Component="Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll" ComponentId="{9639E91B-464A-4C60-9703-1AAF4503B269}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll"/>
<ROW Component="Microsoft.IdentityModel.Clients.ActiveDirectory.dll" ComponentId="{C8FF51E6-B8BB-401D-BD03-58FD08E4C389}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.IdentityModel.Clients.ActiveDirectory.dll"/>
<ROW Component="Microsoft.ML.Core.dll" ComponentId="{A4F31C02-9525-4D41-A19D-C45FAC3A98D1}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.ML.Core.dll"/>
@@ -144,152 +121,21 @@
<ROW Component="Microsoft.SqlServer.SqlClrProvider.dll" ComponentId="{663B932B-CC2D-4C7A-BFC6-C24A28947911}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.SqlServer.SqlClrProvider.dll"/>
<ROW Component="Microsoft.SqlServer.SqlEnum.dll" ComponentId="{2C0BB304-99D7-40AF-8CC5-190214B83909}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.SqlServer.SqlEnum.dll"/>
<ROW Component="Microsoft.TeamFoundation.Client.dll" ComponentId="{1B6E9891-BC09-4453-9F52-574F24B863C3}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.TeamFoundation.Client.dll"/>
- <ROW Component="Microsoft.TeamFoundation.Client.resources.dll" ComponentId="{59CC889C-6AF0-44B8-9D17-E6F37A3A340A}" Directory_="cs_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Client.resources.dll"/>
- <ROW Component="Microsoft.TeamFoundation.Client.resources.dll_1" ComponentId="{F6A263BF-6769-4EAB-9632-B66443846EC5}" Directory_="de_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Client.resources.dll_1"/>
- <ROW Component="Microsoft.TeamFoundation.Client.resources.dll_10" ComponentId="{4B4121DC-805F-46D0-8A29-CCCDE3B57DFC}" Directory_="tr_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Client.resources.dll_10"/>
- <ROW Component="Microsoft.TeamFoundation.Client.resources.dll_11" ComponentId="{28D69980-FDC8-4572-AFD2-B42610EBC63F}" Directory_="zhHans_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Client.resources.dll_11"/>
- <ROW Component="Microsoft.TeamFoundation.Client.resources.dll_12" ComponentId="{EEF7B48C-535A-4FEA-8511-A194D7A71086}" Directory_="zhHant_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Client.resources.dll_12"/>
- <ROW Component="Microsoft.TeamFoundation.Client.resources.dll_2" ComponentId="{451265D8-47B4-4AA4-BCFD-ECB7DBDF02FF}" Directory_="es_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Client.resources.dll_2"/>
- <ROW Component="Microsoft.TeamFoundation.Client.resources.dll_3" ComponentId="{EAE0EB7E-2C35-4682-8E17-243A2D919CB7}" Directory_="fr_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Client.resources.dll_3"/>
- <ROW Component="Microsoft.TeamFoundation.Client.resources.dll_4" ComponentId="{5DE276A9-FD05-4274-95BB-CE5A9CDF80E8}" Directory_="it_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Client.resources.dll_4"/>
- <ROW Component="Microsoft.TeamFoundation.Client.resources.dll_5" ComponentId="{A01373DC-D662-4F04-9E0E-E63A5242E1E7}" Directory_="ja_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Client.resources.dll_5"/>
- <ROW Component="Microsoft.TeamFoundation.Client.resources.dll_6" ComponentId="{49DDE6A5-3D87-4CF1-B822-F17AA86F6EB3}" Directory_="ko_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Client.resources.dll_6"/>
- <ROW Component="Microsoft.TeamFoundation.Client.resources.dll_7" ComponentId="{DA1707EA-1737-4656-BF04-E8468CBFBFD3}" Directory_="pl_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Client.resources.dll_7"/>
- <ROW Component="Microsoft.TeamFoundation.Client.resources.dll_8" ComponentId="{C564F624-D7BF-480E-B01A-46A896C927C1}" Directory_="ptBR_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Client.resources.dll_8"/>
- <ROW Component="Microsoft.TeamFoundation.Client.resources.dll_9" ComponentId="{A30CD447-3BAF-422F-B4AA-18B84C80DF4E}" Directory_="ru_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Client.resources.dll_9"/>
<ROW Component="Microsoft.TeamFoundation.Common.dll" ComponentId="{F1ABF859-C507-4C36-80D6-171C43D966EB}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.TeamFoundation.Common.dll"/>
- <ROW Component="Microsoft.TeamFoundation.Common.resources.dll" ComponentId="{EA3B3582-94D4-4A72-AB95-8732A27079E9}" Directory_="cs_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Common.resources.dll"/>
- <ROW Component="Microsoft.TeamFoundation.Common.resources.dll_1" ComponentId="{B60F93AA-73A7-41F4-A902-29921972DEC6}" Directory_="de_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Common.resources.dll_1"/>
- <ROW Component="Microsoft.TeamFoundation.Common.resources.dll_10" ComponentId="{F3064494-0D78-47D8-AB7F-85505B873C9A}" Directory_="tr_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Common.resources.dll_10"/>
- <ROW Component="Microsoft.TeamFoundation.Common.resources.dll_11" ComponentId="{7DB11514-A5AE-4E73-8F05-FF641F1FACD5}" Directory_="zhHans_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Common.resources.dll_11"/>
- <ROW Component="Microsoft.TeamFoundation.Common.resources.dll_12" ComponentId="{22D71F55-E161-48AB-8B08-895617F02C8F}" Directory_="zhHant_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Common.resources.dll_12"/>
- <ROW Component="Microsoft.TeamFoundation.Common.resources.dll_2" ComponentId="{4665CEB8-03D7-4251-BFB0-C4290A3C6E3F}" Directory_="es_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Common.resources.dll_2"/>
- <ROW Component="Microsoft.TeamFoundation.Common.resources.dll_3" ComponentId="{1D9DC18C-4AAA-48F7-B247-8271592DBD3C}" Directory_="fr_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Common.resources.dll_3"/>
- <ROW Component="Microsoft.TeamFoundation.Common.resources.dll_4" ComponentId="{11A5ADFD-4AB2-4F88-8197-DA067AF2E73D}" Directory_="it_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Common.resources.dll_4"/>
- <ROW Component="Microsoft.TeamFoundation.Common.resources.dll_5" ComponentId="{9ED9A3AE-BA32-4412-B63C-1C77470F8578}" Directory_="ja_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Common.resources.dll_5"/>
- <ROW Component="Microsoft.TeamFoundation.Common.resources.dll_6" ComponentId="{6F4AAE41-F676-4C68-A922-BA1FBE794AEC}" Directory_="ko_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Common.resources.dll_6"/>
- <ROW Component="Microsoft.TeamFoundation.Common.resources.dll_7" ComponentId="{6971246D-0F5E-49B1-831E-A0171980D2EC}" Directory_="pl_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Common.resources.dll_7"/>
- <ROW Component="Microsoft.TeamFoundation.Common.resources.dll_8" ComponentId="{C47F8B92-7874-4632-9383-AC06406D33EE}" Directory_="ptBR_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Common.resources.dll_8"/>
- <ROW Component="Microsoft.TeamFoundation.Common.resources.dll_9" ComponentId="{31ACC46E-6CD4-4658-A35E-1D8B7A8E287C}" Directory_="ru_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Common.resources.dll_9"/>
<ROW Component="Microsoft.TeamFoundation.Core.WebApi.dll" ComponentId="{18ABDE2D-4B43-423F-BE25-4197869067D2}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.TeamFoundation.Core.WebApi.dll"/>
- <ROW Component="Microsoft.TeamFoundation.Core.WebApi.resources.dll" ComponentId="{2D0AD45F-7673-45B1-B7DE-6ED5FD5D1C1C}" Directory_="cs_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Core.WebApi.resources.dll"/>
- <ROW Component="Microsoft.TeamFoundation.Core.WebApi.resources.dll_1" ComponentId="{399C34A8-C557-465F-9CE7-8D863DC35960}" Directory_="de_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Core.WebApi.resources.dll_1"/>
- <ROW Component="Microsoft.TeamFoundation.Core.WebApi.resources.dll_10" ComponentId="{645F3E5A-25A0-46F4-8D75-64572CE5FAFD}" Directory_="tr_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Core.WebApi.resources.dll_10"/>
- <ROW Component="Microsoft.TeamFoundation.Core.WebApi.resources.dll_11" ComponentId="{CD85572E-6DF9-4C95-B7D4-293D36C2ED9C}" Directory_="zhHans_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Core.WebApi.resources.dll_11"/>
- <ROW Component="Microsoft.TeamFoundation.Core.WebApi.resources.dll_12" ComponentId="{9CA68B4D-015D-42DF-BCD4-DBF81E1E1D7C}" Directory_="zhHant_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Core.WebApi.resources.dll_12"/>
- <ROW Component="Microsoft.TeamFoundation.Core.WebApi.resources.dll_2" ComponentId="{3DFDF9E4-01FA-4B19-B7C5-87539A81AE95}" Directory_="es_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Core.WebApi.resources.dll_2"/>
- <ROW Component="Microsoft.TeamFoundation.Core.WebApi.resources.dll_3" ComponentId="{E97D618F-4A64-4E09-8239-027E8D0D1D55}" Directory_="fr_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Core.WebApi.resources.dll_3"/>
- <ROW Component="Microsoft.TeamFoundation.Core.WebApi.resources.dll_4" ComponentId="{DCEF19EC-11AF-4856-ADE5-8E31BCC34E26}" Directory_="it_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Core.WebApi.resources.dll_4"/>
- <ROW Component="Microsoft.TeamFoundation.Core.WebApi.resources.dll_5" ComponentId="{4C9FDBB0-86CA-43EB-B4BE-84C381E4DE90}" Directory_="ja_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Core.WebApi.resources.dll_5"/>
- <ROW Component="Microsoft.TeamFoundation.Core.WebApi.resources.dll_6" ComponentId="{A145D9F0-336C-4526-9711-7BAF542917D2}" Directory_="ko_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Core.WebApi.resources.dll_6"/>
- <ROW Component="Microsoft.TeamFoundation.Core.WebApi.resources.dll_7" ComponentId="{969F2A34-0B63-48BC-9965-46F96F4A553A}" Directory_="pl_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Core.WebApi.resources.dll_7"/>
- <ROW Component="Microsoft.TeamFoundation.Core.WebApi.resources.dll_8" ComponentId="{D4529D8D-8309-44C7-A8A8-13817D4A45DE}" Directory_="ptBR_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Core.WebApi.resources.dll_8"/>
- <ROW Component="Microsoft.TeamFoundation.Core.WebApi.resources.dll_9" ComponentId="{350A6F82-9404-464A-9590-37B606F50BAE}" Directory_="ru_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.Core.WebApi.resources.dll_9"/>
<ROW Component="Microsoft.TeamFoundation.Diff.dll" ComponentId="{A9022AA7-0A3A-4349-9FDA-F8E0D686B8D6}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.TeamFoundation.Diff.dll"/>
<ROW Component="Microsoft.TeamFoundation.Work.WebApi.dll" ComponentId="{6588A696-5B35-4047-BFB4-0BB3DF658E1C}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.TeamFoundation.Work.WebApi.dll"/>
<ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.dll" ComponentId="{E67B3909-1475-4D71-8B9B-243446473DB2}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.dll"/>
<ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.dll" ComponentId="{76044DC4-0F7E-46FD-A7A7-841B742C6983}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.dll"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resour_10" ComponentId="{56C327F2-E7C6-468A-B8BC-C0BBB4927463}" Directory_="tr_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.res_10"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resour_11" ComponentId="{E025D497-B6DF-4635-A5DB-16FA9D47C4FB}" Directory_="zhHans_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.res_11"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resour_12" ComponentId="{225CD7CB-1156-4B96-BC5D-90290C9ED249}" Directory_="zhHant_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.res_12"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_1" ComponentId="{9B9034F7-6A6D-41B8-A472-5941568055D9}" Directory_="de_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_1"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_2" ComponentId="{939372BA-4ED7-46A4-A13E-E3EF6B99E210}" Directory_="es_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_2"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_3" ComponentId="{356BEAA8-08C2-4EC2-B1B9-4CC0A2BC75BA}" Directory_="fr_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_3"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_4" ComponentId="{CD106466-F9A4-46F9-831F-24898F2E9643}" Directory_="it_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_4"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_5" ComponentId="{8FF3FEEB-3EC0-497B-849A-3279B6A9ECAD}" Directory_="ja_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_5"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_6" ComponentId="{D6F205A0-FAD9-49F5-9188-363C6543B9DB}" Directory_="ko_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_6"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_7" ComponentId="{606ADEEE-4A0F-40DD-863D-A3B09D04DA11}" Directory_="pl_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_7"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_8" ComponentId="{0D8F9AF7-A7FB-42F7-A759-E8CDA4C52254}" Directory_="ptBR_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_8"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_9" ComponentId="{AC559E72-881B-44D2-93D0-D596A1B80F5B}" Directory_="ru_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_9"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources" ComponentId="{CD5B4444-FA50-4425-A20B-7B6043012B8B}" Directory_="cs_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resour"/>
<ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.dll" ComponentId="{3DCDC5D8-66CD-423F-95DD-A8B66C057978}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.dll"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" ComponentId="{C0A6B118-6014-48EF-9FC5-78B0F8B52114}" Directory_="cs_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_1" ComponentId="{A86A2C27-5AC5-43CE-B5C2-617DECD0F19F}" Directory_="de_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_1"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_10" ComponentId="{1BA93CF1-9FCA-4292-811C-DF5678566B5B}" Directory_="tr_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_10"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_11" ComponentId="{10B586BB-7A6F-4385-85DA-FC7E641CA824}" Directory_="zhHans_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_11"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_12" ComponentId="{AA86C63A-FFFE-433D-A90A-F6C66CE0DA82}" Directory_="zhHant_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_12"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_2" ComponentId="{65FC10FA-6A2F-4B1F-8687-8C40483BB33D}" Directory_="es_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_2"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_3" ComponentId="{2F386AF7-5F38-4316-956A-16CBCAE86FB7}" Directory_="fr_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_3"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_4" ComponentId="{2267ACC1-08A0-4232-8A81-15DE8530E2E6}" Directory_="it_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_4"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_5" ComponentId="{AF234A93-3C90-4051-838F-85C7CD56BFBD}" Directory_="ja_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_5"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_6" ComponentId="{6D7B62B9-61CA-489E-A167-9B2106460E15}" Directory_="ko_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_6"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_7" ComponentId="{7D377CE7-546D-45D6-ABE4-68E6C2C4CC25}" Directory_="pl_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_7"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_8" ComponentId="{870BD9B1-6F9A-4B48-8C65-EAA8FBB14BFD}" Directory_="ptBR_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_8"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_9" ComponentId="{CDA1359C-D801-498D-8B09-0D7B4FC1AF9E}" Directory_="ru_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_9"/>
<ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Common.dll" ComponentId="{CD70CBEE-9217-4403-9325-967B0A2555CD}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Common.dll"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" ComponentId="{D8284A55-63EB-47E7-AF18-CE4CC28A0E08}" Directory_="cs_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_1" ComponentId="{A4F8038B-EDC1-41B6-932D-5C352EABE140}" Directory_="de_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_1"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_10" ComponentId="{E3C900B1-7252-4A55-BFD8-8878DABF0376}" Directory_="tr_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_10"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_11" ComponentId="{7A292621-9B74-4A16-BEBA-96812A6C1F12}" Directory_="zhHans_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_11"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_12" ComponentId="{86BB7D0E-1E0F-4AE1-9787-6EA11D20AAE8}" Directory_="zhHant_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_12"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_2" ComponentId="{969C8809-7BA5-4199-B43A-568372D65BC9}" Directory_="es_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_2"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_3" ComponentId="{D76A8D16-1FF0-456A-BFCC-9582FE49A831}" Directory_="fr_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_3"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_4" ComponentId="{2ABA048D-6EA1-4864-A022-EB938F228660}" Directory_="it_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_4"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_5" ComponentId="{64EF4375-DDD0-4F35-B7EE-70EB9AB5DEA4}" Directory_="ja_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_5"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_6" ComponentId="{33582C1C-A3A7-4102-829E-20644C231715}" Directory_="ko_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_6"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_7" ComponentId="{AE537760-C5B8-4BC9-896D-E5B9FF5A581C}" Directory_="pl_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_7"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_8" ComponentId="{70BAEB3C-8895-4362-827F-B732C01261A8}" Directory_="ptBR_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_8"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_9" ComponentId="{6D99E780-E8C7-4DA5-BBCC-844190AE43CC}" Directory_="ru_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_9"/>
<ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Proxy.dll" ComponentId="{A7420E27-FCC6-4CBA-A635-1C4F527C515A}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Proxy.dll"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" ComponentId="{A10E1D27-584D-4C04-97CF-E04B3DB0FBEB}" Directory_="cs_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_1" ComponentId="{982B256A-6A77-45D7-90D3-AB23A36C7751}" Directory_="de_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_1"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_10" ComponentId="{0670E158-7D7B-4284-A1A9-48256BF5F7A0}" Directory_="tr_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_10"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_11" ComponentId="{A839B304-4438-455C-BA60-EE007D44C2B6}" Directory_="zhHans_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_11"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_12" ComponentId="{8723AC9C-4D53-4505-97A6-1A6F22E3F770}" Directory_="zhHant_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_12"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_2" ComponentId="{FDAA2F80-7A39-4BEA-91E1-7CCE0CFBBCCE}" Directory_="es_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_2"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_3" ComponentId="{FF598C95-D45B-4EB2-8A6E-2D63C6595022}" Directory_="fr_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_3"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_4" ComponentId="{2758F86C-1E98-45BA-B1E8-56653E0B31AC}" Directory_="it_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_4"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_5" ComponentId="{2DFEB961-6B88-4ABF-8821-6BC99CAB27B8}" Directory_="ja_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_5"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_6" ComponentId="{EDE6A5B8-F8AF-4647-A5C5-694FC4CE37C0}" Directory_="ko_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_6"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_7" ComponentId="{20B1321E-0148-4E4A-94CA-2E7C64BE6B26}" Directory_="pl_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_7"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_8" ComponentId="{62DEC1A7-D1A4-415D-9509-F2B6A4B77FD0}" Directory_="ptBR_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_8"/>
- <ROW Component="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_9" ComponentId="{46B148D2-5B19-48F8-AB97-EBEB8D221569}" Directory_="ru_Dir" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_9"/>
<ROW Component="Microsoft.TeamFoundation.WorkItemTracking.WebApi.dll" ComponentId="{73EED192-EA47-4773-8D12-E0F9FB011EB8}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.TeamFoundation.WorkItemTracking.WebApi.dll"/>
<ROW Component="Microsoft.VisualStudio.Services.Client.Interactive.dll" ComponentId="{6502617E-EF70-48C2-A9A6-80A30BA01489}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Client.Interactive.dll"/>
- <ROW Component="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" ComponentId="{4989C058-5185-43C1-A9C4-E03967D67BCC}" Directory_="cs_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll"/>
- <ROW Component="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_1" ComponentId="{897C7D9F-194B-4DA9-9E6A-FEE2189D7DE0}" Directory_="de_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_1"/>
- <ROW Component="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_10" ComponentId="{CCED0C38-3410-404A-B53C-CA38266E8FC5}" Directory_="tr_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_10"/>
- <ROW Component="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_11" ComponentId="{068EE442-6DF2-4FD7-B99E-F5EFEA00724F}" Directory_="zhHans_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_11"/>
- <ROW Component="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_12" ComponentId="{D5C14DE8-B3AC-4D87-9734-B0F85EA4A03A}" Directory_="zhHant_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_12"/>
- <ROW Component="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_2" ComponentId="{BDE57D4E-8A9A-4CD9-8331-D737AB2DE794}" Directory_="es_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_2"/>
- <ROW Component="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_3" ComponentId="{9D70FB0A-6D0E-466B-88D0-6E3088BA16F2}" Directory_="fr_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_3"/>
- <ROW Component="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_4" ComponentId="{DD7203BD-8B28-4830-A1D7-DE9142971EB2}" Directory_="it_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_4"/>
- <ROW Component="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_5" ComponentId="{0AE680AF-1041-4B90-A413-26C264264DC7}" Directory_="ja_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_5"/>
- <ROW Component="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_6" ComponentId="{1161D2C6-AD07-494B-9D66-26F0E415828F}" Directory_="ko_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_6"/>
- <ROW Component="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_7" ComponentId="{786A684F-C4EA-415F-AC39-CC605197F8E2}" Directory_="pl_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_7"/>
- <ROW Component="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_8" ComponentId="{30FBBBD6-0638-43A7-9AEA-890EB2660AED}" Directory_="ptBR_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_8"/>
- <ROW Component="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_9" ComponentId="{25A8738B-7D25-43EA-81B6-38234160C2C1}" Directory_="ru_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_9"/>
<ROW Component="Microsoft.VisualStudio.Services.Common.dll" ComponentId="{13946089-BCD5-48A5-A1A6-3891EF5D890C}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Common.dll"/>
- <ROW Component="Microsoft.VisualStudio.Services.Common.resources.dll" ComponentId="{442BE8B1-F07D-4380-B6D0-8E09C3212D6B}" Directory_="cs_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Common.resources.dll"/>
- <ROW Component="Microsoft.VisualStudio.Services.Common.resources.dll_1" ComponentId="{19C49055-07E3-48E0-921D-462F52DED0DB}" Directory_="de_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Common.resources.dll_1"/>
- <ROW Component="Microsoft.VisualStudio.Services.Common.resources.dll_10" ComponentId="{3708A1BA-6414-4E85-A943-B1A311C1D315}" Directory_="tr_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Common.resources.dll_10"/>
- <ROW Component="Microsoft.VisualStudio.Services.Common.resources.dll_11" ComponentId="{19872252-C515-48A4-8224-460ED5F983CC}" Directory_="zhHans_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Common.resources.dll_11"/>
- <ROW Component="Microsoft.VisualStudio.Services.Common.resources.dll_12" ComponentId="{023B3ADA-CD42-4C96-8090-CCC135114AC2}" Directory_="zhHant_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Common.resources.dll_12"/>
- <ROW Component="Microsoft.VisualStudio.Services.Common.resources.dll_2" ComponentId="{68BDAD2C-D571-46E2-941F-26F5668B46B6}" Directory_="es_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Common.resources.dll_2"/>
- <ROW Component="Microsoft.VisualStudio.Services.Common.resources.dll_3" ComponentId="{B47AB22A-F20D-4842-BEBB-BDECE7CED7AB}" Directory_="fr_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Common.resources.dll_3"/>
- <ROW Component="Microsoft.VisualStudio.Services.Common.resources.dll_4" ComponentId="{756A515D-DEB1-4C37-9C30-0A9C63F3BF00}" Directory_="it_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Common.resources.dll_4"/>
- <ROW Component="Microsoft.VisualStudio.Services.Common.resources.dll_5" ComponentId="{D67F2F64-455B-4181-8228-9FC044B3A09A}" Directory_="ja_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Common.resources.dll_5"/>
- <ROW Component="Microsoft.VisualStudio.Services.Common.resources.dll_6" ComponentId="{32901DF1-D716-4C78-B5D3-BCE50D48AF51}" Directory_="ko_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Common.resources.dll_6"/>
- <ROW Component="Microsoft.VisualStudio.Services.Common.resources.dll_7" ComponentId="{D182917E-B65C-49A7-AFA1-46ADB10C5D92}" Directory_="pl_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Common.resources.dll_7"/>
- <ROW Component="Microsoft.VisualStudio.Services.Common.resources.dll_8" ComponentId="{64B7CC4B-E67A-4056-BBD8-CEB84E9B70D3}" Directory_="ptBR_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Common.resources.dll_8"/>
- <ROW Component="Microsoft.VisualStudio.Services.Common.resources.dll_9" ComponentId="{252D7B4A-2FAA-4432-B1EE-559108D0AD6A}" Directory_="ru_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.Common.resources.dll_9"/>
<ROW Component="Microsoft.VisualStudio.Services.WebApi.dll" ComponentId="{C7189E85-DD7D-4AE6-B417-4EC21AF1CE83}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.WebApi.dll"/>
- <ROW Component="Microsoft.VisualStudio.Services.WebApi.resources.dll" ComponentId="{6271A81D-CD39-462F-9ECA-B942F326E844}" Directory_="cs_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.WebApi.resources.dll"/>
- <ROW Component="Microsoft.VisualStudio.Services.WebApi.resources.dll_1" ComponentId="{D53BB3F6-FFDC-43B9-A60D-70155AF1254F}" Directory_="de_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.WebApi.resources.dll_1"/>
- <ROW Component="Microsoft.VisualStudio.Services.WebApi.resources.dll_10" ComponentId="{8253B392-C081-4725-97FA-6BD6B9AD325C}" Directory_="tr_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.WebApi.resources.dll_10"/>
- <ROW Component="Microsoft.VisualStudio.Services.WebApi.resources.dll_11" ComponentId="{54D545C5-D990-478A-9A1D-584B9380567F}" Directory_="zhHans_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.WebApi.resources.dll_11"/>
- <ROW Component="Microsoft.VisualStudio.Services.WebApi.resources.dll_12" ComponentId="{3D3F7631-2E13-4B7B-B371-3C455FE2E046}" Directory_="zhHant_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.WebApi.resources.dll_12"/>
- <ROW Component="Microsoft.VisualStudio.Services.WebApi.resources.dll_2" ComponentId="{F2E2EC7C-F93F-489A-A140-A1E3B48A6B64}" Directory_="es_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.WebApi.resources.dll_2"/>
- <ROW Component="Microsoft.VisualStudio.Services.WebApi.resources.dll_3" ComponentId="{4DFF5822-EA67-4AE4-BFCA-65CB065AC1B8}" Directory_="fr_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.WebApi.resources.dll_3"/>
- <ROW Component="Microsoft.VisualStudio.Services.WebApi.resources.dll_4" ComponentId="{DB390D25-BCD0-4299-82A1-DC65FA5D8368}" Directory_="it_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.WebApi.resources.dll_4"/>
- <ROW Component="Microsoft.VisualStudio.Services.WebApi.resources.dll_5" ComponentId="{F3466159-A7CF-403C-AC13-C7420BEB1DA3}" Directory_="ja_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.WebApi.resources.dll_5"/>
- <ROW Component="Microsoft.VisualStudio.Services.WebApi.resources.dll_6" ComponentId="{ABCB0A3C-2BDE-411E-8225-3D487ADF6EFB}" Directory_="ko_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.WebApi.resources.dll_6"/>
- <ROW Component="Microsoft.VisualStudio.Services.WebApi.resources.dll_7" ComponentId="{213FF568-B999-464A-8F23-CF628555FFA0}" Directory_="pl_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.WebApi.resources.dll_7"/>
- <ROW Component="Microsoft.VisualStudio.Services.WebApi.resources.dll_8" ComponentId="{1321C006-1594-4680-BECC-5E251C5A939D}" Directory_="ptBR_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.WebApi.resources.dll_8"/>
- <ROW Component="Microsoft.VisualStudio.Services.WebApi.resources.dll_9" ComponentId="{44EEC190-943A-41B2-9B65-364F8C1C8379}" Directory_="ru_Dir" Attributes="0" KeyPath="Microsoft.VisualStudio.Services.WebApi.resources.dll_9"/>
<ROW Component="Microsoft.WITDataStore32.dll" ComponentId="{4C13EE15-BCEC-400D-A528-50AF945B8F8D}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.WITDataStore32.dll"/>
<ROW Component="Microsoft.Win32.Primitives.dll" ComponentId="{BF151A6C-FFF4-4A01-BC24-A9F7DD9A5FDF}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.Win32.Primitives.dll"/>
- <ROW Component="Microsoft.Win32.Primitives.dll_1" ComponentId="{DFE35464-D56E-4B31-809C-9566C8EFC234}" Directory_="roslyn_Dir" Attributes="0" KeyPath="Microsoft.Win32.Primitives.dll_1"/>
<ROW Component="Microsoft.WindowsAPICodePack.Shell.dll" ComponentId="{9012CCFC-2D61-447A-BD29-4A21EB0F931B}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.WindowsAPICodePack.Shell.dll"/>
<ROW Component="Microsoft.WindowsAPICodePack.dll" ComponentId="{C451DC70-A14F-4DE9-8E91-B3CAE54178FB}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.WindowsAPICodePack.dll"/>
<ROW Component="Microsoft.WindowsAzure.Storage.dll" ComponentId="{38DD34C7-3DE1-4F73-B1A0-433DA73627F0}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.WindowsAzure.Storage.dll"/>
@@ -328,11 +174,9 @@
<ROW Component="SharpDX.dll" ComponentId="{3E22F8C3-237A-461F-9BB8-CB6D18705058}" Directory_="APPDIR" Attributes="0" KeyPath="SharpDX.dll"/>
<ROW Component="SimpleValidator.dll" ComponentId="{81091AC7-AB7A-4043-8D23-F329BBCA40BD}" Directory_="APPDIR" Attributes="0" KeyPath="SimpleValidator.dll"/>
<ROW Component="System.AppContext.dll" ComponentId="{358E356C-62BE-4F21-8647-16E76597A83B}" Directory_="APPDIR" Attributes="0" KeyPath="System.AppContext.dll"/>
- <ROW Component="System.AppContext.dll_1" ComponentId="{EC0D01B1-FE93-4022-B744-9308FEFF030B}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.AppContext.dll_1"/>
<ROW Component="System.Buffers.dll" ComponentId="{FFF88BDA-CBDF-4940-B4DE-23D7E00A1C21}" Directory_="APPDIR" Attributes="0" KeyPath="System.Buffers.dll"/>
<ROW Component="System.CodeDom.dll" ComponentId="{67883714-5530-42D7-AC9C-2522FD8913B0}" Directory_="APPDIR" Attributes="0" KeyPath="System.CodeDom.dll"/>
<ROW Component="System.Collections.Concurrent.dll" ComponentId="{E0EB1925-1EA9-4E60-BDF7-FDAD9CDCCA54}" Directory_="APPDIR" Attributes="0" KeyPath="System.Collections.Concurrent.dll"/>
- <ROW Component="System.Collections.Immutable.dll" ComponentId="{64423C7F-5FFA-446D-A92C-81EC260E82A1}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Collections.Immutable.dll"/>
<ROW Component="System.Collections.Immutable.dll_1" ComponentId="{91846FF0-871C-46E5-817A-EA5D6A67E152}" Directory_="APPDIR" Attributes="0" KeyPath="System.Collections.Immutable.dll_1"/>
<ROW Component="System.Collections.NonGeneric.dll" ComponentId="{011DA1E5-BA07-477C-8A6B-6F7F1C82CEC2}" Directory_="APPDIR" Attributes="0" KeyPath="System.Collections.NonGeneric.dll"/>
<ROW Component="System.Collections.Specialized.dll" ComponentId="{26CC4B96-5E70-45BF-BA53-BEF10D2D2EC7}" Directory_="APPDIR" Attributes="0" KeyPath="System.Collections.Specialized.dll"/>
@@ -346,17 +190,13 @@
<ROW Component="System.Composition.Runtime.dll" ComponentId="{556667DD-ADFA-4698-9BBA-FA62CD4C45E3}" Directory_="APPDIR" Attributes="0" KeyPath="System.Composition.Runtime.dll"/>
<ROW Component="System.Composition.TypedParts.dll" ComponentId="{AB19B840-D106-4C46-A795-246E6009188C}" Directory_="APPDIR" Attributes="0" KeyPath="System.Composition.TypedParts.dll"/>
<ROW Component="System.Console.dll" ComponentId="{F70C16C5-D638-4396-94D7-60D61AD29043}" Directory_="APPDIR" Attributes="0" KeyPath="System.Console.dll"/>
- <ROW Component="System.Console.dll_1" ComponentId="{E59A46A5-28F0-4725-AE0E-B83BEEF3AF79}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Console.dll_1"/>
<ROW Component="System.Data.Common.dll" ComponentId="{12CBF4E7-6852-4A9B-BEA3-68E4D59C74D0}" Directory_="APPDIR" Attributes="0" KeyPath="System.Data.Common.dll"/>
<ROW Component="System.Data.SQLite.dll" ComponentId="{3DBB5F2C-8A5A-46AF-BF78-A776CD99A3F3}" Directory_="APPDIR" Attributes="0" KeyPath="System.Data.SQLite.dll"/>
<ROW Component="System.Diagnostics.Contracts.dll" ComponentId="{F7F8A2C5-672E-4DDF-9B06-813BE46ABE9A}" Directory_="APPDIR" Attributes="0" KeyPath="System.Diagnostics.Contracts.dll"/>
<ROW Component="System.Diagnostics.Debug.dll" ComponentId="{5398838C-738A-4FFD-9FC4-7A91BE89B332}" Directory_="APPDIR" Attributes="0" KeyPath="System.Diagnostics.Debug.dll"/>
<ROW Component="System.Diagnostics.FileVersionInfo.dll" ComponentId="{F5D89192-D7C9-401A-AE25-B55DF0EAF352}" Directory_="APPDIR" Attributes="0" KeyPath="System.Diagnostics.FileVersionInfo.dll"/>
- <ROW Component="System.Diagnostics.FileVersionInfo.dll_1" ComponentId="{73C590DE-084A-4317-858E-5857E66048D3}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Diagnostics.FileVersionInfo.dll_1"/>
<ROW Component="System.Diagnostics.Process.dll" ComponentId="{AD6B2C65-C00C-4CCE-9857-4525E5155685}" Directory_="APPDIR" Attributes="0" KeyPath="System.Diagnostics.Process.dll"/>
- <ROW Component="System.Diagnostics.Process.dll_1" ComponentId="{6A2E79DF-7F66-4F2D-AE9F-020C76966DA3}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Diagnostics.Process.dll_1"/>
<ROW Component="System.Diagnostics.StackTrace.dll" ComponentId="{9D42C40E-BA14-446E-9F28-700F79F93CF1}" Directory_="APPDIR" Attributes="0" KeyPath="System.Diagnostics.StackTrace.dll"/>
- <ROW Component="System.Diagnostics.StackTrace.dll_1" ComponentId="{789261D5-B6A2-4D6E-B302-0FE89723C30F}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Diagnostics.StackTrace.dll_1"/>
<ROW Component="System.Diagnostics.TextWriterTraceListener.dll" ComponentId="{8763EE73-B2CF-4675-BC65-61A5A2844030}" Directory_="APPDIR" Attributes="0" KeyPath="System.Diagnostics.TextWriterTraceListener.dll"/>
<ROW Component="System.Diagnostics.Tools.dll" ComponentId="{5F0560B5-B294-4C8E-814D-AA2A7CD38CBE}" Directory_="APPDIR" Attributes="0" KeyPath="System.Diagnostics.Tools.dll"/>
<ROW Component="System.Diagnostics.TraceSource.dll" ComponentId="{81026182-D1C0-40AD-B6DF-DA82096ADAAE}" Directory_="APPDIR" Attributes="0" KeyPath="System.Diagnostics.TraceSource.dll"/>
@@ -368,18 +208,13 @@
<ROW Component="System.Globalization.dll" ComponentId="{7AF72BE3-61B7-4285-8471-EF35418DE3F7}" Directory_="APPDIR" Attributes="0" KeyPath="System.Globalization.dll"/>
<ROW Component="System.IO.Compression.ZipFile.dll" ComponentId="{CF2092A8-AE50-4D12-860E-2F0BD0CE6A6A}" Directory_="APPDIR" Attributes="0" KeyPath="System.IO.Compression.ZipFile.dll"/>
<ROW Component="System.IO.Compression.dll" ComponentId="{E35A2B0E-E9DD-4B5D-A7BE-D501A42C9DF4}" Directory_="APPDIR" Attributes="0" KeyPath="System.IO.Compression.dll"/>
- <ROW Component="System.IO.Compression.dll_1" ComponentId="{EF8786BA-0411-42A9-AB60-6DB43F41E03A}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.IO.Compression.dll_1"/>
<ROW Component="System.IO.FileSystem.DriveInfo.dll" ComponentId="{983AC4A9-31A9-4D80-98BA-ECFC143D5E7F}" Directory_="APPDIR" Attributes="0" KeyPath="System.IO.FileSystem.DriveInfo.dll"/>
- <ROW Component="System.IO.FileSystem.DriveInfo.dll_1" ComponentId="{CB6B9CB5-6A6F-4242-924D-064F0C1D6D2E}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.IO.FileSystem.DriveInfo.dll_1"/>
<ROW Component="System.IO.FileSystem.Primitives.dll" ComponentId="{29A233E2-6200-43EE-87E9-7313437223EB}" Directory_="APPDIR" Attributes="0" KeyPath="System.IO.FileSystem.Primitives.dll"/>
- <ROW Component="System.IO.FileSystem.Primitives.dll_1" ComponentId="{07BA5F2E-6BD3-41E9-A37D-78AD5E0FBA9D}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.IO.FileSystem.Primitives.dll_1"/>
<ROW Component="System.IO.FileSystem.Watcher.dll" ComponentId="{A84EDD4B-8636-492F-8114-EA248483C1E6}" Directory_="APPDIR" Attributes="0" KeyPath="System.IO.FileSystem.Watcher.dll"/>
<ROW Component="System.IO.FileSystem.dll" ComponentId="{CEDBD51C-2D62-42FF-8C1D-84219B6029EF}" Directory_="APPDIR" Attributes="0" KeyPath="System.IO.FileSystem.dll"/>
- <ROW Component="System.IO.FileSystem.dll_1" ComponentId="{C978FDF6-FBEB-4634-A8AD-CD80D6574028}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.IO.FileSystem.dll_1"/>
<ROW Component="System.IO.IsolatedStorage.dll" ComponentId="{83D8FD3C-958D-47B6-849E-15CD940244E0}" Directory_="APPDIR" Attributes="0" KeyPath="System.IO.IsolatedStorage.dll"/>
<ROW Component="System.IO.MemoryMappedFiles.dll" ComponentId="{C874420A-A38B-482E-8EC8-5D73CBB256E0}" Directory_="APPDIR" Attributes="0" KeyPath="System.IO.MemoryMappedFiles.dll"/>
<ROW Component="System.IO.Pipes.dll" ComponentId="{AF452794-8BF8-4BAD-AA3B-B9DB59D723E3}" Directory_="APPDIR" Attributes="0" KeyPath="System.IO.Pipes.dll"/>
- <ROW Component="System.IO.Pipes.dll_1" ComponentId="{3B01168A-ABCF-4DCB-B356-78610FCF361E}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.IO.Pipes.dll_1"/>
<ROW Component="System.IO.UnmanagedMemoryStream.dll" ComponentId="{514B14A8-9B28-4268-90BD-A39B895B0041}" Directory_="APPDIR" Attributes="0" KeyPath="System.IO.UnmanagedMemoryStream.dll"/>
<ROW Component="System.IO.dll" ComponentId="{A5AA6EF0-C89E-4F78-A468-ACFD84069FCF}" Directory_="APPDIR" Attributes="0" KeyPath="System.IO.dll"/>
<ROW Component="System.IdentityModel.Tokens.Jwt.dll" ComponentId="{E4D36818-F673-4F97-89E3-3ACEE6B795CC}" Directory_="APPDIR" Attributes="0" KeyPath="System.IdentityModel.Tokens.Jwt.dll"/>
@@ -409,7 +244,6 @@
<ROW Component="System.Reactive.PlatformServices.dll" ComponentId="{2DD8FDBF-C96F-4DC9-AA12-1F5A88FB9370}" Directory_="APPDIR" Attributes="0" KeyPath="System.Reactive.PlatformServices.dll"/>
<ROW Component="System.Reactive.Windows.Threading.dll" ComponentId="{B460E505-47E6-4146-BF7D-F1FF8E52EB8A}" Directory_="APPDIR" Attributes="0" KeyPath="System.Reactive.Windows.Threading.dll"/>
<ROW Component="System.Reflection.Extensions.dll" ComponentId="{5FCB5312-1D48-4D99-8728-7628637BB4F2}" Directory_="APPDIR" Attributes="0" KeyPath="System.Reflection.Extensions.dll"/>
- <ROW Component="System.Reflection.Metadata.dll" ComponentId="{688C6FAE-3CFF-483C-BB99-CD5DF31FF764}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Reflection.Metadata.dll"/>
<ROW Component="System.Reflection.Metadata.dll_1" ComponentId="{11BB06A3-A742-47B3-869B-2DC0118CB2AD}" Directory_="APPDIR" Attributes="0" KeyPath="System.Reflection.Metadata.dll_1"/>
<ROW Component="System.Reflection.Primitives.dll" ComponentId="{11C0857E-2BD7-4A36-B20B-F227826B99F0}" Directory_="APPDIR" Attributes="0" KeyPath="System.Reflection.Primitives.dll"/>
<ROW Component="System.Reflection.dll" ComponentId="{4889F7EB-7BBE-4926-B487-65F9E50FD867}" Directory_="APPDIR" Attributes="0" KeyPath="System.Reflection.dll"/>
@@ -428,23 +262,15 @@
<ROW Component="System.Runtime.Serialization.Primitives.dll" ComponentId="{05D7F62B-3EA2-4487-800F-2E3E26A17623}" Directory_="APPDIR" Attributes="0" KeyPath="System.Runtime.Serialization.Primitives.dll"/>
<ROW Component="System.Runtime.Serialization.Xml.dll" ComponentId="{72603E1F-3B97-4A61-B3D4-864FF9865F6A}" Directory_="APPDIR" Attributes="0" KeyPath="System.Runtime.Serialization.Xml.dll"/>
<ROW Component="System.Runtime.dll" ComponentId="{1A86F578-5323-432C-834E-6A1C7AB1CE76}" Directory_="APPDIR" Attributes="0" KeyPath="System.Runtime.dll"/>
- <ROW Component="System.Security.AccessControl.dll" ComponentId="{80D4FCE7-5D9D-43D4-A104-C37835B7B734}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Security.AccessControl.dll"/>
<ROW Component="System.Security.Claims.dll" ComponentId="{A58BFEA5-776F-4F09-AD57-783855FBFD2C}" Directory_="APPDIR" Attributes="0" KeyPath="System.Security.Claims.dll"/>
- <ROW Component="System.Security.Claims.dll_1" ComponentId="{A872B3DD-8E83-4DCB-AAF1-8764A2E752C5}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Security.Claims.dll_1"/>
<ROW Component="System.Security.Cryptography.Algorithms.dll" ComponentId="{5510E981-08E6-4C71-AB20-55EC75BD52D3}" Directory_="APPDIR" Attributes="0" KeyPath="System.Security.Cryptography.Algorithms.dll"/>
- <ROW Component="System.Security.Cryptography.Algorithms.dll_1" ComponentId="{D022C2D5-C3F2-414C-AD80-E79F3E186F35}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Security.Cryptography.Algorithms.dll_1"/>
<ROW Component="System.Security.Cryptography.Csp.dll" ComponentId="{3F6AAE9A-0126-43EF-894E-65A4931597F8}" Directory_="APPDIR" Attributes="0" KeyPath="System.Security.Cryptography.Csp.dll"/>
<ROW Component="System.Security.Cryptography.Encoding.dll" ComponentId="{086BF834-ACD2-41FC-9C95-098F1C731B0B}" Directory_="APPDIR" Attributes="0" KeyPath="System.Security.Cryptography.Encoding.dll"/>
- <ROW Component="System.Security.Cryptography.Encoding.dll_1" ComponentId="{2C5C1036-00D2-4C72-803A-38E62FE7DDA2}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Security.Cryptography.Encoding.dll_1"/>
<ROW Component="System.Security.Cryptography.Primitives.dll" ComponentId="{AC2E9278-0D19-40A4-83B9-E97716BD255D}" Directory_="APPDIR" Attributes="0" KeyPath="System.Security.Cryptography.Primitives.dll"/>
- <ROW Component="System.Security.Cryptography.Primitives.dll_1" ComponentId="{58465388-3B29-43A7-A415-8698A3C288A9}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Security.Cryptography.Primitives.dll_1"/>
<ROW Component="System.Security.Cryptography.X509Certificates.dll" ComponentId="{00F4F6C1-6B4D-4DFD-BD59-72EE690FC246}" Directory_="APPDIR" Attributes="0" KeyPath="System.Security.Cryptography.X509Certificates.dll"/>
- <ROW Component="System.Security.Cryptography.X509Certificates.dll_1" ComponentId="{2604C3CB-FC03-4494-BEBA-8965F448144B}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Security.Cryptography.X509Certificates.dll_1"/>
- <ROW Component="System.Security.Principal.Windows.dll" ComponentId="{17A611AF-48AC-4650-B6D1-13D5447FBBE9}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Security.Principal.Windows.dll"/>
<ROW Component="System.Security.Principal.dll" ComponentId="{127424E0-24F8-456F-BBEC-F23E331E1669}" Directory_="APPDIR" Attributes="0" KeyPath="System.Security.Principal.dll"/>
<ROW Component="System.Security.SecureString.dll" ComponentId="{C40FA779-F72E-4CF2-9A42-368ADB1D05E4}" Directory_="APPDIR" Attributes="0" KeyPath="System.Security.SecureString.dll"/>
<ROW Component="System.Spatial.dll" ComponentId="{1CE4DC46-9EDC-4135-BFB5-AD976CC37C2F}" Directory_="APPDIR" Attributes="0" KeyPath="System.Spatial.dll"/>
- <ROW Component="System.Text.Encoding.CodePages.dll" ComponentId="{03C0F627-7FCB-4FE1-AB51-248D8BC909F7}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Text.Encoding.CodePages.dll"/>
<ROW Component="System.Text.Encoding.CodePages.dll_1" ComponentId="{9E367053-E910-4CE6-BE25-3065F9E18374}" Directory_="APPDIR" Attributes="0" KeyPath="System.Text.Encoding.CodePages.dll_1"/>
<ROW Component="System.Text.Encoding.Extensions.dll" ComponentId="{C177E423-71AE-4FB7-BDC1-1FFF650EFEBC}" Directory_="APPDIR" Attributes="0" KeyPath="System.Text.Encoding.Extensions.dll"/>
<ROW Component="System.Text.Encoding.dll" ComponentId="{903DBCE1-0C97-4F99-BF85-41B54EF26B33}" Directory_="APPDIR" Attributes="0" KeyPath="System.Text.Encoding.dll"/>
@@ -455,25 +281,19 @@
<ROW Component="System.Threading.Tasks.Parallel.dll" ComponentId="{987E51AD-AF06-4D03-B691-7318BD6BDA34}" Directory_="APPDIR" Attributes="0" KeyPath="System.Threading.Tasks.Parallel.dll"/>
<ROW Component="System.Threading.Tasks.dll" ComponentId="{B92EED7E-FE98-4A94-B157-F75D4E92EB85}" Directory_="APPDIR" Attributes="0" KeyPath="System.Threading.Tasks.dll"/>
<ROW Component="System.Threading.Thread.dll" ComponentId="{4C4CAEB2-FB35-4937-BDCB-2FF8E541EB65}" Directory_="APPDIR" Attributes="0" KeyPath="System.Threading.Thread.dll"/>
- <ROW Component="System.Threading.Thread.dll_1" ComponentId="{D98960EA-BDE0-4019-B067-F4EF79DD43C2}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Threading.Thread.dll_1"/>
<ROW Component="System.Threading.ThreadPool.dll" ComponentId="{4AD2E492-AA1B-4C56-98F6-AAF9AC9DD7F5}" Directory_="APPDIR" Attributes="0" KeyPath="System.Threading.ThreadPool.dll"/>
<ROW Component="System.Threading.Timer.dll" ComponentId="{8DBA4386-A1D8-4D98-9A3E-FA449DAA031F}" Directory_="APPDIR" Attributes="0" KeyPath="System.Threading.Timer.dll"/>
<ROW Component="System.Threading.dll" ComponentId="{08B42E48-C46A-402F-B07A-D944F647A72F}" Directory_="APPDIR" Attributes="0" KeyPath="System.Threading.dll"/>
<ROW Component="System.ValueTuple.dll" ComponentId="{33243DAF-2CB1-4158-BD3E-646D178E6BE3}" Directory_="APPDIR" Attributes="0" KeyPath="System.ValueTuple.dll"/>
- <ROW Component="System.ValueTuple.dll_1" ComponentId="{36270E0D-B539-41E3-A972-8FE4F0D31EC3}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.ValueTuple.dll_1"/>
<ROW Component="System.Web.Http.WebHost.dll" ComponentId="{76AA8551-7C36-44F1-8076-7DC8C0159CB6}" Directory_="APPDIR" Attributes="0" KeyPath="System.Web.Http.WebHost.dll"/>
<ROW Component="System.Web.Http.dll" ComponentId="{7F609038-B81D-44BC-821F-2A742860ECD5}" Directory_="APPDIR" Attributes="0" KeyPath="System.Web.Http.dll"/>
<ROW Component="System.Web.Razor.dll" ComponentId="{40A62E23-8887-4240-8D87-D8D07E2C347F}" Directory_="APPDIR" Attributes="0" KeyPath="System.Web.Razor.dll"/>
<ROW Component="System.Windows.Interactivity.dll" ComponentId="{844D2D3C-AC50-418F-A9D4-8D928DBA49A7}" Directory_="APPDIR" Attributes="0" KeyPath="System.Windows.Interactivity.dll"/>
<ROW Component="System.Xml.ReaderWriter.dll" ComponentId="{6DAC8C4A-BB06-465D-98B1-9D1015022B9C}" Directory_="APPDIR" Attributes="0" KeyPath="System.Xml.ReaderWriter.dll"/>
- <ROW Component="System.Xml.ReaderWriter.dll_1" ComponentId="{FB4C57C6-EC5E-4AAF-A2A4-1653E01F0576}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Xml.ReaderWriter.dll_1"/>
<ROW Component="System.Xml.XDocument.dll" ComponentId="{A37644F6-E28C-4F46-8A2F-FF8148DE4CEE}" Directory_="APPDIR" Attributes="0" KeyPath="System.Xml.XDocument.dll"/>
<ROW Component="System.Xml.XPath.XDocument.dll" ComponentId="{4D676094-4D89-4619-A5C2-C6E26D44F46E}" Directory_="APPDIR" Attributes="0" KeyPath="System.Xml.XPath.XDocument.dll"/>
- <ROW Component="System.Xml.XPath.XDocument.dll_1" ComponentId="{24279968-8A36-4295-AE5B-97376E38AA32}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Xml.XPath.XDocument.dll_1"/>
<ROW Component="System.Xml.XPath.dll" ComponentId="{60E883E1-D85B-432F-BB51-F83BF3E79BFA}" Directory_="APPDIR" Attributes="0" KeyPath="System.Xml.XPath.dll"/>
- <ROW Component="System.Xml.XPath.dll_1" ComponentId="{2D900620-E8BD-4BFF-84D9-5AC9C3F54BC7}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Xml.XPath.dll_1"/>
<ROW Component="System.Xml.XmlDocument.dll" ComponentId="{A0706488-0521-4073-AB50-2345AC9C663D}" Directory_="APPDIR" Attributes="0" KeyPath="System.Xml.XmlDocument.dll"/>
- <ROW Component="System.Xml.XmlDocument.dll_1" ComponentId="{C99ACDAC-A6BD-4A2A-B98D-FC4060DF04C7}" Directory_="roslyn_Dir" Attributes="0" KeyPath="System.Xml.XmlDocument.dll_1"/>
<ROW Component="System.Xml.XmlSerializer.dll" ComponentId="{2DD41ED6-51F1-4B11-B7F8-923AD51C1271}" Directory_="APPDIR" Attributes="0" KeyPath="System.Xml.XmlSerializer.dll"/>
<ROW Component="Tango.AnimatedGif.dll" ComponentId="{4E1F5301-EA6D-45D5-9C99-23E59875096A}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.AnimatedGif.dll"/>
<ROW Component="Tango.AutoComplete.dll" ComponentId="{A39273A4-F15E-4183-B998-065EC4B7F1AD}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.AutoComplete.dll"/>
@@ -531,7 +351,6 @@
<ROW Component="Tango.WebRTC.dll" ComponentId="{80F57AE6-B45A-45B4-AE63-7C6C2AF29039}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.WebRTC.dll"/>
<ROW Component="URLProtocol" ComponentId="{2E4F48A6-68BB-48AB-B37C-341998FB535E}" Directory_="APPDIR" Attributes="4" KeyPath="URLProtocol"/>
<ROW Component="URLProtocol_1" ComponentId="{09755D34-903E-4B18-A106-6EDB3A5FB791}" Directory_="APPDIR" Attributes="4" KeyPath="URLProtocol_1"/>
- <ROW Component="VBCSCompiler.exe" ComponentId="{634450B9-9C27-44E4-B22A-A8F5D0CAE740}" Directory_="roslyn_Dir" Attributes="0" KeyPath="VBCSCompiler.exe"/>
<ROW Component="WebRtc.NET.dll" ComponentId="{58013A07-CC4C-4183-9065-8016522479D1}" Directory_="APPDIR" Attributes="0" KeyPath="WebRtc.NET.dll"/>
<ROW Component="WindowsInput.dll" ComponentId="{0AE7A41B-3CD4-49A0-916C-C1C698DD8A7A}" Directory_="APPDIR" Attributes="0" KeyPath="WindowsInput.dll"/>
<ROW Component="Z.EntityFramework.Extensions.dll" ComponentId="{0E9EF254-88AE-4C3C-9190-C3F73D896612}" Directory_="APPDIR" Attributes="0" KeyPath="Z.EntityFramework.Extensions.dll"/>
@@ -547,9 +366,6 @@
<ROW Component="__3" ComponentId="{D63D43F2-053E-4811-81BC-F11D89795E42}" Directory_="APPDIR" Attributes="4" KeyPath="__3"/>
<ROW Component="__4" ComponentId="{D0E846F2-7BDB-4985-A828-405634871827}" Directory_="APPDIR" Attributes="4" KeyPath="__4"/>
<ROW Component="__5" ComponentId="{95AD0530-ED57-4222-992A-782C6CFBD980}" Directory_="APPDIR" Attributes="4" KeyPath="__5"/>
- <ROW Component="csc.exe" ComponentId="{309074C4-11AA-4171-9DEF-9991EF90F144}" Directory_="roslyn_Dir" Attributes="0" KeyPath="csc.exe"/>
- <ROW Component="csc.exe.config" ComponentId="{470039A3-0EAE-4E90-B88F-457CC77B05CC}" Directory_="roslyn_Dir" Attributes="0" KeyPath="csc.exe.config" Type="0"/>
- <ROW Component="csi.exe" ComponentId="{6F4427A5-2AC8-487C-A921-81E97210CA1A}" Directory_="roslyn_Dir" Attributes="0" KeyPath="csi.exe"/>
<ROW Component="dsUtil.exe" ComponentId="{976E1F19-4FE1-46DF-824B-0DFFDAC3959C}" Directory_="APPDIR" Attributes="0" KeyPath="dsUtil.exe"/>
<ROW Component="ffmpeg.exe" ComponentId="{D6862E01-A64B-40FD-847E-A35B561EFD1D}" Directory_="APPDIR" Attributes="0" KeyPath="ffmpeg.exe"/>
<ROW Component="log" ComponentId="{A7C3DA27-9188-401A-9CD1-218B0504E461}" Directory_="APPDIR" Attributes="4" KeyPath="log_2"/>
@@ -560,9 +376,6 @@
<ROW Component="open_1" ComponentId="{7D6D728A-460D-4FB1-A562-FAA4FEF85E24}" Directory_="APPDIR" Attributes="4" KeyPath="open_1"/>
<ROW Component="procdoc.chm" ComponentId="{A1ADA8CA-C7F6-4C05-BC9A-E2F821E002DC}" Directory_="APPDIR" Attributes="0" KeyPath="procdoc.chm" Type="1"/>
<ROW Component="protobufnet.dll" ComponentId="{ED37672F-F343-44FB-8FBD-F9003BD20D52}" Directory_="APPDIR" Attributes="0" KeyPath="protobufnet.dll"/>
- <ROW Component="protoc.exe" ComponentId="{CF5E9763-53D7-4C54-A576-3CB1A94C70D3}" Directory_="ProtoCompilers_Dir" Attributes="0" KeyPath="protoc.exe"/>
- <ROW Component="protoc1.0M4.jar" ComponentId="{C8BE9ED2-2D9B-4407-BD1A-F98A10BDDDE3}" Directory_="ProtoCompilers_Dir" Attributes="0" KeyPath="protoc1.0M4.jar" Type="0"/>
- <ROW Component="protocc.exe" ComponentId="{BE4E9FDE-B97C-424B-B097-41F3A51F44EC}" Directory_="ProtoCompilers_Dir" Attributes="0" KeyPath="protocc.exe"/>
<ROW Component="shell" ComponentId="{A08B0CB0-9A35-4E7B-B7A3-F0039D92CBE4}" Directory_="APPDIR" Attributes="4" KeyPath="shell"/>
<ROW Component="shell_1" ComponentId="{082186C6-1C9B-401A-85E8-3F1DA42DD4C6}" Directory_="APPDIR" Attributes="4" KeyPath="shell_1"/>
<ROW Component="turbojpeg.dll" ComponentId="{8CDBC3A7-72CF-42B5-A1E2-6A546607DCE0}" Directory_="win7x64_Dir" Attributes="256" KeyPath="turbojpeg.dll"/>
@@ -570,7 +383,6 @@
<ROW Component="turbojpeg.dll.meta_1" ComponentId="{C3B04D4B-D79F-4FBC-881B-C7E1364935B7}" Directory_="win7x86_Dir" Attributes="0" KeyPath="turbojpeg.dll.meta_1" Type="0"/>
<ROW Component="turbojpeg.dll_1" ComponentId="{7D89438D-86DD-4300-924C-49676B63DDD7}" Directory_="win7x86_Dir" Attributes="0" KeyPath="turbojpeg.dll_1"/>
<ROW Component="ucrtbased.dll" ComponentId="{4188BB88-A714-488A-A02D-98710ACC94F5}" Directory_="APPDIR" Attributes="0" KeyPath="ucrtbased.dll"/>
- <ROW Component="vbc.exe" ComponentId="{64A2D070-4C2B-4CF2-A34B-CD000424FF54}" Directory_="roslyn_Dir" Attributes="0" KeyPath="vbc.exe"/>
<ROW Component="vcruntime140.dll" ComponentId="{078A42AF-E964-4CA3-8A9C-CBE6D0FD76AA}" Directory_="APPDIR" Attributes="0" KeyPath="vcruntime140.dll"/>
<ROW Component="vcruntime140d.dll" ComponentId="{AF42196B-67BB-4EBA-8C3A-38B9527F9775}" Directory_="APPDIR" Attributes="0" KeyPath="vcruntime140d.dll"/>
</COMPONENT>
@@ -970,260 +782,6 @@
<ROW File="turbojpeg.dll.meta" Component_="turbojpeg.dll.meta" FileName="TURBOJ~1.MET|turbojpeg.dll.meta" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\win7-x64\turbojpeg.dll.meta" SelfReg="false"/>
<ROW File="turbojpeg.dll_1" Component_="turbojpeg.dll_1" FileName="TURBOJ~1.DLL|turbojpeg.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\win7-x86\turbojpeg.dll" SelfReg="false"/>
<ROW File="turbojpeg.dll.meta_1" Component_="turbojpeg.dll.meta_1" FileName="TURBOJ~1.MET|turbojpeg.dll.meta" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\win7-x86\turbojpeg.dll.meta" SelfReg="false"/>
- <ROW File="ColorMine.pdb" Component_="ColorMine.dll" FileName="COLORM~1.PDB|ColorMine.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ColorMine.pdb" SelfReg="false"/>
- <ROW File="ControlzEx.pdb" Component_="ControlzEx.dll" FileName="CONTRO~1.PDB|ControlzEx.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ControlzEx.pdb" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Client.resources.dll" Component_="Microsoft.TeamFoundation.Client.resources.dll" FileName="MICROS~1.DLL|Microsoft.TeamFoundation.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\cs\Microsoft.TeamFoundation.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Common.resources.dll" Component_="Microsoft.TeamFoundation.Common.resources.dll" FileName="MICROS~2.DLL|Microsoft.TeamFoundation.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\cs\Microsoft.TeamFoundation.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Core.WebApi.resources.dll" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll" FileName="MICROS~3.DLL|Microsoft.TeamFoundation.Core.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\cs\Microsoft.TeamFoundation.Core.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resour" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources" FileName="MICROS~4.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\cs\Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" FileName="MICROS~5.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\cs\Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" FileName="MICROS~6.DLL|Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\cs\Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" FileName="MICROS~7.DLL|Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\cs\Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" FileName="MICROS~8.DLL|Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\cs\Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Common.resources.dll" Component_="Microsoft.VisualStudio.Services.Common.resources.dll" FileName="MICROS~9.DLL|Microsoft.VisualStudio.Services.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\cs\Microsoft.VisualStudio.Services.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.WebApi.resources.dll" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll" FileName="MICRO~10.DLL|Microsoft.VisualStudio.Services.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\cs\Microsoft.VisualStudio.Services.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Client.resources.dll_1" Component_="Microsoft.TeamFoundation.Client.resources.dll_1" FileName="MICROS~1.DLL|Microsoft.TeamFoundation.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\de\Microsoft.TeamFoundation.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Common.resources.dll_1" Component_="Microsoft.TeamFoundation.Common.resources.dll_1" FileName="MICROS~2.DLL|Microsoft.TeamFoundation.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\de\Microsoft.TeamFoundation.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Core.WebApi.resources.dll_1" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_1" FileName="MICROS~3.DLL|Microsoft.TeamFoundation.Core.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\de\Microsoft.TeamFoundation.Core.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_1" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_1" FileName="MICROS~4.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\de\Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_1" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_1" FileName="MICROS~5.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\de\Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_1" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_1" FileName="MICROS~6.DLL|Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\de\Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_1" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_1" FileName="MICROS~7.DLL|Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\de\Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_1" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_1" FileName="MICROS~8.DLL|Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\de\Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Common.resources.dll_1" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_1" FileName="MICROS~9.DLL|Microsoft.VisualStudio.Services.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\de\Microsoft.VisualStudio.Services.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.WebApi.resources.dll_1" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_1" FileName="MICRO~10.DLL|Microsoft.VisualStudio.Services.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\de\Microsoft.VisualStudio.Services.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="DeviceId.xml" Component_="Dragablz.xml" FileName="DeviceId.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\DeviceId.xml" SelfReg="false"/>
- <ROW File="DocumentFormat.OpenXml.xml" Component_="Dragablz.xml" FileName="DOCUME~1.XML|DocumentFormat.OpenXml.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\DocumentFormat.OpenXml.xml" SelfReg="false"/>
- <ROW File="EntityFramework.SqlServer.xml" Component_="Dragablz.xml" FileName="ENTITY~1.XML|EntityFramework.SqlServer.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\EntityFramework.SqlServer.xml" SelfReg="false"/>
- <ROW File="EntityFramework.xml" Component_="Dragablz.xml" FileName="ENTITY~2.XML|EntityFramework.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\EntityFramework.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Client.resources.dll_2" Component_="Microsoft.TeamFoundation.Client.resources.dll_2" FileName="MICROS~1.DLL|Microsoft.TeamFoundation.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\es\Microsoft.TeamFoundation.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Common.resources.dll_2" Component_="Microsoft.TeamFoundation.Common.resources.dll_2" FileName="MICROS~2.DLL|Microsoft.TeamFoundation.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\es\Microsoft.TeamFoundation.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Core.WebApi.resources.dll_2" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_2" FileName="MICROS~3.DLL|Microsoft.TeamFoundation.Core.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\es\Microsoft.TeamFoundation.Core.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_2" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_2" FileName="MICROS~4.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\es\Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_2" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_2" FileName="MICROS~5.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\es\Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_2" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_2" FileName="MICROS~6.DLL|Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\es\Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_2" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_2" FileName="MICROS~7.DLL|Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\es\Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_2" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_2" FileName="MICROS~8.DLL|Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\es\Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Common.resources.dll_2" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_2" FileName="MICROS~9.DLL|Microsoft.VisualStudio.Services.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\es\Microsoft.VisualStudio.Services.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.WebApi.resources.dll_2" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_2" FileName="MICRO~10.DLL|Microsoft.VisualStudio.Services.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\es\Microsoft.VisualStudio.Services.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Client.resources.dll_3" Component_="Microsoft.TeamFoundation.Client.resources.dll_3" FileName="MICROS~1.DLL|Microsoft.TeamFoundation.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\fr\Microsoft.TeamFoundation.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Common.resources.dll_3" Component_="Microsoft.TeamFoundation.Common.resources.dll_3" FileName="MICROS~2.DLL|Microsoft.TeamFoundation.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\fr\Microsoft.TeamFoundation.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Core.WebApi.resources.dll_3" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_3" FileName="MICROS~3.DLL|Microsoft.TeamFoundation.Core.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\fr\Microsoft.TeamFoundation.Core.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_3" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_3" FileName="MICROS~4.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\fr\Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_3" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_3" FileName="MICROS~5.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\fr\Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_3" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_3" FileName="MICROS~6.DLL|Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\fr\Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_3" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_3" FileName="MICROS~7.DLL|Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\fr\Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_3" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_3" FileName="MICROS~8.DLL|Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\fr\Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Common.resources.dll_3" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_3" FileName="MICROS~9.DLL|Microsoft.VisualStudio.Services.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\fr\Microsoft.VisualStudio.Services.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.WebApi.resources.dll_3" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_3" FileName="MICRO~10.DLL|Microsoft.VisualStudio.Services.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\fr\Microsoft.VisualStudio.Services.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Humanizer.xml" Component_="Dragablz.xml" FileName="HUMANI~1.XML|Humanizer.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Humanizer.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Client.resources.dll_4" Component_="Microsoft.TeamFoundation.Client.resources.dll_4" FileName="MICROS~1.DLL|Microsoft.TeamFoundation.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\it\Microsoft.TeamFoundation.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Common.resources.dll_4" Component_="Microsoft.TeamFoundation.Common.resources.dll_4" FileName="MICROS~2.DLL|Microsoft.TeamFoundation.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\it\Microsoft.TeamFoundation.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Core.WebApi.resources.dll_4" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_4" FileName="MICROS~3.DLL|Microsoft.TeamFoundation.Core.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\it\Microsoft.TeamFoundation.Core.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_4" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_4" FileName="MICROS~4.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\it\Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_4" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_4" FileName="MICROS~5.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\it\Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_4" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_4" FileName="MICROS~6.DLL|Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\it\Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_4" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_4" FileName="MICROS~7.DLL|Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\it\Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_4" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_4" FileName="MICROS~8.DLL|Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\it\Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Common.resources.dll_4" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_4" FileName="MICROS~9.DLL|Microsoft.VisualStudio.Services.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\it\Microsoft.VisualStudio.Services.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.WebApi.resources.dll_4" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_4" FileName="MICRO~10.DLL|Microsoft.VisualStudio.Services.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\it\Microsoft.VisualStudio.Services.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Client.resources.dll_5" Component_="Microsoft.TeamFoundation.Client.resources.dll_5" FileName="MICROS~1.DLL|Microsoft.TeamFoundation.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ja\Microsoft.TeamFoundation.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Common.resources.dll_5" Component_="Microsoft.TeamFoundation.Common.resources.dll_5" FileName="MICROS~2.DLL|Microsoft.TeamFoundation.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ja\Microsoft.TeamFoundation.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Core.WebApi.resources.dll_5" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_5" FileName="MICROS~3.DLL|Microsoft.TeamFoundation.Core.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ja\Microsoft.TeamFoundation.Core.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_5" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_5" FileName="MICROS~4.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ja\Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_5" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_5" FileName="MICROS~5.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ja\Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_5" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_5" FileName="MICROS~6.DLL|Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ja\Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_5" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_5" FileName="MICROS~7.DLL|Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ja\Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_5" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_5" FileName="MICROS~8.DLL|Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ja\Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Common.resources.dll_5" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_5" FileName="MICROS~9.DLL|Microsoft.VisualStudio.Services.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ja\Microsoft.VisualStudio.Services.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.WebApi.resources.dll_5" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_5" FileName="MICRO~10.DLL|Microsoft.VisualStudio.Services.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ja\Microsoft.VisualStudio.Services.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="JWT.xml" Component_="Dragablz.xml" FileName="JWT.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\JWT.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Client.resources.dll_6" Component_="Microsoft.TeamFoundation.Client.resources.dll_6" FileName="MICROS~1.DLL|Microsoft.TeamFoundation.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ko\Microsoft.TeamFoundation.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Common.resources.dll_6" Component_="Microsoft.TeamFoundation.Common.resources.dll_6" FileName="MICROS~2.DLL|Microsoft.TeamFoundation.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ko\Microsoft.TeamFoundation.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Core.WebApi.resources.dll_6" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_6" FileName="MICROS~3.DLL|Microsoft.TeamFoundation.Core.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ko\Microsoft.TeamFoundation.Core.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_6" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_6" FileName="MICROS~4.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ko\Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_6" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_6" FileName="MICROS~5.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ko\Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_6" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_6" FileName="MICROS~6.DLL|Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ko\Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_6" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_6" FileName="MICROS~7.DLL|Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ko\Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_6" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_6" FileName="MICROS~8.DLL|Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ko\Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Common.resources.dll_6" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_6" FileName="MICROS~9.DLL|Microsoft.VisualStudio.Services.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ko\Microsoft.VisualStudio.Services.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.WebApi.resources.dll_6" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_6" FileName="MICRO~10.DLL|Microsoft.VisualStudio.Services.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ko\Microsoft.VisualStudio.Services.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="LiteDB.xml" Component_="Dragablz.xml" FileName="LiteDB.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\LiteDB.xml" SelfReg="false"/>
- <ROW File="LiveCharts.pdb" Component_="LiveCharts.dll" FileName="LIVECH~1.PDB|LiveCharts.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\LiveCharts.pdb" SelfReg="false"/>
- <ROW File="LiveCharts.Wpf.pdb" Component_="LiveCharts.Wpf.dll" FileName="LIVECH~2.PDB|LiveCharts.Wpf.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\LiveCharts.Wpf.pdb" SelfReg="false"/>
- <ROW File="LiveCharts.Wpf.xml" Component_="Dragablz.xml" FileName="LIVECH~1.XML|LiveCharts.Wpf.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\LiveCharts.Wpf.xml" SelfReg="false"/>
- <ROW File="LiveCharts.xml" Component_="Dragablz.xml" FileName="LIVECH~2.XML|LiveCharts.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\LiveCharts.xml" SelfReg="false"/>
- <ROW File="MahApps.Metro.pdb" Component_="MahApps.Metro.dll" FileName="MAHAPP~1.PDB|MahApps.Metro.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\MahApps.Metro.pdb" SelfReg="false"/>
- <ROW File="MahApps.Metro.xml" Component_="Dragablz.xml" FileName="MAHAPP~1.XML|MahApps.Metro.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\MahApps.Metro.xml" SelfReg="false"/>
- <ROW File="MaterialDesignColors.pdb" Component_="MaterialDesignColors.dll" FileName="MATERI~1.PDB|MaterialDesignColors.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\MaterialDesignColors.pdb" SelfReg="false"/>
- <ROW File="MaterialDesignThemes.Wpf.pdb" Component_="MaterialDesignThemes.Wpf.dll" FileName="MATERI~2.PDB|MaterialDesignThemes.Wpf.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\MaterialDesignThemes.Wpf.pdb" SelfReg="false"/>
- <ROW File="MaterialDesignThemes.Wpf.xml" Component_="Dragablz.xml" FileName="MATERI~1.XML|MaterialDesignThemes.Wpf.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\MaterialDesignThemes.Wpf.xml" SelfReg="false"/>
- <ROW File="Microsoft.AspNet.SignalR.Client.pdb" Component_="Microsoft.AspNet.SignalR.Client.dll" FileName="MICROS~1.PDB|Microsoft.AspNet.SignalR.Client.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.AspNet.SignalR.Client.pdb" SelfReg="false"/>
- <ROW File="Microsoft.AspNet.SignalR.Client.xml" Component_="Dragablz.xml" FileName="MICROS~1.XML|Microsoft.AspNet.SignalR.Client.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.AspNet.SignalR.Client.xml" SelfReg="false"/>
- <ROW File="Microsoft.IdentityModel.Clients.ActiveDirectory.pdb" Component_="Microsoft.IdentityModel.Clients.ActiveDirectory.dll" FileName="MICROS~2.PDB|Microsoft.IdentityModel.Clients.ActiveDirectory.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.IdentityModel.Clients.ActiveDirectory.pdb" SelfReg="false"/>
- <ROW File="Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.xml" Component_="Dragablz.xml" FileName="MICROS~2.XML|Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.xml" SelfReg="false"/>
- <ROW File="Microsoft.IdentityModel.Clients.ActiveDirectory.xml" Component_="Dragablz.xml" FileName="MICROS~3.XML|Microsoft.IdentityModel.Clients.ActiveDirectory.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.IdentityModel.Clients.ActiveDirectory.xml" SelfReg="false"/>
- <ROW File="Microsoft.ServiceBus.xml" Component_="Dragablz.xml" FileName="MICROS~4.XML|Microsoft.ServiceBus.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.ServiceBus.xml" SelfReg="false"/>
- <ROW File="Microsoft.SqlServer.ConnectionInfo.xml" Component_="Dragablz.xml" FileName="MICROS~5.XML|Microsoft.SqlServer.ConnectionInfo.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.SqlServer.ConnectionInfo.xml" SelfReg="false"/>
- <ROW File="Microsoft.SqlServer.Dmf.Common.xml" Component_="Dragablz.xml" FileName="MICROS~6.XML|Microsoft.SqlServer.Dmf.Common.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.SqlServer.Dmf.Common.xml" SelfReg="false"/>
- <ROW File="Microsoft.SqlServer.Management.Sdk.Sfc.xml" Component_="Dragablz.xml" FileName="MICROS~7.XML|Microsoft.SqlServer.Management.Sdk.Sfc.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.SqlServer.Management.Sdk.Sfc.xml" SelfReg="false"/>
- <ROW File="Microsoft.SqlServer.ServiceBrokerEnum.xml" Component_="Dragablz.xml" FileName="MICROS~8.XML|Microsoft.SqlServer.ServiceBrokerEnum.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.SqlServer.ServiceBrokerEnum.xml" SelfReg="false"/>
- <ROW File="Microsoft.SqlServer.Smo.xml" Component_="Dragablz.xml" FileName="MICROS~9.XML|Microsoft.SqlServer.Smo.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.SqlServer.Smo.xml" SelfReg="false"/>
- <ROW File="Microsoft.SqlServer.SqlEnum.xml" Component_="Dragablz.xml" FileName="MICRO~10.XML|Microsoft.SqlServer.SqlEnum.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.SqlServer.SqlEnum.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Client.xml" Component_="Dragablz.xml" FileName="MICRO~11.XML|Microsoft.TeamFoundation.Client.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.TeamFoundation.Client.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Common.xml" Component_="Dragablz.xml" FileName="MICRO~12.XML|Microsoft.TeamFoundation.Common.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.TeamFoundation.Common.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Core.WebApi.xml" Component_="Dragablz.xml" FileName="MICRO~13.XML|Microsoft.TeamFoundation.Core.WebApi.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.TeamFoundation.Core.WebApi.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Diff.xml" Component_="Dragablz.xml" FileName="MICRO~14.XML|Microsoft.TeamFoundation.Diff.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.TeamFoundation.Diff.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Work.WebApi.xml" Component_="Dragablz.xml" FileName="MICRO~15.XML|Microsoft.TeamFoundation.Work.WebApi.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.TeamFoundation.Work.WebApi.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.xml" Component_="Dragablz.xml" FileName="MICRO~16.XML|Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.xml" Component_="Dragablz.xml" FileName="MICRO~17.XML|Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.xml" Component_="Dragablz.xml" FileName="MICRO~18.XML|Microsoft.TeamFoundation.WorkItemTracking.Client.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.TeamFoundation.WorkItemTracking.Client.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Common.xml" Component_="Dragablz.xml" FileName="MICRO~19.XML|Microsoft.TeamFoundation.WorkItemTracking.Common.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.TeamFoundation.WorkItemTracking.Common.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Proxy.xml" Component_="Dragablz.xml" FileName="MICRO~20.XML|Microsoft.TeamFoundation.WorkItemTracking.Proxy.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.TeamFoundation.WorkItemTracking.Proxy.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.WebApi.xml" Component_="Dragablz.xml" FileName="MICRO~21.XML|Microsoft.TeamFoundation.WorkItemTracking.WebApi.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.TeamFoundation.WorkItemTracking.WebApi.xml" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Client.Interactive.xml" Component_="Dragablz.xml" FileName="MICRO~22.XML|Microsoft.VisualStudio.Services.Client.Interactive.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.VisualStudio.Services.Client.Interactive.xml" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Common.xml" Component_="Dragablz.xml" FileName="MICRO~23.XML|Microsoft.VisualStudio.Services.Common.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.VisualStudio.Services.Common.xml" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.WebApi.xml" Component_="Dragablz.xml" FileName="MICRO~24.XML|Microsoft.VisualStudio.Services.WebApi.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.VisualStudio.Services.WebApi.xml" SelfReg="false"/>
- <ROW File="Microsoft.WindowsAPICodePack.Shell.xml" Component_="Dragablz.xml" FileName="MICRO~25.XML|Microsoft.WindowsAPICodePack.Shell.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.WindowsAPICodePack.Shell.xml" SelfReg="false"/>
- <ROW File="Microsoft.WindowsAPICodePack.xml" Component_="Dragablz.xml" FileName="MICRO~26.XML|Microsoft.WindowsAPICodePack.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Microsoft.WindowsAPICodePack.xml" SelfReg="false"/>
- <ROW File="Newtonsoft.Json.xml" Component_="Dragablz.xml" FileName="NEWTON~1.XML|Newtonsoft.Json.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Newtonsoft.Json.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Client.resources.dll_7" Component_="Microsoft.TeamFoundation.Client.resources.dll_7" FileName="MICROS~1.DLL|Microsoft.TeamFoundation.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pl\Microsoft.TeamFoundation.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Common.resources.dll_7" Component_="Microsoft.TeamFoundation.Common.resources.dll_7" FileName="MICROS~2.DLL|Microsoft.TeamFoundation.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pl\Microsoft.TeamFoundation.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Core.WebApi.resources.dll_7" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_7" FileName="MICROS~3.DLL|Microsoft.TeamFoundation.Core.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pl\Microsoft.TeamFoundation.Core.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_7" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_7" FileName="MICROS~4.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pl\Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_7" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_7" FileName="MICROS~5.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pl\Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_7" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_7" FileName="MICROS~6.DLL|Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pl\Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_7" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_7" FileName="MICROS~7.DLL|Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pl\Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_7" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_7" FileName="MICROS~8.DLL|Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pl\Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Common.resources.dll_7" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_7" FileName="MICROS~9.DLL|Microsoft.VisualStudio.Services.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pl\Microsoft.VisualStudio.Services.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.WebApi.resources.dll_7" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_7" FileName="MICRO~10.DLL|Microsoft.VisualStudio.Services.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pl\Microsoft.VisualStudio.Services.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="protobufnet.xml" Component_="Dragablz.xml" FileName="PROTOB~1.XML|protobuf-net.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\protobuf-net.xml" SelfReg="false"/>
- <ROW File="protoc1.0M4.jar" Component_="protoc1.0M4.jar" FileName="PROTOC~1.JAR|protoc-1.0M4.jar" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ProtoCompilers\protoc-1.0M4.jar" SelfReg="false"/>
- <ROW File="protocc.exe" Component_="protocc.exe" FileName="protoc-c.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ProtoCompilers\protoc-c.exe" SelfReg="false" DigSign="true"/>
- <ROW File="protoc.exe" Component_="protoc.exe" FileName="protoc.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ProtoCompilers\protoc.exe" SelfReg="false" DigSign="true"/>
- <ROW File="Microsoft.TeamFoundation.Client.resources.dll_8" Component_="Microsoft.TeamFoundation.Client.resources.dll_8" FileName="MICROS~1.DLL|Microsoft.TeamFoundation.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pt-BR\Microsoft.TeamFoundation.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Common.resources.dll_8" Component_="Microsoft.TeamFoundation.Common.resources.dll_8" FileName="MICROS~2.DLL|Microsoft.TeamFoundation.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pt-BR\Microsoft.TeamFoundation.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Core.WebApi.resources.dll_8" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_8" FileName="MICROS~3.DLL|Microsoft.TeamFoundation.Core.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pt-BR\Microsoft.TeamFoundation.Core.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_8" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_8" FileName="MICROS~4.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pt-BR\Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_8" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_8" FileName="MICROS~5.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pt-BR\Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_8" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_8" FileName="MICROS~6.DLL|Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pt-BR\Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_8" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_8" FileName="MICROS~7.DLL|Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pt-BR\Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_8" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_8" FileName="MICROS~8.DLL|Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pt-BR\Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Common.resources.dll_8" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_8" FileName="MICROS~9.DLL|Microsoft.VisualStudio.Services.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pt-BR\Microsoft.VisualStudio.Services.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.WebApi.resources.dll_8" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_8" FileName="MICRO~10.DLL|Microsoft.VisualStudio.Services.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\pt-BR\Microsoft.VisualStudio.Services.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Quamotion.TurboJpegWrapper.pdb" Component_="Quamotion.TurboJpegWrapper.dll" FileName="QUAMOT~1.PDB|Quamotion.TurboJpegWrapper.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Quamotion.TurboJpegWrapper.pdb" SelfReg="false"/>
- <ROW File="RealTimeGraphX.pdb" Component_="RealTimeGraphX.dll" FileName="REALTI~1.PDB|RealTimeGraphX.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\RealTimeGraphX.pdb" SelfReg="false"/>
- <ROW File="RealTimeGraphX.WPF.pdb" Component_="RealTimeGraphX.WPF.dll" FileName="REALTI~2.PDB|RealTimeGraphX.WPF.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\RealTimeGraphX.WPF.pdb" SelfReg="false"/>
- <ROW File="csc.exe" Component_="csc.exe" FileName="csc.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\csc.exe" SelfReg="false" DigSign="true"/>
- <ROW File="csc.exe.config" Component_="csc.exe.config" FileName="CSCEXE~1.CON|csc.exe.config" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\csc.exe.config" SelfReg="false"/>
- <ROW File="csc.rsp" Component_="csc.exe.config" FileName="csc.rsp" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\csc.rsp" SelfReg="false"/>
- <ROW File="csi.exe" Component_="csi.exe" FileName="csi.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\csi.exe" SelfReg="false" DigSign="true"/>
- <ROW File="csi.exe.config" Component_="csc.exe.config" FileName="CSIEXE~1.CON|csi.exe.config" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\csi.exe.config" SelfReg="false"/>
- <ROW File="csi.rsp" Component_="csc.exe.config" FileName="csi.rsp" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\csi.rsp" SelfReg="false"/>
- <ROW File="Microsoft.Build.Tasks.CodeAnalysis.dll" Component_="Microsoft.Build.Tasks.CodeAnalysis.dll" FileName="MICROS~1.DLL|Microsoft.Build.Tasks.CodeAnalysis.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\Microsoft.Build.Tasks.CodeAnalysis.dll" SelfReg="false"/>
- <ROW File="Microsoft.CodeAnalysis.CSharp.dll" Component_="Microsoft.CodeAnalysis.CSharp.dll" FileName="MICROS~2.DLL|Microsoft.CodeAnalysis.CSharp.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\Microsoft.CodeAnalysis.CSharp.dll" SelfReg="false"/>
- <ROW File="Microsoft.CodeAnalysis.CSharp.Scripting.dll" Component_="Microsoft.CodeAnalysis.CSharp.Scripting.dll" FileName="MICROS~3.DLL|Microsoft.CodeAnalysis.CSharp.Scripting.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\Microsoft.CodeAnalysis.CSharp.Scripting.dll" SelfReg="false"/>
- <ROW File="Microsoft.CodeAnalysis.dll" Component_="Microsoft.CodeAnalysis.dll" FileName="MICROS~4.DLL|Microsoft.CodeAnalysis.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\Microsoft.CodeAnalysis.dll" SelfReg="false"/>
- <ROW File="Microsoft.CodeAnalysis.Scripting.dll" Component_="Microsoft.CodeAnalysis.Scripting.dll" FileName="MICROS~5.DLL|Microsoft.CodeAnalysis.Scripting.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\Microsoft.CodeAnalysis.Scripting.dll" SelfReg="false"/>
- <ROW File="Microsoft.CodeAnalysis.VisualBasic.dll" Component_="Microsoft.CodeAnalysis.VisualBasic.dll" FileName="MICROS~6.DLL|Microsoft.CodeAnalysis.VisualBasic.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\Microsoft.CodeAnalysis.VisualBasic.dll" SelfReg="false"/>
- <ROW File="Microsoft.CSharp.Core.targets" Component_="csc.exe.config" FileName="MICROS~1.TAR|Microsoft.CSharp.Core.targets" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\Microsoft.CSharp.Core.targets" SelfReg="false"/>
- <ROW File="Microsoft.DiaSymReader.Native.amd64.dll" Component_="Microsoft.DiaSymReader.Native.amd64.dll" FileName="MICROS~7.DLL|Microsoft.DiaSymReader.Native.amd64.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\Microsoft.DiaSymReader.Native.amd64.dll" SelfReg="false"/>
- <ROW File="Microsoft.DiaSymReader.Native.x86.dll" Component_="Microsoft.DiaSymReader.Native.x86.dll" FileName="MICROS~8.DLL|Microsoft.DiaSymReader.Native.x86.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\Microsoft.DiaSymReader.Native.x86.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualBasic.Core.targets" Component_="csc.exe.config" FileName="MICROS~2.TAR|Microsoft.VisualBasic.Core.targets" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\Microsoft.VisualBasic.Core.targets" SelfReg="false"/>
- <ROW File="Microsoft.Win32.Primitives.dll_1" Component_="Microsoft.Win32.Primitives.dll_1" FileName="MICROS~9.DLL|Microsoft.Win32.Primitives.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\Microsoft.Win32.Primitives.dll" SelfReg="false"/>
- <ROW File="System.AppContext.dll_1" Component_="System.AppContext.dll_1" FileName="SYSTEM~1.DLL|System.AppContext.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.AppContext.dll" SelfReg="false"/>
- <ROW File="System.Collections.Immutable.dll" Component_="System.Collections.Immutable.dll" FileName="SYSTEM~2.DLL|System.Collections.Immutable.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Collections.Immutable.dll" SelfReg="false"/>
- <ROW File="System.Console.dll_1" Component_="System.Console.dll_1" FileName="SYSTEM~3.DLL|System.Console.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Console.dll" SelfReg="false"/>
- <ROW File="System.Diagnostics.FileVersionInfo.dll_1" Component_="System.Diagnostics.FileVersionInfo.dll_1" FileName="SYSTEM~4.DLL|System.Diagnostics.FileVersionInfo.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Diagnostics.FileVersionInfo.dll" SelfReg="false"/>
- <ROW File="System.Diagnostics.Process.dll_1" Component_="System.Diagnostics.Process.dll_1" FileName="SYSTEM~5.DLL|System.Diagnostics.Process.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Diagnostics.Process.dll" SelfReg="false"/>
- <ROW File="System.Diagnostics.StackTrace.dll_1" Component_="System.Diagnostics.StackTrace.dll_1" FileName="SYSTEM~6.DLL|System.Diagnostics.StackTrace.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Diagnostics.StackTrace.dll" SelfReg="false"/>
- <ROW File="System.IO.Compression.dll_1" Component_="System.IO.Compression.dll_1" FileName="SYSTEM~7.DLL|System.IO.Compression.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.IO.Compression.dll" SelfReg="false"/>
- <ROW File="System.IO.FileSystem.dll_1" Component_="System.IO.FileSystem.dll_1" FileName="SYSTEM~8.DLL|System.IO.FileSystem.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.IO.FileSystem.dll" SelfReg="false"/>
- <ROW File="System.IO.FileSystem.DriveInfo.dll_1" Component_="System.IO.FileSystem.DriveInfo.dll_1" FileName="SYSTEM~9.DLL|System.IO.FileSystem.DriveInfo.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.IO.FileSystem.DriveInfo.dll" SelfReg="false"/>
- <ROW File="System.IO.FileSystem.Primitives.dll_1" Component_="System.IO.FileSystem.Primitives.dll_1" FileName="SYSTE~10.DLL|System.IO.FileSystem.Primitives.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.IO.FileSystem.Primitives.dll" SelfReg="false"/>
- <ROW File="System.IO.Pipes.dll_1" Component_="System.IO.Pipes.dll_1" FileName="SYSTE~11.DLL|System.IO.Pipes.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.IO.Pipes.dll" SelfReg="false"/>
- <ROW File="System.Reflection.Metadata.dll" Component_="System.Reflection.Metadata.dll" FileName="SYSTE~12.DLL|System.Reflection.Metadata.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Reflection.Metadata.dll" SelfReg="false"/>
- <ROW File="System.Security.AccessControl.dll" Component_="System.Security.AccessControl.dll" FileName="SYSTE~13.DLL|System.Security.AccessControl.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Security.AccessControl.dll" SelfReg="false"/>
- <ROW File="System.Security.Claims.dll_1" Component_="System.Security.Claims.dll_1" FileName="SYSTE~14.DLL|System.Security.Claims.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Security.Claims.dll" SelfReg="false"/>
- <ROW File="System.Security.Cryptography.Algorithms.dll_1" Component_="System.Security.Cryptography.Algorithms.dll_1" FileName="SYSTE~15.DLL|System.Security.Cryptography.Algorithms.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Security.Cryptography.Algorithms.dll" SelfReg="false"/>
- <ROW File="System.Security.Cryptography.Encoding.dll_1" Component_="System.Security.Cryptography.Encoding.dll_1" FileName="SYSTE~16.DLL|System.Security.Cryptography.Encoding.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Security.Cryptography.Encoding.dll" SelfReg="false"/>
- <ROW File="System.Security.Cryptography.Primitives.dll_1" Component_="System.Security.Cryptography.Primitives.dll_1" FileName="SYSTE~17.DLL|System.Security.Cryptography.Primitives.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Security.Cryptography.Primitives.dll" SelfReg="false"/>
- <ROW File="System.Security.Cryptography.X509Certificates.dll_1" Component_="System.Security.Cryptography.X509Certificates.dll_1" FileName="SYSTE~18.DLL|System.Security.Cryptography.X509Certificates.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Security.Cryptography.X509Certificates.dll" SelfReg="false"/>
- <ROW File="System.Security.Principal.Windows.dll" Component_="System.Security.Principal.Windows.dll" FileName="SYSTE~19.DLL|System.Security.Principal.Windows.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Security.Principal.Windows.dll" SelfReg="false"/>
- <ROW File="System.Text.Encoding.CodePages.dll" Component_="System.Text.Encoding.CodePages.dll" FileName="SYSTE~20.DLL|System.Text.Encoding.CodePages.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Text.Encoding.CodePages.dll" SelfReg="false"/>
- <ROW File="System.Threading.Thread.dll_1" Component_="System.Threading.Thread.dll_1" FileName="SYSTE~21.DLL|System.Threading.Thread.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Threading.Thread.dll" SelfReg="false"/>
- <ROW File="System.ValueTuple.dll_1" Component_="System.ValueTuple.dll_1" FileName="SYSTE~22.DLL|System.ValueTuple.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.ValueTuple.dll" SelfReg="false"/>
- <ROW File="System.Xml.ReaderWriter.dll_1" Component_="System.Xml.ReaderWriter.dll_1" FileName="SYSTE~23.DLL|System.Xml.ReaderWriter.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Xml.ReaderWriter.dll" SelfReg="false"/>
- <ROW File="System.Xml.XmlDocument.dll_1" Component_="System.Xml.XmlDocument.dll_1" FileName="SYSTE~24.DLL|System.Xml.XmlDocument.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Xml.XmlDocument.dll" SelfReg="false"/>
- <ROW File="System.Xml.XPath.dll_1" Component_="System.Xml.XPath.dll_1" FileName="SYSTE~25.DLL|System.Xml.XPath.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Xml.XPath.dll" SelfReg="false"/>
- <ROW File="System.Xml.XPath.XDocument.dll_1" Component_="System.Xml.XPath.XDocument.dll_1" FileName="SYSTE~26.DLL|System.Xml.XPath.XDocument.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\System.Xml.XPath.XDocument.dll" SelfReg="false"/>
- <ROW File="vbc.exe" Component_="vbc.exe" FileName="vbc.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\vbc.exe" SelfReg="false" DigSign="true"/>
- <ROW File="vbc.exe.config" Component_="csc.exe.config" FileName="VBCEXE~1.CON|vbc.exe.config" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\vbc.exe.config" SelfReg="false"/>
- <ROW File="vbc.rsp" Component_="csc.exe.config" FileName="vbc.rsp" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\vbc.rsp" SelfReg="false"/>
- <ROW File="VBCSCompiler.exe" Component_="VBCSCompiler.exe" FileName="VBCSCO~1.EXE|VBCSCompiler.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\VBCSCompiler.exe" SelfReg="false" DigSign="true"/>
- <ROW File="VBCSCompiler.exe.config" Component_="csc.exe.config" FileName="VBCSCO~1.CON|VBCSCompiler.exe.config" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\roslyn\VBCSCompiler.exe.config" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Client.resources.dll_9" Component_="Microsoft.TeamFoundation.Client.resources.dll_9" FileName="MICROS~1.DLL|Microsoft.TeamFoundation.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ru\Microsoft.TeamFoundation.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Common.resources.dll_9" Component_="Microsoft.TeamFoundation.Common.resources.dll_9" FileName="MICROS~2.DLL|Microsoft.TeamFoundation.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ru\Microsoft.TeamFoundation.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Core.WebApi.resources.dll_9" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_9" FileName="MICROS~3.DLL|Microsoft.TeamFoundation.Core.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ru\Microsoft.TeamFoundation.Core.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.reso_9" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_9" FileName="MICROS~4.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ru\Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_9" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_9" FileName="MICROS~5.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ru\Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_9" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_9" FileName="MICROS~6.DLL|Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ru\Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_9" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_9" FileName="MICROS~7.DLL|Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ru\Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_9" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_9" FileName="MICROS~8.DLL|Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ru\Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Common.resources.dll_9" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_9" FileName="MICROS~9.DLL|Microsoft.VisualStudio.Services.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ru\Microsoft.VisualStudio.Services.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.WebApi.resources.dll_9" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_9" FileName="MICRO~10.DLL|Microsoft.VisualStudio.Services.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\ru\Microsoft.VisualStudio.Services.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="SciChart.Charting.DrawingTools.xml" Component_="Dragablz.xml" FileName="SCICHA~1.XML|SciChart.Charting.DrawingTools.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\SciChart.Charting.DrawingTools.xml" SelfReg="false"/>
- <ROW File="SciChart.Charting.xml" Component_="Dragablz.xml" FileName="SCICHA~2.XML|SciChart.Charting.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\SciChart.Charting.xml" SelfReg="false"/>
- <ROW File="SciChart.Charting3D.xml" Component_="Dragablz.xml" FileName="SCICHA~3.XML|SciChart.Charting3D.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\SciChart.Charting3D.xml" SelfReg="false"/>
- <ROW File="SciChart.Core.xml" Component_="Dragablz.xml" FileName="SCICHA~4.XML|SciChart.Core.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\SciChart.Core.xml" SelfReg="false"/>
- <ROW File="SciChart.Data.xml" Component_="Dragablz.xml" FileName="SCICHA~5.XML|SciChart.Data.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\SciChart.Data.xml" SelfReg="false"/>
- <ROW File="SciChart.Drawing.DirectX.xml" Component_="Dragablz.xml" FileName="SCICHA~6.XML|SciChart.Drawing.DirectX.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\SciChart.Drawing.DirectX.xml" SelfReg="false"/>
- <ROW File="SciChart.Drawing.xml" Component_="Dragablz.xml" FileName="SCICHA~7.XML|SciChart.Drawing.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\SciChart.Drawing.xml" SelfReg="false"/>
- <ROW File="System.Data.SQLite.xml" Component_="Dragablz.xml" FileName="SYSTEM~1.XML|System.Data.SQLite.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\System.Data.SQLite.xml" SelfReg="false"/>
- <ROW File="System.IdentityModel.Tokens.Jwt.pdb" Component_="System.IdentityModel.Tokens.Jwt.dll" FileName="SYSTEM~1.PDB|System.IdentityModel.Tokens.Jwt.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\System.IdentityModel.Tokens.Jwt.pdb" SelfReg="false"/>
- <ROW File="System.IdentityModel.Tokens.Jwt.xml" Component_="Dragablz.xml" FileName="SYSTEM~2.XML|System.IdentityModel.Tokens.Jwt.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\System.IdentityModel.Tokens.Jwt.xml" SelfReg="false"/>
- <ROW File="System.Net.Http.Formatting.xml" Component_="Dragablz.xml" FileName="SYSTEM~3.XML|System.Net.Http.Formatting.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\System.Net.Http.Formatting.xml" SelfReg="false"/>
- <ROW File="System.Reactive.Core.xml" Component_="Dragablz.xml" FileName="SYSTEM~4.XML|System.Reactive.Core.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\System.Reactive.Core.xml" SelfReg="false"/>
- <ROW File="System.Reactive.Interfaces.xml" Component_="Dragablz.xml" FileName="SYSTEM~5.XML|System.Reactive.Interfaces.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\System.Reactive.Interfaces.xml" SelfReg="false"/>
- <ROW File="System.Reactive.Linq.xml" Component_="Dragablz.xml" FileName="SYSTEM~6.XML|System.Reactive.Linq.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\System.Reactive.Linq.xml" SelfReg="false"/>
- <ROW File="System.Reactive.PlatformServices.xml" Component_="Dragablz.xml" FileName="SYSTEM~7.XML|System.Reactive.PlatformServices.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\System.Reactive.PlatformServices.xml" SelfReg="false"/>
- <ROW File="System.Web.Http.WebHost.xml" Component_="Dragablz.xml" FileName="SYSTEM~8.XML|System.Web.Http.WebHost.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\System.Web.Http.WebHost.xml" SelfReg="false"/>
- <ROW File="System.Web.Http.xml" Component_="Dragablz.xml" FileName="SYSTEM~9.XML|System.Web.Http.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\System.Web.Http.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Client.resources.dll_10" Component_="Microsoft.TeamFoundation.Client.resources.dll_10" FileName="MICROS~1.DLL|Microsoft.TeamFoundation.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\tr\Microsoft.TeamFoundation.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Common.resources.dll_10" Component_="Microsoft.TeamFoundation.Common.resources.dll_10" FileName="MICROS~2.DLL|Microsoft.TeamFoundation.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\tr\Microsoft.TeamFoundation.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Core.WebApi.resources.dll_10" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_10" FileName="MICROS~3.DLL|Microsoft.TeamFoundation.Core.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\tr\Microsoft.TeamFoundation.Core.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.res_10" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resour_10" FileName="MICROS~4.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\tr\Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_10" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_10" FileName="MICROS~5.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\tr\Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_10" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_10" FileName="MICROS~6.DLL|Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\tr\Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_10" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_10" FileName="MICROS~7.DLL|Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\tr\Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_10" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_10" FileName="MICROS~8.DLL|Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\tr\Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Common.resources.dll_10" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_10" FileName="MICROS~9.DLL|Microsoft.VisualStudio.Services.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\tr\Microsoft.VisualStudio.Services.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.WebApi.resources.dll_10" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_10" FileName="MICRO~10.DLL|Microsoft.VisualStudio.Services.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\tr\Microsoft.VisualStudio.Services.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="WebRtc.NET.pdb" Component_="WebRtc.NET.dll" FileName="WEBRTC~1.PDB|WebRtc.NET.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\WebRtc.NET.pdb" SelfReg="false"/>
- <ROW File="WindowsInput.xml" Component_="Dragablz.xml" FileName="WINDOW~1.XML|WindowsInput.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\WindowsInput.xml" SelfReg="false"/>
- <ROW File="Z.EntityFramework.Extensions.xml" Component_="Dragablz.xml" FileName="ZENTIT~1.XML|Z.EntityFramework.Extensions.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Z.EntityFramework.Extensions.xml" SelfReg="false"/>
- <ROW File="Z.EntityFramework.Plus.EF6.xml" Component_="Dragablz.xml" FileName="ZENTIT~2.XML|Z.EntityFramework.Plus.EF6.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Z.EntityFramework.Plus.EF6.xml" SelfReg="false"/>
- <ROW File="Z.Expressions.Eval.xml" Component_="Dragablz.xml" FileName="ZEXPRE~1.XML|Z.Expressions.Eval.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Z.Expressions.Eval.xml" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Client.resources.dll_11" Component_="Microsoft.TeamFoundation.Client.resources.dll_11" FileName="MICROS~1.DLL|Microsoft.TeamFoundation.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hans\Microsoft.TeamFoundation.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Common.resources.dll_11" Component_="Microsoft.TeamFoundation.Common.resources.dll_11" FileName="MICROS~2.DLL|Microsoft.TeamFoundation.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hans\Microsoft.TeamFoundation.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Core.WebApi.resources.dll_11" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_11" FileName="MICROS~3.DLL|Microsoft.TeamFoundation.Core.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hans\Microsoft.TeamFoundation.Core.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.res_11" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resour_11" FileName="MICROS~4.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hans\Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_11" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_11" FileName="MICROS~5.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hans\Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_11" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_11" FileName="MICROS~6.DLL|Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hans\Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_11" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_11" FileName="MICROS~7.DLL|Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hans\Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_11" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_11" FileName="MICROS~8.DLL|Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hans\Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Common.resources.dll_11" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_11" FileName="MICROS~9.DLL|Microsoft.VisualStudio.Services.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hans\Microsoft.VisualStudio.Services.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.WebApi.resources.dll_11" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_11" FileName="MICRO~10.DLL|Microsoft.VisualStudio.Services.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hans\Microsoft.VisualStudio.Services.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Client.resources.dll_12" Component_="Microsoft.TeamFoundation.Client.resources.dll_12" FileName="MICROS~1.DLL|Microsoft.TeamFoundation.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hant\Microsoft.TeamFoundation.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Common.resources.dll_12" Component_="Microsoft.TeamFoundation.Common.resources.dll_12" FileName="MICROS~2.DLL|Microsoft.TeamFoundation.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hant\Microsoft.TeamFoundation.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.Core.WebApi.resources.dll_12" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_12" FileName="MICROS~3.DLL|Microsoft.TeamFoundation.Core.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hant\Microsoft.TeamFoundation.Core.WebApi.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.res_12" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resour_12" FileName="MICROS~4.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hant\Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_12" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_12" FileName="MICROS~5.DLL|Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hant\Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_12" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_12" FileName="MICROS~6.DLL|Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hant\Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_12" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_12" FileName="MICROS~7.DLL|Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hant\Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_12" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_12" FileName="MICROS~8.DLL|Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hant\Microsoft.VisualStudio.Services.Client.Interactive.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.Common.resources.dll_12" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_12" FileName="MICROS~9.DLL|Microsoft.VisualStudio.Services.Common.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hant\Microsoft.VisualStudio.Services.Common.resources.dll" SelfReg="false"/>
- <ROW File="Microsoft.VisualStudio.Services.WebApi.resources.dll_12" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_12" FileName="MICRO~10.DLL|Microsoft.VisualStudio.Services.WebApi.resources.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\zh-Hant\Microsoft.VisualStudio.Services.WebApi.resources.dll" SelfReg="false"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.AiRemoveFileComponent">
<ROW RemoveFile="_" Options="3"/>
@@ -1238,7 +796,7 @@
<ROW Action="AI_DetectSoftware" Sequence="101"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">
- <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\FSE\Release" PackageFileName="Tango FSE v1.1.2" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="Tango FSE v1.1.2"/>
+ <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\FSE\Release" PackageFileName="Tango FSE v1.1.3" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="Tango FSE v1.1.3"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
<ROW Path="&lt;AI_DICTS&gt;ui.ail"/>
@@ -1721,179 +1279,6 @@
<ROW Feature_="TangoFSE" Component_="Tango.DataStore.EF.dll"/>
<ROW Feature_="TangoFSE" Component_="Tango.DataStore.Remote.dll"/>
<ROW Feature_="TangoFSE" Component_="Tango.FSE.MachineConfiguration.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Client.resources.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Common.resources.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resources"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Common.resources.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Client.resources.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Common.resources.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_1"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Client.resources.dll_2"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Common.resources.dll_2"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_2"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_2"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_2"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_2"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_2"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_2"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_2"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_2"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Client.resources.dll_3"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Common.resources.dll_3"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_3"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_3"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_3"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_3"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_3"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_3"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_3"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_3"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Client.resources.dll_4"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Common.resources.dll_4"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_4"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_4"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_4"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_4"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_4"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_4"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_4"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_4"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Client.resources.dll_5"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Common.resources.dll_5"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_5"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_5"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_5"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_5"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_5"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_5"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_5"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_5"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Client.resources.dll_6"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Common.resources.dll_6"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_6"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_6"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_6"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_6"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_6"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_6"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_6"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_6"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Client.resources.dll_7"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Common.resources.dll_7"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_7"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_7"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_7"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_7"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_7"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_7"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_7"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_7"/>
- <ROW Feature_="TangoFSE" Component_="protoc1.0M4.jar"/>
- <ROW Feature_="TangoFSE" Component_="protocc.exe"/>
- <ROW Feature_="TangoFSE" Component_="protoc.exe"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Client.resources.dll_8"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Common.resources.dll_8"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_8"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_8"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_8"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_8"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_8"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_8"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_8"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_8"/>
- <ROW Feature_="TangoFSE" Component_="csc.exe"/>
- <ROW Feature_="TangoFSE" Component_="csc.exe.config"/>
- <ROW Feature_="TangoFSE" Component_="csi.exe"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.Build.Tasks.CodeAnalysis.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.CodeAnalysis.CSharp.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.CodeAnalysis.CSharp.Scripting.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.CodeAnalysis.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.CodeAnalysis.Scripting.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.CodeAnalysis.VisualBasic.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.DiaSymReader.Native.amd64.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.DiaSymReader.Native.x86.dll"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.Win32.Primitives.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.AppContext.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.Collections.Immutable.dll"/>
- <ROW Feature_="TangoFSE" Component_="System.Console.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.Diagnostics.FileVersionInfo.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.Diagnostics.Process.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.Diagnostics.StackTrace.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.IO.Compression.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.IO.FileSystem.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.IO.FileSystem.DriveInfo.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.IO.FileSystem.Primitives.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.IO.Pipes.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.Reflection.Metadata.dll"/>
- <ROW Feature_="TangoFSE" Component_="System.Security.AccessControl.dll"/>
- <ROW Feature_="TangoFSE" Component_="System.Security.Claims.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.Security.Cryptography.Algorithms.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.Security.Cryptography.Encoding.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.Security.Cryptography.Primitives.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.Security.Cryptography.X509Certificates.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.Security.Principal.Windows.dll"/>
- <ROW Feature_="TangoFSE" Component_="System.Text.Encoding.CodePages.dll"/>
- <ROW Feature_="TangoFSE" Component_="System.Threading.Thread.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.ValueTuple.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.Xml.ReaderWriter.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.Xml.XmlDocument.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.Xml.XPath.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="System.Xml.XPath.XDocument.dll_1"/>
- <ROW Feature_="TangoFSE" Component_="vbc.exe"/>
- <ROW Feature_="TangoFSE" Component_="VBCSCompiler.exe"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Client.resources.dll_9"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Common.resources.dll_9"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_9"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resourc_9"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_9"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_9"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_9"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_9"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_9"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_9"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Client.resources.dll_10"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Common.resources.dll_10"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_10"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resour_10"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_10"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_10"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_10"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_10"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_10"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_10"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Client.resources.dll_11"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Common.resources.dll_11"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_11"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resour_11"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_11"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_11"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_11"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_11"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_11"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_11"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Client.resources.dll_12"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Common.resources.dll_12"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.Core.WebApi.resources.dll_12"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.resour_12"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Client.resources.dll_12"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Common.resources.dll_12"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.TeamFoundation.WorkItemTracking.Proxy.resources.dll_12"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Client.Interactive.resources.dll_12"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.Common.resources.dll_12"/>
- <ROW Feature_="TangoFSE" Component_="Microsoft.VisualStudio.Services.WebApi.resources.dll_12"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiIconsComponent">
<ROW Name="Tango.FSE.LogViewer.UI.exe" SourcePath="..\..\Graphics\FSE\log_viewer_icon.ico" Index="0"/>
diff --git a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt
index 5fe5afe5a..9453b5c13 100644
--- a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt
+++ b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt
Binary files differ
diff --git a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip
index aabb8ee24..7d6d46107 100644
--- a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip
+++ b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip
@@ -18,10 +18,10 @@
<ROW Property="ARPNOREPAIR" Value="1" MultiBuildValue="DefaultBuild:1"/>
<ROW Property="ARPSYSTEMCOMPONENT" Value="1"/>
<ROW Property="Manufacturer" Value="Twine"/>
- <ROW Property="ProductCode" Value="1033:{AC1F0FE6-ED7C-49EB-A023-29C32B2E5D25} " Type="16"/>
+ <ROW Property="ProductCode" Value="1033:{8797CBF9-3FC2-4E24-B726-AE52C0E64219} " Type="16"/>
<ROW Property="ProductLanguage" Value="1033"/>
<ROW Property="ProductName" Value="Tango"/>
- <ROW Property="ProductVersion" Value="1.2.7.0" Type="32"/>
+ <ROW Property="ProductVersion" Value="1.2.9.0" Type="32"/>
<ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND;AI_SETUPEXEPATH;SETUPEXEDIR"/>
<ROW Property="UpgradeCode" Value="{F8EAB8B4-FD57-45B7-8307-D52DF760273D}"/>
<ROW Property="WindowsType9X" MultiBuildValue="DefaultBuild:Windows 9x/ME" ValueLocId="-"/>
@@ -215,13 +215,11 @@
<ROW Component="mscoree.dll" ComponentId="{85F439D0-8FD0-4B99-888D-336C7A125E3D}" Directory_="APPDIR" Attributes="0" KeyPath="mscoree.dll"/>
<ROW Component="msvcp140d.dll" ComponentId="{69E32675-9ACF-4C23-A495-300B78913B66}" Directory_="APPDIR" Attributes="0" KeyPath="msvcp140d.dll"/>
<ROW Component="protobufnet.dll" ComponentId="{163F1E17-6462-4ABE-BC86-E055F7690139}" Directory_="APPDIR" Attributes="0" KeyPath="protobufnet.dll"/>
- <ROW Component="turbojpeg.dll" ComponentId="{A8EBA4C0-FBCB-4C2D-86E6-E6641E3E4472}" Directory_="win7x64_Dir" Attributes="256" KeyPath="turbojpeg.dll"/>
- <ROW Component="turbojpeg.dll.meta" ComponentId="{055DE78E-BFF5-4574-BC2E-63F3FC53DF1A}" Directory_="win7x64_Dir" Attributes="0" KeyPath="turbojpeg.dll.meta" Type="0"/>
- <ROW Component="turbojpeg.dll.meta_1" ComponentId="{751AFE16-B61A-40E5-869B-C85CCD706411}" Directory_="win7x86_Dir" Attributes="0" KeyPath="turbojpeg.dll.meta_1" Type="0"/>
- <ROW Component="turbojpeg.dll_1" ComponentId="{5B05AD22-B386-4047-B8FF-160563B59A5D}" Directory_="win7x86_Dir" Attributes="0" KeyPath="turbojpeg.dll_1"/>
<ROW Component="ucrtbased.dll" ComponentId="{B8D025EA-CD16-4EE7-A3E7-713E2BE82BF3}" Directory_="APPDIR" Attributes="0" KeyPath="ucrtbased.dll"/>
<ROW Component="vcruntime140.dll" ComponentId="{144594CC-D19B-45E4-A420-7A1BBB122EE3}" Directory_="APPDIR" Attributes="0" KeyPath="vcruntime140.dll"/>
<ROW Component="vcruntime140d.dll" ComponentId="{7653420C-C6C3-4F31-97E8-D6DE417D3DF2}" Directory_="APPDIR" Attributes="0" KeyPath="vcruntime140d.dll"/>
+ <ROW Component="win7x64" ComponentId="{7240E0EF-E990-4B68-9779-57772901BEF7}" Directory_="win7x64_Dir" Attributes="0"/>
+ <ROW Component="win7x86" ComponentId="{ABA8DEFE-FF2F-4E39-A054-E2634DCACB13}" Directory_="win7x86_Dir" Attributes="0"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiFeatsComponent">
<ROW Feature="MainFeature" Title="MainFeature" Description="Description" Display="1" Level="1" Directory_="APPDIR" Attributes="0"/>
@@ -491,11 +489,6 @@
<ROW File="Tango.DataStore.Remote.pdb" Component_="Tango.DataStore.Remote.dll" FileName="TANGOD~6.PDB|Tango.DataStore.Remote.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.DataStore.Remote.pdb" SelfReg="false"/>
<ROW File="Tango.DataStore.Editing.dll" Component_="Tango.DataStore.Editing.dll" FileName="TANGOD~7.DLL|Tango.DataStore.Editing.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.DataStore.Editing.dll" SelfReg="false"/>
<ROW File="Tango.DataStore.Editing.pdb" Component_="Tango.DataStore.Editing.dll" FileName="TANGOD~7.PDB|Tango.DataStore.Editing.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.DataStore.Editing.pdb" SelfReg="false"/>
- <ROW File="LibGit2Sharp.dll.config" Component_="CommandLine.xml" FileName="LIBGIT~1.CON|LibGit2Sharp.dll.config" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\LibGit2Sharp.dll.config" SelfReg="false"/>
- <ROW File="turbojpeg.dll" Component_="turbojpeg.dll" FileName="TURBOJ~1.DLL|turbojpeg.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x64\turbojpeg.dll" SelfReg="false"/>
- <ROW File="turbojpeg.dll.meta" Component_="turbojpeg.dll.meta" FileName="TURBOJ~1.MET|turbojpeg.dll.meta" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x64\turbojpeg.dll.meta" SelfReg="false"/>
- <ROW File="turbojpeg.dll_1" Component_="turbojpeg.dll_1" FileName="TURBOJ~1.DLL|turbojpeg.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x86\turbojpeg.dll" SelfReg="false"/>
- <ROW File="turbojpeg.dll.meta_1" Component_="turbojpeg.dll.meta_1" FileName="TURBOJ~1.MET|turbojpeg.dll.meta" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x86\turbojpeg.dll.meta" SelfReg="false"/>
<ATTRIBUTE name="DontAddFileAttributes" value="true"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.BootstrOptComponent">
@@ -505,7 +498,7 @@
<ROW Action="AI_DetectSoftware" Sequence="101"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">
- <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\PPC" PackageFileName="PPC Installer_v1.2.7" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="PPC Installer_v1.2.7"/>
+ <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\PPC" PackageFileName="PPC Installer_v1.2.9" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="PPC Installer_v1.2.9"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
<ROW Path="&lt;AI_DICTS&gt;ui.ail"/>
@@ -573,6 +566,8 @@
<COMPONENT cid="caphyon.advinst.msicomp.MsiCreateFolderComponent">
<ROW Directory_="SHORTCUTDIR" Component_="SHORTCUTDIR" ManualDelete="false"/>
<ROW Directory_="APPDIR" Component_="APPDIR" ManualDelete="true"/>
+ <ROW Directory_="win7x64_Dir" Component_="win7x64" ManualDelete="false"/>
+ <ROW Directory_="win7x86_Dir" Component_="win7x86" ManualDelete="false"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiCustActComponent">
<ROW Action="AI_BACKUP_AI_SETUPEXEPATH" Type="51" Source="AI_SETUPEXEPATH_ORIGINAL" Target="[AI_SETUPEXEPATH]"/>
@@ -776,10 +771,8 @@
<ROW Feature_="MainFeature" Component_="Tango.DataStore.Lite.dll"/>
<ROW Feature_="MainFeature" Component_="Tango.DataStore.Remote.dll"/>
<ROW Feature_="MainFeature" Component_="Tango.DataStore.Editing.dll"/>
- <ROW Feature_="MainFeature" Component_="turbojpeg.dll"/>
- <ROW Feature_="MainFeature" Component_="turbojpeg.dll.meta"/>
- <ROW Feature_="MainFeature" Component_="turbojpeg.dll_1"/>
- <ROW Feature_="MainFeature" Component_="turbojpeg.dll.meta_1"/>
+ <ROW Feature_="MainFeature" Component_="win7x86"/>
+ <ROW Feature_="MainFeature" Component_="win7x64"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstExSeqComponent">
<ROW Action="AI_STORE_LOCATION" Condition="(Not Installed) OR REINSTALL" Sequence="1502"/>
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationInput.pb-c.c b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationInput.pb-c.c
new file mode 100644
index 000000000..5d30f6cd5
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationInput.pb-c.c
@@ -0,0 +1,144 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationInput.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "LinearizationInput.pb-c.h"
+void linearization_input__init
+ (LinearizationInput *message)
+{
+ static const LinearizationInput init_value = LINEARIZATION_INPUT__INIT;
+ *message = init_value;
+}
+size_t linearization_input__get_packed_size
+ (const LinearizationInput *message)
+{
+ assert(message->base.descriptor == &linearization_input__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t linearization_input__pack
+ (const LinearizationInput *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &linearization_input__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t linearization_input__pack_to_buffer
+ (const LinearizationInput *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &linearization_input__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+LinearizationInput *
+ linearization_input__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (LinearizationInput *)
+ protobuf_c_message_unpack (&linearization_input__descriptor,
+ allocator, len, data);
+}
+void linearization_input__free_unpacked
+ (LinearizationInput *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &linearization_input__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor linearization_input__field_descriptors[5] =
+{
+ {
+ "LiquidType",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_ENUM,
+ offsetof(LinearizationInput, has_liquidtype),
+ offsetof(LinearizationInput, liquidtype),
+ &liquid_type__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TargetL",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationInput, has_targetl),
+ offsetof(LinearizationInput, targetl),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TargetA",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationInput, has_targeta),
+ offsetof(LinearizationInput, targeta),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TargetB",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationInput, has_targetb),
+ offsetof(LinearizationInput, targetb),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Measurements",
+ 5,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_MESSAGE,
+ offsetof(LinearizationInput, n_measurements),
+ offsetof(LinearizationInput, measurements),
+ &linearization_measurement__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned linearization_input__field_indices_by_name[] = {
+ 0, /* field[0] = LiquidType */
+ 4, /* field[4] = Measurements */
+ 2, /* field[2] = TargetA */
+ 3, /* field[3] = TargetB */
+ 1, /* field[1] = TargetL */
+};
+static const ProtobufCIntRange linearization_input__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 5 }
+};
+const ProtobufCMessageDescriptor linearization_input__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "LinearizationInput",
+ "LinearizationInput",
+ "LinearizationInput",
+ "",
+ sizeof(LinearizationInput),
+ 5,
+ linearization_input__field_descriptors,
+ linearization_input__field_indices_by_name,
+ 1, linearization_input__number_ranges,
+ (ProtobufCMessageInit) linearization_input__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationInput.pb-c.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationInput.pb-c.h
new file mode 100644
index 000000000..9cab974c5
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationInput.pb-c.h
@@ -0,0 +1,82 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationInput.proto */
+
+#ifndef PROTOBUF_C_LinearizationInput_2eproto__INCLUDED
+#define PROTOBUF_C_LinearizationInput_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "LinearizationMeasurement.pb-c.h"
+#include "LiquidType.pb-c.h"
+
+typedef struct _LinearizationInput LinearizationInput;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _LinearizationInput
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_liquidtype;
+ LiquidType liquidtype;
+ protobuf_c_boolean has_targetl;
+ double targetl;
+ protobuf_c_boolean has_targeta;
+ double targeta;
+ protobuf_c_boolean has_targetb;
+ double targetb;
+ size_t n_measurements;
+ LinearizationMeasurement **measurements;
+};
+#define LINEARIZATION_INPUT__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&linearization_input__descriptor) \
+ , 0, LIQUID_TYPE__Cyan, 0, 0, 0, 0, 0, 0, 0,NULL }
+
+
+/* LinearizationInput methods */
+void linearization_input__init
+ (LinearizationInput *message);
+size_t linearization_input__get_packed_size
+ (const LinearizationInput *message);
+size_t linearization_input__pack
+ (const LinearizationInput *message,
+ uint8_t *out);
+size_t linearization_input__pack_to_buffer
+ (const LinearizationInput *message,
+ ProtobufCBuffer *buffer);
+LinearizationInput *
+ linearization_input__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void linearization_input__free_unpacked
+ (LinearizationInput *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*LinearizationInput_Closure)
+ (const LinearizationInput *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor linearization_input__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_LinearizationInput_2eproto__INCLUDED */
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationMeasurement.pb-c.c b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationMeasurement.pb-c.c
new file mode 100644
index 000000000..0a242ee0f
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationMeasurement.pb-c.c
@@ -0,0 +1,131 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationMeasurement.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "LinearizationMeasurement.pb-c.h"
+void linearization_measurement__init
+ (LinearizationMeasurement *message)
+{
+ static const LinearizationMeasurement init_value = LINEARIZATION_MEASUREMENT__INIT;
+ *message = init_value;
+}
+size_t linearization_measurement__get_packed_size
+ (const LinearizationMeasurement *message)
+{
+ assert(message->base.descriptor == &linearization_measurement__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t linearization_measurement__pack
+ (const LinearizationMeasurement *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &linearization_measurement__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t linearization_measurement__pack_to_buffer
+ (const LinearizationMeasurement *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &linearization_measurement__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+LinearizationMeasurement *
+ linearization_measurement__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (LinearizationMeasurement *)
+ protobuf_c_message_unpack (&linearization_measurement__descriptor,
+ allocator, len, data);
+}
+void linearization_measurement__free_unpacked
+ (LinearizationMeasurement *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &linearization_measurement__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor linearization_measurement__field_descriptors[4] =
+{
+ {
+ "InkPercentage",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationMeasurement, has_inkpercentage),
+ offsetof(LinearizationMeasurement, inkpercentage),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "L",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationMeasurement, has_l),
+ offsetof(LinearizationMeasurement, l),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "A",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationMeasurement, has_a),
+ offsetof(LinearizationMeasurement, a),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "B",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationMeasurement, has_b),
+ offsetof(LinearizationMeasurement, b),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned linearization_measurement__field_indices_by_name[] = {
+ 2, /* field[2] = A */
+ 3, /* field[3] = B */
+ 0, /* field[0] = InkPercentage */
+ 1, /* field[1] = L */
+};
+static const ProtobufCIntRange linearization_measurement__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor linearization_measurement__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "LinearizationMeasurement",
+ "LinearizationMeasurement",
+ "LinearizationMeasurement",
+ "",
+ sizeof(LinearizationMeasurement),
+ 4,
+ linearization_measurement__field_descriptors,
+ linearization_measurement__field_indices_by_name,
+ 1, linearization_measurement__number_ranges,
+ (ProtobufCMessageInit) linearization_measurement__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationMeasurement.pb-c.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationMeasurement.pb-c.h
new file mode 100644
index 000000000..b4f17f87e
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationMeasurement.pb-c.h
@@ -0,0 +1,78 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationMeasurement.proto */
+
+#ifndef PROTOBUF_C_LinearizationMeasurement_2eproto__INCLUDED
+#define PROTOBUF_C_LinearizationMeasurement_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _LinearizationMeasurement LinearizationMeasurement;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _LinearizationMeasurement
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_inkpercentage;
+ double inkpercentage;
+ protobuf_c_boolean has_l;
+ double l;
+ protobuf_c_boolean has_a;
+ double a;
+ protobuf_c_boolean has_b;
+ double b;
+};
+#define LINEARIZATION_MEASUREMENT__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&linearization_measurement__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* LinearizationMeasurement methods */
+void linearization_measurement__init
+ (LinearizationMeasurement *message);
+size_t linearization_measurement__get_packed_size
+ (const LinearizationMeasurement *message);
+size_t linearization_measurement__pack
+ (const LinearizationMeasurement *message,
+ uint8_t *out);
+size_t linearization_measurement__pack_to_buffer
+ (const LinearizationMeasurement *message,
+ ProtobufCBuffer *buffer);
+LinearizationMeasurement *
+ linearization_measurement__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void linearization_measurement__free_unpacked
+ (LinearizationMeasurement *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*LinearizationMeasurement_Closure)
+ (const LinearizationMeasurement *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor linearization_measurement__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_LinearizationMeasurement_2eproto__INCLUDED */
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationOutput.pb-c.c b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationOutput.pb-c.c
new file mode 100644
index 000000000..5bd04b218
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationOutput.pb-c.c
@@ -0,0 +1,119 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationOutput.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "LinearizationOutput.pb-c.h"
+void linearization_output__init
+ (LinearizationOutput *message)
+{
+ static const LinearizationOutput init_value = LINEARIZATION_OUTPUT__INIT;
+ *message = init_value;
+}
+size_t linearization_output__get_packed_size
+ (const LinearizationOutput *message)
+{
+ assert(message->base.descriptor == &linearization_output__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t linearization_output__pack
+ (const LinearizationOutput *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &linearization_output__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t linearization_output__pack_to_buffer
+ (const LinearizationOutput *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &linearization_output__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+LinearizationOutput *
+ linearization_output__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (LinearizationOutput *)
+ protobuf_c_message_unpack (&linearization_output__descriptor,
+ allocator, len, data);
+}
+void linearization_output__free_unpacked
+ (LinearizationOutput *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &linearization_output__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor linearization_output__field_descriptors[3] =
+{
+ {
+ "InkPercentage",
+ 1,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationOutput, n_inkpercentage),
+ offsetof(LinearizationOutput, inkpercentage),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "HasError",
+ 20,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(LinearizationOutput, has_haserror),
+ offsetof(LinearizationOutput, haserror),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ErrorMessage",
+ 21,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(LinearizationOutput, errormessage),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned linearization_output__field_indices_by_name[] = {
+ 2, /* field[2] = ErrorMessage */
+ 1, /* field[1] = HasError */
+ 0, /* field[0] = InkPercentage */
+};
+static const ProtobufCIntRange linearization_output__number_ranges[2 + 1] =
+{
+ { 1, 0 },
+ { 20, 1 },
+ { 0, 3 }
+};
+const ProtobufCMessageDescriptor linearization_output__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "LinearizationOutput",
+ "LinearizationOutput",
+ "LinearizationOutput",
+ "",
+ sizeof(LinearizationOutput),
+ 3,
+ linearization_output__field_descriptors,
+ linearization_output__field_indices_by_name,
+ 2, linearization_output__number_ranges,
+ (ProtobufCMessageInit) linearization_output__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationOutput.pb-c.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationOutput.pb-c.h
new file mode 100644
index 000000000..b0ab54e12
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LinearizationOutput.pb-c.h
@@ -0,0 +1,75 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationOutput.proto */
+
+#ifndef PROTOBUF_C_LinearizationOutput_2eproto__INCLUDED
+#define PROTOBUF_C_LinearizationOutput_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _LinearizationOutput LinearizationOutput;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _LinearizationOutput
+{
+ ProtobufCMessage base;
+ size_t n_inkpercentage;
+ double *inkpercentage;
+ protobuf_c_boolean has_haserror;
+ protobuf_c_boolean haserror;
+ char *errormessage;
+};
+#define LINEARIZATION_OUTPUT__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&linearization_output__descriptor) \
+ , 0,NULL, 0, 0, NULL }
+
+
+/* LinearizationOutput methods */
+void linearization_output__init
+ (LinearizationOutput *message);
+size_t linearization_output__get_packed_size
+ (const LinearizationOutput *message);
+size_t linearization_output__pack
+ (const LinearizationOutput *message,
+ uint8_t *out);
+size_t linearization_output__pack_to_buffer
+ (const LinearizationOutput *message,
+ ProtobufCBuffer *buffer);
+LinearizationOutput *
+ linearization_output__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void linearization_output__free_unpacked
+ (LinearizationOutput *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*LinearizationOutput_Closure)
+ (const LinearizationOutput *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor linearization_output__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_LinearizationOutput_2eproto__INCLUDED */
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LiquidType.pb-c.c b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LiquidType.pb-c.c
index e4baae5c6..d6d4117b7 100644
--- a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LiquidType.pb-c.c
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LiquidType.pb-c.c
@@ -7,7 +7,7 @@
#endif
#include "LiquidType.pb-c.h"
-static const ProtobufCEnumValue liquid_type__enum_values_by_number[7] =
+static const ProtobufCEnumValue liquid_type__enum_values_by_number[10] =
{
{ "Cyan", "LIQUID_TYPE__Cyan", 0 },
{ "Magenta", "LIQUID_TYPE__Magenta", 1 },
@@ -16,15 +16,21 @@ static const ProtobufCEnumValue liquid_type__enum_values_by_number[7] =
{ "TransparentInk", "LIQUID_TYPE__TransparentInk", 4 },
{ "Lubricant", "LIQUID_TYPE__Lubricant", 5 },
{ "Cleaner", "LIQUID_TYPE__Cleaner", 6 },
+ { "LightCyan", "LIQUID_TYPE__LightCyan", 7 },
+ { "LightMagenta", "LIQUID_TYPE__LightMagenta", 8 },
+ { "LightYellow", "LIQUID_TYPE__LightYellow", 9 },
};
static const ProtobufCIntRange liquid_type__value_ranges[] = {
-{0, 0},{0, 7}
+{0, 0},{0, 10}
};
-static const ProtobufCEnumValueIndex liquid_type__enum_values_by_name[7] =
+static const ProtobufCEnumValueIndex liquid_type__enum_values_by_name[10] =
{
{ "Black", 3 },
{ "Cleaner", 6 },
{ "Cyan", 0 },
+ { "LightCyan", 7 },
+ { "LightMagenta", 8 },
+ { "LightYellow", 9 },
{ "Lubricant", 5 },
{ "Magenta", 1 },
{ "TransparentInk", 4 },
@@ -37,9 +43,9 @@ const ProtobufCEnumDescriptor liquid_type__descriptor =
"LiquidType",
"LiquidType",
"",
- 7,
+ 10,
liquid_type__enum_values_by_number,
- 7,
+ 10,
liquid_type__enum_values_by_name,
1,
liquid_type__value_ranges,
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LiquidType.pb-c.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LiquidType.pb-c.h
index da9ec1c60..eba52c4a7 100644
--- a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LiquidType.pb-c.h
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v1/PMR/ColorLab/LiquidType.pb-c.h
@@ -26,7 +26,10 @@ typedef enum _LiquidType {
LIQUID_TYPE__Black = 3,
LIQUID_TYPE__TransparentInk = 4,
LIQUID_TYPE__Lubricant = 5,
- LIQUID_TYPE__Cleaner = 6
+ LIQUID_TYPE__Cleaner = 6,
+ LIQUID_TYPE__LightCyan = 7,
+ LIQUID_TYPE__LightMagenta = 8,
+ LIQUID_TYPE__LightYellow = 9
PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(LIQUID_TYPE)
} LiquidType;
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationInput.pb-c.c b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationInput.pb-c.c
new file mode 100644
index 000000000..5d30f6cd5
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationInput.pb-c.c
@@ -0,0 +1,144 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationInput.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "LinearizationInput.pb-c.h"
+void linearization_input__init
+ (LinearizationInput *message)
+{
+ static const LinearizationInput init_value = LINEARIZATION_INPUT__INIT;
+ *message = init_value;
+}
+size_t linearization_input__get_packed_size
+ (const LinearizationInput *message)
+{
+ assert(message->base.descriptor == &linearization_input__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t linearization_input__pack
+ (const LinearizationInput *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &linearization_input__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t linearization_input__pack_to_buffer
+ (const LinearizationInput *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &linearization_input__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+LinearizationInput *
+ linearization_input__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (LinearizationInput *)
+ protobuf_c_message_unpack (&linearization_input__descriptor,
+ allocator, len, data);
+}
+void linearization_input__free_unpacked
+ (LinearizationInput *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &linearization_input__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor linearization_input__field_descriptors[5] =
+{
+ {
+ "LiquidType",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_ENUM,
+ offsetof(LinearizationInput, has_liquidtype),
+ offsetof(LinearizationInput, liquidtype),
+ &liquid_type__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TargetL",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationInput, has_targetl),
+ offsetof(LinearizationInput, targetl),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TargetA",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationInput, has_targeta),
+ offsetof(LinearizationInput, targeta),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TargetB",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationInput, has_targetb),
+ offsetof(LinearizationInput, targetb),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Measurements",
+ 5,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_MESSAGE,
+ offsetof(LinearizationInput, n_measurements),
+ offsetof(LinearizationInput, measurements),
+ &linearization_measurement__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned linearization_input__field_indices_by_name[] = {
+ 0, /* field[0] = LiquidType */
+ 4, /* field[4] = Measurements */
+ 2, /* field[2] = TargetA */
+ 3, /* field[3] = TargetB */
+ 1, /* field[1] = TargetL */
+};
+static const ProtobufCIntRange linearization_input__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 5 }
+};
+const ProtobufCMessageDescriptor linearization_input__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "LinearizationInput",
+ "LinearizationInput",
+ "LinearizationInput",
+ "",
+ sizeof(LinearizationInput),
+ 5,
+ linearization_input__field_descriptors,
+ linearization_input__field_indices_by_name,
+ 1, linearization_input__number_ranges,
+ (ProtobufCMessageInit) linearization_input__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationInput.pb-c.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationInput.pb-c.h
new file mode 100644
index 000000000..9cab974c5
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationInput.pb-c.h
@@ -0,0 +1,82 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationInput.proto */
+
+#ifndef PROTOBUF_C_LinearizationInput_2eproto__INCLUDED
+#define PROTOBUF_C_LinearizationInput_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "LinearizationMeasurement.pb-c.h"
+#include "LiquidType.pb-c.h"
+
+typedef struct _LinearizationInput LinearizationInput;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _LinearizationInput
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_liquidtype;
+ LiquidType liquidtype;
+ protobuf_c_boolean has_targetl;
+ double targetl;
+ protobuf_c_boolean has_targeta;
+ double targeta;
+ protobuf_c_boolean has_targetb;
+ double targetb;
+ size_t n_measurements;
+ LinearizationMeasurement **measurements;
+};
+#define LINEARIZATION_INPUT__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&linearization_input__descriptor) \
+ , 0, LIQUID_TYPE__Cyan, 0, 0, 0, 0, 0, 0, 0,NULL }
+
+
+/* LinearizationInput methods */
+void linearization_input__init
+ (LinearizationInput *message);
+size_t linearization_input__get_packed_size
+ (const LinearizationInput *message);
+size_t linearization_input__pack
+ (const LinearizationInput *message,
+ uint8_t *out);
+size_t linearization_input__pack_to_buffer
+ (const LinearizationInput *message,
+ ProtobufCBuffer *buffer);
+LinearizationInput *
+ linearization_input__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void linearization_input__free_unpacked
+ (LinearizationInput *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*LinearizationInput_Closure)
+ (const LinearizationInput *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor linearization_input__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_LinearizationInput_2eproto__INCLUDED */
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationMeasurement.pb-c.c b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationMeasurement.pb-c.c
new file mode 100644
index 000000000..0a242ee0f
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationMeasurement.pb-c.c
@@ -0,0 +1,131 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationMeasurement.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "LinearizationMeasurement.pb-c.h"
+void linearization_measurement__init
+ (LinearizationMeasurement *message)
+{
+ static const LinearizationMeasurement init_value = LINEARIZATION_MEASUREMENT__INIT;
+ *message = init_value;
+}
+size_t linearization_measurement__get_packed_size
+ (const LinearizationMeasurement *message)
+{
+ assert(message->base.descriptor == &linearization_measurement__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t linearization_measurement__pack
+ (const LinearizationMeasurement *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &linearization_measurement__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t linearization_measurement__pack_to_buffer
+ (const LinearizationMeasurement *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &linearization_measurement__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+LinearizationMeasurement *
+ linearization_measurement__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (LinearizationMeasurement *)
+ protobuf_c_message_unpack (&linearization_measurement__descriptor,
+ allocator, len, data);
+}
+void linearization_measurement__free_unpacked
+ (LinearizationMeasurement *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &linearization_measurement__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor linearization_measurement__field_descriptors[4] =
+{
+ {
+ "InkPercentage",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationMeasurement, has_inkpercentage),
+ offsetof(LinearizationMeasurement, inkpercentage),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "L",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationMeasurement, has_l),
+ offsetof(LinearizationMeasurement, l),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "A",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationMeasurement, has_a),
+ offsetof(LinearizationMeasurement, a),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "B",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationMeasurement, has_b),
+ offsetof(LinearizationMeasurement, b),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned linearization_measurement__field_indices_by_name[] = {
+ 2, /* field[2] = A */
+ 3, /* field[3] = B */
+ 0, /* field[0] = InkPercentage */
+ 1, /* field[1] = L */
+};
+static const ProtobufCIntRange linearization_measurement__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor linearization_measurement__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "LinearizationMeasurement",
+ "LinearizationMeasurement",
+ "LinearizationMeasurement",
+ "",
+ sizeof(LinearizationMeasurement),
+ 4,
+ linearization_measurement__field_descriptors,
+ linearization_measurement__field_indices_by_name,
+ 1, linearization_measurement__number_ranges,
+ (ProtobufCMessageInit) linearization_measurement__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationMeasurement.pb-c.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationMeasurement.pb-c.h
new file mode 100644
index 000000000..b4f17f87e
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationMeasurement.pb-c.h
@@ -0,0 +1,78 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationMeasurement.proto */
+
+#ifndef PROTOBUF_C_LinearizationMeasurement_2eproto__INCLUDED
+#define PROTOBUF_C_LinearizationMeasurement_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _LinearizationMeasurement LinearizationMeasurement;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _LinearizationMeasurement
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_inkpercentage;
+ double inkpercentage;
+ protobuf_c_boolean has_l;
+ double l;
+ protobuf_c_boolean has_a;
+ double a;
+ protobuf_c_boolean has_b;
+ double b;
+};
+#define LINEARIZATION_MEASUREMENT__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&linearization_measurement__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* LinearizationMeasurement methods */
+void linearization_measurement__init
+ (LinearizationMeasurement *message);
+size_t linearization_measurement__get_packed_size
+ (const LinearizationMeasurement *message);
+size_t linearization_measurement__pack
+ (const LinearizationMeasurement *message,
+ uint8_t *out);
+size_t linearization_measurement__pack_to_buffer
+ (const LinearizationMeasurement *message,
+ ProtobufCBuffer *buffer);
+LinearizationMeasurement *
+ linearization_measurement__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void linearization_measurement__free_unpacked
+ (LinearizationMeasurement *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*LinearizationMeasurement_Closure)
+ (const LinearizationMeasurement *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor linearization_measurement__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_LinearizationMeasurement_2eproto__INCLUDED */
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationOutput.pb-c.c b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationOutput.pb-c.c
new file mode 100644
index 000000000..5bd04b218
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationOutput.pb-c.c
@@ -0,0 +1,119 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationOutput.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "LinearizationOutput.pb-c.h"
+void linearization_output__init
+ (LinearizationOutput *message)
+{
+ static const LinearizationOutput init_value = LINEARIZATION_OUTPUT__INIT;
+ *message = init_value;
+}
+size_t linearization_output__get_packed_size
+ (const LinearizationOutput *message)
+{
+ assert(message->base.descriptor == &linearization_output__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t linearization_output__pack
+ (const LinearizationOutput *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &linearization_output__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t linearization_output__pack_to_buffer
+ (const LinearizationOutput *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &linearization_output__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+LinearizationOutput *
+ linearization_output__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (LinearizationOutput *)
+ protobuf_c_message_unpack (&linearization_output__descriptor,
+ allocator, len, data);
+}
+void linearization_output__free_unpacked
+ (LinearizationOutput *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &linearization_output__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor linearization_output__field_descriptors[3] =
+{
+ {
+ "InkPercentage",
+ 1,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationOutput, n_inkpercentage),
+ offsetof(LinearizationOutput, inkpercentage),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "HasError",
+ 20,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(LinearizationOutput, has_haserror),
+ offsetof(LinearizationOutput, haserror),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ErrorMessage",
+ 21,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(LinearizationOutput, errormessage),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned linearization_output__field_indices_by_name[] = {
+ 2, /* field[2] = ErrorMessage */
+ 1, /* field[1] = HasError */
+ 0, /* field[0] = InkPercentage */
+};
+static const ProtobufCIntRange linearization_output__number_ranges[2 + 1] =
+{
+ { 1, 0 },
+ { 20, 1 },
+ { 0, 3 }
+};
+const ProtobufCMessageDescriptor linearization_output__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "LinearizationOutput",
+ "LinearizationOutput",
+ "LinearizationOutput",
+ "",
+ sizeof(LinearizationOutput),
+ 3,
+ linearization_output__field_descriptors,
+ linearization_output__field_indices_by_name,
+ 2, linearization_output__number_ranges,
+ (ProtobufCMessageInit) linearization_output__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationOutput.pb-c.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationOutput.pb-c.h
new file mode 100644
index 000000000..b0ab54e12
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LinearizationOutput.pb-c.h
@@ -0,0 +1,75 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationOutput.proto */
+
+#ifndef PROTOBUF_C_LinearizationOutput_2eproto__INCLUDED
+#define PROTOBUF_C_LinearizationOutput_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _LinearizationOutput LinearizationOutput;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _LinearizationOutput
+{
+ ProtobufCMessage base;
+ size_t n_inkpercentage;
+ double *inkpercentage;
+ protobuf_c_boolean has_haserror;
+ protobuf_c_boolean haserror;
+ char *errormessage;
+};
+#define LINEARIZATION_OUTPUT__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&linearization_output__descriptor) \
+ , 0,NULL, 0, 0, NULL }
+
+
+/* LinearizationOutput methods */
+void linearization_output__init
+ (LinearizationOutput *message);
+size_t linearization_output__get_packed_size
+ (const LinearizationOutput *message);
+size_t linearization_output__pack
+ (const LinearizationOutput *message,
+ uint8_t *out);
+size_t linearization_output__pack_to_buffer
+ (const LinearizationOutput *message,
+ ProtobufCBuffer *buffer);
+LinearizationOutput *
+ linearization_output__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void linearization_output__free_unpacked
+ (LinearizationOutput *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*LinearizationOutput_Closure)
+ (const LinearizationOutput *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor linearization_output__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_LinearizationOutput_2eproto__INCLUDED */
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LiquidType.pb-c.c b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LiquidType.pb-c.c
index e4baae5c6..d6d4117b7 100644
--- a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LiquidType.pb-c.c
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LiquidType.pb-c.c
@@ -7,7 +7,7 @@
#endif
#include "LiquidType.pb-c.h"
-static const ProtobufCEnumValue liquid_type__enum_values_by_number[7] =
+static const ProtobufCEnumValue liquid_type__enum_values_by_number[10] =
{
{ "Cyan", "LIQUID_TYPE__Cyan", 0 },
{ "Magenta", "LIQUID_TYPE__Magenta", 1 },
@@ -16,15 +16,21 @@ static const ProtobufCEnumValue liquid_type__enum_values_by_number[7] =
{ "TransparentInk", "LIQUID_TYPE__TransparentInk", 4 },
{ "Lubricant", "LIQUID_TYPE__Lubricant", 5 },
{ "Cleaner", "LIQUID_TYPE__Cleaner", 6 },
+ { "LightCyan", "LIQUID_TYPE__LightCyan", 7 },
+ { "LightMagenta", "LIQUID_TYPE__LightMagenta", 8 },
+ { "LightYellow", "LIQUID_TYPE__LightYellow", 9 },
};
static const ProtobufCIntRange liquid_type__value_ranges[] = {
-{0, 0},{0, 7}
+{0, 0},{0, 10}
};
-static const ProtobufCEnumValueIndex liquid_type__enum_values_by_name[7] =
+static const ProtobufCEnumValueIndex liquid_type__enum_values_by_name[10] =
{
{ "Black", 3 },
{ "Cleaner", 6 },
{ "Cyan", 0 },
+ { "LightCyan", 7 },
+ { "LightMagenta", 8 },
+ { "LightYellow", 9 },
{ "Lubricant", 5 },
{ "Magenta", 1 },
{ "TransparentInk", 4 },
@@ -37,9 +43,9 @@ const ProtobufCEnumDescriptor liquid_type__descriptor =
"LiquidType",
"LiquidType",
"",
- 7,
+ 10,
liquid_type__enum_values_by_number,
- 7,
+ 10,
liquid_type__enum_values_by_name,
1,
liquid_type__value_ranges,
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LiquidType.pb-c.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LiquidType.pb-c.h
index da9ec1c60..eba52c4a7 100644
--- a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LiquidType.pb-c.h
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v2/PMR/ColorLab/LiquidType.pb-c.h
@@ -26,7 +26,10 @@ typedef enum _LiquidType {
LIQUID_TYPE__Black = 3,
LIQUID_TYPE__TransparentInk = 4,
LIQUID_TYPE__Lubricant = 5,
- LIQUID_TYPE__Cleaner = 6
+ LIQUID_TYPE__Cleaner = 6,
+ LIQUID_TYPE__LightCyan = 7,
+ LIQUID_TYPE__LightMagenta = 8,
+ LIQUID_TYPE__LightYellow = 9
PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(LIQUID_TYPE)
} LiquidType;
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationInput.pb-c.c b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationInput.pb-c.c
new file mode 100644
index 000000000..5d30f6cd5
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationInput.pb-c.c
@@ -0,0 +1,144 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationInput.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "LinearizationInput.pb-c.h"
+void linearization_input__init
+ (LinearizationInput *message)
+{
+ static const LinearizationInput init_value = LINEARIZATION_INPUT__INIT;
+ *message = init_value;
+}
+size_t linearization_input__get_packed_size
+ (const LinearizationInput *message)
+{
+ assert(message->base.descriptor == &linearization_input__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t linearization_input__pack
+ (const LinearizationInput *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &linearization_input__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t linearization_input__pack_to_buffer
+ (const LinearizationInput *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &linearization_input__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+LinearizationInput *
+ linearization_input__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (LinearizationInput *)
+ protobuf_c_message_unpack (&linearization_input__descriptor,
+ allocator, len, data);
+}
+void linearization_input__free_unpacked
+ (LinearizationInput *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &linearization_input__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor linearization_input__field_descriptors[5] =
+{
+ {
+ "LiquidType",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_ENUM,
+ offsetof(LinearizationInput, has_liquidtype),
+ offsetof(LinearizationInput, liquidtype),
+ &liquid_type__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TargetL",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationInput, has_targetl),
+ offsetof(LinearizationInput, targetl),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TargetA",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationInput, has_targeta),
+ offsetof(LinearizationInput, targeta),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TargetB",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationInput, has_targetb),
+ offsetof(LinearizationInput, targetb),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Measurements",
+ 5,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_MESSAGE,
+ offsetof(LinearizationInput, n_measurements),
+ offsetof(LinearizationInput, measurements),
+ &linearization_measurement__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned linearization_input__field_indices_by_name[] = {
+ 0, /* field[0] = LiquidType */
+ 4, /* field[4] = Measurements */
+ 2, /* field[2] = TargetA */
+ 3, /* field[3] = TargetB */
+ 1, /* field[1] = TargetL */
+};
+static const ProtobufCIntRange linearization_input__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 5 }
+};
+const ProtobufCMessageDescriptor linearization_input__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "LinearizationInput",
+ "LinearizationInput",
+ "LinearizationInput",
+ "",
+ sizeof(LinearizationInput),
+ 5,
+ linearization_input__field_descriptors,
+ linearization_input__field_indices_by_name,
+ 1, linearization_input__number_ranges,
+ (ProtobufCMessageInit) linearization_input__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationInput.pb-c.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationInput.pb-c.h
new file mode 100644
index 000000000..9cab974c5
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationInput.pb-c.h
@@ -0,0 +1,82 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationInput.proto */
+
+#ifndef PROTOBUF_C_LinearizationInput_2eproto__INCLUDED
+#define PROTOBUF_C_LinearizationInput_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "LinearizationMeasurement.pb-c.h"
+#include "LiquidType.pb-c.h"
+
+typedef struct _LinearizationInput LinearizationInput;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _LinearizationInput
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_liquidtype;
+ LiquidType liquidtype;
+ protobuf_c_boolean has_targetl;
+ double targetl;
+ protobuf_c_boolean has_targeta;
+ double targeta;
+ protobuf_c_boolean has_targetb;
+ double targetb;
+ size_t n_measurements;
+ LinearizationMeasurement **measurements;
+};
+#define LINEARIZATION_INPUT__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&linearization_input__descriptor) \
+ , 0, LIQUID_TYPE__Cyan, 0, 0, 0, 0, 0, 0, 0,NULL }
+
+
+/* LinearizationInput methods */
+void linearization_input__init
+ (LinearizationInput *message);
+size_t linearization_input__get_packed_size
+ (const LinearizationInput *message);
+size_t linearization_input__pack
+ (const LinearizationInput *message,
+ uint8_t *out);
+size_t linearization_input__pack_to_buffer
+ (const LinearizationInput *message,
+ ProtobufCBuffer *buffer);
+LinearizationInput *
+ linearization_input__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void linearization_input__free_unpacked
+ (LinearizationInput *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*LinearizationInput_Closure)
+ (const LinearizationInput *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor linearization_input__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_LinearizationInput_2eproto__INCLUDED */
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationMeasurement.pb-c.c b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationMeasurement.pb-c.c
new file mode 100644
index 000000000..0a242ee0f
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationMeasurement.pb-c.c
@@ -0,0 +1,131 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationMeasurement.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "LinearizationMeasurement.pb-c.h"
+void linearization_measurement__init
+ (LinearizationMeasurement *message)
+{
+ static const LinearizationMeasurement init_value = LINEARIZATION_MEASUREMENT__INIT;
+ *message = init_value;
+}
+size_t linearization_measurement__get_packed_size
+ (const LinearizationMeasurement *message)
+{
+ assert(message->base.descriptor == &linearization_measurement__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t linearization_measurement__pack
+ (const LinearizationMeasurement *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &linearization_measurement__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t linearization_measurement__pack_to_buffer
+ (const LinearizationMeasurement *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &linearization_measurement__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+LinearizationMeasurement *
+ linearization_measurement__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (LinearizationMeasurement *)
+ protobuf_c_message_unpack (&linearization_measurement__descriptor,
+ allocator, len, data);
+}
+void linearization_measurement__free_unpacked
+ (LinearizationMeasurement *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &linearization_measurement__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor linearization_measurement__field_descriptors[4] =
+{
+ {
+ "InkPercentage",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationMeasurement, has_inkpercentage),
+ offsetof(LinearizationMeasurement, inkpercentage),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "L",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationMeasurement, has_l),
+ offsetof(LinearizationMeasurement, l),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "A",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationMeasurement, has_a),
+ offsetof(LinearizationMeasurement, a),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "B",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationMeasurement, has_b),
+ offsetof(LinearizationMeasurement, b),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned linearization_measurement__field_indices_by_name[] = {
+ 2, /* field[2] = A */
+ 3, /* field[3] = B */
+ 0, /* field[0] = InkPercentage */
+ 1, /* field[1] = L */
+};
+static const ProtobufCIntRange linearization_measurement__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor linearization_measurement__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "LinearizationMeasurement",
+ "LinearizationMeasurement",
+ "LinearizationMeasurement",
+ "",
+ sizeof(LinearizationMeasurement),
+ 4,
+ linearization_measurement__field_descriptors,
+ linearization_measurement__field_indices_by_name,
+ 1, linearization_measurement__number_ranges,
+ (ProtobufCMessageInit) linearization_measurement__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationMeasurement.pb-c.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationMeasurement.pb-c.h
new file mode 100644
index 000000000..b4f17f87e
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationMeasurement.pb-c.h
@@ -0,0 +1,78 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationMeasurement.proto */
+
+#ifndef PROTOBUF_C_LinearizationMeasurement_2eproto__INCLUDED
+#define PROTOBUF_C_LinearizationMeasurement_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _LinearizationMeasurement LinearizationMeasurement;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _LinearizationMeasurement
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_inkpercentage;
+ double inkpercentage;
+ protobuf_c_boolean has_l;
+ double l;
+ protobuf_c_boolean has_a;
+ double a;
+ protobuf_c_boolean has_b;
+ double b;
+};
+#define LINEARIZATION_MEASUREMENT__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&linearization_measurement__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* LinearizationMeasurement methods */
+void linearization_measurement__init
+ (LinearizationMeasurement *message);
+size_t linearization_measurement__get_packed_size
+ (const LinearizationMeasurement *message);
+size_t linearization_measurement__pack
+ (const LinearizationMeasurement *message,
+ uint8_t *out);
+size_t linearization_measurement__pack_to_buffer
+ (const LinearizationMeasurement *message,
+ ProtobufCBuffer *buffer);
+LinearizationMeasurement *
+ linearization_measurement__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void linearization_measurement__free_unpacked
+ (LinearizationMeasurement *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*LinearizationMeasurement_Closure)
+ (const LinearizationMeasurement *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor linearization_measurement__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_LinearizationMeasurement_2eproto__INCLUDED */
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationOutput.pb-c.c b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationOutput.pb-c.c
new file mode 100644
index 000000000..5bd04b218
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationOutput.pb-c.c
@@ -0,0 +1,119 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationOutput.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "LinearizationOutput.pb-c.h"
+void linearization_output__init
+ (LinearizationOutput *message)
+{
+ static const LinearizationOutput init_value = LINEARIZATION_OUTPUT__INIT;
+ *message = init_value;
+}
+size_t linearization_output__get_packed_size
+ (const LinearizationOutput *message)
+{
+ assert(message->base.descriptor == &linearization_output__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t linearization_output__pack
+ (const LinearizationOutput *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &linearization_output__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t linearization_output__pack_to_buffer
+ (const LinearizationOutput *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &linearization_output__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+LinearizationOutput *
+ linearization_output__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (LinearizationOutput *)
+ protobuf_c_message_unpack (&linearization_output__descriptor,
+ allocator, len, data);
+}
+void linearization_output__free_unpacked
+ (LinearizationOutput *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &linearization_output__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor linearization_output__field_descriptors[3] =
+{
+ {
+ "InkPercentage",
+ 1,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(LinearizationOutput, n_inkpercentage),
+ offsetof(LinearizationOutput, inkpercentage),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "HasError",
+ 20,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(LinearizationOutput, has_haserror),
+ offsetof(LinearizationOutput, haserror),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ErrorMessage",
+ 21,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(LinearizationOutput, errormessage),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned linearization_output__field_indices_by_name[] = {
+ 2, /* field[2] = ErrorMessage */
+ 1, /* field[1] = HasError */
+ 0, /* field[0] = InkPercentage */
+};
+static const ProtobufCIntRange linearization_output__number_ranges[2 + 1] =
+{
+ { 1, 0 },
+ { 20, 1 },
+ { 0, 3 }
+};
+const ProtobufCMessageDescriptor linearization_output__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "LinearizationOutput",
+ "LinearizationOutput",
+ "LinearizationOutput",
+ "",
+ sizeof(LinearizationOutput),
+ 3,
+ linearization_output__field_descriptors,
+ linearization_output__field_indices_by_name,
+ 2, linearization_output__number_ranges,
+ (ProtobufCMessageInit) linearization_output__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationOutput.pb-c.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationOutput.pb-c.h
new file mode 100644
index 000000000..b0ab54e12
--- /dev/null
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LinearizationOutput.pb-c.h
@@ -0,0 +1,75 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: LinearizationOutput.proto */
+
+#ifndef PROTOBUF_C_LinearizationOutput_2eproto__INCLUDED
+#define PROTOBUF_C_LinearizationOutput_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _LinearizationOutput LinearizationOutput;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _LinearizationOutput
+{
+ ProtobufCMessage base;
+ size_t n_inkpercentage;
+ double *inkpercentage;
+ protobuf_c_boolean has_haserror;
+ protobuf_c_boolean haserror;
+ char *errormessage;
+};
+#define LINEARIZATION_OUTPUT__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&linearization_output__descriptor) \
+ , 0,NULL, 0, 0, NULL }
+
+
+/* LinearizationOutput methods */
+void linearization_output__init
+ (LinearizationOutput *message);
+size_t linearization_output__get_packed_size
+ (const LinearizationOutput *message);
+size_t linearization_output__pack
+ (const LinearizationOutput *message,
+ uint8_t *out);
+size_t linearization_output__pack_to_buffer
+ (const LinearizationOutput *message,
+ ProtobufCBuffer *buffer);
+LinearizationOutput *
+ linearization_output__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void linearization_output__free_unpacked
+ (LinearizationOutput *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*LinearizationOutput_Closure)
+ (const LinearizationOutput *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor linearization_output__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_LinearizationOutput_2eproto__INCLUDED */
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LiquidType.pb-c.c b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LiquidType.pb-c.c
index e4baae5c6..d6d4117b7 100644
--- a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LiquidType.pb-c.c
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LiquidType.pb-c.c
@@ -7,7 +7,7 @@
#endif
#include "LiquidType.pb-c.h"
-static const ProtobufCEnumValue liquid_type__enum_values_by_number[7] =
+static const ProtobufCEnumValue liquid_type__enum_values_by_number[10] =
{
{ "Cyan", "LIQUID_TYPE__Cyan", 0 },
{ "Magenta", "LIQUID_TYPE__Magenta", 1 },
@@ -16,15 +16,21 @@ static const ProtobufCEnumValue liquid_type__enum_values_by_number[7] =
{ "TransparentInk", "LIQUID_TYPE__TransparentInk", 4 },
{ "Lubricant", "LIQUID_TYPE__Lubricant", 5 },
{ "Cleaner", "LIQUID_TYPE__Cleaner", 6 },
+ { "LightCyan", "LIQUID_TYPE__LightCyan", 7 },
+ { "LightMagenta", "LIQUID_TYPE__LightMagenta", 8 },
+ { "LightYellow", "LIQUID_TYPE__LightYellow", 9 },
};
static const ProtobufCIntRange liquid_type__value_ranges[] = {
-{0, 0},{0, 7}
+{0, 0},{0, 10}
};
-static const ProtobufCEnumValueIndex liquid_type__enum_values_by_name[7] =
+static const ProtobufCEnumValueIndex liquid_type__enum_values_by_name[10] =
{
{ "Black", 3 },
{ "Cleaner", 6 },
{ "Cyan", 0 },
+ { "LightCyan", 7 },
+ { "LightMagenta", 8 },
+ { "LightYellow", 9 },
{ "Lubricant", 5 },
{ "Magenta", 1 },
{ "TransparentInk", 4 },
@@ -37,9 +43,9 @@ const ProtobufCEnumDescriptor liquid_type__descriptor =
"LiquidType",
"LiquidType",
"",
- 7,
+ 10,
liquid_type__enum_values_by_number,
- 7,
+ 10,
liquid_type__enum_values_by_name,
1,
liquid_type__value_ranges,
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LiquidType.pb-c.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LiquidType.pb-c.h
index da9ec1c60..eba52c4a7 100644
--- a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LiquidType.pb-c.h
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v3/PMR/ColorLab/LiquidType.pb-c.h
@@ -26,7 +26,10 @@ typedef enum _LiquidType {
LIQUID_TYPE__Black = 3,
LIQUID_TYPE__TransparentInk = 4,
LIQUID_TYPE__Lubricant = 5,
- LIQUID_TYPE__Cleaner = 6
+ LIQUID_TYPE__Cleaner = 6,
+ LIQUID_TYPE__LightCyan = 7,
+ LIQUID_TYPE__LightMagenta = 8,
+ LIQUID_TYPE__LightYellow = 9
PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(LIQUID_TYPE)
} LiquidType;
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorCalibrator.cpp b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorCalibrator.cpp
index 94df740fc..9d38a13a3 100644
--- a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorCalibrator.cpp
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorCalibrator.cpp
@@ -723,7 +723,7 @@ bool Tango::ColorLib::ColorCalibrator::Linearize(double *yVal, double*LinearInkV
double outVal = 0.0;
for (int i = 0; i < nPoints; i++)
{
- if (false == Interp1D(LabLinear, partialInkPercentage, yVal[i], outVal, error))
+ if (false == Interp1D(LabLinear, partialInkPercentage, yVal[i], nPoints, outVal, error))
{
delete[] LabLinear;
LabLinear = NULL;
@@ -739,7 +739,7 @@ bool Tango::ColorLib::ColorCalibrator::Linearize(double *yVal, double*LinearInkV
partialInkPercentage = NULL;
return true;
}
-bool Tango::ColorLib::ColorCalibrator::Interp1D(double* xx, double *yy, double InValue, double &OutValue, std::string &error)
+bool Tango::ColorLib::ColorCalibrator::Interp1D(double* xx, double *yy, double InValue, int np, double &OutValue, std::string &error)
{
int m, ind;
int errType = 0;
@@ -747,7 +747,7 @@ bool Tango::ColorLib::ColorCalibrator::Interp1D(double* xx, double *yy, double I
ind = -1;
//Check Bounds
- if ((InValue < xx[0] - epsTol) || (InValue > xx[m_nsize - 1] + epsTol))
+ if ((InValue < xx[0] - epsTol) || (InValue > xx[np - 1] + epsTol))
{
error = "Interp1D: In Value out of Bounds";
return false;
@@ -756,10 +756,10 @@ bool Tango::ColorLib::ColorCalibrator::Interp1D(double* xx, double *yy, double I
if ((InValue > xx[0] - epsTol) && (InValue < xx[0]))
InValue = xx[0];
- if ((InValue > xx[m_nsize - 1]) && (InValue < xx[m_nsize - 1] + epsTol))
- InValue = xx[m_nsize - 1];
+ if ((InValue > xx[np - 1]) && (InValue < xx[np - 1] + epsTol))
+ InValue = xx[np - 1];
- for (m = 0; m < m_nsize - 1; ++m)
+ for (m = 0; m < np - 1; ++m)
{
if (xx[m] <= InValue && xx[m + 1] >= InValue)
{
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorCalibrator.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorCalibrator.h
index 637aaf8f1..a87379631 100644
--- a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorCalibrator.h
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorCalibrator.h
@@ -34,7 +34,7 @@ namespace Tango
bool CheckMonotonicity(double *yVal, std::string &error);
bool CheckDuplicates(double *InkVals, std::string &error);
bool Linearize(double *yVal, double*LinearInkVal, int FirstInkInd, int LasInkInd, std::string &error);
- bool Interp1D(double* xx, double *yy, double InValue, double &OutValue, std::string &error);
+ bool Interp1D(double* xx, double *yy, double InValue, int np, double &OutValue, std::string &error);
protected:
struct VectorPair
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp
index 47bb17311..96d5108f2 100644
--- a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp
@@ -3273,9 +3273,10 @@ int Tango::ColorLib::ColorConverter::GetGamutRegion(VectorXd Volume, double *Ga
{
double TotalVolume = 0.0;
int GamutRegion = 0;
+ int nGR = m_colortable->GetnGamutRegions();
for (int i = 0; i < m_nInks; ++i)
TotalVolume += Volume(i);
- for (int i=0; i< m_colortable->GetnGamutRegions(); ++i)
+ for (int i=0; i< nGR -1; ++i)
{
if (TotalVolume > GamutLimits[i])
GamutRegion++;
@@ -3432,7 +3433,7 @@ void Tango::ColorLib::ColorConverter::LimitNLInks2Volume(VectorXd NLInks, int &G
//LimitLowVolume(Volume, GamutRegion, Volume);
GetClosestInk(Volume, GamutRegion, Volume);
//NLcmtoPercentage(Volume, Volume);
-
+ ConfineVolumes(Volume);
if (InkOutL != NULL)
{
delete[]InkOutL;
@@ -3440,6 +3441,42 @@ void Tango::ColorLib::ColorConverter::LimitNLInks2Volume(VectorXd NLInks, int &G
}
}
+void Tango::ColorLib::ColorConverter::ConfineVolumes(VectorXd &Volume)
+{
+ double TotalVolume = 0;
+ for (int i = 0; i < m_nInks; ++i)
+ TotalVolume += Volume(i)*m_maxNlPerCM(i) / 100.0;
+ int nGR = m_colortable->GetnGamutRegions();
+ double diff = (TotalVolume - m_ProcessRangesMaxP[nGR - 1]);
+
+ if (diff>1.e-03)
+ {
+ //find values above Min Volume threshold
+ int *indInks = new int[m_nInks];
+ int ind = 0;
+ for (int i = 0; i < m_nInks; ++i)
+ {
+ indInks[i] = -1;
+ if (Volume(i) > LowVolumeThreshold)
+ {
+ ind++;
+ indInks[i] = i;
+ }
+ }
+ double exceed_Vol_per_ink = (diff / ind);
+ for (int i = 0; i <m_nInks; ++i)
+ {
+ if(indInks[i]>=0)
+ Volume(indInks[i]) =Volume(indInks[i])- 100*(exceed_Vol_per_ink)/m_maxNlPerCM(indInks[i]);
+ }
+ if(indInks != NULL)
+ {
+ delete[] indInks;
+ indInks = NULL;
+ }
+ }
+}
+
void Tango::ColorLib::ColorConverter::LimitNLInks2VolumeThr(VectorXd NLInks, int &GamutRegion, VectorXd &Volume)
{
// VectorXd NLInkOut(m_nInks);
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.h
index 2aae30b64..3c75124e5 100644
--- a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.h
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.h
@@ -166,6 +166,7 @@ namespace Tango
void LimitNLInks2VolumeThr(VectorXd NLInks, int &GamutRegion, VectorXd &Volume);
void GetClosestInk(VectorXd Volume, int &GamutRegion, VectorXd &BestVolume);
bool CheckMonotonicity(CalibrationData *calibdata);
+ void ConfineVolumes(VectorXd &Volume);
};
}
}
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Firmware/ViewModels/FileSystemViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Firmware/ViewModels/FileSystemViewVM.cs
index 4c88d65be..e2be72127 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Firmware/ViewModels/FileSystemViewVM.cs
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Firmware/ViewModels/FileSystemViewVM.cs
@@ -433,40 +433,47 @@ namespace Tango.FSE.Firmware.ViewModels
private async void UploadFiles(List<String> files)
{
- String currentPathBefore = CurrentPath;
-
- foreach (var file in files)
- {
- if (!File.Exists(file))
- {
- await NotificationProvider.ShowError($"File '{file}' cannot be uploaded.");
- return;
- }
- }
-
- foreach (var file in files)
+ try
{
- String itemName = Path.GetFileName(file);
+ String currentPathBefore = CurrentPath;
- if ((CurrentItem as IFileSystemContainer).Items.ToList().Exists(x => x.Name.ToLower() == itemName.ToLower()))
+ foreach (var file in files)
{
- if (!await NotificationProvider.ShowWarningQuestion($"'{itemName}' already exists on '{CurrentItem.Name}'. Do you want to overwrite?"))
+ if (!File.Exists(file))
{
- continue;
+ await NotificationProvider.ShowError($"File '{file}' cannot be uploaded.");
+ return;
}
}
- var handler = await FirmwareStorageProvider.Upload(file, Path.Combine(CurrentItem.Path, Path.GetFileName(file)));
-
- handler.StatusChanged += (x, status) =>
+ foreach (var file in files)
{
- if (status == FileSystemHandlerStatus.Completed && currentPathBefore == CurrentPath)
+ String itemName = Path.GetFileName(file);
+
+ if ((CurrentItem as IFileSystemContainer).Items.ToList().Exists(x => x.Name.ToLower() == itemName.ToLower()))
{
- NavigateToCurrentPath();
+ if (!await NotificationProvider.ShowWarningQuestion($"'{itemName}' already exists on '{CurrentItem.Name}'. Do you want to overwrite?"))
+ {
+ continue;
+ }
}
- };
- FileSystemHandlers.Insert(0, handler);
+ var handler = await FirmwareStorageProvider.Upload(file, Path.Combine(CurrentItem.Path, Path.GetFileName(file)));
+
+ handler.StatusChanged += (x, status) =>
+ {
+ if (status == FileSystemHandlerStatus.Completed && currentPathBefore == CurrentPath)
+ {
+ NavigateToCurrentPath();
+ }
+ };
+
+ FileSystemHandlers.Insert(0, handler);
+ }
+ }
+ catch (Exception ex)
+ {
+ await NotificationProvider.ShowError($"Error uploading to file system.\n{ex.FlattenMessage()}");
}
}
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.MachineConfiguration/ViewModels/SettingsViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.MachineConfiguration/ViewModels/SettingsViewVM.cs
index ed2cbd714..a8300b9b7 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.MachineConfiguration/ViewModels/SettingsViewVM.cs
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.MachineConfiguration/ViewModels/SettingsViewVM.cs
@@ -81,11 +81,19 @@ namespace Tango.FSE.MachineConfiguration.ViewModels
private async void SaveConfiguration()
{
- using (NotificationProvider.PushTaskItem("Saving machine configuration..."))
+ try
{
- EditingComposition.Machine.SiteGuid = SelectedSite.Guid;
- EditingComposition = await Services.MachineConfigurationService.SaveMachineEditingComposition(EditingComposition);
- await NotificationProvider.ShowSuccess("Machine configuration saved successfully.");
+ using (NotificationProvider.PushTaskItem("Saving machine configuration..."))
+ {
+ EditingComposition.Machine.SiteGuid = SelectedSite.Guid;
+ EditingComposition = await Services.MachineConfigurationService.SaveMachineEditingComposition(EditingComposition);
+ await NotificationProvider.ShowSuccess("Machine configuration saved successfully.");
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error saving the machine configuration.");
+ await NotificationProvider.ShowError($"Error saving the machine configuration.\n{ex.FlattenMessage()}");
}
}
@@ -105,24 +113,33 @@ namespace Tango.FSE.MachineConfiguration.ViewModels
if (!await NotificationProvider.ShowWarningQuestion("Resetting the machine counters will delete the entire job runs history. Are you sure?", "RESET COUNTERS", "CANCEL")) return;
- using (var task = NotificationProvider.PushTaskItem("Resetting machine counters..."))
+ try
{
- task.UpdateProgress("Resetting local machine counters...");
-
- var result = await RemoteSqlProvider.ExecuteSqlCommandAsync(new RemoteSqlCommand()
+ using (var task = NotificationProvider.PushTaskItem("Resetting machine counters..."))
{
- Mode = RemoteSqlCommandMode.Local,
- Timeout = 30,
- SQL = "DELETE FROM JOB_RUNS"
- });
+ task.UpdateProgress("Resetting local machine counters...");
- int localJobRuns = result.LocalAffectedRecords;
+ var result = await RemoteSqlProvider.ExecuteSqlCommandAsync(new RemoteSqlCommand()
+ {
+ Mode = RemoteSqlCommandMode.Local,
+ Timeout = 30,
+ SQL = "DELETE FROM JOB_RUNS"
+ });
- task.UpdateProgress("Resetting global machine counters...");
+ int localJobRuns = result.LocalAffectedRecords;
- int remoteJobRuns = await Services.MachineConfigurationService.ResetCounters(EditingComposition.Machine.Guid);
+ task.UpdateProgress("Resetting global machine counters...");
- await NotificationProvider.ShowSuccess("Machine counters deleted successfully.");
+ int remoteJobRuns = await Services.MachineConfigurationService.ResetCounters(EditingComposition.Machine.Guid);
+ EditingComposition.ResetCounters();
+
+ await NotificationProvider.ShowSuccess("Machine counters deleted successfully.");
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error resetting machine counters.");
+ await NotificationProvider.ShowError($"Error resetting the machine counters.\n{ex.FlattenMessage()}");
}
}
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/FileSystemViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/FileSystemViewVM.cs
index b34c8c527..2ab3e5c62 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/FileSystemViewVM.cs
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/FileSystemViewVM.cs
@@ -326,31 +326,38 @@ namespace Tango.FSE.PPCConsole.ViewModels
private async void OnItemsDroppedIn(List<FileSystemItem> items)
{
- String currentPathBefore = CurrentPath;
-
- foreach (var item in items.Where(x => x.Type != FileSystemItemType.Drive))
+ try
{
- Debug.WriteLine($"Dropped in: {item.Name} => {CurrentItem.Path}");
+ String currentPathBefore = CurrentPath;
- if ((CurrentItem as IFileSystemContainer).Items.ToList().Exists(x => x.Name.ToLower() == item.Name.ToLower()))
+ foreach (var item in items.Where(x => x.Type != FileSystemItemType.Drive))
{
- if (!await NotificationProvider.ShowWarningQuestion($"'{item.Name}' already exists on '{CurrentItem.Name}'. Do you want to overwrite?"))
+ Debug.WriteLine($"Dropped in: {item.Name} => {CurrentItem.Path}");
+
+ if ((CurrentItem as IFileSystemContainer).Items.ToList().Exists(x => x.Name.ToLower() == item.Name.ToLower()))
{
- continue;
+ if (!await NotificationProvider.ShowWarningQuestion($"'{item.Name}' already exists on '{CurrentItem.Name}'. Do you want to overwrite?"))
+ {
+ continue;
+ }
}
- }
- var handler = await FileSystemProvider.Upload(item.Path, CurrentItem);
+ var handler = await FileSystemProvider.Upload(item.Path, CurrentItem);
- handler.StatusChanged += (x, status) =>
- {
- if (status == FileSystemHandlerStatus.Completed && currentPathBefore == CurrentPath)
+ handler.StatusChanged += (x, status) =>
{
- NavigateToCurrentPath();
- }
- };
+ if (status == FileSystemHandlerStatus.Completed && currentPathBefore == CurrentPath)
+ {
+ NavigateToCurrentPath();
+ }
+ };
- FileSystemHandlers.Insert(0, handler);
+ FileSystemHandlers.Insert(0, handler);
+ }
+ }
+ catch (Exception ex)
+ {
+ await NotificationProvider.ShowError($"Error uploading to file system.\n{ex.FlattenMessage()}");
}
}
@@ -552,40 +559,47 @@ namespace Tango.FSE.PPCConsole.ViewModels
var result = await StorageProvider.SelectFilesAndFolders("Select files and folders to upload");
if (result)
{
- String currentPathBefore = CurrentPath;
-
- foreach (var item in result.SelectedItems)
- {
- if (!File.Exists(item) && !Directory.Exists(item))
- {
- await NotificationProvider.ShowError($"File or folder '{item}' cannot be uploaded.");
- return;
- }
- }
-
- foreach (var item in result.SelectedItems)
+ try
{
- String itemName = Path.GetFileName(item);
+ String currentPathBefore = CurrentPath;
- if ((CurrentItem as IFileSystemContainer).Items.ToList().Exists(x => x.Name.ToLower() == itemName.ToLower()))
+ foreach (var item in result.SelectedItems)
{
- if (!await NotificationProvider.ShowWarningQuestion($"'{itemName}' already exists on '{CurrentItem.Name}'. Do you want to overwrite?"))
+ if (!File.Exists(item) && !Directory.Exists(item))
{
- continue;
+ await NotificationProvider.ShowError($"File or folder '{item}' cannot be uploaded.");
+ return;
}
}
- var handler = await FileSystemProvider.Upload(item, CurrentItem);
-
- handler.StatusChanged += (x, status) =>
+ foreach (var item in result.SelectedItems)
{
- if (status == FileSystemHandlerStatus.Completed && currentPathBefore == CurrentPath)
+ String itemName = Path.GetFileName(item);
+
+ if ((CurrentItem as IFileSystemContainer).Items.ToList().Exists(x => x.Name.ToLower() == itemName.ToLower()))
{
- NavigateToCurrentPath();
+ if (!await NotificationProvider.ShowWarningQuestion($"'{itemName}' already exists on '{CurrentItem.Name}'. Do you want to overwrite?"))
+ {
+ continue;
+ }
}
- };
- FileSystemHandlers.Insert(0, handler);
+ var handler = await FileSystemProvider.Upload(item, CurrentItem);
+
+ handler.StatusChanged += (x, status) =>
+ {
+ if (status == FileSystemHandlerStatus.Completed && currentPathBefore == CurrentPath)
+ {
+ NavigateToCurrentPath();
+ }
+ };
+
+ FileSystemHandlers.Insert(0, handler);
+ }
+ }
+ catch (Exception ex)
+ {
+ await NotificationProvider.ShowError($"Error uploading to file system.\n{ex.FlattenMessage()}");
}
}
}
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures.Documentation/Help/proc-doc.chm b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures.Documentation/Help/proc-doc.chm
index 35c461b05..e49620e6e 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures.Documentation/Help/proc-doc.chm
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures.Documentation/Help/proc-doc.chm
Binary files differ
diff --git a/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.eddx b/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.eddx
index dcabc3bf9..3375ea636 100644
--- a/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.eddx
+++ b/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.eddx
Binary files differ
diff --git a/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.pdf b/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.pdf
index f5bf232bd..68ba1e296 100644
--- a/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.pdf
+++ b/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.pdf
Binary files differ
diff --git a/Software/Visual_Studio/FSE/Roles & Permissions/Twine Technician.csv b/Software/Visual_Studio/FSE/Roles & Permissions/Twine Technician.csv
index 2b1ce91aa..b3777ed89 100644
--- a/Software/Visual_Studio/FSE/Roles & Permissions/Twine Technician.csv
+++ b/Software/Visual_Studio/FSE/Roles & Permissions/Twine Technician.csv
@@ -16,3 +16,4 @@ Modify Machine Hardware
DataStore Read
DataStore Write
Reset Machine Counters
+Emulate Machine Events
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachineConfigurationService.cs b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachineConfigurationService.cs
index 5b7991f44..6dec3a40d 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachineConfigurationService.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachineConfigurationService.cs
@@ -9,12 +9,13 @@ using System.Data.Entity;
using Tango.BL.Builders;
using Tango.BL.DTO;
using Tango.BL.Enumerations;
+using Tango.Core;
namespace Tango.FSE.BL.Services
{
public class MachineConfigurationService : FSEServiceBase
{
- public class MachineEditingComposition : IDisposable
+ public class MachineEditingComposition : ExtendedObject, IDisposable
{
internal MachineDTO PreviousMachineState { get; set; }
@@ -31,6 +32,14 @@ namespace Tango.FSE.BL.Services
HardwareVersions = new List<HardwareVersion>();
}
+ public void ResetCounters()
+ {
+ TotalDyeMeters = "0 meters";
+ RaisePropertyChanged(nameof(TotalDyeMeters));
+ TotalDyeTime = "00:00:00";
+ RaisePropertyChanged(nameof(TotalDyeTime));
+ }
+
public void Dispose()
{
Context?.Dispose();
@@ -100,7 +109,9 @@ namespace Tango.FSE.BL.Services
{
return Task.Factory.StartNew<int>(() =>
{
- using (ObservablesContext db = new ObservablesContext())
+ Authentication.ThrowIfNoPermission(Permissions.FSE_ResetMachineCounters);
+
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
{
var sn = db.Machines.SingleOrDefault(x => x.Guid == machineGuid).SerialNumber;
ActionLogManager.InsertLog(ActionLogType.MachineCountersReset, CurrentUser.Guid, sn, machineGuid, "Machine counters reset via FSE.");
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/Tango.FSE.BL.csproj b/Software/Visual_Studio/FSE/Tango.FSE.BL/Tango.FSE.BL.csproj
index c361f1d3f..00025adb5 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.BL/Tango.FSE.BL.csproj
+++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/Tango.FSE.BL.csproj
@@ -76,14 +76,14 @@
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="WindowsBase" />
- <Reference Include="Z.EntityFramework.Extensions, Version=4.0.58.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
- <HintPath>..\..\packages\Z.EntityFramework.Extensions.4.0.58\lib\net45\Z.EntityFramework.Extensions.dll</HintPath>
+ <Reference Include="Z.EntityFramework.Extensions, Version=5.1.6.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Z.EntityFramework.Extensions.5.1.6\lib\net45\Z.EntityFramework.Extensions.dll</HintPath>
</Reference>
- <Reference Include="Z.EntityFramework.Plus.EF6, Version=1.12.19.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
- <HintPath>..\..\packages\Z.EntityFramework.Plus.EF6.1.12.19\lib\net45\Z.EntityFramework.Plus.EF6.dll</HintPath>
+ <Reference Include="Z.EntityFramework.Plus.EF6, Version=5.1.6.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Z.EntityFramework.Plus.EF6.5.1.6\lib\net45\Z.EntityFramework.Plus.EF6.dll</HintPath>
</Reference>
- <Reference Include="Z.Expressions.Eval, Version=3.1.8.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
- <HintPath>..\..\packages\Z.Expressions.Eval.3.1.8\lib\net45\Z.Expressions.Eval.dll</HintPath>
+ <Reference Include="Z.Expressions.Eval, Version=4.0.27.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Z.Expressions.Eval.4.0.27\lib\net45\Z.Expressions.Eval.dll</HintPath>
</Reference>
<Reference Include="ZSpitz.Util, Version=0.0.6.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\ZSpitz.Util.0.0.6\lib\netstandard2.0\ZSpitz.Util.dll</HintPath>
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/packages.config b/Software/Visual_Studio/FSE/Tango.FSE.BL/packages.config
index 413d8b6de..0f62e5b36 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.BL/packages.config
+++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/packages.config
@@ -9,8 +9,8 @@
<package id="System.Linq.Dynamic" version="1.0.7" targetFramework="net461" />
<package id="WindowsAPICodePack-Core" version="1.1.1" targetFramework="net461" />
<package id="WindowsAPICodePack-Shell" version="1.1.1" targetFramework="net461" />
- <package id="Z.EntityFramework.Extensions" version="4.0.58" targetFramework="net461" />
- <package id="Z.EntityFramework.Plus.EF6" version="1.12.19" targetFramework="net461" />
- <package id="Z.Expressions.Eval" version="3.1.8" targetFramework="net461" />
+ <package id="Z.EntityFramework.Extensions" version="5.1.6" targetFramework="net461" />
+ <package id="Z.EntityFramework.Plus.EF6" version="5.1.6" targetFramework="net461" />
+ <package id="Z.Expressions.Eval" version="4.0.27" targetFramework="net461" />
<package id="ZSpitz.Util" version="0.0.6" targetFramework="net461" />
</packages> \ No newline at end of file
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/Resources/Converters.xaml b/Software/Visual_Studio/FSE/Tango.FSE.Common/Resources/Converters.xaml
index dcc60e62c..54f8e5d63 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.Common/Resources/Converters.xaml
+++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/Resources/Converters.xaml
@@ -47,4 +47,6 @@
<converters:BooleanToYesNoConverter x:Key="BooleanToYesNoConverter" />
<converters:GenericMessageProtocolToStringConverter x:Key="GenericMessageProtocolToStringConverter" />
<localConverters:LiquidTypeToShortNameConverter x:Key="LiquidTypeToShortNameConverter" />
+ <converters:IsEqualConverter x:Key="IsEqualConverter" />
+ <converters:IsNotConverter x:Key="IsNotConverter" />
</ResourceDictionary> \ No newline at end of file
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/App.xaml.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/App.xaml.cs
index 0f35e985d..fec442831 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.UI/App.xaml.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/App.xaml.cs
@@ -263,19 +263,26 @@ namespace Tango.FSE.UI
if (notificationProvider != null)
{
- notificationProvider.PushSnackbarItem(MessageType.Error, "Application Error", true, "Unexpected error has occurred\nTap to report this issue.", null, null, () =>
+ if (e.Exception.GetType() == typeof(AuthorizationException))
{
- if (bugReporter != null)
+ notificationProvider.PushSnackbarItem(MessageType.Error, "Authorization Error", true, "You are not authorized to perform the specified action.", TimeSpan.FromSeconds(8));
+ }
+ else
+ {
+ notificationProvider.PushSnackbarItem(MessageType.Error, "Application Error", true, "Unexpected error has occurred\nTap to report this issue.", null, null, () =>
{
- bugReporter.ShowBugReportDialog(new Bug()
+ if (bugReporter != null)
{
- Title = $"Unexpected Application Error",
- Description = e.Exception.Message,
- Type = BugType.FSE,
- Exception = e.Exception
- });
- }
- });
+ bugReporter.ShowBugReportDialog(new Bug()
+ {
+ Title = $"Unexpected Application Error",
+ Description = e.Exception.Message,
+ Type = BugType.FSE,
+ Exception = e.Exception
+ });
+ }
+ });
+ }
}
}
catch (Exception ex)
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Authentication/DefaultAuthenticationProvider.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/Authentication/DefaultAuthenticationProvider.cs
index 309839831..e1399560e 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Authentication/DefaultAuthenticationProvider.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Authentication/DefaultAuthenticationProvider.cs
@@ -70,10 +70,15 @@ namespace Tango.FSE.UI.Authentication
}
}
+ private EnvironmentConfiguration _currentEnvironment;
/// <summary>
/// Gets the current environment configuration.
/// </summary>
- public EnvironmentConfiguration CurrentEnvironment { get; private set; }
+ public EnvironmentConfiguration CurrentEnvironment
+ {
+ get { return _currentEnvironment; }
+ private set { _currentEnvironment = value; RaisePropertyChangedAuto(); }
+ }
/// <summary>
/// Initializes a new instance of the <see cref="DefaultAuthenticationProvider"/> class.
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/FileAssociation/DefaultFileAssociationProvider.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/FileAssociation/DefaultFileAssociationProvider.cs
index 89364cbbd..b1f750f4d 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.UI/FileAssociation/DefaultFileAssociationProvider.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/FileAssociation/DefaultFileAssociationProvider.cs
@@ -45,7 +45,7 @@ namespace Tango.FSE.UI.FileAssociation
public async void OnApplicationReady(IFSEApplicationManager applicationManager)
{
- if (!_initialized) return;
+ if (_initialized) return;
_initialized = true;
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/AssemblyInfo.cs
index 111c34d37..639f3dbfb 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/AssemblyInfo.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/AssemblyInfo.cs
@@ -8,4 +8,4 @@ using System.Windows;
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Tango FSE")]
-[assembly: AssemblyVersion("1.1.2.0")]
+[assembly: AssemblyVersion("1.1.3.0")]
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/LayoutView.xaml b/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/LayoutView.xaml
index 1857168ba..35e4ffc6a 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/LayoutView.xaml
+++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/LayoutView.xaml
@@ -110,6 +110,21 @@
</Style>
</material:PackIcon.Style>
</material:PackIcon>
+
+ <DockPanel Margin="10 6">
+ <DockPanel.Style>
+ <Style TargetType="DockPanel">
+ <Setter Property="Visibility" Value="Collapsed"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding AuthenticationProvider.CurrentEnvironment.Name,Converter={StaticResource IsNotConverter},ConverterParameter='PROD'}" Value="True">
+ <Setter Property="Visibility" Value="Visible"></Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </DockPanel.Style>
+ <Rectangle Stroke="{StaticResource FSE_BorderBrush}" />
+ <TextBlock Margin="10 0 0 0" Foreground="{StaticResource FSE_GrayBrush}" Text="{Binding AuthenticationProvider.CurrentEnvironment.Description}" FontSize="{StaticResource FSE_SmallFontSize}" VerticalAlignment="Center"></TextBlock>
+ </DockPanel>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0 0 5 0">
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs
index 92dd8273d..cacda1e8d 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs
@@ -125,6 +125,12 @@ namespace Tango.MachineStudio.Sites.ViewModels
using (_notification.PushTaskItem("Saving site details..."))
{
+ //Check if site organization has changed and there are no machines that belongs to this site but different organization.
+ if (_db.Machines.Any(x => x.SiteGuid == Site.Guid && x.OrganizationGuid != Site.OrganizationGuid))
+ {
+ throw new InvalidOperationException($"One or more machines belongs to this site but not to '{Site.Organization.Name}' organization.");
+ }
+
//Remove site rmls.
Site.SitesRmls.ToList().Where(x => !Rmls.SynchedSource.ToList().Exists(y => y.Guid == x.RmlGuid)).ToList().ForEach(x => _db.SitesRmls.Remove(x));
Site.SitesCatalogs.ToList().Where(x => !Catalogs.SynchedSource.ToList().Exists(y => y.Guid == x.ColorCatalogGuid)).ToList().ForEach(x => _db.SitesCatalogs.Remove(x));
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj
index 7895a9355..cd4eb4dd3 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj
@@ -343,22 +343,6 @@
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
- <Content Include="..\..\Build\ColorLib\Debug\Tango.ColorLib_v1.dll">
- <Link>Tango.ColorLib_v1.dll</Link>
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="..\..\Build\ColorLib\Debug\Tango.ColorLib_v2.dll">
- <Link>Tango.ColorLib_v2.dll</Link>
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="..\..\Build\ColorLib\Debug\Tango.ColorLib_v3.dll">
- <Link>Tango.ColorLib_v3.dll</Link>
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="..\..\Build\ColorLib\Debug\Tango.ColorLib_v4.dll">
- <Link>Tango.ColorLib_v4.dll</Link>
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="..\..\tcc\benchmarks\benchmarks_rgb_lab.csv">
<Link>TCC\benchmarks_rgb_lab.csv</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
@@ -542,6 +526,37 @@
<Project>{cb0b0aa2-bb24-4bca-a720-45e397684e12}</Project>
<Name>Tango.MachineStudio.Common</Name>
</ProjectReference>
+
+ <!--ColorLib-->
+ <ProjectReference Include="..\..\ColorLib\Tango.ColorLib_v4\Tango.ColorLib_v4.vcxproj">
+ <Project>{E9528353-7D41-4AA8-BBAC-D65B7FE3A0D6}</Project>
+ <Name>Tango.ColorLib_v4</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <OutputItemType>Content</OutputItemType>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </ProjectReference>
+ <ProjectReference Include="..\..\ColorLib\Tango.ColorLib_v3\Tango.ColorLib_v3.vcxproj">
+ <Project>{A3A8ADA0-C150-4E30-A60D-11F291FDBF7A}</Project>
+ <Name>Tango.ColorLib_v3</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <OutputItemType>Content</OutputItemType>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </ProjectReference>
+ <ProjectReference Include="..\..\ColorLib\Tango.ColorLib_v2\Tango.ColorLib_v2.vcxproj">
+ <Project>{1A3FC7FB-403C-4B3D-B705-28FCE11317DD}</Project>
+ <Name>Tango.ColorLib_v2</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <OutputItemType>Content</OutputItemType>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </ProjectReference>
+ <ProjectReference Include="..\..\ColorLib\Tango.ColorLib_v1\Tango.ColorLib_v1.vcxproj">
+ <Project>{CF4C66B0-CD13-4D31-8133-339A01E7E6F2}</Project>
+ <Name>Tango.ColorLib_v1</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <OutputItemType>Content</OutputItemType>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </ProjectReference>
+ <!--ColorLib-->
</ItemGroup>
<ItemGroup>
<Resource Include="Images\design.png" />
@@ -681,7 +696,7 @@ if $(ConfigurationName) == Release RD /S /Q "$(TargetDir)lib\"</PostBuildEvent>
</Target>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_UseGlobalSettings="False" BuildVersion_DetectChanges="True" BuildVersion_UpdateFileVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.DeltaBaseYearDayOfYear" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_BuildVersioningStyle="None.None.Increment.DeltaBaseYearDayOfYear" BuildVersion_UpdateFileVersion="True" BuildVersion_DetectChanges="True" BuildVersion_UseGlobalSettings="False" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Dialogs/CleanerDispensingView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Dialogs/CleanerDispensingView.xaml
index 5fa737221..98be45608 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Dialogs/CleanerDispensingView.xaml
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Dialogs/CleanerDispensingView.xaml
@@ -6,28 +6,45 @@
xmlns:touch="clr-namespace:Tango.Touch.Controls;assembly=Tango.Touch"
xmlns:local="clr-namespace:Tango.PPC.Maintenance.Dialogs"
mc:Ignorable="d"
- Background="{StaticResource TangoPrimaryBackgroundBrush}" d:DesignHeight="555" d:DesignWidth="560" Width="600" Height="800" d:DataContext="{d:DesignInstance Type=local:CleanerDispensingViewVM, IsDesignTimeCreatable=False}">
+ Background="{StaticResource TangoPrimaryBackgroundBrush}" d:DesignHeight="555" d:DesignWidth="560" Width="600" Height="950" d:DataContext="{d:DesignInstance Type=local:CleanerDispensingViewVM, IsDesignTimeCreatable=False}">
<Grid>
<StackPanel Margin="0 50 0 0" HorizontalAlignment="Center">
<Image Source="../Images/head_cleaning.png" RenderOptions.BitmapScalingMode="Fant" Stretch="Uniform" Height="120"></Image>
<TextBlock HorizontalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}" Margin="0 30 0 0">Dispense Cleaning Liquid</TextBlock>
+
+ <DockPanel Margin="20 40" HorizontalAlignment="Center">
+ <touch:TouchIcon Icon="Alert" Foreground="{StaticResource TangoErrorBrush}" />
+ <TextBlock Margin="5 0 0 0" VerticalAlignment="Center" Foreground="{StaticResource TangoErrorBrush}">Please put on safety glasses</TextBlock>
+ </DockPanel>
+
<Label Margin="20 10" HorizontalAlignment="Center">
<Label.Style>
<Style TargetType="Label">
<Setter Property="Content">
<Setter.Value>
- <TextBlock>
- <Run>Press 'start' to initiate the cleaner liquid dispensing</Run>
+ <TextBlock LineHeight="30" TextWrapping="Wrap">
+ <Run>1. Pull the thread aside and clean with Q tip when the liquid is dispensed.</Run>
+ <LineBreak/>
+ <Run>2. Dispense again if the liquid isn't enough for cleaning.</Run>
+ <LineBreak/>
+ <Run>3. When cleaning is completed, return the thread back to the V-Groove and press the 'Close Dyeing Head Lid' button to close the head lid</Run>
</TextBlock>
</Setter.Value>
</Setter>
<Style.Triggers>
- <DataTrigger Binding="{Binding IsStarted}" Value="True">
- <Setter Property="Content" Value="Cleaner dispensing in progress"></Setter>
- </DataTrigger>
- <DataTrigger Binding="{Binding IsCompleted}" Value="True">
- <Setter Property="Content" Value="Cleaner dispensing completed"></Setter>
+ <DataTrigger Binding="{Binding MachineProvider.Machine.MachineHeadType}" Value="Arc">
+ <Setter Property="Content">
+ <Setter.Value>
+ <TextBlock LineHeight="30" TextWrapping="Wrap">
+ <Run>1. Open the dyeing head lid, pull the thread aside and clean with Q tip when the liquid is dispensed.</Run>
+ <LineBreak/>
+ <Run>2. Dispense again if the liquid isn't enough for cleaning.</Run>
+ <LineBreak/>
+ <Run>3. When cleaning is completed, return the thread back to the V-Groove and install the head lid back.</Run>
+ </TextBlock>
+ </Setter.Value>
+ </Setter>
</DataTrigger>
</Style.Triggers>
</Style>
@@ -40,7 +57,7 @@
<StackPanel Margin="40 150 40 40">
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Status}"></TextBlock>
- <touch:TouchProgressBar Margin="0 5 0 0" VerticalAlignment="Bottom" Width="500" Height="10" Minimum="0" Maximum="100" Value="0" IsIndeterminate="{Binding IsStarted}">
+ <touch:TouchProgressBar Margin="0 5 0 0" VerticalAlignment="Bottom" Height="10" Minimum="0" Maximum="100" Value="0" IsIndeterminate="{Binding IsStarted}">
</touch:TouchProgressBar>
</StackPanel>
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Dialogs/CleanerDispensingViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Dialogs/CleanerDispensingViewVM.cs
index b84cd83de..e37be417f 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Dialogs/CleanerDispensingViewVM.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Dialogs/CleanerDispensingViewVM.cs
@@ -23,7 +23,7 @@ namespace Tango.PPC.Maintenance.Dialogs
private const int JOGGING_SPEED = 400;
[TangoInject]
- private IMachineProvider MachineProvider { get; set; }
+ public IMachineProvider MachineProvider { get; set; }
[TangoInject]
private INotificationProvider NotificationProvider { get; set; }
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml
index 286485d47..d00b4abb2 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml
@@ -10,6 +10,7 @@
xmlns:touch="clr-namespace:Tango.Touch.Controls;assembly=Tango.Touch"
xmlns:localConverters="clr-namespace:Tango.PPC.Maintenance.Converters"
xmlns:localControls="clr-namespace:Tango.PPC.Maintenance.Controls"
+ xmlns:enumerations="clr-namespace:Tango.BL.Enumerations;assembly=Tango.BL"
xmlns:local="clr-namespace:Tango.PPC.Maintenance.Views"
mc:Ignorable="d"
d:DesignHeight="1800" d:DesignWidth="800" d:DataContext="{d:DesignInstance Type=vm:MaintenanceViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.MaintenanceViewVM}">
@@ -247,7 +248,7 @@
<localControls:ButtonState Value="Opened" Content="CLOSE RIGHT LEADING WHEELS" />
</localControls:StateTouchButton>
- <localControls:StateTouchButton Command="{Binding OpenCloseDyeingHeadCommand.Command}" SelectedState="{Binding OpenCloseDyeingHeadCommand.State}" Margin="20" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}">
+ <localControls:StateTouchButton Command="{Binding OpenCloseDyeingHeadCommand.Command}" SelectedState="{Binding OpenCloseDyeingHeadCommand.State}" Margin="20" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}" Visibility="{Binding MachineProvider.Machine.MachineHeadType,Converter={StaticResource IsToStringEqualToVisibilityConverter},ConverterParameter='Flat'}">
<localControls:ButtonState Value="Closed" Content="OPEN DYEING HEAD LID" />
<localControls:ButtonState Value="Opened" Content="CLOSE DYEING HEAD LID" />
</localControls:StateTouchButton>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Application/IPPCApplicationManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Application/IPPCApplicationManager.cs
index fd91bfd50..a9d4e7c3a 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Application/IPPCApplicationManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Application/IPPCApplicationManager.cs
@@ -46,6 +46,11 @@ namespace Tango.PPC.Common.Application
event EventHandler SystemRestartRequired;
/// <summary>
+ /// Occurs when the updater utility has failed to perform the last update.
+ /// </summary>
+ event EventHandler UpdaterFailed;
+
+ /// <summary>
/// Occurs when the application has encountered an error when initializing.
/// </summary>
event EventHandler<Exception> ApplicationInitializationError;
@@ -66,6 +71,11 @@ namespace Tango.PPC.Common.Application
bool IsAfterUpdate { get; }
/// <summary>
+ /// Gets a value indicating whether the updater utility has failed to perform the last update.
+ /// </summary>
+ bool IsUpdateFailed { get; }
+
+ /// <summary>
/// Shutdown the application.
/// </summary>
void ShutDown();
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/IMachineUpdateManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/IMachineUpdateManager.cs
index 77646da40..7c835165f 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/IMachineUpdateManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/IMachineUpdateManager.cs
@@ -95,5 +95,11 @@ namespace Tango.PPC.Common.MachineUpdate
/// </summary>
/// <returns></returns>
Task<PackageRunnerResult> RunPostUpdatePackages();
+
+ /// <summary>
+ /// Restores the last database backup.
+ /// </summary>
+ /// <returns></returns>
+ Task RestoreLastDatabaseBackup();
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs
index 85fe6b0ad..c115f4f5b 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs
@@ -129,6 +129,11 @@ namespace Tango.PPC.Common.MachineUpdate
private void _app_manager_ApplicationReady(object sender, EventArgs e)
{
_checkForUpdateTimer.Start();
+
+ if (!_app_manager.IsUpdateFailed)
+ {
+ ClearLastDatabaseBackup();
+ }
}
private void _packageRunner_PackageProgress(object sender, PackageProgressEventArgs e)
@@ -327,14 +332,14 @@ namespace Tango.PPC.Common.MachineUpdate
}
}
- try
- {
- Directory.Delete(backupsFolder, true);
- }
- catch (Exception ex)
- {
- LogManager.Log(ex, $"Error deleting backups folder '{backupsFolder}'.");
- }
+ //try
+ //{
+ // Directory.Delete(backupsFolder, true);
+ //}
+ //catch (Exception ex)
+ //{
+ // LogManager.Log(ex, $"Error deleting backups folder '{backupsFolder}'.");
+ //}
if (!result.RequiresBinariesUpdate)
{
@@ -604,6 +609,26 @@ namespace Tango.PPC.Common.MachineUpdate
return logsString;
}
+ private void ClearLastDatabaseBackup()
+ {
+ Task.Factory.StartNew(() =>
+ {
+ try
+ {
+ var lastBackupFile = SettingsManager.Default.GetOrCreate<PPCSettings>().LastDatabaseBackupFile;
+
+ if (File.Exists(lastBackupFile))
+ {
+ File.Delete(lastBackupFile);
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error removing last database backup file.");
+ }
+ });
+ }
+
#endregion
#region Public Methods
@@ -733,6 +758,27 @@ namespace Tango.PPC.Common.MachineUpdate
//Copy new updater utility to app path.
File.Copy(Path.Combine(_newPackageTempFolder, "Tango.PPC.Updater.exe"), Path.Combine(PathHelper.GetStartupPath(), "Tango.PPC.Updater.exe"), true);
+ LogManager.Log("Initializing database manager...");
+ DbManager db = DbManager.FromDataSource(localDataSource);
+
+ //Create Database Backup
+ UpdateProgress("Updating Database", "Creating database backup...");
+ try
+ {
+ Directory.CreateDirectory(backupsFolder);
+ dbBackupFile = $"{backupsFolder}\\{Path.GetRandomFileName()}.bak";
+ _settings.LastDatabaseBackupFile = dbBackupFile;
+ _settings.Save();
+ LogManager.Log($"Creating database backup to '{dbBackupFile}'...");
+ await Task.Factory.StartNew(() => db.Backup(localDataSource.Catalog, dbBackupFile));
+ performDatabaseRollback = true;
+ LogManager.Log("Database backup created successfully.");
+ }
+ catch (Exception ex)
+ {
+ throw LogManager.Log(ex, "Update manager error while trying to create a database backup.");
+ }
+
//Run pre-update packages.
try
{
@@ -763,8 +809,6 @@ namespace Tango.PPC.Common.MachineUpdate
LogManager.Log($"Synchronizing database '{update_response.DataSource.ToString()}' => '{localDataSource.ToString()}'...");
UpdateProgress("Updating Database", "Connecting to local database...");
- LogManager.Log("Initializing database manager...");
- DbManager db = DbManager.FromDataSource(localDataSource);
LogManager.Log("Checking Tango database exists on the local machine...");
if (!db.Exists(localDataSource.Catalog))
@@ -772,24 +816,6 @@ namespace Tango.PPC.Common.MachineUpdate
throw new InvalidProgramException("Database tango does not exists.");
}
- UpdateProgress("Updating Database", "Creating database backup...");
-
- //Create Database Backup
- try
- {
- Directory.CreateDirectory(backupsFolder);
- dbBackupFile = $"{backupsFolder}\\{Path.GetRandomFileName()}.bak";
- LogManager.Log($"Creating database backup to '{dbBackupFile}'...");
- await Task.Factory.StartNew(() => db.Backup(localDataSource.Catalog, dbBackupFile));
- performDatabaseRollback = true;
- LogManager.Log("Database backup created successfully.");
- }
- catch (Exception ex)
- {
- throw LogManager.Log(ex, "Update manager error while trying to create a database backup.");
- }
-
-
LogManager.Log("Disposing database manager.");
db.Dispose();
@@ -1621,6 +1647,40 @@ namespace Tango.PPC.Common.MachineUpdate
}
}
+ public Task RestoreLastDatabaseBackup()
+ {
+ return Task.Factory.StartNew(() =>
+ {
+ LogManager.Log("Rolling back database changes...");
+ UpdateProgress("Rollback", "Rolling back database changes...");
+
+ var localDataSource = SettingsManager.Default.GetOrCreate<CoreSettings>().DataSource;
+ var lastBackupFile = SettingsManager.Default.GetOrCreate<PPCSettings>().LastDatabaseBackupFile;
+
+ using (DbManager db = DbManager.FromDataSource(localDataSource))
+ {
+ try
+ {
+ db.Restore(localDataSource.Catalog, lastBackupFile);
+ LogManager.Log("Database restored successfully.");
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Could not rollback the database after a failed updater.");
+ throw ex;
+ }
+ finally
+ {
+ try
+ {
+ File.Delete(lastBackupFile);
+ }
+ catch { }
+ }
+ }
+ });
+ }
+
#endregion
#region Protected Methods
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/PPCSettings.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/PPCSettings.cs
index 29ad1399c..aacbe8901 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/PPCSettings.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/PPCSettings.cs
@@ -282,6 +282,12 @@ namespace Tango.PPC.Common
public bool BypassInternetConnectivityCheck { get; set; }
/// <summary>
+ /// Gets or sets the last database backup file that was generated before application update.
+ /// If updater utility was successful, this file should be deleted. Otherwise should be restored.
+ /// </summary>
+ public String LastDatabaseBackupFile { get; set; }
+
+ /// <summary>
/// Gets the machine service address.
/// </summary>
/// <returns></returns>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Merged.xaml b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Merged.xaml
index 374f5b51b..09762d7ce 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Merged.xaml
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Merged.xaml
@@ -59,6 +59,8 @@
<converters:TimeSpanToSecondsConverter x:Key="TimeSpanToSecondsConverter" />
<converters:TimeSpanToDaysConverter x:Key="TimeSpanToDaysConverter" />
<converters:BooleanToYesNoConverter x:Key="BooleanToYesNoConverter" />
+ <converters:IsEqualToVisibilityConverter x:Key="IsEqualToVisibilityConverter" />
+ <converters:IsToStringEqualToVisibilityConverter x:Key="IsToStringEqualToVisibilityConverter" />
<Style TargetType="FrameworkElement">
<Setter Property="TextElement.FontFamily" Value="{StaticResource TangoFlexoFontFamily}"></Setter>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs
index af3473a98..83790a56f 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs
@@ -64,6 +64,11 @@ namespace Tango.PPC.UI.PPCApplication
public event EventHandler SystemRestartRequired;
/// <summary>
+ /// Occurs when the updater utility has failed to perform the last update.
+ /// </summary>
+ public event EventHandler UpdaterFailed;
+
+ /// <summary>
/// Occurs when the application has started.
/// </summary>
public event EventHandler ApplicationStarted;
@@ -140,6 +145,11 @@ namespace Tango.PPC.UI.PPCApplication
/// </summary>
public bool IsAfterUpdate { get; private set; }
+ /// <summary>
+ /// Gets a value indicating whether the updater utility has failed to perform the last update.
+ /// </summary>
+ public bool IsUpdateFailed { get; private set; }
+
private bool _isScreenLocked;
/// <summary>
/// Gets or sets a value indicating whether the screen is currently locked.
@@ -264,6 +274,18 @@ namespace Tango.PPC.UI.PPCApplication
}
}
+ if (App.StartupArgs.Contains("-update_failed"))
+ {
+ LogManager.Log("Application started with '-update_failed' startup arguments. The updater utility has failed.");
+
+ IsUpdateFailed = true;
+
+ settings.ApplicationState = ApplicationStates.Ready;
+ settings.Save();
+ UpdaterFailed?.Invoke(this, new EventArgs());
+ return;
+ }
+
if (settings.ApplicationState == ApplicationStates.Ready)
{
LogManager.Log("Initializing ObservablesStaticCollections...");
@@ -616,7 +638,13 @@ namespace Tango.PPC.UI.PPCApplication
}
LogManager.Log($"Executing '{updaterPath}' with arguments '{arguments}'...");
- Process.Start(updaterPath, arguments);
+
+ Process p = new Process();
+ p.StartInfo.FileName = updaterPath;
+ p.StartInfo.Arguments = arguments;
+ p.StartInfo.LoadUserProfile = true;
+ p.StartInfo.UseShellExecute = true;
+ p.Start();
LogManager.Log("Terminating application...");
Environment.Exit(0);
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs
index 1dcfbf59a..0540cfa9b 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs
@@ -8,4 +8,4 @@ using System.Windows;
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Tango PPC Application")]
-[assembly: AssemblyVersion("1.2.7.0")]
+[assembly: AssemblyVersion("1.2.9.0")]
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj b/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj
index e738dbd43..081d79f3e 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj
@@ -426,18 +426,6 @@
<Resource Include="Images\GlobalStatus\shutdown_icon_Anim.gif" />
<Resource Include="Images\GlobalStatus\standby_Anim.gif" />
<Resource Include="Images\bug.png" />
- <Content Include="..\..\Build\ColorLib\Debug\Tango.ColorLib_v1.dll">
- <Link>Tango.ColorLib_v1.dll</Link>
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="..\..\Build\ColorLib\Debug\Tango.ColorLib_v2.dll">
- <Link>Tango.ColorLib_v2.dll</Link>
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="..\..\Build\ColorLib\Debug\Tango.ColorLib_v3.dll">
- <Link>Tango.ColorLib_v3.dll</Link>
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Resource Include="Images\cartridge_validation.png" />
<Resource Include="Images\machine-image.png" />
<Resource Include="Images\Menu\backup.png" />
@@ -456,10 +444,6 @@
<Resource Include="Images\firmware.png" />
<Resource Include="Images\power_off_2.gif" />
<Resource Include="Images\loading_anim.gif" />
- <Content Include="..\..\Build\ColorLib\Debug\Tango.ColorLib_v4.dll">
- <Link>Tango.ColorLib_v4.dll</Link>
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Resource Include="Images\thread_loading_preview.png" />
<Resource Include="Images\ThreadLoading\FeedingUnits\1.JPG" />
<Resource Include="Images\ThreadLoading\FeedingUnits\2.JPG" />
@@ -620,6 +604,36 @@
<Project>{208c8bd8-72c6-4e3c-acaa-351091a2acc7}</Project>
<Name>Tango.PPC.Shared</Name>
</ProjectReference>
+ <!--ColorLib-->
+ <ProjectReference Include="..\..\ColorLib\Tango.ColorLib_v4\Tango.ColorLib_v4.vcxproj">
+ <Project>{E9528353-7D41-4AA8-BBAC-D65B7FE3A0D6}</Project>
+ <Name>Tango.ColorLib_v4</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <OutputItemType>Content</OutputItemType>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </ProjectReference>
+ <ProjectReference Include="..\..\ColorLib\Tango.ColorLib_v3\Tango.ColorLib_v3.vcxproj">
+ <Project>{A3A8ADA0-C150-4E30-A60D-11F291FDBF7A}</Project>
+ <Name>Tango.ColorLib_v3</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <OutputItemType>Content</OutputItemType>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </ProjectReference>
+ <ProjectReference Include="..\..\ColorLib\Tango.ColorLib_v2\Tango.ColorLib_v2.vcxproj">
+ <Project>{1A3FC7FB-403C-4B3D-B705-28FCE11317DD}</Project>
+ <Name>Tango.ColorLib_v2</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <OutputItemType>Content</OutputItemType>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </ProjectReference>
+ <ProjectReference Include="..\..\ColorLib\Tango.ColorLib_v1\Tango.ColorLib_v1.vcxproj">
+ <Project>{CF4C66B0-CD13-4D31-8133-339A01E7E6F2}</Project>
+ <Name>Tango.ColorLib_v1</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ <OutputItemType>Content</OutputItemType>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </ProjectReference>
+ <!--ColorLib-->
</ItemGroup>
<ItemGroup>
<Resource Include="Images\liquid.png" />
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs
index 613c70809..5fe153ee9 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs
@@ -17,8 +17,11 @@ using Tango.Explorer;
using Tango.Integration.ExternalBridge;
using Tango.PMR.FirmwareUpgrade;
using Tango.PPC.Common;
+using Tango.PPC.Common.Application;
using Tango.PPC.Common.ExternalBridge;
using Tango.PPC.Common.MachineUpdate;
+using Tango.PPC.Common.Navigation;
+using Tango.PPC.Common.Notifications;
using Tango.PPC.Common.Publish;
using Tango.PPC.Common.Web;
using Tango.PPC.Shared.RemoteUpgrade;
@@ -121,7 +124,7 @@ namespace Tango.PPC.UI.ViewModels
#region Constructors
- public MachineUpdateViewVM(IMachineUpdateManager machineUpdateManager, IPPCExternalBridgeService externalBridge)
+ public MachineUpdateViewVM(IMachineUpdateManager machineUpdateManager, IPPCExternalBridgeService externalBridge, IPPCApplicationManager applicationManager, INavigationManager navigationManager, INotificationProvider notificationProvider)
{
MachineUpdateManager = machineUpdateManager;
externalBridge.RegisterRequestHandler(this);
@@ -142,6 +145,11 @@ namespace Tango.PPC.UI.ViewModels
});
machineUpdateManager.UpdateAvailable += MachineUpdateManager_UpdateAvailable;
+
+ NavigationManager = navigationManager;
+ NotificationProvider = notificationProvider;
+ ApplicationManager = applicationManager;
+ ApplicationManager.UpdaterFailed += ApplicationManager_UpdaterFailed;
}
#endregion
@@ -565,6 +573,30 @@ namespace Tango.PPC.UI.ViewModels
#endregion
+ #region Updater Failed
+
+ private void ApplicationManager_UpdaterFailed(object sender, EventArgs e)
+ {
+ InvokeUI(async () =>
+ {
+ try
+ {
+ await NavigationManager.NavigateTo(NavigationView.MachineUpdateView);
+ await NavigateTo(MachineUpdateView.UpdateProgressView);
+ await MachineUpdateManager.RestoreLastDatabaseBackup();
+ await Task.Delay(5000);
+ ApplicationManager.Restart();
+ }
+ catch (Exception ex)
+ {
+ await NotificationProvider.ShowError($"Could not restore the application to its previous state.\n{ex.FlattenMessage()}");
+ ApplicationManager.Restart();
+ }
+ });
+ }
+
+ #endregion
+
#region External Bridge Handler
[ExternalBridgeRequestHandlerMethod(typeof(StartRemoteApplicationUpgradeRequest), RequestHandlerLoggingMode.LogRequestName)]
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Updater/IdentityUtils.cs b/Software/Visual_Studio/PPC/Tango.PPC.Updater/IdentityUtils.cs
new file mode 100644
index 000000000..3a43be6f9
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Updater/IdentityUtils.cs
@@ -0,0 +1,118 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Security.Principal;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.PPC.Updater
+{
+ public static class IdentityUtils
+ {
+ [DllImport("advapi32.dll", SetLastError = true)]
+ static extern bool GetTokenInformation(IntPtr tokenHandle, TokenInformationClass tokenInformationClass, IntPtr tokenInformation, int tokenInformationLength, out int returnLength);
+
+ /// <summary>
+ /// Passed to <see cref="GetTokenInformation"/> to specify what
+ /// information about the token to return.
+ /// </summary>
+ enum TokenInformationClass
+ {
+ TokenUser = 1,
+ TokenGroups,
+ TokenPrivileges,
+ TokenOwner,
+ TokenPrimaryGroup,
+ TokenDefaultDacl,
+ TokenSource,
+ TokenType,
+ TokenImpersonationLevel,
+ TokenStatistics,
+ TokenRestrictedSids,
+ TokenSessionId,
+ TokenGroupsAndPrivileges,
+ TokenSessionReference,
+ TokenSandBoxInert,
+ TokenAuditPolicy,
+ TokenOrigin,
+ TokenElevationType,
+ TokenLinkedToken,
+ TokenElevation,
+ TokenHasRestrictions,
+ TokenAccessInformation,
+ TokenVirtualizationAllowed,
+ TokenVirtualizationEnabled,
+ TokenIntegrityLevel,
+ TokenUiAccess,
+ TokenMandatoryPolicy,
+ TokenLogonSid,
+ MaxTokenInfoClass
+ }
+
+ /// <summary>
+ /// The elevation type for a user token.
+ /// </summary>
+ enum TokenElevationType
+ {
+ TokenElevationTypeDefault = 1,
+ TokenElevationTypeFull,
+ TokenElevationTypeLimited
+ }
+
+ public static bool IsElevated()
+ {
+ var identity = WindowsIdentity.GetCurrent();
+ if (identity == null) throw new InvalidOperationException("Couldn't get the current user identity");
+ var principal = new WindowsPrincipal(identity);
+
+ // Check if this user has the Administrator role. If they do, return immediately.
+ // If UAC is on, and the process is not elevated, then this will actually return false.
+ //if (principal.IsInRole(WindowsBuiltInRole.Administrator)) return true;
+
+ //// If we're not running in Vista onwards, we don't have to worry about checking for UAC.
+ //if (Environment.OSVersion.Platform != PlatformID.Win32NT || Environment.OSVersion.Version.Major < 6)
+ //{
+ // // Operating system does not support UAC; skipping elevation check.
+ // return false;
+ //}
+
+ int tokenInfLength = Marshal.SizeOf(typeof(int));
+ IntPtr tokenInformation = Marshal.AllocHGlobal(tokenInfLength);
+
+ try
+ {
+ var token = identity.Token;
+ var result = GetTokenInformation(token, TokenInformationClass.TokenElevationType, tokenInformation, tokenInfLength, out tokenInfLength);
+
+ if (!result)
+ {
+ var exception = Marshal.GetExceptionForHR(Marshal.GetHRForLastWin32Error());
+ throw new InvalidOperationException("Couldn't get token information", exception);
+ }
+
+ var elevationType = (TokenElevationType)Marshal.ReadInt32(tokenInformation);
+
+ switch (elevationType)
+ {
+ case TokenElevationType.TokenElevationTypeDefault:
+ // TokenElevationTypeDefault - User is not using a split token, so they cannot elevate.
+ return false;
+ case TokenElevationType.TokenElevationTypeFull:
+ // TokenElevationTypeFull - User has a split token, and the process is running elevated. Assuming they're an administrator.
+ return true;
+ case TokenElevationType.TokenElevationTypeLimited:
+ // TokenElevationTypeLimited - User has a split token, but the process is not running elevated. Assuming they're an administrator.
+ return false;
+ default:
+ // Unknown token elevation type.
+ return false;
+ }
+ }
+ finally
+ {
+ if (tokenInformation != IntPtr.Zero) Marshal.FreeHGlobal(tokenInformation);
+ }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Updater/Images/warning.png b/Software/Visual_Studio/PPC/Tango.PPC.Updater/Images/warning.png
new file mode 100644
index 000000000..26ccc3ecb
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Updater/Images/warning.png
Binary files differ
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Updater/MainWindow.xaml b/Software/Visual_Studio/PPC/Tango.PPC.Updater/MainWindow.xaml
index a5e63477f..351ca0838 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Updater/MainWindow.xaml
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Updater/MainWindow.xaml
@@ -6,12 +6,43 @@
xmlns:local="clr-namespace:Tango.PPC.Updater"
mc:Ignorable="d"
WindowStyle="None" ResizeMode="NoResize" Width="800" Height="1280">
+
+ <Window.Resources>
+ <SolidColorBrush x:Key="Foreground" Color="#1c63ea" />
+
+ <Style TargetType="Button" x:Key="Button">
+ <Setter Property="Foreground" Value="{StaticResource Foreground}"></Setter>
+ <Setter Property="FontSize" Value="18"></Setter>
+ <Setter Property="FontWeight" Value="SemiBold"></Setter>
+ <Setter Property="Margin" Value="20 0"></Setter>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="Button">
+ <Border BorderBrush="{StaticResource Foreground}" BorderThickness="1" CornerRadius="25" Background="Transparent">
+ <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Content="{TemplateBinding Content}" />
+ </Border>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ </Window.Resources>
<Grid>
- <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
+ <StackPanel x:Name="stackProgress" HorizontalAlignment="Center" VerticalAlignment="Center">
<Image Source="/Images/package.png" Width="200" />
<TextBlock x:Name="txtStatus" Margin="0 100 0 0" FontSize="16" Text="Updating Tango..." HorizontalAlignment="Center"></TextBlock>
- <ProgressBar x:Name="prog" Margin="0 30 0 0" Width="500" Height="10" Maximum="100" Value="0" BorderThickness="0" Foreground="#1c63ea"></ProgressBar>
+ <ProgressBar x:Name="prog" Margin="0 30 0 0" Width="500" Height="10" Maximum="100" Value="0" BorderThickness="0" Foreground="{StaticResource Foreground}"></ProgressBar>
+ </StackPanel>
+
+ <StackPanel x:Name="stackFailed" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0 460 0 0" Visibility="Collapsed">
+ <Image Source="/Images/warning.png" Width="200" RenderOptions.BitmapScalingMode="Fant" />
+ <TextBlock Margin="0 100 0 0" FontSize="16" Text="Update Failed" Foreground="#FF0072" FontWeight="SemiBold" HorizontalAlignment="Center"></TextBlock>
+ <TextBlock x:Name="txtError" Margin="0 20 0 0" FontSize="16" Foreground="Gray" Text="Unexpected error" HorizontalAlignment="Center" TextAlignment="Center" TextWrapping="Wrap" Height="100"></TextBlock>
+
+ <UniformGrid Width="600" Height="55" Columns="2" Margin="0 200 0 0">
+ <Button x:Name="btnAbort" Content="ABORT" Style="{StaticResource Button}"></Button>
+ <Button x:Name="btnRetry" Content="RETRY" Style="{StaticResource Button}"></Button>
+ </UniformGrid>
</StackPanel>
</Grid>
</Window>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Updater/MainWindow.xaml.cs b/Software/Visual_Studio/PPC/Tango.PPC.Updater/MainWindow.xaml.cs
index 6615ededf..8f521c85a 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Updater/MainWindow.xaml.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Updater/MainWindow.xaml.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
+using System.Security.Principal;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
@@ -26,6 +27,7 @@ namespace Tango.PPC.Updater
private String _sourceFolder = AppDomain.CurrentDomain.BaseDirectory;
private String _msProcessName = "Tango.PPC.UI";
private String _appPath;
+ private bool EMULATE_EXCEPTION = false;
public MainWindow()
{
@@ -56,8 +58,16 @@ namespace Tango.PPC.Updater
Width = touch_screen.Bounds.Width;
Height = touch_screen.Bounds.Height;
}
+ else
+ {
+ Top = 0;
+ Left = 0;
+ }
ContentRendered += MainWindow_ContentRendered;
+
+ btnRetry.Click += BtnRetry_Click;
+ btnAbort.Click += BtnAbort_Click;
}
private void MainWindow_ContentRendered(object sender, EventArgs e)
@@ -69,7 +79,32 @@ namespace Tango.PPC.Updater
{
try
{
+ ShowProgress();
+
+ if (!IdentityUtils.IsElevated())
+ {
+ ShowError("The updater utility is not running under elevated permissions and cannot perform.\nThe process will restart.");
+ var exeName = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
+ ProcessStartInfo startInfo = new ProcessStartInfo(exeName);
+ startInfo.Arguments = String.Join(" ", App.StartupArgs);
+ startInfo.Verb = "runas";
+ Process.Start(startInfo);
+ Environment.Exit(0);
+ return;
+ }
+ }
+ catch { }
+
+ try
+ {
Init();
+
+ if (EMULATE_EXCEPTION)
+ {
+ EMULATE_EXCEPTION = false;
+ throw new InvalidOperationException("This is an emulated error.");
+ }
+
EnsureTangoIsDown();
RemoveOldDLLFiles();
ReplaceFiles();
@@ -78,30 +113,31 @@ namespace Tango.PPC.Updater
DoEvents();
Thread.Sleep(1000);
StartTango(true);
+ Exit();
}
catch (Exception ex)
{
- ShowError($"Update failed.\n{ex.Message}");
- StartTango(false);
+ ShowFailed(ex);
}
- finally
+ }
+
+ private void Exit()
+ {
+ try
{
- try
+ foreach (var file in Directory.GetFiles(_sourceFolder, "*.*", SearchOption.AllDirectories))
{
- foreach (var file in Directory.GetFiles(_sourceFolder, "*.*", SearchOption.AllDirectories))
+ try
{
- try
- {
- File.Delete(file);
- }
- catch { }
+ File.Delete(file);
}
+ catch { }
}
- catch { }
+ }
+ catch { }
- Environment.Exit(0);
- }
+ Environment.Exit(0);
}
private void Init()
@@ -137,6 +173,10 @@ namespace Tango.PPC.Updater
{
p.StartInfo.Arguments = "-update_ok";
}
+ else
+ {
+ p.StartInfo.Arguments = "-update_failed";
+ }
p.Start();
}
@@ -203,37 +243,49 @@ namespace Tango.PPC.Updater
{
Process appProcess = null;
- int tries = 0;
-
- do
+ for (int i = 0; i < 20; i++)
{
- appProcess = Process.GetProcessesByName(_msProcessName).FirstOrDefault();
- Process p = new Process();
- p.StartInfo.CreateNoWindow = true;
- p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
- p.StartInfo.FileName = "wmic";
- p.StartInfo.Arguments = String.Format("process where name='{0}' delete", _msProcessName);
+ try
+ {
+ appProcess = Process.GetProcessesByName(_msProcessName).FirstOrDefault();
+ }
+ catch
+ {
+ Thread.Sleep(1000);
+ continue;
+ }
if (appProcess != null)
{
- tries++;
- appProcess.Kill();
+ try
+ {
+ appProcess.Kill();
+ }
+ catch { }
try
{
+ Process p = new Process();
+ p.StartInfo.CreateNoWindow = true;
+ p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
+ p.StartInfo.FileName = "wmic";
+ p.StartInfo.Arguments = String.Format("process where name='{0}' delete", _msProcessName);
p.Start();
}
catch { }
-
- Thread.Sleep(1000);
}
-
- if (tries > 10)
+ else
{
- throw new IOException("The main Tango process seems to in a frozen state. Please restart your computer and try again.");
+ break;
}
- } while (appProcess != null);
+ Thread.Sleep(1000);
+ }
+
+ if (appProcess != null)
+ {
+ throw new IOException("The main Tango process seems to in a frozen state. Please restart your computer and try again.");
+ }
}
/// <summary>
@@ -248,5 +300,49 @@ namespace Tango.PPC.Updater
{
MessageBox.Show(error, "Tango Update", MessageBoxButton.OK, MessageBoxImage.Error);
}
+
+ private bool ShowErrorRetry(String error)
+ {
+ var result = MessageBox.Show(error + "\n" + "Press yes to retry.", "Tango Update", MessageBoxButton.YesNo, MessageBoxImage.Error);
+ return result == MessageBoxResult.Yes;
+ }
+
+ private void ShowProgress()
+ {
+ stackProgress.Visibility = Visibility.Visible;
+ stackFailed.Visibility = Visibility.Collapsed;
+ }
+
+ private void ShowFailed(Exception ex)
+ {
+ try
+ {
+ using (EventLog eventLog = new EventLog("Application"))
+ {
+ eventLog.Source = "PPC Updater";
+ eventLog.WriteEntry($"PPC Updater Failed\n{ex.ToString()}", EventLogEntryType.Error, 101, 1);
+ }
+ }
+ catch { }
+
+ stackProgress.Visibility = Visibility.Collapsed;
+ stackFailed.Visibility = Visibility.Visible;
+ txtError.Text = ex.Message;
+ }
+
+ private void BtnAbort_Click(object sender, RoutedEventArgs e)
+ {
+ ShowProgress();
+ txtStatus.Text = "Update failed. Restoring previous application state...";
+ DoEvents();
+ Thread.Sleep(1000);
+ StartTango(false);
+ Exit();
+ }
+
+ private void BtnRetry_Click(object sender, RoutedEventArgs e)
+ {
+ Update();
+ }
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Updater/Tango.PPC.Updater.csproj b/Software/Visual_Studio/PPC/Tango.PPC.Updater/Tango.PPC.Updater.csproj
index 3f232c4d2..8f8430102 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Updater/Tango.PPC.Updater.csproj
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Updater/Tango.PPC.Updater.csproj
@@ -67,6 +67,7 @@
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
+ <Compile Include="IdentityUtils.cs" />
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
@@ -102,6 +103,9 @@
<ItemGroup>
<Resource Include="Images\package.png" />
</ItemGroup>
+ <ItemGroup>
+ <Resource Include="Images\warning.png" />
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/App.config b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/App.config
new file mode 100644
index 000000000..731f6de6c
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/App.config
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
+ </startup>
+</configuration> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Program.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Program.cs
new file mode 100644
index 000000000..9fd588906
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Program.cs
@@ -0,0 +1,66 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.IO.Pipes;
+using System.Linq;
+using System.Runtime.Serialization.Formatters.Binary;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.StubsUtils.Shared;
+
+namespace Tango.StubsUtils.Client.CLI
+{
+ class Program
+ {
+ private const string PIPE_NAME = "Tango_Stubs_Server";
+
+ static void Main(string[] args)
+ {
+ StubPackageResponseDTO response = null;
+
+ try
+ {
+ var _client = new NamedPipeClientStream(PIPE_NAME);
+ _client.Connect(5000);
+
+ var writer = new StreamWriter(_client);
+
+ var jsonRequest = String.Join(" ", args);
+
+ writer.WriteLine(jsonRequest);
+ writer.Flush();
+
+ var reader = new StreamReader(_client);
+ String responseString = reader.ReadToEnd();
+ response = new StubPackageResponseDTO();
+ response.Status = responseString.StartsWith("Status: OK") ? StubPackageResponseStatus.OK : StubPackageResponseStatus.Error;
+ response.Message = responseString;
+ }
+ catch (Exception ex)
+ {
+ ExitError($"Error communicating with the stubs service. {ex.Message}");
+ }
+
+ if (response.Status == StubPackageResponseStatus.OK)
+ {
+ Console.ForegroundColor = ConsoleColor.Gray;
+ Console.WriteLine(response.Message);
+ Environment.Exit(0);
+ }
+ else
+ {
+ ExitError(response.Message);
+ }
+ }
+
+ private static void ExitError(String error)
+ {
+ Console.ForegroundColor = ConsoleColor.Red;
+ Console.Error.WriteLine($"{error}");
+ Console.ForegroundColor = ConsoleColor.Gray;
+ Environment.Exit(-1);
+ }
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..9c1a90a8d
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Tango.StubsUtils.Client.CLI")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Tango.StubsUtils.Client.CLI")]
+[assembly: AssemblyCopyright("Copyright © 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("2ed5d897-df22-491e-8410-d01383b3dad2")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Tango.StubsUtils.Client.CLI.csproj b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Tango.StubsUtils.Client.CLI.csproj
new file mode 100644
index 000000000..7bbf4b387
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/Tango.StubsUtils.Client.CLI.csproj
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{2ED5D897-DF22-491E-8410-D01383B3DAD2}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <RootNamespace>Tango.StubsUtils.Client.CLI</RootNamespace>
+ <AssemblyName>tangostub</AssemblyName>
+ <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+ <Deterministic>true</Deterministic>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\Build\StubsUtils\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\Build\StubsUtils\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ <None Include="packages.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Tango.StubsUtils.Shared\Tango.StubsUtils.Shared.csproj">
+ <Project>{dae96f06-72cd-411d-90a3-9456ae79f699}</Project>
+ <Name>Tango.StubsUtils.Shared</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/packages.config b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/packages.config
new file mode 100644
index 000000000..7ee8c1052
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Client.CLI/packages.config
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net461" />
+</packages> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/App.config b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/App.config
new file mode 100644
index 000000000..731f6de6c
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/App.config
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
+ </startup>
+</configuration> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Program.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Program.cs
new file mode 100644
index 000000000..3083037f8
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Program.cs
@@ -0,0 +1,90 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Tango.StubsUtils.PerformanceTest.CLI
+{
+ class Program
+ {
+ private const int ROUNDS = 10000;
+
+ static void Main(string[] args)
+ {
+ List<double> durations = new List<double>();
+
+ Process process = new Process();
+ process.StartInfo.FileName = "tangostub_s.exe";
+ process.StartInfo.CreateNoWindow = true;
+ process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
+ process.StartInfo.RedirectStandardOutput = true;
+ process.StartInfo.RedirectStandardOutput = true;
+ process.StartInfo.RedirectStandardInput = true;
+ process.StartInfo.UseShellExecute = false;
+ process.Start();
+ process.PriorityClass = ProcessPriorityClass.RealTime;
+
+ process.StandardOutput.ReadLine(); //Read the first welcome line...
+
+ Stopwatch watch = new Stopwatch();
+
+ for (int i = 0; i < ROUNDS; i++)
+ {
+ watch.Restart();
+
+ process.StandardInput.WriteLine("calculate 10 15");
+ StringBuilder builder = new StringBuilder();
+
+ char[] buffer = new char[1];
+
+ while (process.StandardOutput.Read(buffer, 0, 1) > 0)
+ {
+ char c = buffer[0];
+
+ if (c == '\r')
+ {
+ process.StandardOutput.Read();
+ break;
+ }
+ else if (c == '>')
+ {
+ process.StandardOutput.Read();
+ }
+ else
+ {
+ builder.Append(buffer[0]);
+ }
+ }
+
+ String response = builder.ToString();
+
+ if (response.StartsWith("Status: Error"))
+ {
+ OnError(response);
+ return;
+ }
+
+ durations.Add(watch.ElapsedMilliseconds);
+
+ Console.SetCursorPosition(0, 0);
+ Console.Write($"Performance Test: {i + 1}/{ROUNDS}, Avg: {Math.Round(durations.Average(), 2)} ms ");
+ }
+
+ Console.WriteLine();
+ Console.WriteLine();
+ Console.WriteLine("Completed.");
+ Console.ReadLine();
+ }
+
+ private static void OnError(String error)
+ {
+ Console.ForegroundColor = ConsoleColor.Red;
+ Console.WriteLine(error);
+ Console.ForegroundColor = ConsoleColor.Gray;
+ Console.ReadLine();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..ff6dc5c94
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Tango.StubsUtils.PerformanceTest.CLI")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Tango.StubsUtils.PerformanceTest.CLI")]
+[assembly: AssemblyCopyright("Copyright © 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("f423324c-7d0a-4512-beba-df3a931a09f6")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Tango.StubsUtils.PerformanceTest.CLI.csproj b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Tango.StubsUtils.PerformanceTest.CLI.csproj
new file mode 100644
index 000000000..f4575043f
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.PerformanceTest.CLI/Tango.StubsUtils.PerformanceTest.CLI.csproj
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{F423324C-7D0A-4512-BEBA-DF3A931A09F6}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <RootNamespace>Tango.StubsUtils.PerformanceTest.CLI</RootNamespace>
+ <AssemblyName>Tango.StubsUtils.PerformanceTest.CLI</AssemblyName>
+ <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+ <Deterministic>true</Deterministic>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Tango.StubsUtils.Client.CLI\Tango.StubsUtils.Client.CLI.csproj">
+ <Project>{2ed5d897-df22-491e-8410-d01383b3dad2}</Project>
+ <Name>Tango.StubsUtils.Client.CLI</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Tango.StubsUtils.SessionClient.CLI\Tango.StubsUtils.SessionClient.CLI.csproj">
+ <Project>{f1b727f5-adf5-4a81-a740-7e64e48b29d4}</Project>
+ <Name>Tango.StubsUtils.SessionClient.CLI</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.config b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.config
new file mode 100644
index 000000000..6544d52a6
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.config
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
+ </startup>
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-5.0.5.0" newVersion="5.0.5.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Reactive.Core" publicKeyToken="94bc3704cddfc263" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-3.0.3000.0" newVersion="3.0.3000.0" />
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
+</configuration> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.xaml b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.xaml
new file mode 100644
index 000000000..4db18888a
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.xaml
@@ -0,0 +1,92 @@
+<Application x:Class="Tango.StubsUtils.Service.UI.App"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
+ xmlns:local="clr-namespace:Tango.StubsUtils.Service.UI"
+ StartupUri="MainWindow.xaml">
+ <Application.Resources>
+ <ResourceDictionary>
+ <ResourceDictionary.MergedDictionaries>
+
+ <!--LOADS IN App.xaml.cs-->
+
+ <!--<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
+ <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" />
+ <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/VS/Colors.xaml" />
+ <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/VS/Styles.xaml" />
+ <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />-->
+
+ <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! -->
+ <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
+ <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
+ <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
+ <!-- Accent and AppTheme setting -->
+ <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Red.xaml" />
+ <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" />
+ <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/FlatButton.xaml" />
+
+ <!--LOADS IN App.xaml.cs-->
+
+ <materialDesign:BundledTheme BaseTheme="Dark" PrimaryColor="LightBlue" SecondaryColor="Cyan" />
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
+
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml">
+ </ResourceDictionary>
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/materialdesigncolor.lightblue.xaml">
+ </ResourceDictionary>
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/materialdesigncolor.yellow.xaml">
+ </ResourceDictionary>
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Button.xaml">
+ </ResourceDictionary>
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.CheckBox.xaml">
+ </ResourceDictionary>
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ListBox.xaml">
+ </ResourceDictionary>
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.PopupBox.xaml">
+ </ResourceDictionary>
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.RadioButton.xaml">
+ </ResourceDictionary>
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ToggleButton.xaml">
+ </ResourceDictionary>
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/materialdesigntheme.TextBlock.xaml">
+ </ResourceDictionary>
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/materialdesigntheme.Label.xaml">
+ </ResourceDictionary>
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/materialdesigntheme.Slider.xaml">
+ </ResourceDictionary>
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/materialdesigntheme.ProgressBar.xaml"/>
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ComboBox.xaml" />
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Menu.xaml" />
+ <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Slider.xaml" />
+
+ <ResourceDictionary Source="/Resources/Converters.xaml" />
+ <ResourceDictionary Source="/Resources/Colors.xaml" />
+ <ResourceDictionary Source="/Resources/Fonts.xaml" />
+
+ <ResourceDictionary>
+ <!--OVERRIDE MAHAPPS-->
+ <SolidColorBrush x:Key="HighlightBrush" Color="{DynamicResource Primary700}"/>
+ <SolidColorBrush x:Key="AccentBaseColorBrush" Color="{DynamicResource Primary600}" />
+ <SolidColorBrush x:Key="AccentColorBrush" Color="{DynamicResource Primary500}"/>
+ <SolidColorBrush x:Key="AccentColorBrush2" Color="{DynamicResource Primary400}"/>
+ <SolidColorBrush x:Key="AccentColorBrush3" Color="{DynamicResource Primary300}"/>
+ <SolidColorBrush x:Key="AccentColorBrush4" Color="{DynamicResource Primary200}"/>
+ <SolidColorBrush x:Key="WindowTitleColorBrush" Color="{DynamicResource Primary700}"/>
+ <SolidColorBrush x:Key="AccentSelectedColorBrush" Color="{DynamicResource Primary500Foreground}"/>
+ <LinearGradientBrush x:Key="ProgressBrush" EndPoint="0.001,0.5" StartPoint="1.002,0.5">
+ <GradientStop Color="{DynamicResource Primary700}" Offset="0"/>
+ <GradientStop Color="{DynamicResource Primary300}" Offset="1"/>
+ </LinearGradientBrush>
+ <SolidColorBrush x:Key="CheckmarkFill" Color="{DynamicResource Primary500}"/>
+ <SolidColorBrush x:Key="RightArrowFill" Color="{DynamicResource Primary500}"/>
+ <SolidColorBrush x:Key="IdealForegroundColorBrush" Color="{DynamicResource Primary500Foreground}"/>
+ <SolidColorBrush x:Key="IdealForegroundDisabledBrush" Color="{DynamicResource Primary500}" Opacity="0.4"/>
+ <SolidColorBrush x:Key="MahApps.Metro.Brushes.ToggleSwitchButton.OnSwitchBrush.Win10" Color="{DynamicResource Primary500}" />
+ <SolidColorBrush x:Key="MahApps.Metro.Brushes.ToggleSwitchButton.OnSwitchMouseOverBrush.Win10" Color="{DynamicResource Primary400}" />
+ <SolidColorBrush x:Key="MahApps.Metro.Brushes.ToggleSwitchButton.ThumbIndicatorCheckedBrush.Win10" Color="{DynamicResource Primary500Foreground}" />
+ </ResourceDictionary>
+
+ </ResourceDictionary.MergedDictionaries>
+ </ResourceDictionary>
+ </Application.Resources>
+</Application>
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.xaml.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.xaml.cs
new file mode 100644
index 000000000..c6f57aad6
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/App.xaml.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+using Tango.Settings;
+
+namespace Tango.StubsUtils.Service.UI
+{
+ /// <summary>
+ /// Interaction logic for App.xaml
+ /// </summary>
+ public partial class App : Application
+ {
+ protected override void OnStartup(StartupEventArgs e)
+ {
+ base.OnStartup(e);
+
+ ServiceUISettings settings = SettingsManager.Default.GetOrCreate<ServiceUISettings>();
+ settings.Save();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_connected.ico b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_connected.ico
new file mode 100644
index 000000000..75aba4e9b
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_connected.ico
Binary files differ
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_connected.png b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_connected.png
new file mode 100644
index 000000000..47dd7d116
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_connected.png
Binary files differ
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_disconnected.ico b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_disconnected.ico
new file mode 100644
index 000000000..8b5af1ccb
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_disconnected.ico
Binary files differ
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_disconnected.png b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_disconnected.png
new file mode 100644
index 000000000..51876421f
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_disconnected.png
Binary files differ
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_none.png b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_none.png
new file mode 100644
index 000000000..95cf615c5
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Images/machine_icon_none.png
Binary files differ
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/MainWindow.xaml b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/MainWindow.xaml
new file mode 100644
index 000000000..f7113076c
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/MainWindow.xaml
@@ -0,0 +1,15 @@
+<mahapps:MetroWindow x:Class="Tango.StubsUtils.Service.UI.MainWindow"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:local="clr-namespace:Tango.StubsUtils.Service.UI"
+ xmlns:tb="http://www.hardcodet.net/taskbar"
+ xmlns:views="clr-namespace:Tango.StubsUtils.Service.UI.Views"
+ mc:Ignorable="d"
+ Title="Tango - Stubs Service" Height="400" Width="700" EnableDWMDropShadow="True" WindowTitleBrush="{StaticResource FSE_PrimaryBackgroundLightBrush}" BorderBrush="{StaticResource FSE_PrimaryBackgroundLightBrush}" OverrideDefaultWindowCommandsBrush="{StaticResource FSE_PrimaryForegroundBrush}" TitleForeground="{StaticResource FSE_PrimaryForegroundBrush}" TitleCaps="False" BorderThickness="1" WindowStartupLocation="CenterScreen" Background="{StaticResource FSE_PrimaryBackgroundBrush}" Foreground="{StaticResource FSE_PrimaryForegroundBrush}" DataContext="{Binding RelativeSource={RelativeSource Self}}" Visibility="Hidden">
+ <Grid>
+ <views:MainView x:Name="MainView" />
+ </Grid>
+</mahapps:MetroWindow>
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/MainWindow.xaml.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/MainWindow.xaml.cs
new file mode 100644
index 000000000..98a8bd721
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/MainWindow.xaml.cs
@@ -0,0 +1,55 @@
+using MahApps.Metro.Controls;
+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;
+using Tango.StubsUtils.Service.UI.ViewModels;
+
+namespace Tango.StubsUtils.Service.UI
+{
+ /// <summary>
+ /// Interaction logic for MainWindow.xaml
+ /// </summary>
+ public partial class MainWindow : MetroWindow
+ {
+ private MainViewVM _mainViewVM;
+
+ public MainWindow()
+ {
+ InitializeComponent();
+ Loaded += MainWindow_Loaded;
+ StateChanged += MainWindow_StateChanged;
+ Closing += MainWindow_Closing;
+ }
+
+ private void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
+ {
+ e.Cancel = true;
+ _mainViewVM.ExitApplication();
+ }
+
+ private void MainWindow_StateChanged(object sender, EventArgs e)
+ {
+ if (WindowState == WindowState.Minimized)
+ {
+ Visibility = Visibility.Hidden;
+ _mainViewVM.IsTrayIconVisible = true;
+ }
+ }
+
+ private void MainWindow_Loaded(object sender, RoutedEventArgs e)
+ {
+ _mainViewVM = MainView.DataContext as MainViewVM;
+ }
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..4b32746ed
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/AssemblyInfo.cs
@@ -0,0 +1,55 @@
+using System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Tango.StubsUtils.Service.UI")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Tango.StubsUtils.Service.UI")]
+[assembly: AssemblyCopyright("Copyright © 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+//In order to begin building localizable applications, set
+//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
+//inside a <PropertyGroup>. For example, if you are using US english
+//in your source files, set the <UICulture> to en-US. Then uncomment
+//the NeutralResourceLanguage attribute below. Update the "en-US" in
+//the line below to match the UICulture setting in the project file.
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
+ //(used if a resource is not found in the page,
+ // or application resource dictionaries)
+ ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+ //(used if a resource is not found in the page,
+ // app, or any theme specific resource dictionaries)
+)]
+
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Resources.Designer.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Resources.Designer.cs
new file mode 100644
index 000000000..11234f139
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Tango.StubsUtils.Service.UI.Properties
+{
+
+
+ /// <summary>
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ /// </summary>
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ /// <summary>
+ /// Returns the cached ResourceManager instance used by this class.
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Tango.StubsUtils.Service.UI.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ /// <summary>
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Resources.resx b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Resources.resx
new file mode 100644
index 000000000..af7dbebba
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Resources.resx
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Settings.Designer.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Settings.Designer.cs
new file mode 100644
index 000000000..d058593f8
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Tango.StubsUtils.Service.UI.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Settings.settings b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Settings.settings
new file mode 100644
index 000000000..033d7a5e9
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Properties/Settings.settings
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
+ <Profiles>
+ <Profile Name="(Default)" />
+ </Profiles>
+ <Settings />
+</SettingsFile> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Resources/Colors.xaml b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Resources/Colors.xaml
new file mode 100644
index 000000000..48e13f381
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Resources/Colors.xaml
@@ -0,0 +1,140 @@
+<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="clr-namespace:Tango.StubsUtils.Service.UI.Resources">
+
+ <!--COLORS-->
+ <Color x:Key="FSE_PrimaryBackgroundDarkColor">#202020</Color>
+ <Color x:Key="FSE_PrimaryBackgroundMidColor">#262626</Color>
+ <Color x:Key="FSE_PrimaryBackgroundColor">#303030</Color>
+ <Color x:Key="FSE_PrimaryBackgroundLightColor">#404040</Color>
+ <Color x:Key="FSE_PrimaryBackgroundLighterColor">#505050</Color>
+ <Color x:Key="FSE_PrimaryForegroundColor">#EEEEEE</Color>
+ <Color x:Key="FSE_GrayColor">#A0A0A0</Color>
+ <Color x:Key="FSE_SemiTransparentColor">#76000000</Color>
+ <Color x:Key="FSE_BorderColor">#707070</Color>
+ <Color x:Key="FSE_PrimaryAccentColor">#009FE7</Color>
+ <Color x:Key="FSE_PrimaryAccentDarkColor">#009FE7</Color>
+
+ <Color x:Key="FSE_CriticalColor">#FA2828</Color>
+ <Color x:Key="FSE_ErrorColor">#FF4C4C</Color>
+ <Color x:Key="FSE_WarningColor">#FF914C</Color>
+ <Color x:Key="FSE_SuccessColor">#6DFF72</Color>
+ <Color x:Key="FSE_MessageBoxTitleHeaderBackgroundColor">#404040</Color>
+
+ <Color x:Key="FSE_UsbColor">#FF6F6F</Color>
+ <Color x:Key="FSE_WifiColor">#58C13B</Color>
+ <Color x:Key="FSE_SignalRColor">#6DDAFF</Color>
+ <Color x:Key="FSE_EmulatorColor">#F3FF6D</Color>
+
+ <Color x:Key="FSE_RedColor">#FF6F6F</Color>
+ <Color x:Key="FSE_GreenColor">#8EFF6F</Color>
+ <Color x:Key="FSE_OrangeColor">#FF7C2B</Color>
+ <Color x:Key="FSE_YellowColor">#FFB84B</Color>
+
+ <Color x:Key="FSE_RealTimeGraph_White">#18FFFFFF</Color>
+ <Color x:Key="FSE_RealTimeGraph_Red">#B6FF6F6F</Color>
+ <Color x:Key="FSE_RealTimeGraph_Yellow">#BBFFB84B</Color>
+ <Color x:Key="FSE_RealTimeGraph_Green">#B958C13B</Color>
+ <Color x:Key="FSE_RealTimeGraph_Orange">#BBFA9252</Color>
+
+ <Color x:Key="FSE_RealTimeGraph_ForegroundColor">#7C98B3</Color>
+ <Color x:Key="FSE_RealTimeGraph_OuterBorderColor">#202020</Color>
+ <Color x:Key="FSE_RealTimeGraph_InnerBorderColor">#505050</Color>
+ <Color x:Key="FSE_RealTimeGraph_GridLinesColor">#303030</Color>
+
+ <Color x:Key="FSE_Panel_BorderColor">#202020</Color>
+ <Color x:Key="FSE_Panel_BackgroundColor">#252525</Color>
+
+ <!--BRUSHES-->
+ <SolidColorBrush x:Key="FSE_PrimaryBackgroundDarkBrush" Color="{StaticResource FSE_PrimaryBackgroundDarkColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_PrimaryBackgroundMidBrush" Color="{StaticResource FSE_PrimaryBackgroundMidColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_PrimaryBackgroundBrush" Color="{StaticResource FSE_PrimaryBackgroundColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_PrimaryBackgroundLightBrush" Color="{StaticResource FSE_PrimaryBackgroundLightColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_PrimaryBackgroundLighterBrush" Color="{StaticResource FSE_PrimaryBackgroundLighterColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_PrimaryForegroundBrush" Color="{StaticResource FSE_PrimaryForegroundColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_SemiTransparentBrush" Color="{StaticResource FSE_SemiTransparentColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_BorderBrush" Color="{StaticResource FSE_BorderColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_GrayBrush" Color="{StaticResource FSE_GrayColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_PrimaryAccentBrush" Color="{StaticResource FSE_PrimaryAccentColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_PrimaryAccentDarkBrush" Color="{StaticResource FSE_PrimaryAccentDarkColor}"></SolidColorBrush>
+
+ <SolidColorBrush x:Key="FSE_CriticalBrush" Color="{StaticResource FSE_CriticalColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_ErrorBrush" Color="{StaticResource FSE_ErrorColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_WarningBrush" Color="{StaticResource FSE_WarningColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_SuccessBrush" Color="{StaticResource FSE_SuccessColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_InfoBrush" Color="{StaticResource FSE_PrimaryForegroundColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_MessageBoxTitleHeaderBackgroundBrush" Color="{StaticResource FSE_MessageBoxTitleHeaderBackgroundColor}"></SolidColorBrush>
+
+ <SolidColorBrush x:Key="FSE_UsbBrush" Color="{StaticResource FSE_UsbColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_WifiBrush" Color="{StaticResource FSE_WifiColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_SignalRBrush" Color="{StaticResource FSE_SignalRColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_EmulatorBrush" Color="{StaticResource FSE_EmulatorColor}"></SolidColorBrush>
+
+ <SolidColorBrush x:Key="FSE_RedBrush" Color="{StaticResource FSE_RedColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_GreenBrush" Color="{StaticResource FSE_GreenColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_OrangeBrush" Color="{StaticResource FSE_OrangeColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_YellowBrush" Color="{StaticResource FSE_YellowColor}"></SolidColorBrush>
+
+ <SolidColorBrush x:Key="FSE_RealTimeGraph_ForegroundBrush" Color="{StaticResource FSE_RealTimeGraph_ForegroundColor}" />
+ <SolidColorBrush x:Key="FSE_RealTimeGraph_OuterBorderBrush" Color="{StaticResource FSE_RealTimeGraph_OuterBorderColor}" />
+ <SolidColorBrush x:Key="FSE_RealTimeGraph_InnerBorderBrush" Color="{StaticResource FSE_RealTimeGraph_InnerBorderColor}" />
+ <SolidColorBrush x:Key="FSE_RealTimeGraph_GridLinesBrush" Color="{StaticResource FSE_RealTimeGraph_GridLinesColor}" />
+
+ <LinearGradientBrush x:Key="FSE_RealTimeGraph_BackgroundBrush" EndPoint="0.5,1" StartPoint="0.5,0" >
+ <GradientStop Color="#202020"/>
+ <GradientStop Color="#FF333333" Offset="1"/>
+ </LinearGradientBrush>
+
+ <SolidColorBrush x:Key="FSE_RealTimeGraph_WhiteBrush" Color="{StaticResource FSE_RealTimeGraph_White}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_RealTimeGraph_RedBrush" Color="{StaticResource FSE_RealTimeGraph_Red}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_RealTimeGraph_YellowBrush" Color="{StaticResource FSE_RealTimeGraph_Yellow}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_RealTimeGraph_GreenBrush" Color="{StaticResource FSE_RealTimeGraph_Green}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_RealTimeGraph_OrangeBrush" Color="{StaticResource FSE_RealTimeGraph_Orange}"></SolidColorBrush>
+
+ <SolidColorBrush x:Key="FSE_Panel_BorderBrush" Color="{StaticResource FSE_Panel_BorderColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="FSE_Panel_BackgroundBrush" Color="{StaticResource FSE_Panel_BackgroundColor}"></SolidColorBrush>
+
+ <!--IMAGE BRUSHES-->
+ <ImageBrush x:Key="FSE_AbstractBrush" ImageSource="{StaticResource FSE_Abstract}" Stretch="UniformToFill"></ImageBrush>
+
+ <!--BRUSHES OVERRIDES-->
+ <SolidColorBrush x:Key="MaterialDesignPaper" Color="{StaticResource FSE_PrimaryBackgroundColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="MaterialDesignBody" Color="{StaticResource FSE_PrimaryForegroundColor}"></SolidColorBrush>
+ <SolidColorBrush x:Key="PrimaryHueMidForegroundBrush" Color="{StaticResource FSE_PrimaryForegroundColor}"/>
+ <SolidColorBrush x:Key="PrimaryHueLightBrush" Color="{StaticResource FSE_PrimaryBackgroundLightColor}"/>
+ <SolidColorBrush x:Key="PrimaryHueLightForegroundBrush" Color="{StaticResource FSE_PrimaryForegroundColor}"/>
+ <SolidColorBrush x:Key="PrimaryHueMidBrush" Color="{StaticResource FSE_PrimaryAccentColor}"/>
+
+ <!--MAHAPPS OVERRIED-->
+ <Color x:Key="HighlightColor">#009FE7</Color>
+ <Color x:Key="AccentColor3">#009FE7</Color>
+ <Color x:Key="AccentColor2">#009FE7</Color>
+ <Color x:Key="AccentColor1">#009FE7</Color>
+ <SolidColorBrush x:Key="HighlightBrush" Color="{DynamicResource Primary700}"/>
+ <SolidColorBrush x:Key="AccentBaseColorBrush" Color="{DynamicResource Primary600}" />
+ <SolidColorBrush x:Key="AccentColorBrush" Color="{DynamicResource Primary500}"/>
+ <SolidColorBrush x:Key="AccentColorBrush2" Color="{DynamicResource Primary400}"/>
+ <SolidColorBrush x:Key="AccentColorBrush3" Color="{DynamicResource Primary300}"/>
+ <SolidColorBrush x:Key="AccentColorBrush4" Color="{DynamicResource Primary200}"/>
+ <SolidColorBrush x:Key="WindowTitleColorBrush" Color="{DynamicResource Primary700}"/>
+ <SolidColorBrush x:Key="AccentSelectedColorBrush" Color="{DynamicResource Primary500Foreground}"/>
+ <LinearGradientBrush x:Key="ProgressBrush" EndPoint="0.001,0.5" StartPoint="1.002,0.5">
+ <GradientStop Color="{DynamicResource Primary700}" Offset="0"/>
+ <GradientStop Color="{DynamicResource Primary300}" Offset="1"/>
+ </LinearGradientBrush>
+ <SolidColorBrush x:Key="CheckmarkFill" Color="{DynamicResource Primary500}"/>
+ <SolidColorBrush x:Key="RightArrowFill" Color="{DynamicResource Primary500}"/>
+ <SolidColorBrush x:Key="IdealForegroundColorBrush" Color="{DynamicResource Primary500Foreground}"/>
+ <SolidColorBrush x:Key="IdealForegroundDisabledBrush" Color="{DynamicResource Primary500}" Opacity="0.4"/>
+ <SolidColorBrush x:Key="MahApps.Metro.Brushes.ToggleSwitchButton.OnSwitchBrush.Win10" Color="{DynamicResource Primary500}" />
+ <SolidColorBrush x:Key="MahApps.Metro.Brushes.ToggleSwitchButton.OnSwitchMouseOverBrush.Win10" Color="{DynamicResource Primary400}" />
+ <SolidColorBrush x:Key="MahApps.Metro.Brushes.ToggleSwitchButton.ThumbIndicatorCheckedBrush.Win10" Color="{DynamicResource Primary500Foreground}" />
+
+ <!-- primary -->
+ <!--<SolidColorBrush x:Key="PrimaryHueDarkBrush" Color="#4D1DCF"/>
+ <SolidColorBrush x:Key="PrimaryHueDarkForegroundBrush" Color="#FFFFFF"/>-->
+ <!--accent-->
+ <SolidColorBrush x:Key="SecondaryAccentBrush" Color="{StaticResource FSE_PrimaryAccentColor}"/>
+ <SolidColorBrush x:Key="SecondaryAccentForegroundBrush" Color="{StaticResource FSE_PrimaryForegroundColor}"/>
+
+</ResourceDictionary> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Resources/Converters.xaml b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Resources/Converters.xaml
new file mode 100644
index 000000000..260fc92ca
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Resources/Converters.xaml
@@ -0,0 +1,45 @@
+<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI"
+ xmlns:local="clr-namespace:Tango.StubsUtils.Service.UI.Resources">
+
+ <converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
+ <converters:BooleanInverseConverter x:Key="BooleanInverseConverter" />
+ <converters:BooleanToVisibilityInverseConverter x:Key="BooleanToVisibilityInverseConverter" />
+ <converters:DateTimeUTCToShortDateConverter x:Key="DateTimeUTCToShortDateConverter" />
+ <converters:MathOperatorConverter x:Key="MathOperatorConverter" />
+ <converters:IsSegmentGradientConverter x:Key="IsSegmentGradientConverter" />
+ <converters:IsSegmentGradientToVisibilityConverter x:Key="IsSegmentGradientToVisibilityConverter" />
+ <converters:SegmentToBrushConverterMulti x:Key="SegmentToBrushConverterMulti" />
+ <converters:SegmentLengthToWidthConverter x:Key="SegmentLengthToWidthConverter" />
+ <converters:WidthHeightToRectConverter x:Key="WidthHeightToRectConverter" />
+ <converters:OneToPercentConverter x:Key="OneToPercentConverter" />
+ <converters:SmallerThanToBooleanConverter x:Key="SmallerThanToBooleanConverter" />
+ <converters:EnumToItemsSourceConverter x:Key="EnumToItemsSourceConverter" />
+ <converters:EnumToDescriptionConverter x:Key="EnumToDescriptionConverter" />
+ <converters:TimeSpanToTwoDigitsTimeConverter x:Key="TimeSpanToTwoDigitsTimeConverter" />
+ <converters:TimeSpanToLabelConverter x:Key="TimeSpanToLabelConverter" />
+ <converters:GreaterThanToBooleanConverter x:Key="GreaterThanToBooleanConverter" />
+ <converters:ByteArrayToFileSizeConverter x:Key="ByteArrayToFileSizeConverter" />
+ <converters:EnumToVisibilityConverter x:Key="EnumToVisibilityConverter" />
+ <converters:EnumToBooleanConverter x:Key="EnumToBooleanConverter" />
+ <converters:DateTimeUTCToStringConverter x:Key="DateTimeUTCToStringConverter" />
+ <converters:NullObjectToBooleanConverter x:Key="NullObjectToBooleanConverter" />
+ <converters:IsNullToVisibilityConverter x:Key="IsNullToVisibilityConverter" />
+ <converters:StringToLinesConverter x:Key="StringToLinesConverter" />
+ <converters:ColorToIntegerConverter x:Key="ColorToIntegerConverter" />
+ <converters:StringEllipsisConverter x:Key="StringEllipsisConverter" />
+ <converters:DateTimeUTCToShortDateTimeConverter x:Key="DateTimeUTCToShortDateTimeConverter" />
+ <converters:TimeSpanToMinutesConverter x:Key="TimeSpanToMinutesConverter" />
+ <converters:TimeSpanToSecondsConverter x:Key="TimeSpanToSecondsConverter" />
+ <converters:StringToTitleCaseConverter x:Key="StringToTitleCaseConverter" />
+ <converters:StringToOneLineConverter x:Key="StringToOneLineConverter" />
+ <converters:FilePathToFileNameConverter x:Key="FilePathToFileNameConverter" />
+ <converters:EnumToIntConverter x:Key="EnumToIntConverter" />
+ <converters:ObservableCollectionToViewSourceConverter x:Key="ObservableCollectionToViewSourceConverter" />
+ <converters:IsEqualToVisibilityConverter x:Key="IsEqualToVisibilityConverter" />
+ <converters:BooleanToYesNoConverter x:Key="BooleanToYesNoConverter" />
+ <converters:GenericMessageProtocolToStringConverter x:Key="GenericMessageProtocolToStringConverter" />
+ <converters:IsEqualConverter x:Key="IsEqualConverter" />
+ <converters:IsNotConverter x:Key="IsNotConverter" />
+</ResourceDictionary> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Resources/Fonts.xaml b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Resources/Fonts.xaml
new file mode 100644
index 000000000..b5ef75802
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Resources/Fonts.xaml
@@ -0,0 +1,14 @@
+<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:sys="clr-namespace:System;assembly=mscorlib"
+ xmlns:local="clr-namespace:Tango.StubsUtils.Service.UI.Resources">
+
+ <sys:Double x:Key="FSE_DefaultFontSize">14</sys:Double>
+ <sys:Double x:Key="FSE_SmallFontSize">12</sys:Double>
+ <sys:Double x:Key="FSE_SmallerFontSize">10</sys:Double>
+ <sys:Double x:Key="FSE_LargeFontSize">16</sys:Double>
+ <sys:Double x:Key="FSE_LargerFontSize">18</sys:Double>
+ <sys:Double x:Key="FSE_MessageBoxTitleFontSize">16</sys:Double>
+ <sys:Double x:Key="FSE_ModuleHeaderFontSize">30</sys:Double>
+
+</ResourceDictionary> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/ServiceUISettings.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/ServiceUISettings.cs
new file mode 100644
index 000000000..92f7157ca
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/ServiceUISettings.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Settings;
+
+namespace Tango.StubsUtils.Service.UI
+{
+ public class ServiceUISettings : SettingsBase
+ {
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Tango.StubsUtils.Service.UI.csproj b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Tango.StubsUtils.Service.UI.csproj
new file mode 100644
index 000000000..c4cdbab42
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Tango.StubsUtils.Service.UI.csproj
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{20AF2BAF-85CD-4437-BC6F-6BA030F984EA}</ProjectGuid>
+ <OutputType>WinExe</OutputType>
+ <RootNamespace>Tango.StubsUtils.Service.UI</RootNamespace>
+ <AssemblyName>Tango.StubsUtils.Service.UI</AssemblyName>
+ <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <WarningLevel>4</WarningLevel>
+ <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+ <Deterministic>true</Deterministic>
+ <NuGetPackageImportStamp>
+ </NuGetPackageImportStamp>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\Build\StubsUtils\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\Build\StubsUtils\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="ControlzEx, Version=3.0.2.4, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\ControlzEx.3.0.2.4\lib\net45\ControlzEx.dll</HintPath>
+ </Reference>
+ <Reference Include="Hardcodet.Wpf.TaskbarNotification, Version=1.0.5.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Hardcodet.NotifyIcon.Wpf.1.0.8\lib\net451\Hardcodet.Wpf.TaskbarNotification.dll</HintPath>
+ </Reference>
+ <Reference Include="MahApps.Metro, Version=1.6.5.1, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\MahApps.Metro.1.6.5\lib\net46\MahApps.Metro.dll</HintPath>
+ </Reference>
+ <Reference Include="MaterialDesignColors, Version=1.2.2.920, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\MaterialDesignColors.1.2.2\lib\net45\MaterialDesignColors.dll</HintPath>
+ </Reference>
+ <Reference Include="MaterialDesignThemes.Wpf, Version=3.0.1.920, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\MaterialDesignThemes.3.0.1\lib\net45\MaterialDesignThemes.Wpf.dll</HintPath>
+ </Reference>
+ <Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\ControlzEx.3.0.2.4\lib\net45\System.Windows.Interactivity.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xaml">
+ <RequiredTargetFramework>4.0</RequiredTargetFramework>
+ </Reference>
+ <Reference Include="WindowsBase" />
+ <Reference Include="PresentationCore" />
+ <Reference Include="PresentationFramework" />
+ </ItemGroup>
+ <ItemGroup>
+ <ApplicationDefinition Include="App.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </ApplicationDefinition>
+ <Compile Include="ServiceUISettings.cs" />
+ <Compile Include="ViewModels\MainViewVM.cs" />
+ <Compile Include="Views\MainView.xaml.cs">
+ <DependentUpon>MainView.xaml</DependentUpon>
+ </Compile>
+ <Page Include="MainWindow.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
+ <Compile Include="App.xaml.cs">
+ <DependentUpon>App.xaml</DependentUpon>
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="MainWindow.xaml.cs">
+ <DependentUpon>MainWindow.xaml</DependentUpon>
+ <SubType>Code</SubType>
+ </Compile>
+ <Page Include="Resources\Colors.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
+ <Page Include="Resources\Converters.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
+ <Page Include="Resources\Fonts.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
+ <Page Include="Views\MainView.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Properties\AssemblyInfo.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Properties\Resources.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Resources.resx</DependentUpon>
+ </Compile>
+ <Compile Include="Properties\Settings.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DependentUpon>Settings.settings</DependentUpon>
+ <DesignTimeSharedInput>True</DesignTimeSharedInput>
+ </Compile>
+ <EmbeddedResource Include="Properties\Resources.resx">
+ <Generator>ResXFileCodeGenerator</Generator>
+ <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+ </EmbeddedResource>
+ <None Include="packages.config" />
+ <None Include="Properties\Settings.settings">
+ <Generator>SettingsSingleFileGenerator</Generator>
+ <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\Tango.Core\Tango.Core.csproj">
+ <Project>{A34EE0F0-649D-41C8-8489-B6F1CC6924EE}</Project>
+ <Name>Tango.Core</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\Tango.Logging\Tango.Logging.csproj">
+ <Project>{bc932dbd-7cdb-488c-99e4-f02cf441f55e}</Project>
+ <Name>Tango.Logging</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\Tango.Settings\Tango.Settings.csproj">
+ <Project>{d8f1ad85-526a-4f50-b6dc-d437af63d8d8}</Project>
+ <Name>Tango.Settings</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\Tango.SharedUI\Tango.SharedUI.csproj">
+ <Project>{8491d07b-c1f6-4b62-a412-41b9fd2d6538}</Project>
+ <Name>Tango.SharedUI</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Tango.StubsUtils.Service\Tango.StubsUtils.Service.csproj">
+ <Project>{452df7f4-bfbf-45b1-9a27-d6b1888ac10b}</Project>
+ <Name>Tango.StubsUtils.Service</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Resource Include="Images\machine_icon_connected.ico" />
+ </ItemGroup>
+ <ItemGroup>
+ <Resource Include="Images\machine_icon_none.png" />
+ </ItemGroup>
+ <ItemGroup>
+ <Resource Include="Images\machine_icon_connected.png" />
+ <Resource Include="Images\machine_icon_disconnected.ico" />
+ <Resource Include="Images\machine_icon_disconnected.png" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <Import Project="..\..\packages\MaterialDesignThemes.3.0.1\build\MaterialDesignThemes.targets" Condition="Exists('..\..\packages\MaterialDesignThemes.3.0.1\build\MaterialDesignThemes.targets')" />
+ <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+ <PropertyGroup>
+ <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+ </PropertyGroup>
+ <Error Condition="!Exists('..\..\packages\MaterialDesignThemes.3.0.1\build\MaterialDesignThemes.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\MaterialDesignThemes.3.0.1\build\MaterialDesignThemes.targets'))" />
+ </Target>
+</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/ViewModels/MainViewVM.cs
new file mode 100644
index 000000000..4e8b144e5
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/ViewModels/MainViewVM.cs
@@ -0,0 +1,68 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using Tango.Core.Commands;
+using Tango.SharedUI;
+using Tango.SharedUI.Helpers;
+
+namespace Tango.StubsUtils.Service.UI.ViewModels
+{
+ public class MainViewVM : ViewModel
+ {
+ private StubsService _service;
+ public StubsService Service
+ {
+ get { return _service; }
+ set { _service = value; RaisePropertyChangedAuto(); }
+ }
+
+ private bool _isTrayIconVisible;
+ public bool IsTrayIconVisible
+ {
+ get { return _isTrayIconVisible; }
+ set { _isTrayIconVisible = value; RaisePropertyChangedAuto(); }
+ }
+
+
+ public RelayCommand ExitCommand { get; set; }
+ public RelayCommand OpenCommand { get; set; }
+
+ public MainViewVM()
+ {
+ Init();
+ ExitCommand = new RelayCommand(ExitApplication);
+ OpenCommand = new RelayCommand(OpenMainWindow);
+ IsTrayIconVisible = true;
+ }
+
+ public async void Init()
+ {
+ Service = new StubsService();
+ await Service.Start();
+
+ await Task.Delay(10000);
+ await Service.Connect();
+ }
+
+ private async void OpenMainWindow()
+ {
+ Application.Current.MainWindow.Visibility = Visibility.Visible;
+ await Task.Delay(200);
+ Application.Current.MainWindow.WindowState = WindowState.Normal;
+ Application.Current.MainWindow.Focus();
+ Application.Current.MainWindow.Activate();
+ IsTrayIconVisible = false;
+ }
+
+ public async void ExitApplication()
+ {
+ IsTrayIconVisible = false;
+ UIHelper.DoEvents();
+ await Task.Delay(1000);
+ Environment.Exit(0);
+ }
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Views/MainView.xaml b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Views/MainView.xaml
new file mode 100644
index 000000000..eb2c24e44
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Views/MainView.xaml
@@ -0,0 +1,144 @@
+<UserControl x:Class="Tango.StubsUtils.Service.UI.Views.MainView"
+ 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:tb="http://www.hardcodet.net/taskbar"
+ xmlns:material="http://materialdesigninxaml.net/winfx/xaml/themes"
+ xmlns:local="clr-namespace:Tango.StubsUtils.Service.UI.Views"
+ xmlns:vm="clr-namespace:Tango.StubsUtils.Service.UI.ViewModels"
+ mc:Ignorable="d"
+ d:DesignHeight="450" d:DesignWidth="800" Background="{StaticResource FSE_PrimaryBackgroundBrush}" d:DataContext="{d:DesignInstance Type=vm:MainViewVM,IsDesignTimeCreatable=False}">
+
+ <UserControl.Resources>
+ <RadialGradientBrush x:Key="FSE_LED_GrayBrush">
+ <GradientStop Offset="0" Color="Gray" />
+ <GradientStop Offset="1" Color="#4E4E4E" />
+ </RadialGradientBrush>
+ <RadialGradientBrush x:Key="FSE_LED_GreenBrush">
+ <GradientStop Offset="0" Color="#4DFC1E" />
+ <GradientStop Offset="1" Color="#096D07" />
+ </RadialGradientBrush>
+ <RadialGradientBrush x:Key="FSE_LED_RedBrush">
+ <GradientStop Offset="0" Color="#FA6565" />
+ <GradientStop Offset="1" Color="#A32323" />
+ </RadialGradientBrush>
+ </UserControl.Resources>
+
+ <Grid>
+ <tb:TaskbarIcon x:Name="taskIcon" x:FieldModifier="public"
+ Visibility="{Binding IsTrayIconVisible,Converter={StaticResource BooleanToVisibilityConverter}}"
+ ToolTipText="Tango Stubs Service"
+ MenuActivation="RightClick"
+ PopupActivation="DoubleClick">
+
+ <tb:TaskbarIcon.Style>
+ <Style TargetType="tb:TaskbarIcon">
+ <Setter Property="IconSource" Value="/Images/machine_icon_disconnected.ico"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding Service.IsConnected}" Value="True">
+ <Setter Property="IconSource" Value="/Images/machine_icon_connected.ico"></Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </tb:TaskbarIcon.Style>
+ <tb:TaskbarIcon.TrayToolTip>
+ <Border Background="{StaticResource FSE_PrimaryBackgroundBrush}" BorderThickness="1" BorderBrush="{StaticResource FSE_PrimaryBackgroundLightBrush}" CornerRadius="5" Padding="20 10">
+ <StackPanel TextElement.Foreground="{StaticResource FSE_PrimaryForegroundBrush}">
+ <DockPanel>
+ <Image VerticalAlignment="Top" Source="/Images/machine_icon_none.png" Stretch="None" />
+
+ <StackPanel Margin="10 0 0 0" VerticalAlignment="Top">
+ <TextBlock FontSize="{StaticResource FSE_LargeFontSize}">Tango Stubs Service</TextBlock>
+ <DockPanel Margin="0 5 0 0">
+ <Ellipse Width="12" Height="12" Stroke="#353535">
+ <Ellipse.Style>
+ <Style TargetType="Ellipse">
+ <Setter Property="Fill" Value="{StaticResource FSE_LED_RedBrush}"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding Service.IsConnected}" Value="True">
+ <Setter Property="Fill" Value="{StaticResource FSE_LED_GreenBrush}"></Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </Ellipse.Style>
+ </Ellipse>
+ <TextBlock Margin="5 0 0 0" FontWeight="SemiBold">
+ <TextBlock.Style>
+ <Style TargetType="TextBlock">
+ <Setter Property="Text" Value="Disconnected"></Setter>
+ <Setter Property="Foreground" Value="{StaticResource FSE_RedBrush}"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding Service.IsConnected}" Value="True">
+ <Setter Property="Text" Value="Connected"></Setter>
+ <Setter Property="Foreground" Value="{StaticResource FSE_GreenBrush}"></Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </TextBlock.Style>
+ </TextBlock>
+ </DockPanel>
+ </StackPanel>
+ </DockPanel>
+ </StackPanel>
+ </Border>
+ </tb:TaskbarIcon.TrayToolTip>
+ <tb:TaskbarIcon.ContextMenu>
+ <ContextMenu>
+ <MenuItem Height="120" IsEnabled="False" Opacity="1" VerticalContentAlignment="Top" HorizontalContentAlignment="Left">
+ <MenuItem.Header>
+ <StackPanel Margin="-40 -10 0 40" HorizontalAlignment="Left" VerticalAlignment="Top" TextElement.Foreground="{StaticResource FSE_PrimaryForegroundBrush}">
+ <DockPanel>
+ <Image VerticalAlignment="Top" Source="/Images/machine_icon_none.png" Stretch="None" />
+
+ <StackPanel Margin="10 0 0 0" VerticalAlignment="Top">
+ <TextBlock FontSize="{StaticResource FSE_LargeFontSize}">Tango Stubs Service</TextBlock>
+ <DockPanel Margin="0 5 0 0">
+ <Ellipse Width="12" Height="12" Stroke="#353535">
+ <Ellipse.Style>
+ <Style TargetType="Ellipse">
+ <Setter Property="Fill" Value="{StaticResource FSE_LED_RedBrush}"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding Service.IsConnected}" Value="True">
+ <Setter Property="Fill" Value="{StaticResource FSE_LED_GreenBrush}"></Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </Ellipse.Style>
+ </Ellipse>
+ <TextBlock Margin="5 0 0 0" FontWeight="SemiBold">
+ <TextBlock.Style>
+ <Style TargetType="TextBlock">
+ <Setter Property="Text" Value="Disconnected"></Setter>
+ <Setter Property="Foreground" Value="{StaticResource FSE_RedBrush}"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding Service.IsConnected}" Value="True">
+ <Setter Property="Text" Value="Connected"></Setter>
+ <Setter Property="Foreground" Value="{StaticResource FSE_GreenBrush}"></Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </TextBlock.Style>
+ </TextBlock>
+ </DockPanel>
+ </StackPanel>
+ </DockPanel>
+ </StackPanel>
+ </MenuItem.Header>
+ </MenuItem>
+
+ <MenuItem Header="Open" Command="{Binding OpenCommand}">
+ <MenuItem.Icon>
+ <material:PackIcon Kind="OpenInApp" />
+ </MenuItem.Icon>
+ </MenuItem>
+ <MenuItem Header="Exit" Command="{Binding ExitCommand}">
+ <MenuItem.Icon>
+ <material:PackIcon Kind="PowerOff" />
+ </MenuItem.Icon>
+ </MenuItem>
+ </ContextMenu>
+ </tb:TaskbarIcon.ContextMenu>
+ </tb:TaskbarIcon>
+ </Grid>
+</UserControl>
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Views/MainView.xaml.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Views/MainView.xaml.cs
new file mode 100644
index 000000000..1c51be6d4
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/Views/MainView.xaml.cs
@@ -0,0 +1,30 @@
+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;
+using Tango.StubsUtils.Service.UI.ViewModels;
+
+namespace Tango.StubsUtils.Service.UI.Views
+{
+ /// <summary>
+ /// Interaction logic for MainView.xaml
+ /// </summary>
+ public partial class MainView : UserControl
+ {
+ public MainView()
+ {
+ InitializeComponent();
+ DataContext = new MainViewVM();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/packages.config b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/packages.config
new file mode 100644
index 000000000..96b22d216
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service.UI/packages.config
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="ControlzEx" version="3.0.2.4" targetFramework="net461" />
+ <package id="Hardcodet.NotifyIcon.Wpf" version="1.0.8" targetFramework="net461" />
+ <package id="MahApps.Metro" version="1.6.5" targetFramework="net461" />
+ <package id="MaterialDesignColors" version="1.2.2" targetFramework="net461" />
+ <package id="MaterialDesignThemes" version="3.0.1" targetFramework="net461" />
+ <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net461" />
+</packages> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Properties/AssemblyInfo.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..c0a90674c
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Tango.StubsUtils.Service")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Tango.StubsUtils.Service")]
+[assembly: AssemblyCopyright("Copyright © 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("452df7f4-bfbf-45b1-9a27-d6b1888ac10b")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubReflection.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubReflection.cs
new file mode 100644
index 000000000..2b0f237ea
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubReflection.cs
@@ -0,0 +1,49 @@
+using FastMember;
+using Google.Protobuf;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.PMR;
+using Tango.PMR.Common;
+
+namespace Tango.StubsUtils.Service
+{
+ public class StubReflection
+ {
+ public Type Type { get; set; }
+ public MessageType MessageType { get; set; }
+ public List<PropertyInfo> Properties { get; set; }
+ public TypeAccessor Accesor { get; set; }
+ public MessageParser Parser { get; set; }
+
+ public StubReflection()
+ {
+ Properties = new List<PropertyInfo>();
+ }
+
+ public static StubReflection FromStubName(String stubName, List<Type> stubTypes)
+ {
+ StubReflection reflection = new StubReflection();
+
+ var stubType = stubTypes.SingleOrDefault(x => x.Name.ToLower() == stubName.ToLower() || x.Name.Replace("Request", "").ToLower() == stubName.ToLower());
+
+ if (stubType == null)
+ {
+ throw new InvalidOperationException($"Invalid stub name '{stubName}'.");
+ }
+
+ reflection.Type = stubType;
+ reflection.MessageType = MessageFactory.ParseMessageType(reflection.Type.Name);
+ reflection.Properties = stubType.GetProperties(BindingFlags.Public | BindingFlags.Instance).ToList();
+ reflection.Accesor = TypeAccessor.Create(stubType);
+
+ var instance = Activator.CreateInstance(stubType);
+ reflection.Parser = stubType.GetProperty("Parser").GetValue(instance) as MessageParser;
+
+ return reflection;
+ }
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsService.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsService.cs
new file mode 100644
index 000000000..05b2d518c
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsService.cs
@@ -0,0 +1,334 @@
+using Google.Protobuf;
+using Newtonsoft.Json;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.IO.Pipes;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.Serialization.Formatters.Binary;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using Tango.Core;
+using Tango.Core.ExtensionMethods;
+using Tango.Logging;
+using Tango.PMR;
+using Tango.PMR.Common;
+using Tango.Settings;
+using Tango.StubsUtils.Shared;
+using Tango.Transport;
+using Tango.Transport.Adapters;
+using Tango.Transport.Transporters;
+
+namespace Tango.StubsUtils.Service
+{
+ public class StubsService : ExtendedObject
+ {
+ private const string PIPE_NAME = "Tango_Stubs_Server";
+ private NamedPipeServerStream _server;
+ private StreamReader _reader;
+ private StreamWriter _writer;
+ private BinaryFormatter _formatter;
+ private StubsServiceSettings _settings;
+ private bool _initialized;
+ private List<Type> _stubsTypes;
+ private Dictionary<String, StubReflection> _stubsLookup;
+ private Thread _communicationThread;
+
+ #region Properties
+
+ private ITransporter _transporter;
+ public ITransporter Transporter
+ {
+ get { return _transporter; }
+ private set { _transporter = value; RaisePropertyChangedAuto(); }
+ }
+
+ private bool _isStarted;
+ public bool IsStarted
+ {
+ get { return _isStarted; }
+ private set { _isStarted = value; RaisePropertyChangedAuto(); }
+ }
+
+ private bool _isConnected;
+ public bool IsConnected
+ {
+ get { return _isConnected; }
+ set { _isConnected = value; RaisePropertyChangedAuto(); }
+ }
+
+ private bool _enableLogs;
+ public bool EnableLogs
+ {
+ get { return _enableLogs; }
+ set { _enableLogs = value; RaisePropertyChangedAuto(); }
+ }
+
+ #endregion
+
+ #region Constructors
+
+ public StubsService()
+ {
+ _settings = SettingsManager.Default.GetOrCreate<StubsServiceSettings>();
+ _settings.Save();
+ }
+
+ #endregion
+
+ #region Start/Stop
+
+ private void Initialize()
+ {
+ if (!_initialized)
+ {
+ _stubsTypes = new List<Type>();
+ _stubsLookup = new Dictionary<string, StubReflection>();
+
+ foreach (var type in typeof(MessageFactory).Assembly.GetTypes().Where(x => x.Namespace != null && x.Namespace.Contains("Stubs") && (x.Name.Contains("Request") || x.Name.Contains("Response")) && !x.Name.Contains("Reflection")).ToList())
+ {
+ _stubsTypes.Add(type);
+ }
+
+ _server = new NamedPipeServerStream(PIPE_NAME);
+ _reader = new StreamReader(_server);
+ _writer = new StreamWriter(_server);
+ _formatter = new BinaryFormatter();
+ _communicationThread = new Thread(CommunicationMethod);
+ _communicationThread.IsBackground = true;
+ _communicationThread.Start();
+
+ _initialized = true;
+ }
+ }
+
+ public Task Start()
+ {
+ return Task.Factory.StartNew(() =>
+ {
+ if (!IsStarted)
+ {
+ try
+ {
+ LogManager.Log("Starting stubs service...");
+ IsStarted = true;
+ Initialize();
+ LogManager.Log("Starting IPC service...");
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error starting stubs service.");
+ }
+ }
+ });
+ }
+
+ public Task Stop()
+ {
+ return Task.Factory.StartNew(() =>
+ {
+ if (IsStarted)
+ {
+ IsStarted = false;
+ }
+ });
+ }
+
+ #endregion
+
+ #region Connect/Disconnect
+
+ public async Task Connect()
+ {
+ if (!IsStarted) throw new InvalidOperationException("Cannot connect the transporter before the service has started.");
+
+ if (!IsConnected)
+ {
+ Transporter = new BasicTransporter(new UsbTransportAdapter(_settings.USBPort));
+ Transporter.UseKeepAlive = false;
+ await Transporter.Connect();
+ IsConnected = true;
+ }
+ }
+
+ public async Task Disconnect()
+ {
+ if (IsConnected)
+ {
+ await Transporter.Disconnect();
+ }
+ }
+
+ #endregion
+
+ #region Communication
+
+ private void CommunicationMethod()
+ {
+ while (IsStarted)
+ {
+ try
+ {
+ _server.WaitForConnection();
+ var request = _reader.ReadLine();
+
+ if (EnableLogs) LogManager.Log($"Stub package received: '{request}'...");
+
+ var package = new StubPackageRequestDTO();
+ package.Arguments = request.Split(' ');
+
+ if (EnableLogs) LogManager.Log($"Stub package constructed: '{package.ToJsonString()}'...");
+
+ var response = ProcessStubPackage(package);
+
+ if (EnableLogs) LogManager.Log($"Stub package response: '{response.ToJsonString()}'...");
+
+ _writer.Write(response.ToString());
+ _writer.Flush();
+ }
+ catch (Exception ex)
+ {
+ if (EnableLogs) LogManager.Log(ex, "Error processing stub package.");
+
+ try
+ {
+ var response = new StubPackageResponseDTO()
+ {
+ Status = StubPackageResponseStatus.Error,
+ Message = $"Error processing stub package\n{ex.FlattenMessage()}"
+ };
+
+ _writer.WriteLine(response.ToString());
+ _writer.Flush();
+ _server.Disconnect();
+ }
+ catch { }
+ }
+ finally
+ {
+ _server.Disconnect();
+ }
+ }
+ }
+
+ #endregion
+
+ #region Process Package
+
+ private StubPackageResponseDTO ProcessStubPackage(StubPackageRequestDTO package)
+ {
+ StubPackageResponseDTO response = new StubPackageResponseDTO();
+
+ if (Transporter == null || Transporter.State != TransportComponentState.Connected)
+ {
+ response.Status = StubPackageResponseStatus.NoConnection;
+ response.Message = "Machine is disconnected.";
+ return response;
+ }
+
+ try
+ {
+ if (EnableLogs) LogManager.Log("Processing package...");
+
+ String stubName = package.Arguments[0];
+ List<String> arguments = package.Arguments.Skip(1).ToList();
+
+ StubReflection stubReflection = GetStubReflection(stubName);
+
+ MessageContainer requestContainer = new MessageContainer();
+ requestContainer.Token = Guid.NewGuid().ToString();
+ requestContainer.Type = stubReflection.MessageType;
+
+ IMessage request = Activator.CreateInstance(stubReflection.Type) as IMessage;
+
+ for (int i = 0; i < arguments.Count; i++)
+ {
+ String argument = arguments[i];
+
+ if (i >= stubReflection.Properties.Count)
+ {
+ throw new ArgumentOutOfRangeException($"Argument '{argument}' index is out of range for stub '{stubReflection.Type.Name}'.");
+ }
+
+ PropertyInfo prop = stubReflection.Properties[i];
+
+ if (prop.PropertyType == typeof(UInt32))
+ {
+ prop.SetValue(request, UInt32.Parse(argument));
+ }
+ else if (prop.PropertyType == typeof(bool))
+ {
+ prop.SetValue(request, bool.Parse(argument));
+ }
+ else if (typeof(IList).IsAssignableFrom(prop.PropertyType))
+ {
+ IList arr = prop.GetValue(request) as IList;
+ foreach (var item in argument.Split(','))
+ {
+ object converted = Convert.ChangeType(item, prop.PropertyType.GetGenericArguments()[0]);
+ arr.Add(converted);
+ }
+ }
+ else
+ {
+ object converted = Convert.ChangeType(argument, prop.PropertyType);
+ prop.SetValue(request, converted);
+ }
+ }
+
+ if (EnableLogs) LogManager.Log($"Request stub constructed:\n{request.ToJsonString()}");
+
+ requestContainer.Data = request.ToByteString();
+ var responseContainer = Transporter.SendRequest(requestContainer, new TransportRequestConfig() { ThreadingMode = TransportThreadingMode.ThreadPool }).Result;
+
+ var stubResponseReflection = GetStubReflection(responseContainer.Type.ToOriginalName());
+ IMessage stubResponse = stubResponseReflection.Parser.ParseFrom(responseContainer.Data);
+
+ String responseMessage = String.Empty;
+
+ foreach (var prop in stubResponseReflection.Properties)
+ {
+ responseMessage += $"{prop.Name}: {prop.GetValue(stubResponse).ToStringSafe()}\n";
+ }
+
+ if (EnableLogs)
+ {
+ String responseJson = stubResponse.ToJsonString();
+ LogManager.Log($"Response:\n{stubResponse}");
+ }
+
+ response.Status = StubPackageResponseStatus.OK;
+ response.Message = responseMessage;
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error processing stub package.");
+ response.Status = StubPackageResponseStatus.Error;
+ response.Message = ex.FlattenMessage();
+ }
+
+ return response;
+ }
+
+ #endregion
+
+ #region Helper Methods
+
+ private StubReflection GetStubReflection(String stubName)
+ {
+ if (_stubsLookup.ContainsKey(stubName))
+ {
+ return _stubsLookup[stubName];
+ }
+
+ var stubReflection = StubReflection.FromStubName(stubName, _stubsTypes);
+ _stubsLookup[stubName] = stubReflection;
+ return stubReflection;
+ }
+
+ #endregion
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsServiceSettings.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsServiceSettings.cs
new file mode 100644
index 000000000..8741065cf
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/StubsServiceSettings.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Settings;
+
+namespace Tango.StubsUtils.Service
+{
+ public class StubsServiceSettings : SettingsBase
+ {
+ public String USBPort { get; set; }
+
+ public StubsServiceSettings()
+ {
+ USBPort = "COM1";
+ }
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Tango.StubsUtils.Service.csproj b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Tango.StubsUtils.Service.csproj
new file mode 100644
index 000000000..40ec9d29f
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/Tango.StubsUtils.Service.csproj
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Tango.StubsUtils.Service</RootNamespace>
+ <AssemblyName>Tango.StubsUtils.Service</AssemblyName>
+ <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <Deterministic>true</Deterministic>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\Build\StubsUtils\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\Build\StubsUtils\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="FastMember, Version=1.5.0.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\FastMember.1.5.0\lib\net461\FastMember.dll</HintPath>
+ </Reference>
+ <Reference Include="Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Google.Protobuf.3.4.1\lib\net45\Google.Protobuf.dll</HintPath>
+ </Reference>
+ <Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="StubReflection.cs" />
+ <Compile Include="StubsService.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="StubsServiceSettings.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\Tango.Core\Tango.Core.csproj">
+ <Project>{a34ee0f0-649d-41c8-8489-b6f1cc6924ee}</Project>
+ <Name>Tango.Core</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\Tango.Logging\Tango.Logging.csproj">
+ <Project>{bc932dbd-7cdb-488c-99e4-f02cf441f55e}</Project>
+ <Name>Tango.Logging</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\Tango.PMR\Tango.PMR.csproj">
+ <Project>{e4927038-348d-4295-aaf4-861c58cb3943}</Project>
+ <Name>Tango.PMR</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\Tango.Settings\Tango.Settings.csproj">
+ <Project>{d8f1ad85-526a-4f50-b6dc-d437af63d8d8}</Project>
+ <Name>Tango.Settings</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\Tango.Transport\Tango.Transport.csproj">
+ <Project>{74e700b0-1156-4126-be40-ee450d3c3026}</Project>
+ <Name>Tango.Transport</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Tango.StubsUtils.Shared\Tango.StubsUtils.Shared.csproj">
+ <Project>{dae96f06-72cd-411d-90a3-9456ae79f699}</Project>
+ <Name>Tango.StubsUtils.Shared</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="app.config" />
+ <None Include="packages.config" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/app.config b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/app.config
new file mode 100644
index 000000000..f63670818
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/app.config
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-5.0.5.0" newVersion="5.0.5.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Reactive.Core" publicKeyToken="94bc3704cddfc263" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-3.0.3000.0" newVersion="3.0.3000.0" />
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
+</configuration> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/packages.config b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/packages.config
new file mode 100644
index 000000000..52834fea3
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Service/packages.config
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="FastMember" version="1.5.0" targetFramework="net461" />
+ <package id="Google.Protobuf" version="3.4.1" targetFramework="net461" />
+ <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net461" />
+</packages> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/App.config b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/App.config
new file mode 100644
index 000000000..731f6de6c
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/App.config
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
+ </startup>
+</configuration> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Program.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Program.cs
new file mode 100644
index 000000000..b72e15236
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Program.cs
@@ -0,0 +1,79 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.IO.Pipes;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.StubsUtils.Shared;
+
+namespace Tango.StubsUtils.SessionClient.CLI
+{
+ class Program
+ {
+ private const string PIPE_NAME = "Tango_Stubs_Server";
+
+ static void Main(string[] args)
+ {
+ String line = String.Empty;
+
+ Console.WriteLine("Tango Stub Session Client v1.0");
+
+ while (true)
+ {
+ Console.Write("> ");
+ line = Console.ReadLine();
+
+ if (line.ToLower() == "exit")
+ {
+ Environment.Exit(0);
+ }
+
+ args = line.Split(' ');
+
+ StubPackageResponseDTO response = null;
+
+ try
+ {
+ var _client = new NamedPipeClientStream(PIPE_NAME);
+ _client.Connect(5000);
+
+ var writer = new StreamWriter(_client);
+
+ var jsonRequest = String.Join(" ", args);
+
+ writer.WriteLine(jsonRequest);
+ writer.Flush();
+
+ var reader = new StreamReader(_client);
+ String responseString = reader.ReadToEnd();
+ response = new StubPackageResponseDTO();
+ response.Status = responseString.StartsWith("Status: OK") ? StubPackageResponseStatus.OK : StubPackageResponseStatus.Error;
+ response.Message = responseString;
+ }
+ catch (Exception ex)
+ {
+ OnError($"Error communicating with the stubs service. {ex.Message}");
+ }
+
+ if (response.Status == StubPackageResponseStatus.OK)
+ {
+ Console.ForegroundColor = ConsoleColor.Gray;
+ Console.WriteLine(response.Message);
+ }
+ else
+ {
+ OnError(response.Message);
+ }
+ }
+ }
+
+ private static void OnError(String error)
+ {
+ Console.ForegroundColor = ConsoleColor.Red;
+ Console.WriteLine($"{error}");
+ Console.ForegroundColor = ConsoleColor.Gray;
+ }
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..14f843bcf
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Tango.StubsUtils.SessionClient.CLI")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Tango.StubsUtils.SessionClient.CLI")]
+[assembly: AssemblyCopyright("Copyright © 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("f1b727f5-adf5-4a81-a740-7e64e48b29d4")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Tango.StubsUtils.SessionClient.CLI.csproj b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Tango.StubsUtils.SessionClient.CLI.csproj
new file mode 100644
index 000000000..6ccf31b7b
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.SessionClient.CLI/Tango.StubsUtils.SessionClient.CLI.csproj
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{F1B727F5-ADF5-4A81-A740-7E64E48B29D4}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <RootNamespace>Tango.StubsUtils.SessionClient.CLI</RootNamespace>
+ <AssemblyName>tangostub_s</AssemblyName>
+ <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+ <Deterministic>true</Deterministic>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\Build\StubsUtils\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\Build\StubsUtils\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Tango.StubsUtils.Shared\Tango.StubsUtils.Shared.csproj">
+ <Project>{dae96f06-72cd-411d-90a3-9456ae79f699}</Project>
+ <Name>Tango.StubsUtils.Shared</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/Properties/AssemblyInfo.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..aad82fef6
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Tango.StubsUtils.Shared")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Tango.StubsUtils.Shared")]
+[assembly: AssemblyCopyright("Copyright © 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("dae96f06-72cd-411d-90a3-9456ae79f699")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/StubPackageRequestDTO.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/StubPackageRequestDTO.cs
new file mode 100644
index 000000000..625fe931b
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/StubPackageRequestDTO.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.StubsUtils.Shared
+{
+ [Serializable]
+ public class StubPackageRequestDTO
+ {
+ public string[] Arguments { get; set; }
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/StubPackageResponseDTO.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/StubPackageResponseDTO.cs
new file mode 100644
index 000000000..b020c4f84
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/StubPackageResponseDTO.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.StubsUtils.Shared
+{
+ [Serializable]
+ public class StubPackageResponseDTO
+ {
+ public StubPackageResponseStatus Status { get; set; }
+ public String Message { get; set; }
+
+ public override string ToString()
+ {
+ return $"Status: {Status}\n{Message}";
+ }
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/StubPackageResponseStatus.cs b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/StubPackageResponseStatus.cs
new file mode 100644
index 000000000..4edd47d6c
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/StubPackageResponseStatus.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.StubsUtils.Shared
+{
+ [Serializable]
+ public enum StubPackageResponseStatus
+ {
+ OK,
+ Error,
+ NoConnection
+ }
+}
diff --git a/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/Tango.StubsUtils.Shared.csproj b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/Tango.StubsUtils.Shared.csproj
new file mode 100644
index 000000000..a7b58f6ea
--- /dev/null
+++ b/Software/Visual_Studio/StubsUtils/Tango.StubsUtils.Shared/Tango.StubsUtils.Shared.csproj
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{DAE96F06-72CD-411D-90A3-9456AE79F699}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Tango.StubsUtils.Shared</RootNamespace>
+ <AssemblyName>Tango.StubsUtils.Shared</AssemblyName>
+ <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <Deterministic>true</Deterministic>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\Build\StubsUtils\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\Build\StubsUtils\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="StubPackageRequestDTO.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="StubPackageResponseDTO.cs" />
+ <Compile Include="StubPackageResponseStatus.cs" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.BL/Tango.BL.csproj b/Software/Visual_Studio/Tango.BL/Tango.BL.csproj
index 4da8606f7..dc817af6e 100644
--- a/Software/Visual_Studio/Tango.BL/Tango.BL.csproj
+++ b/Software/Visual_Studio/Tango.BL/Tango.BL.csproj
@@ -84,14 +84,14 @@
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
- <Reference Include="Z.EntityFramework.Extensions, Version=4.0.50.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
- <HintPath>..\packages\Z.EntityFramework.Extensions.4.0.50\lib\net45\Z.EntityFramework.Extensions.dll</HintPath>
+ <Reference Include="Z.EntityFramework.Extensions, Version=5.1.6.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
+ <HintPath>..\packages\Z.EntityFramework.Extensions.5.1.6\lib\net45\Z.EntityFramework.Extensions.dll</HintPath>
</Reference>
- <Reference Include="Z.EntityFramework.Plus.EF6, Version=1.12.13.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
- <HintPath>..\packages\Z.EntityFramework.Plus.EF6.1.12.13\lib\net45\Z.EntityFramework.Plus.EF6.dll</HintPath>
+ <Reference Include="Z.EntityFramework.Plus.EF6, Version=5.1.6.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
+ <HintPath>..\packages\Z.EntityFramework.Plus.EF6.5.1.6\lib\net45\Z.EntityFramework.Plus.EF6.dll</HintPath>
</Reference>
- <Reference Include="Z.Expressions.Eval, Version=3.1.5.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
- <HintPath>..\packages\Z.Expressions.Eval.3.1.5\lib\net45\Z.Expressions.Eval.dll</HintPath>
+ <Reference Include="Z.Expressions.Eval, Version=4.0.27.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
+ <HintPath>..\packages\Z.Expressions.Eval.4.0.27\lib\net45\Z.Expressions.Eval.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
@@ -645,7 +645,7 @@
</Target>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
+ <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.BL/packages.config b/Software/Visual_Studio/Tango.BL/packages.config
index d928d5575..81001d8fe 100644
--- a/Software/Visual_Studio/Tango.BL/packages.config
+++ b/Software/Visual_Studio/Tango.BL/packages.config
@@ -10,7 +10,7 @@
<package id="System.Data.SQLite.Core" version="1.0.108.0" targetFramework="net46" />
<package id="System.Data.SQLite.EF6" version="1.0.108.0" targetFramework="net46" />
<package id="System.Data.SQLite.Linq" version="1.0.108.0" targetFramework="net46" />
- <package id="Z.EntityFramework.Extensions" version="4.0.50" targetFramework="net461" />
- <package id="Z.EntityFramework.Plus.EF6" version="1.12.13" targetFramework="net461" />
- <package id="Z.Expressions.Eval" version="3.1.5" targetFramework="net461" />
+ <package id="Z.EntityFramework.Extensions" version="5.1.6" targetFramework="net461" />
+ <package id="Z.EntityFramework.Plus.EF6" version="5.1.6" targetFramework="net461" />
+ <package id="Z.Expressions.Eval" version="4.0.27" targetFramework="net461" />
</packages> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
index 9cdf6dcae..6360b7bbc 100644
--- a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
+++ b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
@@ -1009,6 +1009,24 @@ namespace Tango.Emulations.Emulators
Transporter.SendResponse<MotorHomingResponse>(new MotorHomingResponse() { MaxProgress = 100, Progress = 100 }, request.Container.Token, new TransportResponseConfig() { Completed = true });
_motorHomingRequestCodes.Remove(homeRequest.MotorType);
ResetGraphFactors();
+
+ if (request.Message.MotorType == PMR.Hardware.HardwareMotorType.MotoDhLid)
+ {
+ if (request.Message.Direction == MotorDirection.Backward)
+ {
+ var eventState1 = EventsStates.FirstOrDefault(x => x.EventType == PMR.Diagnostics.EventType.DyeingHeadArcLidIsOpen);
+ var eventState2 = EventsStates.FirstOrDefault(x => x.EventType == PMR.Diagnostics.EventType.DyeingHeadCoverIsOpen);
+ eventState1.IsActive = true;
+ eventState2.IsActive = true;
+ }
+ else
+ {
+ var eventState1 = EventsStates.FirstOrDefault(x => x.EventType == PMR.Diagnostics.EventType.DyeingHeadArcLidIsOpen);
+ var eventState2 = EventsStates.FirstOrDefault(x => x.EventType == PMR.Diagnostics.EventType.DyeingHeadCoverIsOpen);
+ eventState1.IsActive = false;
+ eventState2.IsActive = false;
+ }
+ }
});
}
diff --git a/Software/Visual_Studio/Tango.SharedUI/Converters/IsToStringEqualToVisibilityConverter.cs b/Software/Visual_Studio/Tango.SharedUI/Converters/IsToStringEqualToVisibilityConverter.cs
new file mode 100644
index 000000000..478b21c09
--- /dev/null
+++ b/Software/Visual_Studio/Tango.SharedUI/Converters/IsToStringEqualToVisibilityConverter.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Data;
+
+namespace Tango.SharedUI.Converters
+{
+ public class IsToStringEqualToVisibilityConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ return value.ToStringSafe().Equals(parameter.ToStringSafe());
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/Tango.SharedUI/Tango.SharedUI.csproj b/Software/Visual_Studio/Tango.SharedUI/Tango.SharedUI.csproj
index 49f1b8e7d..e4dc72746 100644
--- a/Software/Visual_Studio/Tango.SharedUI/Tango.SharedUI.csproj
+++ b/Software/Visual_Studio/Tango.SharedUI/Tango.SharedUI.csproj
@@ -121,6 +121,7 @@
<Compile Include="Converters\IsNullToVisibilityConverter.cs" />
<Compile Include="Converters\IsSegmentGradientConverter.cs" />
<Compile Include="Converters\IsSegmentGradientToVisibilityConverter.cs" />
+ <Compile Include="Converters\IsToStringEqualToVisibilityConverter.cs" />
<Compile Include="Converters\LastItemInContainerToBooleanConverter.cs" />
<Compile Include="Converters\MathOperatorConverter.cs" />
<Compile Include="Converters\NumberToFileSizeConverter.cs" />
@@ -260,7 +261,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.sln b/Software/Visual_Studio/Tango.sln
index c9ca85279..96e3aa775 100644
--- a/Software/Visual_Studio/Tango.sln
+++ b/Software/Visual_Studio/Tango.sln
@@ -441,6 +441,20 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.PPC.DataSynchronizer.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.PasswordHashUtil.CLI", "Utilities\Tango.PasswordHashUtil.CLI\Tango.PasswordHashUtil.CLI.csproj", "{F1DC98EF-C50A-4E84-9A39-211A68626FBA}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "StubsUtils", "StubsUtils", "{4A8BD6EC-41CF-46A9-B2CD-9D0DF6465963}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.StubsUtils.Service.UI", "StubsUtils\Tango.StubsUtils.Service.UI\Tango.StubsUtils.Service.UI.csproj", "{20AF2BAF-85CD-4437-BC6F-6BA030F984EA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.StubsUtils.Client.CLI", "StubsUtils\Tango.StubsUtils.Client.CLI\Tango.StubsUtils.Client.CLI.csproj", "{2ED5D897-DF22-491E-8410-D01383B3DAD2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.StubsUtils.Service", "StubsUtils\Tango.StubsUtils.Service\Tango.StubsUtils.Service.csproj", "{452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.StubsUtils.Shared", "StubsUtils\Tango.StubsUtils.Shared\Tango.StubsUtils.Shared.csproj", "{DAE96F06-72CD-411D-90A3-9456AE79F699}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.StubsUtils.PerformanceTest.CLI", "StubsUtils\Tango.StubsUtils.PerformanceTest.CLI\Tango.StubsUtils.PerformanceTest.CLI.csproj", "{F423324C-7D0A-4512-BEBA-DF3A931A09F6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.StubsUtils.SessionClient.CLI", "StubsUtils\Tango.StubsUtils.SessionClient.CLI\Tango.StubsUtils.SessionClient.CLI.csproj", "{F1B727F5-ADF5-4A81-A740-7E64E48B29D4}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -2938,6 +2952,7 @@ Global
{50119E79-5012-4B36-8438-953DD5FC06E6}.Release|x86.ActiveCfg = Release|Any CPU
{50119E79-5012-4B36-8438-953DD5FC06E6}.Release|x86.Build.0 = Release|Any CPU
{CF4C66B0-CD13-4D31-8133-339A01E7E6F2}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {CF4C66B0-CD13-4D31-8133-339A01E7E6F2}.Debug|Any CPU.Build.0 = Debug|Win32
{CF4C66B0-CD13-4D31-8133-339A01E7E6F2}.Debug|ARM.ActiveCfg = Debug|Win32
{CF4C66B0-CD13-4D31-8133-339A01E7E6F2}.Debug|ARM64.ActiveCfg = Debug|Win32
{CF4C66B0-CD13-4D31-8133-339A01E7E6F2}.Debug|x64.ActiveCfg = Debug|x64
@@ -2945,6 +2960,7 @@ Global
{CF4C66B0-CD13-4D31-8133-339A01E7E6F2}.Debug|x86.ActiveCfg = Debug|Win32
{CF4C66B0-CD13-4D31-8133-339A01E7E6F2}.Debug|x86.Build.0 = Debug|Win32
{CF4C66B0-CD13-4D31-8133-339A01E7E6F2}.Release|Any CPU.ActiveCfg = Debug|Win32
+ {CF4C66B0-CD13-4D31-8133-339A01E7E6F2}.Release|Any CPU.Build.0 = Debug|Win32
{CF4C66B0-CD13-4D31-8133-339A01E7E6F2}.Release|ARM.ActiveCfg = Release|Win32
{CF4C66B0-CD13-4D31-8133-339A01E7E6F2}.Release|ARM64.ActiveCfg = Release|Win32
{CF4C66B0-CD13-4D31-8133-339A01E7E6F2}.Release|x64.ActiveCfg = Release|x64
@@ -2952,6 +2968,7 @@ Global
{CF4C66B0-CD13-4D31-8133-339A01E7E6F2}.Release|x86.ActiveCfg = Release|Win32
{CF4C66B0-CD13-4D31-8133-339A01E7E6F2}.Release|x86.Build.0 = Release|Win32
{1A3FC7FB-403C-4B3D-B705-28FCE11317DD}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {1A3FC7FB-403C-4B3D-B705-28FCE11317DD}.Debug|Any CPU.Build.0 = Debug|Win32
{1A3FC7FB-403C-4B3D-B705-28FCE11317DD}.Debug|ARM.ActiveCfg = Debug|Win32
{1A3FC7FB-403C-4B3D-B705-28FCE11317DD}.Debug|ARM64.ActiveCfg = Debug|Win32
{1A3FC7FB-403C-4B3D-B705-28FCE11317DD}.Debug|x64.ActiveCfg = Debug|x64
@@ -2959,6 +2976,7 @@ Global
{1A3FC7FB-403C-4B3D-B705-28FCE11317DD}.Debug|x86.ActiveCfg = Debug|Win32
{1A3FC7FB-403C-4B3D-B705-28FCE11317DD}.Debug|x86.Build.0 = Debug|Win32
{1A3FC7FB-403C-4B3D-B705-28FCE11317DD}.Release|Any CPU.ActiveCfg = Debug|Win32
+ {1A3FC7FB-403C-4B3D-B705-28FCE11317DD}.Release|Any CPU.Build.0 = Debug|Win32
{1A3FC7FB-403C-4B3D-B705-28FCE11317DD}.Release|ARM.ActiveCfg = Release|Win32
{1A3FC7FB-403C-4B3D-B705-28FCE11317DD}.Release|ARM64.ActiveCfg = Release|Win32
{1A3FC7FB-403C-4B3D-B705-28FCE11317DD}.Release|x64.ActiveCfg = Release|x64
@@ -2966,6 +2984,7 @@ Global
{1A3FC7FB-403C-4B3D-B705-28FCE11317DD}.Release|x86.ActiveCfg = Release|Win32
{1A3FC7FB-403C-4B3D-B705-28FCE11317DD}.Release|x86.Build.0 = Release|Win32
{A3A8ADA0-C150-4E30-A60D-11F291FDBF7A}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {A3A8ADA0-C150-4E30-A60D-11F291FDBF7A}.Debug|Any CPU.Build.0 = Debug|Win32
{A3A8ADA0-C150-4E30-A60D-11F291FDBF7A}.Debug|ARM.ActiveCfg = Debug|Win32
{A3A8ADA0-C150-4E30-A60D-11F291FDBF7A}.Debug|ARM64.ActiveCfg = Debug|Win32
{A3A8ADA0-C150-4E30-A60D-11F291FDBF7A}.Debug|x64.ActiveCfg = Debug|x64
@@ -2973,6 +2992,7 @@ Global
{A3A8ADA0-C150-4E30-A60D-11F291FDBF7A}.Debug|x86.ActiveCfg = Debug|Win32
{A3A8ADA0-C150-4E30-A60D-11F291FDBF7A}.Debug|x86.Build.0 = Debug|Win32
{A3A8ADA0-C150-4E30-A60D-11F291FDBF7A}.Release|Any CPU.ActiveCfg = Debug|Win32
+ {A3A8ADA0-C150-4E30-A60D-11F291FDBF7A}.Release|Any CPU.Build.0 = Debug|Win32
{A3A8ADA0-C150-4E30-A60D-11F291FDBF7A}.Release|ARM.ActiveCfg = Release|Win32
{A3A8ADA0-C150-4E30-A60D-11F291FDBF7A}.Release|ARM64.ActiveCfg = Release|Win32
{A3A8ADA0-C150-4E30-A60D-11F291FDBF7A}.Release|x64.ActiveCfg = Release|x64
@@ -3676,6 +3696,7 @@ Global
{F15985C7-DF60-41CF-9333-D98BB8B43E6C}.Release|x86.ActiveCfg = Release|Any CPU
{F15985C7-DF60-41CF-9333-D98BB8B43E6C}.Release|x86.Build.0 = Release|Any CPU
{E9528353-7D41-4AA8-BBAC-D65B7FE3A0D6}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {E9528353-7D41-4AA8-BBAC-D65B7FE3A0D6}.Debug|Any CPU.Build.0 = Debug|Win32
{E9528353-7D41-4AA8-BBAC-D65B7FE3A0D6}.Debug|ARM.ActiveCfg = Debug|Win32
{E9528353-7D41-4AA8-BBAC-D65B7FE3A0D6}.Debug|ARM64.ActiveCfg = Debug|Win32
{E9528353-7D41-4AA8-BBAC-D65B7FE3A0D6}.Debug|x64.ActiveCfg = Debug|x64
@@ -3683,6 +3704,7 @@ Global
{E9528353-7D41-4AA8-BBAC-D65B7FE3A0D6}.Debug|x86.ActiveCfg = Debug|Win32
{E9528353-7D41-4AA8-BBAC-D65B7FE3A0D6}.Debug|x86.Build.0 = Debug|Win32
{E9528353-7D41-4AA8-BBAC-D65B7FE3A0D6}.Release|Any CPU.ActiveCfg = Debug|Win32
+ {E9528353-7D41-4AA8-BBAC-D65B7FE3A0D6}.Release|Any CPU.Build.0 = Debug|Win32
{E9528353-7D41-4AA8-BBAC-D65B7FE3A0D6}.Release|ARM.ActiveCfg = Release|Win32
{E9528353-7D41-4AA8-BBAC-D65B7FE3A0D6}.Release|ARM64.ActiveCfg = Release|Win32
{E9528353-7D41-4AA8-BBAC-D65B7FE3A0D6}.Release|x64.ActiveCfg = Release|x64
@@ -4168,6 +4190,126 @@ Global
{F1DC98EF-C50A-4E84-9A39-211A68626FBA}.Release|x64.Build.0 = Release|Any CPU
{F1DC98EF-C50A-4E84-9A39-211A68626FBA}.Release|x86.ActiveCfg = Release|Any CPU
{F1DC98EF-C50A-4E84-9A39-211A68626FBA}.Release|x86.Build.0 = Release|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Debug|ARM.Build.0 = Debug|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Debug|x64.Build.0 = Debug|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Debug|x86.Build.0 = Debug|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Release|ARM.ActiveCfg = Release|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Release|ARM.Build.0 = Release|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Release|ARM64.Build.0 = Release|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Release|x64.ActiveCfg = Release|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Release|x64.Build.0 = Release|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Release|x86.ActiveCfg = Release|Any CPU
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA}.Release|x86.Build.0 = Release|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Debug|ARM.Build.0 = Debug|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Debug|x64.Build.0 = Debug|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Debug|x86.Build.0 = Debug|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Release|ARM.ActiveCfg = Release|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Release|ARM.Build.0 = Release|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Release|ARM64.Build.0 = Release|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Release|x64.ActiveCfg = Release|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Release|x64.Build.0 = Release|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Release|x86.ActiveCfg = Release|Any CPU
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2}.Release|x86.Build.0 = Release|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Debug|ARM.Build.0 = Debug|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Debug|x64.Build.0 = Debug|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Debug|x86.Build.0 = Debug|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Release|ARM.ActiveCfg = Release|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Release|ARM.Build.0 = Release|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Release|ARM64.Build.0 = Release|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Release|x64.ActiveCfg = Release|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Release|x64.Build.0 = Release|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Release|x86.ActiveCfg = Release|Any CPU
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B}.Release|x86.Build.0 = Release|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Debug|ARM.Build.0 = Debug|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Debug|x64.Build.0 = Debug|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Debug|x86.Build.0 = Debug|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Release|ARM.ActiveCfg = Release|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Release|ARM.Build.0 = Release|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Release|ARM64.Build.0 = Release|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Release|x64.ActiveCfg = Release|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Release|x64.Build.0 = Release|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Release|x86.ActiveCfg = Release|Any CPU
+ {DAE96F06-72CD-411D-90A3-9456AE79F699}.Release|x86.Build.0 = Release|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Debug|ARM.Build.0 = Debug|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Debug|x64.Build.0 = Debug|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Debug|x86.Build.0 = Debug|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Release|ARM.ActiveCfg = Release|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Release|ARM.Build.0 = Release|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Release|ARM64.Build.0 = Release|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Release|x64.ActiveCfg = Release|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Release|x64.Build.0 = Release|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Release|x86.ActiveCfg = Release|Any CPU
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6}.Release|x86.Build.0 = Release|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Debug|ARM.Build.0 = Debug|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Debug|x64.Build.0 = Debug|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Debug|x86.Build.0 = Debug|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Release|ARM.ActiveCfg = Release|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Release|ARM.Build.0 = Release|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Release|ARM64.Build.0 = Release|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Release|x64.ActiveCfg = Release|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Release|x64.Build.0 = Release|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Release|x86.ActiveCfg = Release|Any CPU
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -4321,6 +4463,12 @@ Global
{949857A0-777D-4A32-8668-7163E404D800} = {5F6BBAA8-EAD0-4B18-97E5-55B4F56DD760}
{3E07ED4E-A755-443F-B18C-3775555A2DD7} = {C81ED1A3-D18C-4D80-A8F5-061994A14A60}
{F1DC98EF-C50A-4E84-9A39-211A68626FBA} = {5F6BBAA8-EAD0-4B18-97E5-55B4F56DD760}
+ {20AF2BAF-85CD-4437-BC6F-6BA030F984EA} = {4A8BD6EC-41CF-46A9-B2CD-9D0DF6465963}
+ {2ED5D897-DF22-491E-8410-D01383B3DAD2} = {4A8BD6EC-41CF-46A9-B2CD-9D0DF6465963}
+ {452DF7F4-BFBF-45B1-9A27-D6B1888AC10B} = {4A8BD6EC-41CF-46A9-B2CD-9D0DF6465963}
+ {DAE96F06-72CD-411D-90A3-9456AE79F699} = {4A8BD6EC-41CF-46A9-B2CD-9D0DF6465963}
+ {F423324C-7D0A-4512-BEBA-DF3A931A09F6} = {4A8BD6EC-41CF-46A9-B2CD-9D0DF6465963}
+ {F1B727F5-ADF5-4A81-A740-7E64E48B29D4} = {4A8BD6EC-41CF-46A9-B2CD-9D0DF6465963}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {7986F7F4-A86A-4994-B1B6-0988D7F057B6}
diff --git a/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/Tango.JobRunsGenerator.csproj b/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/Tango.JobRunsGenerator.csproj
index b89b1cb21..e8f5af6f3 100644
--- a/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/Tango.JobRunsGenerator.csproj
+++ b/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/Tango.JobRunsGenerator.csproj
@@ -48,14 +48,14 @@
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
- <Reference Include="Z.EntityFramework.Extensions, Version=4.0.50.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
- <HintPath>..\..\packages\Z.EntityFramework.Extensions.4.0.50\lib\net45\Z.EntityFramework.Extensions.dll</HintPath>
+ <Reference Include="Z.EntityFramework.Extensions, Version=5.1.6.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Z.EntityFramework.Extensions.5.1.6\lib\net45\Z.EntityFramework.Extensions.dll</HintPath>
</Reference>
- <Reference Include="Z.EntityFramework.Plus.EF6, Version=1.12.13.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
- <HintPath>..\..\packages\Z.EntityFramework.Plus.EF6.1.12.13\lib\net45\Z.EntityFramework.Plus.EF6.dll</HintPath>
+ <Reference Include="Z.EntityFramework.Plus.EF6, Version=5.1.6.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Z.EntityFramework.Plus.EF6.5.1.6\lib\net45\Z.EntityFramework.Plus.EF6.dll</HintPath>
</Reference>
- <Reference Include="Z.Expressions.Eval, Version=3.1.5.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
- <HintPath>..\..\packages\Z.Expressions.Eval.3.1.5\lib\net45\Z.Expressions.Eval.dll</HintPath>
+ <Reference Include="Z.Expressions.Eval, Version=4.0.27.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Z.Expressions.Eval.4.0.27\lib\net45\Z.Expressions.Eval.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
diff --git a/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/packages.config b/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/packages.config
index a025a5d0d..6d95e7b5d 100644
--- a/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/packages.config
+++ b/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/packages.config
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="6.2.0" targetFramework="net461" />
- <package id="Z.EntityFramework.Extensions" version="4.0.50" targetFramework="net461" />
- <package id="Z.EntityFramework.Plus.EF6" version="1.12.13" targetFramework="net461" />
- <package id="Z.Expressions.Eval" version="3.1.5" targetFramework="net461" />
+ <package id="Z.EntityFramework.Extensions" version="5.1.6" targetFramework="net461" />
+ <package id="Z.EntityFramework.Plus.EF6" version="5.1.6" targetFramework="net461" />
+ <package id="Z.Expressions.Eval" version="4.0.27" targetFramework="net461" />
</packages> \ No newline at end of file
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Properties/AssemblyInfo.cs b/Software/Visual_Studio/Web/Tango.MachineService/Properties/AssemblyInfo.cs
index e4f5879f5..4f02e716b 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Properties/AssemblyInfo.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Properties/AssemblyInfo.cs
@@ -24,4 +24,4 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("3.0.8.0")]
+[assembly: AssemblyVersion("3.0.9.0")]
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj b/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj
index bccd84cad..2e05ad690 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj
@@ -277,14 +277,14 @@
<Private>True</Private>
<HintPath>..\..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll</HintPath>
</Reference>
- <Reference Include="Z.EntityFramework.Extensions, Version=4.0.50.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
- <HintPath>..\..\packages\Z.EntityFramework.Extensions.4.0.50\lib\net45\Z.EntityFramework.Extensions.dll</HintPath>
+ <Reference Include="Z.EntityFramework.Extensions, Version=5.1.6.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Z.EntityFramework.Extensions.5.1.6\lib\net45\Z.EntityFramework.Extensions.dll</HintPath>
</Reference>
- <Reference Include="Z.EntityFramework.Plus.EF6, Version=1.12.13.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
- <HintPath>..\..\packages\Z.EntityFramework.Plus.EF6.1.12.13\lib\net45\Z.EntityFramework.Plus.EF6.dll</HintPath>
+ <Reference Include="Z.EntityFramework.Plus.EF6, Version=5.1.6.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Z.EntityFramework.Plus.EF6.5.1.6\lib\net45\Z.EntityFramework.Plus.EF6.dll</HintPath>
</Reference>
- <Reference Include="Z.Expressions.Eval, Version=3.1.5.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
- <HintPath>..\..\packages\Z.Expressions.Eval.3.1.5\lib\net45\Z.Expressions.Eval.dll</HintPath>
+ <Reference Include="Z.Expressions.Eval, Version=4.0.27.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Z.Expressions.Eval.4.0.27\lib\net45\Z.Expressions.Eval.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
@@ -505,7 +505,7 @@
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/packages.config b/Software/Visual_Studio/Web/Tango.MachineService/packages.config
index 599e31535..f2f83d078 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/packages.config
+++ b/Software/Visual_Studio/Web/Tango.MachineService/packages.config
@@ -44,7 +44,7 @@
<package id="System.Data.SQLite.EF6" version="1.0.108.0" targetFramework="net46" />
<package id="System.Data.SQLite.Linq" version="1.0.108.0" targetFramework="net46" />
<package id="WebGrease" version="1.5.2" targetFramework="net45" />
- <package id="Z.EntityFramework.Extensions" version="4.0.50" targetFramework="net461" />
- <package id="Z.EntityFramework.Plus.EF6" version="1.12.13" targetFramework="net461" />
- <package id="Z.Expressions.Eval" version="3.1.5" targetFramework="net461" />
+ <package id="Z.EntityFramework.Extensions" version="5.1.6" targetFramework="net461" />
+ <package id="Z.EntityFramework.Plus.EF6" version="5.1.6" targetFramework="net461" />
+ <package id="Z.Expressions.Eval" version="4.0.27" targetFramework="net461" />
</packages> \ No newline at end of file