Lines Matching refs:hirda

239 void IRDA_InitCallbacksToDefault(IRDA_HandleTypeDef *hirda);
241 static HAL_StatusTypeDef IRDA_SetConfig(IRDA_HandleTypeDef *hirda);
242 static HAL_StatusTypeDef IRDA_CheckIdleState(IRDA_HandleTypeDef *hirda);
243 static HAL_StatusTypeDef IRDA_WaitOnFlagUntilTimeout(IRDA_HandleTypeDef *hirda, uint32_t Flag, Flag…
245 static void IRDA_EndTxTransfer(IRDA_HandleTypeDef *hirda);
246 static void IRDA_EndRxTransfer(IRDA_HandleTypeDef *hirda);
257 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda);
258 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda);
259 static void IRDA_Receive_IT(IRDA_HandleTypeDef *hirda);
336 HAL_StatusTypeDef HAL_IRDA_Init(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Init() argument
339 if (hirda == NULL) in HAL_IRDA_Init()
345 assert_param(IS_IRDA_INSTANCE(hirda->Instance)); in HAL_IRDA_Init()
347 if (hirda->gState == HAL_IRDA_STATE_RESET) in HAL_IRDA_Init()
350 hirda->Lock = HAL_UNLOCKED; in HAL_IRDA_Init()
353 IRDA_InitCallbacksToDefault(hirda); in HAL_IRDA_Init()
355 if (hirda->MspInitCallback == NULL) in HAL_IRDA_Init()
357 hirda->MspInitCallback = HAL_IRDA_MspInit; in HAL_IRDA_Init()
361 hirda->MspInitCallback(hirda); in HAL_IRDA_Init()
364 HAL_IRDA_MspInit(hirda); in HAL_IRDA_Init()
368 hirda->gState = HAL_IRDA_STATE_BUSY; in HAL_IRDA_Init()
371 __HAL_IRDA_DISABLE(hirda); in HAL_IRDA_Init()
374 if (IRDA_SetConfig(hirda) == HAL_ERROR) in HAL_IRDA_Init()
382 CLEAR_BIT(hirda->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN | USART_CR2_STOP)); in HAL_IRDA_Init()
383 CLEAR_BIT(hirda->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL)); in HAL_IRDA_Init()
386 hirda->Instance->CR3 |= USART_CR3_IREN; in HAL_IRDA_Init()
389 __HAL_IRDA_ENABLE(hirda); in HAL_IRDA_Init()
392 return (IRDA_CheckIdleState(hirda)); in HAL_IRDA_Init()
401 HAL_StatusTypeDef HAL_IRDA_DeInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DeInit() argument
404 if (hirda == NULL) in HAL_IRDA_DeInit()
410 assert_param(IS_IRDA_INSTANCE(hirda->Instance)); in HAL_IRDA_DeInit()
412 hirda->gState = HAL_IRDA_STATE_BUSY; in HAL_IRDA_DeInit()
416 if (hirda->MspDeInitCallback == NULL) in HAL_IRDA_DeInit()
418 hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; in HAL_IRDA_DeInit()
421 hirda->MspDeInitCallback(hirda); in HAL_IRDA_DeInit()
423 HAL_IRDA_MspDeInit(hirda); in HAL_IRDA_DeInit()
426 __HAL_IRDA_DISABLE(hirda); in HAL_IRDA_DeInit()
428 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_DeInit()
429 hirda->gState = HAL_IRDA_STATE_RESET; in HAL_IRDA_DeInit()
430 hirda->RxState = HAL_IRDA_STATE_RESET; in HAL_IRDA_DeInit()
433 __HAL_UNLOCK(hirda); in HAL_IRDA_DeInit()
444 __weak void HAL_IRDA_MspInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_MspInit() argument
447 UNUSED(hirda); in HAL_IRDA_MspInit()
460 __weak void HAL_IRDA_MspDeInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_MspDeInit() argument
463 UNUSED(hirda); in HAL_IRDA_MspDeInit()
492 HAL_StatusTypeDef HAL_IRDA_RegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef C… in HAL_IRDA_RegisterCallback() argument
500 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
505 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_RegisterCallback()
510 hirda->TxHalfCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
514 hirda->TxCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
518 hirda->RxHalfCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
522 hirda->RxCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
526 hirda->ErrorCallback = pCallback; in HAL_IRDA_RegisterCallback()
530 hirda->AbortCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
534 hirda->AbortTransmitCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
538 hirda->AbortReceiveCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
542 hirda->MspInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
546 hirda->MspDeInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
551 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
558 else if (hirda->gState == HAL_IRDA_STATE_RESET) in HAL_IRDA_RegisterCallback()
563 hirda->MspInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
567 hirda->MspDeInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
572 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
582 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
611 HAL_StatusTypeDef HAL_IRDA_UnRegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef… in HAL_IRDA_UnRegisterCallback() argument
615 if (HAL_IRDA_STATE_READY == hirda->gState) in HAL_IRDA_UnRegisterCallback()
620hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltC… in HAL_IRDA_UnRegisterCallback()
624hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in HAL_IRDA_UnRegisterCallback()
628hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in HAL_IRDA_UnRegisterCallback()
632hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in HAL_IRDA_UnRegisterCallback()
636hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in HAL_IRDA_UnRegisterCallback()
640hirda->AbortCpltCallback = HAL_IRDA_AbortCpltCallback; /* Legacy weak AbortCpltCal… in HAL_IRDA_UnRegisterCallback()
644 hirda->AbortTransmitCpltCallback = HAL_IRDA_AbortTransmitCpltCallback; /* Legacy weak in HAL_IRDA_UnRegisterCallback()
649 hirda->AbortReceiveCpltCallback = HAL_IRDA_AbortReceiveCpltCallback; /* Legacy weak in HAL_IRDA_UnRegisterCallback()
654hirda->MspInitCallback = HAL_IRDA_MspInit; /* Legacy weak MspInitCallb… in HAL_IRDA_UnRegisterCallback()
658hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; /* Legacy weak MspDeInitCal… in HAL_IRDA_UnRegisterCallback()
663 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
670 else if (HAL_IRDA_STATE_RESET == hirda->gState) in HAL_IRDA_UnRegisterCallback()
675 hirda->MspInitCallback = HAL_IRDA_MspInit; in HAL_IRDA_UnRegisterCallback()
679 hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; in HAL_IRDA_UnRegisterCallback()
684 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
694 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()
820 __HAL_LOCK(hirda); in HAL_IRDA_Transmit()
822 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit()
823 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit()
828 hirda->TxXferSize = Size; in HAL_IRDA_Transmit()
829 hirda->TxXferCount = Size; in HAL_IRDA_Transmit()
832 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit()
843 while (hirda->TxXferCount > 0U) in HAL_IRDA_Transmit()
845 hirda->TxXferCount--; in HAL_IRDA_Transmit()
847 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
853 hirda->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU); in HAL_IRDA_Transmit()
858 hirda->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU); in HAL_IRDA_Transmit()
863 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
869 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit()
872 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit()
894 HAL_StatusTypeDef HAL_IRDA_Receive(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size, uint32… in HAL_IRDA_Receive() argument
902 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive()
910 __HAL_LOCK(hirda); in HAL_IRDA_Receive()
912 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive()
913 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive()
918 hirda->RxXferSize = Size; in HAL_IRDA_Receive()
919 hirda->RxXferCount = Size; in HAL_IRDA_Receive()
923 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive()
924 uhMask = hirda->Mask; in HAL_IRDA_Receive()
927 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive()
939 while (hirda->RxXferCount > 0U) in HAL_IRDA_Receive()
941 hirda->RxXferCount--; in HAL_IRDA_Receive()
943 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Receive()
949 *pdata16bits = (uint16_t)(hirda->Instance->RDR & uhMask); in HAL_IRDA_Receive()
954 *pdata8bits = (uint8_t)(hirda->Instance->RDR & (uint8_t)uhMask); in HAL_IRDA_Receive()
960 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive()
963 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive()
984 HAL_StatusTypeDef HAL_IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Si… in HAL_IRDA_Transmit_IT() argument
987 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit_IT()
995 __HAL_LOCK(hirda); in HAL_IRDA_Transmit_IT()
997 hirda->pTxBuffPtr = pData; in HAL_IRDA_Transmit_IT()
998 hirda->TxXferSize = Size; in HAL_IRDA_Transmit_IT()
999 hirda->TxXferCount = Size; in HAL_IRDA_Transmit_IT()
1001 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit_IT()
1002 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit_IT()
1005 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_IT()
1008 SET_BIT(hirda->Instance->CR1, USART_CR1_TXEIE); in HAL_IRDA_Transmit_IT()
1029 HAL_StatusTypeDef HAL_IRDA_Receive_IT(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_IT() argument
1032 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_IT()
1040 __HAL_LOCK(hirda); in HAL_IRDA_Receive_IT()
1042 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_IT()
1043 hirda->RxXferSize = Size; in HAL_IRDA_Receive_IT()
1044 hirda->RxXferCount = Size; in HAL_IRDA_Receive_IT()
1048 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive_IT()
1050 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_IT()
1051 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_IT()
1054 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_IT()
1056 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_IT()
1059 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE); in HAL_IRDA_Receive_IT()
1064 SET_BIT(hirda->Instance->CR1, USART_CR1_RXNEIE); in HAL_IRDA_Receive_IT()
1068 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_IT()
1089 HAL_StatusTypeDef HAL_IRDA_Transmit_DMA(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t S… in HAL_IRDA_Transmit_DMA() argument
1092 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit_DMA()
1100 __HAL_LOCK(hirda); in HAL_IRDA_Transmit_DMA()
1102 hirda->pTxBuffPtr = pData; in HAL_IRDA_Transmit_DMA()
1103 hirda->TxXferSize = Size; in HAL_IRDA_Transmit_DMA()
1104 hirda->TxXferCount = Size; in HAL_IRDA_Transmit_DMA()
1106 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit_DMA()
1107 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit_DMA()
1110 hirda->hdmatx->XferCpltCallback = IRDA_DMATransmitCplt; in HAL_IRDA_Transmit_DMA()
1113 hirda->hdmatx->XferHalfCpltCallback = IRDA_DMATransmitHalfCplt; in HAL_IRDA_Transmit_DMA()
1116 hirda->hdmatx->XferErrorCallback = IRDA_DMAError; in HAL_IRDA_Transmit_DMA()
1119 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Transmit_DMA()
1122 …if (HAL_DMA_Start_IT(hirda->hdmatx, (uint32_t)hirda->pTxBuffPtr, (uint32_t)&hirda->Instance->TDR, … in HAL_IRDA_Transmit_DMA()
1125 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_TCF); in HAL_IRDA_Transmit_DMA()
1128 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1132 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Transmit_DMA()
1139 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Transmit_DMA()
1142 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1145 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit_DMA()
1169 HAL_StatusTypeDef HAL_IRDA_Receive_DMA(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_DMA() argument
1172 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_DMA()
1180 __HAL_LOCK(hirda); in HAL_IRDA_Receive_DMA()
1182 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_DMA()
1183 hirda->RxXferSize = Size; in HAL_IRDA_Receive_DMA()
1185 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_DMA()
1186 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_DMA()
1189 hirda->hdmarx->XferCpltCallback = IRDA_DMAReceiveCplt; in HAL_IRDA_Receive_DMA()
1192 hirda->hdmarx->XferHalfCpltCallback = IRDA_DMAReceiveHalfCplt; in HAL_IRDA_Receive_DMA()
1195 hirda->hdmarx->XferErrorCallback = IRDA_DMAError; in HAL_IRDA_Receive_DMA()
1198 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Receive_DMA()
1201 …if (HAL_DMA_Start_IT(hirda->hdmarx, (uint32_t)&hirda->Instance->RDR, (uint32_t)hirda->pRxBuffPtr, … in HAL_IRDA_Receive_DMA()
1204 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1206 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_DMA()
1209 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_Receive_DMA()
1213 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_DMA()
1217 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Receive_DMA()
1224 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Receive_DMA()
1227 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1230 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive_DMA()
1248 HAL_StatusTypeDef HAL_IRDA_DMAPause(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAPause() argument
1251 __HAL_LOCK(hirda); in HAL_IRDA_DMAPause()
1253 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAPause()
1255 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAPause()
1258 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAPause()
1261 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAPause()
1263 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAPause()
1266 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAPause()
1267 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAPause()
1270 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAPause()
1275 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAPause()
1286 HAL_StatusTypeDef HAL_IRDA_DMAResume(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAResume() argument
1289 __HAL_LOCK(hirda); in HAL_IRDA_DMAResume()
1291 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAResume()
1294 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAResume()
1296 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAResume()
1299 __HAL_IRDA_CLEAR_OREFLAG(hirda); in HAL_IRDA_DMAResume()
1302 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_DMAResume()
1304 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAResume()
1306 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAResume()
1309 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAResume()
1313 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAResume()
1324 HAL_StatusTypeDef HAL_IRDA_DMAStop(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAStop() argument
1334 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAStop()
1336 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAStop()
1338 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAStop()
1341 if (hirda->hdmatx != NULL) in HAL_IRDA_DMAStop()
1343 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_DMAStop()
1345 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1348 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1355 IRDA_EndTxTransfer(hirda); in HAL_IRDA_DMAStop()
1360 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAStop()
1362 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAStop()
1364 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAStop()
1367 if (hirda->hdmarx != NULL) in HAL_IRDA_DMAStop()
1369 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_DMAStop()
1371 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1374 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1381 IRDA_EndRxTransfer(hirda); in HAL_IRDA_DMAStop()
1401 HAL_StatusTypeDef HAL_IRDA_Abort(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort() argument
1404 …CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_T… in HAL_IRDA_Abort()
1405 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort()
1408 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort()
1410 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort()
1413 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort()
1417 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1419 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort()
1421 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1424 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Abort()
1433 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort()
1435 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort()
1438 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort()
1442 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1444 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort()
1446 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1449 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Abort()
1458 hirda->TxXferCount = 0U; in HAL_IRDA_Abort()
1459 hirda->RxXferCount = 0U; in HAL_IRDA_Abort()
1462 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_Abort()
1465 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort()
1466 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort()
1469 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Abort()
1487 HAL_StatusTypeDef HAL_IRDA_AbortTransmit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmit() argument
1490 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit()
1493 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit()
1495 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit()
1498 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit()
1502 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_AbortTransmit()
1504 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit()
1506 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortTransmit()
1509 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortTransmit()
1518 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit()
1521 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit()
1539 HAL_StatusTypeDef HAL_IRDA_AbortReceive(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive() argument
1542 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive()
1543 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive()
1546 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive()
1548 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive()
1551 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive()
1555 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_AbortReceive()
1557 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive()
1559 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortReceive()
1562 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortReceive()
1571 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive()
1574 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive()
1577 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive()
1597 HAL_StatusTypeDef HAL_IRDA_Abort_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort_IT() argument
1602 …CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_T… in HAL_IRDA_Abort_IT()
1603 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort_IT()
1608 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1612 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1614 hirda->hdmatx->XferAbortCallback = IRDA_DMATxAbortCallback; in HAL_IRDA_Abort_IT()
1618 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1622 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1626 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1628 hirda->hdmarx->XferAbortCallback = IRDA_DMARxAbortCallback; in HAL_IRDA_Abort_IT()
1632 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1637 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1640 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort_IT()
1643 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1649 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort_IT()
1651 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1661 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1663 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort_IT()
1666 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1672 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort_IT()
1674 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1688 hirda->TxXferCount = 0U; in HAL_IRDA_Abort_IT()
1689 hirda->RxXferCount = 0U; in HAL_IRDA_Abort_IT()
1692 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Abort_IT()
1695 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_Abort_IT()
1698 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1699 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1704 hirda->AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1707 HAL_IRDA_AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1729 HAL_StatusTypeDef HAL_IRDA_AbortTransmit_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmit_IT() argument
1732 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit_IT()
1735 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit_IT()
1737 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit_IT()
1740 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit_IT()
1744 hirda->hdmatx->XferAbortCallback = IRDA_DMATxOnlyAbortCallback; in HAL_IRDA_AbortTransmit_IT()
1747 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit_IT()
1750 hirda->hdmatx->XferAbortCallback(hirda->hdmatx); in HAL_IRDA_AbortTransmit_IT()
1756 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit_IT()
1759 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit_IT()
1764 hirda->AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1767 HAL_IRDA_AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1774 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit_IT()
1777 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit_IT()
1782 hirda->AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1785 HAL_IRDA_AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1807 HAL_StatusTypeDef HAL_IRDA_AbortReceive_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive_IT() argument
1810 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive_IT()
1811 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive_IT()
1814 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive_IT()
1816 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive_IT()
1819 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive_IT()
1823 hirda->hdmarx->XferAbortCallback = IRDA_DMARxOnlyAbortCallback; in HAL_IRDA_AbortReceive_IT()
1826 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive_IT()
1829 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_AbortReceive_IT()
1835 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive_IT()
1838 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive_IT()
1841 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive_IT()
1846 hirda->AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1849 HAL_IRDA_AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1856 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive_IT()
1859 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive_IT()
1862 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive_IT()
1867 hirda->AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1870 HAL_IRDA_AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1883 void HAL_IRDA_IRQHandler(IRDA_HandleTypeDef *hirda) in HAL_IRDA_IRQHandler() argument
1885 uint32_t isrflags = READ_REG(hirda->Instance->ISR); in HAL_IRDA_IRQHandler()
1886 uint32_t cr1its = READ_REG(hirda->Instance->CR1); in HAL_IRDA_IRQHandler()
1898 IRDA_Receive_IT(hirda); in HAL_IRDA_IRQHandler()
1904 cr3its = READ_REG(hirda->Instance->CR3); in HAL_IRDA_IRQHandler()
1912 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_PEF); in HAL_IRDA_IRQHandler()
1914 hirda->ErrorCode |= HAL_IRDA_ERROR_PE; in HAL_IRDA_IRQHandler()
1920 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_FEF); in HAL_IRDA_IRQHandler()
1922 hirda->ErrorCode |= HAL_IRDA_ERROR_FE; in HAL_IRDA_IRQHandler()
1928 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_NEF); in HAL_IRDA_IRQHandler()
1930 hirda->ErrorCode |= HAL_IRDA_ERROR_NE; in HAL_IRDA_IRQHandler()
1937 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_OREF); in HAL_IRDA_IRQHandler()
1939 hirda->ErrorCode |= HAL_IRDA_ERROR_ORE; in HAL_IRDA_IRQHandler()
1943 if (hirda->ErrorCode != HAL_IRDA_ERROR_NONE) in HAL_IRDA_IRQHandler()
1948 IRDA_Receive_IT(hirda); in HAL_IRDA_IRQHandler()
1953 errorcode = hirda->ErrorCode; in HAL_IRDA_IRQHandler()
1954 if ((HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) || in HAL_IRDA_IRQHandler()
1960 IRDA_EndRxTransfer(hirda); in HAL_IRDA_IRQHandler()
1963 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_IRQHandler()
1965 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_IRQHandler()
1968 if (hirda->hdmarx != NULL) in HAL_IRDA_IRQHandler()
1972 hirda->hdmarx->XferAbortCallback = IRDA_DMAAbortOnError; in HAL_IRDA_IRQHandler()
1975 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_IRQHandler()
1978 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_IRQHandler()
1985 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
1988 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
1996 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
1999 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2009 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2012 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2014 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_IRQHandler()
2024 IRDA_Transmit_IT(hirda); in HAL_IRDA_IRQHandler()
2031 IRDA_EndTransmit_IT(hirda); in HAL_IRDA_IRQHandler()
2043 __weak void HAL_IRDA_TxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxCpltCallback() argument
2046 UNUSED(hirda); in HAL_IRDA_TxCpltCallback()
2059 __weak void HAL_IRDA_TxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxHalfCpltCallback() argument
2062 UNUSED(hirda); in HAL_IRDA_TxHalfCpltCallback()
2075 __weak void HAL_IRDA_RxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxCpltCallback() argument
2078 UNUSED(hirda); in HAL_IRDA_RxCpltCallback()
2091 __weak void HAL_IRDA_RxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxHalfCpltCallback() argument
2094 UNUSED(hirda); in HAL_IRDA_RxHalfCpltCallback()
2107 __weak void HAL_IRDA_ErrorCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_ErrorCallback() argument
2110 UNUSED(hirda); in HAL_IRDA_ErrorCallback()
2123 __weak void HAL_IRDA_AbortCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortCpltCallback() argument
2126 UNUSED(hirda); in HAL_IRDA_AbortCpltCallback()
2139 __weak void HAL_IRDA_AbortTransmitCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmitCpltCallback() argument
2142 UNUSED(hirda); in HAL_IRDA_AbortTransmitCpltCallback()
2155 __weak void HAL_IRDA_AbortReceiveCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceiveCpltCallback() argument
2158 UNUSED(hirda); in HAL_IRDA_AbortReceiveCpltCallback()
2194 HAL_IRDA_StateTypeDef HAL_IRDA_GetState(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetState() argument
2199 temp1 = (uint32_t)hirda->gState; in HAL_IRDA_GetState()
2200 temp2 = (uint32_t)hirda->RxState; in HAL_IRDA_GetState()
2211 uint32_t HAL_IRDA_GetError(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetError() argument
2213 return hirda->ErrorCode; in HAL_IRDA_GetError()
2234 void IRDA_InitCallbacksToDefault(IRDA_HandleTypeDef *hirda) in IRDA_InitCallbacksToDefault() argument
2237hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2238hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in IRDA_InitCallbacksToDefault()
2239hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2240hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in IRDA_InitCallbacksToDefault()
2241hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in IRDA_InitCallbacksToDefault()
2242hirda->AbortCpltCallback = HAL_IRDA_AbortCpltCallback; /* Legacy weak AbortCpltCal… in IRDA_InitCallbacksToDefault()
2243hirda->AbortTransmitCpltCallback = HAL_IRDA_AbortTransmitCpltCallback; /* Legacy weak AbortTransmi… in IRDA_InitCallbacksToDefault()
2244hirda->AbortReceiveCpltCallback = HAL_IRDA_AbortReceiveCpltCallback; /* Legacy weak AbortReceive… in IRDA_InitCallbacksToDefault()
2255 static HAL_StatusTypeDef IRDA_SetConfig(IRDA_HandleTypeDef *hirda) in IRDA_SetConfig() argument
2263 assert_param(IS_IRDA_BAUDRATE(hirda->Init.BaudRate)); in IRDA_SetConfig()
2264 assert_param(IS_IRDA_WORD_LENGTH(hirda->Init.WordLength)); in IRDA_SetConfig()
2265 assert_param(IS_IRDA_PARITY(hirda->Init.Parity)); in IRDA_SetConfig()
2266 assert_param(IS_IRDA_TX_RX_MODE(hirda->Init.Mode)); in IRDA_SetConfig()
2267 assert_param(IS_IRDA_PRESCALER(hirda->Init.Prescaler)); in IRDA_SetConfig()
2268 assert_param(IS_IRDA_POWERMODE(hirda->Init.PowerMode)); in IRDA_SetConfig()
2275 tmpreg = (uint32_t)hirda->Init.WordLength | hirda->Init.Parity | hirda->Init.Mode ; in IRDA_SetConfig()
2277 MODIFY_REG(hirda->Instance->CR1, IRDA_CR1_FIELDS, tmpreg); in IRDA_SetConfig()
2280 MODIFY_REG(hirda->Instance->CR3, USART_CR3_IRLP, hirda->Init.PowerMode); in IRDA_SetConfig()
2284 MODIFY_REG(hirda->Instance->GTPR, (uint16_t)USART_GTPR_PSC, (uint16_t)hirda->Init.Prescaler); in IRDA_SetConfig()
2287 IRDA_GETCLOCKSOURCE(hirda, clocksource); in IRDA_SetConfig()
2293 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate)); in IRDA_SetConfig()
2297 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate)); in IRDA_SetConfig()
2300 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(HSI_VALUE, hirda->Init.BaudRate)); in IRDA_SetConfig()
2304 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate)); in IRDA_SetConfig()
2307 tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16((uint32_t)LSE_VALUE, hirda->Init.BaudRate)); in IRDA_SetConfig()
2317 hirda->Instance->BRR = (uint16_t)tmpreg; in IRDA_SetConfig()
2333 static HAL_StatusTypeDef IRDA_CheckIdleState(IRDA_HandleTypeDef *hirda) in IRDA_CheckIdleState() argument
2338 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_CheckIdleState()
2344 if ((hirda->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) in IRDA_CheckIdleState()
2347 …if (IRDA_WaitOnFlagUntilTimeout(hirda, USART_ISR_TEACK, RESET, tickstart, IRDA_TEACK_REACK_TIMEOUT… in IRDA_CheckIdleState()
2354 if ((hirda->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) in IRDA_CheckIdleState()
2357 …if (IRDA_WaitOnFlagUntilTimeout(hirda, USART_ISR_REACK, RESET, tickstart, IRDA_TEACK_REACK_TIMEOUT… in IRDA_CheckIdleState()
2365 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_CheckIdleState()
2366 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_CheckIdleState()
2369 __HAL_UNLOCK(hirda); in IRDA_CheckIdleState()
2385 static HAL_StatusTypeDef IRDA_WaitOnFlagUntilTimeout(IRDA_HandleTypeDef *hirda, uint32_t Flag, Flag… in IRDA_WaitOnFlagUntilTimeout() argument
2389 while ((__HAL_IRDA_GET_FLAG(hirda, Flag) ? SET : RESET) == Status) in IRDA_WaitOnFlagUntilTimeout()
2398 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE)); in IRDA_WaitOnFlagUntilTimeout()
2399 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_WaitOnFlagUntilTimeout()
2401 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_WaitOnFlagUntilTimeout()
2402 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_WaitOnFlagUntilTimeout()
2405 __HAL_UNLOCK(hirda); in IRDA_WaitOnFlagUntilTimeout()
2420 static void IRDA_EndTxTransfer(IRDA_HandleTypeDef *hirda) in IRDA_EndTxTransfer() argument
2423 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in IRDA_EndTxTransfer()
2426 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_EndTxTransfer()
2435 static void IRDA_EndRxTransfer(IRDA_HandleTypeDef *hirda) in IRDA_EndRxTransfer() argument
2438 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in IRDA_EndRxTransfer()
2439 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_EndRxTransfer()
2442 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_EndRxTransfer()
2454 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitCplt() local
2459 hirda->TxXferCount = 0U; in IRDA_DMATransmitCplt()
2463 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in IRDA_DMATransmitCplt()
2466 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_DMATransmitCplt()
2473 hirda->TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2476 HAL_IRDA_TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2490 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitHalfCplt() local
2494 hirda->TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2497 HAL_IRDA_TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2509 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveCplt() local
2514 hirda->RxXferCount = 0U; in IRDA_DMAReceiveCplt()
2517 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in IRDA_DMAReceiveCplt()
2518 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_DMAReceiveCplt()
2522 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in IRDA_DMAReceiveCplt()
2525 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMAReceiveCplt()
2530 hirda->RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2533 HAL_IRDA_RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2545 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveHalfCplt() local
2549 hirda->RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2552 HAL_IRDA_RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2564 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAError() local
2567 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_DMAError()
2569 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in IRDA_DMAError()
2571 hirda->TxXferCount = 0U; in IRDA_DMAError()
2572 IRDA_EndTxTransfer(hirda); in IRDA_DMAError()
2577 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_DMAError()
2579 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in IRDA_DMAError()
2581 hirda->RxXferCount = 0U; in IRDA_DMAError()
2582 IRDA_EndRxTransfer(hirda); in IRDA_DMAError()
2586 hirda->ErrorCode |= HAL_IRDA_ERROR_DMA; in IRDA_DMAError()
2589 hirda->ErrorCallback(hirda); in IRDA_DMAError()
2592 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAError()
2604 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAAbortOnError() local
2605 hirda->RxXferCount = 0U; in IRDA_DMAAbortOnError()
2606 hirda->TxXferCount = 0U; in IRDA_DMAAbortOnError()
2610 hirda->ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2613 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2627 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxAbortCallback() local
2629 hirda->hdmatx->XferAbortCallback = NULL; in IRDA_DMATxAbortCallback()
2632 if (hirda->hdmarx != NULL) in IRDA_DMATxAbortCallback()
2634 if (hirda->hdmarx->XferAbortCallback != NULL) in IRDA_DMATxAbortCallback()
2641 hirda->TxXferCount = 0U; in IRDA_DMATxAbortCallback()
2642 hirda->RxXferCount = 0U; in IRDA_DMATxAbortCallback()
2645 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMATxAbortCallback()
2648 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMATxAbortCallback()
2651 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2652 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2657 hirda->AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2660 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2675 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMARxAbortCallback() local
2677 hirda->hdmarx->XferAbortCallback = NULL; in IRDA_DMARxAbortCallback()
2680 if (hirda->hdmatx != NULL) in IRDA_DMARxAbortCallback()
2682 if (hirda->hdmatx->XferAbortCallback != NULL) in IRDA_DMARxAbortCallback()
2689 hirda->TxXferCount = 0U; in IRDA_DMARxAbortCallback()
2690 hirda->RxXferCount = 0U; in IRDA_DMARxAbortCallback()
2693 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMARxAbortCallback()
2696 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxAbortCallback()
2699 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2700 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2705 hirda->AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2708 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2723 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxOnlyAbortCallback() local
2725 hirda->TxXferCount = 0U; in IRDA_DMATxOnlyAbortCallback()
2728 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxOnlyAbortCallback()
2733 hirda->AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2736 HAL_IRDA_AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2750 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in IRDA_DMARxOnlyAbortCallback() local
2752 hirda->RxXferCount = 0U; in IRDA_DMARxOnlyAbortCallback()
2755 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxOnlyAbortCallback()
2758 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxOnlyAbortCallback()
2763 hirda->AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2766 HAL_IRDA_AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2778 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_Transmit_IT() argument
2783 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_Transmit_IT()
2785 if (hirda->TxXferCount == 0U) in IRDA_Transmit_IT()
2788 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TXEIE); in IRDA_Transmit_IT()
2791 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_Transmit_IT()
2795 … if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Transmit_IT()
2797 tmp = (const uint16_t *) hirda->pTxBuffPtr; /* Derogation R.11.3 */ in IRDA_Transmit_IT()
2798 hirda->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in IRDA_Transmit_IT()
2799 hirda->pTxBuffPtr += 2U; in IRDA_Transmit_IT()
2803 hirda->Instance->TDR = (uint8_t)(*hirda->pTxBuffPtr & 0xFFU); in IRDA_Transmit_IT()
2804 hirda->pTxBuffPtr++; in IRDA_Transmit_IT()
2806 hirda->TxXferCount--; in IRDA_Transmit_IT()
2817 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_EndTransmit_IT() argument
2820 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_EndTransmit_IT()
2823 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_EndTransmit_IT()
2827 hirda->TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2830 HAL_IRDA_TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2842 static void IRDA_Receive_IT(IRDA_HandleTypeDef *hirda) in IRDA_Receive_IT() argument
2845 uint16_t uhMask = hirda->Mask; in IRDA_Receive_IT()
2849 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_Receive_IT()
2851 uhdata = (uint16_t) READ_REG(hirda->Instance->RDR); in IRDA_Receive_IT()
2852 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Receive_IT()
2854 tmp = (uint16_t *) hirda->pRxBuffPtr; /* Derogation R.11.3 */ in IRDA_Receive_IT()
2856 hirda->pRxBuffPtr += 2U; in IRDA_Receive_IT()
2860 *hirda->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask); in IRDA_Receive_IT()
2861 hirda->pRxBuffPtr++; in IRDA_Receive_IT()
2864 hirda->RxXferCount--; in IRDA_Receive_IT()
2865 if (hirda->RxXferCount == 0U) in IRDA_Receive_IT()
2868 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in IRDA_Receive_IT()
2871 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_Receive_IT()
2874 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_Receive_IT()
2878 hirda->RxCpltCallback(hirda); in IRDA_Receive_IT()
2881 HAL_IRDA_RxCpltCallback(hirda); in IRDA_Receive_IT()
2888 __HAL_IRDA_SEND_REQ(hirda, IRDA_RXDATA_FLUSH_REQUEST); in IRDA_Receive_IT()