aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-11-19 13:56:28 +0200
committerShlomo Hecht <shlomo@twine-s.com>2020-11-19 13:56:28 +0200
commitdfd0c672c17e85a403ad6452e76ad9f0394b6dd3 (patch)
tree248774a124982677b76bca9ae36e6531aa660b80 /Software/Embedded_SW/Embedded/Modules
parentacbe2b5dc89212a112ed9eec8f58a54803479f68 (diff)
parent412f4e542d5c66399e958e7233d04574011af4b4 (diff)
downloadTango-dfd0c672c17e85a403ad6452e76ad9f0394b6dd3.tar.gz
Tango-dfd0c672c17e85a403ad6452e76ad9f0394b6dd3.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c5
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS.h3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c10
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c14
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Calculate.c42
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c2
9 files changed, 63 insertions, 20 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
index c7f8740d1..9a14cd1b8 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
@@ -475,7 +475,7 @@ uint32_t Diagnostics_Set_Load_Arm_To_Stopper_Callback(uint32_t deviceID, uint32_
angle = Calculate_Arm_Distance(D_DrierPrevLocation,temp);
- if ((angle<14000 )||(BusyFlag == BUSY)) // OK - take another round
+ if ((abs (angle)<14000 )||(BusyFlag == BUSY)) // OK - take another round
{
responseContainer.has_error = true;
responseContainer.error = ERROR_CODE__GENERAL_ERROR;
@@ -611,7 +611,7 @@ uint32_t Diagnostics_Dryer_Loading_Callback(uint32_t MotorId, uint32_t ReadValue
ReportWithPackageFilter(DiagnosticsFilter,"Diagnostics_Dryer_Loading_Callback",__FILE__,(int)angle,(int)ReadValue,RpMessage,temp,0);
MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,D_numberOfCycles);
- if ((angle>14000 )&&(ReadValue == NOTBUSY)) // OK - take another round
+ if ((abs(angle)>14000 )&&(ReadValue == NOTBUSY)) // OK - take another round
{
D_DrierPrevLocation = temp;
//ReportWithPackageFilter(DiagnosticsFilter,"Diagnostics_Dryer_Loading_Callback",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0);
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
index cc2c508c0..6abf05539 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
@@ -628,7 +628,6 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest)
return OK;
}
char Serial[21];
-MidTankData MidTankInfo[MAX_SYSTEM_DISPENSERS];
uint32_t MachineCalibrationDataRequestFunc(MessageContainer* requestContainer)
{
@@ -636,6 +635,7 @@ uint32_t MachineCalibrationDataRequestFunc(MessageContainer* requestContainer)
MachineCalibrationDataRequest *request = machine_calibration_data_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
uint32_t *DancersData = my_malloc(MAX_SYSTEM_DANCERS*sizeof(uint32_t));
MidTankData ** MidTankDataCollect = my_malloc(sizeof(MidTankData *)*MAX_SYSTEM_DISPENSERS);
+ MidTankData MidTankInfo[MAX_SYSTEM_DISPENSERS];
int i;
for (i = 0;i<MAX_SYSTEM_DANCERS;i++)
@@ -655,7 +655,8 @@ uint32_t MachineCalibrationDataRequestFunc(MessageContainer* requestContainer)
//MCU_E2PromSerialNumRead(&Serial);
MachineCalibrationDataResponse response = MACHINE_CALIBRATION_DATA_RESPONSE__INIT;
- machine_calibration_data__init(&response.machinecalibrationdata);
+ response.machinecalibrationdata = my_malloc(sizeof(MachineCalibrationData));
+ machine_calibration_data__init(response.machinecalibrationdata);
response.machinecalibrationdata->n_dancermiddlepoint = MAX_SYSTEM_DANCERS;
response.machinecalibrationdata->dancermiddlepoint = DancersData;
response.machinecalibrationdata->machineserialnumber = Serial;
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h
index d86d7ab2d..0f8108dad 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h
@@ -5,9 +5,6 @@
#include "drivers/motors/motor.h"
#include "ids_ex.h"
-#define LUBRICANT_DISPENSER 7
-#define CLEANER_DISPENSER 6
-
extern uint32_t DispenserPrepareSpeed ;
extern double DispenserPreparePressure ;
extern uint32_t DispenserPrepareTimeout ;
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c
index 0ae017c13..59b9a56be 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c
@@ -107,6 +107,16 @@ uint32_t IDS_Cleaning_Move_Actuators()
CleaningStageCounter++;
return OK;
}
+
+uint32_t IDS_Cleaning_stop_cleaner_motor()
+{
+ TimerMotors_t MotorId = HARDWARE_MOTOR_TYPE__MOTO_DH_LID;
+ if (Head_Type != HEAD_TYPE_ARC)
+ return OK;
+
+ MotorStop(MotorId,Soft_Stop);
+ return OK;
+}
/*uint32_t IDS_Cleaning_Move_Rockers (int LeftRockerSpeed,int RightRockerSpeed)
{
uint32_t status = OK;
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
index 57d3ff5e2..0a8060496 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
@@ -118,5 +118,6 @@ void DispenserDataRequestFunc(MessageContainer* requestContainer);
void IDS_Start_Pid_Testing(int DispenserId);
void IDS_Stop_Pid_Testing(int DispenserId);
uint32_t cleaningMotorCBFunction (uint32_t deviceID, uint32_t Parameter1);
+uint32_t IDS_Cleaning_stop_cleaner_motor();
#endif /* MODULES_IDS_IDS_EX_H_ */
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index 51485e579..4fd273977 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -43,7 +43,6 @@ typedef struct
}DispenserControlConfig_t;
HardwarePidControl *DispensersControl;
HardwarePidControl DispensersCtrl[MAX_SYSTEM_DISPENSERS];
-#define MAX_DYE_DISPENSERS 6
#define IDS_PRESEGMENT_TIME_STEP 50
#define INITIAL_CLEANER_SPEED 300
@@ -565,7 +564,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
double segmentfirst_speed;
double pressure;
ModuleStateEnum result = ModuleDone;
- bool DispenserReady[MAX_DYE_DISPENSERS] = {false,false,false,false,false,false};
+ bool DispenserReady[MAX_SYSTEM_DISPENSERS] = {false,false,false,false,false,false,false,false};
//REPORT_MSG((int)DispenserPrepareControlId, "Prepare Callback");
@@ -1937,27 +1936,36 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
}
}
+ if (CurrentDispenserSpeed[CLEANER_DISPENSER]>0)
+ IDS_Cleaning_Stop_Cleaning_Solution(NULL);
IDS_StopLubrication();
Init_CleaningStageCounter();//set the counter before relocating
+ IDS_Cleaning_stop_cleaner_motor();
HeadCard_Actuators_Relocate();
return OK;
}
uint32_t IDS_StartLubrication(void)
{
+#ifdef LIGHT_COLORS
+#else
IDS_Dispenser_Start_Motor_and_Open_Valve(LUBRICANT_DISPENSER,lubricant_speed,NULL);
CurrentDispenserSpeed[LUBRICANT_DISPENSER] = lubricant_speed;
- REPORT_MSG (lubricant_speed, "IDS_StartLubrication");
Lubricant_2Way_Valve (START);
+#endif
+ REPORT_MSG (lubricant_speed, "IDS_StartLubrication");
return OK;
}
uint32_t IDS_StopLubrication(void)
{
REPORT_MSG (lubricant_speed, "IDS_StopLubrication and home dispenser");
+#ifdef LIGHT_COLORS
+#else
Lubricant_2Way_Valve (STOP);
//IDS_Dispenser_Close_Valve_And_Stop_Motor(LUBRICANT_DISPENSER,IDS_Valve_EndValveReady);
TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[LUBRICANT_DISPENSER];
MotorStop(HW_Motor_Id,Hard_Hiz);
CurrentDispenserSpeed[LUBRICANT_DISPENSER] = 0;
//IDS_HomeDispenser (LUBRICANT_DISPENSER, 1000 , NULL); do not fill lubricant between jobs
+#endif
return OK;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Calculate.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Calculate.c
index e386df88c..d26b3d814 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Calculate.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Calculate.c
@@ -5,22 +5,32 @@
#include <PMR/Stubs/CalculateResponse.pb-c.h>
#include "include.h"
#include "driverlib/gpio.h"
+#include "modules/control/control.h"
#include "Drivers/USB_Communication/USBCDCD.h"
-
-void Stub_CalculateRequest(MessageContainer* requestContainer)
+char CalculateToken[36+1] = {0};
+//char init_string[100];
+int aaa = 0;
+uint32_t CalculateControlId = 0xFF;
+uint32_t CalculateRpeat(uint32_t IfIndex, uint32_t BusyFlag)
{
MessageContainer responseContainer;
-
- CalculateRequest* request = calculate_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
-
-
CalculateResponse response = CALCULATE_RESPONSE__INIT;
- response.sum = request->a + request->b;
+ bool last = false;
+ response.sum = aaa++;
response.has_sum = true;
+ if (aaa >=20)
+ {
+ RemoveControlCallback(CalculateControlId, CalculateRpeat);
+ last = true;
+ aaa=0;
+ }
+ Report("CalculateRpeat",__FILE__,__LINE__,(int)aaa,RpWarning,(int)0,0);
- responseContainer = createContainer(MESSAGE_TYPE__CalculateResponse, requestContainer->token, true, &response, &calculate_response__pack, &calculate_response__get_packed_size);
+ responseContainer = createContainer(MESSAGE_TYPE__CalculateResponse, CalculateToken, last, &response, &calculate_response__pack, &calculate_response__get_packed_size);
+ responseContainer.has_continuous = true;
+ responseContainer.continuous = true;
// free(request);
@@ -30,5 +40,21 @@ void Stub_CalculateRequest(MessageContainer* requestContainer)
SendChars((char*)container_buffer, container_size);
//free(container_buffer);
//free(requestContainer);
+
+ return OK;
+}
+
+
+void Stub_CalculateRequest(MessageContainer* requestContainer)
+{
+ MessageContainer responseContainer;
+
+ CalculateRequest* request = calculate_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+ ustrncpy (CalculateToken, requestContainer->token,36);
+
+
+ Report("Stub_CalculateRequest",__FILE__,__LINE__,(int)aaa,RpWarning,(int)0,0);
+ CalculateControlId = AddControlCallback("PowerUpLoad", CalculateRpeat, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
+
calculate_request__free_unpacked(request,NULL);
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
index cdb726b5e..c3f15aff8 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
@@ -258,7 +258,7 @@
{
CallbackCounter--;
}
- if ((angle>14000 )&&(BusyFlag == NOTBUSY)) // OK - take another round
+ if ((abs(angle)>14000 )&&(BusyFlag == NOTBUSY)) // OK - take another round
{
Report("Thread_Load_Set_Load_Arm_To_Stopper time",__FILE__,msec_millisecondCounter - UnloadingStart,msec_millisecondCounter,RpMessage,UnloadingStart,0);
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c
index 8d798b402..869485b71 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c
@@ -217,7 +217,7 @@ uint32_t StoreDancerConfigMessage(int DancerId)
status |= MCU_E2PromProgram(DancerAddress[Dancer_i],DancersCfg[Dancer_i].zeropoint);
- Report("~~~~~~Store eeprom",__FILE__,__LINE__,Dancer_i,RpWarning,(int)DancersCfg[Dancer_i].zeropoint,0);
+ Report("~~~~~~Store eeprom dancer",__FILE__,__LINE__,Dancer_i,RpWarning,(int)DancersCfg[Dancer_i].zeropoint,0);
/*
response_buffer = my_malloc(hardware_configuration__get_packed_size(&DancerConfig));
if (response_buffer)