tao_z
2022-08-07 f453cfb645516628a6d1fa36e2ca633e1da6d708
Application/source/uds_modules/did.c
@@ -17,9 +17,9 @@
#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)
@@ -44,16 +44,51 @@
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)
@@ -61,13 +96,14 @@
    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;
        }
    }
@@ -78,13 +114,14 @@
{
    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;
        }
    }