#ifndef _MEM_MIDD_H_ #define _MEM_MIDD_H_ #include "stdint.h" #include "stdbool.h" #include "string.h" #include "uds_vmemcfg.h" #define MEM_NEM_TO_KB(n) (n*1024) #define MEM_NEM_TO_MB(n) (n*1024*1024) typedef enum{ MEM_FBL, MEM_CAL_APP, MEM_FLASHDRIVER, MEM_ERROR }MEM_TYPE; typedef enum { ERASE, PROGRAM, }MEM_FLAG; typedef uint8_t MEM_NRC; #define MEM_OK 0x00 #define MEM_BSE 0x24 #define MEM_RCRRP 0x78 #define MEM_BUSE 0x71 #define MEM_ERASE_FAIL 0x72 #define MEM_PROGRAM_FAIL 0x72 typedef uint32_t MEMADDR_T; typedef uint32_t MEMLEN_T; typedef uint8_t MEMDATA_T; typedef MEM_NRC (*memDrvErasefn) (MEMADDR_T addr_t, MEMLEN_T len_t); typedef MEM_NRC(*memDrvRequestfn) (MEMADDR_T addr_t, MEMLEN_T len_t); typedef MEM_NRC (*memDrvProgramfn)(MEMADDR_T addr_t, MEMDATA_T* data_t, MEMLEN_T len_t); typedef MEM_NRC (*memDrvRead) (MEMADDR_T addr_t, MEMDATA_T* data_t, MEMLEN_T len_t); typedef MEM_NRC (*memDrvVerifyfn) (MEMADDR_T addr_t, MEMDATA_T* data_t, MEMLEN_T len_t); typedef struct { uint8_t type_e; uint32_t startAddr_u32; uint32_t maxLenght_u32; uint32_t endAddr_u32; memDrvErasefn erase; memDrvRequestfn request; memDrvRead read; memDrvProgramfn program; memDrvVerifyfn verify; bool writeMustErasen; bool memIsErasen; }MEM_MIDD_ST; bool MEM_AllotCheck(void); MEM_TYPE MEM_GetType(uint32_t addr_u32, uint32_t lenght_u32); bool MEM_AddrVerify(uint32_t addr_u32, uint32_t lenght_u32); MEM_NRC MEM_Erase(MEMADDR_T addr_u32, MEMLEN_T lenght_u32); MEM_NRC MEM_Request(MEMADDR_T addr_u32, MEMLEN_T lenght_u32); MEM_NRC MEM_Program( MEMADDR_T addr_t, MEMDATA_T* data_t, MEMLEN_T len_t ); /****************************************************************************/ /****************************************************************************/ MEM_NRC MEM_FlashDriverProgram( MEMADDR_T addr_t, MEMDATA_T* data_t, MEMLEN_T len_t); MEM_NRC MEM_FlashCopyAndPaste( MEMADDR_T copy_addr_t, MEMADDR_T paste_addr_t, MEMLEN_T len_t); MEM_NRC MEM_CodeflashErase(MEMADDR_T addr_t, MEMLEN_T len_t); MEM_NRC MEM_CodeflashRequest(MEMADDR_T addr_t, MEMLEN_T len_t); MEM_NRC MEM_CodeflashProgram( MEMADDR_T addr_t, MEMDATA_T* data_t, MEMLEN_T len_t); MEM_NRC MEM_EepromErase(MEMADDR_T addr_t, MEMLEN_T len_t); MEM_NRC MEM_EepromProgram( MEMADDR_T addr_t, MEMDATA_T* data_t, MEMLEN_T len_t); #endif