Lines Matching refs:hirda
241 void IRDA_InitCallbacksToDefault(IRDA_HandleTypeDef *hirda);
243 static HAL_StatusTypeDef IRDA_SetConfig(IRDA_HandleTypeDef *hirda);
244 static HAL_StatusTypeDef IRDA_CheckIdleState(IRDA_HandleTypeDef *hirda);
245 static HAL_StatusTypeDef IRDA_WaitOnFlagUntilTimeout(IRDA_HandleTypeDef *hirda, uint32_t Flag, Flag…
248 static void IRDA_EndTxTransfer(IRDA_HandleTypeDef *hirda);
250 static void IRDA_EndRxTransfer(IRDA_HandleTypeDef *hirda);
263 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda);
264 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda);
265 static void IRDA_Receive_IT(IRDA_HandleTypeDef *hirda);
332 HAL_StatusTypeDef HAL_IRDA_Init(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Init() argument
335 if (hirda == NULL) in HAL_IRDA_Init()
341 assert_param(IS_IRDA_INSTANCE(hirda->Instance)); in HAL_IRDA_Init()
343 if (hirda->gState == HAL_IRDA_STATE_RESET) in HAL_IRDA_Init()
346 hirda->Lock = HAL_UNLOCKED; in HAL_IRDA_Init()
349 IRDA_InitCallbacksToDefault(hirda); in HAL_IRDA_Init()
351 if (hirda->MspInitCallback == NULL) in HAL_IRDA_Init()
353 hirda->MspInitCallback = HAL_IRDA_MspInit; in HAL_IRDA_Init()
357 hirda->MspInitCallback(hirda); in HAL_IRDA_Init()
360 HAL_IRDA_MspInit(hirda); in HAL_IRDA_Init()
364 hirda->gState = HAL_IRDA_STATE_BUSY; in HAL_IRDA_Init()
367 __HAL_IRDA_DISABLE(hirda); in HAL_IRDA_Init()
370 if (IRDA_SetConfig(hirda) == HAL_ERROR) in HAL_IRDA_Init()
378 CLEAR_BIT(hirda->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN | USART_CR2_STOP)); in HAL_IRDA_Init()
379 CLEAR_BIT(hirda->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL)); in HAL_IRDA_Init()
382 hirda->Instance->CR3 |= USART_CR3_IREN; in HAL_IRDA_Init()
385 __HAL_IRDA_ENABLE(hirda); in HAL_IRDA_Init()
388 return (IRDA_CheckIdleState(hirda)); in HAL_IRDA_Init()
397 HAL_StatusTypeDef HAL_IRDA_DeInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DeInit() argument
400 if (hirda == NULL) in HAL_IRDA_DeInit()
406 assert_param(IS_IRDA_INSTANCE(hirda->Instance)); in HAL_IRDA_DeInit()
408 hirda->gState = HAL_IRDA_STATE_BUSY; in HAL_IRDA_DeInit()
412 if (hirda->MspDeInitCallback == NULL) in HAL_IRDA_DeInit()
414 hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; in HAL_IRDA_DeInit()
417 hirda->MspDeInitCallback(hirda); in HAL_IRDA_DeInit()
419 HAL_IRDA_MspDeInit(hirda); in HAL_IRDA_DeInit()
422 __HAL_IRDA_DISABLE(hirda); in HAL_IRDA_DeInit()
424 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_DeInit()
425 hirda->gState = HAL_IRDA_STATE_RESET; in HAL_IRDA_DeInit()
426 hirda->RxState = HAL_IRDA_STATE_RESET; in HAL_IRDA_DeInit()
429 __HAL_UNLOCK(hirda); in HAL_IRDA_DeInit()
440 __weak void HAL_IRDA_MspInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_MspInit() argument
443 UNUSED(hirda); in HAL_IRDA_MspInit()
456 __weak void HAL_IRDA_MspDeInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_MspDeInit() argument
459 UNUSED(hirda); in HAL_IRDA_MspDeInit()
488 HAL_StatusTypeDef HAL_IRDA_RegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef C… in HAL_IRDA_RegisterCallback() argument
496 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
501 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_RegisterCallback()
506 hirda->TxHalfCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
510 hirda->TxCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
514 hirda->RxHalfCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
518 hirda->RxCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
522 hirda->ErrorCallback = pCallback; in HAL_IRDA_RegisterCallback()
526 hirda->AbortCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
530 hirda->AbortTransmitCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
534 hirda->AbortReceiveCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
538 hirda->MspInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
542 hirda->MspDeInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
547 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
554 else if (hirda->gState == HAL_IRDA_STATE_RESET) in HAL_IRDA_RegisterCallback()
559 hirda->MspInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
563 hirda->MspDeInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
568 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
578 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
607 HAL_StatusTypeDef HAL_IRDA_UnRegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef… in HAL_IRDA_UnRegisterCallback() argument
611 if (HAL_IRDA_STATE_READY == hirda->gState) in HAL_IRDA_UnRegisterCallback()
616 …hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltC… in HAL_IRDA_UnRegisterCallback()
620 …hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in HAL_IRDA_UnRegisterCallback()
624 …hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in HAL_IRDA_UnRegisterCallback()
628 …hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in HAL_IRDA_UnRegisterCallback()
632 …hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in HAL_IRDA_UnRegisterCallback()
636 …hirda->AbortCpltCallback = HAL_IRDA_AbortCpltCallback; /* Legacy weak AbortCpltCal… in HAL_IRDA_UnRegisterCallback()
640 hirda->AbortTransmitCpltCallback = HAL_IRDA_AbortTransmitCpltCallback; /* Legacy weak in HAL_IRDA_UnRegisterCallback()
645 hirda->AbortReceiveCpltCallback = HAL_IRDA_AbortReceiveCpltCallback; /* Legacy weak in HAL_IRDA_UnRegisterCallback()
650 …hirda->MspInitCallback = HAL_IRDA_MspInit; /* Legacy weak MspInitCallb… in HAL_IRDA_UnRegisterCallback()
654 …hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; /* Legacy weak MspDeInitCal… in HAL_IRDA_UnRegisterCallback()
659 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
666 else if (HAL_IRDA_STATE_RESET == hirda->gState) in HAL_IRDA_UnRegisterCallback()
671 hirda->MspInitCallback = HAL_IRDA_MspInit; in HAL_IRDA_UnRegisterCallback()
675 hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; in HAL_IRDA_UnRegisterCallback()
680 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
690 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
808 HAL_StatusTypeDef HAL_IRDA_Transmit(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size,… in HAL_IRDA_Transmit() argument
815 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit()
825 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit()
834 __HAL_LOCK(hirda); in HAL_IRDA_Transmit()
836 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit()
837 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit()
842 hirda->TxXferSize = Size; in HAL_IRDA_Transmit()
843 hirda->TxXferCount = Size; in HAL_IRDA_Transmit()
846 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit()
857 while (hirda->TxXferCount > 0U) in HAL_IRDA_Transmit()
859 hirda->TxXferCount--; in HAL_IRDA_Transmit()
861 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
867 hirda->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU); in HAL_IRDA_Transmit()
872 hirda->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU); in HAL_IRDA_Transmit()
877 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
883 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit()
886 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit()
915 HAL_StatusTypeDef HAL_IRDA_Receive(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size, uint32… in HAL_IRDA_Receive() argument
923 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive()
933 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive()
942 __HAL_LOCK(hirda); in HAL_IRDA_Receive()
944 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive()
945 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive()
950 hirda->RxXferSize = Size; in HAL_IRDA_Receive()
951 hirda->RxXferCount = Size; in HAL_IRDA_Receive()
955 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive()
956 uhMask = hirda->Mask; in HAL_IRDA_Receive()
959 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive()
971 while (hirda->RxXferCount > 0U) in HAL_IRDA_Receive()
973 hirda->RxXferCount--; in HAL_IRDA_Receive()
975 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Receive()
981 *pdata16bits = (uint16_t)(hirda->Instance->RDR & uhMask); in HAL_IRDA_Receive()
986 *pdata8bits = (uint8_t)(hirda->Instance->RDR & (uint8_t)uhMask); in HAL_IRDA_Receive()
992 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive()
995 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive()
1023 HAL_StatusTypeDef HAL_IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Si… in HAL_IRDA_Transmit_IT() argument
1026 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit_IT()
1036 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit_IT()
1045 __HAL_LOCK(hirda); in HAL_IRDA_Transmit_IT()
1047 hirda->pTxBuffPtr = pData; in HAL_IRDA_Transmit_IT()
1048 hirda->TxXferSize = Size; in HAL_IRDA_Transmit_IT()
1049 hirda->TxXferCount = Size; in HAL_IRDA_Transmit_IT()
1051 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit_IT()
1052 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit_IT()
1055 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_IT()
1058 SET_BIT(hirda->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in HAL_IRDA_Transmit_IT()
1086 HAL_StatusTypeDef HAL_IRDA_Receive_IT(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_IT() argument
1089 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_IT()
1099 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive_IT()
1108 __HAL_LOCK(hirda); in HAL_IRDA_Receive_IT()
1110 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_IT()
1111 hirda->RxXferSize = Size; in HAL_IRDA_Receive_IT()
1112 hirda->RxXferCount = Size; in HAL_IRDA_Receive_IT()
1116 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive_IT()
1118 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_IT()
1119 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_IT()
1122 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_IT()
1124 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_IT()
1127 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); in HAL_IRDA_Receive_IT()
1132 SET_BIT(hirda->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in HAL_IRDA_Receive_IT()
1136 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_IT()
1165 HAL_StatusTypeDef HAL_IRDA_Transmit_DMA(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t S… in HAL_IRDA_Transmit_DMA() argument
1168 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit_DMA()
1178 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit_DMA()
1187 __HAL_LOCK(hirda); in HAL_IRDA_Transmit_DMA()
1189 hirda->pTxBuffPtr = pData; in HAL_IRDA_Transmit_DMA()
1190 hirda->TxXferSize = Size; in HAL_IRDA_Transmit_DMA()
1191 hirda->TxXferCount = Size; in HAL_IRDA_Transmit_DMA()
1193 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit_DMA()
1194 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit_DMA()
1197 hirda->hdmatx->XferCpltCallback = IRDA_DMATransmitCplt; in HAL_IRDA_Transmit_DMA()
1200 hirda->hdmatx->XferHalfCpltCallback = IRDA_DMATransmitHalfCplt; in HAL_IRDA_Transmit_DMA()
1203 hirda->hdmatx->XferErrorCallback = IRDA_DMAError; in HAL_IRDA_Transmit_DMA()
1206 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Transmit_DMA()
1209 …if (HAL_DMA_Start_IT(hirda->hdmatx, (uint32_t)hirda->pTxBuffPtr, (uint32_t)&hirda->Instance->TDR, … in HAL_IRDA_Transmit_DMA()
1212 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_TCF); in HAL_IRDA_Transmit_DMA()
1215 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1219 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Transmit_DMA()
1226 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Transmit_DMA()
1229 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1232 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit_DMA()
1263 HAL_StatusTypeDef HAL_IRDA_Receive_DMA(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_DMA() argument
1266 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_DMA()
1276 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive_DMA()
1285 __HAL_LOCK(hirda); in HAL_IRDA_Receive_DMA()
1287 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_DMA()
1288 hirda->RxXferSize = Size; in HAL_IRDA_Receive_DMA()
1290 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_DMA()
1291 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_DMA()
1294 hirda->hdmarx->XferCpltCallback = IRDA_DMAReceiveCplt; in HAL_IRDA_Receive_DMA()
1297 hirda->hdmarx->XferHalfCpltCallback = IRDA_DMAReceiveHalfCplt; in HAL_IRDA_Receive_DMA()
1300 hirda->hdmarx->XferErrorCallback = IRDA_DMAError; in HAL_IRDA_Receive_DMA()
1303 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Receive_DMA()
1306 …if (HAL_DMA_Start_IT(hirda->hdmarx, (uint32_t)&hirda->Instance->RDR, (uint32_t)hirda->pRxBuffPtr, … in HAL_IRDA_Receive_DMA()
1309 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1311 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_DMA()
1314 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_Receive_DMA()
1318 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_DMA()
1322 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Receive_DMA()
1329 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Receive_DMA()
1332 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1335 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive_DMA()
1353 HAL_StatusTypeDef HAL_IRDA_DMAPause(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAPause() argument
1356 __HAL_LOCK(hirda); in HAL_IRDA_DMAPause()
1358 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAPause()
1360 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAPause()
1363 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAPause()
1366 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAPause()
1368 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAPause()
1371 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAPause()
1372 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAPause()
1375 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAPause()
1380 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAPause()
1391 HAL_StatusTypeDef HAL_IRDA_DMAResume(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAResume() argument
1394 __HAL_LOCK(hirda); in HAL_IRDA_DMAResume()
1396 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAResume()
1399 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAResume()
1401 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAResume()
1404 __HAL_IRDA_CLEAR_OREFLAG(hirda); in HAL_IRDA_DMAResume()
1407 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_DMAResume()
1409 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAResume()
1411 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAResume()
1414 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAResume()
1418 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAResume()
1429 HAL_StatusTypeDef HAL_IRDA_DMAStop(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAStop() argument
1439 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAStop()
1441 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAStop()
1443 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAStop()
1446 if (hirda->hdmatx != NULL) in HAL_IRDA_DMAStop()
1448 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_DMAStop()
1450 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1453 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1460 IRDA_EndTxTransfer(hirda); in HAL_IRDA_DMAStop()
1465 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAStop()
1467 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAStop()
1469 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAStop()
1472 if (hirda->hdmarx != NULL) in HAL_IRDA_DMAStop()
1474 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_DMAStop()
1476 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1479 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1486 IRDA_EndRxTransfer(hirda); in HAL_IRDA_DMAStop()
1507 HAL_StatusTypeDef HAL_IRDA_Abort(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort() argument
1510 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | \ in HAL_IRDA_Abort()
1512 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort()
1516 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort()
1518 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort()
1521 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort()
1525 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1527 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort()
1529 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1532 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Abort()
1541 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort()
1543 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort()
1546 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort()
1550 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1552 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort()
1554 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1557 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_TXFNFIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit()
1603 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit()
1605 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit()
1608 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit()
1612 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_AbortTransmit()
1614 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit()
1616 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortTransmit()
1619 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortTransmit()
1629 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit()
1632 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit()
1650 HAL_StatusTypeDef HAL_IRDA_AbortReceive(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive() argument
1653 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive()
1654 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive()
1658 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive()
1660 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive()
1663 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive()
1667 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_AbortReceive()
1669 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive()
1671 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortReceive()
1674 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortReceive()
1684 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive()
1687 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive()
1690 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive()
1710 HAL_StatusTypeDef HAL_IRDA_Abort_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort_IT() argument
1715 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | \ in HAL_IRDA_Abort_IT()
1717 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort_IT()
1723 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1727 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1729 hirda->hdmatx->XferAbortCallback = IRDA_DMATxAbortCallback; in HAL_IRDA_Abort_IT()
1733 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1737 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1741 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1743 hirda->hdmarx->XferAbortCallback = IRDA_DMARxAbortCallback; in HAL_IRDA_Abort_IT()
1747 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1752 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1755 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort_IT()
1758 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1764 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort_IT()
1766 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1776 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1778 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort_IT()
1781 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1787 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort_IT()
1789 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1804 hirda->TxXferCount = 0U; in HAL_IRDA_Abort_IT()
1805 hirda->RxXferCount = 0U; in HAL_IRDA_Abort_IT()
1808 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Abort_IT()
1811 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_Abort_IT()
1814 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1815 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1820 hirda->AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1823 HAL_IRDA_AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1845 HAL_StatusTypeDef HAL_IRDA_AbortTransmit_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmit_IT() argument
1848 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit_IT()
1852 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit_IT()
1854 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit_IT()
1857 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit_IT()
1861 hirda->hdmatx->XferAbortCallback = IRDA_DMATxOnlyAbortCallback; in HAL_IRDA_AbortTransmit_IT()
1864 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit_IT()
1867 hirda->hdmatx->XferAbortCallback(hirda->hdmatx); in HAL_IRDA_AbortTransmit_IT()
1873 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit_IT()
1876 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit_IT()
1881 hirda->AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1884 HAL_IRDA_AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1892 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit_IT()
1895 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit_IT()
1900 hirda->AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1903 HAL_IRDA_AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1925 HAL_StatusTypeDef HAL_IRDA_AbortReceive_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive_IT() argument
1928 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive_IT()
1929 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive_IT()
1933 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive_IT()
1935 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive_IT()
1938 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive_IT()
1942 hirda->hdmarx->XferAbortCallback = IRDA_DMARxOnlyAbortCallback; in HAL_IRDA_AbortReceive_IT()
1945 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive_IT()
1948 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_AbortReceive_IT()
1954 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive_IT()
1957 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive_IT()
1960 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive_IT()
1965 hirda->AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1968 HAL_IRDA_AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1976 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive_IT()
1979 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive_IT()
1982 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive_IT()
1987 hirda->AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1990 HAL_IRDA_AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
2003 void HAL_IRDA_IRQHandler(IRDA_HandleTypeDef *hirda) in HAL_IRDA_IRQHandler() argument
2005 uint32_t isrflags = READ_REG(hirda->Instance->ISR); in HAL_IRDA_IRQHandler()
2006 uint32_t cr1its = READ_REG(hirda->Instance->CR1); in HAL_IRDA_IRQHandler()
2018 IRDA_Receive_IT(hirda); in HAL_IRDA_IRQHandler()
2024 cr3its = READ_REG(hirda->Instance->CR3); in HAL_IRDA_IRQHandler()
2032 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_PEF); in HAL_IRDA_IRQHandler()
2034 hirda->ErrorCode |= HAL_IRDA_ERROR_PE; in HAL_IRDA_IRQHandler()
2040 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_FEF); in HAL_IRDA_IRQHandler()
2042 hirda->ErrorCode |= HAL_IRDA_ERROR_FE; in HAL_IRDA_IRQHandler()
2048 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_NEF); in HAL_IRDA_IRQHandler()
2050 hirda->ErrorCode |= HAL_IRDA_ERROR_NE; in HAL_IRDA_IRQHandler()
2057 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_OREF); in HAL_IRDA_IRQHandler()
2059 hirda->ErrorCode |= HAL_IRDA_ERROR_ORE; in HAL_IRDA_IRQHandler()
2063 if (hirda->ErrorCode != HAL_IRDA_ERROR_NONE) in HAL_IRDA_IRQHandler()
2068 IRDA_Receive_IT(hirda); in HAL_IRDA_IRQHandler()
2073 errorcode = hirda->ErrorCode; in HAL_IRDA_IRQHandler()
2074 if ((HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) || in HAL_IRDA_IRQHandler()
2080 IRDA_EndRxTransfer(hirda); in HAL_IRDA_IRQHandler()
2084 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_IRQHandler()
2086 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_IRQHandler()
2089 if (hirda->hdmarx != NULL) in HAL_IRDA_IRQHandler()
2093 hirda->hdmarx->XferAbortCallback = IRDA_DMAAbortOnError; in HAL_IRDA_IRQHandler()
2096 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_IRQHandler()
2099 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_IRQHandler()
2106 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2109 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()
2131 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2134 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2136 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_IRQHandler()
2146 IRDA_Transmit_IT(hirda); in HAL_IRDA_IRQHandler()
2153 IRDA_EndTransmit_IT(hirda); in HAL_IRDA_IRQHandler()
2165 __weak void HAL_IRDA_TxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxCpltCallback() argument
2168 UNUSED(hirda); in HAL_IRDA_TxCpltCallback()
2181 __weak void HAL_IRDA_TxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxHalfCpltCallback() argument
2184 UNUSED(hirda); in HAL_IRDA_TxHalfCpltCallback()
2197 __weak void HAL_IRDA_RxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxCpltCallback() argument
2200 UNUSED(hirda); in HAL_IRDA_RxCpltCallback()
2213 __weak void HAL_IRDA_RxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxHalfCpltCallback() argument
2216 UNUSED(hirda); in HAL_IRDA_RxHalfCpltCallback()
2229 __weak void HAL_IRDA_ErrorCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_ErrorCallback() argument
2232 UNUSED(hirda); in HAL_IRDA_ErrorCallback()
2245 __weak void HAL_IRDA_AbortCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortCpltCallback() argument
2248 UNUSED(hirda); in HAL_IRDA_AbortCpltCallback()
2261 __weak void HAL_IRDA_AbortTransmitCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmitCpltCallback() argument
2264 UNUSED(hirda); in HAL_IRDA_AbortTransmitCpltCallback()
2277 __weak void HAL_IRDA_AbortReceiveCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceiveCpltCallback() argument
2280 UNUSED(hirda); in HAL_IRDA_AbortReceiveCpltCallback()
2316 HAL_IRDA_StateTypeDef HAL_IRDA_GetState(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetState() argument
2321 temp1 = (uint32_t)hirda->gState; in HAL_IRDA_GetState()
2322 temp2 = (uint32_t)hirda->RxState; in HAL_IRDA_GetState()
2333 uint32_t HAL_IRDA_GetError(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetError() argument
2335 return hirda->ErrorCode; in HAL_IRDA_GetError()
2356 void IRDA_InitCallbacksToDefault(IRDA_HandleTypeDef *hirda) in IRDA_InitCallbacksToDefault() argument
2359 …hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2360 …hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in IRDA_InitCallbacksToDefault()
2361 …hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2362 …hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in IRDA_InitCallbacksToDefault()
2363 …hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in IRDA_InitCallbacksToDefault()
2364 …hirda->AbortCpltCallback = HAL_IRDA_AbortCpltCallback; /* Legacy weak AbortCpltCal… in IRDA_InitCallbacksToDefault()
2365 …hirda->AbortTransmitCpltCallback = HAL_IRDA_AbortTransmitCpltCallback; /* Legacy weak AbortTransmi… in IRDA_InitCallbacksToDefault()
2366 …hirda->AbortReceiveCpltCallback = HAL_IRDA_AbortReceiveCpltCallback; /* Legacy weak AbortReceive… in IRDA_InitCallbacksToDefault()
2377 static HAL_StatusTypeDef IRDA_SetConfig(IRDA_HandleTypeDef *hirda) in IRDA_SetConfig() argument
2386 assert_param(IS_IRDA_BAUDRATE(hirda->Init.BaudRate)); in IRDA_SetConfig()
2387 assert_param(IS_IRDA_WORD_LENGTH(hirda->Init.WordLength)); in IRDA_SetConfig()
2388 assert_param(IS_IRDA_PARITY(hirda->Init.Parity)); in IRDA_SetConfig()
2389 assert_param(IS_IRDA_TX_RX_MODE(hirda->Init.Mode)); in IRDA_SetConfig()
2390 assert_param(IS_IRDA_PRESCALER(hirda->Init.Prescaler)); in IRDA_SetConfig()
2391 assert_param(IS_IRDA_POWERMODE(hirda->Init.PowerMode)); in IRDA_SetConfig()
2392 assert_param(IS_IRDA_CLOCKPRESCALER(hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2399 tmpreg = (uint32_t)hirda->Init.WordLength | hirda->Init.Parity | hirda->Init.Mode ; in IRDA_SetConfig()
2401 MODIFY_REG(hirda->Instance->CR1, IRDA_CR1_FIELDS, tmpreg); in IRDA_SetConfig()
2404 MODIFY_REG(hirda->Instance->CR3, USART_CR3_IRLP, hirda->Init.PowerMode); in IRDA_SetConfig()
2409 MODIFY_REG(hirda->Instance->PRESC, USART_PRESC_PRESCALER, hirda->Init.ClockPrescaler); in IRDA_SetConfig()
2412 MODIFY_REG(hirda->Instance->GTPR, (uint16_t)USART_GTPR_PSC, (uint16_t)hirda->Init.Prescaler); in IRDA_SetConfig()
2415 IRDA_GETCLOCKSOURCE(hirda, clocksource); in IRDA_SetConfig()
2421 … tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate, hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2425 … tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate, hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2429 … tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate, hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2432 …tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16((uint32_t)LSE_VALUE, hirda->Init.BaudRate, hirda->Init.Clo… in IRDA_SetConfig()
2442 hirda->Instance->BRR = (uint16_t)tmpreg; in IRDA_SetConfig()
2458 static HAL_StatusTypeDef IRDA_CheckIdleState(IRDA_HandleTypeDef *hirda) in IRDA_CheckIdleState() argument
2463 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_CheckIdleState()
2469 if ((hirda->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) in IRDA_CheckIdleState()
2472 …if (IRDA_WaitOnFlagUntilTimeout(hirda, USART_ISR_TEACK, RESET, tickstart, IRDA_TEACK_REACK_TIMEOUT… in IRDA_CheckIdleState()
2479 if ((hirda->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) in IRDA_CheckIdleState()
2482 …if (IRDA_WaitOnFlagUntilTimeout(hirda, USART_ISR_REACK, RESET, tickstart, IRDA_TEACK_REACK_TIMEOUT… in IRDA_CheckIdleState()
2490 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_CheckIdleState()
2491 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_CheckIdleState()
2494 __HAL_UNLOCK(hirda); in IRDA_CheckIdleState()
2510 static HAL_StatusTypeDef IRDA_WaitOnFlagUntilTimeout(IRDA_HandleTypeDef *hirda, uint32_t Flag, Flag… in IRDA_WaitOnFlagUntilTimeout() argument
2514 while ((__HAL_IRDA_GET_FLAG(hirda, Flag) ? SET : RESET) == Status) in IRDA_WaitOnFlagUntilTimeout()
2523 …CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFNF… in IRDA_WaitOnFlagUntilTimeout()
2524 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_WaitOnFlagUntilTimeout()
2526 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_WaitOnFlagUntilTimeout()
2527 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_WaitOnFlagUntilTimeout()
2530 __HAL_UNLOCK(hirda); in IRDA_WaitOnFlagUntilTimeout()
2546 static void IRDA_EndTxTransfer(IRDA_HandleTypeDef *hirda) in IRDA_EndTxTransfer() argument
2549 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in IRDA_EndTxTransfer()
2552 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_EndTxTransfer()
2562 static void IRDA_EndRxTransfer(IRDA_HandleTypeDef *hirda) in IRDA_EndRxTransfer() argument
2565 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in IRDA_EndRxTransfer()
2566 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_EndRxTransfer()
2569 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_EndRxTransfer()
2582 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitCplt() local
2587 hirda->TxXferCount = 0U; in IRDA_DMATransmitCplt()
2591 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in IRDA_DMATransmitCplt()
2594 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_DMATransmitCplt()
2601 hirda->TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2604 HAL_IRDA_TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2618 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitHalfCplt() local
2622 hirda->TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2625 HAL_IRDA_TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2637 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveCplt() local
2642 hirda->RxXferCount = 0U; in IRDA_DMAReceiveCplt()
2645 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in IRDA_DMAReceiveCplt()
2646 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_DMAReceiveCplt()
2650 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in IRDA_DMAReceiveCplt()
2653 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMAReceiveCplt()
2658 hirda->RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2661 HAL_IRDA_RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2673 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveHalfCplt() local
2677 hirda->RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2680 HAL_IRDA_RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2692 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAError() local
2695 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_DMAError()
2697 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in IRDA_DMAError()
2699 hirda->TxXferCount = 0U; in IRDA_DMAError()
2700 IRDA_EndTxTransfer(hirda); in IRDA_DMAError()
2705 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_DMAError()
2707 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in IRDA_DMAError()
2709 hirda->RxXferCount = 0U; in IRDA_DMAError()
2710 IRDA_EndRxTransfer(hirda); in IRDA_DMAError()
2714 hirda->ErrorCode |= HAL_IRDA_ERROR_DMA; in IRDA_DMAError()
2717 hirda->ErrorCallback(hirda); in IRDA_DMAError()
2720 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAError()
2732 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAAbortOnError() local
2733 hirda->RxXferCount = 0U; in IRDA_DMAAbortOnError()
2734 hirda->TxXferCount = 0U; in IRDA_DMAAbortOnError()
2738 hirda->ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2741 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2755 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxAbortCallback() local
2757 hirda->hdmatx->XferAbortCallback = NULL; in IRDA_DMATxAbortCallback()
2760 if (hirda->hdmarx != NULL) in IRDA_DMATxAbortCallback()
2762 if (hirda->hdmarx->XferAbortCallback != NULL) in IRDA_DMATxAbortCallback()
2769 hirda->TxXferCount = 0U; in IRDA_DMATxAbortCallback()
2770 hirda->RxXferCount = 0U; in IRDA_DMATxAbortCallback()
2773 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMATxAbortCallback()
2776 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMATxAbortCallback()
2779 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2780 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2785 hirda->AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2788 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2803 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMARxAbortCallback() local
2805 hirda->hdmarx->XferAbortCallback = NULL; in IRDA_DMARxAbortCallback()
2808 if (hirda->hdmatx != NULL) in IRDA_DMARxAbortCallback()
2810 if (hirda->hdmatx->XferAbortCallback != NULL) in IRDA_DMARxAbortCallback()
2817 hirda->TxXferCount = 0U; in IRDA_DMARxAbortCallback()
2818 hirda->RxXferCount = 0U; in IRDA_DMARxAbortCallback()
2821 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMARxAbortCallback()
2824 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxAbortCallback()
2827 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2828 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2833 hirda->AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2836 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2851 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxOnlyAbortCallback() local
2853 hirda->TxXferCount = 0U; in IRDA_DMATxOnlyAbortCallback()
2856 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxOnlyAbortCallback()
2861 hirda->AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2864 HAL_IRDA_AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2878 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in IRDA_DMARxOnlyAbortCallback() local
2880 hirda->RxXferCount = 0U; in IRDA_DMARxOnlyAbortCallback()
2883 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxOnlyAbortCallback()
2886 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxOnlyAbortCallback()
2891 hirda->AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2894 HAL_IRDA_AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2907 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_Transmit_IT() argument
2912 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_Transmit_IT()
2914 if (hirda->TxXferCount == 0U) in IRDA_Transmit_IT()
2917 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in IRDA_Transmit_IT()
2920 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_Transmit_IT()
2924 … if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Transmit_IT()
2926 tmp = (const uint16_t *) hirda->pTxBuffPtr; /* Derogation R.11.3 */ in IRDA_Transmit_IT()
2927 hirda->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in IRDA_Transmit_IT()
2928 hirda->pTxBuffPtr += 2U; in IRDA_Transmit_IT()
2932 hirda->Instance->TDR = (uint8_t)(*hirda->pTxBuffPtr & 0xFFU); in IRDA_Transmit_IT()
2933 hirda->pTxBuffPtr++; in IRDA_Transmit_IT()
2935 hirda->TxXferCount--; in IRDA_Transmit_IT()
2946 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_EndTransmit_IT() argument
2949 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_EndTransmit_IT()
2952 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_EndTransmit_IT()
2956 hirda->TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2959 HAL_IRDA_TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2971 static void IRDA_Receive_IT(IRDA_HandleTypeDef *hirda) in IRDA_Receive_IT() argument
2974 uint16_t uhMask = hirda->Mask; in IRDA_Receive_IT()
2978 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_Receive_IT()
2980 uhdata = (uint16_t) READ_REG(hirda->Instance->RDR); in IRDA_Receive_IT()
2981 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Receive_IT()
2983 tmp = (uint16_t *) hirda->pRxBuffPtr; /* Derogation R.11.3 */ in IRDA_Receive_IT()
2985 hirda->pRxBuffPtr += 2U; in IRDA_Receive_IT()
2989 *hirda->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask); in IRDA_Receive_IT()
2990 hirda->pRxBuffPtr++; in IRDA_Receive_IT()
2993 hirda->RxXferCount--; in IRDA_Receive_IT()
2994 if (hirda->RxXferCount == 0U) in IRDA_Receive_IT()
2997 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in IRDA_Receive_IT()
3000 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_Receive_IT()
3003 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_Receive_IT()
3007 hirda->RxCpltCallback(hirda); in IRDA_Receive_IT()
3010 HAL_IRDA_RxCpltCallback(hirda); in IRDA_Receive_IT()
3017 __HAL_IRDA_SEND_REQ(hirda, IRDA_RXDATA_FLUSH_REQUEST); in IRDA_Receive_IT()