Lines Matching refs:hirda

250 void IRDA_InitCallbacksToDefault(IRDA_HandleTypeDef *hirda);
252 static HAL_StatusTypeDef IRDA_SetConfig(IRDA_HandleTypeDef *hirda);
253 static HAL_StatusTypeDef IRDA_CheckIdleState(IRDA_HandleTypeDef *hirda);
254 static HAL_StatusTypeDef IRDA_WaitOnFlagUntilTimeout(IRDA_HandleTypeDef *hirda, uint32_t Flag, Flag…
256 static void IRDA_EndTxTransfer(IRDA_HandleTypeDef *hirda);
257 static void IRDA_EndRxTransfer(IRDA_HandleTypeDef *hirda);
268 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda);
269 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda);
270 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()
621hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltC… in HAL_IRDA_UnRegisterCallback()
625hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in HAL_IRDA_UnRegisterCallback()
629hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in HAL_IRDA_UnRegisterCallback()
633hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in HAL_IRDA_UnRegisterCallback()
637hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in HAL_IRDA_UnRegisterCallback()
641hirda->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()
655hirda->MspInitCallback = HAL_IRDA_MspInit; /* Legacy weak MspInitCallb… in HAL_IRDA_UnRegisterCallback()
659hirda->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()
806 HAL_StatusTypeDef HAL_IRDA_Transmit(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size,… in HAL_IRDA_Transmit() argument
813 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit()
821 __HAL_LOCK(hirda); in HAL_IRDA_Transmit()
823 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit()
824 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit()
829 hirda->TxXferSize = Size; in HAL_IRDA_Transmit()
830 hirda->TxXferCount = Size; in HAL_IRDA_Transmit()
833 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit()
844 while (hirda->TxXferCount > 0U) in HAL_IRDA_Transmit()
846 hirda->TxXferCount--; in HAL_IRDA_Transmit()
848 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
854 hirda->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU); in HAL_IRDA_Transmit()
859 hirda->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU); in HAL_IRDA_Transmit()
864 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
870 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit()
873 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit()
895 HAL_StatusTypeDef HAL_IRDA_Receive(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size, uint32… in HAL_IRDA_Receive() argument
903 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive()
911 __HAL_LOCK(hirda); in HAL_IRDA_Receive()
913 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive()
914 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive()
919 hirda->RxXferSize = Size; in HAL_IRDA_Receive()
920 hirda->RxXferCount = Size; in HAL_IRDA_Receive()
924 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive()
925 uhMask = hirda->Mask; in HAL_IRDA_Receive()
928 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive()
940 while (hirda->RxXferCount > 0U) in HAL_IRDA_Receive()
942 hirda->RxXferCount--; in HAL_IRDA_Receive()
944 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Receive()
950 *pdata16bits = (uint16_t)(hirda->Instance->RDR & uhMask); in HAL_IRDA_Receive()
955 *pdata8bits = (uint8_t)(hirda->Instance->RDR & (uint8_t)uhMask); in HAL_IRDA_Receive()
961 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive()
964 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive()
985 HAL_StatusTypeDef HAL_IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Si… in HAL_IRDA_Transmit_IT() argument
988 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit_IT()
996 __HAL_LOCK(hirda); in HAL_IRDA_Transmit_IT()
998 hirda->pTxBuffPtr = pData; in HAL_IRDA_Transmit_IT()
999 hirda->TxXferSize = Size; in HAL_IRDA_Transmit_IT()
1000 hirda->TxXferCount = Size; in HAL_IRDA_Transmit_IT()
1002 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit_IT()
1003 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit_IT()
1006 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_IT()
1010 SET_BIT(hirda->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in HAL_IRDA_Transmit_IT()
1012 SET_BIT(hirda->Instance->CR1, USART_CR1_TXEIE); in HAL_IRDA_Transmit_IT()
1034 HAL_StatusTypeDef HAL_IRDA_Receive_IT(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_IT() argument
1037 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_IT()
1045 __HAL_LOCK(hirda); in HAL_IRDA_Receive_IT()
1047 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_IT()
1048 hirda->RxXferSize = Size; in HAL_IRDA_Receive_IT()
1049 hirda->RxXferCount = Size; in HAL_IRDA_Receive_IT()
1053 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive_IT()
1055 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_IT()
1056 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_IT()
1059 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_IT()
1062 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_IT()
1065 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); in HAL_IRDA_Receive_IT()
1070 SET_BIT(hirda->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in HAL_IRDA_Receive_IT()
1073 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_IT()
1076 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE); in HAL_IRDA_Receive_IT()
1081 SET_BIT(hirda->Instance->CR1, USART_CR1_RXNEIE); in HAL_IRDA_Receive_IT()
1086 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_IT()
1107 HAL_StatusTypeDef HAL_IRDA_Transmit_DMA(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t S… in HAL_IRDA_Transmit_DMA() argument
1110 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit_DMA()
1118 __HAL_LOCK(hirda); in HAL_IRDA_Transmit_DMA()
1120 hirda->pTxBuffPtr = pData; in HAL_IRDA_Transmit_DMA()
1121 hirda->TxXferSize = Size; in HAL_IRDA_Transmit_DMA()
1122 hirda->TxXferCount = Size; in HAL_IRDA_Transmit_DMA()
1124 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit_DMA()
1125 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit_DMA()
1128 hirda->hdmatx->XferCpltCallback = IRDA_DMATransmitCplt; in HAL_IRDA_Transmit_DMA()
1131 hirda->hdmatx->XferHalfCpltCallback = IRDA_DMATransmitHalfCplt; in HAL_IRDA_Transmit_DMA()
1134 hirda->hdmatx->XferErrorCallback = IRDA_DMAError; in HAL_IRDA_Transmit_DMA()
1137 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Transmit_DMA()
1140 …if (HAL_DMA_Start_IT(hirda->hdmatx, (uint32_t)hirda->pTxBuffPtr, (uint32_t)&hirda->Instance->TDR, … in HAL_IRDA_Transmit_DMA()
1143 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_TCF); in HAL_IRDA_Transmit_DMA()
1146 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1150 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Transmit_DMA()
1157 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Transmit_DMA()
1160 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1163 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit_DMA()
1187 HAL_StatusTypeDef HAL_IRDA_Receive_DMA(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_DMA() argument
1190 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_DMA()
1198 __HAL_LOCK(hirda); in HAL_IRDA_Receive_DMA()
1200 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_DMA()
1201 hirda->RxXferSize = Size; in HAL_IRDA_Receive_DMA()
1203 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_DMA()
1204 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_DMA()
1207 hirda->hdmarx->XferCpltCallback = IRDA_DMAReceiveCplt; in HAL_IRDA_Receive_DMA()
1210 hirda->hdmarx->XferHalfCpltCallback = IRDA_DMAReceiveHalfCplt; in HAL_IRDA_Receive_DMA()
1213 hirda->hdmarx->XferErrorCallback = IRDA_DMAError; in HAL_IRDA_Receive_DMA()
1216 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Receive_DMA()
1219 …if (HAL_DMA_Start_IT(hirda->hdmarx, (uint32_t)&hirda->Instance->RDR, (uint32_t)hirda->pRxBuffPtr, … in HAL_IRDA_Receive_DMA()
1222 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1224 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_DMA()
1227 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_Receive_DMA()
1231 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_DMA()
1235 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Receive_DMA()
1242 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Receive_DMA()
1245 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1248 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive_DMA()
1266 HAL_StatusTypeDef HAL_IRDA_DMAPause(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAPause() argument
1269 __HAL_LOCK(hirda); in HAL_IRDA_DMAPause()
1271 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAPause()
1273 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAPause()
1276 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAPause()
1279 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAPause()
1281 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAPause()
1284 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAPause()
1285 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAPause()
1288 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAPause()
1293 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAPause()
1304 HAL_StatusTypeDef HAL_IRDA_DMAResume(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAResume() argument
1307 __HAL_LOCK(hirda); in HAL_IRDA_DMAResume()
1309 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAResume()
1312 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAResume()
1314 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAResume()
1317 __HAL_IRDA_CLEAR_OREFLAG(hirda); in HAL_IRDA_DMAResume()
1320 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_DMAResume()
1322 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAResume()
1324 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAResume()
1327 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAResume()
1331 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAResume()
1342 HAL_StatusTypeDef HAL_IRDA_DMAStop(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAStop() argument
1352 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAStop()
1354 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAStop()
1356 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAStop()
1359 if (hirda->hdmatx != NULL) in HAL_IRDA_DMAStop()
1361 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_DMAStop()
1363 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1366 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1373 IRDA_EndTxTransfer(hirda); in HAL_IRDA_DMAStop()
1378 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAStop()
1380 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAStop()
1382 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAStop()
1385 if (hirda->hdmarx != NULL) in HAL_IRDA_DMAStop()
1387 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_DMAStop()
1389 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1392 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1399 IRDA_EndRxTransfer(hirda); in HAL_IRDA_DMAStop()
1419 HAL_StatusTypeDef HAL_IRDA_Abort(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort() argument
1423 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | \ in HAL_IRDA_Abort()
1426 …CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_T… in HAL_IRDA_Abort()
1428 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort()
1431 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort()
1433 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort()
1436 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort()
1440 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1442 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort()
1444 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1447 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Abort()
1456 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort()
1458 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort()
1461 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort()
1465 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1467 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort()
1469 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1472 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Abort()
1481 hirda->TxXferCount = 0U; in HAL_IRDA_Abort()
1482 hirda->RxXferCount = 0U; in HAL_IRDA_Abort()
1485 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_Abort()
1488 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort()
1489 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort()
1492 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Abort()
1510 HAL_StatusTypeDef HAL_IRDA_AbortTransmit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmit() argument
1514 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit()
1516 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit()
1520 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit()
1522 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit()
1525 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit()
1529 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_AbortTransmit()
1531 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit()
1533 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortTransmit()
1536 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortTransmit()
1545 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit()
1548 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit()
1566 HAL_StatusTypeDef HAL_IRDA_AbortReceive(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive() argument
1570 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive()
1572 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive()
1574 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive()
1577 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive()
1579 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive()
1582 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive()
1586 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_AbortReceive()
1588 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive()
1590 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortReceive()
1593 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortReceive()
1602 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive()
1605 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive()
1608 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive()
1628 HAL_StatusTypeDef HAL_IRDA_Abort_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort_IT() argument
1634 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | \ in HAL_IRDA_Abort_IT()
1637 …CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_T… in HAL_IRDA_Abort_IT()
1639 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort_IT()
1644 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1648 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1650 hirda->hdmatx->XferAbortCallback = IRDA_DMATxAbortCallback; in HAL_IRDA_Abort_IT()
1654 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1658 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1662 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1664 hirda->hdmarx->XferAbortCallback = IRDA_DMARxAbortCallback; in HAL_IRDA_Abort_IT()
1668 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1673 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1676 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort_IT()
1679 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1685 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort_IT()
1687 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1697 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1699 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort_IT()
1702 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1708 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort_IT()
1710 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1724 hirda->TxXferCount = 0U; in HAL_IRDA_Abort_IT()
1725 hirda->RxXferCount = 0U; in HAL_IRDA_Abort_IT()
1728 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Abort_IT()
1731 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_Abort_IT()
1734 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1735 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1740 hirda->AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1743 HAL_IRDA_AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1765 HAL_StatusTypeDef HAL_IRDA_AbortTransmit_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmit_IT() argument
1769 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit_IT()
1771 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit_IT()
1775 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit_IT()
1777 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit_IT()
1780 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit_IT()
1784 hirda->hdmatx->XferAbortCallback = IRDA_DMATxOnlyAbortCallback; in HAL_IRDA_AbortTransmit_IT()
1787 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit_IT()
1790 hirda->hdmatx->XferAbortCallback(hirda->hdmatx); in HAL_IRDA_AbortTransmit_IT()
1796 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit_IT()
1799 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit_IT()
1804 hirda->AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1807 HAL_IRDA_AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1814 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit_IT()
1817 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit_IT()
1822 hirda->AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1825 HAL_IRDA_AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1847 HAL_StatusTypeDef HAL_IRDA_AbortReceive_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive_IT() argument
1851 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive_IT()
1853 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive_IT()
1855 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive_IT()
1858 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive_IT()
1860 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive_IT()
1863 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive_IT()
1867 hirda->hdmarx->XferAbortCallback = IRDA_DMARxOnlyAbortCallback; in HAL_IRDA_AbortReceive_IT()
1870 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive_IT()
1873 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_AbortReceive_IT()
1879 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive_IT()
1882 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive_IT()
1885 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive_IT()
1890 hirda->AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1893 HAL_IRDA_AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1900 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive_IT()
1903 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive_IT()
1906 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive_IT()
1911 hirda->AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1914 HAL_IRDA_AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1927 void HAL_IRDA_IRQHandler(IRDA_HandleTypeDef *hirda) in HAL_IRDA_IRQHandler() argument
1929 uint32_t isrflags = READ_REG(hirda->Instance->ISR); in HAL_IRDA_IRQHandler()
1930 uint32_t cr1its = READ_REG(hirda->Instance->CR1); in HAL_IRDA_IRQHandler()
1946 IRDA_Receive_IT(hirda); in HAL_IRDA_IRQHandler()
1952 cr3its = READ_REG(hirda->Instance->CR3); in HAL_IRDA_IRQHandler()
1964 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_PEF); in HAL_IRDA_IRQHandler()
1966 hirda->ErrorCode |= HAL_IRDA_ERROR_PE; in HAL_IRDA_IRQHandler()
1972 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_FEF); in HAL_IRDA_IRQHandler()
1974 hirda->ErrorCode |= HAL_IRDA_ERROR_FE; in HAL_IRDA_IRQHandler()
1980 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_NEF); in HAL_IRDA_IRQHandler()
1982 hirda->ErrorCode |= HAL_IRDA_ERROR_NE; in HAL_IRDA_IRQHandler()
1993 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_OREF); in HAL_IRDA_IRQHandler()
1995 hirda->ErrorCode |= HAL_IRDA_ERROR_ORE; in HAL_IRDA_IRQHandler()
1999 if (hirda->ErrorCode != HAL_IRDA_ERROR_NONE) in HAL_IRDA_IRQHandler()
2008 IRDA_Receive_IT(hirda); in HAL_IRDA_IRQHandler()
2013 errorcode = hirda->ErrorCode; in HAL_IRDA_IRQHandler()
2014 if ((HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) || in HAL_IRDA_IRQHandler()
2020 IRDA_EndRxTransfer(hirda); in HAL_IRDA_IRQHandler()
2023 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_IRQHandler()
2025 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_IRQHandler()
2028 if (hirda->hdmarx != NULL) in HAL_IRDA_IRQHandler()
2032 hirda->hdmarx->XferAbortCallback = IRDA_DMAAbortOnError; in HAL_IRDA_IRQHandler()
2035 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_IRQHandler()
2038 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_IRQHandler()
2045 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2048 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2056 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2059 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2069 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2072 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2074 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_IRQHandler()
2088 IRDA_Transmit_IT(hirda); in HAL_IRDA_IRQHandler()
2095 IRDA_EndTransmit_IT(hirda); in HAL_IRDA_IRQHandler()
2107 __weak void HAL_IRDA_TxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxCpltCallback() argument
2110 UNUSED(hirda); in HAL_IRDA_TxCpltCallback()
2123 __weak void HAL_IRDA_TxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxHalfCpltCallback() argument
2126 UNUSED(hirda); in HAL_IRDA_TxHalfCpltCallback()
2139 __weak void HAL_IRDA_RxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxCpltCallback() argument
2142 UNUSED(hirda); in HAL_IRDA_RxCpltCallback()
2155 __weak void HAL_IRDA_RxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxHalfCpltCallback() argument
2158 UNUSED(hirda); in HAL_IRDA_RxHalfCpltCallback()
2171 __weak void HAL_IRDA_ErrorCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_ErrorCallback() argument
2174 UNUSED(hirda); in HAL_IRDA_ErrorCallback()
2187 __weak void HAL_IRDA_AbortCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortCpltCallback() argument
2190 UNUSED(hirda); in HAL_IRDA_AbortCpltCallback()
2203 __weak void HAL_IRDA_AbortTransmitCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmitCpltCallback() argument
2206 UNUSED(hirda); in HAL_IRDA_AbortTransmitCpltCallback()
2219 __weak void HAL_IRDA_AbortReceiveCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceiveCpltCallback() argument
2222 UNUSED(hirda); in HAL_IRDA_AbortReceiveCpltCallback()
2258 HAL_IRDA_StateTypeDef HAL_IRDA_GetState(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetState() argument
2263 temp1 = (uint32_t)hirda->gState; in HAL_IRDA_GetState()
2264 temp2 = (uint32_t)hirda->RxState; in HAL_IRDA_GetState()
2275 uint32_t HAL_IRDA_GetError(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetError() argument
2277 return hirda->ErrorCode; in HAL_IRDA_GetError()
2298 void IRDA_InitCallbacksToDefault(IRDA_HandleTypeDef *hirda) in IRDA_InitCallbacksToDefault() argument
2301hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2302hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in IRDA_InitCallbacksToDefault()
2303hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2304hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in IRDA_InitCallbacksToDefault()
2305hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in IRDA_InitCallbacksToDefault()
2306hirda->AbortCpltCallback = HAL_IRDA_AbortCpltCallback; /* Legacy weak AbortCpltCal… in IRDA_InitCallbacksToDefault()
2307hirda->AbortTransmitCpltCallback = HAL_IRDA_AbortTransmitCpltCallback; /* Legacy weak AbortTransmi… in IRDA_InitCallbacksToDefault()
2308hirda->AbortReceiveCpltCallback = HAL_IRDA_AbortReceiveCpltCallback; /* Legacy weak AbortReceive… in IRDA_InitCallbacksToDefault()
2319 static HAL_StatusTypeDef IRDA_SetConfig(IRDA_HandleTypeDef *hirda) in IRDA_SetConfig() argument
2330 assert_param(IS_IRDA_BAUDRATE(hirda->Init.BaudRate)); in IRDA_SetConfig()
2331 assert_param(IS_IRDA_WORD_LENGTH(hirda->Init.WordLength)); in IRDA_SetConfig()
2332 assert_param(IS_IRDA_PARITY(hirda->Init.Parity)); in IRDA_SetConfig()
2333 assert_param(IS_IRDA_TX_RX_MODE(hirda->Init.Mode)); in IRDA_SetConfig()
2334 assert_param(IS_IRDA_PRESCALER(hirda->Init.Prescaler)); in IRDA_SetConfig()
2335 assert_param(IS_IRDA_POWERMODE(hirda->Init.PowerMode)); in IRDA_SetConfig()
2337 assert_param(IS_IRDA_CLOCKPRESCALER(hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2345 tmpreg = (uint32_t)hirda->Init.WordLength | hirda->Init.Parity | hirda->Init.Mode ; in IRDA_SetConfig()
2347 MODIFY_REG(hirda->Instance->CR1, IRDA_CR1_FIELDS, tmpreg); in IRDA_SetConfig()
2350 MODIFY_REG(hirda->Instance->CR3, USART_CR3_IRLP, hirda->Init.PowerMode); in IRDA_SetConfig()
2356 MODIFY_REG(hirda->Instance->PRESC, USART_PRESC_PRESCALER, hirda->Init.ClockPrescaler); in IRDA_SetConfig()
2360 MODIFY_REG(hirda->Instance->GTPR, (uint16_t)USART_GTPR_PSC, (uint16_t)hirda->Init.Prescaler); in IRDA_SetConfig()
2363 IRDA_GETCLOCKSOURCE(hirda, clocksource); in IRDA_SetConfig()
2370 … tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate, hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2372 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate)); in IRDA_SetConfig()
2378 … tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate, hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2380 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate)); in IRDA_SetConfig()
2385 …tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(HSI_VALUE, hirda->Init.BaudRate, hirda->Init.ClockPrescale… in IRDA_SetConfig()
2387 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(HSI_VALUE, hirda->Init.BaudRate)); in IRDA_SetConfig()
2393 … tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate, hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2395 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate)); in IRDA_SetConfig()
2400 …tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16((uint32_t)LSE_VALUE, hirda->Init.BaudRate, hirda->Init.Clo… in IRDA_SetConfig()
2402 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16((uint32_t)LSE_VALUE, hirda->Init.BaudRate)); in IRDA_SetConfig()
2413 hirda->Instance->BRR = (uint16_t)tmpreg; in IRDA_SetConfig()
2429 static HAL_StatusTypeDef IRDA_CheckIdleState(IRDA_HandleTypeDef *hirda) in IRDA_CheckIdleState() argument
2434 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_CheckIdleState()
2440 if ((hirda->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) in IRDA_CheckIdleState()
2443 …if (IRDA_WaitOnFlagUntilTimeout(hirda, USART_ISR_TEACK, RESET, tickstart, IRDA_TEACK_REACK_TIMEOUT… in IRDA_CheckIdleState()
2450 if ((hirda->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) in IRDA_CheckIdleState()
2453 …if (IRDA_WaitOnFlagUntilTimeout(hirda, USART_ISR_REACK, RESET, tickstart, IRDA_TEACK_REACK_TIMEOUT… in IRDA_CheckIdleState()
2461 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_CheckIdleState()
2462 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_CheckIdleState()
2465 __HAL_UNLOCK(hirda); in IRDA_CheckIdleState()
2481 static HAL_StatusTypeDef IRDA_WaitOnFlagUntilTimeout(IRDA_HandleTypeDef *hirda, uint32_t Flag, Flag… in IRDA_WaitOnFlagUntilTimeout() argument
2485 while ((__HAL_IRDA_GET_FLAG(hirda, Flag) ? SET : RESET) == Status) in IRDA_WaitOnFlagUntilTimeout()
2495 …CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFNF… in IRDA_WaitOnFlagUntilTimeout()
2497 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE)); in IRDA_WaitOnFlagUntilTimeout()
2499 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_WaitOnFlagUntilTimeout()
2501 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_WaitOnFlagUntilTimeout()
2502 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_WaitOnFlagUntilTimeout()
2505 __HAL_UNLOCK(hirda); in IRDA_WaitOnFlagUntilTimeout()
2520 static void IRDA_EndTxTransfer(IRDA_HandleTypeDef *hirda) in IRDA_EndTxTransfer() argument
2524 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in IRDA_EndTxTransfer()
2526 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in IRDA_EndTxTransfer()
2530 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_EndTxTransfer()
2539 static void IRDA_EndRxTransfer(IRDA_HandleTypeDef *hirda) in IRDA_EndRxTransfer() argument
2543 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in IRDA_EndRxTransfer()
2545 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in IRDA_EndRxTransfer()
2547 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_EndRxTransfer()
2550 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_EndRxTransfer()
2562 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitCplt() local
2567 hirda->TxXferCount = 0U; in IRDA_DMATransmitCplt()
2571 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in IRDA_DMATransmitCplt()
2574 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_DMATransmitCplt()
2581 hirda->TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2584 HAL_IRDA_TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2598 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitHalfCplt() local
2602 hirda->TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2605 HAL_IRDA_TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2617 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveCplt() local
2622 hirda->RxXferCount = 0U; in IRDA_DMAReceiveCplt()
2625 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in IRDA_DMAReceiveCplt()
2626 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_DMAReceiveCplt()
2630 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in IRDA_DMAReceiveCplt()
2633 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMAReceiveCplt()
2638 hirda->RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2641 HAL_IRDA_RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2653 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveHalfCplt() local
2657 hirda->RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2660 HAL_IRDA_RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2672 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAError() local
2675 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_DMAError()
2677 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in IRDA_DMAError()
2679 hirda->TxXferCount = 0U; in IRDA_DMAError()
2680 IRDA_EndTxTransfer(hirda); in IRDA_DMAError()
2685 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_DMAError()
2687 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in IRDA_DMAError()
2689 hirda->RxXferCount = 0U; in IRDA_DMAError()
2690 IRDA_EndRxTransfer(hirda); in IRDA_DMAError()
2694 hirda->ErrorCode |= HAL_IRDA_ERROR_DMA; in IRDA_DMAError()
2697 hirda->ErrorCallback(hirda); in IRDA_DMAError()
2700 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAError()
2712 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAAbortOnError() local
2713 hirda->RxXferCount = 0U; in IRDA_DMAAbortOnError()
2714 hirda->TxXferCount = 0U; in IRDA_DMAAbortOnError()
2718 hirda->ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2721 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2735 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxAbortCallback() local
2737 hirda->hdmatx->XferAbortCallback = NULL; in IRDA_DMATxAbortCallback()
2740 if (hirda->hdmarx != NULL) in IRDA_DMATxAbortCallback()
2742 if (hirda->hdmarx->XferAbortCallback != NULL) in IRDA_DMATxAbortCallback()
2749 hirda->TxXferCount = 0U; in IRDA_DMATxAbortCallback()
2750 hirda->RxXferCount = 0U; in IRDA_DMATxAbortCallback()
2753 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMATxAbortCallback()
2756 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMATxAbortCallback()
2759 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2760 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2765 hirda->AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2768 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2783 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMARxAbortCallback() local
2785 hirda->hdmarx->XferAbortCallback = NULL; in IRDA_DMARxAbortCallback()
2788 if (hirda->hdmatx != NULL) in IRDA_DMARxAbortCallback()
2790 if (hirda->hdmatx->XferAbortCallback != NULL) in IRDA_DMARxAbortCallback()
2797 hirda->TxXferCount = 0U; in IRDA_DMARxAbortCallback()
2798 hirda->RxXferCount = 0U; in IRDA_DMARxAbortCallback()
2801 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMARxAbortCallback()
2804 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxAbortCallback()
2807 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2808 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2813 hirda->AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2816 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2831 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxOnlyAbortCallback() local
2833 hirda->TxXferCount = 0U; in IRDA_DMATxOnlyAbortCallback()
2836 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxOnlyAbortCallback()
2841 hirda->AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2844 HAL_IRDA_AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2858 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in IRDA_DMARxOnlyAbortCallback() local
2860 hirda->RxXferCount = 0U; in IRDA_DMARxOnlyAbortCallback()
2863 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxOnlyAbortCallback()
2866 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxOnlyAbortCallback()
2871 hirda->AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2874 HAL_IRDA_AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2886 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_Transmit_IT() argument
2891 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_Transmit_IT()
2893 if (hirda->TxXferCount == 0U) in IRDA_Transmit_IT()
2897 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in IRDA_Transmit_IT()
2899 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TXEIE); in IRDA_Transmit_IT()
2903 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_Transmit_IT()
2907 … if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Transmit_IT()
2909 tmp = (const uint16_t *) hirda->pTxBuffPtr; /* Derogation R.11.3 */ in IRDA_Transmit_IT()
2910 hirda->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in IRDA_Transmit_IT()
2911 hirda->pTxBuffPtr += 2U; in IRDA_Transmit_IT()
2915 hirda->Instance->TDR = (uint8_t)(*hirda->pTxBuffPtr & 0xFFU); in IRDA_Transmit_IT()
2916 hirda->pTxBuffPtr++; in IRDA_Transmit_IT()
2918 hirda->TxXferCount--; in IRDA_Transmit_IT()
2929 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_EndTransmit_IT() argument
2932 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_EndTransmit_IT()
2935 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_EndTransmit_IT()
2939 hirda->TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2942 HAL_IRDA_TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2954 static void IRDA_Receive_IT(IRDA_HandleTypeDef *hirda) in IRDA_Receive_IT() argument
2957 uint16_t uhMask = hirda->Mask; in IRDA_Receive_IT()
2961 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_Receive_IT()
2963 uhdata = (uint16_t) READ_REG(hirda->Instance->RDR); in IRDA_Receive_IT()
2964 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Receive_IT()
2966 tmp = (uint16_t *) hirda->pRxBuffPtr; /* Derogation R.11.3 */ in IRDA_Receive_IT()
2968 hirda->pRxBuffPtr += 2U; in IRDA_Receive_IT()
2972 *hirda->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask); in IRDA_Receive_IT()
2973 hirda->pRxBuffPtr++; in IRDA_Receive_IT()
2976 hirda->RxXferCount--; in IRDA_Receive_IT()
2977 if (hirda->RxXferCount == 0U) in IRDA_Receive_IT()
2981 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in IRDA_Receive_IT()
2983 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in IRDA_Receive_IT()
2987 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_Receive_IT()
2990 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_Receive_IT()
2994 hirda->RxCpltCallback(hirda); in IRDA_Receive_IT()
2997 HAL_IRDA_RxCpltCallback(hirda); in IRDA_Receive_IT()
3004 __HAL_IRDA_SEND_REQ(hirda, IRDA_RXDATA_FLUSH_REQUEST); in IRDA_Receive_IT()