¶Ô±ÈÐÂÎļþ |
| | |
| | | /******************************************************************************* |
| | | * File Name : HIDO_FIFO.h |
| | | * Description : |
| | | * Created on : 2018å¹´4æ26æ¥ |
| | | * Author : www.hido-studio.com |
| | | *******************************************************************************/ |
| | | |
| | | #ifndef HIDOLIBRARY_FIFO_HIDO_FIFO_H_ |
| | | #define HIDOLIBRARY_FIFO_HIDO_FIFO_H_ |
| | | /******************************************************************************* |
| | | * Include Files * |
| | | *******************************************************************************/ |
| | | #include "HIDO_TypeDef.h" |
| | | |
| | | /******************************************************************************* |
| | | * Macro * |
| | | *******************************************************************************/ |
| | | |
| | | /******************************************************************************* |
| | | * Type Definition * |
| | | *******************************************************************************/ |
| | | typedef struct |
| | | { |
| | | #define FIFO_DATA_DEL_FLAG_UNDEL 0xFF |
| | | #define FIFO_DATA_DEL_FLAG_DEL 0xDE |
| | | HIDO_UINT8 m_u8DelFlag; |
| | | #define FIFO_DATA_FLAG_USED 0xAB |
| | | #define FIFO_DATA_FLAG_UNUSED 0xFF |
| | | HIDO_UINT8 m_u8Flag; /* æ è®°ï¼åºå®ä¸º0xAB,æ è¯å·²ä½¿ç¨ */ |
| | | HIDO_UINT8 m_u8DataLen; /* æ°æ®é¿åº¦,æ°æ®çæå¤§é¿åº¦=m_u32MemberSize-sizeof(ST_FIFOHeader) */ |
| | | |
| | | #define FIFO_DATA_TYPE_MID 0xAC |
| | | #define FIFO_DATA_TYPE_END 0xED |
| | | HIDO_UINT8 m_u8Type; /* æ è¯æ¯é½æ¯ä¸æ®µæ°æ®çç»æ */ |
| | | }HIDO_FIFOHeaderStruct; |
| | | |
| | | typedef struct FIFOStruct HIDO_FIFOStruct; |
| | | typedef struct FIFOInitStruct HIDO_FIFOInitStruct; |
| | | typedef HIDO_INT32 (*HIDO_FIFOReadFunc)(HIDO_FIFOStruct *_pstFIFO, HIDO_UINT32 _u32Addr, HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32Len); |
| | | typedef HIDO_INT32 (*HIDO_FIFOWriteFunc)(HIDO_FIFOStruct *_pstFIFO, HIDO_UINT32 _u32Addr, HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32Len); |
| | | typedef HIDO_INT32 (*HIDO_FIFOEraseFunc)(HIDO_FIFOStruct *_pstFIFO, HIDO_UINT32 _u32Addr); |
| | | typedef HIDO_INT32 (*HIDO_FIFOForEachFunc)(HIDO_FIFOStruct *_pstFIFO, HIDO_UINT32 _u32Index, HIDO_VOID *_pArg); |
| | | |
| | | struct FIFOStruct |
| | | { |
| | | HIDO_UINT16 m_u16Reserve; |
| | | HIDO_UINT32 m_u32SectorSize; /* åå¨ä»è´¨çsectorå¤§å° */ |
| | | HIDO_UINT32 m_u32MemberSize; /* æåå¤§å° */ |
| | | HIDO_UINT32 m_u32ColCount; /* æå¤å°åï¼ä¹å°±æ¯ä¸ä¸ªsectorå¯ä»¥å®¹çº³æåçæ»ä¸ªæ° */ |
| | | HIDO_UINT32 m_u32RowCount; /* æå¤å°è¡ï¼ä¹å°±æ¯æå¤å°ä¸ªsector */ |
| | | |
| | | HIDO_UINT32 m_u32CurIndex; /* å½åç´¢å¼ï¼è®°å½å½åä¿åå°äºåªé */ |
| | | HIDO_UINT32 m_u32TotalCount; /* å¯ä»¥å卿°æ®çæ»ä¸ªæ°ï¼= m_u32ColCount*m_u32RowCount */ |
| | | HIDO_UINT32 m_u32StartAddr; /* æ°æ®ä¿åçèµ·å§ä½ç½® */ |
| | | HIDO_UINT32 m_u32TotalSize; /* FIFOçæ»å¤§å° */ |
| | | |
| | | HIDO_FIFOReadFunc m_fnRead; /* ä»è´¨è¯»åæ¹æ³ */ |
| | | HIDO_FIFOWriteFunc m_fnWrite; /* ä»è´¨åå
¥æ¹æ³ */ |
| | | HIDO_FIFOEraseFunc m_fnErase; /* ä»è´¨æ¦é¤æ¹æ³ */ |
| | | }; |
| | | |
| | | struct FIFOInitStruct |
| | | { |
| | | HIDO_UINT32 m_u32SectorSize; /* åå¨ä»è´¨çsectorå¤§å° */ |
| | | HIDO_UINT32 m_u32MemberSize; /* æåå¤§å° */ |
| | | HIDO_UINT32 m_u32TotalSize; /* FIFOçæ»å¤§å° */ |
| | | HIDO_UINT32 m_u32StartAddr; /* æ°æ®ä¿åçèµ·å§ä½ç½® */ |
| | | |
| | | HIDO_FIFOReadFunc m_fnRead; /* ä»è´¨è¯»åæ¹æ³ */ |
| | | HIDO_FIFOWriteFunc m_fnWrite; /* ä»è´¨åå
¥æ¹æ³ */ |
| | | HIDO_FIFOEraseFunc m_fnErase; /* ä»è´¨æ¦é¤æ¹æ³ */ |
| | | }; |
| | | |
| | | /******************************************************************************* |
| | | * Global Function * |
| | | *******************************************************************************/ |
| | | HIDO_INT32 HIDO_FIFOInit(HIDO_FIFOStruct *_pstFIFO, HIDO_FIFOInitStruct *_pstInit); |
| | | HIDO_INT32 HIDO_FIFOReadForEach(HIDO_FIFOStruct *_pstFIFO, HIDO_FIFOForEachFunc _fnForEach, HIDO_BOOL _bAsc, HIDO_VOID *_pArg); |
| | | HIDO_INT32 HIDO_FIFOReadMember(HIDO_FIFOStruct *_pstFIFO, HIDO_UINT32 _u32ReadIndex, HIDO_FIFOHeaderStruct *_pstDataHeader, HIDO_UINT8 *_pu8Data, HIDO_UINT32 *_pu32Len); |
| | | HIDO_INT32 HIDO_FIFODelFrontData(HIDO_FIFOStruct *_pstFIFO, HIDO_UINT32 _u32FrontIndex); |
| | | HIDO_INT32 HIDO_FIFOGetFrontData(HIDO_FIFOStruct *_pstFIFO, HIDO_UINT32 *_pu32FrontIndex, HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32DataSize, HIDO_UINT32 *_pu32Len); |
| | | HIDO_INT32 HIDO_FIFOWrite(HIDO_FIFOStruct *_pstFIFO, HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32Len); |
| | | HIDO_INT32 HIDO_FIFOClean(HIDO_FIFOStruct *_pstFIFO); |
| | | |
| | | #endif /* HIDOLIBRARY_FIFO_HIDO_FIFO_H_ */ |