aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/DataDef.h10
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC_DispPressSens.c9
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/EEPROM/Dispenser_EEPROM.c11
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c2
-rw-r--r--Software/Embedded_SW/Embedded/Main.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IFS/ifs.c13
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c11
7 files changed, 53 insertions, 5 deletions
diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h
index b5edc9554..669e2cbe5 100644
--- a/Software/Embedded_SW/Embedded/DataDef.h
+++ b/Software/Embedded_SW/Embedded/DataDef.h
@@ -44,7 +44,7 @@
#endif
//#define USE_UART4_FOR_BTSR // need change in FRPGA FPGA_1 yy > 0x20 + jumpers in main board need to read HW Version - no need when working only with stubs
-//#define FORCE_BTSR_CARD_0023 // only for testing, include changes for BTSR without ASSY ID. use it with USE_UART4_FOR_BTSR
+//#define FORCE_BTSR_CARD_0023 //0014 only for testing, include changes for BTSR without ASSY ID. use it with USE_UART4_FOR_BTSR
//#define USE_RFID_STUB //stub only. to use it undef USE_RFID_LOGIC
//#define RFID_READ_ONLY //
@@ -491,6 +491,13 @@ typedef enum
typedef enum
{
+ I2C_COMM_UNKNOWN,
+ I2C_COMM_PASSED,
+ I2C_COMM_FAILED,
+}I2C_COMM_STAT;
+
+typedef enum
+{
DEFAULT_POLARITY = 0,//OPTIC_LS , MAGNETIC_LS CARD 2
INVERSION_POLARITY = 1,//MAGNETIC_LS CARD 2 - must be 1 used for xor the polarity
}LS_POLARITY;
@@ -636,6 +643,7 @@ typedef struct
DISP_EEPROM Write_Disp_EEPROM;
DISP_EEPROM Read_Disp_EEPROM;
LS_STATUS Status;
+ I2C_COMM_STAT I2C_Status;// TBD added to calculate the pressure as new when there is i2c no communication (unable to read the eeprom)
}DISP;
DISP Dispenser_struct[8];
diff --git a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC_DispPressSens.c b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC_DispPressSens.c
index 52225cb30..7c42ff823 100644
--- a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC_DispPressSens.c
+++ b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC_DispPressSens.c
@@ -46,9 +46,16 @@ void Calculateinit (void)
Max = (float)(Dispenser_struct[DispenserId].Read_Disp_EEPROM.bytes.Maximal_Pressure) / 10000.0;
}
}
+ else if(Dispenser_struct[DispenserId].I2C_Status = I2C_COMM_FAILED)//#warning need to implement !!!!
+ {
+#warning need to implement i2c status !!!!
+ Min = - 0.1;//-1000 / 10000.0;//default for NEW pressure sensor
+ Max = 1;//10000 / 10000.0;//default for NEW pressure sensor
+ Report("unable to read the dispenser EEPROM, use default NEW pressure values",__FILE__,__LINE__,DispenserId,RpWarning,(int)Dispenser_struct[DispenserId].Type,0);
+ }
else
{
- Report("Dispenser's EEPROM - Wrong header! use default pressure values",__FILE__,__LINE__,DispenserId,RpWarning,(int)Dispenser_struct[DispenserId ].Read_Disp_EEPROM.bytes.Header,0);
+ Report("Dispenser's EEPROM - Wrong header! use default OLD pressure values",__FILE__,__LINE__,DispenserId,RpWarning,(int)Dispenser_struct[DispenserId ].Read_Disp_EEPROM.bytes.Header,0);
}
a[DispenserId] = (Max - Min) / (Bits_Max - Bits_Min);// Mpascal/Bits = 0.000352125 with default values
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/EEPROM/Dispenser_EEPROM.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/EEPROM/Dispenser_EEPROM.c
index 9023f8250..635626467 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/EEPROM/Dispenser_EEPROM.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/EEPROM/Dispenser_EEPROM.c
@@ -101,6 +101,17 @@ uint32_t Dispenser_EEPROM_Read_Data(uint8_t Dispenser_ID)//0..7
status |= I2C_EEprom_Set_for_Read_Ch(Dispenser_ID, 0xA0);
status |= I2C_EEprom_Read_Ch(Dispenser_ID, 0xA0);
+#warning need to implement i2c status !!!!
+ /*
+ if(status != OK)
+ {
+ Dispenser_struct[Dispenser_ID].I2C_Status = I2C_COMM_PASSED;
+ }
+ else
+ {
+ Dispenser_struct[Dispenser_ID].I2C_Status = I2C_COMM_FAILED;
+ LOG_ERROR (Dispenser_ID, "Dispenser I2C Comm. failed");
+ }*/
return status;
}
uint32_t test_disp_eeprom(uint8_t Dispenser_ID , uint8_t EEprom_Add)//0..7
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c
index 0593342b1..7309be156 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c
@@ -156,7 +156,7 @@ uint32_t Check_IFS_Availability()
delayms(1);
}
- Active_RFID_Reader = CART_2; // temporary !!!!!
+ //Active_RFID_Reader = CART_2; // temporary !!!!!
return status;
}
diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c
index f8c119713..131638d34 100644
--- a/Software/Embedded_SW/Embedded/Main.c
+++ b/Software/Embedded_SW/Embedded/Main.c
@@ -411,7 +411,7 @@ int main(void)
}
else
{
- #ifdef FORCE_BTSR_CARD_0023
+ #ifdef FORCE_BTSR_CARD_0023//0014
// Configure the GPIO Pin PR0 for BTSR RS485 UART - Set as output to change to uart4 RS485 Direction:
ROM_GPIOPinTypeGPIOOutput(GPIO_PORTR_BASE, GPIO_PIN_0);
diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
index 5b0cf9cb7..2de335432 100644
--- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
+++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
@@ -14,6 +14,7 @@
#include <PMR/Diagnostics/EventType.pb-c.h>
#include "PMR/IFS/CartridgeState.pb-c.h"
#include <Drivers/I2C_Communication/RFID_NFC/RFIDTagInfo.h>
+#include <Drivers/I2C_Communication/RFID_NFC/RFID_IFS.h>
#include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h"//#include "FPGA_GPIO.h" // use for FPGA IO
#include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h"
#include "StateMachines/Initialization/PowerOffSequence.h"
@@ -263,6 +264,7 @@ void midTankStateMachine(void)
{
static int init = 1;
static int authenticationTimeOutCounter = 0;
+ uint32_t rc;
if (init) {
doorState = midTankCart_door();
@@ -297,6 +299,10 @@ void midTankStateMachine(void)
break;
}
//check RFID - check cartridge OK
+ if ((rc = RFID_Get_Identification_Status(READER_1)) != OK) {
+ Report("RFID_Get_Identification_Status failed", __FILE__, __LINE__, rc, RpMessage, 0, 0);
+ break;
+ }
// send request for validation to ppc
inkAuthenticationPass = 2; //not defined
@@ -356,6 +362,11 @@ void midTankStateMachine(void)
Report("midTankStateWait set valve", __FILE__, __LINE__, 0, RpMessage, 0, 0);
// RFID change status - inkUsed, inkFill
+ rc = RFID_Update_Ink_Fill();
+ Report("RFID_Update_Ink_Fill", __FILE__, __LINE__, rc, RpMessage, 0, 0);
+
+ rc = RFID_Update_Ink_Used();
+ Report("RFID_Update_Ink_Used", __FILE__, __LINE__, rc, RpMessage, 0, 0);
// set count down
midTankTimeoutCounter = 1;
@@ -389,6 +400,8 @@ void midTankStateMachine(void)
Report("Mid-tank # filling done", __FILE__, __LINE__, midTankState, RpMessage, 0, 0);
midTankState = MidTankStateIdle;
// RFID change status - inkEmpty
+ rc = RFID_Update_Ink_Empty();
+ Report("RFID_Update_Ink_Empty", __FILE__, __LINE__, rc, RpMessage, 0, 0);
CartridgeStateUpdate(CARTRIDGE_SLOT__Ink, midTankCartColor, CARTRIDGE_STATE__FillingCompleted, 100.0);
}
if (midTankState == MidTankStateFilling)
diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
index a2ab1f426..fbbf1ec58 100644
--- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
+++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
@@ -10,6 +10,7 @@
#include <Drivers/I2C_Communication/RFID_NFC/RFIDTagInfo.h>
#include <Drivers/I2C_Communication/RFID_NFC/NFC_MainBaord.h>
#include "Drivers/I2C_Communication/RFID_NFC/logi-tag/LT_RFID.h"
+#include <Drivers/I2C_Communication/RFID_NFC/RFID_Waste.h>
#include "Drivers/I2C_Communication/RFID_NFC/NFC.h"
#include <Utilities/RfidTagHandling.h>
@@ -425,6 +426,8 @@ void Waste_StateMachine(void)
{
uint32_t activeCart;
char str[100];
+ uint32_t rc;
+
switch (WasteTankState)
{
case WasteTankStateIdle:
@@ -461,6 +464,8 @@ void Waste_StateMachine(void)
}
// check RFID - check cartridge OK (inkEmpty)
// RFID change status - set WasteEmpty
+ rc = RFID_Update_Waste_Empty(SelectedCard);
+ Report("RFID_Update_Waste_Empty", __FILE__, __LINE__, SelectedCard, RpMessage, rc, 0);
//move to next state
WasteTankState = WasteTankStateFull;
@@ -493,7 +498,9 @@ void Waste_StateMachine(void)
Report("WasteTankStateEmptying set Pump Open", __FILE__, activeCart, wasteLevel, RpMessage, wasteLevelEmpty, 0);
//start emptying
- // RFID change status - set wasteFilling
+ // RFID change status - set wasteFill
+ rc = RFID_Update_Waste_Fill(activeCart);
+ Report("RFID_Update_Waste_Fill", __FILE__, __LINE__, activeCart, RpMessage, rc, 0);
WasteTankState = WasteTankStateEmptying;
CartridgeStateUpdate(activeCart, activeCart-1, CARTRIDGE_STATE__Emptying, 0);
break;
@@ -515,6 +522,8 @@ void Waste_StateMachine(void)
cartFILLING_END();
waste_seq_cont_stop();
// RFID change status - set wasteFull
+ rc = RFID_Update_Waste_Full(activeCart);
+ Report("RFID_Update_Waste_Full", __FILE__, __LINE__, activeCart, RpMessage, rc, 0);
WasteTankState = WasteTankStateIdle;
RemoveControlCallback(Cartridge_Cover_Control, Waste_DoorOpenDuringEmptying);
//if (cartNotAllFull() == false)