aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
diff options
context:
space:
mode:
authorMirta <mirta@twine-s.com>2020-12-30 14:27:05 +0200
committerMirta <mirta@twine-s.com>2020-12-30 14:27:05 +0200
commit1344a54c37f7cbba7a294674b4b733d72ee257ea (patch)
tree4b24c6fa78d7648f4bb7cefafa464bb0b063fec4 /Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
parent124ad4150f80c6846fdee41dbbda9848c105f6e5 (diff)
parent281610ac56799f6870c587a942495d91cd55b227 (diff)
downloadTango-1344a54c.tar.gz
Tango-1344a54c.zip
Hope it is fine
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c58
1 files changed, 52 insertions, 6 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
index c8f435cb9..4d103395c 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
@@ -17,7 +17,8 @@
#include "Common/SWUpdate/FileSystem.h"
#include "drivers/Flash_Memory/fatfs/ff.h"
-#include "drivers/Flash_ram/FlashProgram.h"
+//#include "drivers/Flash_ram/FlashProgram.h"
+#include "drivers/Flash_ram/MCU_E2Prom.h"
#include "StateMachines/Printing/PrintingSTM.h"
@@ -32,6 +33,29 @@ uint32_t OpenValveTimeout = 10;
#define DISPENSER_BUILD_PRESSURE_TIMEOUT 120000
#define DISPENSER_BUILD_PRESSURE_LAG 50
#define DEFAULT_NANOLITER_PER_PULSE 2.34
+
+FPGA_GPI_ENUM Dispenser_Id_to_LS_50_Id[MAX_SYSTEM_DISPENSERS] = {
+ GPI_LS_DISPENSER_50_1, //MOTO_DISPENSER_1 = 6,
+ GPI_LS_DISPENSER_50_2, //MOTO_DISPENSER_2 = 7,
+ GPI_LS_DISPENSER_50_3, //MOTO_DISPENSER_3 = 8,
+ GPI_LS_DISPENSER_50_4, //MOTO_DISPENSER_4 = 9,
+ GPI_LS_DISPENSER_50_5, //MOTO_DISPENSER_5 = 10,
+ GPI_LS_DISPENSER_50_6, //MOTO_DISPENSER_6 = 11,
+ GPI_LS_DISPENSER_50_7, //MOTO_DISPENSER_7 = 12,
+ GPI_LS_DISPENSER_50_8, //MOTO_DISPENSER_8 = 13,
+};
+FPGA_GPI_ENUM Dispenser_Id_to_LS_25_Id[MAX_SYSTEM_DISPENSERS] = {
+ GPI_LS_DISPENSER_25_1, //MOTO_DISPENSER_1 = 6,
+ GPI_LS_DISPENSER_25_2, //MOTO_DISPENSER_2 = 7,
+ GPI_LS_DISPENSER_25_3, //MOTO_DISPENSER_3 = 8,
+ GPI_LS_DISPENSER_25_4, //MOTO_DISPENSER_4 = 9,
+ GPI_LS_DISPENSER_25_5, //MOTO_DISPENSER_5 = 10,
+ GPI_LS_DISPENSER_25_6, //MOTO_DISPENSER_6 = 11,
+ GPI_LS_DISPENSER_25_7, //MOTO_DISPENSER_7 = 12,
+ GPI_LS_DISPENSER_25_8, //MOTO_DISPENSER_8 = 13,
+};
+bool DispenserDirectionFlag_50[MAX_SYSTEM_DISPENSERS] = {0,0,0,0,0,0,0,0};
+bool DispenserDirectionFlag_25[MAX_SYSTEM_DISPENSERS] = {0,0,0,0,0,0,0,0};
uint32_t DispenserPrepareSpeed = DISPENSER_BUILD_PRESSURE_SPEED;
double DispenserPreparePressure = DISPENSER_BUILD_PRESSURE_LIMIT;
uint32_t DispenserPrepareTimeout = DISPENSER_BUILD_PRESSURE_TIMEOUT;
@@ -249,7 +273,10 @@ void IDS_Dispenser_Content_Init (void)
}
//==================================
- memcpy(&Bytes,(void *)DISPENSERS_MAP_IN_FLASH,sizeof(Bytes));
+ //MCU_E2PromProgramChunk(DISPENSERS_MAP_IN_EEPROM,4,&Bytes);
+
+ MCU_E2PromReadChunk(DISPENSERS_MAP_IN_EEPROM,4,&Bytes);
+ //memcpy(&Bytes,(void *)DISPENSERS_MAP_IN_FLASH,sizeof(Bytes));
bool havedata = false;
DispenserData* StoredDispenserData;
if ((Bytes)&&(Bytes < 500))
@@ -257,9 +284,11 @@ void IDS_Dispenser_Content_Init (void)
buffer = my_malloc (Bytes);
if (buffer)
{
- memcpy(buffer, (void *)(DISPENSERS_MAP_IN_FLASH+4),Bytes);
+ MCU_E2PromReadChunk(DISPENSERS_MAP_IN_EEPROM+4,Bytes,buffer);
+ //memcpy(buffer, (void *)(DISPENSERS_MAP_IN_FLASH+4),Bytes);
StoredDispenserData = dispenser_data__unpack(NULL,Bytes,buffer);
- havedata = true;
+ if (StoredDispenserData)
+ havedata = true;
free(buffer);
}
}
@@ -323,11 +352,14 @@ uint32_t IDS_Dispenser_Store_Data (void)
if (JobIsActive()==false)
{
response_size = dispenser_data__pack(&StoreDispenserData, dispensers_container_buffer);
- EraseFlashSection(DISPENSERS_SECTION_FLASH);
+
+ MCU_E2PromProgramChunk(DISPENSERS_MAP_IN_EEPROM,4,&response_size);
+ MCU_E2PromProgramChunk(DISPENSERS_MAP_IN_EEPROM+4, response_size, dispensers_container_buffer);
+ /*EraseFlashSection(DISPENSERS_SECTION_FLASH);
ReadAppAndProgram(DISPENSERS_MAP_IN_FLASH, 4,&response_size);
ReadAppAndProgram(DISPENSERS_MAP_IN_FLASH+4, response_size, dispensers_container_buffer);
//ReportWithPackageFilter(IDSFilter,"IDS_Dispenser_Store ",__FILE__,__LINE__,(int)response_size,RpWarning,(int)StoreDispenserData.dispenserinfo[4]->nanolitterperpulse *100,0);
-
+ */
/*Status = FileWrite(IDS_Dispenser_Data,response_size,DispenserStorePath,BIOS_NO_WAIT);
if (Status == FR_OK)
{
@@ -371,6 +403,16 @@ void IDS_Dispenser_Content_Calculation (char DispenserId)
{
ReportWithPackageFilter(IDSFilter,"IDS_Dispenser_Data ",__FILE__,DispenserId,(int)IDS_Dispenser_Data[DispenserId].consumedinnanolitter,RpWarning,(int)CurrentDispenserSpeed[DispenserId],0);
}
+ if ((Dispenser_Id_to_LS_50_Id[DispenserId])&&(DispenserDirectionFlag_50[DispenserId]==false))
+ {
+ DispenserDirectionFlag_50[DispenserId]= true;
+ ReportWithPackageFilter(IDSFilter,"Dispenser at 50% ",__FILE__,DispenserId,(int)IDS_Dispenser_Data[DispenserId].consumedinnanolitter,RpWarning,(int)65000000,0);
+ }
+ if ((Dispenser_Id_to_LS_25_Id[DispenserId])&&(DispenserDirectionFlag_25[DispenserId]==false))
+ {
+ DispenserDirectionFlag_25[DispenserId]= true;
+ ReportWithPackageFilter(IDSFilter,"Dispenser at 25% ",__FILE__,DispenserId,(int)IDS_Dispenser_Data[DispenserId].consumedinnanolitter,RpWarning,(int)32500000,0);
+ }
}
if (DispenserId == 0)
{
@@ -401,6 +443,8 @@ void IDS_Dispenser_RefillStarted (char DispenserId,char MicroSteps)
IDS_Dispenser_Data[DispenserId].nanolitterperpulse = assumedFlow;
IDS_Dispenser_Data[DispenserId].microsteps = 1;
IDS_Dispenser_Data[DispenserId].direction = 0;*/
+ DispenserDirectionFlag_50[DispenserId] = false;
+ DispenserDirectionFlag_25[DispenserId] = false;
ReportWithPackageFilter(IDSFilter,"IDS_Dispenser_RefillStarted",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)(CurrentDispenserSpeed[DispenserId]),0);
}
void IDS_Dispenser_RefillEnded (char DispenserId,char MicroSteps)
@@ -410,6 +454,8 @@ void IDS_Dispenser_RefillEnded (char DispenserId,char MicroSteps)
IDS_Dispenser_Data[DispenserId].numberofrefills++;
//IDS_Dispenser_Data[DispenserId].direction = 1;
IDS_Dispenser_Data[DispenserId].consumedinnanolitter = 0;
+ DispenserDirectionFlag_50[DispenserId] = false;
+ DispenserDirectionFlag_25[DispenserId] = false;
ReportWithPackageFilter(IDSFilter,"IDS_Dispenser_RefillEnded",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)IDS_Dispenser_Data[DispenserId].numberofrefills,0);
}
void DispenserDataRequestFunc(MessageContainer* requestContainer)