123#ifdef HAL_CEC_MODULE_ENABLED
184 if ((hcec == NULL) || (hcec->Init.RxBuffer == NULL))
191 assert_param(IS_CEC_SIGNALFREETIME(hcec->Init.SignalFreeTime));
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)
207 hcec->TxCpltCallback = HAL_CEC_TxCpltCallback;
208 hcec->RxCpltCallback = HAL_CEC_RxCpltCallback;
209 hcec->ErrorCallback = HAL_CEC_ErrorCallback;
211 if (hcec->MspInitCallback == NULL)
213 hcec->MspInitCallback = HAL_CEC_MspInit;
217 hcec->MspInitCallback(hcec);
220 if (hcec->gState == HAL_CEC_STATE_RESET)
225 HAL_CEC_MspInit(hcec);
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;
285 hcec->gState = HAL_CEC_STATE_BUSY;
287#if (USE_HAL_CEC_REGISTER_CALLBACKS == 1)
288 if (hcec->MspDeInitCallback == NULL)
290 hcec->MspDeInitCallback = HAL_CEC_MspDeInit;
294 hcec->MspDeInitCallback(hcec);
298 HAL_CEC_MspDeInit(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;
341HAL_StatusTypeDef HAL_CEC_SetDeviceAddress(CEC_HandleTypeDef *hcec, uint16_t 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);
387__weak
void HAL_CEC_MspInit(CEC_HandleTypeDef *hcec)
401__weak
void HAL_CEC_MspDeInit(CEC_HandleTypeDef *hcec)
409#if (USE_HAL_CEC_REGISTER_CALLBACKS == 1)
423HAL_StatusTypeDef HAL_CEC_RegisterCallback(CEC_HandleTypeDef *hcec, HAL_CEC_CallbackIDTypeDef CallbackID,
424 pCEC_CallbackTypeDef pCallback)
428 if (pCallback == NULL)
431 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
437 if (hcec->gState == HAL_CEC_STATE_READY)
441 case HAL_CEC_TX_CPLT_CB_ID :
442 hcec->TxCpltCallback = pCallback;
445 case HAL_CEC_ERROR_CB_ID :
446 hcec->ErrorCallback = pCallback;
449 case HAL_CEC_MSPINIT_CB_ID :
450 hcec->MspInitCallback = pCallback;
453 case HAL_CEC_MSPDEINIT_CB_ID :
454 hcec->MspDeInitCallback = pCallback;
459 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
465 else if (hcec->gState == HAL_CEC_STATE_RESET)
469 case HAL_CEC_MSPINIT_CB_ID :
470 hcec->MspInitCallback = pCallback;
473 case HAL_CEC_MSPDEINIT_CB_ID :
474 hcec->MspDeInitCallback = pCallback;
479 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
488 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
511HAL_StatusTypeDef HAL_CEC_UnRegisterCallback(CEC_HandleTypeDef *hcec, HAL_CEC_CallbackIDTypeDef CallbackID)
518 if (hcec->gState == HAL_CEC_STATE_READY)
522 case HAL_CEC_TX_CPLT_CB_ID :
523 hcec->TxCpltCallback = HAL_CEC_TxCpltCallback;
526 case HAL_CEC_ERROR_CB_ID :
527 hcec->ErrorCallback = HAL_CEC_ErrorCallback;
530 case HAL_CEC_MSPINIT_CB_ID :
531 hcec->MspInitCallback = HAL_CEC_MspInit;
534 case HAL_CEC_MSPDEINIT_CB_ID :
535 hcec->MspDeInitCallback = HAL_CEC_MspDeInit;
540 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
546 else if (hcec->gState == HAL_CEC_STATE_RESET)
550 case HAL_CEC_MSPINIT_CB_ID :
551 hcec->MspInitCallback = HAL_CEC_MspInit;
554 case HAL_CEC_MSPDEINIT_CB_ID :
555 hcec->MspDeInitCallback = HAL_CEC_MspDeInit;
560 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
569 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
587HAL_StatusTypeDef HAL_CEC_RegisterRxCpltCallback(CEC_HandleTypeDef *hcec, pCEC_RxCallbackTypeDef pCallback)
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;
630 if (HAL_CEC_STATE_READY == hcec->RxState)
632 hcec->RxCpltCallback = HAL_CEC_RxCpltCallback;
637 hcec->ErrorCode |= HAL_CEC_ERROR_INVALID_CALLBACK;
697HAL_StatusTypeDef HAL_CEC_Transmit_IT(CEC_HandleTypeDef *hcec, uint8_t InitiatorAddress, uint8_t DestinationAddress,
698 const uint8_t *pData, uint32_t Size)
702 if (hcec->gState == HAL_CEC_STATE_READY)
704 if ((pData == NULL) && (Size > 0U))
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);
753uint32_t HAL_CEC_GetLastReceivedFrameSize(
const CEC_HandleTypeDef *hcec)
755 return hcec->RxXferSize;
765void HAL_CEC_ChangeRxBuffer(CEC_HandleTypeDef *hcec, uint8_t *Rxbuffer)
767 hcec->Init.RxBuffer = Rxbuffer;
775void HAL_CEC_IRQHandler(CEC_HandleTypeDef *hcec)
780 itflag = hcec->Instance->ISR;
787 hcec->ErrorCode = HAL_CEC_ERROR_ARBLST;
788 __HAL_CEC_CLEAR_FLAG(hcec, CEC_FLAG_ARBLST);
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);
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);
817 HAL_CEC_RxCpltCallback(hcec, hcec->RxXferSize);
819 hcec->RxXferSize = 0U;
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);
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);
853 HAL_CEC_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);
885 HAL_CEC_ErrorCallback(hcec);
899__weak
void HAL_CEC_TxCpltCallback(CEC_HandleTypeDef *hcec)
914__weak
void HAL_CEC_RxCpltCallback(CEC_HandleTypeDef *hcec, uint32_t RxFrameSize)
929__weak
void HAL_CEC_ErrorCallback(CEC_HandleTypeDef *hcec)
961HAL_CEC_StateTypeDef HAL_CEC_GetState(
const CEC_HandleTypeDef *hcec)
965 temp1 = hcec->gState;
966 temp2 = hcec->RxState;
968 return (HAL_CEC_StateTypeDef)(temp1 | temp2);
977uint32_t HAL_CEC_GetError(
const CEC_HandleTypeDef *hcec)
979 return hcec->ErrorCode;
#define assert_param(expr)
This file contains all the functions prototypes for the HAL module driver.
#define HAL_IS_BIT_SET(REG, BIT)
HAL_StatusTypeDef
HAL Status structures definition.
#define __HAL_UNLOCK(__HANDLE__)
#define __HAL_LOCK(__HANDLE__)