Lines Matching refs:hirda
241 void IRDA_InitCallbacksToDefault(IRDA_HandleTypeDef *hirda);
243 static HAL_StatusTypeDef IRDA_SetConfig(IRDA_HandleTypeDef *hirda);
244 static HAL_StatusTypeDef IRDA_CheckIdleState(IRDA_HandleTypeDef *hirda);
245 static HAL_StatusTypeDef IRDA_WaitOnFlagUntilTimeout(IRDA_HandleTypeDef *hirda, uint32_t Flag, Flag…
248 static void IRDA_EndTxTransfer(IRDA_HandleTypeDef *hirda);
250 static void IRDA_EndRxTransfer(IRDA_HandleTypeDef *hirda);
263 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda);
264 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda);
265 static void IRDA_Receive_IT(IRDA_HandleTypeDef *hirda);
332 HAL_StatusTypeDef HAL_IRDA_Init(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Init() argument
335 if (hirda == NULL) in HAL_IRDA_Init()
341 assert_param(IS_IRDA_INSTANCE(hirda->Instance)); in HAL_IRDA_Init()
343 if (hirda->gState == HAL_IRDA_STATE_RESET) in HAL_IRDA_Init()
346 hirda->Lock = HAL_UNLOCKED; in HAL_IRDA_Init()
349 IRDA_InitCallbacksToDefault(hirda); in HAL_IRDA_Init()
351 if (hirda->MspInitCallback == NULL) in HAL_IRDA_Init()
353 hirda->MspInitCallback = HAL_IRDA_MspInit; in HAL_IRDA_Init()
357 hirda->MspInitCallback(hirda); in HAL_IRDA_Init()
360 HAL_IRDA_MspInit(hirda); in HAL_IRDA_Init()
364 hirda->gState = HAL_IRDA_STATE_BUSY; in HAL_IRDA_Init()
367 __HAL_IRDA_DISABLE(hirda); in HAL_IRDA_Init()
370 if (IRDA_SetConfig(hirda) == HAL_ERROR) in HAL_IRDA_Init()
378 CLEAR_BIT(hirda->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN | USART_CR2_STOP)); in HAL_IRDA_Init()
379 CLEAR_BIT(hirda->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL)); in HAL_IRDA_Init()
382 hirda->Instance->CR3 |= USART_CR3_IREN; in HAL_IRDA_Init()
385 __HAL_IRDA_ENABLE(hirda); in HAL_IRDA_Init()
388 return (IRDA_CheckIdleState(hirda)); in HAL_IRDA_Init()
397 HAL_StatusTypeDef HAL_IRDA_DeInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DeInit() argument
400 if (hirda == NULL) in HAL_IRDA_DeInit()
406 assert_param(IS_IRDA_INSTANCE(hirda->Instance)); in HAL_IRDA_DeInit()
408 hirda->gState = HAL_IRDA_STATE_BUSY; in HAL_IRDA_DeInit()
412 if (hirda->MspDeInitCallback == NULL) in HAL_IRDA_DeInit()
414 hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; in HAL_IRDA_DeInit()
417 hirda->MspDeInitCallback(hirda); in HAL_IRDA_DeInit()
419 HAL_IRDA_MspDeInit(hirda); in HAL_IRDA_DeInit()
422 __HAL_IRDA_DISABLE(hirda); in HAL_IRDA_DeInit()
424 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_DeInit()
425 hirda->gState = HAL_IRDA_STATE_RESET; in HAL_IRDA_DeInit()
426 hirda->RxState = HAL_IRDA_STATE_RESET; in HAL_IRDA_DeInit()
429 __HAL_UNLOCK(hirda); in HAL_IRDA_DeInit()
440 __weak void HAL_IRDA_MspInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_MspInit() argument
443 UNUSED(hirda); in HAL_IRDA_MspInit()
456 __weak void HAL_IRDA_MspDeInit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_MspDeInit() argument
459 UNUSED(hirda); in HAL_IRDA_MspDeInit()
488 HAL_StatusTypeDef HAL_IRDA_RegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef C… in HAL_IRDA_RegisterCallback() argument
496 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
501 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_RegisterCallback()
506 hirda->TxHalfCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
510 hirda->TxCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
514 hirda->RxHalfCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
518 hirda->RxCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
522 hirda->ErrorCallback = pCallback; in HAL_IRDA_RegisterCallback()
526 hirda->AbortCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
530 hirda->AbortTransmitCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
534 hirda->AbortReceiveCpltCallback = pCallback; in HAL_IRDA_RegisterCallback()
538 hirda->MspInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
542 hirda->MspDeInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
547 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
554 else if (hirda->gState == HAL_IRDA_STATE_RESET) in HAL_IRDA_RegisterCallback()
559 hirda->MspInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
563 hirda->MspDeInitCallback = pCallback; in HAL_IRDA_RegisterCallback()
568 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
578 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_RegisterCallback()
607 HAL_StatusTypeDef HAL_IRDA_UnRegisterCallback(IRDA_HandleTypeDef *hirda, HAL_IRDA_CallbackIDTypeDef… in HAL_IRDA_UnRegisterCallback() argument
611 if (HAL_IRDA_STATE_READY == hirda->gState) in HAL_IRDA_UnRegisterCallback()
616 …hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltC… in HAL_IRDA_UnRegisterCallback()
620 …hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in HAL_IRDA_UnRegisterCallback()
624 …hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in HAL_IRDA_UnRegisterCallback()
628 …hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in HAL_IRDA_UnRegisterCallback()
632 …hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in HAL_IRDA_UnRegisterCallback()
636 …hirda->AbortCpltCallback = HAL_IRDA_AbortCpltCallback; /* Legacy weak AbortCpltCal… in HAL_IRDA_UnRegisterCallback()
640 hirda->AbortTransmitCpltCallback = HAL_IRDA_AbortTransmitCpltCallback; /* Legacy weak in HAL_IRDA_UnRegisterCallback()
645 hirda->AbortReceiveCpltCallback = HAL_IRDA_AbortReceiveCpltCallback; /* Legacy weak in HAL_IRDA_UnRegisterCallback()
650 …hirda->MspInitCallback = HAL_IRDA_MspInit; /* Legacy weak MspInitCallb… in HAL_IRDA_UnRegisterCallback()
654 …hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; /* Legacy weak MspDeInitCal… in HAL_IRDA_UnRegisterCallback()
659 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
666 else if (HAL_IRDA_STATE_RESET == hirda->gState) in HAL_IRDA_UnRegisterCallback()
671 hirda->MspInitCallback = HAL_IRDA_MspInit; in HAL_IRDA_UnRegisterCallback()
675 hirda->MspDeInitCallback = HAL_IRDA_MspDeInit; in HAL_IRDA_UnRegisterCallback()
680 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
690 hirda->ErrorCode |= HAL_IRDA_ERROR_INVALID_CALLBACK; in HAL_IRDA_UnRegisterCallback()
801 HAL_StatusTypeDef HAL_IRDA_Transmit(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size,… in HAL_IRDA_Transmit() argument
808 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit()
816 __HAL_LOCK(hirda); in HAL_IRDA_Transmit()
818 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit()
819 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit()
824 hirda->TxXferSize = Size; in HAL_IRDA_Transmit()
825 hirda->TxXferCount = Size; in HAL_IRDA_Transmit()
828 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit()
839 while (hirda->TxXferCount > 0U) in HAL_IRDA_Transmit()
841 hirda->TxXferCount--; in HAL_IRDA_Transmit()
843 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
849 hirda->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU); in HAL_IRDA_Transmit()
854 hirda->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU); in HAL_IRDA_Transmit()
859 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Transmit()
865 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit()
868 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit()
890 HAL_StatusTypeDef HAL_IRDA_Receive(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size, uint32… in HAL_IRDA_Receive() argument
898 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive()
906 __HAL_LOCK(hirda); in HAL_IRDA_Receive()
908 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive()
909 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive()
914 hirda->RxXferSize = Size; in HAL_IRDA_Receive()
915 hirda->RxXferCount = Size; in HAL_IRDA_Receive()
919 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive()
920 uhMask = hirda->Mask; in HAL_IRDA_Receive()
923 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive()
935 while (hirda->RxXferCount > 0U) in HAL_IRDA_Receive()
937 hirda->RxXferCount--; in HAL_IRDA_Receive()
939 if (IRDA_WaitOnFlagUntilTimeout(hirda, IRDA_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_IRDA_Receive()
945 *pdata16bits = (uint16_t)(hirda->Instance->RDR & uhMask); in HAL_IRDA_Receive()
950 *pdata8bits = (uint8_t)(hirda->Instance->RDR & (uint8_t)uhMask); in HAL_IRDA_Receive()
956 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive()
959 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive()
980 HAL_StatusTypeDef HAL_IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Si… in HAL_IRDA_Transmit_IT() argument
983 if (hirda->gState == HAL_IRDA_STATE_READY) in HAL_IRDA_Transmit_IT()
991 __HAL_LOCK(hirda); in HAL_IRDA_Transmit_IT()
993 hirda->pTxBuffPtr = pData; in HAL_IRDA_Transmit_IT()
994 hirda->TxXferSize = Size; in HAL_IRDA_Transmit_IT()
995 hirda->TxXferCount = Size; in HAL_IRDA_Transmit_IT()
997 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Transmit_IT()
998 hirda->gState = HAL_IRDA_STATE_BUSY_TX; in HAL_IRDA_Transmit_IT()
1001 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_IT()
1004 SET_BIT(hirda->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in HAL_IRDA_Transmit_IT()
1025 HAL_StatusTypeDef HAL_IRDA_Receive_IT(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_IT() argument
1028 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_IT()
1036 __HAL_LOCK(hirda); in HAL_IRDA_Receive_IT()
1038 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_IT()
1039 hirda->RxXferSize = Size; in HAL_IRDA_Receive_IT()
1040 hirda->RxXferCount = Size; in HAL_IRDA_Receive_IT()
1044 IRDA_MASK_COMPUTATION(hirda); in HAL_IRDA_Receive_IT()
1046 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_IT()
1047 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_IT()
1050 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_IT()
1052 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_IT()
1055 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); in HAL_IRDA_Receive_IT()
1060 SET_BIT(hirda->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in HAL_IRDA_Receive_IT()
1064 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_IT()
1086 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()
1123 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Transmit_DMA()
1129 if ((hirda->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_IRDA_Transmit_DMA()
1131 … if ((hirda->hdmatx->LinkedListQueue != NULL) && (hirda->hdmatx->LinkedListQueue->Head != NULL)) in HAL_IRDA_Transmit_DMA()
1134 hirda->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = nbByte; in HAL_IRDA_Transmit_DMA()
1137 hirda->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = in HAL_IRDA_Transmit_DMA()
1138 (uint32_t)hirda->pTxBuffPtr; in HAL_IRDA_Transmit_DMA()
1141 hirda->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = in HAL_IRDA_Transmit_DMA()
1142 (uint32_t)&hirda->Instance->TDR; in HAL_IRDA_Transmit_DMA()
1145 status = HAL_DMAEx_List_Start_IT(hirda->hdmatx); in HAL_IRDA_Transmit_DMA()
1156 …status = HAL_DMA_Start_IT(hirda->hdmatx, (uint32_t)hirda->pTxBuffPtr, (uint32_t)&hirda->Instance->… in HAL_IRDA_Transmit_DMA()
1162 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_TCF); in HAL_IRDA_Transmit_DMA()
1165 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1169 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Transmit_DMA()
1176 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Transmit_DMA()
1179 __HAL_UNLOCK(hirda); in HAL_IRDA_Transmit_DMA()
1182 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Transmit_DMA()
1206 HAL_StatusTypeDef HAL_IRDA_Receive_DMA(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) in HAL_IRDA_Receive_DMA() argument
1212 if (hirda->RxState == HAL_IRDA_STATE_READY) in HAL_IRDA_Receive_DMA()
1220 __HAL_LOCK(hirda); in HAL_IRDA_Receive_DMA()
1222 hirda->pRxBuffPtr = pData; in HAL_IRDA_Receive_DMA()
1223 hirda->RxXferSize = Size; in HAL_IRDA_Receive_DMA()
1225 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Receive_DMA()
1226 hirda->RxState = HAL_IRDA_STATE_BUSY_RX; in HAL_IRDA_Receive_DMA()
1229 hirda->hdmarx->XferCpltCallback = IRDA_DMAReceiveCplt; in HAL_IRDA_Receive_DMA()
1232 hirda->hdmarx->XferHalfCpltCallback = IRDA_DMAReceiveHalfCplt; in HAL_IRDA_Receive_DMA()
1235 hirda->hdmarx->XferErrorCallback = IRDA_DMAError; in HAL_IRDA_Receive_DMA()
1238 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Receive_DMA()
1242 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in HAL_IRDA_Receive_DMA()
1248 if ((hirda->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_IRDA_Receive_DMA()
1250 … if ((hirda->hdmarx->LinkedListQueue != NULL) && (hirda->hdmarx->LinkedListQueue->Head != NULL)) in HAL_IRDA_Receive_DMA()
1253 hirda->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = nbByte; in HAL_IRDA_Receive_DMA()
1256 hirda->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = in HAL_IRDA_Receive_DMA()
1257 (uint32_t)&hirda->Instance->RDR; in HAL_IRDA_Receive_DMA()
1260 …hirda->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)hirda->p… in HAL_IRDA_Receive_DMA()
1263 status = HAL_DMAEx_List_Start_IT(hirda->hdmarx); in HAL_IRDA_Receive_DMA()
1274 …status = HAL_DMA_Start_IT(hirda->hdmarx, (uint32_t)&hirda->Instance->RDR, (uint32_t)hirda->pRxBuff… in HAL_IRDA_Receive_DMA()
1280 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1282 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_Receive_DMA()
1285 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_Receive_DMA()
1289 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Receive_DMA()
1293 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Receive_DMA()
1300 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Receive_DMA()
1303 __HAL_UNLOCK(hirda); in HAL_IRDA_Receive_DMA()
1306 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Receive_DMA()
1324 HAL_StatusTypeDef HAL_IRDA_DMAPause(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAPause() argument
1327 __HAL_LOCK(hirda); in HAL_IRDA_DMAPause()
1329 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAPause()
1331 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAPause()
1334 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAPause()
1337 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAPause()
1339 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAPause()
1342 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAPause()
1343 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAPause()
1346 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAPause()
1351 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAPause()
1362 HAL_StatusTypeDef HAL_IRDA_DMAResume(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAResume() argument
1365 __HAL_LOCK(hirda); in HAL_IRDA_DMAResume()
1367 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAResume()
1370 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAResume()
1372 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAResume()
1375 __HAL_IRDA_CLEAR_OREFLAG(hirda); in HAL_IRDA_DMAResume()
1378 if (hirda->Init.Parity != IRDA_PARITY_NONE) in HAL_IRDA_DMAResume()
1380 SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in HAL_IRDA_DMAResume()
1382 SET_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_DMAResume()
1385 SET_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAResume()
1389 __HAL_UNLOCK(hirda); in HAL_IRDA_DMAResume()
1400 HAL_StatusTypeDef HAL_IRDA_DMAStop(IRDA_HandleTypeDef *hirda) in HAL_IRDA_DMAStop() argument
1410 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in HAL_IRDA_DMAStop()
1412 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_DMAStop()
1414 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_DMAStop()
1417 if (hirda->hdmatx != NULL) in HAL_IRDA_DMAStop()
1419 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_DMAStop()
1421 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1424 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1431 IRDA_EndTxTransfer(hirda); in HAL_IRDA_DMAStop()
1436 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in HAL_IRDA_DMAStop()
1438 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_DMAStop()
1440 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_DMAStop()
1443 if (hirda->hdmarx != NULL) in HAL_IRDA_DMAStop()
1445 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_DMAStop()
1447 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_DMAStop()
1450 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_DMAStop()
1457 IRDA_EndRxTransfer(hirda); in HAL_IRDA_DMAStop()
1478 HAL_StatusTypeDef HAL_IRDA_Abort(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort() argument
1481 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | \ in HAL_IRDA_Abort()
1483 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort()
1487 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort()
1489 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort()
1492 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort()
1496 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1498 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort()
1500 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1503 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Abort()
1512 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort()
1514 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort()
1517 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort()
1521 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort()
1523 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort()
1525 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_Abort()
1528 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_Abort()
1538 hirda->TxXferCount = 0U; in HAL_IRDA_Abort()
1539 hirda->RxXferCount = 0U; in HAL_IRDA_Abort()
1542 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_Abort()
1545 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort()
1546 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort()
1549 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Abort()
1567 HAL_StatusTypeDef HAL_IRDA_AbortTransmit(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmit() argument
1570 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit()
1574 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit()
1576 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit()
1579 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit()
1583 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_AbortTransmit()
1585 if (HAL_DMA_Abort(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit()
1587 if (HAL_DMA_GetError(hirda->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortTransmit()
1590 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortTransmit()
1600 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit()
1603 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit()
1621 HAL_StatusTypeDef HAL_IRDA_AbortReceive(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive() argument
1624 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive()
1625 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive()
1629 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive()
1631 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive()
1634 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive()
1638 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_AbortReceive()
1640 if (HAL_DMA_Abort(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive()
1642 if (HAL_DMA_GetError(hirda->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_IRDA_AbortReceive()
1645 hirda->ErrorCode = HAL_IRDA_ERROR_DMA; in HAL_IRDA_AbortReceive()
1655 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive()
1658 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive()
1661 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive()
1681 HAL_StatusTypeDef HAL_IRDA_Abort_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_Abort_IT() argument
1686 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | \ in HAL_IRDA_Abort_IT()
1688 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_Abort_IT()
1694 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1698 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1700 hirda->hdmatx->XferAbortCallback = IRDA_DMATxAbortCallback; in HAL_IRDA_Abort_IT()
1704 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1708 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1712 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1714 hirda->hdmarx->XferAbortCallback = IRDA_DMARxAbortCallback; in HAL_IRDA_Abort_IT()
1718 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1723 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_Abort_IT()
1726 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_Abort_IT()
1729 if (hirda->hdmatx != NULL) in HAL_IRDA_Abort_IT()
1735 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_Abort_IT()
1737 hirda->hdmatx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1747 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_Abort_IT()
1749 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_Abort_IT()
1752 if (hirda->hdmarx != NULL) in HAL_IRDA_Abort_IT()
1758 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_Abort_IT()
1760 hirda->hdmarx->XferAbortCallback = NULL; in HAL_IRDA_Abort_IT()
1775 hirda->TxXferCount = 0U; in HAL_IRDA_Abort_IT()
1776 hirda->RxXferCount = 0U; in HAL_IRDA_Abort_IT()
1779 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_Abort_IT()
1782 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_Abort_IT()
1785 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1786 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_Abort_IT()
1791 hirda->AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1794 HAL_IRDA_AbortCpltCallback(hirda); in HAL_IRDA_Abort_IT()
1816 HAL_StatusTypeDef HAL_IRDA_AbortTransmit_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmit_IT() argument
1819 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in HAL_IRDA_AbortTransmit_IT()
1823 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in HAL_IRDA_AbortTransmit_IT()
1825 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in HAL_IRDA_AbortTransmit_IT()
1828 if (hirda->hdmatx != NULL) in HAL_IRDA_AbortTransmit_IT()
1832 hirda->hdmatx->XferAbortCallback = IRDA_DMATxOnlyAbortCallback; in HAL_IRDA_AbortTransmit_IT()
1835 if (HAL_DMA_Abort_IT(hirda->hdmatx) != HAL_OK) in HAL_IRDA_AbortTransmit_IT()
1838 hirda->hdmatx->XferAbortCallback(hirda->hdmatx); in HAL_IRDA_AbortTransmit_IT()
1844 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit_IT()
1847 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit_IT()
1852 hirda->AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1855 HAL_IRDA_AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1863 hirda->TxXferCount = 0U; in HAL_IRDA_AbortTransmit_IT()
1866 hirda->gState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortTransmit_IT()
1871 hirda->AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1874 HAL_IRDA_AbortTransmitCpltCallback(hirda); in HAL_IRDA_AbortTransmit_IT()
1896 HAL_StatusTypeDef HAL_IRDA_AbortReceive_IT(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceive_IT() argument
1899 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in HAL_IRDA_AbortReceive_IT()
1900 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in HAL_IRDA_AbortReceive_IT()
1904 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_AbortReceive_IT()
1906 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_AbortReceive_IT()
1909 if (hirda->hdmarx != NULL) in HAL_IRDA_AbortReceive_IT()
1913 hirda->hdmarx->XferAbortCallback = IRDA_DMARxOnlyAbortCallback; in HAL_IRDA_AbortReceive_IT()
1916 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_AbortReceive_IT()
1919 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_AbortReceive_IT()
1925 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive_IT()
1928 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive_IT()
1931 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive_IT()
1936 hirda->AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1939 HAL_IRDA_AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1947 hirda->RxXferCount = 0U; in HAL_IRDA_AbortReceive_IT()
1950 … __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in HAL_IRDA_AbortReceive_IT()
1953 hirda->RxState = HAL_IRDA_STATE_READY; in HAL_IRDA_AbortReceive_IT()
1958 hirda->AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1961 HAL_IRDA_AbortReceiveCpltCallback(hirda); in HAL_IRDA_AbortReceive_IT()
1974 void HAL_IRDA_IRQHandler(IRDA_HandleTypeDef *hirda) in HAL_IRDA_IRQHandler() argument
1976 uint32_t isrflags = READ_REG(hirda->Instance->ISR); in HAL_IRDA_IRQHandler()
1977 uint32_t cr1its = READ_REG(hirda->Instance->CR1); in HAL_IRDA_IRQHandler()
1989 IRDA_Receive_IT(hirda); in HAL_IRDA_IRQHandler()
1995 cr3its = READ_REG(hirda->Instance->CR3); in HAL_IRDA_IRQHandler()
2003 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_PEF); in HAL_IRDA_IRQHandler()
2005 hirda->ErrorCode |= HAL_IRDA_ERROR_PE; in HAL_IRDA_IRQHandler()
2011 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_FEF); in HAL_IRDA_IRQHandler()
2013 hirda->ErrorCode |= HAL_IRDA_ERROR_FE; in HAL_IRDA_IRQHandler()
2019 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_NEF); in HAL_IRDA_IRQHandler()
2021 hirda->ErrorCode |= HAL_IRDA_ERROR_NE; in HAL_IRDA_IRQHandler()
2028 __HAL_IRDA_CLEAR_IT(hirda, IRDA_CLEAR_OREF); in HAL_IRDA_IRQHandler()
2030 hirda->ErrorCode |= HAL_IRDA_ERROR_ORE; in HAL_IRDA_IRQHandler()
2034 if (hirda->ErrorCode != HAL_IRDA_ERROR_NONE) in HAL_IRDA_IRQHandler()
2039 IRDA_Receive_IT(hirda); in HAL_IRDA_IRQHandler()
2044 errorcode = hirda->ErrorCode; in HAL_IRDA_IRQHandler()
2045 if ((HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) || in HAL_IRDA_IRQHandler()
2051 IRDA_EndRxTransfer(hirda); in HAL_IRDA_IRQHandler()
2055 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in HAL_IRDA_IRQHandler()
2057 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in HAL_IRDA_IRQHandler()
2060 if (hirda->hdmarx != NULL) in HAL_IRDA_IRQHandler()
2064 hirda->hdmarx->XferAbortCallback = IRDA_DMAAbortOnError; in HAL_IRDA_IRQHandler()
2067 if (HAL_DMA_Abort_IT(hirda->hdmarx) != HAL_OK) in HAL_IRDA_IRQHandler()
2070 hirda->hdmarx->XferAbortCallback(hirda->hdmarx); in HAL_IRDA_IRQHandler()
2077 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2080 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2089 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2092 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2102 hirda->ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2105 HAL_IRDA_ErrorCallback(hirda); in HAL_IRDA_IRQHandler()
2107 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in HAL_IRDA_IRQHandler()
2117 IRDA_Transmit_IT(hirda); in HAL_IRDA_IRQHandler()
2124 IRDA_EndTransmit_IT(hirda); in HAL_IRDA_IRQHandler()
2136 __weak void HAL_IRDA_TxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxCpltCallback() argument
2139 UNUSED(hirda); in HAL_IRDA_TxCpltCallback()
2152 __weak void HAL_IRDA_TxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_TxHalfCpltCallback() argument
2155 UNUSED(hirda); in HAL_IRDA_TxHalfCpltCallback()
2168 __weak void HAL_IRDA_RxCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxCpltCallback() argument
2171 UNUSED(hirda); in HAL_IRDA_RxCpltCallback()
2184 __weak void HAL_IRDA_RxHalfCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_RxHalfCpltCallback() argument
2187 UNUSED(hirda); in HAL_IRDA_RxHalfCpltCallback()
2200 __weak void HAL_IRDA_ErrorCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_ErrorCallback() argument
2203 UNUSED(hirda); in HAL_IRDA_ErrorCallback()
2216 __weak void HAL_IRDA_AbortCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortCpltCallback() argument
2219 UNUSED(hirda); in HAL_IRDA_AbortCpltCallback()
2232 __weak void HAL_IRDA_AbortTransmitCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortTransmitCpltCallback() argument
2235 UNUSED(hirda); in HAL_IRDA_AbortTransmitCpltCallback()
2248 __weak void HAL_IRDA_AbortReceiveCpltCallback(IRDA_HandleTypeDef *hirda) in HAL_IRDA_AbortReceiveCpltCallback() argument
2251 UNUSED(hirda); in HAL_IRDA_AbortReceiveCpltCallback()
2287 HAL_IRDA_StateTypeDef HAL_IRDA_GetState(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetState() argument
2292 temp1 = (uint32_t)hirda->gState; in HAL_IRDA_GetState()
2293 temp2 = (uint32_t)hirda->RxState; in HAL_IRDA_GetState()
2304 uint32_t HAL_IRDA_GetError(const IRDA_HandleTypeDef *hirda) in HAL_IRDA_GetError() argument
2306 return hirda->ErrorCode; in HAL_IRDA_GetError()
2327 void IRDA_InitCallbacksToDefault(IRDA_HandleTypeDef *hirda) in IRDA_InitCallbacksToDefault() argument
2330 …hirda->TxHalfCpltCallback = HAL_IRDA_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2331 …hirda->TxCpltCallback = HAL_IRDA_TxCpltCallback; /* Legacy weak TxCpltCallba… in IRDA_InitCallbacksToDefault()
2332 …hirda->RxHalfCpltCallback = HAL_IRDA_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCa… in IRDA_InitCallbacksToDefault()
2333 …hirda->RxCpltCallback = HAL_IRDA_RxCpltCallback; /* Legacy weak RxCpltCallba… in IRDA_InitCallbacksToDefault()
2334 …hirda->ErrorCallback = HAL_IRDA_ErrorCallback; /* Legacy weak ErrorCallbac… in IRDA_InitCallbacksToDefault()
2335 …hirda->AbortCpltCallback = HAL_IRDA_AbortCpltCallback; /* Legacy weak AbortCpltCal… in IRDA_InitCallbacksToDefault()
2336 …hirda->AbortTransmitCpltCallback = HAL_IRDA_AbortTransmitCpltCallback; /* Legacy weak AbortTransmi… in IRDA_InitCallbacksToDefault()
2337 …hirda->AbortReceiveCpltCallback = HAL_IRDA_AbortReceiveCpltCallback; /* Legacy weak AbortReceive… in IRDA_InitCallbacksToDefault()
2348 static HAL_StatusTypeDef IRDA_SetConfig(IRDA_HandleTypeDef *hirda) in IRDA_SetConfig() argument
2357 assert_param(IS_IRDA_BAUDRATE(hirda->Init.BaudRate)); in IRDA_SetConfig()
2358 assert_param(IS_IRDA_WORD_LENGTH(hirda->Init.WordLength)); in IRDA_SetConfig()
2359 assert_param(IS_IRDA_PARITY(hirda->Init.Parity)); in IRDA_SetConfig()
2360 assert_param(IS_IRDA_TX_RX_MODE(hirda->Init.Mode)); in IRDA_SetConfig()
2361 assert_param(IS_IRDA_PRESCALER(hirda->Init.Prescaler)); in IRDA_SetConfig()
2362 assert_param(IS_IRDA_POWERMODE(hirda->Init.PowerMode)); in IRDA_SetConfig()
2363 assert_param(IS_IRDA_CLOCKPRESCALER(hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2370 tmpreg = (uint32_t)hirda->Init.WordLength | hirda->Init.Parity | hirda->Init.Mode ; in IRDA_SetConfig()
2372 MODIFY_REG(hirda->Instance->CR1, IRDA_CR1_FIELDS, tmpreg); in IRDA_SetConfig()
2375 MODIFY_REG(hirda->Instance->CR3, USART_CR3_IRLP, hirda->Init.PowerMode); in IRDA_SetConfig()
2380 MODIFY_REG(hirda->Instance->PRESC, USART_PRESC_PRESCALER, hirda->Init.ClockPrescaler); 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, hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2396 … tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate, hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2399 …tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(HSI_VALUE, hirda->Init.BaudRate, hirda->Init.ClockPrescale… in IRDA_SetConfig()
2403 … tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate, hirda->Init.ClockPrescaler)); in IRDA_SetConfig()
2406 …tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16((uint32_t)LSE_VALUE, hirda->Init.BaudRate, hirda->Init.Clo… 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_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFNF… 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()
2520 static void IRDA_EndTxTransfer(IRDA_HandleTypeDef *hirda) in IRDA_EndTxTransfer() argument
2523 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in IRDA_EndTxTransfer()
2526 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_EndTxTransfer()
2536 static void IRDA_EndRxTransfer(IRDA_HandleTypeDef *hirda) in IRDA_EndRxTransfer() argument
2539 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in IRDA_EndRxTransfer()
2540 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_EndRxTransfer()
2543 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_EndRxTransfer()
2556 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitCplt() local
2561 hirda->TxXferCount = 0U; in IRDA_DMATransmitCplt()
2565 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAT); in IRDA_DMATransmitCplt()
2568 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_DMATransmitCplt()
2575 hirda->TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2578 HAL_IRDA_TxCpltCallback(hirda); in IRDA_DMATransmitCplt()
2592 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATransmitHalfCplt() local
2596 hirda->TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2599 HAL_IRDA_TxHalfCpltCallback(hirda); in IRDA_DMATransmitHalfCplt()
2611 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveCplt() local
2616 hirda->RxXferCount = 0U; in IRDA_DMAReceiveCplt()
2619 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_PEIE); in IRDA_DMAReceiveCplt()
2620 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_DMAReceiveCplt()
2624 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_DMAR); in IRDA_DMAReceiveCplt()
2627 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMAReceiveCplt()
2632 hirda->RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2635 HAL_IRDA_RxCpltCallback(hirda); in IRDA_DMAReceiveCplt()
2647 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAReceiveHalfCplt() local
2651 hirda->RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2654 HAL_IRDA_RxHalfCpltCallback(hirda); in IRDA_DMAReceiveHalfCplt()
2666 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAError() local
2669 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_DMAError()
2671 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAT)) in IRDA_DMAError()
2673 hirda->TxXferCount = 0U; in IRDA_DMAError()
2674 IRDA_EndTxTransfer(hirda); in IRDA_DMAError()
2679 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_DMAError()
2681 if (HAL_IS_BIT_SET(hirda->Instance->CR3, USART_CR3_DMAR)) in IRDA_DMAError()
2683 hirda->RxXferCount = 0U; in IRDA_DMAError()
2684 IRDA_EndRxTransfer(hirda); in IRDA_DMAError()
2688 hirda->ErrorCode |= HAL_IRDA_ERROR_DMA; in IRDA_DMAError()
2691 hirda->ErrorCallback(hirda); in IRDA_DMAError()
2694 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAError()
2706 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMAAbortOnError() local
2707 hirda->RxXferCount = 0U; in IRDA_DMAAbortOnError()
2708 hirda->TxXferCount = 0U; in IRDA_DMAAbortOnError()
2712 hirda->ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2715 HAL_IRDA_ErrorCallback(hirda); in IRDA_DMAAbortOnError()
2729 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxAbortCallback() local
2731 hirda->hdmatx->XferAbortCallback = NULL; in IRDA_DMATxAbortCallback()
2734 if (hirda->hdmarx != NULL) in IRDA_DMATxAbortCallback()
2736 if (hirda->hdmarx->XferAbortCallback != NULL) in IRDA_DMATxAbortCallback()
2743 hirda->TxXferCount = 0U; in IRDA_DMATxAbortCallback()
2744 hirda->RxXferCount = 0U; in IRDA_DMATxAbortCallback()
2747 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMATxAbortCallback()
2750 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMATxAbortCallback()
2753 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2754 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMATxAbortCallback()
2759 hirda->AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2762 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMATxAbortCallback()
2777 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMARxAbortCallback() local
2779 hirda->hdmarx->XferAbortCallback = NULL; in IRDA_DMARxAbortCallback()
2782 if (hirda->hdmatx != NULL) in IRDA_DMARxAbortCallback()
2784 if (hirda->hdmatx->XferAbortCallback != NULL) in IRDA_DMARxAbortCallback()
2791 hirda->TxXferCount = 0U; in IRDA_DMARxAbortCallback()
2792 hirda->RxXferCount = 0U; in IRDA_DMARxAbortCallback()
2795 hirda->ErrorCode = HAL_IRDA_ERROR_NONE; in IRDA_DMARxAbortCallback()
2798 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxAbortCallback()
2801 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2802 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxAbortCallback()
2807 hirda->AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2810 HAL_IRDA_AbortCpltCallback(hirda); in IRDA_DMARxAbortCallback()
2825 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)(hdma->Parent); in IRDA_DMATxOnlyAbortCallback() local
2827 hirda->TxXferCount = 0U; in IRDA_DMATxOnlyAbortCallback()
2830 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_DMATxOnlyAbortCallback()
2835 hirda->AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2838 HAL_IRDA_AbortTransmitCpltCallback(hirda); in IRDA_DMATxOnlyAbortCallback()
2852 IRDA_HandleTypeDef *hirda = (IRDA_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in IRDA_DMARxOnlyAbortCallback() local
2854 hirda->RxXferCount = 0U; in IRDA_DMARxOnlyAbortCallback()
2857 __HAL_IRDA_CLEAR_FLAG(hirda, IRDA_CLEAR_OREF | IRDA_CLEAR_NEF | IRDA_CLEAR_PEF | IRDA_CLEAR_FEF); in IRDA_DMARxOnlyAbortCallback()
2860 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_DMARxOnlyAbortCallback()
2865 hirda->AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2868 HAL_IRDA_AbortReceiveCpltCallback(hirda); in IRDA_DMARxOnlyAbortCallback()
2881 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_Transmit_IT() argument
2886 if (hirda->gState == HAL_IRDA_STATE_BUSY_TX) in IRDA_Transmit_IT()
2888 if (hirda->TxXferCount == 0U) in IRDA_Transmit_IT()
2891 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in IRDA_Transmit_IT()
2894 SET_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_Transmit_IT()
2898 … if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Transmit_IT()
2900 tmp = (const uint16_t *) hirda->pTxBuffPtr; /* Derogation R.11.3 */ in IRDA_Transmit_IT()
2901 hirda->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in IRDA_Transmit_IT()
2902 hirda->pTxBuffPtr += 2U; in IRDA_Transmit_IT()
2906 hirda->Instance->TDR = (uint8_t)(*hirda->pTxBuffPtr & 0xFFU); in IRDA_Transmit_IT()
2907 hirda->pTxBuffPtr++; in IRDA_Transmit_IT()
2909 hirda->TxXferCount--; in IRDA_Transmit_IT()
2920 static void IRDA_EndTransmit_IT(IRDA_HandleTypeDef *hirda) in IRDA_EndTransmit_IT() argument
2923 CLEAR_BIT(hirda->Instance->CR1, USART_CR1_TCIE); in IRDA_EndTransmit_IT()
2926 hirda->gState = HAL_IRDA_STATE_READY; in IRDA_EndTransmit_IT()
2930 hirda->TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2933 HAL_IRDA_TxCpltCallback(hirda); in IRDA_EndTransmit_IT()
2945 static void IRDA_Receive_IT(IRDA_HandleTypeDef *hirda) in IRDA_Receive_IT() argument
2948 uint16_t uhMask = hirda->Mask; in IRDA_Receive_IT()
2952 if (hirda->RxState == HAL_IRDA_STATE_BUSY_RX) in IRDA_Receive_IT()
2954 uhdata = (uint16_t) READ_REG(hirda->Instance->RDR); in IRDA_Receive_IT()
2955 if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE)) in IRDA_Receive_IT()
2957 tmp = (uint16_t *) hirda->pRxBuffPtr; /* Derogation R.11.3 */ in IRDA_Receive_IT()
2959 hirda->pRxBuffPtr += 2U; in IRDA_Receive_IT()
2963 *hirda->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask); in IRDA_Receive_IT()
2964 hirda->pRxBuffPtr++; in IRDA_Receive_IT()
2967 hirda->RxXferCount--; in IRDA_Receive_IT()
2968 if (hirda->RxXferCount == 0U) in IRDA_Receive_IT()
2971 CLEAR_BIT(hirda->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in IRDA_Receive_IT()
2974 CLEAR_BIT(hirda->Instance->CR3, USART_CR3_EIE); in IRDA_Receive_IT()
2977 hirda->RxState = HAL_IRDA_STATE_READY; in IRDA_Receive_IT()
2981 hirda->RxCpltCallback(hirda); in IRDA_Receive_IT()
2984 HAL_IRDA_RxCpltCallback(hirda); in IRDA_Receive_IT()
2991 __HAL_IRDA_SEND_REQ(hirda, IRDA_RXDATA_FLUSH_REQUEST); in IRDA_Receive_IT()