Lines Matching refs:hirda
239 void IRDA_InitCallbacksToDefault(IRDA_HandleTypeDef *hirda);
241 static HAL_StatusTypeDef IRDA_SetConfig(IRDA_HandleTypeDef *hirda);
242 static HAL_StatusTypeDef IRDA_CheckIdleState(IRDA_HandleTypeDef *hirda);
243 static HAL_StatusTypeDef IRDA_WaitOnFlagUntilTimeout(IRDA_HandleTypeDef *hirda, uint32_t Flag, Flag…
245 static void IRDA_EndTxTransfer(IRDA_HandleTypeDef *hirda);
246 static void IRDA_EndRxTransfer(IRDA_HandleTypeDef *hirda);
257 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda);
258 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda);
259 static void IRDA_Receive_IT(IRDA_HandleTypeDef *hirda);
326 HAL_StatusTypeDef HAL_IRDA_Init(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Init() argument
329 if (hirda == NULL) in HAL_IRDA_Init()
335 assert_param(IS_IRDA_INSTANCE(hirda->Instance)); in HAL_IRDA_Init()
337 if (hirda->gState == HAL_IRDA_STATE_RESET) in HAL_IRDA_Init()
340 hirda->Lock = HAL_UNLOCKED; in HAL_IRDA_Init()
343 IRDA_InitCallbacksToDefault(hirda); in HAL_IRDA_Init()
345 if (hirda->MspInitCallback == NULL) in HAL_IRDA_Init()
347 hirda->MspInitCallback = HAL_IRDA_MspInit; in HAL_IRDA_Init()
351 hirda->MspInitCallback(hirda); in HAL_IRDA_Init()
354 HAL_IRDA_MspInit(hirda); in HAL_IRDA_Init()
358 hirda->gState = HAL_IRDA_STATE_BUSY; in HAL_IRDA_Init()
361 __HAL_IRDA_DISABLE(hirda); in HAL_IRDA_Init()
364 if (IRDA_SetConfig(hirda) == HAL_ERROR) in HAL_IRDA_Init()
372 CLEAR_BIT(hirda->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN | USART_CR2_STOP)); in HAL_IRDA_Init()
373 CLEAR_BIT(hirda->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL)); in HAL_IRDA_Init()
376 hirda->Instance->CR3 |= USART_CR3_IREN; in HAL_IRDA_Init()
379 __HAL_IRDA_ENABLE(hirda); in HAL_IRDA_Init()
382 return (IRDA_CheckIdleState(hirda)); in HAL_IRDA_Init()
391 HAL_StatusTypeDef HAL_IRDA_DeInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DeInit() argument
394 if (hirda == NULL) in HAL_IRDA_DeInit()
400 assert_param(IS_IRDA_INSTANCE(hirda->Instance)); in HAL_IRDA_DeInit()
402 hirda->gState = HAL_IRDA_STATE_BUSY; in HAL_IRDA_DeInit()
406 if (hirda->MspDeInitCallback == NULL) in HAL_IRDA_DeInit()
408 hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; in HAL_IRDA_DeInit()
411 hirda->MspDeInitCallback(hirda); in HAL_IRDA_DeInit()
413 HAL_IRDA_MspDeInit(hirda); in HAL_IRDA_DeInit()
416 __HAL_IRDA_DISABLE(hirda); in HAL_IRDA_DeInit()
418 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_DeInit()
419 hirda->gState = HAL_IRDA_STATE_RESET; in HAL_IRDA_DeInit()
420 hirda->RxState = HAL_IRDA_STATE_RESET; in HAL_IRDA_DeInit()
423 __HAL_UNLOCK(hirda); in HAL_IRDA_DeInit()
434 __weak void HAL_IRDA_MspInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_MspInit() argument
437 UNUSED(hirda); in HAL_IRDA_MspInit()
450 __weak void HAL_IRDA_MspDeInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_MspDeInit() argument
453 UNUSED(hirda); in HAL_IRDA_MspDeInit()
482 HAL_StatusTypeDef HAL_IRDA_RegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef C… in HAL_IRDA_RegisterCallback() argument
490 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
495 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_RegisterCallback()
500 hirda->TxHalfCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
504 hirda->TxCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
508 hirda->RxHalfCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
512 hirda->RxCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
516 hirda->ErrorCallback = pCallback; in HAL_IRDA_RegisterCallback()
520 hirda->AbortCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
524 hirda->AbortTransmitCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
528 hirda->AbortReceiveCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
532 hirda->MspInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
536 hirda->MspDeInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
541 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
548 else if (hirda->gState == HAL_IRDA_STATE_RESET) in HAL_IRDA_RegisterCallback()
553 hirda->MspInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
557 hirda->MspDeInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
562 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
572 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
601 HAL_StatusTypeDef HAL_IRDA_UnRegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef… in HAL_IRDA_UnRegisterCallback() argument
605 if (HAL_IRDA_STATE_READY == hirda->gState) in HAL_IRDA_UnRegisterCallback()
610 …hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltC… in HAL_IRDA_UnRegisterCallback()
614 …hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in HAL_IRDA_UnRegisterCallback()
618 …hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in HAL_IRDA_UnRegisterCallback()
622 …hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in HAL_IRDA_UnRegisterCallback()
626 …hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in HAL_IRDA_UnRegisterCallback()
630 …hirda->AbortCpltCallback = HAL_IRDA_AbortCpltCallback; /* Legacy weak AbortCpltCal… in HAL_IRDA_UnRegisterCallback()
634 hirda->AbortTransmitCpltCallback = HAL_IRDA_AbortTransmitCpltCallback; /* Legacy weak in HAL_IRDA_UnRegisterCallback()
639 hirda->AbortReceiveCpltCallback = HAL_IRDA_AbortReceiveCpltCallback; /* Legacy weak in HAL_IRDA_UnRegisterCallback()
644 …hirda->MspInitCallback = HAL_IRDA_MspInit; /* Legacy weak MspInitCallb… in HAL_IRDA_UnRegisterCallback()
648 …hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; /* Legacy weak MspDeInitCal… in HAL_IRDA_UnRegisterCallback()
653 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
660 else if (HAL_IRDA_STATE_RESET == hirda->gState) in HAL_IRDA_UnRegisterCallback()
665 hirda->MspInitCallback = HAL_IRDA_MspInit; in HAL_IRDA_UnRegisterCallback()
669 hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; in HAL_IRDA_UnRegisterCallback()
674 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
684 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
795 HAL_StatusTypeDef HAL_IRDA_Transmit(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size,… in HAL_IRDA_Transmit() argument
802 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit()
810 __HAL_LOCK(hirda); in HAL_IRDA_Transmit()
812 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit()
813 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit()
818 hirda->TxXferSize = Size; in HAL_IRDA_Transmit()
819 hirda->TxXferCount = Size; in HAL_IRDA_Transmit()
822 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit()
833 while (hirda->TxXferCount > 0U) in HAL_IRDA_Transmit()
835 hirda->TxXferCount--; in HAL_IRDA_Transmit()
837 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
843 hirda->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU); in HAL_IRDA_Transmit()
848 hirda->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU); in HAL_IRDA_Transmit()
853 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
859 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit()
862 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit()
884 HAL_StatusTypeDef HAL_IRDA_Receive(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size, uint32… in HAL_IRDA_Receive() argument
892 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive()
900 __HAL_LOCK(hirda); in HAL_IRDA_Receive()
902 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive()
903 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive()
908 hirda->RxXferSize = Size; in HAL_IRDA_Receive()
909 hirda->RxXferCount = Size; in HAL_IRDA_Receive()
913 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive()
914 uhMask = hirda->Mask; in HAL_IRDA_Receive()
917 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive()
929 while (hirda->RxXferCount > 0U) in HAL_IRDA_Receive()
931 hirda->RxXferCount--; in HAL_IRDA_Receive()
933 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Receive()
939 *pdata16bits = (uint16_t)(hirda->Instance->RDR & uhMask); in HAL_IRDA_Receive()
944 *pdata8bits = (uint8_t)(hirda->Instance->RDR & (uint8_t)uhMask); in HAL_IRDA_Receive()
950 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive()
953 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive()
974 HAL_StatusTypeDef HAL_IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Si… in HAL_IRDA_Transmit_IT() argument
977 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit_IT()
985 __HAL_LOCK(hirda); in HAL_IRDA_Transmit_IT()
987 hirda->pTxBuffPtr = pData; in HAL_IRDA_Transmit_IT()
988 hirda->TxXferSize = Size; in HAL_IRDA_Transmit_IT()
989 hirda->TxXferCount = Size; in HAL_IRDA_Transmit_IT()
991 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit_IT()
992 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit_IT()
995 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_IT()
998 SET_BIT(hirda->Instance->CR1, USART_CR1_TXEIE); in HAL_IRDA_Transmit_IT()
1019 HAL_StatusTypeDef HAL_IRDA_Receive_IT(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_IT() argument
1022 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_IT()
1030 __HAL_LOCK(hirda); in HAL_IRDA_Receive_IT()
1032 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_IT()
1033 hirda->RxXferSize = Size; in HAL_IRDA_Receive_IT()
1034 hirda->RxXferCount = Size; in HAL_IRDA_Receive_IT()
1038 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive_IT()
1040 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_IT()
1041 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_IT()
1044 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_IT()
1046 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_IT()
1049 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE); in HAL_IRDA_Receive_IT()
1054 SET_BIT(hirda->Instance->CR1, USART_CR1_RXNEIE); in HAL_IRDA_Receive_IT()
1058 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_IT()
1079 HAL_StatusTypeDef HAL_IRDA_Transmit_DMA(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t S… in HAL_IRDA_Transmit_DMA() argument
1082 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit_DMA()
1090 __HAL_LOCK(hirda); in HAL_IRDA_Transmit_DMA()
1092 hirda->pTxBuffPtr = pData; in HAL_IRDA_Transmit_DMA()
1093 hirda->TxXferSize = Size; in HAL_IRDA_Transmit_DMA()
1094 hirda->TxXferCount = Size; in HAL_IRDA_Transmit_DMA()
1096 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit_DMA()
1097 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit_DMA()
1100 hirda->hdmatx->XferCpltCallback = IRDA_DMATransmitCplt; in HAL_IRDA_Transmit_DMA()
1103 hirda->hdmatx->XferHalfCpltCallback = IRDA_DMATransmitHalfCplt; in HAL_IRDA_Transmit_DMA()
1106 hirda->hdmatx->XferErrorCallback = IRDA_DMAError; in HAL_IRDA_Transmit_DMA()
1109 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Transmit_DMA()
1112 …if (HAL_DMA_Start_IT(hirda->hdmatx, (uint32_t)hirda->pTxBuffPtr, (uint32_t)&hirda->Instance->TDR, … in HAL_IRDA_Transmit_DMA()
1115 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_TCF); in HAL_IRDA_Transmit_DMA()
1118 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1122 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Transmit_DMA()
1129 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Transmit_DMA()
1132 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1135 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit_DMA()
1159 HAL_StatusTypeDef HAL_IRDA_Receive_DMA(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_DMA() argument
1162 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_DMA()
1170 __HAL_LOCK(hirda); in HAL_IRDA_Receive_DMA()
1172 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_DMA()
1173 hirda->RxXferSize = Size; in HAL_IRDA_Receive_DMA()
1175 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_DMA()
1176 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_DMA()
1179 hirda->hdmarx->XferCpltCallback = IRDA_DMAReceiveCplt; in HAL_IRDA_Receive_DMA()
1182 hirda->hdmarx->XferHalfCpltCallback = IRDA_DMAReceiveHalfCplt; in HAL_IRDA_Receive_DMA()
1185 hirda->hdmarx->XferErrorCallback = IRDA_DMAError; in HAL_IRDA_Receive_DMA()
1188 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Receive_DMA()
1191 …if (HAL_DMA_Start_IT(hirda->hdmarx, (uint32_t)&hirda->Instance->RDR, (uint32_t)hirda->pRxBuffPtr, … in HAL_IRDA_Receive_DMA()
1194 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1196 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_DMA()
1199 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_Receive_DMA()
1203 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_DMA()
1207 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Receive_DMA()
1214 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Receive_DMA()
1217 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1220 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive_DMA()
1238 HAL_StatusTypeDef HAL_IRDA_DMAPause(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAPause() argument
1241 __HAL_LOCK(hirda); in HAL_IRDA_DMAPause()
1243 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAPause()
1245 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAPause()
1248 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAPause()
1251 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAPause()
1253 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAPause()
1256 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAPause()
1257 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAPause()
1260 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAPause()
1265 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAPause()
1276 HAL_StatusTypeDef HAL_IRDA_DMAResume(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAResume() argument
1279 __HAL_LOCK(hirda); in HAL_IRDA_DMAResume()
1281 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAResume()
1284 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAResume()
1286 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAResume()
1289 __HAL_IRDA_CLEAR_OREFLAG(hirda); in HAL_IRDA_DMAResume()
1292 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_DMAResume()
1294 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAResume()
1296 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAResume()
1299 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAResume()
1303 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAResume()
1314 HAL_StatusTypeDef HAL_IRDA_DMAStop(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAStop() argument
1324 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAStop()
1326 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAStop()
1328 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAStop()
1331 if (hirda->hdmatx != NULL) in HAL_IRDA_DMAStop()
1333 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_DMAStop()
1335 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1338 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1345 IRDA_EndTxTransfer(hirda); in HAL_IRDA_DMAStop()
1350 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAStop()
1352 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAStop()
1354 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAStop()
1357 if (hirda->hdmarx != NULL) in HAL_IRDA_DMAStop()
1359 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_DMAStop()
1361 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1364 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1371 IRDA_EndRxTransfer(hirda); in HAL_IRDA_DMAStop()
1391 HAL_StatusTypeDef HAL_IRDA_Abort(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort() argument
1394 …CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_T… in HAL_IRDA_Abort()
1395 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort()
1398 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort()
1400 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort()
1403 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort()
1407 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1409 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort()
1411 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1414 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Abort()
1423 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort()
1425 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort()
1428 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort()
1432 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1434 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort()
1436 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1439 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Abort()
1448 hirda->TxXferCount = 0U; in HAL_IRDA_Abort()
1449 hirda->RxXferCount = 0U; in HAL_IRDA_Abort()
1452 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_Abort()
1455 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort()
1456 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort()
1459 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Abort()
1477 HAL_StatusTypeDef HAL_IRDA_AbortTransmit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmit() argument
1480 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit()
1483 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit()
1485 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit()
1488 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit()
1492 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_AbortTransmit()
1494 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit()
1496 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortTransmit()
1499 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortTransmit()
1508 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit()
1511 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit()
1529 HAL_StatusTypeDef HAL_IRDA_AbortReceive(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive() argument
1532 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive()
1533 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive()
1536 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive()
1538 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive()
1541 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive()
1545 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_AbortReceive()
1547 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive()
1549 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortReceive()
1552 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortReceive()
1561 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive()
1564 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive()
1567 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive()
1587 HAL_StatusTypeDef HAL_IRDA_Abort_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort_IT() argument
1592 …CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_T… in HAL_IRDA_Abort_IT()
1593 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort_IT()
1598 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1602 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1604 hirda->hdmatx->XferAbortCallback = IRDA_DMATxAbortCallback; in HAL_IRDA_Abort_IT()
1608 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1612 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1616 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1618 hirda->hdmarx->XferAbortCallback = IRDA_DMARxAbortCallback; in HAL_IRDA_Abort_IT()
1622 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1627 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1630 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort_IT()
1633 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1639 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort_IT()
1641 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1651 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1653 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort_IT()
1656 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1662 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort_IT()
1664 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1678 hirda->TxXferCount = 0U; in HAL_IRDA_Abort_IT()
1679 hirda->RxXferCount = 0U; in HAL_IRDA_Abort_IT()
1682 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Abort_IT()
1685 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_Abort_IT()
1688 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1689 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1694 hirda->AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1697 HAL_IRDA_AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1719 HAL_StatusTypeDef HAL_IRDA_AbortTransmit_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmit_IT() argument
1722 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit_IT()
1725 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit_IT()
1727 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit_IT()
1730 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit_IT()
1734 hirda->hdmatx->XferAbortCallback = IRDA_DMATxOnlyAbortCallback; in HAL_IRDA_AbortTransmit_IT()
1737 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit_IT()
1740 hirda->hdmatx->XferAbortCallback(hirda->hdmatx); in HAL_IRDA_AbortTransmit_IT()
1746 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit_IT()
1749 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit_IT()
1754 hirda->AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1757 HAL_IRDA_AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1764 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit_IT()
1767 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit_IT()
1772 hirda->AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1775 HAL_IRDA_AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1797 HAL_StatusTypeDef HAL_IRDA_AbortReceive_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive_IT() argument
1800 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive_IT()
1801 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive_IT()
1804 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive_IT()
1806 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive_IT()
1809 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive_IT()
1813 hirda->hdmarx->XferAbortCallback = IRDA_DMARxOnlyAbortCallback; in HAL_IRDA_AbortReceive_IT()
1816 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive_IT()
1819 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_AbortReceive_IT()
1825 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive_IT()
1828 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive_IT()
1831 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive_IT()
1836 hirda->AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1839 HAL_IRDA_AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1846 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive_IT()
1849 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive_IT()
1852 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive_IT()
1857 hirda->AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1860 HAL_IRDA_AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1873 void HAL_IRDA_IRQHandler(IRDA_HandleTypeDef *hirda) in HAL_IRDA_IRQHandler() argument
1875 uint32_t isrflags = READ_REG(hirda->Instance->ISR); in HAL_IRDA_IRQHandler()
1876 uint32_t cr1its = READ_REG(hirda->Instance->CR1); in HAL_IRDA_IRQHandler()
1888 IRDA_Receive_IT(hirda); in HAL_IRDA_IRQHandler()
1894 cr3its = READ_REG(hirda->Instance->CR3); in HAL_IRDA_IRQHandler()
1902 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_PEF); in HAL_IRDA_IRQHandler()
1904 hirda->ErrorCode |= HAL_IRDA_ERROR_PE; in HAL_IRDA_IRQHandler()
1910 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_FEF); in HAL_IRDA_IRQHandler()
1912 hirda->ErrorCode |= HAL_IRDA_ERROR_FE; in HAL_IRDA_IRQHandler()
1918 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_NEF); in HAL_IRDA_IRQHandler()
1920 hirda->ErrorCode |= HAL_IRDA_ERROR_NE; in HAL_IRDA_IRQHandler()
1927 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_OREF); in HAL_IRDA_IRQHandler()
1929 hirda->ErrorCode |= HAL_IRDA_ERROR_ORE; in HAL_IRDA_IRQHandler()
1933 if (hirda->ErrorCode != HAL_IRDA_ERROR_NONE) in HAL_IRDA_IRQHandler()
1938 IRDA_Receive_IT(hirda); in HAL_IRDA_IRQHandler()
1943 errorcode = hirda->ErrorCode; in HAL_IRDA_IRQHandler()
1944 if ((HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) || in HAL_IRDA_IRQHandler()
1950 IRDA_EndRxTransfer(hirda); in HAL_IRDA_IRQHandler()
1953 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_IRQHandler()
1955 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_IRQHandler()
1958 if (hirda->hdmarx != NULL) in HAL_IRDA_IRQHandler()
1962 hirda->hdmarx->XferAbortCallback = IRDA_DMAAbortOnError; in HAL_IRDA_IRQHandler()
1965 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_IRQHandler()
1968 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_IRQHandler()
1975 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
1978 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
1986 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
1989 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
1999 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2002 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2004 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_IRQHandler()
2014 IRDA_Transmit_IT(hirda); in HAL_IRDA_IRQHandler()
2021 IRDA_EndTransmit_IT(hirda); in HAL_IRDA_IRQHandler()
2033 __weak void HAL_IRDA_TxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxCpltCallback() argument
2036 UNUSED(hirda); in HAL_IRDA_TxCpltCallback()
2049 __weak void HAL_IRDA_TxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxHalfCpltCallback() argument
2052 UNUSED(hirda); in HAL_IRDA_TxHalfCpltCallback()
2065 __weak void HAL_IRDA_RxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxCpltCallback() argument
2068 UNUSED(hirda); in HAL_IRDA_RxCpltCallback()
2081 __weak void HAL_IRDA_RxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxHalfCpltCallback() argument
2084 UNUSED(hirda); in HAL_IRDA_RxHalfCpltCallback()
2097 __weak void HAL_IRDA_ErrorCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_ErrorCallback() argument
2100 UNUSED(hirda); in HAL_IRDA_ErrorCallback()
2113 __weak void HAL_IRDA_AbortCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortCpltCallback() argument
2116 UNUSED(hirda); in HAL_IRDA_AbortCpltCallback()
2129 __weak void HAL_IRDA_AbortTransmitCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmitCpltCallback() argument
2132 UNUSED(hirda); in HAL_IRDA_AbortTransmitCpltCallback()
2145 __weak void HAL_IRDA_AbortReceiveCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceiveCpltCallback() argument
2148 UNUSED(hirda); in HAL_IRDA_AbortReceiveCpltCallback()
2184 HAL_IRDA_StateTypeDef HAL_IRDA_GetState(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetState() argument
2189 temp1 = (uint32_t)hirda->gState; in HAL_IRDA_GetState()
2190 temp2 = (uint32_t)hirda->RxState; in HAL_IRDA_GetState()
2201 uint32_t HAL_IRDA_GetError(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetError() argument
2203 return hirda->ErrorCode; in HAL_IRDA_GetError()
2224 void IRDA_InitCallbacksToDefault(IRDA_HandleTypeDef *hirda) in IRDA_InitCallbacksToDefault() argument
2227 …hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2228 …hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in IRDA_InitCallbacksToDefault()
2229 …hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2230 …hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in IRDA_InitCallbacksToDefault()
2231 …hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in IRDA_InitCallbacksToDefault()
2232 …hirda->AbortCpltCallback = HAL_IRDA_AbortCpltCallback; /* Legacy weak AbortCpltCal… in IRDA_InitCallbacksToDefault()
2233 …hirda->AbortTransmitCpltCallback = HAL_IRDA_AbortTransmitCpltCallback; /* Legacy weak AbortTransmi… in IRDA_InitCallbacksToDefault()
2234 …hirda->AbortReceiveCpltCallback = HAL_IRDA_AbortReceiveCpltCallback; /* Legacy weak AbortReceive… in IRDA_InitCallbacksToDefault()
2245 static HAL_StatusTypeDef IRDA_SetConfig(IRDA_HandleTypeDef *hirda) in IRDA_SetConfig() argument
2253 assert_param(IS_IRDA_BAUDRATE(hirda->Init.BaudRate)); in IRDA_SetConfig()
2254 assert_param(IS_IRDA_WORD_LENGTH(hirda->Init.WordLength)); in IRDA_SetConfig()
2255 assert_param(IS_IRDA_PARITY(hirda->Init.Parity)); in IRDA_SetConfig()
2256 assert_param(IS_IRDA_TX_RX_MODE(hirda->Init.Mode)); in IRDA_SetConfig()
2257 assert_param(IS_IRDA_PRESCALER(hirda->Init.Prescaler)); in IRDA_SetConfig()
2258 assert_param(IS_IRDA_POWERMODE(hirda->Init.PowerMode)); in IRDA_SetConfig()
2265 tmpreg = (uint32_t)hirda->Init.WordLength | hirda->Init.Parity | hirda->Init.Mode ; in IRDA_SetConfig()
2267 MODIFY_REG(hirda->Instance->CR1, IRDA_CR1_FIELDS, tmpreg); in IRDA_SetConfig()
2270 MODIFY_REG(hirda->Instance->CR3, USART_CR3_IRLP, hirda->Init.PowerMode); in IRDA_SetConfig()
2274 MODIFY_REG(hirda->Instance->GTPR, (uint16_t)USART_GTPR_PSC, (uint16_t)hirda->Init.Prescaler); in IRDA_SetConfig()
2277 IRDA_GETCLOCKSOURCE(hirda, clocksource); in IRDA_SetConfig()
2283 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate)); in IRDA_SetConfig()
2287 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate)); in IRDA_SetConfig()
2290 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(HSI_VALUE, hirda->Init.BaudRate)); in IRDA_SetConfig()
2294 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate)); in IRDA_SetConfig()
2297 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16((uint32_t)LSE_VALUE, hirda->Init.BaudRate)); in IRDA_SetConfig()
2307 hirda->Instance->BRR = (uint16_t)tmpreg; in IRDA_SetConfig()
2323 static HAL_StatusTypeDef IRDA_CheckIdleState(IRDA_HandleTypeDef *hirda) in IRDA_CheckIdleState() argument
2328 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_CheckIdleState()
2334 if ((hirda->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) in IRDA_CheckIdleState()
2337 …if (IRDA_WaitOnFlagUntilTimeout(hirda, USART_ISR_TEACK, RESET, tickstart, IRDA_TEACK_REACK_TIMEOUT… in IRDA_CheckIdleState()
2345 if ((hirda->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) in IRDA_CheckIdleState()
2348 …if (IRDA_WaitOnFlagUntilTimeout(hirda, USART_ISR_REACK, RESET, tickstart, IRDA_TEACK_REACK_TIMEOUT… in IRDA_CheckIdleState()
2357 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_CheckIdleState()
2358 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_CheckIdleState()
2361 __HAL_UNLOCK(hirda); in IRDA_CheckIdleState()
2377 static HAL_StatusTypeDef IRDA_WaitOnFlagUntilTimeout(IRDA_HandleTypeDef *hirda, uint32_t Flag, Flag… in IRDA_WaitOnFlagUntilTimeout() argument
2381 while ((__HAL_IRDA_GET_FLAG(hirda, Flag) ? SET : RESET) == Status) in IRDA_WaitOnFlagUntilTimeout()
2390 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE)); in IRDA_WaitOnFlagUntilTimeout()
2391 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_WaitOnFlagUntilTimeout()
2393 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_WaitOnFlagUntilTimeout()
2394 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_WaitOnFlagUntilTimeout()
2397 __HAL_UNLOCK(hirda); in IRDA_WaitOnFlagUntilTimeout()
2412 static void IRDA_EndTxTransfer(IRDA_HandleTypeDef *hirda) in IRDA_EndTxTransfer() argument
2415 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in IRDA_EndTxTransfer()
2418 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_EndTxTransfer()
2427 static void IRDA_EndRxTransfer(IRDA_HandleTypeDef *hirda) in IRDA_EndRxTransfer() argument
2430 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in IRDA_EndRxTransfer()
2431 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_EndRxTransfer()
2434 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_EndRxTransfer()
2446 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitCplt() local
2451 hirda->TxXferCount = 0U; in IRDA_DMATransmitCplt()
2455 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in IRDA_DMATransmitCplt()
2458 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_DMATransmitCplt()
2465 hirda->TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2468 HAL_IRDA_TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2482 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitHalfCplt() local
2486 hirda->TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2489 HAL_IRDA_TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2501 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveCplt() local
2506 hirda->RxXferCount = 0U; in IRDA_DMAReceiveCplt()
2509 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in IRDA_DMAReceiveCplt()
2510 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_DMAReceiveCplt()
2514 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in IRDA_DMAReceiveCplt()
2517 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMAReceiveCplt()
2522 hirda->RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2525 HAL_IRDA_RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2537 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveHalfCplt() local
2541 hirda->RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2544 HAL_IRDA_RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2556 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAError() local
2559 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_DMAError()
2561 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in IRDA_DMAError()
2563 hirda->TxXferCount = 0U; in IRDA_DMAError()
2564 IRDA_EndTxTransfer(hirda); in IRDA_DMAError()
2569 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_DMAError()
2571 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in IRDA_DMAError()
2573 hirda->RxXferCount = 0U; in IRDA_DMAError()
2574 IRDA_EndRxTransfer(hirda); in IRDA_DMAError()
2578 hirda->ErrorCode |= HAL_IRDA_ERROR_DMA; in IRDA_DMAError()
2581 hirda->ErrorCallback(hirda); in IRDA_DMAError()
2584 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAError()
2596 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAAbortOnError() local
2597 hirda->RxXferCount = 0U; in IRDA_DMAAbortOnError()
2598 hirda->TxXferCount = 0U; in IRDA_DMAAbortOnError()
2602 hirda->ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2605 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2619 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxAbortCallback() local
2621 hirda->hdmatx->XferAbortCallback = NULL; in IRDA_DMATxAbortCallback()
2624 if (hirda->hdmarx != NULL) in IRDA_DMATxAbortCallback()
2626 if (hirda->hdmarx->XferAbortCallback != NULL) in IRDA_DMATxAbortCallback()
2633 hirda->TxXferCount = 0U; in IRDA_DMATxAbortCallback()
2634 hirda->RxXferCount = 0U; in IRDA_DMATxAbortCallback()
2637 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMATxAbortCallback()
2640 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMATxAbortCallback()
2643 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2644 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2649 hirda->AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2652 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2667 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMARxAbortCallback() local
2669 hirda->hdmarx->XferAbortCallback = NULL; in IRDA_DMARxAbortCallback()
2672 if (hirda->hdmatx != NULL) in IRDA_DMARxAbortCallback()
2674 if (hirda->hdmatx->XferAbortCallback != NULL) in IRDA_DMARxAbortCallback()
2681 hirda->TxXferCount = 0U; in IRDA_DMARxAbortCallback()
2682 hirda->RxXferCount = 0U; in IRDA_DMARxAbortCallback()
2685 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMARxAbortCallback()
2688 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxAbortCallback()
2691 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2692 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2697 hirda->AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2700 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2715 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxOnlyAbortCallback() local
2717 hirda->TxXferCount = 0U; in IRDA_DMATxOnlyAbortCallback()
2720 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxOnlyAbortCallback()
2725 hirda->AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2728 HAL_IRDA_AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2742 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in IRDA_DMARxOnlyAbortCallback() local
2744 hirda->RxXferCount = 0U; in IRDA_DMARxOnlyAbortCallback()
2747 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxOnlyAbortCallback()
2750 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxOnlyAbortCallback()
2755 hirda->AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2758 HAL_IRDA_AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2770 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_Transmit_IT() argument
2775 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_Transmit_IT()
2777 if (hirda->TxXferCount == 0U) in IRDA_Transmit_IT()
2780 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TXEIE); in IRDA_Transmit_IT()
2783 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_Transmit_IT()
2787 … if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Transmit_IT()
2789 tmp = (const uint16_t *) hirda->pTxBuffPtr; /* Derogation R.11.3 */ in IRDA_Transmit_IT()
2790 hirda->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in IRDA_Transmit_IT()
2791 hirda->pTxBuffPtr += 2U; in IRDA_Transmit_IT()
2795 hirda->Instance->TDR = (uint8_t)(*hirda->pTxBuffPtr & 0xFFU); in IRDA_Transmit_IT()
2796 hirda->pTxBuffPtr++; in IRDA_Transmit_IT()
2798 hirda->TxXferCount--; in IRDA_Transmit_IT()
2809 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_EndTransmit_IT() argument
2812 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_EndTransmit_IT()
2815 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_EndTransmit_IT()
2819 hirda->TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2822 HAL_IRDA_TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2834 static void IRDA_Receive_IT(IRDA_HandleTypeDef *hirda) in IRDA_Receive_IT() argument
2837 uint16_t uhMask = hirda->Mask; in IRDA_Receive_IT()
2841 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_Receive_IT()
2843 uhdata = (uint16_t) READ_REG(hirda->Instance->RDR); in IRDA_Receive_IT()
2844 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Receive_IT()
2846 tmp = (uint16_t *) hirda->pRxBuffPtr; /* Derogation R.11.3 */ in IRDA_Receive_IT()
2848 hirda->pRxBuffPtr += 2U; in IRDA_Receive_IT()
2852 *hirda->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask); in IRDA_Receive_IT()
2853 hirda->pRxBuffPtr++; in IRDA_Receive_IT()
2856 hirda->RxXferCount--; in IRDA_Receive_IT()
2857 if (hirda->RxXferCount == 0U) in IRDA_Receive_IT()
2860 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in IRDA_Receive_IT()
2863 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_Receive_IT()
2866 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_Receive_IT()
2870 hirda->RxCpltCallback(hirda); in IRDA_Receive_IT()
2873 HAL_IRDA_RxCpltCallback(hirda); in IRDA_Receive_IT()
2880 __HAL_IRDA_SEND_REQ(hirda, IRDA_RXDATA_FLUSH_REQUEST); in IRDA_Receive_IT()