| | |
| | | #define FIGNER_PRINT_WRITE (9) |
| | | #define FIGNER_PRINT_READ (10) |
| | | |
| | | #define VA_InstallDate (80u) // 4B |
| | | #define VA_PROGRAM_DATA (84u) // 32B |
| | | #define VA_PROGRAM_DATE (100u) // 4B |
| | | #define VA_InstallDate (20u) // 4B |
| | | #define VA_PROGRAM_DATA (21u) // 32B |
| | | #define VA_PROGRAM_DATE (25u) // 4B |
| | | |
| | | #define ProgramBlockLenth (32u) |
| | | |
| | |
| | | |
| | | uint16_t DIDTable_Entry_Count_u16 = 0; |
| | | UDS_DIDtableEntry DIDtable[UDS_DID_TABLE_SIZE]; |
| | | static uint8_t DID_LoaderWaitTimer = 0; |
| | | // static uint8_t DID_LoaderWaitTimer = 0; |
| | | static uint8_t DID_NeedtoSaveFlag = 0; |
| | | |
| | | void did_init(void) |
| | | { |
| | | DID_NeedtoSaveFlag = 0; |
| | | UDS_InitDIDMapRW(DID_NS_ProgrammingCounter, VA_PROGRAM_DATA, &NVM_ProgramBLOCK.ProgrammingCounter, 1); |
| | | UDS_InitDIDMapRW(DID_NS_ProAtpCounter, VA_PROGRAM_DATA, &NVM_ProgramBLOCK.ProgrammingAttempCounter, 1); |
| | | UDS_InitDIDMapRW(DID_NS_ReadFingerPrint, VA_PROGRAM_DATA, &NVM_ProgramBLOCK.FingerPrint_W, 9); |
| | | UDS_InitDIDMapRW(DID_NS_RepairShopCodeOrTester, VA_PROGRAM_DATA, &NVM_ProgramBLOCK.RepairShopCodeOrTesterSerialNumber, 16); |
| | | UDS_InitDIDMapRW(DID_NS_ECUProgtammingDate, VA_PROGRAM_DATA, &NVM_ProgramBLOCK.UDS_NS_ProgrammingDate.ProgrammingDate_YY_H, 4); |
| | | UDS_InitDIDMapRW(DID_NS_WriteFingerPrint, VA_PROGRAM_DATA, &NVM_ProgramBLOCK.FingerPrint_W, 10); |
| | | |
| | | FblReadProgramBlock(); // load program data.must after ee_init() |
| | | } |
| | | |
| | | extern void DID_SetWriteSaveFlag(void) |
| | | { |
| | | DID_NeedtoSaveFlag = 1; |
| | | } |
| | | |
| | | extern int8_t DID_SaveProgamDataToNvm(void) |
| | | { |
| | | int8_t rtn = OP_STATUS_FAIL; |
| | | |
| | | if (DID_NeedtoSaveFlag == 1) |
| | | { |
| | | rtn = FblWriteProgramBlock(); |
| | | } |
| | | else |
| | | { |
| | | rtn = OP_STATUS_OK; |
| | | } |
| | | } |
| | | |
| | | extern void DID_UpdateProgramCnt(void) |
| | | { |
| | | NVM_ProgramBLOCK.ProgrammingCounter += 1; |
| | | DID_NeedtoSaveFlag = 1; |
| | | } |
| | | |
| | | extern void DID_UpdateAtpProgramCnt(void) |
| | | { |
| | | NVM_ProgramBLOCK.ProgrammingAttempCounter += 1; |
| | | DID_NeedtoSaveFlag = 1; |
| | | } |
| | | |
| | | extern int8_t FblReadProgramBlock(void) |
| | |
| | | |
| | | uint32_t *p_dest = (uint32_t *)(&NVM_ProgramBLOCK); |
| | | uint8_t i = 0; |
| | | int8_t rtn = OP_STATUS_FAIL; |
| | | int8_t rtn = OP_STATUS_OK; |
| | | EE_Status retValue1 = EE_WRITE_ERROR; |
| | | |
| | | for (i = 0; i < (ProgramBlockLenth >> 2); i++) |
| | | { |
| | | if (EE_OK != EE_ReadVariable32bits(VA_PROGRAM_DATA + i * 4, (p_dest + i))) |
| | | if (EE_OK != EE_ReadVariable32bits(VA_PROGRAM_DATA + i, (p_dest + i))) |
| | | { |
| | | rtn = OP_STATUS_FAIL; |
| | | break; |
| | | } |
| | | } |
| | |
| | | { |
| | | uint32_t *p_dest = (uint32_t *)(&NVM_ProgramBLOCK); |
| | | uint8_t i = 0; |
| | | int8_t rtn = OP_STATUS_FAIL; |
| | | int8_t rtn = OP_STATUS_OK; |
| | | EE_Status retValue1 = EE_WRITE_ERROR; |
| | | |
| | | for (i = 0; i < (ProgramBlockLenth >> 2); i++) |
| | | { |
| | | if (EE_OK != EE_WriteVariable32bits(VA_PROGRAM_DATA + i * 4, *(p_dest + i))) |
| | | if (EE_OK != EE_WriteVariable32bits(VA_PROGRAM_DATA + i, *(p_dest + i))) |
| | | { |
| | | rtn = OP_STATUS_FAIL; |
| | | break; |
| | | } |
| | | } |