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…
247 static void IRDA_EndTxTransfer(IRDA_HandleTypeDef *hirda);
248 static void IRDA_EndRxTransfer(IRDA_HandleTypeDef *hirda);
259 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda);
260 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda);
261 static void IRDA_Receive_IT(IRDA_HandleTypeDef *hirda);
328 HAL_StatusTypeDef HAL_IRDA_Init(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Init() argument
331 if (hirda == NULL) in HAL_IRDA_Init()
337 assert_param(IS_IRDA_INSTANCE(hirda->Instance)); in HAL_IRDA_Init()
339 if (hirda->gState == HAL_IRDA_STATE_RESET) in HAL_IRDA_Init()
342 hirda->Lock = HAL_UNLOCKED; in HAL_IRDA_Init()
345 IRDA_InitCallbacksToDefault(hirda); in HAL_IRDA_Init()
347 if (hirda->MspInitCallback == NULL) in HAL_IRDA_Init()
349 hirda->MspInitCallback = HAL_IRDA_MspInit; in HAL_IRDA_Init()
353 hirda->MspInitCallback(hirda); in HAL_IRDA_Init()
356 HAL_IRDA_MspInit(hirda); in HAL_IRDA_Init()
360 hirda->gState = HAL_IRDA_STATE_BUSY; in HAL_IRDA_Init()
363 __HAL_IRDA_DISABLE(hirda); in HAL_IRDA_Init()
366 if (IRDA_SetConfig(hirda) == HAL_ERROR) in HAL_IRDA_Init()
374 CLEAR_BIT(hirda->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN | USART_CR2_STOP)); in HAL_IRDA_Init()
375 CLEAR_BIT(hirda->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL)); in HAL_IRDA_Init()
378 hirda->Instance->CR3 |= USART_CR3_IREN; in HAL_IRDA_Init()
381 __HAL_IRDA_ENABLE(hirda); in HAL_IRDA_Init()
384 return (IRDA_CheckIdleState(hirda)); in HAL_IRDA_Init()
393 HAL_StatusTypeDef HAL_IRDA_DeInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DeInit() argument
396 if (hirda == NULL) in HAL_IRDA_DeInit()
402 assert_param(IS_IRDA_INSTANCE(hirda->Instance)); in HAL_IRDA_DeInit()
404 hirda->gState = HAL_IRDA_STATE_BUSY; in HAL_IRDA_DeInit()
408 if (hirda->MspDeInitCallback == NULL) in HAL_IRDA_DeInit()
410 hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; in HAL_IRDA_DeInit()
413 hirda->MspDeInitCallback(hirda); in HAL_IRDA_DeInit()
415 HAL_IRDA_MspDeInit(hirda); in HAL_IRDA_DeInit()
418 __HAL_IRDA_DISABLE(hirda); in HAL_IRDA_DeInit()
420 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_DeInit()
421 hirda->gState = HAL_IRDA_STATE_RESET; in HAL_IRDA_DeInit()
422 hirda->RxState = HAL_IRDA_STATE_RESET; in HAL_IRDA_DeInit()
425 __HAL_UNLOCK(hirda); in HAL_IRDA_DeInit()
436 __weak void HAL_IRDA_MspInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_MspInit() argument
439 UNUSED(hirda); in HAL_IRDA_MspInit()
452 __weak void HAL_IRDA_MspDeInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_MspDeInit() argument
455 UNUSED(hirda); in HAL_IRDA_MspDeInit()
484 HAL_StatusTypeDef HAL_IRDA_RegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef C… in HAL_IRDA_RegisterCallback() argument
492 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
497 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_RegisterCallback()
502 hirda->TxHalfCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
506 hirda->TxCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
510 hirda->RxHalfCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
514 hirda->RxCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
518 hirda->ErrorCallback = pCallback; in HAL_IRDA_RegisterCallback()
522 hirda->AbortCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
526 hirda->AbortTransmitCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
530 hirda->AbortReceiveCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
534 hirda->MspInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
538 hirda->MspDeInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
543 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
550 else if (hirda->gState == HAL_IRDA_STATE_RESET) in HAL_IRDA_RegisterCallback()
555 hirda->MspInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
559 hirda->MspDeInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
564 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
574 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
603 HAL_StatusTypeDef HAL_IRDA_UnRegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef… in HAL_IRDA_UnRegisterCallback() argument
607 if (HAL_IRDA_STATE_READY == hirda->gState) in HAL_IRDA_UnRegisterCallback()
612hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltC… in HAL_IRDA_UnRegisterCallback()
616hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in HAL_IRDA_UnRegisterCallback()
620hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in HAL_IRDA_UnRegisterCallback()
624hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in HAL_IRDA_UnRegisterCallback()
628hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in HAL_IRDA_UnRegisterCallback()
632hirda->AbortCpltCallback = HAL_IRDA_AbortCpltCallback; /* Legacy weak AbortCpltCal… in HAL_IRDA_UnRegisterCallback()
636 hirda->AbortTransmitCpltCallback = HAL_IRDA_AbortTransmitCpltCallback; /* Legacy weak in HAL_IRDA_UnRegisterCallback()
641 hirda->AbortReceiveCpltCallback = HAL_IRDA_AbortReceiveCpltCallback; /* Legacy weak in HAL_IRDA_UnRegisterCallback()
646hirda->MspInitCallback = HAL_IRDA_MspInit; /* Legacy weak MspInitCallb… in HAL_IRDA_UnRegisterCallback()
650hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; /* Legacy weak MspDeInitCal… in HAL_IRDA_UnRegisterCallback()
655 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
662 else if (HAL_IRDA_STATE_RESET == hirda->gState) in HAL_IRDA_UnRegisterCallback()
667 hirda->MspInitCallback = HAL_IRDA_MspInit; in HAL_IRDA_UnRegisterCallback()
671 hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; in HAL_IRDA_UnRegisterCallback()
676 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
686 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
805 HAL_StatusTypeDef HAL_IRDA_Transmit(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size,… in HAL_IRDA_Transmit() argument
812 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit()
823 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit()
833 __HAL_LOCK(hirda); in HAL_IRDA_Transmit()
835 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit()
836 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit()
841 hirda->TxXferSize = Size; in HAL_IRDA_Transmit()
842 hirda->TxXferCount = Size; in HAL_IRDA_Transmit()
845 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit()
856 while (hirda->TxXferCount > 0U) in HAL_IRDA_Transmit()
858 hirda->TxXferCount--; in HAL_IRDA_Transmit()
860 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
866 hirda->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU); in HAL_IRDA_Transmit()
871 hirda->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU); in HAL_IRDA_Transmit()
876 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
882 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit()
885 __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()
934 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive()
944 __HAL_LOCK(hirda); in HAL_IRDA_Receive()
946 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive()
947 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive()
952 hirda->RxXferSize = Size; in HAL_IRDA_Receive()
953 hirda->RxXferCount = Size; in HAL_IRDA_Receive()
957 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive()
958 uhMask = hirda->Mask; in HAL_IRDA_Receive()
961 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive()
973 while (hirda->RxXferCount > 0U) in HAL_IRDA_Receive()
975 hirda->RxXferCount--; in HAL_IRDA_Receive()
977 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Receive()
983 *pdata16bits = (uint16_t)(hirda->Instance->RDR & uhMask); in HAL_IRDA_Receive()
988 *pdata8bits = (uint8_t)(hirda->Instance->RDR & (uint8_t)uhMask); in HAL_IRDA_Receive()
994 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive()
997 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive()
1026 HAL_StatusTypeDef HAL_IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Si… in HAL_IRDA_Transmit_IT() argument
1029 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit_IT()
1040 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_TXFNFIE); in HAL_IRDA_Transmit_IT()
1092 HAL_StatusTypeDef HAL_IRDA_Receive_IT(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_IT() argument
1095 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_IT()
1106 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive_IT()
1116 __HAL_LOCK(hirda); in HAL_IRDA_Receive_IT()
1118 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_IT()
1119 hirda->RxXferSize = Size; in HAL_IRDA_Receive_IT()
1120 hirda->RxXferCount = Size; in HAL_IRDA_Receive_IT()
1124 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive_IT()
1126 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_IT()
1127 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_IT()
1130 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_IT()
1132 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_IT()
1135 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); in HAL_IRDA_Receive_IT()
1140 SET_BIT(hirda->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in HAL_IRDA_Receive_IT()
1144 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_IT()
1173 HAL_StatusTypeDef HAL_IRDA_Transmit_DMA(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t S… in HAL_IRDA_Transmit_DMA() argument
1176 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit_DMA()
1187 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit_DMA()
1197 __HAL_LOCK(hirda); in HAL_IRDA_Transmit_DMA()
1199 hirda->pTxBuffPtr = pData; in HAL_IRDA_Transmit_DMA()
1200 hirda->TxXferSize = Size; in HAL_IRDA_Transmit_DMA()
1201 hirda->TxXferCount = Size; in HAL_IRDA_Transmit_DMA()
1203 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit_DMA()
1204 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit_DMA()
1207 hirda->hdmatx->XferCpltCallback = IRDA_DMATransmitCplt; in HAL_IRDA_Transmit_DMA()
1210 hirda->hdmatx->XferHalfCpltCallback = IRDA_DMATransmitHalfCplt; in HAL_IRDA_Transmit_DMA()
1213 hirda->hdmatx->XferErrorCallback = IRDA_DMAError; in HAL_IRDA_Transmit_DMA()
1216 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Transmit_DMA()
1219 …if (HAL_DMA_Start_IT(hirda->hdmatx, (uint32_t)hirda->pTxBuffPtr, (uint32_t)&hirda->Instance->TDR, … in HAL_IRDA_Transmit_DMA()
1222 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_TCF); in HAL_IRDA_Transmit_DMA()
1225 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1229 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Transmit_DMA()
1236 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Transmit_DMA()
1239 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1242 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit_DMA()
1274 HAL_StatusTypeDef HAL_IRDA_Receive_DMA(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_DMA() argument
1277 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_DMA()
1288 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive_DMA()
1298 __HAL_LOCK(hirda); in HAL_IRDA_Receive_DMA()
1300 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_DMA()
1301 hirda->RxXferSize = Size; in HAL_IRDA_Receive_DMA()
1303 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_DMA()
1304 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_DMA()
1307 hirda->hdmarx->XferCpltCallback = IRDA_DMAReceiveCplt; in HAL_IRDA_Receive_DMA()
1310 hirda->hdmarx->XferHalfCpltCallback = IRDA_DMAReceiveHalfCplt; in HAL_IRDA_Receive_DMA()
1313 hirda->hdmarx->XferErrorCallback = IRDA_DMAError; in HAL_IRDA_Receive_DMA()
1316 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Receive_DMA()
1319 …if (HAL_DMA_Start_IT(hirda->hdmarx, (uint32_t)&hirda->Instance->RDR, (uint32_t)hirda->pRxBuffPtr, … in HAL_IRDA_Receive_DMA()
1322 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1324 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_DMA()
1327 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_Receive_DMA()
1331 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_DMA()
1335 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Receive_DMA()
1342 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Receive_DMA()
1345 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1348 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive_DMA()
1366 HAL_StatusTypeDef HAL_IRDA_DMAPause(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAPause() argument
1369 __HAL_LOCK(hirda); in HAL_IRDA_DMAPause()
1371 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAPause()
1373 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAPause()
1376 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAPause()
1379 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAPause()
1381 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAPause()
1384 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAPause()
1385 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAPause()
1388 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAPause()
1393 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAPause()
1404 HAL_StatusTypeDef HAL_IRDA_DMAResume(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAResume() argument
1407 __HAL_LOCK(hirda); in HAL_IRDA_DMAResume()
1409 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAResume()
1412 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAResume()
1414 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAResume()
1417 __HAL_IRDA_CLEAR_OREFLAG(hirda); in HAL_IRDA_DMAResume()
1420 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_DMAResume()
1422 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAResume()
1424 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAResume()
1427 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAResume()
1431 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAResume()
1442 HAL_StatusTypeDef HAL_IRDA_DMAStop(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAStop() argument
1452 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAStop()
1454 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAStop()
1456 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAStop()
1459 if (hirda->hdmatx != NULL) in HAL_IRDA_DMAStop()
1461 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_DMAStop()
1463 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1466 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1473 IRDA_EndTxTransfer(hirda); in HAL_IRDA_DMAStop()
1478 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAStop()
1480 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAStop()
1482 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAStop()
1485 if (hirda->hdmarx != NULL) in HAL_IRDA_DMAStop()
1487 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_DMAStop()
1489 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1492 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1499 IRDA_EndRxTransfer(hirda); in HAL_IRDA_DMAStop()
1519 HAL_StatusTypeDef HAL_IRDA_Abort(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort() argument
1522 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | \ in HAL_IRDA_Abort()
1524 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort()
1527 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort()
1529 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort()
1532 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort()
1536 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1538 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort()
1540 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1543 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Abort()
1552 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort()
1554 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort()
1557 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort()
1561 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1563 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort()
1565 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1568 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Abort()
1577 hirda->TxXferCount = 0U; in HAL_IRDA_Abort()
1578 hirda->RxXferCount = 0U; in HAL_IRDA_Abort()
1581 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_Abort()
1584 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort()
1585 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort()
1588 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Abort()
1606 HAL_StatusTypeDef HAL_IRDA_AbortTransmit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmit() argument
1609 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit()
1612 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit()
1614 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit()
1617 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit()
1621 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_AbortTransmit()
1623 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit()
1625 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortTransmit()
1628 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortTransmit()
1637 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit()
1640 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit()
1658 HAL_StatusTypeDef HAL_IRDA_AbortReceive(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive() argument
1661 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive()
1662 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive()
1665 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive()
1667 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive()
1670 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive()
1674 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_AbortReceive()
1676 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive()
1678 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortReceive()
1681 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortReceive()
1690 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive()
1693 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive()
1696 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive()
1716 HAL_StatusTypeDef HAL_IRDA_Abort_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort_IT() argument
1721 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | \ in HAL_IRDA_Abort_IT()
1723 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort_IT()
1728 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1732 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1734 hirda->hdmatx->XferAbortCallback = IRDA_DMATxAbortCallback; in HAL_IRDA_Abort_IT()
1738 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1742 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1746 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1748 hirda->hdmarx->XferAbortCallback = IRDA_DMARxAbortCallback; in HAL_IRDA_Abort_IT()
1752 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1757 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1760 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort_IT()
1763 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1769 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort_IT()
1771 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1781 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1783 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort_IT()
1786 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1792 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort_IT()
1794 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1808 hirda->TxXferCount = 0U; in HAL_IRDA_Abort_IT()
1809 hirda->RxXferCount = 0U; in HAL_IRDA_Abort_IT()
1812 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Abort_IT()
1815 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_Abort_IT()
1818 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1819 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1824 hirda->AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1827 HAL_IRDA_AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1849 HAL_StatusTypeDef HAL_IRDA_AbortTransmit_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmit_IT() argument
1852 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit_IT()
1855 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit_IT()
1857 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit_IT()
1860 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit_IT()
1864 hirda->hdmatx->XferAbortCallback = IRDA_DMATxOnlyAbortCallback; in HAL_IRDA_AbortTransmit_IT()
1867 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit_IT()
1870 hirda->hdmatx->XferAbortCallback(hirda->hdmatx); in HAL_IRDA_AbortTransmit_IT()
1876 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit_IT()
1879 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit_IT()
1884 hirda->AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1887 HAL_IRDA_AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1894 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit_IT()
1897 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit_IT()
1902 hirda->AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1905 HAL_IRDA_AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1927 HAL_StatusTypeDef HAL_IRDA_AbortReceive_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive_IT() argument
1930 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive_IT()
1931 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive_IT()
1934 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive_IT()
1936 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive_IT()
1939 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive_IT()
1943 hirda->hdmarx->XferAbortCallback = IRDA_DMARxOnlyAbortCallback; in HAL_IRDA_AbortReceive_IT()
1946 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive_IT()
1949 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_AbortReceive_IT()
1955 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive_IT()
1958 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive_IT()
1961 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive_IT()
1966 hirda->AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1969 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()
2083 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_IRQHandler()
2085 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_IRQHandler()
2088 if (hirda->hdmarx != NULL) in HAL_IRDA_IRQHandler()
2092 hirda->hdmarx->XferAbortCallback = IRDA_DMAAbortOnError; in HAL_IRDA_IRQHandler()
2095 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_IRQHandler()
2098 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_IRQHandler()
2105 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2108 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2116 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2119 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2129 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2132 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2134 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_IRQHandler()
2144 IRDA_Transmit_IT(hirda); in HAL_IRDA_IRQHandler()
2151 IRDA_EndTransmit_IT(hirda); in HAL_IRDA_IRQHandler()
2163 __weak void HAL_IRDA_TxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxCpltCallback() argument
2166 UNUSED(hirda); in HAL_IRDA_TxCpltCallback()
2179 __weak void HAL_IRDA_TxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxHalfCpltCallback() argument
2182 UNUSED(hirda); in HAL_IRDA_TxHalfCpltCallback()
2195 __weak void HAL_IRDA_RxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxCpltCallback() argument
2198 UNUSED(hirda); in HAL_IRDA_RxCpltCallback()
2211 __weak void HAL_IRDA_RxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxHalfCpltCallback() argument
2214 UNUSED(hirda); in HAL_IRDA_RxHalfCpltCallback()
2227 __weak void HAL_IRDA_ErrorCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_ErrorCallback() argument
2230 UNUSED(hirda); in HAL_IRDA_ErrorCallback()
2243 __weak void HAL_IRDA_AbortCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortCpltCallback() argument
2246 UNUSED(hirda); in HAL_IRDA_AbortCpltCallback()
2259 __weak void HAL_IRDA_AbortTransmitCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmitCpltCallback() argument
2262 UNUSED(hirda); in HAL_IRDA_AbortTransmitCpltCallback()
2275 __weak void HAL_IRDA_AbortReceiveCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceiveCpltCallback() argument
2278 UNUSED(hirda); in HAL_IRDA_AbortReceiveCpltCallback()
2314 HAL_IRDA_StateTypeDef HAL_IRDA_GetState(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetState() argument
2319 temp1 = (uint32_t)hirda->gState; in HAL_IRDA_GetState()
2320 temp2 = (uint32_t)hirda->RxState; in HAL_IRDA_GetState()
2331 uint32_t HAL_IRDA_GetError(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetError() argument
2333 return hirda->ErrorCode; in HAL_IRDA_GetError()
2354 void IRDA_InitCallbacksToDefault(IRDA_HandleTypeDef *hirda) in IRDA_InitCallbacksToDefault() argument
2357hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2358hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in IRDA_InitCallbacksToDefault()
2359hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2360hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in IRDA_InitCallbacksToDefault()
2361hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in IRDA_InitCallbacksToDefault()
2362hirda->AbortCpltCallback = HAL_IRDA_AbortCpltCallback; /* Legacy weak AbortCpltCal… in IRDA_InitCallbacksToDefault()
2363hirda->AbortTransmitCpltCallback = HAL_IRDA_AbortTransmitCpltCallback; /* Legacy weak AbortTransmi… in IRDA_InitCallbacksToDefault()
2364hirda->AbortReceiveCpltCallback = HAL_IRDA_AbortReceiveCpltCallback; /* Legacy weak AbortReceive… in IRDA_InitCallbacksToDefault()
2375 static HAL_StatusTypeDef IRDA_SetConfig(IRDA_HandleTypeDef *hirda) in IRDA_SetConfig() argument
2384 assert_param(IS_IRDA_BAUDRATE(hirda->Init.BaudRate)); in IRDA_SetConfig()
2385 assert_param(IS_IRDA_WORD_LENGTH(hirda->Init.WordLength)); in IRDA_SetConfig()
2386 assert_param(IS_IRDA_PARITY(hirda->Init.Parity)); in IRDA_SetConfig()
2387 assert_param(IS_IRDA_TX_RX_MODE(hirda->Init.Mode)); in IRDA_SetConfig()
2388 assert_param(IS_IRDA_PRESCALER(hirda->Init.Prescaler)); in IRDA_SetConfig()
2389 assert_param(IS_IRDA_POWERMODE(hirda->Init.PowerMode)); in IRDA_SetConfig()
2390 assert_param(IS_IRDA_CLOCKPRESCALER(hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2397 tmpreg = (uint32_t)hirda->Init.WordLength | hirda->Init.Parity | hirda->Init.Mode ; in IRDA_SetConfig()
2399 MODIFY_REG(hirda->Instance->CR1, IRDA_CR1_FIELDS, tmpreg); in IRDA_SetConfig()
2402 MODIFY_REG(hirda->Instance->CR3, USART_CR3_IRLP, hirda->Init.PowerMode); in IRDA_SetConfig()
2407 MODIFY_REG(hirda->Instance->PRESC, USART_PRESC_PRESCALER, hirda->Init.ClockPrescaler); in IRDA_SetConfig()
2410 MODIFY_REG(hirda->Instance->GTPR, (uint16_t)USART_GTPR_PSC, (uint16_t)hirda->Init.Prescaler); in IRDA_SetConfig()
2413 IRDA_GETCLOCKSOURCE(hirda, clocksource); in IRDA_SetConfig()
2419 … tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate, hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2423 … tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate, hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2426 …tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(HSI_VALUE, hirda->Init.BaudRate, hirda->Init.ClockPrescale… in IRDA_SetConfig()
2430 … tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate, hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2433 …tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16((uint32_t)LSE_VALUE, hirda->Init.BaudRate, hirda->Init.Clo… in IRDA_SetConfig()
2443 hirda->Instance->BRR = (uint16_t)tmpreg; in IRDA_SetConfig()
2459 static HAL_StatusTypeDef IRDA_CheckIdleState(IRDA_HandleTypeDef *hirda) in IRDA_CheckIdleState() argument
2464 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_CheckIdleState()
2470 if ((hirda->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) in IRDA_CheckIdleState()
2473 …if (IRDA_WaitOnFlagUntilTimeout(hirda, USART_ISR_TEACK, RESET, tickstart, IRDA_TEACK_REACK_TIMEOUT… in IRDA_CheckIdleState()
2480 if ((hirda->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) in IRDA_CheckIdleState()
2483 …if (IRDA_WaitOnFlagUntilTimeout(hirda, USART_ISR_REACK, RESET, tickstart, IRDA_TEACK_REACK_TIMEOUT… in IRDA_CheckIdleState()
2491 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_CheckIdleState()
2492 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_CheckIdleState()
2495 __HAL_UNLOCK(hirda); in IRDA_CheckIdleState()
2511 static HAL_StatusTypeDef IRDA_WaitOnFlagUntilTimeout(IRDA_HandleTypeDef *hirda, uint32_t Flag, Flag… in IRDA_WaitOnFlagUntilTimeout() argument
2515 while ((__HAL_IRDA_GET_FLAG(hirda, Flag) ? SET : RESET) == Status) in IRDA_WaitOnFlagUntilTimeout()
2524 …CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFNF… in IRDA_WaitOnFlagUntilTimeout()
2525 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_WaitOnFlagUntilTimeout()
2527 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_WaitOnFlagUntilTimeout()
2528 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_WaitOnFlagUntilTimeout()
2531 __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()
2581 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitCplt() local
2586 hirda->TxXferCount = 0U; in IRDA_DMATransmitCplt()
2590 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in IRDA_DMATransmitCplt()
2593 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_DMATransmitCplt()
2600 hirda->TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2603 HAL_IRDA_TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2617 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitHalfCplt() local
2621 hirda->TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2624 HAL_IRDA_TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2636 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveCplt() local
2641 hirda->RxXferCount = 0U; in IRDA_DMAReceiveCplt()
2644 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in IRDA_DMAReceiveCplt()
2645 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_DMAReceiveCplt()
2649 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in IRDA_DMAReceiveCplt()
2652 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMAReceiveCplt()
2657 hirda->RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2660 HAL_IRDA_RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2672 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveHalfCplt() local
2676 hirda->RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2679 HAL_IRDA_RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2691 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAError() local
2694 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_DMAError()
2696 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in IRDA_DMAError()
2698 hirda->TxXferCount = 0U; in IRDA_DMAError()
2699 IRDA_EndTxTransfer(hirda); in IRDA_DMAError()
2704 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_DMAError()
2706 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in IRDA_DMAError()
2708 hirda->RxXferCount = 0U; in IRDA_DMAError()
2709 IRDA_EndRxTransfer(hirda); in IRDA_DMAError()
2713 hirda->ErrorCode |= HAL_IRDA_ERROR_DMA; in IRDA_DMAError()
2716 hirda->ErrorCallback(hirda); in IRDA_DMAError()
2719 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAError()
2731 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAAbortOnError() local
2732 hirda->RxXferCount = 0U; in IRDA_DMAAbortOnError()
2733 hirda->TxXferCount = 0U; in IRDA_DMAAbortOnError()
2737 hirda->ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2740 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2754 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxAbortCallback() local
2756 hirda->hdmatx->XferAbortCallback = NULL; in IRDA_DMATxAbortCallback()
2759 if (hirda->hdmarx != NULL) in IRDA_DMATxAbortCallback()
2761 if (hirda->hdmarx->XferAbortCallback != NULL) in IRDA_DMATxAbortCallback()
2768 hirda->TxXferCount = 0U; in IRDA_DMATxAbortCallback()
2769 hirda->RxXferCount = 0U; in IRDA_DMATxAbortCallback()
2772 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMATxAbortCallback()
2775 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMATxAbortCallback()
2778 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2779 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2784 hirda->AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2787 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2802 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMARxAbortCallback() local
2804 hirda->hdmarx->XferAbortCallback = NULL; in IRDA_DMARxAbortCallback()
2807 if (hirda->hdmatx != NULL) in IRDA_DMARxAbortCallback()
2809 if (hirda->hdmatx->XferAbortCallback != NULL) in IRDA_DMARxAbortCallback()
2816 hirda->TxXferCount = 0U; in IRDA_DMARxAbortCallback()
2817 hirda->RxXferCount = 0U; in IRDA_DMARxAbortCallback()
2820 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMARxAbortCallback()
2823 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxAbortCallback()
2826 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2827 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2832 hirda->AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2835 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2850 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxOnlyAbortCallback() local
2852 hirda->TxXferCount = 0U; in IRDA_DMATxOnlyAbortCallback()
2855 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxOnlyAbortCallback()
2860 hirda->AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2863 HAL_IRDA_AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2877 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in IRDA_DMARxOnlyAbortCallback() local
2879 hirda->RxXferCount = 0U; in IRDA_DMARxOnlyAbortCallback()
2882 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxOnlyAbortCallback()
2885 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxOnlyAbortCallback()
2890 hirda->AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2893 HAL_IRDA_AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2905 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_Transmit_IT() argument
2910 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_Transmit_IT()
2912 if (hirda->TxXferCount == 0U) in IRDA_Transmit_IT()
2915 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in IRDA_Transmit_IT()
2918 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_Transmit_IT()
2922 … if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Transmit_IT()
2924 tmp = (const uint16_t *) hirda->pTxBuffPtr; /* Derogation R.11.3 */ in IRDA_Transmit_IT()
2925 hirda->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in IRDA_Transmit_IT()
2926 hirda->pTxBuffPtr += 2U; in IRDA_Transmit_IT()
2930 hirda->Instance->TDR = (uint8_t)(*hirda->pTxBuffPtr & 0xFFU); in IRDA_Transmit_IT()
2931 hirda->pTxBuffPtr++; in IRDA_Transmit_IT()
2933 hirda->TxXferCount--; in IRDA_Transmit_IT()
2944 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_EndTransmit_IT() argument
2947 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_EndTransmit_IT()
2950 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_EndTransmit_IT()
2954 hirda->TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2957 HAL_IRDA_TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2969 static void IRDA_Receive_IT(IRDA_HandleTypeDef *hirda) in IRDA_Receive_IT() argument
2972 uint16_t uhMask = hirda->Mask; in IRDA_Receive_IT()
2976 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_Receive_IT()
2978 uhdata = (uint16_t) READ_REG(hirda->Instance->RDR); in IRDA_Receive_IT()
2979 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Receive_IT()
2981 tmp = (uint16_t *) hirda->pRxBuffPtr; /* Derogation R.11.3 */ in IRDA_Receive_IT()
2983 hirda->pRxBuffPtr += 2U; in IRDA_Receive_IT()
2987 *hirda->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask); in IRDA_Receive_IT()
2988 hirda->pRxBuffPtr++; in IRDA_Receive_IT()
2991 hirda->RxXferCount--; in IRDA_Receive_IT()
2992 if (hirda->RxXferCount == 0U) in IRDA_Receive_IT()
2995 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in IRDA_Receive_IT()
2998 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_Receive_IT()
3001 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_Receive_IT()
3005 hirda->RxCpltCallback(hirda); in IRDA_Receive_IT()
3008 HAL_IRDA_RxCpltCallback(hirda); in IRDA_Receive_IT()
3015 __HAL_IRDA_SEND_REQ(hirda, IRDA_RXDATA_FLUSH_REQUEST); in IRDA_Receive_IT()