From 746ba0f4e7fb7aae0c5ccfe68deed2dba285c565 Mon Sep 17 00:00:00 2001 From: Ronen Sberlo Date: Mon, 4 Jan 2021 15:30:04 +0200 Subject: BTSR --- .../Embedded/StateMachines/Printing/JobSTM.c | 61 ++++++++++++++++++++-- 1 file changed, 58 insertions(+), 3 deletions(-) (limited to 'Software/Embedded_SW/Embedded/StateMachines') diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index bbb75328b..ab5e68b46 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -81,7 +81,7 @@ #include "modules/ids/ids_ex.h" #include "Modules/heaters/heaters_ex.h" #include "Modules/control/control.h" - +#include "drivers/Flash_ram/MCU_E2Prom.h" #define MAX_TICKET_SIZE 10000 @@ -106,6 +106,7 @@ JobBrushStop *TbrushStop; JobDispenser *Tdispenser; JobSpool *Tspool; HeadCleaningParameters *CleaningParameters = NULL; +BTSRParameters *BtsrPrameters = NULL; bool CopyConfigured[MAX_SYSTEM_MODULES]; bool CleaningJobActive = false, JoggingJobActive = false; char ErrorMsg[100]; @@ -133,7 +134,8 @@ static ReturnCode ExitState(void *JobDetails); //static ReturnCode (* state[])(void *JobDetails) = { IdleState, ValidateState, PrepareState, PrintState, CleanState}; void AbortJob(char *Msg); void HandleJobEnd(JobEndReasonEnum JobEndReason); - +uint32_t BtsrSaveParamsToEeprom(BTSRParameters *BtsrPrameters); +uint32_t BtsrReadParamsFromEeprom(BTSRParameters *BtsrPrameters); typedef enum { @@ -483,6 +485,9 @@ uint32_t ThreadJoggingFunc(int speed) Tspool->has_limitswitchstartpointoffset = false; Ticket.spool = Tspool; Ticket.threadparameters = &SavedThreadParameters; +#ifdef UFEEDER_BTSR + BtsrReadParamsFromEeprom(Ticket.btsrparameters); +#endif CurrentJob = &Ticket; InternalWindingConfigMessage(Tspool); JoggingJobActive = true; @@ -681,6 +686,9 @@ uint32_t ThreadCleaningJob(int speed) Tspool->has_limitswitchstartpointoffset = false; Ticket.spool = Tspool; Ticket.threadparameters = &SavedThreadParameters; +#ifdef UFEEDER_BTSR + BtsrReadParamsFromEeprom(Ticket.btsrparameters); +#endif CurrentJob = &Ticket; job_length = CurrentJob->length + dryerbufferMeters; @@ -923,7 +931,7 @@ void Stub_AbortJobRequest(MessageContainer* requestContainer) //******************************************************************************************************************** void JobRequestFunc(MessageContainer* requestContainer) { - uint32_t status = NOT_SUPPORTED; + uint32_t rc, status = NOT_SUPPORTED; MessageContainer responseContainer; uint8_t* container_buffer; ErrorCode error = ERROR_CODE__NONE; @@ -1029,7 +1037,16 @@ void JobRequestFunc(MessageContainer* requestContainer) Report("Save job cleaning parameters", __FILE__, __LINE__, CleaningParameters->cleanerflow, RpWarning, CleaningParameters->archeadcleaningmotorspeed, 0); } + if (Ticket->btsrparameters) + { + ///store last updated BTSR parameters + if (BtsrPrameters == NULL) + BtsrPrameters = my_malloc(sizeof(BTSRParameters)); + memcpy(BtsrPrameters, Ticket->btsrparameters, sizeof(BTSRParameters)); + rc = BtsrSaveParamsToEeprom(BtsrPrameters); + Report("Save job BTSR parameters", __FILE__, __LINE__, BtsrPrameters->feedingtension, RpWarning, rc, 0); + } } else { @@ -1431,6 +1448,44 @@ uint32_t ResumeCurrentJobRequestFunc(MessageContainer* requestContainer) return OK; } +uint32_t BtsrSaveParamsToEeprom(BTSRParameters *BtsrPrameters) +{ + uint32_t status = 0; + + status |= MCU_E2PromProgram(EEPROM_BTSR_FEEDING_TENSION, (uint32_t)(BtsrPrameters->feedingtension*10)); + status |= MCU_E2PromProgram(EEPROM_BTSR_TYPE, (uint32_t)(BtsrPrameters->btsryarntype)); + status |= MCU_E2PromProgram(EEPROM_BTSR_APPLICATION, (uint32_t)(BtsrPrameters->btsrapplicationtype)); + status |= MCU_E2PromProgram(EEPROM_BTSR_LENGTH_OFFSET, (uint32_t)(BtsrPrameters->threadlengthfactor)); + status |= MCU_E2PromProgram(EEPROM_BTSR_TENSION_ERROR, (uint32_t)(BtsrPrameters->tensionerror*10)); + status |= MCU_E2PromProgram(EEPROM_BTSR_SPOOL_TENSION, (uint32_t)(BtsrPrameters->spooltension)); + status |= MCU_E2PromProgram(EEPROM_BTSR_EXIT_TENSION, (uint32_t)(BtsrPrameters->exittension)); + return status; +} + +uint32_t BtsrReadParamsFromEeprom(BTSRParameters *BtsrPrameters) +{ + uint32_t status = 0; + uint32_t feedingtension, type, application, lengthoffset; + uint32_t tensionerror, spooltension, exittension; + + status |= MCU_E2PromRead(EEPROM_BTSR_FEEDING_TENSION, &feedingtension); + BtsrPrameters->feedingtension = ((double)feedingtension)/10; + status |= MCU_E2PromRead(EEPROM_BTSR_TYPE, &type); + BtsrPrameters->btsryarntype = type; + status |= MCU_E2PromRead(EEPROM_BTSR_APPLICATION, &application); + BtsrPrameters->btsrapplicationtype = application; + status |= MCU_E2PromRead(EEPROM_BTSR_LENGTH_OFFSET, &lengthoffset); + BtsrPrameters->threadlengthfactor = lengthoffset; + status |= MCU_E2PromRead(EEPROM_BTSR_TENSION_ERROR, &tensionerror); + BtsrPrameters->tensionerror = ((double)tensionerror)/10; + status |= MCU_E2PromRead(EEPROM_BTSR_SPOOL_TENSION, &spooltension); + BtsrPrameters->spooltension = spooltension; + status |= MCU_E2PromRead(EEPROM_BTSR_EXIT_TENSION, &exittension); + BtsrPrameters->exittension = exittension; + Report("BtsrReadParamsFromEeprom",__FILE__,__LINE__,(int)(feedingtension),RpWarning,(int)(tensionerror),(int)exittension); + Report("BtsrReadParamsFromEeprom",__FILE__,__LINE__,(int)(application),RpWarning,(int)(type),(int)lengthoffset); + return status; +} void StartJob(void *JobDetails) { -- cgit v1.3.1