diff options
| author | Avi Levkovich <avi@twine-s.com> | 2021-01-04 11:52:20 +0200 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2021-01-04 11:52:20 +0200 |
| commit | 7c3e54578ae6f2c01ec05ebc7f7e0f873955bb33 (patch) | |
| tree | 3eb92323c29633dde9df39666ece64815ff7da98 | |
| parent | 6a2aa48d486a9f83449d7e2c5e85b62649763c49 (diff) | |
| parent | b0dc79e93c1a17667211bff5c7e48eb2d69ad386 (diff) | |
| download | Tango-7c3e54578ae6f2c01ec05ebc7f7e0f873955bb33.tar.gz Tango-7c3e54578ae6f2c01ec05ebc7f7e0f873955bb33.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
34 files changed, 330 insertions, 170 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/Pin_config.c b/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/Pin_config.c index 10fbdfafa..4e7e5364d 100644 --- a/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/Pin_config.c +++ b/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/Pin_config.c @@ -1,5 +1,6 @@ #include <stdbool.h> #include <stdint.h> +#include <DataDef.h> #include <driverlib/gpio.h> #include <inc/hw_memmap.h> diff --git a/Software/Embedded_SW/Embedded/Communication/Connection.c b/Software/Embedded_SW/Embedded/Communication/Connection.c index ec15c1596..c33f3710c 100644 --- a/Software/Embedded_SW/Embedded/Communication/Connection.c +++ b/Software/Embedded_SW/Embedded/Communication/Connection.c @@ -193,7 +193,7 @@ void KeepAliveRequestFunc(MessageContainer* requestContainer) //keep_alive_request__free_unpacked(request,NULL); } -int KARequestId = 0x01010101; +int KARequestId = 0x41414141; char KARequestToken[36+1]; void KeepAliveResponseFunc(MessageContainer* requestContainer) { @@ -215,7 +215,7 @@ void KeepAliveRequest1Second(void) KeepAliveResponse request = KEEP_ALIVE_REQUEST__INIT; - strcpy(KARequestToken,"Happy days are coming to us, soon"); + strcpy(KARequestToken,"Happy days are coming to us, soonZYX"); memcpy(&KARequestToken[32],&KARequestId,sizeof(KARequestId)); KARequestId++; //Report("keepalive request sent",__FILE__,__LINE__,KARequestId,RpWarning,msec_millisecondCounter, 0); diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c index 0b308408c..62d283f0b 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c @@ -358,8 +358,12 @@ uint32_t Get_Dryer_Fan_Tacho() } uint32_t Read_Dryer_Fan_Tacho() { +#ifndef EVALUATION_BOARD Drayer_Fan_Speed_RPM = Calculate_Tacho_Fan_Speed(FPGA_Freq, 12, F1_Prescaler1_reg5, F1_Tacho_reg8); return Drayer_Fan_Speed_RPM; +#else + return 100; +#endif } void Control_Dryer_Fan_PWM(uint8_t PWM_Command_Precent)// 0 - 100% diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c index e9c674b25..c3ce35868 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c @@ -482,9 +482,10 @@ uint32_t ActivateCleanerPump() uint32_t DeActivateCleanerPump() { - +#ifndef EVALUATION_BOARD F2_CTRL_Reg.ushort &= ~CLEANER_PUMP_SSR3_CTRL; F2_CTRL = F2_CTRL_Reg.ushort; +#endif return OK; } //---------------------------------- @@ -494,16 +495,20 @@ void Power_Off()//Power Down #ifdef WATCHDOG ROM_WatchdogResetDisable(WATCHDOG0_BASE); #endif +#ifndef EVALUATION_BOARD F2_CTRL_Reg.ushort |= PDOWN_RL1_CTRL; F2_CTRL = F2_CTRL_Reg.ushort; +#endif } void Power_Reset()// Resets the MCU { utilsStoreLocalTime(); +#ifndef EVALUATION_BOARD F3_SW_RESET_reg &= ~BIT0; SysCtlDelay(1000); F3_SW_RESET_reg |= BIT0; +#endif SysCtlReset(); } @@ -511,15 +516,19 @@ void Power_Reset()// Resets the MCU uint32_t ActivateChiller() //WHS Cooler / WHS DX Cooler { +#ifndef EVALUATION_BOARD F2_CTRL_Reg.ushort |= CHILLER_SSR9_CTRL; F2_CTRL = F2_CTRL_Reg.ushort; +#endif return OK; } uint32_t DeActivateChiller() //WHS Cooler / WHS DX Cooler { +#ifndef EVALUATION_BOARD F2_CTRL_Reg.ushort &= ~CHILLER_SSR9_CTRL; F2_CTRL = F2_CTRL_Reg.ushort; +#endif return OK; } diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SSI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SSI_Comm.c index 765ba1a7a..36a349682 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SSI_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SSI_Comm.c @@ -132,6 +132,7 @@ uint8_t FPGA_SSI_Dryer_ENC_Transnit() uint32_t FPGA_SSI_Dryer_ENC_Receive() { +#ifndef EVALUATION_BOARD INT2SHORT Int2Short; unsigned int temp; @@ -147,6 +148,6 @@ uint32_t FPGA_SSI_Dryer_ENC_Receive() Dryer_ENC.Gen_status = temp & 0x3; temp = temp >> 2; Dryer_ENC.Position = (temp & 0x3FFF); - +#endif return OK; } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c index 57b57a41d..307d815ee 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c @@ -156,8 +156,10 @@ uint32_t Turn_the_Blower_On() voltage = Default_Voltage; if (WHS_Type == WHS_TYPE_UNKNOWN) { +#ifndef EVALUATION_BOARD status = Write_Control_Register(); status |= Write_DAC_and_Input_Register(DAC_mV2Bits(Default_Voltage)); +#endif } else //new WHS { @@ -177,7 +179,9 @@ uint32_t Control_Voltage_To_Blower(uint32_t mV) } if (WHS_Type == WHS_TYPE_UNKNOWN) { +#ifndef EVALUATION_BOARD status |= Write_DAC_and_Input_Register(DAC_mV2Bits(mV)); +#endif } else //new WHS { @@ -196,7 +200,9 @@ uint32_t Turn_the_Blower_Off() if (WHS_Type == WHS_TYPE_UNKNOWN) { +#ifndef EVALUATION_BOARD status |= Write_DAC_and_Input_Register(0); +#endif } else //new WHS { diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c index c04cabc4a..0593342b1 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c @@ -137,7 +137,7 @@ uint32_t Reset_and_Check_IFS_Availability(PANEL_BUTTON_OR_CRAT_ID Cart_ID) // IFS_Availability[Cart_ID-1] = IFS_RECOGNIZED; // } #else - IFS_Availability[Cart_ID-1] = WITHOUT_IFS; + IFS_Availability[Cart_ID-1] = IFS_AVAILABILITY_UNKNOWN; #endif return status; diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c index 71d26888d..cfa8c2382 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c @@ -86,13 +86,15 @@ void MCU_E2PromUpdateResetReason(int i) uint32_t Head; uint32_t RESC = SysCtlResetCauseGet(); +#ifndef EVALUATION_BOARD + EEPROMRead(&Head,EEPROM_RESET_REASON_HEAD_ADDRESS, 4); if (Head>=EEPROM_RESET_REASON_MAX_DATA) Head=0; Head++; RESC+=(i*0x1000); EEPROMProgram(&Head, EEPROM_RESET_REASON_HEAD_ADDRESS, 4); EEPROMProgram(&RESC, (EEPROM_RESET_REASON_HEAD_ADDRESS+(Head*4)), 4); - +#endif } /*************************************************/ diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 9c647e847..c8e2e80b9 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -314,6 +314,7 @@ int main(void) HibernateCalendarSet(&LocalTime); } OpenLogFile(); +#ifndef EVALUATION_BOARD Data = MCU_E2PromEmbeddedVersionRead(); memcpy (&Version,&Data,4); i = memcmp(&Version,&_gTangoVersion,4); @@ -325,7 +326,7 @@ int main(void) MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,0); } MCU_E2PromRead(EEPROM_INIT_FAILURE_COUNTER,&InitFailures); - +#endif Init_All_I2C(); #ifndef EVALUATION_BOARD Block_Main_MUX_TCA9548A_0xE4();//unused, same i2c as head and whs cards diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index c5fffff60..f9401c248 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -618,7 +618,7 @@ uint16_t realtimetest[101]; uint16_t dbgflag[50]; uint32_t dbttime[50]; bool Ten_msTick, Fifty_msTick, Hundred_msTick , m20msecTick,m90msecTick, Onesecond_Tick,Tensecond_Tick,OneMinute_Tick,TenMinutes_Tick,OneHourTick,Gradient_Tick; -bool O700Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick,O800Millisecond_Tick; +bool O700Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick,O800Millisecond_Tick,m50msecTick; uint32_t MillisecLowLoop(uint32_t tick) { @@ -636,7 +636,7 @@ uint32_t MillisecLowLoop(uint32_t tick) Fifty_msTick = (tick%eHundredMillisecond == 40) ?true:false; //eFiftyMillisecond Hundred_msTick = (tick%eHundredMillisecond == 0) ?true:false; m20msecTick = (tick%eHundredMillisecond == 20) ?true:false; - //m70msecTick = (tick%eHundredMillisecond == 70) ?true:false; + m50msecTick = (tick%50== 0) ?true:false; m90msecTick = (tick%eHundredMillisecond == 90) ?true:false; O700Millisecond_Tick = (tick%eOneSecond == 700) ?true:false; O200Millisecond_Tick = (tick%eOneSecond == 200) ?true:false; @@ -672,6 +672,14 @@ uint32_t MillisecLowLoop(uint32_t tick) dbgflag[2]++; dbttime[2] = msec_millisecondCounter; Read_Dryer_ENC_Position(); + dbgflag[3]++; + } + if (m50msecTick) //50 milli + { +#ifdef USE_UART4_FOR_BTSR + //call every 50mSec + BTSR_State_Machine(RUFeeder1); +#endif } if (m20msecTick) { @@ -682,11 +690,6 @@ uint32_t MillisecLowLoop(uint32_t tick) WHS_Read_GPI_Registers(); Trigger_PT100_Read();//call every 50mSec (minimum delay 30mSec) //Set_HeadCard_PT100();//call every 50mSec (minimum delay 30mSec) - - #ifdef USE_UART4_FOR_BTSR - //call every 50mSec - BTSR_State_Machine(RUFeeder1); - #endif } if (m90msecTick) { diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 19507775e..71bae1f40 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -1376,8 +1376,8 @@ uint32_t IDSCheckSegmentData(void *SegmentDetails, int SegmentId) //for (Brush_i=JobBrushStopId;Brush_i<PrevSegment->brushstopscount;Brush_i++) #bug 3348 - unhandled jobstops stops too soon for (Brush_i=JobBrushStopId;Brush_i<PrevSegment->brushstopscount;Brush_i++) { - if (status == ERROR) - break; + //if (status == ERROR) + // break; tFileBrushStop = GetNextBrushStopFromJobFile(); if (tFileBrushStop) { diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c index 2c67a623b..5b0cf9cb7 100644 --- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c +++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c @@ -49,7 +49,7 @@ double MidTankEmptyLimit = MidTank_Pressure_EMPTY; MidTankStateEnum midTankState = 0; char CartridgeRequestToken[36+1]; -int CartridgeRequestId = 0x01010101; +int CartridgeRequestId = 0x31313131; bool RdInkCartridgeSensor() { @@ -199,7 +199,7 @@ uint32_t ReadInkCartridgeData() CartridgeValidationRequest ValidationReq = CARTRIDGE_VALIDATION_REQUEST__INIT; Cartridge CartridgeData; - strcpy(CartridgeRequestToken,"Happy days are coming to us, soon"); + strcpy(CartridgeRequestToken,"Happy days are coming to us, soonXXX"); memcpy(&CartridgeRequestToken[32],&CartridgeRequestId,sizeof(CartridgeRequestId)); CartridgeRequestId++; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index ffbb504db..2b1e52134 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -320,8 +320,21 @@ { TimeoutsCounter = 0; load.color = fastBILNK; - usnprintf(LoadErrorMsg, 100, "/Stage %s - %s timeout",LoadStagesStr[LoadStages], MotorStr[MotorId]); - Report(LoadErrorMsg,__FILE__,__LINE__,LoadStages,RpWarning,TimeoutsCounter,0); + if (LoadStages == THREAD_LOAD_INITIAL_TENSION) + { + usnprintf(LoadErrorMsg, 100, "/Stage %s - no cone in winder!!",LoadStagesStr[LoadStages]); + Report(LoadErrorMsg,__FILE__,__LINE__,LoadStages,RpWarning,TimeoutsCounter,0); + } + else if (LoadStages == THREAD_LOAD_JOG_THREAD) + { + usnprintf(LoadErrorMsg, 100, "/Stage %s - Dryer door is open!!",LoadStagesStr[LoadStages]); + Report(LoadErrorMsg,__FILE__,__LINE__,LoadStages,RpWarning,TimeoutsCounter,0); + } + else + { + usnprintf(LoadErrorMsg, 100, "/Stage %s - %s timeout",LoadStagesStr[LoadStages], MotorStr[MotorId]); + Report(LoadErrorMsg,__FILE__,__LINE__,LoadStages,RpWarning,TimeoutsCounter,0); + } LoadStatus = ERROR; ThreadLoadingReport(); @@ -447,13 +460,13 @@ { REPORT_MSG(LoadStages, "Thread Load State Machine step Thread_Load_Initial_Tension"); load.color = BLINK; + CallbackCounter++; if (FPGA_Read_limit_Switches(GPI_SW_SPOOL_EXISTS)==LIMIT) { REPORT_MSG(LIMIT, "No cone in winder"); Thread_Load_HomingCallback(HARDWARE_MOTOR_TYPE__MOTO_WINDER,NO_LIMIT); //return ERROR; } - CallbackCounter++; MotorMovetoBreakSensor (HARDWARE_MOTOR_TYPE__MOTO_WINDER,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_WINDER].directionthreadwize, 500, Thread_Load_HomingCallback,10000); return OK; @@ -805,6 +818,13 @@ //Jog Thread Shortly To Make Sure Spool Is Running. Report End Of Loading { REPORT_MSG(LoadStages, "Thread Load State Machine step Thread_Load_Jog_Thread"); + if (Get_COVER_1_State(DryerDoor)) + { + CallbackCounter++; + REPORT_MSG(LIMIT, "Dryer door open"); + Thread_Load_HomingCallback(HARDWARE_MOTOR_TYPE__MOTO_WINDER,NO_LIMIT); + return ERROR; + } keepfeedertension = feedertension; ProcessParametersKeep.feedertension = 0.0; ThreadJoggingFunc(20); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index 0da78dc9c..06dac8fdc 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -213,21 +213,26 @@ uint32_t InitSequenceMidTankCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag Disable_MidTank_Pressure_Reading(portId); Valve_Set(IDS_Id_to_AirValve[portId], Atm_MidTank_OFF ); //Atm_MidTank_OFF/ON //Control3WayValvesWithCallback ((Valves_t)portId, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer - } else if (MidTankOperationCounter >= MidTankReadPressure) { //read pressure for midtank (MidTankOperationCounter-MidTankCloseAir) portId = MidTankOperationCounter%MAX_SYSTEM_DISPENSERS; - Read_MidTank_Pressure_Sensor(portId); + if((IfIndex==0)||(Get_MidTank_Pressure_Sensor(portId)<0.5)) + { + Read_MidTank_Pressure_Sensor(portId); + } } else if (MidTankOperationCounter >= MidTankOpenAir) { //open air valve for midtank (MidTankOperationCounter-MidTankOpenAir) portId = (MidTankOperationCounter - MidTankOpenAir) ; //0-7 - Enable_MidTank_Pressure_Reading(portId); - Valve_Set(IDS_Id_to_AirValve[portId], Atm_MidTank_ON ); //Atm_MidTank_OFF/ON - Control3WayValvesWithCallback ((Valves_t)portId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer + if((IfIndex==0)||(Get_MidTank_Pressure_Sensor(portId)<0.5)) + { + Enable_MidTank_Pressure_Reading(portId); + Valve_Set(IDS_Id_to_AirValve[portId], Atm_MidTank_ON ); //Atm_MidTank_OFF/ON + Control3WayValvesWithCallback ((Valves_t)portId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer + } } MidTankOperationCounter++; return OK; @@ -544,6 +549,8 @@ uint32_t InitSequenceWaitForCoolerCallBackFunction(uint32_t IfIndex, uint32_t Bu } else Report("InitSequenceWaitForCoolerCallBackFunction called too late",__FILE__,__LINE__,(int)InitStages,RpWarning,(int)MachineStateDetail,0); + MidTankControlId = AddControlCallback("Init Midtank", InitSequenceMidTankCallBackFunction, 300/*eHundredMillisecond*/, TemplateDataReadCBFunction,1,0, 0 ); + return OK; } uint32_t InitSequenceWaitForCooler(void) diff --git a/Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip b/Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip index ccac49ada..385fa996c 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:{0DFFFC98-851D-497C-88CE-43D0B7486DED} " Type="16"/> + <ROW Property="ProductCode" Value="1033:{7C07FDC1-DDB0-4663-AE1D-778B15B4388A} " Type="16"/> <ROW Property="ProductLanguage" Value="1033"/> <ROW Property="ProductName" Value="Tango FSE"/> - <ROW Property="ProductVersion" Value="1.1.3.0" Type="32"/> + <ROW Property="ProductVersion" Value="1.2.0.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}"/> @@ -796,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.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"/> + <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\FSE\Release" PackageFileName="Tango FSE v1.2.0" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="Tango FSE v1.2.0"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent"> <ROW Path="<AI_DICTS>ui.ail"/> diff --git a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip index 6376e0506..af86c887d 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:{241907BC-A335-4E23-9409-DE9767A7E53D} " Type="16"/> + <ROW Property="ProductCode" Value="1033:{A8140290-8F91-4BB4-8549-81C3D5A96571} " Type="16"/> <ROW Property="ProductLanguage" Value="1033"/> <ROW Property="ProductName" Value="Tango"/> - <ROW Property="ProductVersion" Value="1.3.0.0" Type="32"/> + <ROW Property="ProductVersion" Value="1.3.2.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,10 +215,10 @@ <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="{4137FD49-DC66-4BBC-8E9E-BDF82C6FFDEF}" Directory_="win7x64_Dir" Attributes="256" KeyPath="turbojpeg.dll"/> - <ROW Component="turbojpeg.dll.meta" ComponentId="{3F487A06-121A-49DE-94AA-FCD4509F7796}" Directory_="win7x64_Dir" Attributes="0" KeyPath="turbojpeg.dll.meta" Type="0"/> - <ROW Component="turbojpeg.dll.meta_1" ComponentId="{B938CD1E-E760-492F-8295-A4B6003353F7}" Directory_="win7x86_Dir" Attributes="0" KeyPath="turbojpeg.dll.meta_1" Type="0"/> - <ROW Component="turbojpeg.dll_1" ComponentId="{C2922686-AC79-4E43-B742-A4762AEDE890}" Directory_="win7x86_Dir" Attributes="0" KeyPath="turbojpeg.dll_1"/> + <ROW Component="turbojpeg.dll" ComponentId="{7F419D89-7CCC-4CB0-9971-D77E9D2B99AE}" Directory_="win7x64_Dir" Attributes="256" KeyPath="turbojpeg.dll"/> + <ROW Component="turbojpeg.dll.meta" ComponentId="{A801D258-4A13-469F-97BD-84A2503B4972}" Directory_="win7x64_Dir" Attributes="0" KeyPath="turbojpeg.dll.meta" Type="0"/> + <ROW Component="turbojpeg.dll.meta_1" ComponentId="{EB7D18E6-EE5A-40B9-AECD-E35C376069C8}" Directory_="win7x86_Dir" Attributes="0" KeyPath="turbojpeg.dll.meta_1" Type="0"/> + <ROW Component="turbojpeg.dll_1" ComponentId="{2F7F43EA-B85C-499E-B4FC-408EB541B2CF}" 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"/> @@ -505,7 +505,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.3.0" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="PPC Installer_v1.3.0"/> + <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\PPC" PackageFileName="PPC Installer_v1.3.2" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="PPC Installer_v1.3.2"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent"> <ROW Path="<AI_DICTS>ui.ail"/> diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/diagnostics.tdp b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/diagnostics.tdp index ebd93e9dc..6d78e2365 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/diagnostics.tdp +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/diagnostics.tdp @@ -439,7 +439,7 @@ "Height": 100.0, "DisplayComponentName": true, "ComponentNameAlignment": "Bottom", - "CustomComponentName": "Machine Temp." + "CustomComponentName": "Machine Temperature" }, { "$type": "Tango.FSE.Diagnostics.Project.Widgets.Text.TextWidget, Tango.FSE.Diagnostics", @@ -459,11 +459,11 @@ }, { "$type": "Tango.FSE.Diagnostics.Project.Widgets.Heater.HeaterWidget, Tango.FSE.Diagnostics", - "Heater": "HeaterZone6", + "Heater": "HeaterZone1", "SetPoint": 135.0, "EnableComponentSelection": false, "ID": "4cc384a5-58b8-40b8-bd7c-da77fff2ab4a", - "Column": 14, + "Column": 18, "Row": 15, "ColumnSpan": 2, "RowSpan": 6, @@ -475,7 +475,7 @@ }, { "$type": "Tango.FSE.Diagnostics.Project.Widgets.Heater.HeaterWidget, Tango.FSE.Diagnostics", - "Heater": "HeaterZone5", + "Heater": "HeaterZone2", "SetPoint": 135.0, "EnableComponentSelection": false, "ID": "2c2d9abf-06fb-4b05-ab24-bad87fdd1dc1", @@ -491,11 +491,11 @@ }, { "$type": "Tango.FSE.Diagnostics.Project.Widgets.Heater.HeaterWidget, Tango.FSE.Diagnostics", - "Heater": "HeaterZone4", + "Heater": "HeaterZone3", "SetPoint": 120.0, "EnableComponentSelection": false, "ID": "d2c56d11-4048-428d-9639-a7861b7610dc", - "Column": 18, + "Column": 14, "Row": 15, "ColumnSpan": 2, "RowSpan": 6, @@ -522,24 +522,8 @@ "CustomComponentName": null }, { - "$type": "Tango.FSE.Diagnostics.Project.Widgets.Blower.BlowerWidget, Tango.FSE.Diagnostics", - "Blower": "HeadBlower2", - "SetPoint": 0.0, - "EnableComponentSelection": false, - "ID": "be0a08fe-87ee-4751-b8c0-434495a7faf0", - "Column": 14, - "Row": 9, - "ColumnSpan": 3, - "RowSpan": 4, - "Width": 100.0, - "Height": 100.0, - "DisplayComponentName": true, - "ComponentNameAlignment": "Bottom", - "CustomComponentName": null - }, - { "$type": "Tango.FSE.Diagnostics.Project.Widgets.Text.TextWidget, Tango.FSE.Diagnostics", - "Text": "arc blowers air flow", + "Text": "arc blowers", "Color": "#FFD3D3D3", "Settings": {}, "ID": "6fbf6983-92e6-4d6a-8696-aff46e5b0fc0", @@ -554,22 +538,6 @@ "CustomComponentName": null }, { - "$type": "Tango.FSE.Diagnostics.Project.Widgets.Blower.BlowerWidget, Tango.FSE.Diagnostics", - "Blower": "HeadBlower1", - "SetPoint": 0.0, - "EnableComponentSelection": false, - "ID": "85ee4ecf-ddb1-47f4-8065-a8d85f258ed0", - "Column": 17, - "Row": 9, - "ColumnSpan": 3, - "RowSpan": 4, - "Width": 100.0, - "Height": 100.0, - "DisplayComponentName": true, - "ComponentNameAlignment": "Bottom", - "CustomComponentName": null - }, - { "$type": "Tango.FSE.Diagnostics.Project.Widgets.Monitor.MonitorWidget, Tango.FSE.Diagnostics", "Monitor": "HeadBlowerVoltage2", "EnableComponentSelection": false, @@ -578,10 +546,10 @@ "Color": "#FFDCDCDC" }, "ID": "4feb8076-1c1f-4c4c-9dc6-b79f41abcdeb", - "Column": 14, - "Row": 5, - "ColumnSpan": 3, - "RowSpan": 4, + "Column": 15, + "Row": 10, + "ColumnSpan": 2, + "RowSpan": 3, "Width": 100.0, "Height": 100.0, "DisplayComponentName": true, @@ -590,17 +558,17 @@ }, { "$type": "Tango.FSE.Diagnostics.Project.Widgets.Monitor.MonitorWidget, Tango.FSE.Diagnostics", - "Monitor": "HeadCoverHeater2Temperature", + "Monitor": "HeadBlower1AirFlow", "EnableComponentSelection": false, "Settings": { - "DecimalPlaces": 0, + "DecimalPlaces": 2, "Color": "#FFDCDCDC" }, "ID": "e7db35e7-c03c-4eb8-8460-6372245dc262", - "Column": 14, - "Row": 1, - "ColumnSpan": 3, - "RowSpan": 4, + "Column": 17, + "Row": 7, + "ColumnSpan": 2, + "RowSpan": 3, "Width": 100.0, "Height": 100.0, "DisplayComponentName": true, @@ -617,9 +585,9 @@ }, "ID": "59df100b-f1d9-4d93-8360-519f158d06c9", "Column": 17, - "Row": 5, - "ColumnSpan": 3, - "RowSpan": 4, + "Row": 10, + "ColumnSpan": 2, + "RowSpan": 3, "Width": 100.0, "Height": 100.0, "DisplayComponentName": true, @@ -628,21 +596,72 @@ }, { "$type": "Tango.FSE.Diagnostics.Project.Widgets.Monitor.MonitorWidget, Tango.FSE.Diagnostics", - "Monitor": "HeadCoverHeater1Temperature", + "Monitor": "HeadBlower2AirFlow", "EnableComponentSelection": false, "Settings": { - "DecimalPlaces": 0, + "DecimalPlaces": 2, "Color": "#FFDCDCDC" }, "ID": "58b0985d-e281-4bd1-a6df-4912386b3eb0", - "Column": 17, - "Row": 1, + "Column": 15, + "Row": 7, + "ColumnSpan": 2, + "RowSpan": 3, + "Width": 100.0, + "Height": 100.0, + "DisplayComponentName": true, + "ComponentNameAlignment": "Bottom", + "CustomComponentName": null + }, + { + "$type": "Tango.FSE.Diagnostics.Project.Widgets.Monitor.MonitorWidget, Tango.FSE.Diagnostics", + "Monitor": "GasSensor", + "EnableComponentSelection": true, + "Settings": { + "DecimalPlaces": 2, + "Color": "#FFDCDCDC" + }, + "ID": "c78af51d-97c5-4c4c-873f-f67f52f1ecec", + "Column": 9, + "Row": 5, "ColumnSpan": 3, "RowSpan": 4, "Width": 100.0, "Height": 100.0, "DisplayComponentName": true, "ComponentNameAlignment": "Bottom", + "CustomComponentName": "Machine Temperature" + }, + { + "$type": "Tango.FSE.Diagnostics.Project.Widgets.Heater.HeaterWidget, Tango.FSE.Diagnostics", + "Heater": "HeadCoverHeater2", + "SetPoint": 120.0, + "EnableComponentSelection": false, + "ID": "52be1c95-9510-4162-a6d8-b77461032218", + "Column": 15, + "Row": 1, + "ColumnSpan": 2, + "RowSpan": 6, + "Width": 100.0, + "Height": 100.0, + "DisplayComponentName": true, + "ComponentNameAlignment": "Bottom", + "CustomComponentName": null + }, + { + "$type": "Tango.FSE.Diagnostics.Project.Widgets.Heater.HeaterWidget, Tango.FSE.Diagnostics", + "Heater": "HeadCoverHeater1", + "SetPoint": 120.0, + "EnableComponentSelection": false, + "ID": "92dba367-e636-4ba2-b3af-3d7fd1fa330d", + "Column": 17, + "Row": 1, + "ColumnSpan": 2, + "RowSpan": 6, + "Width": 100.0, + "Height": 100.0, + "DisplayComponentName": true, + "ComponentNameAlignment": "Bottom", "CustomComponentName": null } ] @@ -804,7 +823,7 @@ "EnableComponentSelection": false, "Settings": { "DecimalPlaces": 2, - "Color": "#FFDCDCDC" + "Color": "#FFDEDAC4" }, "ID": "99496cd2-adb1-4fe9-8944-6f1785530095", "Column": 0, @@ -861,7 +880,7 @@ "EnableComponentSelection": false, "Settings": { "DecimalPlaces": 2, - "Color": "#FFDCDCDC" + "Color": "#FF8BEC83" }, "ID": "a0ebd9d7-b01c-4ca3-b62e-824b02a66c3c", "Column": 3, @@ -918,7 +937,7 @@ "EnableComponentSelection": false, "Settings": { "DecimalPlaces": 2, - "Color": "#FFDCDCDC" + "Color": "#FF404040" }, "ID": "52260052-843a-4fc1-88ec-64ef9dd13657", "Column": 6, @@ -975,7 +994,7 @@ "EnableComponentSelection": false, "Settings": { "DecimalPlaces": 2, - "Color": "#FFDCDCDC" + "Color": "#FFE9E9E9" }, "ID": "dd286e34-4441-4814-8aec-ffff471e1be8", "Column": 9, @@ -1032,7 +1051,7 @@ "EnableComponentSelection": false, "Settings": { "DecimalPlaces": 2, - "Color": "#FFDCDCDC" + "Color": "#FFE8FF0C" }, "ID": "b8c9e3f6-5f4d-44cd-8b6e-c7d16489e573", "Column": 12, @@ -1089,7 +1108,7 @@ "EnableComponentSelection": false, "Settings": { "DecimalPlaces": 2, - "Color": "#FFDCDCDC" + "Color": "#FFED008C" }, "ID": "82c2ee42-9b28-44ec-9ec2-ca69d9319ecc", "Column": 15, @@ -1146,7 +1165,7 @@ "EnableComponentSelection": false, "Settings": { "DecimalPlaces": 2, - "Color": "#FFDCDCDC" + "Color": "#FF1662EB" }, "ID": "99901934-8bad-4e99-b35f-591be4d32d49", "Column": 18, @@ -1203,7 +1222,7 @@ "EnableComponentSelection": false, "Settings": { "DecimalPlaces": 2, - "Color": "#FFDCDCDC" + "Color": "#FF000000" }, "ID": "65b945dd-30bb-4f59-a336-d36d22aac6bc", "Column": 21, @@ -1377,7 +1396,7 @@ ] }, { - "Name": "Waste", + "Name": "Flows", "Columns": [ { "Width": "*" @@ -1532,8 +1551,8 @@ "Monitor": "MidTank1Level", "EnableComponentSelection": false, "Settings": { - "DecimalPlaces": 0, - "Color": "#FFDCDCDC" + "DecimalPlaces": 2, + "Color": "#FF000000" }, "ID": "50542753-1128-4c4a-b13f-397be9377fdd", "Column": 21, @@ -1551,8 +1570,8 @@ "Monitor": "MidTank2Level", "EnableComponentSelection": false, "Settings": { - "DecimalPlaces": 0, - "Color": "#FFDCDCDC" + "DecimalPlaces": 2, + "Color": "#FF1662EB" }, "ID": "07904972-8ffe-4a4a-b372-c91e87d72371", "Column": 18, @@ -1570,8 +1589,8 @@ "Monitor": "MidTank3Level", "EnableComponentSelection": false, "Settings": { - "DecimalPlaces": 0, - "Color": "#FFDCDCDC" + "DecimalPlaces": 2, + "Color": "#FFED008C" }, "ID": "b1da7145-a8dd-4c26-9585-7d481850a91b", "Column": 15, @@ -1589,8 +1608,8 @@ "Monitor": "MidTank4Level", "EnableComponentSelection": false, "Settings": { - "DecimalPlaces": 0, - "Color": "#FFDCDCDC" + "DecimalPlaces": 2, + "Color": "#FFE8FF0C" }, "ID": "168a83a0-a99b-4c66-ba4a-9ab1a49703bd", "Column": 12, @@ -1608,8 +1627,8 @@ "Monitor": "MidTank5Level", "EnableComponentSelection": false, "Settings": { - "DecimalPlaces": 0, - "Color": "#FFDCDCDC" + "DecimalPlaces": 2, + "Color": "#FFE9E9E9" }, "ID": "80a362cf-52e8-4e1c-b032-bbd5162bf843", "Column": 9, @@ -1627,8 +1646,8 @@ "Monitor": "MidTank6Level", "EnableComponentSelection": false, "Settings": { - "DecimalPlaces": 0, - "Color": "#FFDCDCDC" + "DecimalPlaces": 2, + "Color": "#FF404040" }, "ID": "f00c9ac5-0f3e-4a93-aca0-0e792dd1d551", "Column": 6, @@ -1646,8 +1665,8 @@ "Monitor": "MidTank7Level", "EnableComponentSelection": false, "Settings": { - "DecimalPlaces": 0, - "Color": "#FFDCDCDC" + "DecimalPlaces": 2, + "Color": "#FF8BEC83" }, "ID": "63b22b2c-11ce-4f29-90f9-7c24bbfdd305", "Column": 3, @@ -1665,8 +1684,8 @@ "Monitor": "MidTank8Level", "EnableComponentSelection": false, "Settings": { - "DecimalPlaces": 0, - "Color": "#FFDCDCDC" + "DecimalPlaces": 2, + "Color": "#FFDEDAC4" }, "ID": "cfcdf30f-29c9-4ad4-8eb8-5af1c6853501", "Column": 0, @@ -1703,7 +1722,7 @@ "Monitor": "HeadAirFlow", "EnableComponentSelection": false, "Settings": { - "DecimalPlaces": 0, + "DecimalPlaces": 2, "Color": "#FFDCDCDC" }, "ID": "ba94949e-6371-4041-906f-ccbcc1953254", @@ -1722,7 +1741,7 @@ "Monitor": "DryerAirFlow", "EnableComponentSelection": false, "Settings": { - "DecimalPlaces": 0, + "DecimalPlaces": 2, "Color": "#FFDCDCDC" }, "ID": "0763fb88-e1c1-40db-b883-04d25ce52a78", @@ -1818,7 +1837,7 @@ "Monitor": "WasteLevel", "EnableComponentSelection": false, "Settings": { - "DecimalPlaces": 0, + "DecimalPlaces": 2, "Color": "#FFDCDCDC" }, "ID": "d3844b51-1842-4f96-a3f9-204fa3257391", @@ -2071,6 +2090,25 @@ "DisplayComponentName": true, "ComponentNameAlignment": "Bottom", "CustomComponentName": "Air Valve 1" + }, + { + "$type": "Tango.FSE.Diagnostics.Project.Widgets.Monitor.MonitorWidget, Tango.FSE.Diagnostics", + "Monitor": "TotalWHSFlow", + "EnableComponentSelection": false, + "Settings": { + "DecimalPlaces": 2, + "Color": "#FFDCDCDC" + }, + "ID": "f97c0e77-2d90-4ce6-8df3-b1e7a1feb10b", + "Column": 6, + "Row": 12, + "ColumnSpan": 2, + "RowSpan": 4, + "Width": 100.0, + "Height": 100.0, + "DisplayComponentName": true, + "ComponentNameAlignment": "Bottom", + "CustomComponentName": null } ] }, 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 Binary files differindex e49620e6e..18a3d889c 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 diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/ApplicationUpgradeGeneratedViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/ApplicationUpgradeGeneratedViewVM.cs index b90d73cc4..53a62404d 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/ApplicationUpgradeGeneratedViewVM.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/ApplicationUpgradeGeneratedViewVM.cs @@ -7,6 +7,7 @@ using System.Threading.Tasks; using Tango.BL.Entities; using Tango.Core.Commands; using Tango.Core.IO; +using Tango.FSE.BL; using Tango.FSE.Common; using Tango.FSE.Common.Navigation; using Tango.FSE.Common.RemoteUpgrade; @@ -187,6 +188,10 @@ namespace Tango.FSE.Upgrade.ViewModels { //Aborted... } + catch (AuthorizationException ex) + { + await NotificationProvider.ShowError(ex.Message); + } catch (Exception ex) { LogManager.Log(ex, "Error occurred while executing remote application upgrade."); diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/ApplicationUpgradeViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/ApplicationUpgradeViewVM.cs index bd901c239..fbcd87d5e 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/ApplicationUpgradeViewVM.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/ApplicationUpgradeViewVM.cs @@ -6,6 +6,7 @@ using System.Threading; using System.Threading.Tasks; using Tango.BL.Entities; using Tango.Core.Commands; +using Tango.FSE.BL; using Tango.FSE.Common; using Tango.FSE.Common.Navigation; using Tango.FSE.Common.RemoteUpgrade; @@ -92,6 +93,10 @@ namespace Tango.FSE.Upgrade.ViewModels { //Aborted... } + catch (AuthorizationException ex) + { + await NotificationProvider.ShowError(ex.Message); + } catch (Exception ex) { LogManager.Log(ex, "Error generating remote upgrade package."); diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/FirmwareUpgradeGeneratedViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/FirmwareUpgradeGeneratedViewVM.cs index ce01b5804..2bfc9e2f2 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/FirmwareUpgradeGeneratedViewVM.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/FirmwareUpgradeGeneratedViewVM.cs @@ -7,6 +7,7 @@ using System.Threading.Tasks; using Tango.BL.Entities; using Tango.BL.Enumerations; using Tango.Core.Commands; +using Tango.FSE.BL; using Tango.FSE.Common; using Tango.FSE.Common.FileAssociation; using Tango.FSE.Common.Navigation; @@ -167,6 +168,10 @@ namespace Tango.FSE.Upgrade.ViewModels { //Aborted... } + catch (AuthorizationException ex) + { + await NotificationProvider.ShowError(ex.Message); + } catch (Exception ex) { LogManager.Log(ex, "Error occurred while executing remote firmware upgrade."); diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/FirmwareUpgradeViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/FirmwareUpgradeViewVM.cs index ed434d92f..23962cd56 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/FirmwareUpgradeViewVM.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Upgrade/ViewModels/FirmwareUpgradeViewVM.cs @@ -6,6 +6,7 @@ using System.Text; using System.Threading.Tasks; using Tango.BL.Entities; using Tango.Core.Commands; +using Tango.FSE.BL; using Tango.FSE.Common; using Tango.FSE.Common.RemoteUpgrade; @@ -144,6 +145,10 @@ namespace Tango.FSE.Upgrade.ViewModels { //Aborted... } + catch (AuthorizationException ex) + { + await NotificationProvider.ShowError(ex.Message); + } catch (Exception ex) { LogManager.Log(ex, "Error generating remote firmware upgrade package."); 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 639f3dbfb..cd86ddeb8 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.3.0")] +[assembly: AssemblyVersion("1.2.0.0")] diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/RemoteUpgrade/DefaultRemoteUpgradeManager.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/RemoteUpgrade/DefaultRemoteUpgradeManager.cs index af732ddcb..fb2faf9a6 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/RemoteUpgrade/DefaultRemoteUpgradeManager.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/RemoteUpgrade/DefaultRemoteUpgradeManager.cs @@ -150,8 +150,11 @@ namespace Tango.FSE.UI.RemoteUpgrade LogManager.Log(ex, "Could not connect using SQLEXPRESS. Trying local DB..."); CmdCommand command = new CmdCommand("sqllocaldb", "start \"MSSQLLocalDB\""); + command.Timeout = TimeSpan.FromSeconds(30); var result = command.Run().Result; + LogManager.Log("local DB started. Retrieving instance information..."); + command = new CmdCommand("sqllocaldb", "info \"MSSQLLocalDB\""); result = command.Run().Result; diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs index 6f7717a90..777b1f24d 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs @@ -519,7 +519,7 @@ namespace Tango.PPC.Jobs.ViewModels ValidateBrushStops(); - CoerceBrushStopsColorSpaceChange(); + RegisterJobBrushStopsColorSpaceChange(); DyeCommand.RaiseCanExecuteChanged(); StartSampleDyeCommand.RaiseCanExecuteChanged(); @@ -657,8 +657,15 @@ namespace Tango.PPC.Jobs.ViewModels /// </summary> private bool CanStartJob() { - return - Job != null && Job.Validate(_db) && !Job.Segments.SelectMany(x => x.BrushStops).Where(x => !x.IsTransparent && !x.IsWhite).ToList().Exists(x => x.IsOutOfGamut || x.IsLiquidVolumesOutOfRange); + try + { + return Job != null && Job.Validate(_db) && !Job.Segments.SelectMany(x => x.BrushStops).Where(x => !x.IsTransparent && !x.IsWhite).ToList().Exists(x => x.IsOutOfGamut || (x.BrushColorSpace == BL.Enumerations.ColorSpaces.Volume && x.IsLiquidVolumesOutOfRange)); + } + catch (Exception ex) + { + Debug.WriteLine(ex); + return false; + } } #endregion @@ -702,7 +709,7 @@ namespace Tango.PPC.Jobs.ViewModels LogManager.Log("Adding new solid segment..."); var s = Job.AddSolidSegment(Settings.DefaultSegmentLength > 0 ? Settings.DefaultSegmentLength : 10); SetSegmentLiquidVolumes(s); - CoerceBrushStopsColorSpaceChange(); + RegisterJobBrushStopsColorSpaceChange(); return s; } catch (Exception ex) @@ -723,7 +730,7 @@ namespace Tango.PPC.Jobs.ViewModels LogManager.Log("Adding new gradient segment..."); var s = Job.AddGradientSegment(Settings.DefaultSegmentLength > 0 ? Settings.DefaultSegmentLength : 10); SetSegmentLiquidVolumes(s); - CoerceBrushStopsColorSpaceChange(); + RegisterJobBrushStopsColorSpaceChange(); return s; } catch (Exception ex) @@ -771,6 +778,7 @@ namespace Tango.PPC.Jobs.ViewModels segment.BrushStops.ToList().ForEach(x => { + x.ColorSpaceChanged -= Stop_ColorSpaceChanged; _db.BrushStops.Remove(x); }); _db.Segments.Remove(segment); @@ -826,7 +834,7 @@ namespace Tango.PPC.Jobs.ViewModels #region Brush Stops Management - private void CoerceBrushStopsColorSpaceChange() + private void RegisterJobBrushStopsColorSpaceChange() { if (Job != null) { @@ -842,6 +850,8 @@ namespace Tango.PPC.Jobs.ViewModels { BrushStop stop = sender as BrushStop; stop.Segment.BrushStops.Where(x => x != stop).ToList().ForEach(x => x.ColorSpace = stop.ColorSpace); + + DyeCommand.RaiseCanExecuteChanged(); } /// <summary> @@ -853,7 +863,7 @@ namespace Tango.PPC.Jobs.ViewModels LogManager.Log($"Adding new brush stop to segment {segment.SegmentIndex}."); segment.AddBrushStop(); SetSegmentLiquidVolumes(segment); - CoerceBrushStopsColorSpaceChange(); + RegisterJobBrushStopsColorSpaceChange(); } /// <summary> @@ -866,6 +876,7 @@ namespace Tango.PPC.Jobs.ViewModels { LogManager.Log($"removing brush stop {brushStop.StopIndex} from segment {brushStop.Segment.SegmentIndex}."); var segment = brushStop.Segment; + brushStop.ColorSpaceChanged -= Stop_ColorSpaceChanged; _db.BrushStops.Remove(brushStop); ArrangeBrushStopsIndices(segment); } @@ -956,10 +967,7 @@ namespace Tango.PPC.Jobs.ViewModels } else if (brushStop.BrushColorSpace == BL.Enumerations.ColorSpaces.Volume) { - if (vm.SelectedSuggestion != suggestions.GetCenterSuggestion()) - { - vm.SelectedSuggestion.ApplyOnBrushStop(brushStop); - } + vm.SelectedSuggestion.ApplyOnBrushStop(brushStop); } brushStop.Corrected = true; @@ -1323,7 +1331,7 @@ namespace Tango.PPC.Jobs.ViewModels if (Job != null && Job.Rml.Cct != null && IsVisible) { - var brushStops = Job.Segments.SelectMany(x => x.BrushStops).Where(x => (x.BrushColorSpace == BL.Enumerations.ColorSpaces.LAB || x.BrushColorSpace == BL.Enumerations.ColorSpaces.RGB) && !x.Corrected && !x.OutOfGamutChecked).ToList(); + var brushStops = Job.Segments.SelectMany(x => x.BrushStops).Where(x => x.ColorSpace != null).Where(x => (x.BrushColorSpace == BL.Enumerations.ColorSpaces.LAB || x.BrushColorSpace == BL.Enumerations.ColorSpaces.RGB) && !x.Corrected && !x.OutOfGamutChecked).ToList(); foreach (var stop in brushStops) { diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs index f4bbf6da3..523934985 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs @@ -227,6 +227,13 @@ namespace Tango.PPC.MachineSettings.ViewModels set { _lubricationLevels = value; RaisePropertyChangedAuto(); } } + private RmlLubricationLevelSettings _selectedLubricationLevel; + public RmlLubricationLevelSettings SelectedLubricationLevel + { + get { return _selectedLubricationLevel; } + set { _selectedLubricationLevel = value; RaisePropertyChangedAuto(); } + } + #endregion #region Commands @@ -445,6 +452,15 @@ namespace Tango.PPC.MachineSettings.ViewModels } LubricationLevels = levels; + + if (SelectedLubricationLevel != null) + { + SelectedLubricationLevel = LubricationLevels.FirstOrDefault(x => x.RmlGuid == SelectedLubricationLevel.RmlGuid); + } + else + { + SelectedLubricationLevel = LubricationLevels.FirstOrDefault(); + } } catch (Exception ex) { diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml index d105278e6..e69c57753 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml @@ -176,7 +176,7 @@ <StackPanel Margin="20 0 20 40"> <StackPanel Margin="0 40 0 0"> <TextBlock FontSize="{StaticResource TangoSmallFontSize}" Foreground="{StaticResource TangoGrayTextBrush}">Thread Type</TextBlock> - <touch:TouchComboBox x:Name="lubricationCombo" Margin="0 5 0 0" ItemsSource="{Binding LubricationLevels}" DisplayMemberPath="Name"></touch:TouchComboBox> + <touch:TouchComboBox x:Name="lubricationCombo" Margin="0 5 0 0" ItemsSource="{Binding LubricationLevels}" SelectedItem="{Binding SelectedLubricationLevel}" DisplayMemberPath="Name"></touch:TouchComboBox> </StackPanel> <StackPanel Margin="0 20 0 0"> 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 c115f4f5b..57c3c9f34 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs @@ -115,7 +115,7 @@ namespace Tango.PPC.Common.MachineUpdate _settings = SettingsManager.Default.GetOrCreate<PPCSettings>(); - _checkForUpdateTimer = new System.Timers.Timer(_settings.AutoUpdateCheckInterval.TotalMilliseconds); + _checkForUpdateTimer = new System.Timers.Timer(TimeSpan.FromSeconds(30).TotalMilliseconds); _checkForUpdateTimer.Elapsed += _checkForUpdateTimer_Elapsed; _checkForUpdateTimer.Stop(); @@ -1710,6 +1710,8 @@ namespace Tango.PPC.Common.MachineUpdate private async void _checkForUpdateTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { + _checkForUpdateTimer.Interval = _settings.AutoUpdateCheckInterval.TotalMilliseconds; + if (EnableAutoCheckForUpdates && _settings.AutoCheckForUpdates && !_isUpdating) { _checkForUpdateTimer.Stop(); @@ -1723,7 +1725,10 @@ namespace Tango.PPC.Common.MachineUpdate UpdateAvailable?.Invoke(this, response); } } - catch { } + catch (Exception ex) + { + Debug.WriteLine(ex); + } _checkForUpdateTimer.Start(); } diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingView.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingView.xaml index e45065c61..aa1c4dda1 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingView.xaml +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingView.xaml @@ -65,9 +65,11 @@ </UniformGrid> <DockPanel Margin="0 50 0 0"> <StackPanel DockPanel.Dock="Top"> - <TextBlock HorizontalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center"> - <Run>Please select the thread type you are going to load and press</Run> - <Run FontWeight="SemiBold">continue</Run> + <TextBlock HorizontalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center" LineHeight="22"> + <Run>Please follow the guide bellow for loading the thread</Run> + <LineBreak/> + <Run>Select the thread type you are loading and press</Run> + <Run FontWeight="Bold">continue</Run> </TextBlock> <touch:TouchComboBox Margin="0 40 0 0" Width="500" ItemsSource="{Binding Rmls}" SelectedItem="{Binding SelectedRml}" DisplayMemberPath="Name" Title="Select thread type"></touch:TouchComboBox> </StackPanel> @@ -77,7 +79,7 @@ <touch:TouchGifAnimation Margin="50" Source="/Images/thread_loading.gif" VerticalAlignment="Center" Stretch="Uniform" EnableAnimation="{Binding IsVisible}" /> </Grid> - <Grid> + <Grid Visibility="{Binding IsArcHead,Converter={StaticResource BooleanToVisibilityConverter}}"> <commonControls:ImageGalleryControl Duration="00:00:03"> <Image Stretch="Uniform" Source="/Images/ThreadLoading/NewThread/ReadyForLoading/arc/1.jpg"></Image> <Image Stretch="Uniform" Source="/Images/ThreadLoading/NewThread/ReadyForLoading/arc/2.jpg"></Image> 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 cec5fec28..50c394a17 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.3.0.0")] +[assembly: AssemblyVersion("1.3.2.0")] diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest b/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest index efc5f8179..d72e75011 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest @@ -16,7 +16,7 @@ Remove this element if your application requires this virtualization for backwards compatibility. --> - <!--<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />--> + <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo> diff --git a/Software/Visual_Studio/Tango.BL/Entities/Segment.cs b/Software/Visual_Studio/Tango.BL/Entities/Segment.cs index bcdfcccc4..b8e2105b0 100644 --- a/Software/Visual_Studio/Tango.BL/Entities/Segment.cs +++ b/Software/Visual_Studio/Tango.BL/Entities/Segment.cs @@ -276,13 +276,22 @@ namespace Tango.BL.Entities { BrushStop stop = new BrushStop(); - if (Job.ColorSpace != null) + var lastStop = BrushStops.OrderBy(x => x.StopIndex).LastOrDefault(); + + if (lastStop != null && lastStop.ColorSpace != null) { - stop.ColorSpace = Job.ColorSpace; + stop.ColorSpace = lastStop.ColorSpace; } - else + else if (Job != null) { - stop.ColorSpaceGuid = Job.ColorSpaceGuid; + if (Job.ColorSpace != null) + { + stop.ColorSpace = Job.ColorSpace; + } + else + { + stop.ColorSpaceGuid = Job.ColorSpaceGuid; + } } if (BrushStops.Count > 0) diff --git a/Software/Visual_Studio/Tango.SharedUI/Controls/SearchComboBox.cs b/Software/Visual_Studio/Tango.SharedUI/Controls/SearchComboBox.cs index 1f2856a32..011087d54 100644 --- a/Software/Visual_Studio/Tango.SharedUI/Controls/SearchComboBox.cs +++ b/Software/Visual_Studio/Tango.SharedUI/Controls/SearchComboBox.cs @@ -227,29 +227,29 @@ namespace Tango.SharedUI.Controls if (e.Delta > 0) { _listBox.RaiseEvent( - new KeyEventArgs( - System.Windows.Input.Keyboard.PrimaryDevice, - PresentationSource.FromVisual(_listBox), 0, Key.Down) - { RoutedEvent = System.Windows.Input.Keyboard.KeyDownEvent }); + new KeyEventArgs( + System.Windows.Input.Keyboard.PrimaryDevice, + PresentationSource.FromVisual(_listBox), 0, Key.Up) + { RoutedEvent = System.Windows.Input.Keyboard.KeyDownEvent }); _listBox.RaiseEvent( new KeyEventArgs( System.Windows.Input.Keyboard.PrimaryDevice, - PresentationSource.FromVisual(_listBox), 0, Key.Down) + PresentationSource.FromVisual(_listBox), 0, Key.Up) { RoutedEvent = System.Windows.Input.Keyboard.KeyUpEvent }); } else { _listBox.RaiseEvent( - new KeyEventArgs( - System.Windows.Input.Keyboard.PrimaryDevice, - PresentationSource.FromVisual(_listBox), 0, Key.Up) - { RoutedEvent = System.Windows.Input.Keyboard.KeyDownEvent }); + new KeyEventArgs( + System.Windows.Input.Keyboard.PrimaryDevice, + PresentationSource.FromVisual(_listBox), 0, Key.Down) + { RoutedEvent = System.Windows.Input.Keyboard.KeyDownEvent }); _listBox.RaiseEvent( new KeyEventArgs( System.Windows.Input.Keyboard.PrimaryDevice, - PresentationSource.FromVisual(_listBox), 0, Key.Up) + PresentationSource.FromVisual(_listBox), 0, Key.Down) { RoutedEvent = System.Windows.Input.Keyboard.KeyUpEvent }); } //base.OnPreviewMouseWheel(e); diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchNotificationBar.cs b/Software/Visual_Studio/Tango.Touch/Controls/TouchNotificationBar.cs index 8ed4ead69..1e5a5c8fe 100644 --- a/Software/Visual_Studio/Tango.Touch/Controls/TouchNotificationBar.cs +++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchNotificationBar.cs @@ -145,7 +145,7 @@ namespace Tango.Touch.Controls _items_control = GetTemplateChild("PART_ItemsControl") as ItemsControl; _notification_counter_grid = GetTemplateChild("PART_NotificationCounterGrid") as Grid; _scrollViewer = GetTemplateChild("PART_ScrollViewer") as LightTouchScrollViewer; - + _border_drag.RegisterForPreviewMouseOrTouchDown(GridNotificationMouseDown); _border_drag.RegisterForMouseOrTouchMove(GridNotificationMouseMove); _border_drag.RegisterForPreviewMouseOrTouchUp(GridNotificationMouseUp); @@ -169,11 +169,11 @@ namespace Tango.Touch.Controls { _grid_mask.Opacity = _border_drag.ActualHeight / ActualHeight; - if (e.NewSize.Height > CurrentMinHeight && CurrentMinHeight > 0 ) + if (e.NewSize.Height > CurrentMinHeight && CurrentMinHeight > 0) { _notification_counter_grid.Visibility = Visibility.Hidden; } - else if(Notifications.Count > 1 && CurrentMinHeight > 0) + else if (Notifications.Count > 1 && CurrentMinHeight > 0) { _notification_counter_grid.Visibility = Visibility.Visible; } @@ -201,10 +201,10 @@ namespace Tango.Touch.Controls } } - private void UpdateMinHeightByDispalyedItem() + private async void UpdateMinHeightByDispalyedItem() { var last = GetLastNotification(); - if(last != null) + if (last != null) { last.RegisterForLoadedOrNow((x, y) => { @@ -214,11 +214,16 @@ namespace Tango.Touch.Controls _grid_container.Height = CurrentMinHeight; }); } + else if (Notifications.Count > 0) + { + await Task.Delay(500); + UpdateMinHeightByDispalyedItem(); + } } - /// <summary> - /// Callback function on Notifications property - /// </summary> - private void OnNotificationsChanged() + /// <summary> + /// Callback function on Notifications property + /// </summary> + private void OnNotificationsChanged() { if (Notifications is INotifyCollectionChanged) { @@ -226,7 +231,7 @@ namespace Tango.Touch.Controls { this.BeginInvoke(() => { - if(Notifications.Count > 0) + if (Notifications.Count > 0) { UpdateMinHeightByDispalyedItem(); } @@ -239,11 +244,11 @@ namespace Tango.Touch.Controls _notification_counter_grid.Visibility = Visibility.Hidden; } }); - }; - + }; + } } - + #region Mouse handlers private void OpenNotifications() { @@ -272,7 +277,7 @@ namespace Tango.Touch.Controls tAni.Duration = TimeSpan.FromSeconds(0.3); tAni.To = new Thickness(0); _border_notifications.BeginAnimation(Border.BorderThicknessProperty, tAni); - + IsExpanded = false; Task.Delay(400).ContinueWith((x) => |
