From a20d25bb885b3ec46d63bda7263fd98faa4095c2 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 7 Oct 2020 21:40:34 +0300 Subject: winder calibration from main EEPROM (for #3782, #3761). waste prepare (#2995) increased suction after job (#2994) --- Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c') diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index f4d34284d..4ec45c5b8 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -17,7 +17,7 @@ #include "Common/report/report.h" #include "drivers/FPGA/FPGA.h" - +#include "drivers/Flash_ram/MCU_E2Prom.h" #include "drivers/FPGA/FPGA_SPI_Comm.h" #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" @@ -102,15 +102,22 @@ char ScrewStr[150]; uint32_t InternalWindingConfigMessage(JobSpool* request) { uint32_t status = PASSED; + int limitswitchstartpointoffset = 0; InternalWinderCfg.segmentoffsetpulses = request->segmentoffsetpulses; InternalWinderCfg.spoolbackingrate = request->backingrate; InternalWinderCfg.startoffsetpulses = request->startoffsetpulses; if (request->has_limitswitchstartpointoffset) { - InternalWinderCfg.startoffsetpulses += request->limitswitchstartpointoffset; + //InternalWinderCfg.startoffsetpulses += request->limitswitchstartpointoffset; Report("limit switch start point offset",__FILE__,__LINE__,(int)(request->startoffsetpulses),RpWarning,(int)(request->limitswitchstartpointoffset), 0); } + status |= MCU_E2PromRead(EEPROM_STORAGE_WINDER_CALIBRATION,&limitswitchstartpointoffset); + if ((status!= OK )||(limitswitchstartpointoffset == 0xFFFF)) + limitswitchstartpointoffset = 0; + Report("limit switch start point offset",__FILE__,(int)(request->startoffsetpulses),(int)(limitswitchstartpointoffset),RpWarning,status, 0); + InternalWinderCfg.startoffsetpulses += limitswitchstartpointoffset; + InternalWinderCfg.SpoolBottomBackingRate = request->bottombackingrate; InternalWinderCfg.NumberOfRotationPerPassage = 3.1415926*3;//request->rotationsperpassage; if (request->rotationsperpassage > 6.1) -- cgit v1.3.1 From 74c1d6a5f8f905d03abea94a2b5bf5ef1d12eb71 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 8 Oct 2020 11:01:57 +0300 Subject: remove compilation warnings --- Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c | 1 - .../I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c | 2 -- .../I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c | 3 +-- .../Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c | 1 - Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c | 7 ++++--- Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c | 1 - Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 3 +-- Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c | 4 +++- Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c | 6 ++---- Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c | 1 - .../Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c | 4 ++-- .../Embedded/StateMachines/Initialization/PowerOffSequence.c | 4 ++-- 12 files changed, 15 insertions(+), 22 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c') diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c index 21056e162..95651eba2 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c @@ -434,7 +434,6 @@ uint32_t Read_Speed_Sensor_TypeII()//must be delay between Set_Speed_Sensor_Type temp1/=F1_Prescaler1_reg6; Speed_Hz = temp1; #endif - #warning change the speed from Hz to Cm/Sec return Speed_Hz; } 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 f7253a2e2..fff11f493 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 @@ -396,8 +396,6 @@ double GetWHSAirFlow(uint8_t OR_Id) //------------------------------ waste volume measurement ------------------------------ -#warning need to update low and high limits and to read the eeprom on the initialization - double DefaultCoefficient = 10.5;//Coefficient is 10.5mV/mm for TI (not water). 9.72//TBD double Coefficient_LowLimit = 0;//TBD double Coefficient_HighLimit = 255;//TBD diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c index 9e626ec7f..4484f1932 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c @@ -175,7 +175,6 @@ bool WHS_init_Blower() bool LDACn_value = true; bool AUXn_value = true; bool update = 0; - int i; /* ---- config the WHS card 9555 configuration ----*/ @@ -630,7 +629,7 @@ uint32_t WHS_Pid_Testing_Func(double setParam,double measuredParam) { float calculated_speed; //float avreageSampleValue = 0; - int i; + //int i; /*WhsBlowerSamples[WhsBlowerSamplesPointer] = measuredParam;//(-1 * TranslatedReadValue); WhsBlowerSamplesPointer++; diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c index 4cd91443b..71343c78f 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c @@ -631,7 +631,6 @@ uint32_t Diagnostics_Dryer_Loading_Callback(uint32_t MotorId, uint32_t ReadValue uint32_t Diagnostics_Dryer_Loading(void) { //float Calc_angle; -#warning assuming loading starts from 0 if (dryerbufferlength) LoadArmRounds = (int)dryerbufferlength; MCU_E2PromRead(EEPROM_STORAGE_DRYER_CENTER,&D_DrierPrevLocation); diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 6f5b5fe23..3f5e4f5b2 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -837,10 +837,11 @@ void FlashInitAndLoad(void) uint32_t Bytes = 0; ConfigurationParameters *Params = NULL; - ProcessParameters* ProcessParams = NULL; - UploadProcessParametersRequest* request = NULL; + //ProcessParameters* ProcessParams = NULL; + //UploadProcessParametersRequest* request = NULL; + + //char ProcessParamsPath[50] = "0://SysInfo//ProcessP.cfg"; - char ProcessParamsPath[50] = "0://SysInfo//ProcessP.cfg"; #ifdef WATCHDOG ROM_WatchdogResetDisable(WATCHDOG0_BASE); uint32_t timeout = 0xFFFFFFFFU; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 2abcc2b31..1568e51c5 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -1115,7 +1115,6 @@ uint32_t HeaterBlowerMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue) uint32_t BlowerPt100Read = 0; int index=HEATER_TYPE_MAX_HEATERS; - int32_t MaxreadValue; if (IfIndex>>8 != IfTypeHeaters) { diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 0d81e5447..b52f8b908 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -558,7 +558,6 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl int i; int NumofReadyDispensers = 0; TimerMotors_t HW_Motor_Id; - float updatedSpeed,tempSpeed; JobDispenser **Dispensers; //set the speed only before the first segment, speed is constant accros job int Dispenser_i,n_dispensers; @@ -1230,7 +1229,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); } if (segmentfirst_speed > MINIMAL_MOTOR_SPEED) { - char IdMessage[100]; + //char IdMessage[100]; segmentfirst_speed *= (100+WFCF); segmentfirst_speed /= 100; DispenserSegmentReady[DispenserId] = false; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index 4ec45c5b8..c37617037 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -363,7 +363,9 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag) { //uint32_t Steps; double temp,tempScrewSpeed; - int i,tempmot; +#ifdef FOUR_WINDERS + int tempmot; +#endif //double screw_horizontal_speed = 0; //double RotationsPerSecond; if (WinderMotorSpeedCounter++>=MAX_WINDER_SPEED_CALCULATION) diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index e7336cc9d..f13f76cfb 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -560,7 +560,6 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) //extern int MotorSamplePointer[MAX_THREAD_MOTORS_NUM]; //read value is the dancer angle int i,index=MAX_THREAD_MOTORS_NUM; - int len; int DancerId; int32_t TranslatedReadValue, avreageSampleValue = 0;//,avreageMotorSampleValue = 0; //double tempcalcspeed = 0; @@ -747,7 +746,7 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) if (index >= WINDER_MOTOR) { // FirstCalcInJob = false; - len = usnprintf(ATMessage[index], 150, "index %d read %d avg %d error(6) %d integral(9) %d,delta(9) %d, calc(3) %d speed %d %d",index-WINDER_MOTOR+1, + usnprintf(ATMessage[index], 150, "index %d read %d avg %d error(6) %d integral(9) %d,delta(9) %d, calc(3) %d speed %d %d",index-WINDER_MOTOR+1, TranslatedReadValue,avreageSampleValue,(int)(MotorControlConfig[index].m_mesuredParam*1000000), (int)(MotorControlConfig[index].m_integral*1000000000),(int)((MotorControlConfig[index].m_mesuredParam*MotorControlConfig[index].m_params.dt)*1000000000), (int)(MotorControlConfig[index].m_calculatedError*1000),(int)calculated_speed, (int)(InitialDryerSpeed*100/OriginalMotorSpd_2PPS[DRYER_MOTOR])); @@ -784,7 +783,6 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) ReportWithPackageFilter(ThreadFilter,"MotorSpeedUpdated",__FILE__,index,(int)OriginalMotorSpd_2PPS[index],RpWarning,(int)CurrentControlledSpeed[index],0); }*/ #ifdef TEST_PID_THREAD - int len; if ((JobCounter % 2000) == index*100) //if (keepdata == true) { @@ -796,7 +794,7 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) NormError[controlIndex] = MotorControlConfig[index].m_mesuredParam; mIntegral[controlIndex] = MotorControlConfig[index].m_integral; timestamp[controlIndex] = msec_millisecondCounter;*/ - len = usnprintf(TMessage, 150, "read %d avg %d error(6) %d integral(9) %d,delta(9) %d, calc(3) %d speed %d", + usnprintf(TMessage, 150, "read %d avg %d error(6) %d integral(9) %d,delta(9) %d, calc(3) %d speed %d", ReadValue,avreageSampleValue,(int)(MotorControlConfig[index].m_mesuredParam*1000000), (int)(MotorControlConfig[index].m_integral*1000000000),(int)((MotorControlConfig[index].m_mesuredParam*MotorControlConfig[index].m_params.dt)*1000000000), (int)(MotorControlConfig[index].m_calculatedError*1000),(int)calculated_speed); diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c index fa89164d3..1ace8a50b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c @@ -330,7 +330,6 @@ uint32_t Waste_DoorOpenDuringEmptying(uint32_t IfIndex, uint32_t ReadValue) } } return OK; -#warning add alarm on door open } void Waste_StateMachine_OneSecond_Call(void) diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c index 57da1574b..604324948 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c @@ -187,7 +187,7 @@ bool getIdleState (void) {return powerIdleState;} uint32_t OutOfIdleUpdate(bool last) { uint32_t status = NOT_SUPPORTED; - +/* double calculate; int result = 0; MessageContainer responseContainer; @@ -197,7 +197,7 @@ uint32_t OutOfIdleUpdate(bool last) if (PowerUpToken[0] == 0) return OK; -/* response.has_state = true; + response.has_state = true; response.has_progresspercentage = true; if (last == false) diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index 15f363b9a..0a980159d 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -286,7 +286,7 @@ uint32_t PowerOffWaitForProcessesCallback(uint32_t IfIndex, uint32_t BusyFlag) } } if ((WHS_IsEmptying()|| - //MidTankFillingActive()|| + IFS_MidTankFilling()|| ThreadLoadingActive()|| SwUpgradeActive()|| (HomingActive == true))&& @@ -321,7 +321,7 @@ uint32_t PowerOffWaitForProcesses(void) } if (WHS_IsEmptying()|| - //MidTankFillingActive()|| + IFS_MidTankFilling()|| ThreadLoadingActive()|| SwUpgradeActive()|| (HomingActive == true)) -- cgit v1.3.1 From 4f6c4ab918bb92b91051633eab83c3b1b5e8b4dc Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 14 Oct 2020 14:50:51 +0300 Subject: winder prepare failure fix. cancel cleaning job on power down. --- .../Embedded/Common/Utilities/RFIDTagHandling.c | 104 ++++++++++----------- Software/Embedded_SW/Embedded/DataDef.h | 7 ++ .../I2C_Communication/RFID_NFC/RFIDTagInfo.h | 97 ++++++++++++------- Software/Embedded_SW/Embedded/Embedded.cfg | 2 +- .../Embedded/Modules/General/GeneralHardware.c | 8 +- .../Embedded/Modules/Thread/Thread_Winder.c | 3 +- .../Initialization/PowerOffSequence.c | 13 +++ .../Initialization/PowerOffSequence.h | 1 + .../Messages/Diagnostics/CartridgeTagContent.proto | 4 +- .../stubs/embeddedparametersbuild_w_cleaning.cs | 5 + 10 files changed, 153 insertions(+), 91 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c') diff --git a/Software/Embedded_SW/Embedded/Common/Utilities/RFIDTagHandling.c b/Software/Embedded_SW/Embedded/Common/Utilities/RFIDTagHandling.c index 2bb073bf8..7bc1c2e54 100644 --- a/Software/Embedded_SW/Embedded/Common/Utilities/RFIDTagHandling.c +++ b/Software/Embedded_SW/Embedded/Common/Utilities/RFIDTagHandling.c @@ -170,56 +170,56 @@ CartridgeTagContent * NFCTag_Tag2PPC(NFCTag_t *Tag) cartridge_tag_content__init(PpcTag); - strncpy(PpcTag->taguniqueid , Tag->TagUniqueID,sizeof(Tag->TagUniqueID)); - strncpy(PpcTag->cartsn , Tag->CartSN,sizeof(Tag->CartSN)); - strncpy(PpcTag->workorder , Tag->WorkOrder,sizeof(Tag->WorkOrder)); - strncpy(PpcTag->colorname , Tag->ColorName,sizeof(Tag->ColorName)); - strncpy(PpcTag->inkbatchno , Tag->InkBatchNo,sizeof(Tag->InkBatchNo)); - strncpy(PpcTag->inkmfgdate , Tag->InkMFGDate,sizeof(Tag->InkMFGDate)); - strncpy(PpcTag->inkeoldate , Tag->InkEOLDate,sizeof(Tag->InkEOLDate)); + strncpy(PpcTag->taguniqueid , Tag->tagId,sizeof(Tag->tagId)); + strncpy(PpcTag->cartsn , Tag->Serial,sizeof(Tag->Serial)); + strncpy(PpcTag->workorder , Tag->workOrder,sizeof(Tag->workOrder)); + strncpy(PpcTag->colorname , Tag->colorName,sizeof(Tag->colorName)); + strncpy(PpcTag->inkbatchno , Tag->inkBatch,sizeof(Tag->inkBatch)); + strncpy(PpcTag->inkmfgdate , Tag->inkMfgDate,sizeof(Tag->inkMfgDate)); + strncpy(PpcTag->inkeoldate , Tag->inkEolDate,sizeof(Tag->inkEolDate)); strncpy(PpcTag->cartfilldate , Tag->CartFillDate,sizeof(Tag->CartFillDate)); strncpy(PpcTag->wastefilldate , Tag->WasteFillDate,sizeof(Tag->WasteFillDate)); - strncpy(PpcTag->machineidinl , Tag->MachineIdINL,sizeof(Tag->MachineIdINL)); - strncpy(PpcTag->machineidwst , Tag->MachineIdWST,sizeof(Tag->MachineIdWST)); - strncpy(PpcTag->spare , Tag->Spare,sizeof(Tag->Spare)); + strncpy(PpcTag->machineidinl , Tag->MachineIdInl,sizeof(Tag->MachineIdInl)); + strncpy(PpcTag->machineidwst , Tag->MachineIdWst,sizeof(Tag->MachineIdWst)); + strncpy(PpcTag->spare , Tag->reserved,sizeof(Tag->reserved)); strncpy(PpcTag->hashvalue , Tag->HashValue,sizeof(Tag->HashValue)); PpcTag->has_inkfactoryid = true; - PpcTag->inkfactoryid = Tag->InkFactoryID; + PpcTag->inkfactoryid = (uint32_t)Tag->factoryID; PpcTag->has_fillsysid = true; - PpcTag->fillsysid = Tag->FillSysID; + PpcTag->fillsysid = Tag->fillingSystem; PpcTag->has_inkcategory = true; - PpcTag->inkcategory = Tag->InkCategory; + PpcTag->inkcategory = Tag->catagory; PpcTag->has_type_rev = true; - PpcTag->type_rev = Tag->Type_Rev; + PpcTag->type_rev = Tag->type; PpcTag->has_cartridgesize = true; - PpcTag->cartridgesize = Tag->CartridgeSize; + PpcTag->cartridgesize = Tag->cartSize; PpcTag->has_filedinkvol = true; - PpcTag->filedinkvol = Tag->FiledInkVol; + PpcTag->filedinkvol = Tag->inkVolume; PpcTag->has_misc = true; PpcTag->misc = Tag->Misc; PpcTag->has_plugincounter = true; - PpcTag->plugincounter = Tag->PluginCounter; + PpcTag->plugincounter = Tag->pluginCounter; PpcTag->has_inkfillstatus = true; - PpcTag->inkfillstatus = Tag->InkFillStatus; + PpcTag->inkfillstatus = Tag->inkFill; PpcTag->has_inkusedstatus = true; - PpcTag->inkusedstatus = Tag->InkUsedStatus; + PpcTag->inkusedstatus = Tag->inkUsed; PpcTag->has_inkemptystatus = true; - PpcTag->inkemptystatus = Tag->InkEmptyStatus; + PpcTag->inkemptystatus = Tag->inkEmpty; PpcTag->has_inkemptystatus = true; - PpcTag->inkemptystatus = Tag->WasteEmptyStatus; + PpcTag->inkemptystatus = Tag->wasteEmpty; PpcTag->has_wastefillingstatus = true; - PpcTag->wastefillingstatus = Tag->WasteFillingStatus; + PpcTag->wastefillingstatus = Tag->wasteFilling; PpcTag->has_wastefullstatus = true; - PpcTag->wastefullstatus = Tag->WasteFullStatus; + PpcTag->wastefullstatus = Tag->wasteFull; PpcTag->has_blocked = true; - PpcTag->blocked = Tag->Blocked; + PpcTag->blocked = Tag->blocked; PpcTag->has_fail = true; - PpcTag->fail = Tag->Fail; + PpcTag->fail = Tag->fail; PpcTag->has_wastecounter = true; - PpcTag->wastecounter = Tag->WasteCounter; + PpcTag->wastecounter = Tag->counter; return PpcTag; } @@ -230,50 +230,50 @@ CartridgeTagContent * NFCTag_Tag2PPC(NFCTag_t *Tag) return NULL; memset (Tag,0,sizeof(Tag)); - strncpy(Tag->TagUniqueID , PpcTag->taguniqueid,sizeof(Tag->TagUniqueID)); - strncpy(Tag->CartSN , PpcTag->cartsn,sizeof(Tag->CartSN)); + strncpy(Tag->tagId , PpcTag->taguniqueid,sizeof(Tag->tagId)); + strncpy(Tag->Serial , PpcTag->cartsn,sizeof(Tag->Serial)); if (PpcTag->has_inkfactoryid == true) - Tag->InkFactoryID = PpcTag->inkfactoryid; + memcpy(Tag->factoryID,PpcTag->inkfactoryid,3); if (PpcTag->has_fillsysid == true) - Tag->FillSysID = PpcTag->fillsysid; - strncpy(Tag->ColorName , PpcTag->colorname,sizeof(Tag->ColorName)); - strncpy(Tag->WorkOrder , PpcTag->workorder ,sizeof(Tag->WorkOrder)); + Tag->fillingSystem = PpcTag->fillsysid; + strncpy(Tag->colorName , PpcTag->colorname,sizeof(Tag->colorName)); + strncpy(Tag->workOrder , PpcTag->workorder ,sizeof(Tag->workOrder)); if (PpcTag->has_inkcategory == true) - Tag->InkCategory = PpcTag->inkcategory; + memcpy( Tag->catagory, PpcTag->inkcategory,sizeof(Tag->catagory)); if (PpcTag->has_type_rev == true) - Tag->Type_Rev = PpcTag->type_rev; + Tag->type = PpcTag->type_rev; if (PpcTag->has_cartridgesize == true) - Tag->CartridgeSize = PpcTag->cartridgesize; + Tag->cartSize = PpcTag->cartridgesize; if (PpcTag->has_filedinkvol == true) - Tag->FiledInkVol = PpcTag->filedinkvol; - strncpy(Tag->InkBatchNo , PpcTag->inkbatchno,sizeof(Tag->InkBatchNo)); - strncpy(Tag->InkMFGDate , PpcTag->inkmfgdate,sizeof(Tag->InkMFGDate)); - strncpy(Tag->InkEOLDate , PpcTag->inkeoldate,sizeof(Tag->InkEOLDate)); + Tag->inkVolume = PpcTag->filedinkvol; + strncpy(Tag->inkBatch , PpcTag->inkbatchno,sizeof(Tag->inkBatch)); + strncpy(Tag->inkMfgDate , PpcTag->inkmfgdate,sizeof(Tag->inkMfgDate)); + strncpy(Tag->inkEolDate , PpcTag->inkeoldate,sizeof(Tag->inkEolDate)); strncpy(Tag->CartFillDate , PpcTag->cartfilldate,sizeof(Tag->CartFillDate)); strncpy(Tag->WasteFillDate , PpcTag->wastefilldate,sizeof(Tag->WasteFillDate)); if (PpcTag->has_plugincounter == true) - Tag->PluginCounter = PpcTag->plugincounter; + Tag->pluginCounter = PpcTag->plugincounter; if (PpcTag->has_inkfillstatus == true) - Tag->InkFillStatus = PpcTag->inkfillstatus; + Tag->inkFill = PpcTag->inkfillstatus; if (PpcTag->has_inkusedstatus == true) - Tag->InkUsedStatus = PpcTag->inkusedstatus; + Tag->inkUsed = PpcTag->inkusedstatus; if (PpcTag->has_inkemptystatus == true) - Tag->InkEmptyStatus = PpcTag->inkemptystatus; + Tag->inkEmpty = PpcTag->inkemptystatus; if (PpcTag->has_wasteemptystatus == true) - Tag->WasteEmptyStatus = PpcTag->wasteemptystatus; + Tag->wasteEmpty = PpcTag->wasteemptystatus; if (PpcTag->has_wastefillingstatus == true) - Tag->WasteFillingStatus = PpcTag->wastefillingstatus; + Tag->wasteFilling = PpcTag->wastefillingstatus; if (PpcTag->has_wastefullstatus == true) - Tag->WasteFullStatus = PpcTag->wastefullstatus; + Tag->wasteFull = PpcTag->wastefullstatus; if (PpcTag->has_blocked == true) - Tag->Blocked = PpcTag->blocked; + Tag->blocked = PpcTag->blocked; if (PpcTag->has_fail == true) - Tag->Fail = PpcTag->fail; + Tag->fail = PpcTag->fail; if (PpcTag->has_wastecounter == true) - Tag->WasteCounter = PpcTag->wastecounter; - strncpy(Tag->MachineIdINL , PpcTag->machineidinl,sizeof(Tag->MachineIdINL)); - strncpy(Tag->MachineIdWST , PpcTag->machineidwst,sizeof(Tag->MachineIdWST)); - strncpy(Tag->Spare,PpcTag->spare ,sizeof(Tag->Spare)); + Tag->wasteCounter = PpcTag->wastecounter; + strncpy(Tag->MachineIdInl , PpcTag->machineidinl,sizeof(Tag->MachineIdInl)); + strncpy(Tag->MachineIdWst , PpcTag->machineidwst,sizeof(Tag->MachineIdWst)); + strncpy(Tag->reserved,PpcTag->spare ,sizeof(Tag->reserved)); strncpy(Tag->HashValue,PpcTag->hashvalue ,sizeof(Tag->HashValue)); return Tag; diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index e8410aaa6..cfd8660da 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -70,6 +70,13 @@ enum VERIFIED = 255 }; +typedef enum Status_Enum +{ + S_NA, + S_SUCCEEDED, + S_FAILED +}STATUS_ENUM; + #define OK 0 #define ERROR 1 diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/RFIDTagInfo.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/RFIDTagInfo.h index 1df9f3949..70e82cb39 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/RFIDTagInfo.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/RFIDTagInfo.h @@ -10,45 +10,74 @@ typedef struct { - char TagUniqueID[8]; //RFID Tag unique ID - char CartSN[16]; //Cartridge serial number - uint32_t InkFactoryID:24; //Ink factory ID - uint32_t FillSysID:16; //Filling system ID number - char WorkOrder[10]; //Color description / ID - char ColorName[12]; //Color description / ID - uint32_t InkCategory:16; //Ink category (TBD) - uint32_t Type_Rev; //TBD – can be formulation # - uint32_t CartridgeSize; //Size in cc - uint32_t FiledInkVol; //Size in cc - char InkBatchNo[10]; //MFG batch No’ - char InkMFGDate[8]; //Date Ink was manufactured (20L container bar-code) - char InkEOLDate[8]; //Ink end of life date - char CartFillDate[8]; //Date cartridge was filled with ink (CFS) - char WasteFillDate[8]; //Date cartridge was filled with waste (Machine) - uint32_t Misc; - uint32_t PluginCounter:16; //Number of times cartridge was plugged in INK Slot - char InkFillStatus; //State indicator - successful state change when starting to fill mid. tank - char InkUsedStatus; - char InkEmptyStatus; - char WasteEmptyStatus; - char WasteFillingStatus; - char WasteFullStatus; - char Blocked; - char Fail; - uint32_t WasteCounter:16; - char MachineIdINL[16]; - char MachineIdWST[16]; - char Spare[13]; - uint32_t Counter; - char TagValid; - char HashValue[32]; - uint32_t Checksum_CRC16:16; + uint8_t tagId[8]; //RFID Tag unique ID + uint8_t Serial[16]; //Cartridge serial number + uint8_t factoryID[3]; //Ink factory ID + uint8_t Padding_1_8bit; //** NA ** Union Padding for 32 bit + //---------------------- + uint16_t fillingSystem; //Filling system ID number + uint8_t workOrder[10]; //Color description / ID + //---------------------- + uint8_t colorName[12]; //Color description / ID + //---------------------- + uint8_t catagory[2]; //Ink category (TBD) + uint16_t Paddind_1_16bit; //** NA ** Union Padding for 32 bit + //---------------------- + uint32_t type; //TBD – can be formulation # + //---------------------- + uint32_t cartSize; //Size in cc + //---------------------- + uint32_t inkVolume; //Size in cc + //---------------------- + uint8_t inkBatch[10]; //MFG batch No’ + uint16_t Paddind_2_16bit; //** NA ** Union Padding for 32 bit + //---------------------- + uint8_t inkMfgDate[8]; //Date Ink was manufactured (20L container bar-code) + //---------------------- + uint8_t inkEolDate[8]; //Ink end of life date + //---------------------- + uint8_t CartFillDate[8]; //Date cartridge was filled with ink (CFS) + //---------------------- + uint8_t WasteFillDate[8];//Date cartridge was filled with waste (Machine) + //---------------------- + uint32_t Misc; + //---------------------- + uint16_t pluginCounter; //Number of times cartridge was plugged in INK Slot + uint8_t inkFill; //State indicator - successful state change when starting to fill mid. tank + uint8_t inkUsed; + //---------------------- + uint8_t inkEmpty; + uint8_t wasteEmpty; + uint8_t wasteFilling; + uint8_t wasteFull; + //---------------------- + uint8_t blocked; + uint8_t fail; + uint16_t wasteCounter; + //---------------------- + uint8_t MachineIdInl[16]; + //---------------------- + uint8_t MachineIdWst[16]; + //---------------------- + uint8_t reserved[13]; + uint8_t Paddind_2_8bit; //** NA ** Union Padding for 32 bit + uint16_t Paddind_3_16bit; //** NA ** Union Padding for 32 bit + //---------------------- + uint32_t counter; + //---------------------- + uint8_t tagValid; + uint8_t Paddind_3_8bit; //** NA ** Union Padding for 32 bit + uint16_t Paddind_4_16bit; //** NA ** Union Padding for 32 bit + //---------------------- + uint8_t HashValue[16]; + //---------------------- + uint64_t Checksum_CRC16; //16 bit? }NFCTag_t; typedef union { NFCTag_t Struct; - char Buf[sizeof(NFCTag_t)]; + uint8_t Buf[sizeof(NFCTag_t)]; }NFC_Tag; #endif /* DRIVERS_I2C_COMMUNICATION_RFID_NFC_RFIDTAGINFO_H_ */ diff --git a/Software/Embedded_SW/Embedded/Embedded.cfg b/Software/Embedded_SW/Embedded/Embedded.cfg index f41e56966..f79d85b99 100644 --- a/Software/Embedded_SW/Embedded/Embedded.cfg +++ b/Software/Embedded_SW/Embedded/Embedded.cfg @@ -171,7 +171,7 @@ Program.global.Diagnostics = Task.create("&DiagnosticsTask", DiagnosticsTaskPara var MillisecLowTaskParams = new Task.Params(); MillisecLowTaskParams.instance.name = "MilliSecondLow"; -MillisecLowTaskParams.stackSize = 2048; +MillisecLowTaskParams.stackSize = 4096; MillisecLowTaskParams.priority = 3; Program.global.millisecLow = Task.create("&MillisecLowTask", MillisecLowTaskParams); diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 3f5e4f5b2..774fd105b 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -243,7 +243,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters->has_startheatingoninitsequence = true; EmbeddedParameters->startheatingoninitsequence = true; //set to true shlomo 14/5/2019 - EmbeddedParameters->n_generalparameters = 8; + EmbeddedParameters->n_generalparameters = 9; EmbeddedParameters->generalparameters = malloc (sizeof(double)*10); if (EmbeddedParameters->generalparameters) { @@ -255,6 +255,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters->generalparameters[5] = 1000.0; //Dispenser initial pressure speed EmbeddedParameters->generalparameters[6] = Diagnostic_Extended_Mode; //Diagnostic Mode SetDiagnosticMode EmbeddedParameters->generalparameters[7] = AutoHoming_JobEnd_PowerOn_off; // + EmbeddedParameters->generalparameters[8] = false; // } EmbeddedParameters->has_currentalarmlowlimit = true; @@ -394,6 +395,11 @@ uint32_t EmbeddedParametersInit(void) else if (EmbeddedParameters->generalparameters[7]< 3.5) IDS_Dispenser_SetAutoHoming_Config(AutoHoming_JobEnd_PowerOn_off); else Report("SetAutoHoming_Config error", __FILE__,__LINE__,(int)(EmbeddedParameters->generalparameters[7]*100), RpMessage, 0, 0); } + if (EmbeddedParameters->n_generalparameters >= 9) + { + if (EmbeddedParameters->generalparameters[9]< 0.5) setPowerOffDisableCleaning(false); + else setPowerOffDisableCleaning(true); + } PowerIdleSetParameters(EmbeddedParameters->switchtoidletimeinseconds,EmbeddedParameters->idledriertemperature,EmbeddedParameters->idleheadtemperature,EmbeddedParameters->idlemixertemperature); return Fresult; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index c37617037..0440d2241 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -120,7 +120,7 @@ uint32_t InternalWindingConfigMessage(JobSpool* request) InternalWinderCfg.SpoolBottomBackingRate = request->bottombackingrate; InternalWinderCfg.NumberOfRotationPerPassage = 3.1415926*3;//request->rotationsperpassage; - if (request->rotationsperpassage > 6.1) + if (request->rotationsperpassage > 5.1) InternalWinderCfg.NumberOfRotationPerPassage = request->rotationsperpassage; if (NumberOfRotationPerPassage > 1) { @@ -248,6 +248,7 @@ uint32_t Winder_PrepareStage2(uint32_t deviceID, uint32_t ReadValue) LOG_ERROR(deviceID,"Screw failed to reach the limit switch!!"); //returned with a timeout Winder_ScrewAtOffsetCallback(0,0); + PrepareReady(Module_Winder, ModuleFail); } else //short jog, etc { diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index 8f6f2a781..d3ef81a50 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -71,6 +71,12 @@ bool PowerOffInProcess = false; #define POWER_OFF_TEMP_THRESHOLD 5000 //50 celsious int32_t PowerOffTemperatureThreshold = POWER_OFF_TEMP_THRESHOLD; +bool PowerOffDisableCleaning = false; +void setPowerOffDisableCleaning (bool value) +{ + PowerOffDisableCleaning = value; + REPORT_MSG(PowerOffDisableCleaning, "Set PowerOffDisableCleaning"); +} bool PowerOffInProcessGetState(void) { return PowerOffInProcess; @@ -140,6 +146,13 @@ uint32_t PowerOffHeadClean(void) //TBD if (AutoHoming_Config >= AutoHoming_PowerOff ) AutoHoming_Config = AutoHoming_JobEnd_PowerOn_off; + if (PowerOffDisableCleaning == true) + { + LOG_ERROR(0,"Clean job skipped!!!!!!!"); + PowerOffMachineState++; + SetMachineStatus(MACHINE_STATE__PowerOff); + return OK; + } if (ThreadCleaningJob(50) == OK) { if (PowerOffHeadCleanControlId != 0xFF) diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.h b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.h index 5f347c5ba..10dd4c71e 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.h +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.h @@ -35,6 +35,7 @@ void PowerOffSetTemperatureThreshold (int32_t temperature); //celsius temperatur bool PowerOffInProcessGetState(void); uint32_t PowerOffHeatersOff(void); +void setPowerOffDisableCleaning (bool value); uint32_t PowerDownUpdateFunc(MessageContainer* requestContainer); uint32_t AbortPowerDownFunc(MessageContainer* requestContainer); diff --git a/Software/PMR/Messages/Diagnostics/CartridgeTagContent.proto b/Software/PMR/Messages/Diagnostics/CartridgeTagContent.proto index 37931ae0c..3ed18713c 100644 --- a/Software/PMR/Messages/Diagnostics/CartridgeTagContent.proto +++ b/Software/PMR/Messages/Diagnostics/CartridgeTagContent.proto @@ -12,10 +12,10 @@ message CartridgeTagContent string WorkOrder = 5; //Color description / ID string ColorName = 6; //Color description / ID uint32 InkCategory = 7; //Ink category (TBD) - uint32 Type_Rev = 8; //TBD – can be formulation # + uint32 Type_Rev = 8; //TBD – can be formulation # uint32 CartridgeSize = 9; //Size in cc uint32 FiledInkVol = 10; //Size in cc - string InkBatchNo = 11; //MFG batch No’ + string InkBatchNo = 11; //MFG batch No’ string InkMFGDate = 12; //Date Ink was manufactured (20L container bar-code) string InkEOLDate = 13; //Ink end of life date string CartFillDate = 14; //Date cartridge was filled with ink (CFS) diff --git a/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs b/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs index 0f8794799..d0d78f61e 100644 --- a/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs +++ b/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs @@ -136,6 +136,11 @@ Double SetAutoFill = new Double(); SetAutoFill = 3.0; configurationParameters.GeneralParameters.Add(SetAutoFill); +double PowerOffDisableCleaning = new Double(); +PowerOffDisableCleaning = 0.0 +configurationParameters.GeneralParameters.Add(PowerOffDisableCleaning); + + File.WriteAllBytes("C:/temp/EmbParam.cfg",configurationParameters.ToBytes()); byte[] fileBytes = File.ReadAllBytes("C:/temp/EmbParam.cfg"); -- cgit v1.3.1