Lines Matching refs:hirda
240 void IRDA_InitCallbacksToDefault(IRDA_HandleTypeDef *hirda);
242 static HAL_StatusTypeDef IRDA_SetConfig(IRDA_HandleTypeDef *hirda);
243 static HAL_StatusTypeDef IRDA_CheckIdleState(IRDA_HandleTypeDef *hirda);
244 static HAL_StatusTypeDef IRDA_WaitOnFlagUntilTimeout(IRDA_HandleTypeDef *hirda, uint32_t Flag, Flag…
246 static void IRDA_EndTxTransfer(IRDA_HandleTypeDef *hirda);
247 static void IRDA_EndRxTransfer(IRDA_HandleTypeDef *hirda);
258 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda);
259 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda);
260 static void IRDA_Receive_IT(IRDA_HandleTypeDef *hirda);
337 HAL_StatusTypeDef HAL_IRDA_Init(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Init() argument
340 if (hirda == NULL) in HAL_IRDA_Init()
346 assert_param(IS_IRDA_INSTANCE(hirda->Instance)); in HAL_IRDA_Init()
348 if (hirda->gState == HAL_IRDA_STATE_RESET) in HAL_IRDA_Init()
351 hirda->Lock = HAL_UNLOCKED; in HAL_IRDA_Init()
354 IRDA_InitCallbacksToDefault(hirda); in HAL_IRDA_Init()
356 if (hirda->MspInitCallback == NULL) in HAL_IRDA_Init()
358 hirda->MspInitCallback = HAL_IRDA_MspInit; in HAL_IRDA_Init()
362 hirda->MspInitCallback(hirda); in HAL_IRDA_Init()
365 HAL_IRDA_MspInit(hirda); in HAL_IRDA_Init()
369 hirda->gState = HAL_IRDA_STATE_BUSY; in HAL_IRDA_Init()
372 __HAL_IRDA_DISABLE(hirda); in HAL_IRDA_Init()
375 if (IRDA_SetConfig(hirda) == HAL_ERROR) in HAL_IRDA_Init()
383 CLEAR_BIT(hirda->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN | USART_CR2_STOP)); in HAL_IRDA_Init()
384 CLEAR_BIT(hirda->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL)); in HAL_IRDA_Init()
387 hirda->Instance->CR3 |= USART_CR3_IREN; in HAL_IRDA_Init()
390 __HAL_IRDA_ENABLE(hirda); in HAL_IRDA_Init()
393 return (IRDA_CheckIdleState(hirda)); in HAL_IRDA_Init()
402 HAL_StatusTypeDef HAL_IRDA_DeInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DeInit() argument
405 if (hirda == NULL) in HAL_IRDA_DeInit()
411 assert_param(IS_IRDA_INSTANCE(hirda->Instance)); in HAL_IRDA_DeInit()
413 hirda->gState = HAL_IRDA_STATE_BUSY; in HAL_IRDA_DeInit()
417 if (hirda->MspDeInitCallback == NULL) in HAL_IRDA_DeInit()
419 hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; in HAL_IRDA_DeInit()
422 hirda->MspDeInitCallback(hirda); in HAL_IRDA_DeInit()
424 HAL_IRDA_MspDeInit(hirda); in HAL_IRDA_DeInit()
427 __HAL_IRDA_DISABLE(hirda); in HAL_IRDA_DeInit()
429 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_DeInit()
430 hirda->gState = HAL_IRDA_STATE_RESET; in HAL_IRDA_DeInit()
431 hirda->RxState = HAL_IRDA_STATE_RESET; in HAL_IRDA_DeInit()
434 __HAL_UNLOCK(hirda); in HAL_IRDA_DeInit()
445 __weak void HAL_IRDA_MspInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_MspInit() argument
448 UNUSED(hirda); in HAL_IRDA_MspInit()
461 __weak void HAL_IRDA_MspDeInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_MspDeInit() argument
464 UNUSED(hirda); in HAL_IRDA_MspDeInit()
493 HAL_StatusTypeDef HAL_IRDA_RegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef C… in HAL_IRDA_RegisterCallback() argument
501 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
506 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_RegisterCallback()
511 hirda->TxHalfCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
515 hirda->TxCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
519 hirda->RxHalfCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
523 hirda->RxCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
527 hirda->ErrorCallback = pCallback; in HAL_IRDA_RegisterCallback()
531 hirda->AbortCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
535 hirda->AbortTransmitCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
539 hirda->AbortReceiveCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
543 hirda->MspInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
547 hirda->MspDeInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
552 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
559 else if (hirda->gState == HAL_IRDA_STATE_RESET) in HAL_IRDA_RegisterCallback()
564 hirda->MspInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
568 hirda->MspDeInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
573 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
583 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
612 HAL_StatusTypeDef HAL_IRDA_UnRegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef… in HAL_IRDA_UnRegisterCallback() argument
616 if (HAL_IRDA_STATE_READY == hirda->gState) in HAL_IRDA_UnRegisterCallback()
621 …hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltC… in HAL_IRDA_UnRegisterCallback()
625 …hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in HAL_IRDA_UnRegisterCallback()
629 …hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in HAL_IRDA_UnRegisterCallback()
633 …hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in HAL_IRDA_UnRegisterCallback()
637 …hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in HAL_IRDA_UnRegisterCallback()
641 …hirda->AbortCpltCallback = HAL_IRDA_AbortCpltCallback; /* Legacy weak AbortCpltCal… in HAL_IRDA_UnRegisterCallback()
645 hirda->AbortTransmitCpltCallback = HAL_IRDA_AbortTransmitCpltCallback; /* Legacy weak in HAL_IRDA_UnRegisterCallback()
650 hirda->AbortReceiveCpltCallback = HAL_IRDA_AbortReceiveCpltCallback; /* Legacy weak in HAL_IRDA_UnRegisterCallback()
655 …hirda->MspInitCallback = HAL_IRDA_MspInit; /* Legacy weak MspInitCallb… in HAL_IRDA_UnRegisterCallback()
659 …hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; /* Legacy weak MspDeInitCal… in HAL_IRDA_UnRegisterCallback()
664 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
671 else if (HAL_IRDA_STATE_RESET == hirda->gState) in HAL_IRDA_UnRegisterCallback()
676 hirda->MspInitCallback = HAL_IRDA_MspInit; in HAL_IRDA_UnRegisterCallback()
680 hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; in HAL_IRDA_UnRegisterCallback()
685 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
695 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
813 HAL_StatusTypeDef HAL_IRDA_Transmit(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size,… in HAL_IRDA_Transmit() argument
820 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit()
830 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit()
839 __HAL_LOCK(hirda); in HAL_IRDA_Transmit()
841 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit()
842 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit()
847 hirda->TxXferSize = Size; in HAL_IRDA_Transmit()
848 hirda->TxXferCount = Size; in HAL_IRDA_Transmit()
851 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit()
862 while (hirda->TxXferCount > 0U) in HAL_IRDA_Transmit()
864 hirda->TxXferCount--; in HAL_IRDA_Transmit()
866 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
872 hirda->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU); in HAL_IRDA_Transmit()
877 hirda->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU); in HAL_IRDA_Transmit()
882 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
888 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit()
891 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit()
920 HAL_StatusTypeDef HAL_IRDA_Receive(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size, uint32… in HAL_IRDA_Receive() argument
928 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive()
938 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive()
947 __HAL_LOCK(hirda); in HAL_IRDA_Receive()
949 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive()
950 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive()
955 hirda->RxXferSize = Size; in HAL_IRDA_Receive()
956 hirda->RxXferCount = Size; in HAL_IRDA_Receive()
960 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive()
961 uhMask = hirda->Mask; in HAL_IRDA_Receive()
964 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive()
976 while (hirda->RxXferCount > 0U) in HAL_IRDA_Receive()
978 hirda->RxXferCount--; in HAL_IRDA_Receive()
980 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Receive()
986 *pdata16bits = (uint16_t)(hirda->Instance->RDR & uhMask); in HAL_IRDA_Receive()
991 *pdata8bits = (uint8_t)(hirda->Instance->RDR & (uint8_t)uhMask); in HAL_IRDA_Receive()
997 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive()
1000 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive()
1028 HAL_StatusTypeDef HAL_IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Si… in HAL_IRDA_Transmit_IT() argument
1031 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit_IT()
1041 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit_IT()
1050 __HAL_LOCK(hirda); in HAL_IRDA_Transmit_IT()
1052 hirda->pTxBuffPtr = pData; in HAL_IRDA_Transmit_IT()
1053 hirda->TxXferSize = Size; in HAL_IRDA_Transmit_IT()
1054 hirda->TxXferCount = Size; in HAL_IRDA_Transmit_IT()
1056 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit_IT()
1057 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit_IT()
1060 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_IT()
1063 SET_BIT(hirda->Instance->CR1, USART_CR1_TXEIE); in HAL_IRDA_Transmit_IT()
1091 HAL_StatusTypeDef HAL_IRDA_Receive_IT(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_IT() argument
1094 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_IT()
1104 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive_IT()
1113 __HAL_LOCK(hirda); in HAL_IRDA_Receive_IT()
1115 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_IT()
1116 hirda->RxXferSize = Size; in HAL_IRDA_Receive_IT()
1117 hirda->RxXferCount = Size; in HAL_IRDA_Receive_IT()
1121 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive_IT()
1123 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_IT()
1124 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_IT()
1127 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_IT()
1129 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_IT()
1132 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE); in HAL_IRDA_Receive_IT()
1137 SET_BIT(hirda->Instance->CR1, USART_CR1_RXNEIE); in HAL_IRDA_Receive_IT()
1141 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_IT()
1169 HAL_StatusTypeDef HAL_IRDA_Transmit_DMA(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t S… in HAL_IRDA_Transmit_DMA() argument
1172 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit_DMA()
1182 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit_DMA()
1191 __HAL_LOCK(hirda); in HAL_IRDA_Transmit_DMA()
1193 hirda->pTxBuffPtr = pData; in HAL_IRDA_Transmit_DMA()
1194 hirda->TxXferSize = Size; in HAL_IRDA_Transmit_DMA()
1195 hirda->TxXferCount = Size; in HAL_IRDA_Transmit_DMA()
1197 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit_DMA()
1198 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit_DMA()
1201 hirda->hdmatx->XferCpltCallback = IRDA_DMATransmitCplt; in HAL_IRDA_Transmit_DMA()
1204 hirda->hdmatx->XferHalfCpltCallback = IRDA_DMATransmitHalfCplt; in HAL_IRDA_Transmit_DMA()
1207 hirda->hdmatx->XferErrorCallback = IRDA_DMAError; in HAL_IRDA_Transmit_DMA()
1210 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Transmit_DMA()
1213 …if (HAL_DMA_Start_IT(hirda->hdmatx, (uint32_t)hirda->pTxBuffPtr, (uint32_t)&hirda->Instance->TDR, … in HAL_IRDA_Transmit_DMA()
1216 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_TCF); in HAL_IRDA_Transmit_DMA()
1219 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1223 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Transmit_DMA()
1230 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Transmit_DMA()
1233 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1236 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit_DMA()
1267 HAL_StatusTypeDef HAL_IRDA_Receive_DMA(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_DMA() argument
1270 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_DMA()
1280 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive_DMA()
1289 __HAL_LOCK(hirda); in HAL_IRDA_Receive_DMA()
1291 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_DMA()
1292 hirda->RxXferSize = Size; in HAL_IRDA_Receive_DMA()
1294 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_DMA()
1295 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_DMA()
1298 hirda->hdmarx->XferCpltCallback = IRDA_DMAReceiveCplt; in HAL_IRDA_Receive_DMA()
1301 hirda->hdmarx->XferHalfCpltCallback = IRDA_DMAReceiveHalfCplt; in HAL_IRDA_Receive_DMA()
1304 hirda->hdmarx->XferErrorCallback = IRDA_DMAError; in HAL_IRDA_Receive_DMA()
1307 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Receive_DMA()
1310 …if (HAL_DMA_Start_IT(hirda->hdmarx, (uint32_t)&hirda->Instance->RDR, (uint32_t)hirda->pRxBuffPtr, … in HAL_IRDA_Receive_DMA()
1313 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1315 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_DMA()
1318 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_Receive_DMA()
1322 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_DMA()
1326 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Receive_DMA()
1333 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Receive_DMA()
1336 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1339 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive_DMA()
1357 HAL_StatusTypeDef HAL_IRDA_DMAPause(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAPause() argument
1360 __HAL_LOCK(hirda); in HAL_IRDA_DMAPause()
1362 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAPause()
1364 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAPause()
1367 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAPause()
1370 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAPause()
1372 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAPause()
1375 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAPause()
1376 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAPause()
1379 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAPause()
1384 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAPause()
1395 HAL_StatusTypeDef HAL_IRDA_DMAResume(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAResume() argument
1398 __HAL_LOCK(hirda); in HAL_IRDA_DMAResume()
1400 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAResume()
1403 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAResume()
1405 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAResume()
1408 __HAL_IRDA_CLEAR_OREFLAG(hirda); in HAL_IRDA_DMAResume()
1411 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_DMAResume()
1413 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAResume()
1415 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAResume()
1418 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAResume()
1422 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAResume()
1433 HAL_StatusTypeDef HAL_IRDA_DMAStop(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAStop() argument
1443 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAStop()
1445 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAStop()
1447 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAStop()
1450 if (hirda->hdmatx != NULL) in HAL_IRDA_DMAStop()
1452 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_DMAStop()
1454 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1457 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1464 IRDA_EndTxTransfer(hirda); in HAL_IRDA_DMAStop()
1469 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAStop()
1471 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAStop()
1473 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAStop()
1476 if (hirda->hdmarx != NULL) in HAL_IRDA_DMAStop()
1478 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_DMAStop()
1480 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1483 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1490 IRDA_EndRxTransfer(hirda); in HAL_IRDA_DMAStop()
1510 HAL_StatusTypeDef HAL_IRDA_Abort(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort() argument
1513 …CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_T… in HAL_IRDA_Abort()
1514 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort()
1517 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort()
1519 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort()
1522 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort()
1526 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1528 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort()
1530 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1533 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Abort()
1542 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort()
1544 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort()
1547 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort()
1551 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1553 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort()
1555 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1558 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Abort()
1567 hirda->TxXferCount = 0U; in HAL_IRDA_Abort()
1568 hirda->RxXferCount = 0U; in HAL_IRDA_Abort()
1571 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_Abort()
1574 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort()
1575 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort()
1578 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Abort()
1596 HAL_StatusTypeDef HAL_IRDA_AbortTransmit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmit() argument
1599 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit()
1602 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit()
1604 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit()
1607 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit()
1611 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_AbortTransmit()
1613 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit()
1615 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortTransmit()
1618 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortTransmit()
1627 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit()
1630 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit()
1648 HAL_StatusTypeDef HAL_IRDA_AbortReceive(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive() argument
1651 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive()
1652 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive()
1655 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive()
1657 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive()
1660 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive()
1664 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_AbortReceive()
1666 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive()
1668 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortReceive()
1671 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortReceive()
1680 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive()
1683 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive()
1686 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive()
1706 HAL_StatusTypeDef HAL_IRDA_Abort_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort_IT() argument
1711 …CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_T… in HAL_IRDA_Abort_IT()
1712 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort_IT()
1717 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1721 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1723 hirda->hdmatx->XferAbortCallback = IRDA_DMATxAbortCallback; in HAL_IRDA_Abort_IT()
1727 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1731 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1735 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1737 hirda->hdmarx->XferAbortCallback = IRDA_DMARxAbortCallback; in HAL_IRDA_Abort_IT()
1741 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1746 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1749 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort_IT()
1752 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1758 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort_IT()
1760 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1770 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1772 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort_IT()
1775 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1781 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort_IT()
1783 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1797 hirda->TxXferCount = 0U; in HAL_IRDA_Abort_IT()
1798 hirda->RxXferCount = 0U; in HAL_IRDA_Abort_IT()
1801 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Abort_IT()
1804 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_Abort_IT()
1807 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1808 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1813 hirda->AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1816 HAL_IRDA_AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1838 HAL_StatusTypeDef HAL_IRDA_AbortTransmit_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmit_IT() argument
1841 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit_IT()
1844 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit_IT()
1846 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit_IT()
1849 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit_IT()
1853 hirda->hdmatx->XferAbortCallback = IRDA_DMATxOnlyAbortCallback; in HAL_IRDA_AbortTransmit_IT()
1856 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit_IT()
1859 hirda->hdmatx->XferAbortCallback(hirda->hdmatx); in HAL_IRDA_AbortTransmit_IT()
1865 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit_IT()
1868 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit_IT()
1873 hirda->AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1876 HAL_IRDA_AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1883 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit_IT()
1886 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit_IT()
1891 hirda->AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1894 HAL_IRDA_AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1916 HAL_StatusTypeDef HAL_IRDA_AbortReceive_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive_IT() argument
1919 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive_IT()
1920 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive_IT()
1923 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive_IT()
1925 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive_IT()
1928 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive_IT()
1932 hirda->hdmarx->XferAbortCallback = IRDA_DMARxOnlyAbortCallback; in HAL_IRDA_AbortReceive_IT()
1935 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive_IT()
1938 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_AbortReceive_IT()
1944 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive_IT()
1947 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive_IT()
1950 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive_IT()
1955 hirda->AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1958 HAL_IRDA_AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1965 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive_IT()
1968 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive_IT()
1971 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive_IT()
1976 hirda->AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1979 HAL_IRDA_AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1992 void HAL_IRDA_IRQHandler(IRDA_HandleTypeDef *hirda) in HAL_IRDA_IRQHandler() argument
1994 uint32_t isrflags = READ_REG(hirda->Instance->ISR); in HAL_IRDA_IRQHandler()
1995 uint32_t cr1its = READ_REG(hirda->Instance->CR1); in HAL_IRDA_IRQHandler()
2007 IRDA_Receive_IT(hirda); in HAL_IRDA_IRQHandler()
2013 cr3its = READ_REG(hirda->Instance->CR3); in HAL_IRDA_IRQHandler()
2021 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_PEF); in HAL_IRDA_IRQHandler()
2023 hirda->ErrorCode |= HAL_IRDA_ERROR_PE; in HAL_IRDA_IRQHandler()
2029 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_FEF); in HAL_IRDA_IRQHandler()
2031 hirda->ErrorCode |= HAL_IRDA_ERROR_FE; in HAL_IRDA_IRQHandler()
2037 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_NEF); in HAL_IRDA_IRQHandler()
2039 hirda->ErrorCode |= HAL_IRDA_ERROR_NE; in HAL_IRDA_IRQHandler()
2046 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_OREF); in HAL_IRDA_IRQHandler()
2048 hirda->ErrorCode |= HAL_IRDA_ERROR_ORE; in HAL_IRDA_IRQHandler()
2052 if (hirda->ErrorCode != HAL_IRDA_ERROR_NONE) in HAL_IRDA_IRQHandler()
2057 IRDA_Receive_IT(hirda); in HAL_IRDA_IRQHandler()
2062 errorcode = hirda->ErrorCode; in HAL_IRDA_IRQHandler()
2063 if ((HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) || in HAL_IRDA_IRQHandler()
2069 IRDA_EndRxTransfer(hirda); in HAL_IRDA_IRQHandler()
2072 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_IRQHandler()
2074 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_IRQHandler()
2077 if (hirda->hdmarx != NULL) in HAL_IRDA_IRQHandler()
2081 hirda->hdmarx->XferAbortCallback = IRDA_DMAAbortOnError; in HAL_IRDA_IRQHandler()
2084 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_IRQHandler()
2087 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_IRQHandler()
2094 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2097 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2105 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2108 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2118 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2121 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2123 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_IRQHandler()
2133 IRDA_Transmit_IT(hirda); in HAL_IRDA_IRQHandler()
2140 IRDA_EndTransmit_IT(hirda); in HAL_IRDA_IRQHandler()
2152 __weak void HAL_IRDA_TxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxCpltCallback() argument
2155 UNUSED(hirda); in HAL_IRDA_TxCpltCallback()
2168 __weak void HAL_IRDA_TxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxHalfCpltCallback() argument
2171 UNUSED(hirda); in HAL_IRDA_TxHalfCpltCallback()
2184 __weak void HAL_IRDA_RxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxCpltCallback() argument
2187 UNUSED(hirda); in HAL_IRDA_RxCpltCallback()
2200 __weak void HAL_IRDA_RxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxHalfCpltCallback() argument
2203 UNUSED(hirda); in HAL_IRDA_RxHalfCpltCallback()
2216 __weak void HAL_IRDA_ErrorCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_ErrorCallback() argument
2219 UNUSED(hirda); in HAL_IRDA_ErrorCallback()
2232 __weak void HAL_IRDA_AbortCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortCpltCallback() argument
2235 UNUSED(hirda); in HAL_IRDA_AbortCpltCallback()
2248 __weak void HAL_IRDA_AbortTransmitCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmitCpltCallback() argument
2251 UNUSED(hirda); in HAL_IRDA_AbortTransmitCpltCallback()
2264 __weak void HAL_IRDA_AbortReceiveCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceiveCpltCallback() argument
2267 UNUSED(hirda); in HAL_IRDA_AbortReceiveCpltCallback()
2303 HAL_IRDA_StateTypeDef HAL_IRDA_GetState(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetState() argument
2308 temp1 = (uint32_t)hirda->gState; in HAL_IRDA_GetState()
2309 temp2 = (uint32_t)hirda->RxState; in HAL_IRDA_GetState()
2320 uint32_t HAL_IRDA_GetError(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetError() argument
2322 return hirda->ErrorCode; in HAL_IRDA_GetError()
2343 void IRDA_InitCallbacksToDefault(IRDA_HandleTypeDef *hirda) in IRDA_InitCallbacksToDefault() argument
2346 …hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2347 …hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in IRDA_InitCallbacksToDefault()
2348 …hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2349 …hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in IRDA_InitCallbacksToDefault()
2350 …hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in IRDA_InitCallbacksToDefault()
2351 …hirda->AbortCpltCallback = HAL_IRDA_AbortCpltCallback; /* Legacy weak AbortCpltCal… in IRDA_InitCallbacksToDefault()
2352 …hirda->AbortTransmitCpltCallback = HAL_IRDA_AbortTransmitCpltCallback; /* Legacy weak AbortTransmi… in IRDA_InitCallbacksToDefault()
2353 …hirda->AbortReceiveCpltCallback = HAL_IRDA_AbortReceiveCpltCallback; /* Legacy weak AbortReceive… in IRDA_InitCallbacksToDefault()
2364 static HAL_StatusTypeDef IRDA_SetConfig(IRDA_HandleTypeDef *hirda) in IRDA_SetConfig() argument
2372 assert_param(IS_IRDA_BAUDRATE(hirda->Init.BaudRate)); in IRDA_SetConfig()
2373 assert_param(IS_IRDA_WORD_LENGTH(hirda->Init.WordLength)); in IRDA_SetConfig()
2374 assert_param(IS_IRDA_PARITY(hirda->Init.Parity)); in IRDA_SetConfig()
2375 assert_param(IS_IRDA_TX_RX_MODE(hirda->Init.Mode)); in IRDA_SetConfig()
2376 assert_param(IS_IRDA_PRESCALER(hirda->Init.Prescaler)); in IRDA_SetConfig()
2377 assert_param(IS_IRDA_POWERMODE(hirda->Init.PowerMode)); in IRDA_SetConfig()
2384 tmpreg = (uint32_t)hirda->Init.WordLength | hirda->Init.Parity | hirda->Init.Mode ; in IRDA_SetConfig()
2386 MODIFY_REG(hirda->Instance->CR1, IRDA_CR1_FIELDS, tmpreg); in IRDA_SetConfig()
2389 MODIFY_REG(hirda->Instance->CR3, USART_CR3_IRLP, hirda->Init.PowerMode); in IRDA_SetConfig()
2393 MODIFY_REG(hirda->Instance->GTPR, (uint16_t)USART_GTPR_PSC, (uint16_t)hirda->Init.Prescaler); in IRDA_SetConfig()
2396 IRDA_GETCLOCKSOURCE(hirda, clocksource); in IRDA_SetConfig()
2402 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate)); in IRDA_SetConfig()
2405 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(HSI_VALUE, hirda->Init.BaudRate)); in IRDA_SetConfig()
2409 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate)); in IRDA_SetConfig()
2412 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16((uint32_t)LSE_VALUE, hirda->Init.BaudRate)); in IRDA_SetConfig()
2422 hirda->Instance->BRR = (uint16_t)tmpreg; in IRDA_SetConfig()
2438 static HAL_StatusTypeDef IRDA_CheckIdleState(IRDA_HandleTypeDef *hirda) in IRDA_CheckIdleState() argument
2443 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_CheckIdleState()
2449 if ((hirda->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) in IRDA_CheckIdleState()
2452 …if (IRDA_WaitOnFlagUntilTimeout(hirda, USART_ISR_TEACK, RESET, tickstart, IRDA_TEACK_REACK_TIMEOUT… in IRDA_CheckIdleState()
2459 if ((hirda->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) in IRDA_CheckIdleState()
2462 …if (IRDA_WaitOnFlagUntilTimeout(hirda, USART_ISR_REACK, RESET, tickstart, IRDA_TEACK_REACK_TIMEOUT… in IRDA_CheckIdleState()
2470 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_CheckIdleState()
2471 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_CheckIdleState()
2474 __HAL_UNLOCK(hirda); in IRDA_CheckIdleState()
2490 static HAL_StatusTypeDef IRDA_WaitOnFlagUntilTimeout(IRDA_HandleTypeDef *hirda, uint32_t Flag, Flag… in IRDA_WaitOnFlagUntilTimeout() argument
2494 while ((__HAL_IRDA_GET_FLAG(hirda, Flag) ? SET : RESET) == Status) in IRDA_WaitOnFlagUntilTimeout()
2503 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE)); in IRDA_WaitOnFlagUntilTimeout()
2504 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_WaitOnFlagUntilTimeout()
2506 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_WaitOnFlagUntilTimeout()
2507 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_WaitOnFlagUntilTimeout()
2510 __HAL_UNLOCK(hirda); in IRDA_WaitOnFlagUntilTimeout()
2525 static void IRDA_EndTxTransfer(IRDA_HandleTypeDef *hirda) in IRDA_EndTxTransfer() argument
2528 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in IRDA_EndTxTransfer()
2531 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_EndTxTransfer()
2540 static void IRDA_EndRxTransfer(IRDA_HandleTypeDef *hirda) in IRDA_EndRxTransfer() argument
2543 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in IRDA_EndRxTransfer()
2544 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_EndRxTransfer()
2547 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_EndRxTransfer()
2559 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitCplt() local
2564 hirda->TxXferCount = 0U; in IRDA_DMATransmitCplt()
2568 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in IRDA_DMATransmitCplt()
2571 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_DMATransmitCplt()
2578 hirda->TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2581 HAL_IRDA_TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2595 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitHalfCplt() local
2599 hirda->TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2602 HAL_IRDA_TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2614 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveCplt() local
2619 hirda->RxXferCount = 0U; in IRDA_DMAReceiveCplt()
2622 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in IRDA_DMAReceiveCplt()
2623 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_DMAReceiveCplt()
2627 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in IRDA_DMAReceiveCplt()
2630 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMAReceiveCplt()
2635 hirda->RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2638 HAL_IRDA_RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2650 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveHalfCplt() local
2654 hirda->RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2657 HAL_IRDA_RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2669 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAError() local
2672 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_DMAError()
2674 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in IRDA_DMAError()
2676 hirda->TxXferCount = 0U; in IRDA_DMAError()
2677 IRDA_EndTxTransfer(hirda); in IRDA_DMAError()
2682 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_DMAError()
2684 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in IRDA_DMAError()
2686 hirda->RxXferCount = 0U; in IRDA_DMAError()
2687 IRDA_EndRxTransfer(hirda); in IRDA_DMAError()
2691 hirda->ErrorCode |= HAL_IRDA_ERROR_DMA; in IRDA_DMAError()
2694 hirda->ErrorCallback(hirda); in IRDA_DMAError()
2697 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAError()
2709 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAAbortOnError() local
2710 hirda->RxXferCount = 0U; in IRDA_DMAAbortOnError()
2711 hirda->TxXferCount = 0U; in IRDA_DMAAbortOnError()
2715 hirda->ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2718 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2732 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxAbortCallback() local
2734 hirda->hdmatx->XferAbortCallback = NULL; in IRDA_DMATxAbortCallback()
2737 if (hirda->hdmarx != NULL) in IRDA_DMATxAbortCallback()
2739 if (hirda->hdmarx->XferAbortCallback != NULL) in IRDA_DMATxAbortCallback()
2746 hirda->TxXferCount = 0U; in IRDA_DMATxAbortCallback()
2747 hirda->RxXferCount = 0U; in IRDA_DMATxAbortCallback()
2750 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMATxAbortCallback()
2753 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMATxAbortCallback()
2756 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2757 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2762 hirda->AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2765 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2780 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMARxAbortCallback() local
2782 hirda->hdmarx->XferAbortCallback = NULL; in IRDA_DMARxAbortCallback()
2785 if (hirda->hdmatx != NULL) in IRDA_DMARxAbortCallback()
2787 if (hirda->hdmatx->XferAbortCallback != NULL) in IRDA_DMARxAbortCallback()
2794 hirda->TxXferCount = 0U; in IRDA_DMARxAbortCallback()
2795 hirda->RxXferCount = 0U; in IRDA_DMARxAbortCallback()
2798 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMARxAbortCallback()
2801 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxAbortCallback()
2804 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2805 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2810 hirda->AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2813 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2828 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxOnlyAbortCallback() local
2830 hirda->TxXferCount = 0U; in IRDA_DMATxOnlyAbortCallback()
2833 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxOnlyAbortCallback()
2838 hirda->AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2841 HAL_IRDA_AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2855 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in IRDA_DMARxOnlyAbortCallback() local
2857 hirda->RxXferCount = 0U; in IRDA_DMARxOnlyAbortCallback()
2860 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxOnlyAbortCallback()
2863 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxOnlyAbortCallback()
2868 hirda->AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2871 HAL_IRDA_AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2883 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_Transmit_IT() argument
2888 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_Transmit_IT()
2890 if (hirda->TxXferCount == 0U) in IRDA_Transmit_IT()
2893 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TXEIE); in IRDA_Transmit_IT()
2896 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_Transmit_IT()
2900 … if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Transmit_IT()
2902 tmp = (const uint16_t *) hirda->pTxBuffPtr; /* Derogation R.11.3 */ in IRDA_Transmit_IT()
2903 hirda->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in IRDA_Transmit_IT()
2904 hirda->pTxBuffPtr += 2U; in IRDA_Transmit_IT()
2908 hirda->Instance->TDR = (uint8_t)(*hirda->pTxBuffPtr & 0xFFU); in IRDA_Transmit_IT()
2909 hirda->pTxBuffPtr++; in IRDA_Transmit_IT()
2911 hirda->TxXferCount--; in IRDA_Transmit_IT()
2922 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_EndTransmit_IT() argument
2925 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_EndTransmit_IT()
2928 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_EndTransmit_IT()
2932 hirda->TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2935 HAL_IRDA_TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2947 static void IRDA_Receive_IT(IRDA_HandleTypeDef *hirda) in IRDA_Receive_IT() argument
2950 uint16_t uhMask = hirda->Mask; in IRDA_Receive_IT()
2954 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_Receive_IT()
2956 uhdata = (uint16_t) READ_REG(hirda->Instance->RDR); in IRDA_Receive_IT()
2957 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Receive_IT()
2959 tmp = (uint16_t *) hirda->pRxBuffPtr; /* Derogation R.11.3 */ in IRDA_Receive_IT()
2961 hirda->pRxBuffPtr += 2U; in IRDA_Receive_IT()
2965 *hirda->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask); in IRDA_Receive_IT()
2966 hirda->pRxBuffPtr++; in IRDA_Receive_IT()
2969 hirda->RxXferCount--; in IRDA_Receive_IT()
2970 if (hirda->RxXferCount == 0U) in IRDA_Receive_IT()
2973 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in IRDA_Receive_IT()
2976 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_Receive_IT()
2979 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_Receive_IT()
2983 hirda->RxCpltCallback(hirda); in IRDA_Receive_IT()
2986 HAL_IRDA_RxCpltCallback(hirda); in IRDA_Receive_IT()
2993 __HAL_IRDA_SEND_REQ(hirda, IRDA_RXDATA_FLUSH_REQUEST); in IRDA_Receive_IT()