Lines Matching refs:hirda

240 void IRDA_InitCallbacksToDefault(IRDA_HandleTypeDef *hirda);
242 static HAL_StatusTypeDef IRDA_SetConfig(IRDA_HandleTypeDef *hirda);
243 static HAL_StatusTypeDef IRDA_CheckIdleState(IRDA_HandleTypeDef *hirda);
244 static HAL_StatusTypeDef IRDA_WaitOnFlagUntilTimeout(IRDA_HandleTypeDef *hirda, uint32_t Flag, Flag…
246 static void IRDA_EndTxTransfer(IRDA_HandleTypeDef *hirda);
247 static void IRDA_EndRxTransfer(IRDA_HandleTypeDef *hirda);
258 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda);
259 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda);
260 static void IRDA_Receive_IT(IRDA_HandleTypeDef *hirda);
327 HAL_StatusTypeDef HAL_IRDA_Init(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Init() argument
330 if (hirda == NULL) in HAL_IRDA_Init()
336 assert_param(IS_IRDA_INSTANCE(hirda->Instance)); in HAL_IRDA_Init()
338 if (hirda->gState == HAL_IRDA_STATE_RESET) in HAL_IRDA_Init()
341 hirda->Lock = HAL_UNLOCKED; in HAL_IRDA_Init()
344 IRDA_InitCallbacksToDefault(hirda); in HAL_IRDA_Init()
346 if (hirda->MspInitCallback == NULL) in HAL_IRDA_Init()
348 hirda->MspInitCallback = HAL_IRDA_MspInit; in HAL_IRDA_Init()
352 hirda->MspInitCallback(hirda); in HAL_IRDA_Init()
355 HAL_IRDA_MspInit(hirda); in HAL_IRDA_Init()
359 hirda->gState = HAL_IRDA_STATE_BUSY; in HAL_IRDA_Init()
362 __HAL_IRDA_DISABLE(hirda); in HAL_IRDA_Init()
365 if (IRDA_SetConfig(hirda) == HAL_ERROR) in HAL_IRDA_Init()
373 CLEAR_BIT(hirda->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN | USART_CR2_STOP)); in HAL_IRDA_Init()
374 CLEAR_BIT(hirda->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL)); in HAL_IRDA_Init()
377 hirda->Instance->CR3 |= USART_CR3_IREN; in HAL_IRDA_Init()
380 __HAL_IRDA_ENABLE(hirda); in HAL_IRDA_Init()
383 return (IRDA_CheckIdleState(hirda)); in HAL_IRDA_Init()
392 HAL_StatusTypeDef HAL_IRDA_DeInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DeInit() argument
395 if (hirda == NULL) in HAL_IRDA_DeInit()
401 assert_param(IS_IRDA_INSTANCE(hirda->Instance)); in HAL_IRDA_DeInit()
403 hirda->gState = HAL_IRDA_STATE_BUSY; in HAL_IRDA_DeInit()
407 if (hirda->MspDeInitCallback == NULL) in HAL_IRDA_DeInit()
409 hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; in HAL_IRDA_DeInit()
412 hirda->MspDeInitCallback(hirda); in HAL_IRDA_DeInit()
414 HAL_IRDA_MspDeInit(hirda); in HAL_IRDA_DeInit()
417 __HAL_IRDA_DISABLE(hirda); in HAL_IRDA_DeInit()
419 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_DeInit()
420 hirda->gState = HAL_IRDA_STATE_RESET; in HAL_IRDA_DeInit()
421 hirda->RxState = HAL_IRDA_STATE_RESET; in HAL_IRDA_DeInit()
424 __HAL_UNLOCK(hirda); in HAL_IRDA_DeInit()
435 __weak void HAL_IRDA_MspInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_MspInit() argument
438 UNUSED(hirda); in HAL_IRDA_MspInit()
451 __weak void HAL_IRDA_MspDeInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_MspDeInit() argument
454 UNUSED(hirda); in HAL_IRDA_MspDeInit()
483 HAL_StatusTypeDef HAL_IRDA_RegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef C… in HAL_IRDA_RegisterCallback() argument
491 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
496 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_RegisterCallback()
501 hirda->TxHalfCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
505 hirda->TxCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
509 hirda->RxHalfCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
513 hirda->RxCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
517 hirda->ErrorCallback = pCallback; in HAL_IRDA_RegisterCallback()
521 hirda->AbortCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
525 hirda->AbortTransmitCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
529 hirda->AbortReceiveCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
533 hirda->MspInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
537 hirda->MspDeInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
542 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
549 else if (hirda->gState == HAL_IRDA_STATE_RESET) in HAL_IRDA_RegisterCallback()
554 hirda->MspInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
558 hirda->MspDeInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
563 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
573 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
602 HAL_StatusTypeDef HAL_IRDA_UnRegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef… in HAL_IRDA_UnRegisterCallback() argument
606 if (HAL_IRDA_STATE_READY == hirda->gState) in HAL_IRDA_UnRegisterCallback()
611hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltC… in HAL_IRDA_UnRegisterCallback()
615hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in HAL_IRDA_UnRegisterCallback()
619hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in HAL_IRDA_UnRegisterCallback()
623hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in HAL_IRDA_UnRegisterCallback()
627hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in HAL_IRDA_UnRegisterCallback()
631hirda->AbortCpltCallback = HAL_IRDA_AbortCpltCallback; /* Legacy weak AbortCpltCal… in HAL_IRDA_UnRegisterCallback()
635 hirda->AbortTransmitCpltCallback = HAL_IRDA_AbortTransmitCpltCallback; /* Legacy weak in HAL_IRDA_UnRegisterCallback()
640 hirda->AbortReceiveCpltCallback = HAL_IRDA_AbortReceiveCpltCallback; /* Legacy weak in HAL_IRDA_UnRegisterCallback()
645hirda->MspInitCallback = HAL_IRDA_MspInit; /* Legacy weak MspInitCallb… in HAL_IRDA_UnRegisterCallback()
649hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; /* Legacy weak MspDeInitCal… in HAL_IRDA_UnRegisterCallback()
654 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
661 else if (HAL_IRDA_STATE_RESET == hirda->gState) in HAL_IRDA_UnRegisterCallback()
666 hirda->MspInitCallback = HAL_IRDA_MspInit; in HAL_IRDA_UnRegisterCallback()
670 hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; in HAL_IRDA_UnRegisterCallback()
675 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
685 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
803 HAL_StatusTypeDef HAL_IRDA_Transmit(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size,… in HAL_IRDA_Transmit() argument
810 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit()
820 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit()
829 __HAL_LOCK(hirda); in HAL_IRDA_Transmit()
831 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit()
832 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit()
837 hirda->TxXferSize = Size; in HAL_IRDA_Transmit()
838 hirda->TxXferCount = Size; in HAL_IRDA_Transmit()
841 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit()
852 while (hirda->TxXferCount > 0U) in HAL_IRDA_Transmit()
854 hirda->TxXferCount--; in HAL_IRDA_Transmit()
856 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
862 hirda->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU); in HAL_IRDA_Transmit()
867 hirda->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU); in HAL_IRDA_Transmit()
872 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
878 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit()
881 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit()
910 HAL_StatusTypeDef HAL_IRDA_Receive(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size, uint32… in HAL_IRDA_Receive() argument
918 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive()
928 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive()
937 __HAL_LOCK(hirda); in HAL_IRDA_Receive()
939 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive()
940 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive()
945 hirda->RxXferSize = Size; in HAL_IRDA_Receive()
946 hirda->RxXferCount = Size; in HAL_IRDA_Receive()
950 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive()
951 uhMask = hirda->Mask; in HAL_IRDA_Receive()
954 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive()
966 while (hirda->RxXferCount > 0U) in HAL_IRDA_Receive()
968 hirda->RxXferCount--; in HAL_IRDA_Receive()
970 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Receive()
976 *pdata16bits = (uint16_t)(hirda->Instance->RDR & uhMask); in HAL_IRDA_Receive()
981 *pdata8bits = (uint8_t)(hirda->Instance->RDR & (uint8_t)uhMask); in HAL_IRDA_Receive()
987 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive()
990 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive()
1018 HAL_StatusTypeDef HAL_IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Si… in HAL_IRDA_Transmit_IT() argument
1021 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit_IT()
1031 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit_IT()
1040 __HAL_LOCK(hirda); in HAL_IRDA_Transmit_IT()
1042 hirda->pTxBuffPtr = pData; in HAL_IRDA_Transmit_IT()
1043 hirda->TxXferSize = Size; in HAL_IRDA_Transmit_IT()
1044 hirda->TxXferCount = Size; in HAL_IRDA_Transmit_IT()
1046 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit_IT()
1047 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit_IT()
1050 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_IT()
1053 SET_BIT(hirda->Instance->CR1, USART_CR1_TXEIE); in HAL_IRDA_Transmit_IT()
1081 HAL_StatusTypeDef HAL_IRDA_Receive_IT(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_IT() argument
1084 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_IT()
1094 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive_IT()
1103 __HAL_LOCK(hirda); in HAL_IRDA_Receive_IT()
1105 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_IT()
1106 hirda->RxXferSize = Size; in HAL_IRDA_Receive_IT()
1107 hirda->RxXferCount = Size; in HAL_IRDA_Receive_IT()
1111 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive_IT()
1113 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_IT()
1114 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_IT()
1117 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_IT()
1119 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_IT()
1122 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE); in HAL_IRDA_Receive_IT()
1127 SET_BIT(hirda->Instance->CR1, USART_CR1_RXNEIE); in HAL_IRDA_Receive_IT()
1131 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_IT()
1159 HAL_StatusTypeDef HAL_IRDA_Transmit_DMA(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t S… in HAL_IRDA_Transmit_DMA() argument
1162 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit_DMA()
1172 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit_DMA()
1181 __HAL_LOCK(hirda); in HAL_IRDA_Transmit_DMA()
1183 hirda->pTxBuffPtr = pData; in HAL_IRDA_Transmit_DMA()
1184 hirda->TxXferSize = Size; in HAL_IRDA_Transmit_DMA()
1185 hirda->TxXferCount = Size; in HAL_IRDA_Transmit_DMA()
1187 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit_DMA()
1188 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit_DMA()
1191 hirda->hdmatx->XferCpltCallback = IRDA_DMATransmitCplt; in HAL_IRDA_Transmit_DMA()
1194 hirda->hdmatx->XferHalfCpltCallback = IRDA_DMATransmitHalfCplt; in HAL_IRDA_Transmit_DMA()
1197 hirda->hdmatx->XferErrorCallback = IRDA_DMAError; in HAL_IRDA_Transmit_DMA()
1200 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Transmit_DMA()
1203 …if (HAL_DMA_Start_IT(hirda->hdmatx, (uint32_t)hirda->pTxBuffPtr, (uint32_t)&hirda->Instance->TDR, … in HAL_IRDA_Transmit_DMA()
1206 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_TCF); in HAL_IRDA_Transmit_DMA()
1209 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1213 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Transmit_DMA()
1220 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Transmit_DMA()
1223 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1226 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit_DMA()
1257 HAL_StatusTypeDef HAL_IRDA_Receive_DMA(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_DMA() argument
1260 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_DMA()
1270 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive_DMA()
1279 __HAL_LOCK(hirda); in HAL_IRDA_Receive_DMA()
1281 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_DMA()
1282 hirda->RxXferSize = Size; in HAL_IRDA_Receive_DMA()
1284 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_DMA()
1285 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_DMA()
1288 hirda->hdmarx->XferCpltCallback = IRDA_DMAReceiveCplt; in HAL_IRDA_Receive_DMA()
1291 hirda->hdmarx->XferHalfCpltCallback = IRDA_DMAReceiveHalfCplt; in HAL_IRDA_Receive_DMA()
1294 hirda->hdmarx->XferErrorCallback = IRDA_DMAError; in HAL_IRDA_Receive_DMA()
1297 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Receive_DMA()
1300 …if (HAL_DMA_Start_IT(hirda->hdmarx, (uint32_t)&hirda->Instance->RDR, (uint32_t)hirda->pRxBuffPtr, … in HAL_IRDA_Receive_DMA()
1303 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1305 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_DMA()
1308 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_Receive_DMA()
1312 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_DMA()
1316 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Receive_DMA()
1323 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Receive_DMA()
1326 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1329 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive_DMA()
1347 HAL_StatusTypeDef HAL_IRDA_DMAPause(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAPause() argument
1350 __HAL_LOCK(hirda); in HAL_IRDA_DMAPause()
1352 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAPause()
1354 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAPause()
1357 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAPause()
1360 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAPause()
1362 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAPause()
1365 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAPause()
1366 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAPause()
1369 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAPause()
1374 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAPause()
1385 HAL_StatusTypeDef HAL_IRDA_DMAResume(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAResume() argument
1388 __HAL_LOCK(hirda); in HAL_IRDA_DMAResume()
1390 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAResume()
1393 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAResume()
1395 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAResume()
1398 __HAL_IRDA_CLEAR_OREFLAG(hirda); in HAL_IRDA_DMAResume()
1401 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_DMAResume()
1403 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAResume()
1405 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAResume()
1408 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAResume()
1412 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAResume()
1423 HAL_StatusTypeDef HAL_IRDA_DMAStop(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAStop() argument
1433 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAStop()
1435 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAStop()
1437 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAStop()
1440 if (hirda->hdmatx != NULL) in HAL_IRDA_DMAStop()
1442 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_DMAStop()
1444 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1447 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1454 IRDA_EndTxTransfer(hirda); in HAL_IRDA_DMAStop()
1459 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAStop()
1461 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAStop()
1463 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAStop()
1466 if (hirda->hdmarx != NULL) in HAL_IRDA_DMAStop()
1468 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_DMAStop()
1470 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1473 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1480 IRDA_EndRxTransfer(hirda); in HAL_IRDA_DMAStop()
1500 HAL_StatusTypeDef HAL_IRDA_Abort(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort() argument
1503 …CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_T… in HAL_IRDA_Abort()
1504 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort()
1507 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort()
1509 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort()
1512 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort()
1516 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1518 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort()
1520 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1523 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Abort()
1532 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort()
1534 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort()
1537 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort()
1541 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1543 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort()
1545 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1548 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Abort()
1557 hirda->TxXferCount = 0U; in HAL_IRDA_Abort()
1558 hirda->RxXferCount = 0U; in HAL_IRDA_Abort()
1561 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_Abort()
1564 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort()
1565 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort()
1568 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Abort()
1586 HAL_StatusTypeDef HAL_IRDA_AbortTransmit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmit() argument
1589 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit()
1592 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit()
1594 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit()
1597 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit()
1601 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_AbortTransmit()
1603 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit()
1605 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortTransmit()
1608 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortTransmit()
1617 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit()
1620 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit()
1638 HAL_StatusTypeDef HAL_IRDA_AbortReceive(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive() argument
1641 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive()
1642 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive()
1645 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive()
1647 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive()
1650 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive()
1654 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_AbortReceive()
1656 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive()
1658 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortReceive()
1661 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortReceive()
1670 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive()
1673 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive()
1676 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive()
1696 HAL_StatusTypeDef HAL_IRDA_Abort_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort_IT() argument
1701 …CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_T… in HAL_IRDA_Abort_IT()
1702 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort_IT()
1707 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1711 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1713 hirda->hdmatx->XferAbortCallback = IRDA_DMATxAbortCallback; in HAL_IRDA_Abort_IT()
1717 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1721 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1725 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1727 hirda->hdmarx->XferAbortCallback = IRDA_DMARxAbortCallback; in HAL_IRDA_Abort_IT()
1731 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1736 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1739 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort_IT()
1742 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1748 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort_IT()
1750 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1760 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1762 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort_IT()
1765 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1771 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort_IT()
1773 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1787 hirda->TxXferCount = 0U; in HAL_IRDA_Abort_IT()
1788 hirda->RxXferCount = 0U; in HAL_IRDA_Abort_IT()
1791 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Abort_IT()
1794 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_Abort_IT()
1797 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1798 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1803 hirda->AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1806 HAL_IRDA_AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1828 HAL_StatusTypeDef HAL_IRDA_AbortTransmit_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmit_IT() argument
1831 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit_IT()
1834 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit_IT()
1836 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit_IT()
1839 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit_IT()
1843 hirda->hdmatx->XferAbortCallback = IRDA_DMATxOnlyAbortCallback; in HAL_IRDA_AbortTransmit_IT()
1846 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit_IT()
1849 hirda->hdmatx->XferAbortCallback(hirda->hdmatx); in HAL_IRDA_AbortTransmit_IT()
1855 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit_IT()
1858 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit_IT()
1863 hirda->AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1866 HAL_IRDA_AbortTransmitCpltCallback(hirda); 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()
1906 HAL_StatusTypeDef HAL_IRDA_AbortReceive_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive_IT() argument
1909 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive_IT()
1910 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive_IT()
1913 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive_IT()
1915 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive_IT()
1918 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive_IT()
1922 hirda->hdmarx->XferAbortCallback = IRDA_DMARxOnlyAbortCallback; in HAL_IRDA_AbortReceive_IT()
1925 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive_IT()
1928 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_AbortReceive_IT()
1934 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive_IT()
1937 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive_IT()
1940 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive_IT()
1945 hirda->AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1948 HAL_IRDA_AbortReceiveCpltCallback(hirda); 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()
1982 void HAL_IRDA_IRQHandler(IRDA_HandleTypeDef *hirda) in HAL_IRDA_IRQHandler() argument
1984 uint32_t isrflags = READ_REG(hirda->Instance->ISR); in HAL_IRDA_IRQHandler()
1985 uint32_t cr1its = READ_REG(hirda->Instance->CR1); in HAL_IRDA_IRQHandler()
1997 IRDA_Receive_IT(hirda); in HAL_IRDA_IRQHandler()
2003 cr3its = READ_REG(hirda->Instance->CR3); in HAL_IRDA_IRQHandler()
2011 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_PEF); in HAL_IRDA_IRQHandler()
2013 hirda->ErrorCode |= HAL_IRDA_ERROR_PE; in HAL_IRDA_IRQHandler()
2019 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_FEF); in HAL_IRDA_IRQHandler()
2021 hirda->ErrorCode |= HAL_IRDA_ERROR_FE; in HAL_IRDA_IRQHandler()
2027 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_NEF); in HAL_IRDA_IRQHandler()
2029 hirda->ErrorCode |= HAL_IRDA_ERROR_NE; in HAL_IRDA_IRQHandler()
2036 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_OREF); in HAL_IRDA_IRQHandler()
2038 hirda->ErrorCode |= HAL_IRDA_ERROR_ORE; in HAL_IRDA_IRQHandler()
2042 if (hirda->ErrorCode != HAL_IRDA_ERROR_NONE) in HAL_IRDA_IRQHandler()
2047 IRDA_Receive_IT(hirda); in HAL_IRDA_IRQHandler()
2052 errorcode = hirda->ErrorCode; in HAL_IRDA_IRQHandler()
2053 if ((HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) || in HAL_IRDA_IRQHandler()
2059 IRDA_EndRxTransfer(hirda); in HAL_IRDA_IRQHandler()
2062 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_IRQHandler()
2064 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_IRQHandler()
2067 if (hirda->hdmarx != NULL) in HAL_IRDA_IRQHandler()
2071 hirda->hdmarx->XferAbortCallback = IRDA_DMAAbortOnError; in HAL_IRDA_IRQHandler()
2074 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_IRQHandler()
2077 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_IRQHandler()
2084 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2087 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2095 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2098 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2108 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2111 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2113 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_IRQHandler()
2123 IRDA_Transmit_IT(hirda); in HAL_IRDA_IRQHandler()
2130 IRDA_EndTransmit_IT(hirda); in HAL_IRDA_IRQHandler()
2142 __weak void HAL_IRDA_TxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxCpltCallback() argument
2145 UNUSED(hirda); in HAL_IRDA_TxCpltCallback()
2158 __weak void HAL_IRDA_TxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxHalfCpltCallback() argument
2161 UNUSED(hirda); in HAL_IRDA_TxHalfCpltCallback()
2174 __weak void HAL_IRDA_RxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxCpltCallback() argument
2177 UNUSED(hirda); in HAL_IRDA_RxCpltCallback()
2190 __weak void HAL_IRDA_RxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxHalfCpltCallback() argument
2193 UNUSED(hirda); in HAL_IRDA_RxHalfCpltCallback()
2206 __weak void HAL_IRDA_ErrorCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_ErrorCallback() argument
2209 UNUSED(hirda); in HAL_IRDA_ErrorCallback()
2222 __weak void HAL_IRDA_AbortCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortCpltCallback() argument
2225 UNUSED(hirda); in HAL_IRDA_AbortCpltCallback()
2238 __weak void HAL_IRDA_AbortTransmitCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmitCpltCallback() argument
2241 UNUSED(hirda); in HAL_IRDA_AbortTransmitCpltCallback()
2254 __weak void HAL_IRDA_AbortReceiveCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceiveCpltCallback() argument
2257 UNUSED(hirda); in HAL_IRDA_AbortReceiveCpltCallback()
2293 HAL_IRDA_StateTypeDef HAL_IRDA_GetState(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetState() argument
2298 temp1 = (uint32_t)hirda->gState; in HAL_IRDA_GetState()
2299 temp2 = (uint32_t)hirda->RxState; in HAL_IRDA_GetState()
2310 uint32_t HAL_IRDA_GetError(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetError() argument
2312 return hirda->ErrorCode; in HAL_IRDA_GetError()
2333 void IRDA_InitCallbacksToDefault(IRDA_HandleTypeDef *hirda) in IRDA_InitCallbacksToDefault() argument
2336hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2337hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in IRDA_InitCallbacksToDefault()
2338hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2339hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in IRDA_InitCallbacksToDefault()
2340hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in IRDA_InitCallbacksToDefault()
2341hirda->AbortCpltCallback = HAL_IRDA_AbortCpltCallback; /* Legacy weak AbortCpltCal… in IRDA_InitCallbacksToDefault()
2342hirda->AbortTransmitCpltCallback = HAL_IRDA_AbortTransmitCpltCallback; /* Legacy weak AbortTransmi… in IRDA_InitCallbacksToDefault()
2343hirda->AbortReceiveCpltCallback = HAL_IRDA_AbortReceiveCpltCallback; /* Legacy weak AbortReceive… in IRDA_InitCallbacksToDefault()
2354 static HAL_StatusTypeDef IRDA_SetConfig(IRDA_HandleTypeDef *hirda) in IRDA_SetConfig() argument
2362 assert_param(IS_IRDA_BAUDRATE(hirda->Init.BaudRate)); in IRDA_SetConfig()
2363 assert_param(IS_IRDA_WORD_LENGTH(hirda->Init.WordLength)); in IRDA_SetConfig()
2364 assert_param(IS_IRDA_PARITY(hirda->Init.Parity)); in IRDA_SetConfig()
2365 assert_param(IS_IRDA_TX_RX_MODE(hirda->Init.Mode)); in IRDA_SetConfig()
2366 assert_param(IS_IRDA_PRESCALER(hirda->Init.Prescaler)); in IRDA_SetConfig()
2367 assert_param(IS_IRDA_POWERMODE(hirda->Init.PowerMode)); in IRDA_SetConfig()
2374 tmpreg = (uint32_t)hirda->Init.WordLength | hirda->Init.Parity | hirda->Init.Mode ; in IRDA_SetConfig()
2376 MODIFY_REG(hirda->Instance->CR1, IRDA_CR1_FIELDS, tmpreg); in IRDA_SetConfig()
2379 MODIFY_REG(hirda->Instance->CR3, USART_CR3_IRLP, hirda->Init.PowerMode); in IRDA_SetConfig()
2383 MODIFY_REG(hirda->Instance->GTPR, (uint16_t)USART_GTPR_PSC, (uint16_t)hirda->Init.Prescaler); in IRDA_SetConfig()
2386 IRDA_GETCLOCKSOURCE(hirda, clocksource); in IRDA_SetConfig()
2392 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate)); in IRDA_SetConfig()
2396 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate)); in IRDA_SetConfig()
2399 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(HSI_VALUE, hirda->Init.BaudRate)); in IRDA_SetConfig()
2403 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate)); in IRDA_SetConfig()
2406 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16((uint32_t)LSE_VALUE, hirda->Init.BaudRate)); in IRDA_SetConfig()
2416 hirda->Instance->BRR = (uint16_t)tmpreg; in IRDA_SetConfig()
2432 static HAL_StatusTypeDef IRDA_CheckIdleState(IRDA_HandleTypeDef *hirda) in IRDA_CheckIdleState() argument
2437 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_CheckIdleState()
2443 if ((hirda->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) in IRDA_CheckIdleState()
2446 …if (IRDA_WaitOnFlagUntilTimeout(hirda, USART_ISR_TEACK, RESET, tickstart, IRDA_TEACK_REACK_TIMEOUT… in IRDA_CheckIdleState()
2453 if ((hirda->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) in IRDA_CheckIdleState()
2456 …if (IRDA_WaitOnFlagUntilTimeout(hirda, USART_ISR_REACK, RESET, tickstart, IRDA_TEACK_REACK_TIMEOUT… in IRDA_CheckIdleState()
2464 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_CheckIdleState()
2465 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_CheckIdleState()
2468 __HAL_UNLOCK(hirda); in IRDA_CheckIdleState()
2484 static HAL_StatusTypeDef IRDA_WaitOnFlagUntilTimeout(IRDA_HandleTypeDef *hirda, uint32_t Flag, Flag… in IRDA_WaitOnFlagUntilTimeout() argument
2488 while ((__HAL_IRDA_GET_FLAG(hirda, Flag) ? SET : RESET) == Status) in IRDA_WaitOnFlagUntilTimeout()
2497 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE)); in IRDA_WaitOnFlagUntilTimeout()
2498 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_WaitOnFlagUntilTimeout()
2500 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_WaitOnFlagUntilTimeout()
2501 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_WaitOnFlagUntilTimeout()
2504 __HAL_UNLOCK(hirda); in IRDA_WaitOnFlagUntilTimeout()
2519 static void IRDA_EndTxTransfer(IRDA_HandleTypeDef *hirda) in IRDA_EndTxTransfer() argument
2522 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in IRDA_EndTxTransfer()
2525 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_EndTxTransfer()
2534 static void IRDA_EndRxTransfer(IRDA_HandleTypeDef *hirda) in IRDA_EndRxTransfer() argument
2537 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in IRDA_EndRxTransfer()
2538 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_EndRxTransfer()
2541 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_EndRxTransfer()
2553 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitCplt() local
2558 hirda->TxXferCount = 0U; in IRDA_DMATransmitCplt()
2562 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in IRDA_DMATransmitCplt()
2565 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_DMATransmitCplt()
2572 hirda->TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2575 HAL_IRDA_TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2589 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitHalfCplt() local
2593 hirda->TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2596 HAL_IRDA_TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2608 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveCplt() local
2613 hirda->RxXferCount = 0U; in IRDA_DMAReceiveCplt()
2616 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in IRDA_DMAReceiveCplt()
2617 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_DMAReceiveCplt()
2621 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in IRDA_DMAReceiveCplt()
2624 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMAReceiveCplt()
2629 hirda->RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2632 HAL_IRDA_RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2644 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveHalfCplt() local
2648 hirda->RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2651 HAL_IRDA_RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2663 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAError() local
2666 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_DMAError()
2668 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in IRDA_DMAError()
2670 hirda->TxXferCount = 0U; in IRDA_DMAError()
2671 IRDA_EndTxTransfer(hirda); in IRDA_DMAError()
2676 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_DMAError()
2678 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in IRDA_DMAError()
2680 hirda->RxXferCount = 0U; in IRDA_DMAError()
2681 IRDA_EndRxTransfer(hirda); in IRDA_DMAError()
2685 hirda->ErrorCode |= HAL_IRDA_ERROR_DMA; in IRDA_DMAError()
2688 hirda->ErrorCallback(hirda); in IRDA_DMAError()
2691 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAError()
2703 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAAbortOnError() local
2704 hirda->RxXferCount = 0U; in IRDA_DMAAbortOnError()
2705 hirda->TxXferCount = 0U; in IRDA_DMAAbortOnError()
2709 hirda->ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2712 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2726 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxAbortCallback() local
2728 hirda->hdmatx->XferAbortCallback = NULL; in IRDA_DMATxAbortCallback()
2731 if (hirda->hdmarx != NULL) in IRDA_DMATxAbortCallback()
2733 if (hirda->hdmarx->XferAbortCallback != NULL) in IRDA_DMATxAbortCallback()
2740 hirda->TxXferCount = 0U; in IRDA_DMATxAbortCallback()
2741 hirda->RxXferCount = 0U; in IRDA_DMATxAbortCallback()
2744 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMATxAbortCallback()
2747 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMATxAbortCallback()
2750 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2751 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2756 hirda->AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2759 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2774 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMARxAbortCallback() local
2776 hirda->hdmarx->XferAbortCallback = NULL; in IRDA_DMARxAbortCallback()
2779 if (hirda->hdmatx != NULL) in IRDA_DMARxAbortCallback()
2781 if (hirda->hdmatx->XferAbortCallback != NULL) in IRDA_DMARxAbortCallback()
2788 hirda->TxXferCount = 0U; in IRDA_DMARxAbortCallback()
2789 hirda->RxXferCount = 0U; in IRDA_DMARxAbortCallback()
2792 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMARxAbortCallback()
2795 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxAbortCallback()
2798 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2799 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2804 hirda->AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2807 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2822 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxOnlyAbortCallback() local
2824 hirda->TxXferCount = 0U; in IRDA_DMATxOnlyAbortCallback()
2827 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxOnlyAbortCallback()
2832 hirda->AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2835 HAL_IRDA_AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2849 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in IRDA_DMARxOnlyAbortCallback() local
2851 hirda->RxXferCount = 0U; in IRDA_DMARxOnlyAbortCallback()
2854 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxOnlyAbortCallback()
2857 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxOnlyAbortCallback()
2862 hirda->AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2865 HAL_IRDA_AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2877 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_Transmit_IT() argument
2882 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_Transmit_IT()
2884 if (hirda->TxXferCount == 0U) in IRDA_Transmit_IT()
2887 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TXEIE); in IRDA_Transmit_IT()
2890 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_Transmit_IT()
2894 … if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Transmit_IT()
2896 tmp = (const uint16_t *) hirda->pTxBuffPtr; /* Derogation R.11.3 */ in IRDA_Transmit_IT()
2897 hirda->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in IRDA_Transmit_IT()
2898 hirda->pTxBuffPtr += 2U; in IRDA_Transmit_IT()
2902 hirda->Instance->TDR = (uint8_t)(*hirda->pTxBuffPtr & 0xFFU); in IRDA_Transmit_IT()
2903 hirda->pTxBuffPtr++; in IRDA_Transmit_IT()
2905 hirda->TxXferCount--; in IRDA_Transmit_IT()
2916 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_EndTransmit_IT() argument
2919 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_EndTransmit_IT()
2922 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_EndTransmit_IT()
2926 hirda->TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2929 HAL_IRDA_TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2941 static void IRDA_Receive_IT(IRDA_HandleTypeDef *hirda) in IRDA_Receive_IT() argument
2944 uint16_t uhMask = hirda->Mask; in IRDA_Receive_IT()
2948 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_Receive_IT()
2950 uhdata = (uint16_t) READ_REG(hirda->Instance->RDR); in IRDA_Receive_IT()
2951 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Receive_IT()
2953 tmp = (uint16_t *) hirda->pRxBuffPtr; /* Derogation R.11.3 */ in IRDA_Receive_IT()
2955 hirda->pRxBuffPtr += 2U; in IRDA_Receive_IT()
2959 *hirda->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask); in IRDA_Receive_IT()
2960 hirda->pRxBuffPtr++; in IRDA_Receive_IT()
2963 hirda->RxXferCount--; in IRDA_Receive_IT()
2964 if (hirda->RxXferCount == 0U) in IRDA_Receive_IT()
2967 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in IRDA_Receive_IT()
2970 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_Receive_IT()
2973 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_Receive_IT()
2977 hirda->RxCpltCallback(hirda); in IRDA_Receive_IT()
2980 HAL_IRDA_RxCpltCallback(hirda); in IRDA_Receive_IT()
2987 __HAL_IRDA_SEND_REQ(hirda, IRDA_RXDATA_FLUSH_REQUEST); in IRDA_Receive_IT()