123 #ifdef HAL_CEC_MODULE_ENABLED
184 if ((hcec == NULL) || (hcec->Init.RxBuffer == NULL))
190 assert_param(IS_CEC_ALL_INSTANCE(hcec->Instance));
191 assert_param(IS_CEC_SIGNALFREETIME(hcec->Init.SignalFreeTime));
192 assert_param(IS_CEC_TOLERANCE(hcec->Init.Tolerance));
193 assert_param(IS_CEC_BRERXSTOP(hcec->Init.BRERxStop));
194 assert_param(IS_CEC_BREERRORBITGEN(hcec->Init.BREErrorBitGen));
195 assert_param(IS_CEC_LBPEERRORBITGEN(hcec->Init.LBPEErrorBitGen));
196 assert_param(IS_CEC_BROADCASTERROR_NO_ERRORBIT_GENERATION(hcec->Init.BroadcastMsgNoErrorBitGen));
197 assert_param(IS_CEC_SFTOP(hcec->Init.SignalFreeTimeOption));
198 assert_param(IS_CEC_LISTENING_MODE(hcec->Init.ListenMode));
199 assert_param(IS_CEC_OWN_ADDRESS(hcec->Init.OwnAddress));
201 #if (USE_HAL_CEC_REGISTER_CALLBACKS == 1)
202 if (hcec->gState == HAL_CEC_STATE_RESET)
205 hcec->Lock = HAL_UNLOCKED;
211 if (hcec->MspInitCallback == NULL)
217 hcec->MspInitCallback(hcec);
220 if (hcec->gState == HAL_CEC_STATE_RESET)
223 hcec->Lock = HAL_UNLOCKED;
229 hcec->gState = HAL_CEC_STATE_BUSY;
232 __HAL_CEC_DISABLE(hcec);
235 hcec->Instance->CFGR = hcec->Init.SignalFreeTime | hcec->Init.Tolerance | hcec->Init.BRERxStop | \
236 hcec->Init.BREErrorBitGen | hcec->Init.LBPEErrorBitGen | \
237 hcec->Init.BroadcastMsgNoErrorBitGen | \
238 hcec->Init.SignalFreeTimeOption | ((uint32_t)(hcec->Init.OwnAddress) << 16U) | \
239 hcec->Init.ListenMode;
256 __HAL_CEC_ENABLE_IT(hcec, CEC_IT_RXBR | CEC_IT_RXEND | CEC_IER_RX_ALL_ERR | CEC_IT_TXBR | CEC_IT_TXEND |
260 __HAL_CEC_ENABLE(hcec);
262 hcec->ErrorCode = HAL_CEC_ERROR_NONE;
263 hcec->gState = HAL_CEC_STATE_READY;
264 hcec->RxState = HAL_CEC_STATE_READY;
283 assert_param(IS_CEC_ALL_INSTANCE(hcec->Instance));
285 hcec->gState = HAL_CEC_STATE_BUSY;
287 #if (USE_HAL_CEC_REGISTER_CALLBACKS == 1)
288 if (hcec->MspDeInitCallback == NULL)
294 hcec->MspDeInitCallback(hcec);
302 __HAL_CEC_DISABLE(hcec);
305 __HAL_CEC_CLEAR_FLAG(hcec, CEC_FLAG_TXEND | CEC_FLAG_TXBR | CEC_FLAG_RXBR | CEC_FLAG_RXEND | CEC_ISR_ALL_ERROR);
322 __HAL_CEC_DISABLE_IT(hcec, CEC_IT_RXBR | CEC_IT_RXEND | CEC_IER_RX_ALL_ERR | CEC_IT_TXBR | CEC_IT_TXEND |
325 hcec->ErrorCode = HAL_CEC_ERROR_NONE;
326 hcec->gState = HAL_CEC_STATE_RESET;
327 hcec->RxState = HAL_CEC_STATE_RESET;
344 assert_param(IS_CEC_OWN_ADDRESS(CEC_OwnAddress));
346 if ((hcec->gState == HAL_CEC_STATE_READY) && (hcec->RxState == HAL_CEC_STATE_READY))
351 hcec->gState = HAL_CEC_STATE_BUSY;
354 __HAL_CEC_DISABLE(hcec);
356 if (CEC_OwnAddress != CEC_OWN_ADDRESS_NONE)
358 hcec->Instance->CFGR |= ((uint32_t)CEC_OwnAddress << 16);
362 hcec->Instance->CFGR &= ~(CEC_CFGR_OAR);
365 hcec->gState = HAL_CEC_STATE_READY;
366 hcec->ErrorCode = HAL_CEC_ERROR_NONE;
372 __HAL_CEC_ENABLE(hcec);
409 #if (USE_HAL_CEC_REGISTER_CALLBACKS == 1)
426 HAL_StatusTypeDef status = HAL_OK;
428 if (pCallback == NULL)
431 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
437 if (hcec->gState == HAL_CEC_STATE_READY)
442 hcec->TxCpltCallback = pCallback;
446 hcec->ErrorCallback = pCallback;
450 hcec->MspInitCallback = pCallback;
454 hcec->MspDeInitCallback = pCallback;
459 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
465 else if (hcec->gState == HAL_CEC_STATE_RESET)
470 hcec->MspInitCallback = pCallback;
474 hcec->MspDeInitCallback = pCallback;
479 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
488 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
513 HAL_StatusTypeDef status = HAL_OK;
518 if (hcec->gState == HAL_CEC_STATE_READY)
540 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
546 else if (hcec->gState == HAL_CEC_STATE_RESET)
560 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
569 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
589 HAL_StatusTypeDef status = HAL_OK;
591 if (pCallback == NULL)
594 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
600 if (HAL_CEC_STATE_READY == hcec->RxState)
602 hcec->RxCpltCallback = pCallback;
607 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
625 HAL_StatusTypeDef status = HAL_OK;
630 if (HAL_CEC_STATE_READY == hcec->RxState)
637 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
698 const uint8_t *pData, uint32_t Size)
702 if (hcec->gState == HAL_CEC_STATE_READY)
704 if ((pData == NULL) && (Size > 0U))
709 assert_param(IS_CEC_ADDRESS(DestinationAddress));
710 assert_param(IS_CEC_ADDRESS(InitiatorAddress));
711 assert_param(IS_CEC_MSGSIZE(Size));
715 hcec->pTxBuffPtr = pData;
716 hcec->gState = HAL_CEC_STATE_BUSY_TX;
717 hcec->ErrorCode = HAL_CEC_ERROR_NONE;
721 hcec->TxXferCount = (uint16_t)Size;
727 __HAL_CEC_LAST_BYTE_TX_SET(hcec);
731 hcec->Instance->TXDR = (uint32_t)(((uint32_t)InitiatorAddress << CEC_INITIATOR_LSB_POS) | DestinationAddress);
734 __HAL_CEC_FIRST_BYTE_TX_SET(hcec);
755 return hcec->RxXferSize;
767 hcec->Init.RxBuffer = Rxbuffer;
780 itflag = hcec->Instance->ISR;
785 if (HAL_IS_BIT_SET(itflag, CEC_FLAG_ARBLST))
787 hcec->ErrorCode = HAL_CEC_ERROR_ARBLST;
788 __HAL_CEC_CLEAR_FLAG(hcec, CEC_FLAG_ARBLST);
793 if (HAL_IS_BIT_SET(itflag, CEC_FLAG_RXBR))
796 hcec->RxState = HAL_CEC_STATE_BUSY_RX;
799 *hcec->Init.RxBuffer = (uint8_t) hcec->Instance->RXDR;
800 hcec->Init.RxBuffer++;
801 __HAL_CEC_CLEAR_FLAG(hcec, CEC_FLAG_RXBR);
805 if (HAL_IS_BIT_SET(itflag, CEC_FLAG_RXEND))
808 __HAL_CEC_CLEAR_FLAG(hcec, CEC_FLAG_RXEND);
811 hcec->RxState = HAL_CEC_STATE_READY;
812 hcec->ErrorCode = HAL_CEC_ERROR_NONE;
813 hcec->Init.RxBuffer -= hcec->RxXferSize;
814 #if (USE_HAL_CEC_REGISTER_CALLBACKS == 1U)
815 hcec->RxCpltCallback(hcec, hcec->RxXferSize);
819 hcec->RxXferSize = 0U;
824 if (HAL_IS_BIT_SET(itflag, CEC_FLAG_TXBR))
827 if (hcec->TxXferCount == 0U)
830 __HAL_CEC_LAST_BYTE_TX_SET(hcec);
833 hcec->Instance->TXDR = (uint8_t) * hcec->pTxBuffPtr;
836 __HAL_CEC_CLEAR_FLAG(hcec, CEC_FLAG_TXBR);
840 if (HAL_IS_BIT_SET(itflag, CEC_FLAG_TXEND))
842 __HAL_CEC_CLEAR_FLAG(hcec, CEC_FLAG_TXEND);
845 hcec->gState = HAL_CEC_STATE_READY;
849 hcec->ErrorCode = HAL_CEC_ERROR_NONE;
850 #if (USE_HAL_CEC_REGISTER_CALLBACKS == 1U)
851 hcec->TxCpltCallback(hcec);
858 if ((itflag & (CEC_ISR_RXOVR | CEC_ISR_BRE | CEC_ISR_SBPE | CEC_ISR_LBPE | CEC_ISR_RXACKE | CEC_ISR_TXUDR |
859 CEC_ISR_TXERR | CEC_ISR_TXACKE)) != 0U)
861 hcec->ErrorCode = itflag;
862 __HAL_CEC_CLEAR_FLAG(hcec, HAL_CEC_ERROR_RXOVR | HAL_CEC_ERROR_BRE | CEC_FLAG_LBPE | CEC_FLAG_SBPE |
863 HAL_CEC_ERROR_RXACKE | HAL_CEC_ERROR_TXUDR | HAL_CEC_ERROR_TXERR | HAL_CEC_ERROR_TXACKE);
866 if ((itflag & (CEC_ISR_RXOVR | CEC_ISR_BRE | CEC_ISR_SBPE | CEC_ISR_LBPE | CEC_ISR_RXACKE)) != 0U)
868 hcec->Init.RxBuffer -= hcec->RxXferSize;
869 hcec->RxXferSize = 0U;
870 hcec->RxState = HAL_CEC_STATE_READY;
872 else if (((itflag & CEC_ISR_ARBLST) == 0U) && ((itflag & (CEC_ISR_TXUDR | CEC_ISR_TXERR | CEC_ISR_TXACKE)) != 0U))
875 hcec->gState = HAL_CEC_STATE_READY;
881 #if (USE_HAL_CEC_REGISTER_CALLBACKS == 1U)
882 hcec->ErrorCallback(hcec);
965 temp1 = hcec->gState;
966 temp2 = hcec->RxState;
979 return hcec->ErrorCode;
void HAL_CEC_MspDeInit(CEC_HandleTypeDef *hcec)
CEC MSP DeInit.
void HAL_CEC_MspInit(CEC_HandleTypeDef *hcec)
CEC MSP Init.
HAL_StatusTypeDef HAL_CEC_DeInit(CEC_HandleTypeDef *hcec)
DeInitializes the CEC peripheral.
HAL_StatusTypeDef HAL_CEC_Init(CEC_HandleTypeDef *hcec)
Initializes the CEC mode according to the specified parameters in the CEC_InitTypeDef and creates the...
HAL_StatusTypeDef HAL_CEC_UnRegisterCallback(CEC_HandleTypeDef *hcec, HAL_CEC_CallbackIDTypeDef CallbackID)
Unregister an CEC Callback CEC callback is redirected to the weak predefined callback.
HAL_StatusTypeDef HAL_CEC_SetDeviceAddress(CEC_HandleTypeDef *hcec, uint16_t CEC_OwnAddress)
Initializes the Own Address of the CEC device.
HAL_StatusTypeDef HAL_CEC_RegisterRxCpltCallback(CEC_HandleTypeDef *hcec, pCEC_RxCallbackTypeDef pCallback)
Register CEC RX complete Callback To be used instead of the weak HAL_CEC_RxCpltCallback() predefined ...
HAL_StatusTypeDef HAL_CEC_UnRegisterRxCpltCallback(CEC_HandleTypeDef *hcec)
UnRegister CEC RX complete Callback CEC RX complete Callback is redirected to the weak HAL_CEC_RxCplt...
HAL_StatusTypeDef HAL_CEC_RegisterCallback(CEC_HandleTypeDef *hcec, HAL_CEC_CallbackIDTypeDef CallbackID, pCEC_CallbackTypeDef pCallback)
Register a User CEC Callback To be used instead of the weak predefined callback.
void HAL_CEC_TxCpltCallback(CEC_HandleTypeDef *hcec)
Tx Transfer completed callback.
void HAL_CEC_IRQHandler(CEC_HandleTypeDef *hcec)
This function handles CEC interrupt requests.
void HAL_CEC_ErrorCallback(CEC_HandleTypeDef *hcec)
CEC error callbacks.
uint32_t HAL_CEC_GetLastReceivedFrameSize(const CEC_HandleTypeDef *hcec)
Get size of the received frame.
void HAL_CEC_RxCpltCallback(CEC_HandleTypeDef *hcec, uint32_t RxFrameSize)
Rx Transfer completed callback.
HAL_StatusTypeDef HAL_CEC_Transmit_IT(CEC_HandleTypeDef *hcec, uint8_t InitiatorAddress, uint8_t DestinationAddress, const uint8_t *pData, uint32_t Size)
Send data in interrupt mode.
void HAL_CEC_ChangeRxBuffer(CEC_HandleTypeDef *hcec, uint8_t *Rxbuffer)
Change Rx Buffer.
uint32_t HAL_CEC_GetError(const CEC_HandleTypeDef *hcec)
Return the CEC error code.
HAL_CEC_StateTypeDef HAL_CEC_GetState(const CEC_HandleTypeDef *hcec)
return the CEC state
HAL_CEC_CallbackIDTypeDef
HAL CEC Callback ID enumeration definition.
struct __CEC_HandleTypeDef else typedef struct endif CEC_HandleTypeDef
CEC handle Structure definition.
void(* pCEC_CallbackTypeDef)(CEC_HandleTypeDef *hcec)
HAL CEC Callback pointer definition.
void(* pCEC_RxCallbackTypeDef)(CEC_HandleTypeDef *hcec, uint32_t RxFrameSize)
uint32_t HAL_CEC_StateTypeDef
HAL CEC State definition.
@ HAL_CEC_MSPDEINIT_CB_ID
This file contains all the functions prototypes for the HAL module driver.