From 54c20aa46ee7f9fb543b2d23a378eef795db9504 Mon Sep 17 00:00:00 2001 From: Gatsby Van Date: Sun, 24 Dec 2023 13:07:30 +0800 Subject: [PATCH] add method peek data. --- datalink814_ge/src/phy_ctrl/phy_ctrl.c | 32 ++++++++++++++++++++++---- datalink814_ge/src/phy_ctrl/phy_ctrl.h | 1 + 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/datalink814_ge/src/phy_ctrl/phy_ctrl.c b/datalink814_ge/src/phy_ctrl/phy_ctrl.c index 6c440f9..5a43dc0 100644 --- a/datalink814_ge/src/phy_ctrl/phy_ctrl.c +++ b/datalink814_ge/src/phy_ctrl/phy_ctrl.c @@ -786,17 +786,20 @@ void Phy_GetLastSlotStartTimeStamp(PHY_INST* instPtr, TIME_WORD* slotStart) { /*****************************************************************************/ /** - * @brief Get received data (base on PL Record), store it to data buffer. + * @brief Copy ans store the received data, if received data valid. * * @param instPtr a pointer to physical layer control instance. * - * @return SUCCESS - * FAILURE last frame type cannot be recognized. + * @return NONE * ******************************************************************************/ -void Phy_RetrieveRecvData(PHY_INST* instPtr, uint8_t* dataBuff) { +void Phy_PeekRecvData(PHY_INST* instPtr, uint8_t* dataBuff) { ASSERT(instPtr != NULL); ASSERT(dataBuff != NULL); + if (instPtr->isValid == false) + { + return; + } uint32_t frameLen, offset; frameLen = (PhyRead(instPtr, RECVDATA_STATE) & RECVDATA_STATE_LEN_MASK) >> RECVDATA_STATE_LEN_SHIFT; @@ -804,3 +807,24 @@ void Phy_RetrieveRecvData(PHY_INST* instPtr, uint8_t* dataBuff) { memcpy(dataBuff, (uint8_t*)(instPtr->recvDataAddr + offset), frameLen); } + +/*****************************************************************************/ +/** + * @brief Get the received data (if valid), store it to data buffer. + * and clear data valid flag. + * + * @param instPtr a pointer to physical layer control instance. + * + * @return NONE + * + ******************************************************************************/ +void Phy_RetrieveRecvData(PHY_INST* instPtr, uint8_t* dataBuff) { + ASSERT(instPtr != NULL); + ASSERT(dataBuff != NULL); + if (instPtr->isValid == false) + { + return; + } + Phy_RetrievePeekData(instPtr, dataBuff); + instPtr->isValid = false; +} diff --git a/datalink814_ge/src/phy_ctrl/phy_ctrl.h b/datalink814_ge/src/phy_ctrl/phy_ctrl.h index 74d9d3c..cb8fbb2 100644 --- a/datalink814_ge/src/phy_ctrl/phy_ctrl.h +++ b/datalink814_ge/src/phy_ctrl/phy_ctrl.h @@ -242,6 +242,7 @@ void Phy_Halt(PHY_INST* instPtr); int32_t Phy_SetMode(PHY_INST* instPtr, PHY_MODE modeCod); int32_t Phy_SetupNextSlot(PHY_INST* instPtr, PHY_TOR_TYPE txrxMode, L1_FRAME_TYPE frameType, uint8_t* dataBuff); +void Phy_PeekRecvData(PHY_INST* instPtr, uint8_t* dataBuff); void Phy_RetrieveRecvData(PHY_INST* instPtr, uint8_t* dataBuff); bool Phy_IsFrameDetected(PHY_INST* instPtr);