aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-07-05 16:53:33 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-07-05 16:53:33 +0300
commit2800ef294e92c6181c47ecf5bd556fcb25dc62ce (patch)
treebdf7d339b24bfe3fa6b64c5d42c8d34e8f1e1aef /Software/Embedded_SW/Embedded
parentdbb891b4456d3aff7b944302e363dad9b19a24c6 (diff)
parent65a9b21dce5cdb5e42b927e4cafd271432338b7c (diff)
downloadTango-2800ef294e92c6181c47ecf5bd556fcb25dc62ce.tar.gz
Tango-2800ef294e92c6181c47ecf5bd556fcb25dc62ce.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/Common/report/reportInit.c4
-rw-r--r--Software/Embedded_SW/Embedded/Communication/Container.c1
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.h4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c53
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c3
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c6
8 files changed, 63 insertions, 12 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/report/reportInit.c b/Software/Embedded_SW/Embedded/Common/report/reportInit.c
index 28df4846d..29728f6f2 100644
--- a/Software/Embedded_SW/Embedded/Common/report/reportInit.c
+++ b/Software/Embedded_SW/Embedded/Common/report/reportInit.c
@@ -79,7 +79,8 @@ int ReportResponseFunc(char *message, /* The formatted message
response.errorcode = (ErrorCode)errorCode;
response.has_severity = true;
response.severity = (Severity)parameter1;*/
- response.has_filter = false;
+ response.has_filter = true;
+ response.filter = parameter;
response.has_category = true;
switch (Severity)
{
@@ -102,7 +103,6 @@ int ReportResponseFunc(char *message, /* The formatted message
response.category = DEBUG_LOG_CATEGORY__Info;
break;
}
- response.filter = parameter;
response.message = message;
responseContainer = createContainer(MESSAGE_TYPE__StartDebugLogResponse, protobufToken, false, &response, &start_debug_log_response__pack, &start_debug_log_response__get_packed_size);
responseContainer.continuous = true;
diff --git a/Software/Embedded_SW/Embedded/Communication/Container.c b/Software/Embedded_SW/Embedded/Communication/Container.c
index 7d59c5f40..f7c9ef9fc 100644
--- a/Software/Embedded_SW/Embedded/Communication/Container.c
+++ b/Software/Embedded_SW/Embedded/Communication/Container.c
@@ -63,7 +63,6 @@ MessageContainer createContainer(MessageType type, char* token, protobuf_c_boole
//free(response);
return container;
}
-
void receive_callback(char* buffer, size_t length)
{
//SendChars(buffer,length);
diff --git a/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.h b/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.h
index 5237d41b9..aa53cde7c 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.h
+++ b/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.h
@@ -17,13 +17,13 @@ TEMP_SENSE_ANALOG_DYEINGH_TEMP1, //ANALOG_DYEINGH_TEMP1_1 SSR8 Head-Zone 1
TEMP_SENSE_ANALOG_DYEINGH_TEMP2, //ANALOG_DYEINGH_TEMP2 SSR7 Head-Zone 2
TEMP_SENSE_ANALOG_DYEINGH_TEMP3, //ANALOG_DYEINGH_TEMP3 SSR6 Head-Zone 3
TEMP_SENSE_ANALOG_DYEINGH_TEMP4, //ANALOG_DYEINGH_TEMP4 SSR5 Head-Zone 4
-TEMP_SENSE_ANALOG_DYEINGH_TEMP5, //ANALOG_DYEINGH_TEMP5 SSR6 Head-Zone 3
+TEMP_SENSE_ANALOG_DYEINGH_TEMP5, //ANALOG_DYEINGH_TEMP5 SSR10 Head-Zone 5
TEMP_SENSE_ANALOG_DRYER_TEMP1, //ANALOG_DRYER_TEMP1
TEMP_SENSE_ANALOG_DRYER_TEMP2, //ANALOG_DRYER_TEMP2
TEMP_SENSE_ANALOG_DRYER_TEMP3, //ANALOG_DRYER_TEMP3
TEMP_SENSE_AN_ENCLOSURETEMP1, //AN_ENCLOSURETEMP1_1
TEMP_SENSE_AN_ENCLOSURETEMP2, //AN_ENCLOSURETEMP2_1
-TEMP_SENSE_AN_ENCLOSURETEMP3, //AN_ENCLOSURETEMP3_1
+TEMP_SENSE_AN_ENCLOSURETEMP3, //AN_ENCLOSURETEMP3_1 SSR 11 used for head zone 6
MAX_TEMPERATURE_SENSOR_ID
} TEMPERATURE_SENSOR_ID_ENUM;
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h
index 7282974e6..ca46bf93b 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h
@@ -71,4 +71,6 @@ uint32_t HeaterRecalculateSharedHeatersParams(uint32_t deviceId, uint32_t new_ou
void HeatingTestSendResonse(uint32_t status, bool last,bool heater1Active,bool heater2Active, int temperature1, int temperature2,int Heater1Percentage,int Heater2Percentage, char* Message);
uint32_t HeaterRecalculateHeaterParams(uint32_t deviceId, uint32_t new_outputproportionalpowerlimit);
+uint32_t HeatersSingleHeaterEnd(HardwarePidControlType HeaterId);
+
#endif
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
index 962f9b651..6fd9fd8d8 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
@@ -10,6 +10,8 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature)
void HeatingTestRequest(MessageContainer* requestContainer);
void HeatingTestPollRequest(MessageContainer* requestContainer);
+bool HeaterCheckReady(void);
+
bool HeaterGetOverTemperatureState(uint8_t HeaterId);
uint32_t HeatersEnd(void);
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index b893be716..0f477a66f 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -47,7 +47,7 @@ uint32_t ControlIdtoHeaterId [MAX_HEATERS_NUM] = {0xFF,0xFF,0xFF,0xFF,0xFF,0x
uint32_t DryerHeaterMaxTempControl = 0xFF;
#warning the PT100 id for the dryer control is number2 - dryer internal ambient sensor.
#warning the PT100 for head 4 is number 5
-uint32_t HeaterId2PT100Id[MAX_HEATERS_NUM] = {TEMP_SENSE_ANALOG_DRYER_TEMP2,TEMP_SENSE_ANALOG_DRYER_TEMP1,TEMP_SENSE_ANALOG_DRYER_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,TEMP_SENSE_ANALOG_DYEINGH_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP5,TEMP_SENSE_AN_ENCLOSURETEMP3,TEMP_SENSE_ANALOG_MIXCHIP_TEMP};
+uint32_t HeaterId2PT100Id[MAX_HEATERS_NUM] = {TEMP_SENSE_ANALOG_DRYER_TEMP2,TEMP_SENSE_ANALOG_DRYER_TEMP1,TEMP_SENSE_ANALOG_DRYER_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,TEMP_SENSE_ANALOG_DYEINGH_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP5,TEMP_SENSE_ANALOG_MIXCHIP_TEMP,TEMP_SENSE_ANALOG_MIXCHIP_TEMP};
uint32_t DryerInternalPT100Id = TEMP_SENSE_ANALOG_DRYER_TEMP1;
bool HeatersRestart = false;
@@ -112,13 +112,46 @@ void HeatersControlStart(void)
HeatersRestart = true;
HeatersStartControlTimer();
}
+uint32_t HeatersSingleHeaterEnd(HardwarePidControlType HeaterId)
+{
+ int status = OK;
+ if (HeaterId > HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2) //DC Heaters
+ {
+ if (ControlIdtoHeaterId [HeaterId]!=0xFF)
+ {
+ status |= RemoveControlCallback(ControlIdtoHeaterId [HeaterId], DCHeaterControlCBFunction);
+ ControlIdtoHeaterId [HeaterId]=0xFF;
+ }
+ }
+ else if (HeaterId < HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2) //AC Heaters
+ {
+ if (ControlIdtoHeaterId [HeaterId]!=0xFF)
+ {
+ status |=RemoveControlCallback(ControlIdtoHeaterId [HeaterId] ,HeaterControlCBFunction);
+ ControlIdtoHeaterId [HeaterId]=0xFF;
+ }
+ }
+ if (HeaterId == HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w) //DC Heaters
+ if (DryerHeaterMaxTempControl)
+ {
+ status |=RemoveControlCallback(DryerHeaterMaxTempControl ,HeaterMaxTempCBFunction);
+ DryerHeaterMaxTempControl=0xFF;
+ }
+ DeActivateHeater(HeaterId);
+ return status;
+
+}
+
uint32_t HeatersEnd(void)
{
- int i,status = OK;
+ HardwarePidControlType i;
+ uint32_t status = OK;
HeatersControlStop();
for (i=0;i<MAX_HEATERS_NUM;i++)
{
+ status = HeatersSingleHeaterEnd(i);
+ /*
if (i > HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2) //DC Heaters
{
if (ControlIdtoHeaterId [i]!=0xFF)
@@ -139,9 +172,10 @@ uint32_t HeatersEnd(void)
if (DryerHeaterMaxTempControl)
{
status |=RemoveControlCallback(DryerHeaterMaxTempControl ,HeaterMaxTempCBFunction);
- ControlIdtoHeaterId [i]=0xFF;
+ DryerHeaterMaxTempControl=0xFF;
}
DeActivateHeater(i);
+ */
}
return status;
@@ -218,6 +252,7 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature)
else if ((HeaterState == HEATER_ON)&& (OnOff == HEATER_OFF)) //stop heating
{
//turn off the heater
+ HeatersSingleHeaterEnd(HeaterId);
//stop the control
HeaterPIDConfig[HeaterId].m_SetParam = HeaterId;
}
@@ -270,6 +305,18 @@ uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue)
return OK;
}
+bool HeaterCheckReady(void)
+{
+ int i;
+ for (i=0;i<MAX_HEATERS_NUM;i++)
+ {
+ if (HeaterReady[i] == false)
+ {
+ return false; //not all configured heaters are ready
+ }
+ }
+ return true;
+}
void HeaterPrepareReady(void)
{
int i;
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
index a1045aed8..90d1ef20d 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
@@ -143,7 +143,8 @@ static ReturnCode PrepareState(void *JobDetails)
}
if (Configured[Module_Heaters])
{
- PrepareWaiting[Module_Heaters] = ModuleWaiting;
+ if (HeaterCheckReady() == false) // if heaters are in heating / cooling state we must wait for them
+ PrepareWaiting[Module_Heaters] = ModuleWaiting;
}
if (Configured[Module_Thread])
{
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c
index 28a87e826..fafe1dd8e 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c
@@ -296,12 +296,12 @@ uint32_t EndState(void *JobDetails, char *Message)
//EndWaiting[Module_IDS] = ModuleWaiting;
IDSEndState(JobDetails);
}
- if (Configured[Module_Heaters])
+ /*if (Configured[Module_Heaters])
{
//EndWaiting[Module_Heaters] = ModuleWaiting;
//heaters preparation starts on process parameters handling
- HeatersEnd();
- }
+ // do not call HeatersEnd(); because the heaters should stay ready for coming jobs
+ }*/
if (Configured[Module_Thread])
{
//EndWaiting[Module_Thread] = ModuleWaiting;