diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-12-03 12:28:18 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-12-03 12:28:18 +0200 |
| commit | af782aca2364948527c1107a02428897fb8382a1 (patch) | |
| tree | 788c3e9bdf2dcc41188f710a2f05cd5e1e8acc9d /Software/Embedded_SW/Embedded/StateMachines | |
| parent | fbfe1b3cc3024a6b0401fb0a2c53bead70462338 (diff) | |
| download | Tango-af782aca2364948527c1107a02428897fb8382a1.tar.gz Tango-af782aca2364948527c1107a02428897fb8382a1.zip | |
thread loading, mostly
Diffstat (limited to 'Software/Embedded_SW/Embedded/StateMachines')
| -rw-r--r-- | Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c | 116 | ||||
| -rw-r--r-- | Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c | 2 |
2 files changed, 70 insertions, 48 deletions
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index 21bf400de..dedf8ba98 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -109,6 +109,7 @@ HeadCleaningParameters *CleaningParameters = NULL; bool CopyConfigured[MAX_SYSTEM_MODULES]; bool CleaningJobActive = false, JoggingJobActive = false; char ErrorMsg[100]; +uint32_t JobEndTimeMillisec = 0; ModuleStateEnum PrepareWaiting[MAX_SYSTEM_MODULES] = {ModuleIdle,ModuleIdle,ModuleIdle,ModuleIdle,ModuleIdle}; double job_length = 0.0; @@ -396,58 +397,77 @@ uint32_t ThreadJoggingFunc(int speed) { ProcessParameters ProcessParametersCopy; uint32_t status = OK; - if ((JobIsActive() == true)||(JoggingJobActive == true)||(MachineReadyForHeating == false)||(FPGABurningActive==true)) +// JobEndTimeMillisec = msec_millisecondCounter; + + if (JobIsActive() == true) { - status = ERROR; - Report("Jog JobIsActive or machine initialisation", __FILE__, __LINE__, JobIsActive(), RpWarning, JoggingJobActive, 0); + Report("cannot jog while JobIsActive", __FILE__, __LINE__, JobIsActive(), RpWarning, JoggingJobActive, 0); + return ERROR; } - else + if (JoggingJobActive == true) { - //memcpy(&CopyConfigured,&Configured,sizeof(CopyConfigured)); - //usnprintf(ErrorMsg, 80,"Copy Configured T %d W %d I %d H %d W %d",CopyConfigured[Module_Thread],CopyConfigured[Module_Winder],CopyConfigured[Module_IDS],CopyConfigured[Module_Heaters],CopyConfigured[Module_Waste]); - //Report(ErrorMsg, __FILE__, __LINE__, 0, RpWarning, 0, 0); + Report("cannot jog while JoggingJobActive", __FILE__, __LINE__, JoggingJobActive, RpWarning, JoggingJobActive, 0); + return ERROR; + } + if (MachineReadyForHeating == false) + { + Report("cannot jog while Machine not ReadyForHeating", __FILE__, __LINE__, MachineReadyForHeating, RpWarning, JoggingJobActive, 0); + return ERROR; + } + if (FPGABurningActive==true) + { + Report("cannot jog while FPGABurningActive", __FILE__, __LINE__, FPGABurningActive, RpWarning, JoggingJobActive, 0); + return ERROR; + } + if ((msec_millisecondCounter - JobEndTimeMillisec) <2000) + { + Report("cannot jog while Job Is ending", __FILE__, __LINE__, msec_millisecondCounter, RpWarning, JobEndTimeMillisec, 0); + return ERROR; + } + //memcpy(&CopyConfigured,&Configured,sizeof(CopyConfigured)); + //usnprintf(ErrorMsg, 80,"Copy Configured T %d W %d I %d H %d W %d",CopyConfigured[Module_Thread],CopyConfigured[Module_Winder],CopyConfigured[Module_IDS],CopyConfigured[Module_Heaters],CopyConfigured[Module_Waste]); + //Report(ErrorMsg, __FILE__, __LINE__, 0, RpWarning, 0, 0); - //set the job handler to ignore heaters, ids and waste in the state machine - Configured[Module_Thread] = true; - Configured[Module_Winder] = true; - Configured[Module_IDS] = false; - Configured[Module_Heaters] = false; - Configured[Module_Waste] = false; - //set the requested speed without changing other process parameters - memcpy (&ProcessParametersCopy,&ProcessParametersKeep,sizeof(ProcessParameters)); - if(speed) - ProcessParametersCopy.dyeingspeed = speed; - else - ProcessParametersCopy.dyeingspeed = 40; - if (HandleProcessParameters(&ProcessParametersCopy,false)!= OK) - { - Report("Process parameters handling failed", __FILE__, __LINE__, 0, RpWarning, 0, 0); - status = FAILED; - } - else - { - //load essential job prameters to enable thread running - Ticket.n_segments = 1; - n_segments = 1; - Ticket.segments = my_malloc(sizeof(Ticket.segments)); - TSegment = my_malloc(sizeof(JobSegment)); - Tspool = my_malloc(sizeof(JobSpool)); - TSegment->length = 200.0; - TSegment->n_brushstops = 0; - Ticket.segments[0] = TSegment; - Tspool->backingrate = 32; - Tspool->bottombackingrate = 32; - Tspool->segmentoffsetpulses = 1000; - Tspool->startoffsetpulses = 220; - Tspool->rotationsperpassage = 3.1415926*2; - Tspool->has_limitswitchstartpointoffset = false; - Ticket.spool = Tspool; - Ticket.threadparameters = &SavedThreadParameters; - CurrentJob = &Ticket; - InternalWindingConfigMessage(Tspool); - JoggingJobActive = true; - StartJob(&Ticket); - } + //set the job handler to ignore heaters, ids and waste in the state machine + Configured[Module_Thread] = true; + Configured[Module_Winder] = true; + Configured[Module_IDS] = false; + Configured[Module_Heaters] = false; + Configured[Module_Waste] = false; + //set the requested speed without changing other process parameters + memcpy (&ProcessParametersCopy,&ProcessParametersKeep,sizeof(ProcessParameters)); + if(speed) + ProcessParametersCopy.dyeingspeed = speed; + else + ProcessParametersCopy.dyeingspeed = 40; + if (HandleProcessParameters(&ProcessParametersCopy,false)!= OK) + { + Report("Process parameters handling failed", __FILE__, __LINE__, 0, RpWarning, 0, 0); + status = FAILED; + } + else + { + //load essential job prameters to enable thread running + Ticket.n_segments = 1; + n_segments = 1; + Ticket.segments = my_malloc(sizeof(Ticket.segments)); + TSegment = my_malloc(sizeof(JobSegment)); + Tspool = my_malloc(sizeof(JobSpool)); + TSegment->length = 200.0; + TSegment->n_brushstops = 0; + Ticket.segments[0] = TSegment; + Tspool->backingrate = 32; + Tspool->bottombackingrate = 32; + Tspool->segmentoffsetpulses = 1000; + Tspool->startoffsetpulses = 220; + Tspool->rotationsperpassage = 3.1415926*2; + Tspool->has_limitswitchstartpointoffset = false; + Ticket.spool = Tspool; + Ticket.threadparameters = &SavedThreadParameters; + CurrentJob = &Ticket; + InternalWindingConfigMessage(Tspool); + JoggingJobActive = true; + StartJob(&Ticket); } return status; } diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c index 7db59946e..3e790eabe 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c @@ -59,6 +59,7 @@ uint16_t n_units = 1; uint16_t n_unit_segments = 0; extern bool JobActive; +extern uint32_t JobEndTimeMillisec; /********************************************************************** * the array and enum of PrintingState_t below must be in sync order ***********************************************************************/ @@ -656,6 +657,7 @@ uint32_t EndState(void *JobDetails, char *Message) CloseJobFile(); //ROM_IntMasterEnable(); JobActive = false; //bug 4162 - test carefully + JobEndTimeMillisec = msec_millisecondCounter; //#4027 SendJobProgress(0.0,0,true,Message); if ((JoggingJobActive==false)&&(CleaningJobActive == false)) { |
