Lines Matching refs:hsmbus

212 static HAL_StatusTypeDef SMBUS_WaitOnFlagUntilTimeout(SMBUS_HandleTypeDef *hsmbus, uint32_t Flag,
216 static HAL_StatusTypeDef SMBUS_Master_ISR(SMBUS_HandleTypeDef *hsmbus, uint32_t StatusFlags);
217 static HAL_StatusTypeDef SMBUS_Slave_ISR(SMBUS_HandleTypeDef *hsmbus, uint32_t StatusFlags);
218 static void SMBUS_ITErrorHandler(SMBUS_HandleTypeDef *hsmbus);
221 static void SMBUS_Enable_IRQ(SMBUS_HandleTypeDef *hsmbus, uint32_t InterruptRequest);
222 static void SMBUS_Disable_IRQ(SMBUS_HandleTypeDef *hsmbus, uint32_t InterruptRequest);
225 static void SMBUS_Flush_TXDR(SMBUS_HandleTypeDef *hsmbus);
228 static void SMBUS_TransferConfig(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress, uint8_t Size,
232 static void SMBUS_ConvertOtherXferOptions(SMBUS_HandleTypeDef *hsmbus);
289 HAL_StatusTypeDef HAL_SMBUS_Init(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_Init() argument
292 if (hsmbus == NULL) in HAL_SMBUS_Init()
298 assert_param(IS_SMBUS_ALL_INSTANCE(hsmbus->Instance)); in HAL_SMBUS_Init()
299 assert_param(IS_SMBUS_ANALOG_FILTER(hsmbus->Init.AnalogFilter)); in HAL_SMBUS_Init()
300 assert_param(IS_SMBUS_OWN_ADDRESS1(hsmbus->Init.OwnAddress1)); in HAL_SMBUS_Init()
301 assert_param(IS_SMBUS_ADDRESSING_MODE(hsmbus->Init.AddressingMode)); in HAL_SMBUS_Init()
302 assert_param(IS_SMBUS_DUAL_ADDRESS(hsmbus->Init.DualAddressMode)); in HAL_SMBUS_Init()
303 assert_param(IS_SMBUS_OWN_ADDRESS2(hsmbus->Init.OwnAddress2)); in HAL_SMBUS_Init()
304 assert_param(IS_SMBUS_OWN_ADDRESS2_MASK(hsmbus->Init.OwnAddress2Masks)); in HAL_SMBUS_Init()
305 assert_param(IS_SMBUS_GENERAL_CALL(hsmbus->Init.GeneralCallMode)); in HAL_SMBUS_Init()
306 assert_param(IS_SMBUS_NO_STRETCH(hsmbus->Init.NoStretchMode)); in HAL_SMBUS_Init()
307 assert_param(IS_SMBUS_PEC(hsmbus->Init.PacketErrorCheckMode)); in HAL_SMBUS_Init()
308 assert_param(IS_SMBUS_PERIPHERAL_MODE(hsmbus->Init.PeripheralMode)); in HAL_SMBUS_Init()
310 if (hsmbus->State == HAL_SMBUS_STATE_RESET) in HAL_SMBUS_Init()
313 hsmbus->Lock = HAL_UNLOCKED; in HAL_SMBUS_Init()
316hsmbus->MasterTxCpltCallback = HAL_SMBUS_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback… in HAL_SMBUS_Init()
317hsmbus->MasterRxCpltCallback = HAL_SMBUS_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback… in HAL_SMBUS_Init()
318hsmbus->SlaveTxCpltCallback = HAL_SMBUS_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback … in HAL_SMBUS_Init()
319hsmbus->SlaveRxCpltCallback = HAL_SMBUS_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback … in HAL_SMBUS_Init()
320hsmbus->ListenCpltCallback = HAL_SMBUS_ListenCpltCallback; /* Legacy weak ListenCpltCallback … in HAL_SMBUS_Init()
321hsmbus->ErrorCallback = HAL_SMBUS_ErrorCallback; /* Legacy weak ErrorCallback … in HAL_SMBUS_Init()
322hsmbus->AddrCallback = HAL_SMBUS_AddrCallback; /* Legacy weak AddrCallback … in HAL_SMBUS_Init()
324 if (hsmbus->MspInitCallback == NULL) in HAL_SMBUS_Init()
326 hsmbus->MspInitCallback = HAL_SMBUS_MspInit; /* Legacy weak MspInit */ in HAL_SMBUS_Init()
330 hsmbus->MspInitCallback(hsmbus); in HAL_SMBUS_Init()
333 HAL_SMBUS_MspInit(hsmbus); in HAL_SMBUS_Init()
337 hsmbus->State = HAL_SMBUS_STATE_BUSY; in HAL_SMBUS_Init()
340 __HAL_SMBUS_DISABLE(hsmbus); in HAL_SMBUS_Init()
344 hsmbus->Instance->TIMINGR = hsmbus->Init.Timing & TIMING_CLEAR_MASK; in HAL_SMBUS_Init()
348 hsmbus->Instance->TIMEOUTR &= ~I2C_TIMEOUTR_TIMOUTEN; in HAL_SMBUS_Init()
349 hsmbus->Instance->TIMEOUTR &= ~I2C_TIMEOUTR_TEXTEN; in HAL_SMBUS_Init()
350 hsmbus->Instance->TIMEOUTR = hsmbus->Init.SMBusTimeout; in HAL_SMBUS_Init()
354 hsmbus->Instance->OAR1 &= ~I2C_OAR1_OA1EN; in HAL_SMBUS_Init()
356 if (hsmbus->Init.OwnAddress1 != 0UL) in HAL_SMBUS_Init()
358 if (hsmbus->Init.AddressingMode == SMBUS_ADDRESSINGMODE_7BIT) in HAL_SMBUS_Init()
360 hsmbus->Instance->OAR1 = (I2C_OAR1_OA1EN | hsmbus->Init.OwnAddress1); in HAL_SMBUS_Init()
367 hsmbus->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); in HAL_SMBUS_Init()
371 hsmbus->Instance->OAR2 = (hsmbus->Init.DualAddressMode | hsmbus->Init.OwnAddress2 | \ in HAL_SMBUS_Init()
372 (hsmbus->Init.OwnAddress2Masks << 8U)); in HAL_SMBUS_Init()
376 hsmbus->Instance->CR1 = (hsmbus->Init.GeneralCallMode | hsmbus->Init.NoStretchMode | \ in HAL_SMBUS_Init()
377 hsmbus->Init.PacketErrorCheckMode | hsmbus->Init.PeripheralMode | \ in HAL_SMBUS_Init()
378 hsmbus->Init.AnalogFilter); in HAL_SMBUS_Init()
382 if ((hsmbus->Init.PacketErrorCheckMode == SMBUS_PEC_ENABLE) && \ in HAL_SMBUS_Init()
383 ((hsmbus->Init.PeripheralMode == SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE) || \ in HAL_SMBUS_Init()
384 (hsmbus->Init.PeripheralMode == SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE_ARP))) in HAL_SMBUS_Init()
386 hsmbus->Instance->CR1 |= I2C_CR1_SBC; in HAL_SMBUS_Init()
390 __HAL_SMBUS_ENABLE(hsmbus); in HAL_SMBUS_Init()
392 hsmbus->ErrorCode = HAL_SMBUS_ERROR_NONE; in HAL_SMBUS_Init()
393 hsmbus->PreviousState = HAL_SMBUS_STATE_READY; in HAL_SMBUS_Init()
394 hsmbus->State = HAL_SMBUS_STATE_READY; in HAL_SMBUS_Init()
405 HAL_StatusTypeDef HAL_SMBUS_DeInit(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_DeInit() argument
408 if (hsmbus == NULL) in HAL_SMBUS_DeInit()
414 assert_param(IS_SMBUS_ALL_INSTANCE(hsmbus->Instance)); in HAL_SMBUS_DeInit()
416 hsmbus->State = HAL_SMBUS_STATE_BUSY; in HAL_SMBUS_DeInit()
419 __HAL_SMBUS_DISABLE(hsmbus); in HAL_SMBUS_DeInit()
422 if (hsmbus->MspDeInitCallback == NULL) in HAL_SMBUS_DeInit()
424 hsmbus->MspDeInitCallback = HAL_SMBUS_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SMBUS_DeInit()
428 hsmbus->MspDeInitCallback(hsmbus); in HAL_SMBUS_DeInit()
431 HAL_SMBUS_MspDeInit(hsmbus); in HAL_SMBUS_DeInit()
434 hsmbus->ErrorCode = HAL_SMBUS_ERROR_NONE; in HAL_SMBUS_DeInit()
435 hsmbus->PreviousState = HAL_SMBUS_STATE_RESET; in HAL_SMBUS_DeInit()
436 hsmbus->State = HAL_SMBUS_STATE_RESET; in HAL_SMBUS_DeInit()
439 __HAL_UNLOCK(hsmbus); in HAL_SMBUS_DeInit()
450 __weak void HAL_SMBUS_MspInit(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_MspInit() argument
453 UNUSED(hsmbus); in HAL_SMBUS_MspInit()
466 __weak void HAL_SMBUS_MspDeInit(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_MspDeInit() argument
469 UNUSED(hsmbus); in HAL_SMBUS_MspDeInit()
485 HAL_StatusTypeDef HAL_SMBUS_ConfigAnalogFilter(SMBUS_HandleTypeDef *hsmbus, uint32_t AnalogFilter) in HAL_SMBUS_ConfigAnalogFilter() argument
488 assert_param(IS_SMBUS_ALL_INSTANCE(hsmbus->Instance)); in HAL_SMBUS_ConfigAnalogFilter()
491 if (hsmbus->State == HAL_SMBUS_STATE_READY) in HAL_SMBUS_ConfigAnalogFilter()
494 __HAL_LOCK(hsmbus); in HAL_SMBUS_ConfigAnalogFilter()
496 hsmbus->State = HAL_SMBUS_STATE_BUSY; in HAL_SMBUS_ConfigAnalogFilter()
499 __HAL_SMBUS_DISABLE(hsmbus); in HAL_SMBUS_ConfigAnalogFilter()
502 hsmbus->Instance->CR1 &= ~(I2C_CR1_ANFOFF); in HAL_SMBUS_ConfigAnalogFilter()
505 hsmbus->Instance->CR1 |= AnalogFilter; in HAL_SMBUS_ConfigAnalogFilter()
507 __HAL_SMBUS_ENABLE(hsmbus); in HAL_SMBUS_ConfigAnalogFilter()
509 hsmbus->State = HAL_SMBUS_STATE_READY; in HAL_SMBUS_ConfigAnalogFilter()
512 __HAL_UNLOCK(hsmbus); in HAL_SMBUS_ConfigAnalogFilter()
529 HAL_StatusTypeDef HAL_SMBUS_ConfigDigitalFilter(SMBUS_HandleTypeDef *hsmbus, uint32_t DigitalFilter) in HAL_SMBUS_ConfigDigitalFilter() argument
534 assert_param(IS_SMBUS_ALL_INSTANCE(hsmbus->Instance)); in HAL_SMBUS_ConfigDigitalFilter()
537 if (hsmbus->State == HAL_SMBUS_STATE_READY) in HAL_SMBUS_ConfigDigitalFilter()
540 __HAL_LOCK(hsmbus); in HAL_SMBUS_ConfigDigitalFilter()
542 hsmbus->State = HAL_SMBUS_STATE_BUSY; in HAL_SMBUS_ConfigDigitalFilter()
545 __HAL_SMBUS_DISABLE(hsmbus); in HAL_SMBUS_ConfigDigitalFilter()
548 tmpreg = hsmbus->Instance->CR1; in HAL_SMBUS_ConfigDigitalFilter()
557 hsmbus->Instance->CR1 = tmpreg; in HAL_SMBUS_ConfigDigitalFilter()
559 __HAL_SMBUS_ENABLE(hsmbus); in HAL_SMBUS_ConfigDigitalFilter()
561 hsmbus->State = HAL_SMBUS_STATE_READY; in HAL_SMBUS_ConfigDigitalFilter()
564 __HAL_UNLOCK(hsmbus); in HAL_SMBUS_ConfigDigitalFilter()
596 HAL_StatusTypeDef HAL_SMBUS_RegisterCallback(SMBUS_HandleTypeDef *hsmbus, in HAL_SMBUS_RegisterCallback() argument
605 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK; in HAL_SMBUS_RegisterCallback()
610 if (HAL_SMBUS_STATE_READY == hsmbus->State) in HAL_SMBUS_RegisterCallback()
615 hsmbus->MasterTxCpltCallback = pCallback; in HAL_SMBUS_RegisterCallback()
619 hsmbus->MasterRxCpltCallback = pCallback; in HAL_SMBUS_RegisterCallback()
623 hsmbus->SlaveTxCpltCallback = pCallback; in HAL_SMBUS_RegisterCallback()
627 hsmbus->SlaveRxCpltCallback = pCallback; in HAL_SMBUS_RegisterCallback()
631 hsmbus->ListenCpltCallback = pCallback; in HAL_SMBUS_RegisterCallback()
635 hsmbus->ErrorCallback = pCallback; in HAL_SMBUS_RegisterCallback()
639 hsmbus->MspInitCallback = pCallback; in HAL_SMBUS_RegisterCallback()
643 hsmbus->MspDeInitCallback = pCallback; in HAL_SMBUS_RegisterCallback()
648 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK; in HAL_SMBUS_RegisterCallback()
655 else if (HAL_SMBUS_STATE_RESET == hsmbus->State) in HAL_SMBUS_RegisterCallback()
660 hsmbus->MspInitCallback = pCallback; in HAL_SMBUS_RegisterCallback()
664 hsmbus->MspDeInitCallback = pCallback; in HAL_SMBUS_RegisterCallback()
669 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK; in HAL_SMBUS_RegisterCallback()
679 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK; in HAL_SMBUS_RegisterCallback()
709 HAL_StatusTypeDef HAL_SMBUS_UnRegisterCallback(SMBUS_HandleTypeDef *hsmbus, in HAL_SMBUS_UnRegisterCallback() argument
714 if (HAL_SMBUS_STATE_READY == hsmbus->State) in HAL_SMBUS_UnRegisterCallback()
719hsmbus->MasterTxCpltCallback = HAL_SMBUS_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback… in HAL_SMBUS_UnRegisterCallback()
723hsmbus->MasterRxCpltCallback = HAL_SMBUS_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback… in HAL_SMBUS_UnRegisterCallback()
727hsmbus->SlaveTxCpltCallback = HAL_SMBUS_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback … in HAL_SMBUS_UnRegisterCallback()
731hsmbus->SlaveRxCpltCallback = HAL_SMBUS_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback … in HAL_SMBUS_UnRegisterCallback()
735hsmbus->ListenCpltCallback = HAL_SMBUS_ListenCpltCallback; /* Legacy weak ListenCpltCallback … in HAL_SMBUS_UnRegisterCallback()
739hsmbus->ErrorCallback = HAL_SMBUS_ErrorCallback; /* Legacy weak ErrorCallback … in HAL_SMBUS_UnRegisterCallback()
743hsmbus->MspInitCallback = HAL_SMBUS_MspInit; /* Legacy weak MspInit … in HAL_SMBUS_UnRegisterCallback()
747hsmbus->MspDeInitCallback = HAL_SMBUS_MspDeInit; /* Legacy weak MspDeInit … in HAL_SMBUS_UnRegisterCallback()
752 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK; in HAL_SMBUS_UnRegisterCallback()
759 else if (HAL_SMBUS_STATE_RESET == hsmbus->State) in HAL_SMBUS_UnRegisterCallback()
764hsmbus->MspInitCallback = HAL_SMBUS_MspInit; /* Legacy weak MspInit … in HAL_SMBUS_UnRegisterCallback()
768hsmbus->MspDeInitCallback = HAL_SMBUS_MspDeInit; /* Legacy weak MspDeInit … in HAL_SMBUS_UnRegisterCallback()
773 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK; in HAL_SMBUS_UnRegisterCallback()
783 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK; in HAL_SMBUS_UnRegisterCallback()
800 HAL_StatusTypeDef HAL_SMBUS_RegisterAddrCallback(SMBUS_HandleTypeDef *hsmbus, in HAL_SMBUS_RegisterAddrCallback() argument
808 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK; in HAL_SMBUS_RegisterAddrCallback()
813 if (HAL_SMBUS_STATE_READY == hsmbus->State) in HAL_SMBUS_RegisterAddrCallback()
815 hsmbus->AddrCallback = pCallback; in HAL_SMBUS_RegisterAddrCallback()
820 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK; in HAL_SMBUS_RegisterAddrCallback()
836 HAL_StatusTypeDef HAL_SMBUS_UnRegisterAddrCallback(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_UnRegisterAddrCallback() argument
840 if (HAL_SMBUS_STATE_READY == hsmbus->State) in HAL_SMBUS_UnRegisterAddrCallback()
842 hsmbus->AddrCallback = HAL_SMBUS_AddrCallback; /* Legacy weak AddrCallback */ in HAL_SMBUS_UnRegisterAddrCallback()
847 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK; in HAL_SMBUS_UnRegisterAddrCallback()
916 HAL_StatusTypeDef HAL_SMBUS_Master_Transmit_IT(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress, in HAL_SMBUS_Master_Transmit_IT() argument
924 if (hsmbus->State == HAL_SMBUS_STATE_READY) in HAL_SMBUS_Master_Transmit_IT()
927 __HAL_LOCK(hsmbus); in HAL_SMBUS_Master_Transmit_IT()
929 hsmbus->State = HAL_SMBUS_STATE_MASTER_BUSY_TX; in HAL_SMBUS_Master_Transmit_IT()
930 hsmbus->ErrorCode = HAL_SMBUS_ERROR_NONE; in HAL_SMBUS_Master_Transmit_IT()
932 hsmbus->pBuffPtr = pData; in HAL_SMBUS_Master_Transmit_IT()
933 hsmbus->XferCount = Size; in HAL_SMBUS_Master_Transmit_IT()
934 hsmbus->XferOptions = XferOptions; in HAL_SMBUS_Master_Transmit_IT()
938 if (hsmbus->pBuffPtr == NULL) in HAL_SMBUS_Master_Transmit_IT()
940 hsmbus->XferOptions &= ~SMBUS_AUTOEND_MODE; in HAL_SMBUS_Master_Transmit_IT()
945 hsmbus->XferSize = MAX_NBYTE_SIZE; in HAL_SMBUS_Master_Transmit_IT()
949 hsmbus->XferSize = Size; in HAL_SMBUS_Master_Transmit_IT()
954 if ((hsmbus->XferSize < hsmbus->XferCount) && (hsmbus->XferSize == MAX_NBYTE_SIZE)) in HAL_SMBUS_Master_Transmit_IT()
957 if ((hsmbus->Instance->AUTOCR & I2C_AUTOCR_TRIGEN) == I2C_AUTOCR_TRIGEN) in HAL_SMBUS_Master_Transmit_IT()
959 SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, in HAL_SMBUS_Master_Transmit_IT()
960 SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE), in HAL_SMBUS_Master_Transmit_IT()
965 SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, in HAL_SMBUS_Master_Transmit_IT()
966 SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE), in HAL_SMBUS_Master_Transmit_IT()
976 tmp = hsmbus->XferOptions; in HAL_SMBUS_Master_Transmit_IT()
978 if ((hsmbus->PreviousState == HAL_SMBUS_STATE_MASTER_BUSY_TX) && \ in HAL_SMBUS_Master_Transmit_IT()
981 SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions, in HAL_SMBUS_Master_Transmit_IT()
988 SMBUS_ConvertOtherXferOptions(hsmbus); in HAL_SMBUS_Master_Transmit_IT()
992 if ((hsmbus->Instance->AUTOCR & I2C_AUTOCR_TRIGEN) == I2C_AUTOCR_TRIGEN) in HAL_SMBUS_Master_Transmit_IT()
994 SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, in HAL_SMBUS_Master_Transmit_IT()
995 hsmbus->XferOptions, in HAL_SMBUS_Master_Transmit_IT()
1000 SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, in HAL_SMBUS_Master_Transmit_IT()
1001 hsmbus->XferOptions, in HAL_SMBUS_Master_Transmit_IT()
1008 if (SMBUS_GET_PEC_MODE(hsmbus) != 0UL) in HAL_SMBUS_Master_Transmit_IT()
1010 if (hsmbus->XferSize > 0U) in HAL_SMBUS_Master_Transmit_IT()
1012 hsmbus->XferSize--; in HAL_SMBUS_Master_Transmit_IT()
1013 hsmbus->XferCount--; in HAL_SMBUS_Master_Transmit_IT()
1023 __HAL_UNLOCK(hsmbus); in HAL_SMBUS_Master_Transmit_IT()
1028 SMBUS_Enable_IRQ(hsmbus, SMBUS_IT_TX); in HAL_SMBUS_Master_Transmit_IT()
1049 HAL_StatusTypeDef HAL_SMBUS_Master_Receive_IT(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress, uin… in HAL_SMBUS_Master_Receive_IT() argument
1057 if (hsmbus->State == HAL_SMBUS_STATE_READY) in HAL_SMBUS_Master_Receive_IT()
1060 __HAL_LOCK(hsmbus); in HAL_SMBUS_Master_Receive_IT()
1062 hsmbus->State = HAL_SMBUS_STATE_MASTER_BUSY_RX; in HAL_SMBUS_Master_Receive_IT()
1063 hsmbus->ErrorCode = HAL_SMBUS_ERROR_NONE; in HAL_SMBUS_Master_Receive_IT()
1066 hsmbus->pBuffPtr = pData; in HAL_SMBUS_Master_Receive_IT()
1067 hsmbus->XferCount = Size; in HAL_SMBUS_Master_Receive_IT()
1068 hsmbus->XferOptions = XferOptions; in HAL_SMBUS_Master_Receive_IT()
1072 if (hsmbus->pBuffPtr == NULL) in HAL_SMBUS_Master_Receive_IT()
1074 hsmbus->XferOptions &= ~SMBUS_AUTOEND_MODE; in HAL_SMBUS_Master_Receive_IT()
1079 hsmbus->XferSize = MAX_NBYTE_SIZE; in HAL_SMBUS_Master_Receive_IT()
1083 hsmbus->XferSize = Size; in HAL_SMBUS_Master_Receive_IT()
1088 if ((hsmbus->XferSize < hsmbus->XferCount) && (hsmbus->XferSize == MAX_NBYTE_SIZE)) in HAL_SMBUS_Master_Receive_IT()
1091 if ((hsmbus->Instance->AUTOCR & I2C_AUTOCR_TRIGEN) == I2C_AUTOCR_TRIGEN) in HAL_SMBUS_Master_Receive_IT()
1093 SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, in HAL_SMBUS_Master_Receive_IT()
1094 SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE), in HAL_SMBUS_Master_Receive_IT()
1099 SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, in HAL_SMBUS_Master_Receive_IT()
1100 SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE), in HAL_SMBUS_Master_Receive_IT()
1110 tmp = hsmbus->XferOptions; in HAL_SMBUS_Master_Receive_IT()
1112 if ((hsmbus->PreviousState == HAL_SMBUS_STATE_MASTER_BUSY_RX) && \ in HAL_SMBUS_Master_Receive_IT()
1115 SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions, in HAL_SMBUS_Master_Receive_IT()
1122 SMBUS_ConvertOtherXferOptions(hsmbus); in HAL_SMBUS_Master_Receive_IT()
1126 if ((hsmbus->Instance->AUTOCR & I2C_AUTOCR_TRIGEN) == I2C_AUTOCR_TRIGEN) in HAL_SMBUS_Master_Receive_IT()
1128 SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, in HAL_SMBUS_Master_Receive_IT()
1129 hsmbus->XferOptions, in HAL_SMBUS_Master_Receive_IT()
1134 SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, in HAL_SMBUS_Master_Receive_IT()
1135 hsmbus->XferOptions, in HAL_SMBUS_Master_Receive_IT()
1142 __HAL_UNLOCK(hsmbus); in HAL_SMBUS_Master_Receive_IT()
1147 SMBUS_Enable_IRQ(hsmbus, SMBUS_IT_RX); in HAL_SMBUS_Master_Receive_IT()
1166 HAL_StatusTypeDef HAL_SMBUS_Master_Abort_IT(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress) in HAL_SMBUS_Master_Abort_IT() argument
1168 if (hsmbus->State == HAL_SMBUS_STATE_READY) in HAL_SMBUS_Master_Abort_IT()
1171 __HAL_LOCK(hsmbus); in HAL_SMBUS_Master_Abort_IT()
1175 if (hsmbus->PreviousState == HAL_SMBUS_STATE_MASTER_BUSY_TX) in HAL_SMBUS_Master_Abort_IT()
1177 hsmbus->State = HAL_SMBUS_STATE_MASTER_BUSY_TX; in HAL_SMBUS_Master_Abort_IT()
1179 else if (hsmbus->PreviousState == HAL_SMBUS_STATE_MASTER_BUSY_RX) in HAL_SMBUS_Master_Abort_IT()
1181 hsmbus->State = HAL_SMBUS_STATE_MASTER_BUSY_RX; in HAL_SMBUS_Master_Abort_IT()
1189 hsmbus->ErrorCode = HAL_SMBUS_ERROR_NONE; in HAL_SMBUS_Master_Abort_IT()
1193 SMBUS_TransferConfig(hsmbus, DevAddress, 1, SMBUS_AUTOEND_MODE, SMBUS_NO_STARTSTOP); in HAL_SMBUS_Master_Abort_IT()
1196 __HAL_UNLOCK(hsmbus); in HAL_SMBUS_Master_Abort_IT()
1201 if (hsmbus->State == HAL_SMBUS_STATE_MASTER_BUSY_TX) in HAL_SMBUS_Master_Abort_IT()
1203 SMBUS_Enable_IRQ(hsmbus, SMBUS_IT_TX); in HAL_SMBUS_Master_Abort_IT()
1205 else if (hsmbus->State == HAL_SMBUS_STATE_MASTER_BUSY_RX) in HAL_SMBUS_Master_Abort_IT()
1207 SMBUS_Enable_IRQ(hsmbus, SMBUS_IT_RX); in HAL_SMBUS_Master_Abort_IT()
1231 HAL_StatusTypeDef HAL_SMBUS_Slave_Transmit_IT(SMBUS_HandleTypeDef *hsmbus, uint8_t *pData, uint16_t… in HAL_SMBUS_Slave_Transmit_IT() argument
1237 if ((hsmbus->State & HAL_SMBUS_STATE_LISTEN) == HAL_SMBUS_STATE_LISTEN) in HAL_SMBUS_Slave_Transmit_IT()
1241 hsmbus->ErrorCode = HAL_SMBUS_ERROR_INVALID_PARAM; in HAL_SMBUS_Slave_Transmit_IT()
1246 SMBUS_Disable_IRQ(hsmbus, SMBUS_IT_ADDR | SMBUS_IT_TX); in HAL_SMBUS_Slave_Transmit_IT()
1249 __HAL_LOCK(hsmbus); in HAL_SMBUS_Slave_Transmit_IT()
1251 hsmbus->State = (HAL_SMBUS_STATE_SLAVE_BUSY_TX | HAL_SMBUS_STATE_LISTEN); in HAL_SMBUS_Slave_Transmit_IT()
1252 hsmbus->ErrorCode = HAL_SMBUS_ERROR_NONE; in HAL_SMBUS_Slave_Transmit_IT()
1255 hsmbus->Instance->CR1 |= I2C_CR1_SBC; in HAL_SMBUS_Slave_Transmit_IT()
1258 hsmbus->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_SMBUS_Slave_Transmit_IT()
1261 hsmbus->pBuffPtr = pData; in HAL_SMBUS_Slave_Transmit_IT()
1262 hsmbus->XferCount = Size; in HAL_SMBUS_Slave_Transmit_IT()
1263 hsmbus->XferOptions = XferOptions; in HAL_SMBUS_Slave_Transmit_IT()
1266 SMBUS_ConvertOtherXferOptions(hsmbus); in HAL_SMBUS_Slave_Transmit_IT()
1270 hsmbus->XferSize = MAX_NBYTE_SIZE; in HAL_SMBUS_Slave_Transmit_IT()
1274 hsmbus->XferSize = Size; in HAL_SMBUS_Slave_Transmit_IT()
1278 if ((hsmbus->XferSize < hsmbus->XferCount) && (hsmbus->XferSize == MAX_NBYTE_SIZE)) in HAL_SMBUS_Slave_Transmit_IT()
1280 SMBUS_TransferConfig(hsmbus, 0, (uint8_t)hsmbus->XferSize, in HAL_SMBUS_Slave_Transmit_IT()
1281 SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE), in HAL_SMBUS_Slave_Transmit_IT()
1287 SMBUS_TransferConfig(hsmbus, 0, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions, in HAL_SMBUS_Slave_Transmit_IT()
1292 if (SMBUS_GET_PEC_MODE(hsmbus) != 0UL) in HAL_SMBUS_Slave_Transmit_IT()
1294 hsmbus->XferSize--; in HAL_SMBUS_Slave_Transmit_IT()
1295 hsmbus->XferCount--; in HAL_SMBUS_Slave_Transmit_IT()
1301 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_ADDR); in HAL_SMBUS_Slave_Transmit_IT()
1304 __HAL_UNLOCK(hsmbus); in HAL_SMBUS_Slave_Transmit_IT()
1310 SMBUS_Enable_IRQ(hsmbus, SMBUS_IT_TX | SMBUS_IT_ADDR); in HAL_SMBUS_Slave_Transmit_IT()
1329 HAL_StatusTypeDef HAL_SMBUS_Slave_Receive_IT(SMBUS_HandleTypeDef *hsmbus, uint8_t *pData, uint16_t … in HAL_SMBUS_Slave_Receive_IT() argument
1335 if ((hsmbus->State & HAL_SMBUS_STATE_LISTEN) == HAL_SMBUS_STATE_LISTEN) in HAL_SMBUS_Slave_Receive_IT()
1339 hsmbus->ErrorCode = HAL_SMBUS_ERROR_INVALID_PARAM; in HAL_SMBUS_Slave_Receive_IT()
1344 SMBUS_Disable_IRQ(hsmbus, SMBUS_IT_ADDR | SMBUS_IT_RX); in HAL_SMBUS_Slave_Receive_IT()
1347 __HAL_LOCK(hsmbus); in HAL_SMBUS_Slave_Receive_IT()
1349 hsmbus->State = (HAL_SMBUS_STATE_SLAVE_BUSY_RX | HAL_SMBUS_STATE_LISTEN); in HAL_SMBUS_Slave_Receive_IT()
1350 hsmbus->ErrorCode = HAL_SMBUS_ERROR_NONE; in HAL_SMBUS_Slave_Receive_IT()
1353 hsmbus->Instance->CR1 |= I2C_CR1_SBC; in HAL_SMBUS_Slave_Receive_IT()
1356 hsmbus->Instance->CR2 &= ~I2C_CR2_NACK; in HAL_SMBUS_Slave_Receive_IT()
1359 hsmbus->pBuffPtr = pData; in HAL_SMBUS_Slave_Receive_IT()
1360 hsmbus->XferSize = Size; in HAL_SMBUS_Slave_Receive_IT()
1361 hsmbus->XferCount = Size; in HAL_SMBUS_Slave_Receive_IT()
1362 hsmbus->XferOptions = XferOptions; in HAL_SMBUS_Slave_Receive_IT()
1365 SMBUS_ConvertOtherXferOptions(hsmbus); in HAL_SMBUS_Slave_Receive_IT()
1372 … if (((SMBUS_GET_PEC_MODE(hsmbus) != 0UL) && (hsmbus->XferSize == 2U)) || (hsmbus->XferSize == 1U)) in HAL_SMBUS_Slave_Receive_IT()
1374 SMBUS_TransferConfig(hsmbus, 0, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions, in HAL_SMBUS_Slave_Receive_IT()
1379 … SMBUS_TransferConfig(hsmbus, 0, 1, hsmbus->XferOptions | SMBUS_RELOAD_MODE, SMBUS_NO_STARTSTOP); in HAL_SMBUS_Slave_Receive_IT()
1384 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_ADDR); in HAL_SMBUS_Slave_Receive_IT()
1387 __HAL_UNLOCK(hsmbus); in HAL_SMBUS_Slave_Receive_IT()
1393 SMBUS_Enable_IRQ(hsmbus, SMBUS_IT_RX | SMBUS_IT_ADDR); in HAL_SMBUS_Slave_Receive_IT()
1409 HAL_StatusTypeDef HAL_SMBUS_EnableListen_IT(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_EnableListen_IT() argument
1411 hsmbus->State = HAL_SMBUS_STATE_LISTEN; in HAL_SMBUS_EnableListen_IT()
1414 SMBUS_Enable_IRQ(hsmbus, SMBUS_IT_ADDR); in HAL_SMBUS_EnableListen_IT()
1425 HAL_StatusTypeDef HAL_SMBUS_DisableListen_IT(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_DisableListen_IT() argument
1428 if (hsmbus->State == HAL_SMBUS_STATE_LISTEN) in HAL_SMBUS_DisableListen_IT()
1430 hsmbus->State = HAL_SMBUS_STATE_READY; in HAL_SMBUS_DisableListen_IT()
1433 SMBUS_Disable_IRQ(hsmbus, SMBUS_IT_ADDR); in HAL_SMBUS_DisableListen_IT()
1449 HAL_StatusTypeDef HAL_SMBUS_EnableAlert_IT(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_EnableAlert_IT() argument
1452 hsmbus->Instance->CR1 |= I2C_CR1_ALERTEN; in HAL_SMBUS_EnableAlert_IT()
1455 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_ALERT); in HAL_SMBUS_EnableAlert_IT()
1458 SMBUS_Enable_IRQ(hsmbus, SMBUS_IT_ALERT); in HAL_SMBUS_EnableAlert_IT()
1468 HAL_StatusTypeDef HAL_SMBUS_DisableAlert_IT(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_DisableAlert_IT() argument
1471 hsmbus->Instance->CR1 &= ~I2C_CR1_ALERTEN; in HAL_SMBUS_DisableAlert_IT()
1474 SMBUS_Disable_IRQ(hsmbus, SMBUS_IT_ALERT); in HAL_SMBUS_DisableAlert_IT()
1489 HAL_StatusTypeDef HAL_SMBUS_IsDeviceReady(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress, uint32_… in HAL_SMBUS_IsDeviceReady() argument
1499 if (hsmbus->State == HAL_SMBUS_STATE_READY) in HAL_SMBUS_IsDeviceReady()
1501 if (__HAL_SMBUS_GET_FLAG(hsmbus, SMBUS_FLAG_BUSY) != RESET) in HAL_SMBUS_IsDeviceReady()
1507 __HAL_LOCK(hsmbus); in HAL_SMBUS_IsDeviceReady()
1509 hsmbus->State = HAL_SMBUS_STATE_BUSY; in HAL_SMBUS_IsDeviceReady()
1510 hsmbus->ErrorCode = HAL_SMBUS_ERROR_NONE; in HAL_SMBUS_IsDeviceReady()
1515 hsmbus->Instance->CR2 = SMBUS_GENERATE_START(hsmbus->Init.AddressingMode, DevAddress); in HAL_SMBUS_IsDeviceReady()
1521 tmp1 = __HAL_SMBUS_GET_FLAG(hsmbus, SMBUS_FLAG_STOPF); in HAL_SMBUS_IsDeviceReady()
1522 tmp2 = __HAL_SMBUS_GET_FLAG(hsmbus, SMBUS_FLAG_AF); in HAL_SMBUS_IsDeviceReady()
1531 hsmbus->State = HAL_SMBUS_STATE_READY; in HAL_SMBUS_IsDeviceReady()
1534 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_HALTIMEOUT; in HAL_SMBUS_IsDeviceReady()
1537 __HAL_UNLOCK(hsmbus); in HAL_SMBUS_IsDeviceReady()
1542 tmp1 = __HAL_SMBUS_GET_FLAG(hsmbus, SMBUS_FLAG_STOPF); in HAL_SMBUS_IsDeviceReady()
1543 tmp2 = __HAL_SMBUS_GET_FLAG(hsmbus, SMBUS_FLAG_AF); in HAL_SMBUS_IsDeviceReady()
1547 if (__HAL_SMBUS_GET_FLAG(hsmbus, SMBUS_FLAG_AF) == RESET) in HAL_SMBUS_IsDeviceReady()
1550 if (SMBUS_WaitOnFlagUntilTimeout(hsmbus, SMBUS_FLAG_STOPF, RESET, Timeout) != HAL_OK) in HAL_SMBUS_IsDeviceReady()
1556 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_STOPF); in HAL_SMBUS_IsDeviceReady()
1559 hsmbus->State = HAL_SMBUS_STATE_READY; in HAL_SMBUS_IsDeviceReady()
1562 __HAL_UNLOCK(hsmbus); in HAL_SMBUS_IsDeviceReady()
1569 if (SMBUS_WaitOnFlagUntilTimeout(hsmbus, SMBUS_FLAG_STOPF, RESET, Timeout) != HAL_OK) in HAL_SMBUS_IsDeviceReady()
1575 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_AF); in HAL_SMBUS_IsDeviceReady()
1578 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_STOPF); in HAL_SMBUS_IsDeviceReady()
1585 hsmbus->Instance->CR2 |= I2C_CR2_STOP; in HAL_SMBUS_IsDeviceReady()
1588 if (SMBUS_WaitOnFlagUntilTimeout(hsmbus, SMBUS_FLAG_STOPF, RESET, Timeout) != HAL_OK) in HAL_SMBUS_IsDeviceReady()
1594 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_STOPF); in HAL_SMBUS_IsDeviceReady()
1601 hsmbus->State = HAL_SMBUS_STATE_READY; in HAL_SMBUS_IsDeviceReady()
1604 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_HALTIMEOUT; in HAL_SMBUS_IsDeviceReady()
1607 __HAL_UNLOCK(hsmbus); in HAL_SMBUS_IsDeviceReady()
1630 void HAL_SMBUS_EV_IRQHandler(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_EV_IRQHandler() argument
1634 uint32_t tmpisrvalue = READ_REG(hsmbus->Instance->ISR); in HAL_SMBUS_EV_IRQHandler()
1635 uint32_t tmpcr1value = READ_REG(hsmbus->Instance->CR1); in HAL_SMBUS_EV_IRQHandler()
1647 if ((hsmbus->State & HAL_SMBUS_STATE_SLAVE_BUSY_TX) == HAL_SMBUS_STATE_SLAVE_BUSY_TX) in HAL_SMBUS_EV_IRQHandler()
1649 (void)SMBUS_Slave_ISR(hsmbus, tmpisrvalue); in HAL_SMBUS_EV_IRQHandler()
1652 else if ((hsmbus->State & HAL_SMBUS_STATE_MASTER_BUSY_TX) == HAL_SMBUS_STATE_MASTER_BUSY_TX) in HAL_SMBUS_EV_IRQHandler()
1654 (void)SMBUS_Master_ISR(hsmbus, tmpisrvalue); in HAL_SMBUS_EV_IRQHandler()
1672 if ((hsmbus->State & HAL_SMBUS_STATE_SLAVE_BUSY_RX) == HAL_SMBUS_STATE_SLAVE_BUSY_RX) in HAL_SMBUS_EV_IRQHandler()
1674 (void)SMBUS_Slave_ISR(hsmbus, tmpisrvalue); in HAL_SMBUS_EV_IRQHandler()
1677 else if ((hsmbus->State & HAL_SMBUS_STATE_MASTER_BUSY_RX) == HAL_SMBUS_STATE_MASTER_BUSY_RX) in HAL_SMBUS_EV_IRQHandler()
1679 (void)SMBUS_Master_ISR(hsmbus, tmpisrvalue); in HAL_SMBUS_EV_IRQHandler()
1695 if ((hsmbus->State & HAL_SMBUS_STATE_LISTEN) == HAL_SMBUS_STATE_LISTEN) in HAL_SMBUS_EV_IRQHandler()
1697 (void)SMBUS_Slave_ISR(hsmbus, tmpisrvalue); in HAL_SMBUS_EV_IRQHandler()
1708 void HAL_SMBUS_ER_IRQHandler(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_ER_IRQHandler() argument
1710 SMBUS_ITErrorHandler(hsmbus); in HAL_SMBUS_ER_IRQHandler()
1719 __weak void HAL_SMBUS_MasterTxCpltCallback(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_MasterTxCpltCallback() argument
1722 UNUSED(hsmbus); in HAL_SMBUS_MasterTxCpltCallback()
1735 __weak void HAL_SMBUS_MasterRxCpltCallback(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_MasterRxCpltCallback() argument
1738 UNUSED(hsmbus); in HAL_SMBUS_MasterRxCpltCallback()
1750 __weak void HAL_SMBUS_SlaveTxCpltCallback(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_SlaveTxCpltCallback() argument
1753 UNUSED(hsmbus); in HAL_SMBUS_SlaveTxCpltCallback()
1766 __weak void HAL_SMBUS_SlaveRxCpltCallback(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_SlaveRxCpltCallback() argument
1769 UNUSED(hsmbus); in HAL_SMBUS_SlaveRxCpltCallback()
1784 __weak void HAL_SMBUS_AddrCallback(SMBUS_HandleTypeDef *hsmbus, uint8_t TransferDirection, in HAL_SMBUS_AddrCallback() argument
1788 UNUSED(hsmbus); in HAL_SMBUS_AddrCallback()
1803 __weak void HAL_SMBUS_ListenCpltCallback(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_ListenCpltCallback() argument
1806 UNUSED(hsmbus); in HAL_SMBUS_ListenCpltCallback()
1819 __weak void HAL_SMBUS_ErrorCallback(SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_ErrorCallback() argument
1822 UNUSED(hsmbus); in HAL_SMBUS_ErrorCallback()
1854 uint32_t HAL_SMBUS_GetState(const SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_GetState() argument
1857 return hsmbus->State; in HAL_SMBUS_GetState()
1866 uint32_t HAL_SMBUS_GetError(const SMBUS_HandleTypeDef *hsmbus) in HAL_SMBUS_GetError() argument
1868 return hsmbus->ErrorCode; in HAL_SMBUS_GetError()
1891 static HAL_StatusTypeDef SMBUS_Master_ISR(SMBUS_HandleTypeDef *hsmbus, uint32_t StatusFlags) in SMBUS_Master_ISR() argument
1896 __HAL_LOCK(hsmbus); in SMBUS_Master_ISR()
1901 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_AF); in SMBUS_Master_ISR()
1905 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_ACKF; in SMBUS_Master_ISR()
1908 SMBUS_Flush_TXDR(hsmbus); in SMBUS_Master_ISR()
1911 __HAL_UNLOCK(hsmbus); in SMBUS_Master_ISR()
1915 hsmbus->ErrorCallback(hsmbus); in SMBUS_Master_ISR()
1917 HAL_SMBUS_ErrorCallback(hsmbus); in SMBUS_Master_ISR()
1923 SMBUS_ITErrorHandler(hsmbus); in SMBUS_Master_ISR()
1926 if (hsmbus->State == HAL_SMBUS_STATE_MASTER_BUSY_TX) in SMBUS_Master_ISR()
1929 SMBUS_Disable_IRQ(hsmbus, SMBUS_IT_TX); in SMBUS_Master_ISR()
1932 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_STOPF); in SMBUS_Master_ISR()
1935 SMBUS_RESET_CR2(hsmbus); in SMBUS_Master_ISR()
1939 __HAL_SMBUS_DISABLE(hsmbus); in SMBUS_Master_ISR()
1941 hsmbus->PreviousState = HAL_SMBUS_STATE_READY; in SMBUS_Master_ISR()
1942 hsmbus->State = HAL_SMBUS_STATE_READY; in SMBUS_Master_ISR()
1945 __HAL_UNLOCK(hsmbus); in SMBUS_Master_ISR()
1948 __HAL_SMBUS_ENABLE(hsmbus); in SMBUS_Master_ISR()
1952 hsmbus->MasterTxCpltCallback(hsmbus); in SMBUS_Master_ISR()
1954 HAL_SMBUS_MasterTxCpltCallback(hsmbus); in SMBUS_Master_ISR()
1957 else if (hsmbus->State == HAL_SMBUS_STATE_MASTER_BUSY_RX) in SMBUS_Master_ISR()
1963 *hsmbus->pBuffPtr = (uint8_t)(hsmbus->Instance->RXDR); in SMBUS_Master_ISR()
1966 hsmbus->pBuffPtr++; in SMBUS_Master_ISR()
1968 if ((hsmbus->XferSize > 0U)) in SMBUS_Master_ISR()
1970 hsmbus->XferSize--; in SMBUS_Master_ISR()
1971 hsmbus->XferCount--; in SMBUS_Master_ISR()
1976 SMBUS_Disable_IRQ(hsmbus, SMBUS_IT_RX); in SMBUS_Master_ISR()
1979 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_STOPF); in SMBUS_Master_ISR()
1982 SMBUS_RESET_CR2(hsmbus); in SMBUS_Master_ISR()
1984 hsmbus->PreviousState = HAL_SMBUS_STATE_READY; in SMBUS_Master_ISR()
1985 hsmbus->State = HAL_SMBUS_STATE_READY; in SMBUS_Master_ISR()
1988 __HAL_UNLOCK(hsmbus); in SMBUS_Master_ISR()
1992 hsmbus->MasterRxCpltCallback(hsmbus); in SMBUS_Master_ISR()
1994 HAL_SMBUS_MasterRxCpltCallback(hsmbus); in SMBUS_Master_ISR()
2005 *hsmbus->pBuffPtr = (uint8_t)(hsmbus->Instance->RXDR); in SMBUS_Master_ISR()
2008 hsmbus->pBuffPtr++; in SMBUS_Master_ISR()
2011 hsmbus->XferSize--; in SMBUS_Master_ISR()
2012 hsmbus->XferCount--; in SMBUS_Master_ISR()
2017 hsmbus->Instance->TXDR = *hsmbus->pBuffPtr; in SMBUS_Master_ISR()
2020 hsmbus->pBuffPtr++; in SMBUS_Master_ISR()
2023 hsmbus->XferSize--; in SMBUS_Master_ISR()
2024 hsmbus->XferCount--; in SMBUS_Master_ISR()
2028 if ((hsmbus->XferCount != 0U) && (hsmbus->XferSize == 0U)) in SMBUS_Master_ISR()
2030 DevAddress = (uint16_t)(hsmbus->Instance->CR2 & I2C_CR2_SADD); in SMBUS_Master_ISR()
2032 if (hsmbus->XferCount > MAX_NBYTE_SIZE) in SMBUS_Master_ISR()
2034 SMBUS_TransferConfig(hsmbus, DevAddress, MAX_NBYTE_SIZE, in SMBUS_Master_ISR()
2035 (SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE)), in SMBUS_Master_ISR()
2037 hsmbus->XferSize = MAX_NBYTE_SIZE; in SMBUS_Master_ISR()
2041 hsmbus->XferSize = hsmbus->XferCount; in SMBUS_Master_ISR()
2042 SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions, in SMBUS_Master_ISR()
2046 if (SMBUS_GET_PEC_MODE(hsmbus) != 0UL) in SMBUS_Master_ISR()
2048 hsmbus->XferSize--; in SMBUS_Master_ISR()
2049 hsmbus->XferCount--; in SMBUS_Master_ISR()
2053 else if ((hsmbus->XferCount == 0U) && (hsmbus->XferSize == 0U)) in SMBUS_Master_ISR()
2056 if (SMBUS_GET_STOP_MODE(hsmbus) != SMBUS_AUTOEND_MODE) in SMBUS_Master_ISR()
2059 if (hsmbus->State == HAL_SMBUS_STATE_MASTER_BUSY_TX) in SMBUS_Master_ISR()
2062 SMBUS_Disable_IRQ(hsmbus, SMBUS_IT_TX); in SMBUS_Master_ISR()
2063 hsmbus->PreviousState = hsmbus->State; in SMBUS_Master_ISR()
2064 hsmbus->State = HAL_SMBUS_STATE_READY; in SMBUS_Master_ISR()
2067 __HAL_UNLOCK(hsmbus); in SMBUS_Master_ISR()
2071 hsmbus->MasterTxCpltCallback(hsmbus); in SMBUS_Master_ISR()
2073 HAL_SMBUS_MasterTxCpltCallback(hsmbus); in SMBUS_Master_ISR()
2076 else if (hsmbus->State == HAL_SMBUS_STATE_MASTER_BUSY_RX) in SMBUS_Master_ISR()
2078 SMBUS_Disable_IRQ(hsmbus, SMBUS_IT_RX); in SMBUS_Master_ISR()
2079 hsmbus->PreviousState = hsmbus->State; in SMBUS_Master_ISR()
2080 hsmbus->State = HAL_SMBUS_STATE_READY; in SMBUS_Master_ISR()
2083 __HAL_UNLOCK(hsmbus); in SMBUS_Master_ISR()
2087 hsmbus->MasterRxCpltCallback(hsmbus); in SMBUS_Master_ISR()
2089 HAL_SMBUS_MasterRxCpltCallback(hsmbus); in SMBUS_Master_ISR()
2105 if (hsmbus->XferCount == 0U) in SMBUS_Master_ISR()
2108 if (hsmbus->pBuffPtr == NULL) in SMBUS_Master_ISR()
2111 hsmbus->Instance->CR2 |= I2C_CR2_STOP; in SMBUS_Master_ISR()
2114 else if (SMBUS_GET_STOP_MODE(hsmbus) != SMBUS_AUTOEND_MODE) in SMBUS_Master_ISR()
2120 if (hsmbus->State == HAL_SMBUS_STATE_MASTER_BUSY_TX) in SMBUS_Master_ISR()
2123 SMBUS_Disable_IRQ(hsmbus, SMBUS_IT_TX); in SMBUS_Master_ISR()
2124 hsmbus->PreviousState = hsmbus->State; in SMBUS_Master_ISR()
2125 hsmbus->State = HAL_SMBUS_STATE_READY; in SMBUS_Master_ISR()
2128 __HAL_UNLOCK(hsmbus); in SMBUS_Master_ISR()
2132 hsmbus->MasterTxCpltCallback(hsmbus); in SMBUS_Master_ISR()
2134 HAL_SMBUS_MasterTxCpltCallback(hsmbus); in SMBUS_Master_ISR()
2137 else if (hsmbus->State == HAL_SMBUS_STATE_MASTER_BUSY_RX) in SMBUS_Master_ISR()
2139 SMBUS_Disable_IRQ(hsmbus, SMBUS_IT_RX); in SMBUS_Master_ISR()
2140 hsmbus->PreviousState = hsmbus->State; in SMBUS_Master_ISR()
2141 hsmbus->State = HAL_SMBUS_STATE_READY; in SMBUS_Master_ISR()
2144 __HAL_UNLOCK(hsmbus); in SMBUS_Master_ISR()
2148 hsmbus->MasterRxCpltCallback(hsmbus); in SMBUS_Master_ISR()
2150 HAL_SMBUS_MasterRxCpltCallback(hsmbus); in SMBUS_Master_ISR()
2170 __HAL_UNLOCK(hsmbus); in SMBUS_Master_ISR()
2181 static HAL_StatusTypeDef SMBUS_Slave_ISR(SMBUS_HandleTypeDef *hsmbus, uint32_t StatusFlags) in SMBUS_Slave_ISR() argument
2187 __HAL_LOCK(hsmbus); in SMBUS_Slave_ISR()
2195 if (hsmbus->XferCount == 0U) in SMBUS_Slave_ISR()
2198 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_AF); in SMBUS_Slave_ISR()
2201 SMBUS_Flush_TXDR(hsmbus); in SMBUS_Slave_ISR()
2204 __HAL_UNLOCK(hsmbus); in SMBUS_Slave_ISR()
2210 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_AF); in SMBUS_Slave_ISR()
2214 hsmbus->PreviousState = hsmbus->State; in SMBUS_Slave_ISR()
2215 hsmbus->State &= ~((uint32_t)HAL_SMBUS_STATE_SLAVE_BUSY_TX); in SMBUS_Slave_ISR()
2216 hsmbus->State &= ~((uint32_t)HAL_SMBUS_STATE_SLAVE_BUSY_RX); in SMBUS_Slave_ISR()
2219 SMBUS_Disable_IRQ(hsmbus, SMBUS_IT_RX | SMBUS_IT_TX); in SMBUS_Slave_ISR()
2222 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_ACKF; in SMBUS_Slave_ISR()
2225 SMBUS_Flush_TXDR(hsmbus); in SMBUS_Slave_ISR()
2228 __HAL_UNLOCK(hsmbus); in SMBUS_Slave_ISR()
2232 hsmbus->ErrorCallback(hsmbus); in SMBUS_Slave_ISR()
2234 HAL_SMBUS_ErrorCallback(hsmbus); in SMBUS_Slave_ISR()
2240 TransferDirection = (uint8_t)(SMBUS_GET_DIR(hsmbus)); in SMBUS_Slave_ISR()
2241 SlaveAddrCode = (uint16_t)(SMBUS_GET_ADDR_MATCH(hsmbus)); in SMBUS_Slave_ISR()
2245 __HAL_SMBUS_DISABLE_IT(hsmbus, SMBUS_IT_ADDRI); in SMBUS_Slave_ISR()
2248 __HAL_UNLOCK(hsmbus); in SMBUS_Slave_ISR()
2252 hsmbus->AddrCallback(hsmbus, TransferDirection, SlaveAddrCode); in SMBUS_Slave_ISR()
2254 HAL_SMBUS_AddrCallback(hsmbus, TransferDirection, SlaveAddrCode); in SMBUS_Slave_ISR()
2260 if ((hsmbus->State & HAL_SMBUS_STATE_SLAVE_BUSY_RX) == HAL_SMBUS_STATE_SLAVE_BUSY_RX) in SMBUS_Slave_ISR()
2263 *hsmbus->pBuffPtr = (uint8_t)(hsmbus->Instance->RXDR); in SMBUS_Slave_ISR()
2266 hsmbus->pBuffPtr++; in SMBUS_Slave_ISR()
2268 hsmbus->XferSize--; in SMBUS_Slave_ISR()
2269 hsmbus->XferCount--; in SMBUS_Slave_ISR()
2271 if (hsmbus->XferCount == 1U) in SMBUS_Slave_ISR()
2276 hsmbus->XferOptions &= ~SMBUS_RELOAD_MODE; in SMBUS_Slave_ISR()
2277 SMBUS_TransferConfig(hsmbus, 0, 1, hsmbus->XferOptions, SMBUS_NO_STARTSTOP); in SMBUS_Slave_ISR()
2279 else if (hsmbus->XferCount == 0U) in SMBUS_Slave_ISR()
2282 SMBUS_Disable_IRQ(hsmbus, SMBUS_IT_RX); in SMBUS_Slave_ISR()
2285 hsmbus->PreviousState = hsmbus->State; in SMBUS_Slave_ISR()
2286 hsmbus->State &= ~((uint32_t)HAL_SMBUS_STATE_SLAVE_BUSY_RX); in SMBUS_Slave_ISR()
2289 __HAL_UNLOCK(hsmbus); in SMBUS_Slave_ISR()
2293 hsmbus->SlaveRxCpltCallback(hsmbus); in SMBUS_Slave_ISR()
2295 HAL_SMBUS_SlaveRxCpltCallback(hsmbus); in SMBUS_Slave_ISR()
2301 SMBUS_TransferConfig(hsmbus, 0, 1, in SMBUS_Slave_ISR()
2302 SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE), in SMBUS_Slave_ISR()
2306 hsmbus->Instance->CR2 &= ~I2C_CR2_NACK; in SMBUS_Slave_ISR()
2309 else if ((hsmbus->State & HAL_SMBUS_STATE_SLAVE_BUSY_TX) == HAL_SMBUS_STATE_SLAVE_BUSY_TX) in SMBUS_Slave_ISR()
2311 if ((hsmbus->XferCount != 0U) && (hsmbus->XferSize == 0U)) in SMBUS_Slave_ISR()
2313 if (hsmbus->XferCount > MAX_NBYTE_SIZE) in SMBUS_Slave_ISR()
2315 SMBUS_TransferConfig(hsmbus, 0, MAX_NBYTE_SIZE, in SMBUS_Slave_ISR()
2316 (SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE)), in SMBUS_Slave_ISR()
2318 hsmbus->XferSize = MAX_NBYTE_SIZE; in SMBUS_Slave_ISR()
2322 hsmbus->XferSize = hsmbus->XferCount; in SMBUS_Slave_ISR()
2323 SMBUS_TransferConfig(hsmbus, 0, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions, in SMBUS_Slave_ISR()
2327 if (SMBUS_GET_PEC_MODE(hsmbus) != 0UL) in SMBUS_Slave_ISR()
2329 hsmbus->XferSize--; in SMBUS_Slave_ISR()
2330 hsmbus->XferCount--; in SMBUS_Slave_ISR()
2346 if (hsmbus->XferCount > 0U) in SMBUS_Slave_ISR()
2349 hsmbus->Instance->TXDR = *hsmbus->pBuffPtr; in SMBUS_Slave_ISR()
2352 hsmbus->pBuffPtr++; in SMBUS_Slave_ISR()
2354 hsmbus->XferCount--; in SMBUS_Slave_ISR()
2355 hsmbus->XferSize--; in SMBUS_Slave_ISR()
2358 if (hsmbus->XferCount == 0U) in SMBUS_Slave_ISR()
2362 SMBUS_Disable_IRQ(hsmbus, SMBUS_IT_TX); in SMBUS_Slave_ISR()
2363 hsmbus->PreviousState = hsmbus->State; in SMBUS_Slave_ISR()
2364 hsmbus->State &= ~((uint32_t)HAL_SMBUS_STATE_SLAVE_BUSY_TX); in SMBUS_Slave_ISR()
2367 __HAL_UNLOCK(hsmbus); in SMBUS_Slave_ISR()
2371 hsmbus->SlaveTxCpltCallback(hsmbus); in SMBUS_Slave_ISR()
2373 HAL_SMBUS_SlaveTxCpltCallback(hsmbus); in SMBUS_Slave_ISR()
2385 if ((hsmbus->State & HAL_SMBUS_STATE_LISTEN) == HAL_SMBUS_STATE_LISTEN) in SMBUS_Slave_ISR()
2388 if (__HAL_SMBUS_GET_FLAG(hsmbus, SMBUS_FLAG_RXNE) != RESET) in SMBUS_Slave_ISR()
2391 *hsmbus->pBuffPtr = (uint8_t)(hsmbus->Instance->RXDR); in SMBUS_Slave_ISR()
2394 hsmbus->pBuffPtr++; in SMBUS_Slave_ISR()
2396 if ((hsmbus->XferSize > 0U)) in SMBUS_Slave_ISR()
2398 hsmbus->XferSize--; in SMBUS_Slave_ISR()
2399 hsmbus->XferCount--; in SMBUS_Slave_ISR()
2404 SMBUS_Disable_IRQ(hsmbus, SMBUS_IT_RX | SMBUS_IT_TX); in SMBUS_Slave_ISR()
2407 SMBUS_Disable_IRQ(hsmbus, SMBUS_IT_ADDR); in SMBUS_Slave_ISR()
2410 hsmbus->Instance->CR2 |= I2C_CR2_NACK; in SMBUS_Slave_ISR()
2413 SMBUS_RESET_CR2(hsmbus); in SMBUS_Slave_ISR()
2416 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_STOPF); in SMBUS_Slave_ISR()
2419 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_ADDR); in SMBUS_Slave_ISR()
2421 hsmbus->XferOptions = 0; in SMBUS_Slave_ISR()
2422 hsmbus->PreviousState = hsmbus->State; in SMBUS_Slave_ISR()
2423 hsmbus->State = HAL_SMBUS_STATE_READY; in SMBUS_Slave_ISR()
2426 __HAL_UNLOCK(hsmbus); in SMBUS_Slave_ISR()
2430 hsmbus->ListenCpltCallback(hsmbus); in SMBUS_Slave_ISR()
2432 HAL_SMBUS_ListenCpltCallback(hsmbus); in SMBUS_Slave_ISR()
2438 __HAL_UNLOCK(hsmbus); in SMBUS_Slave_ISR()
2449 static void SMBUS_Enable_IRQ(SMBUS_HandleTypeDef *hsmbus, uint32_t InterruptRequest) in SMBUS_Enable_IRQ() argument
2480 __HAL_SMBUS_ENABLE_IT(hsmbus, tmpisr); in SMBUS_Enable_IRQ()
2489 static void SMBUS_Disable_IRQ(SMBUS_HandleTypeDef *hsmbus, uint32_t InterruptRequest) in SMBUS_Disable_IRQ() argument
2492 uint32_t tmpstate = hsmbus->State; in SMBUS_Disable_IRQ()
2505 if ((SMBUS_GET_ALERT_ENABLED(hsmbus) == 0UL) in SMBUS_Disable_IRQ()
2524 if ((SMBUS_GET_ALERT_ENABLED(hsmbus) == 0UL) in SMBUS_Disable_IRQ()
2543 if (SMBUS_GET_ALERT_ENABLED(hsmbus) == 0UL) in SMBUS_Disable_IRQ()
2553 __HAL_SMBUS_DISABLE_IT(hsmbus, tmpisr); in SMBUS_Disable_IRQ()
2561 static void SMBUS_ITErrorHandler(SMBUS_HandleTypeDef *hsmbus) in SMBUS_ITErrorHandler() argument
2563 uint32_t itflags = READ_REG(hsmbus->Instance->ISR); in SMBUS_ITErrorHandler()
2564 uint32_t itsources = READ_REG(hsmbus->Instance->CR1); in SMBUS_ITErrorHandler()
2572 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_BERR; in SMBUS_ITErrorHandler()
2575 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_BERR); in SMBUS_ITErrorHandler()
2582 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_OVR; in SMBUS_ITErrorHandler()
2585 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_OVR); in SMBUS_ITErrorHandler()
2592 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_ARLO; in SMBUS_ITErrorHandler()
2595 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_ARLO); in SMBUS_ITErrorHandler()
2602 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_BUSTIMEOUT; in SMBUS_ITErrorHandler()
2605 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_TIMEOUT); in SMBUS_ITErrorHandler()
2612 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_ALERT; in SMBUS_ITErrorHandler()
2615 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_ALERT); in SMBUS_ITErrorHandler()
2622 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_PECERR; in SMBUS_ITErrorHandler()
2625 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_PECERR); in SMBUS_ITErrorHandler()
2628 if (hsmbus->ErrorCode != HAL_SMBUS_ERROR_NONE) in SMBUS_ITErrorHandler()
2631 SMBUS_Flush_TXDR(hsmbus); in SMBUS_ITErrorHandler()
2635 tmperror = hsmbus->ErrorCode; in SMBUS_ITErrorHandler()
2644 tmpstate = hsmbus->State; in SMBUS_ITErrorHandler()
2651 hsmbus->PreviousState = HAL_SMBUS_STATE_READY; in SMBUS_ITErrorHandler()
2652 hsmbus->State = HAL_SMBUS_STATE_LISTEN; in SMBUS_ITErrorHandler()
2658 hsmbus->ErrorCallback(hsmbus); in SMBUS_ITErrorHandler()
2660 HAL_SMBUS_ErrorCallback(hsmbus); in SMBUS_ITErrorHandler()
2674 static HAL_StatusTypeDef SMBUS_WaitOnFlagUntilTimeout(SMBUS_HandleTypeDef *hsmbus, uint32_t Flag, in SMBUS_WaitOnFlagUntilTimeout() argument
2680 while ((FlagStatus)(__HAL_SMBUS_GET_FLAG(hsmbus, Flag)) == Status) in SMBUS_WaitOnFlagUntilTimeout()
2687 hsmbus->PreviousState = hsmbus->State; in SMBUS_WaitOnFlagUntilTimeout()
2688 hsmbus->State = HAL_SMBUS_STATE_READY; in SMBUS_WaitOnFlagUntilTimeout()
2691 hsmbus->ErrorCode |= HAL_SMBUS_ERROR_HALTIMEOUT; in SMBUS_WaitOnFlagUntilTimeout()
2694 __HAL_UNLOCK(hsmbus); in SMBUS_WaitOnFlagUntilTimeout()
2709 static void SMBUS_Flush_TXDR(SMBUS_HandleTypeDef *hsmbus) in SMBUS_Flush_TXDR() argument
2713 if (__HAL_SMBUS_GET_FLAG(hsmbus, SMBUS_FLAG_TXIS) != RESET) in SMBUS_Flush_TXDR()
2715 hsmbus->Instance->TXDR = 0x00U; in SMBUS_Flush_TXDR()
2719 if (__HAL_SMBUS_GET_FLAG(hsmbus, SMBUS_FLAG_TXE) == RESET) in SMBUS_Flush_TXDR()
2721 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_TXE); in SMBUS_Flush_TXDR()
2745 static void SMBUS_TransferConfig(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress, uint8_t Size, in SMBUS_TransferConfig() argument
2749 assert_param(IS_SMBUS_ALL_INSTANCE(hsmbus->Instance)); in SMBUS_TransferConfig()
2754 MODIFY_REG(hsmbus->Instance->CR2, in SMBUS_TransferConfig()
2768 static void SMBUS_ConvertOtherXferOptions(SMBUS_HandleTypeDef *hsmbus) in SMBUS_ConvertOtherXferOptions() argument
2773 if (hsmbus->XferOptions == SMBUS_OTHER_FRAME_NO_PEC) in SMBUS_ConvertOtherXferOptions()
2775 hsmbus->XferOptions = SMBUS_FIRST_FRAME; in SMBUS_ConvertOtherXferOptions()
2780 else if (hsmbus->XferOptions == SMBUS_OTHER_FRAME_WITH_PEC) in SMBUS_ConvertOtherXferOptions()
2782 hsmbus->XferOptions = SMBUS_FIRST_FRAME | SMBUS_SENDPEC_MODE; in SMBUS_ConvertOtherXferOptions()
2788 else if (hsmbus->XferOptions == SMBUS_OTHER_AND_LAST_FRAME_NO_PEC) in SMBUS_ConvertOtherXferOptions()
2790 hsmbus->XferOptions = SMBUS_FIRST_AND_LAST_FRAME_NO_PEC; in SMBUS_ConvertOtherXferOptions()
2796 else if (hsmbus->XferOptions == SMBUS_OTHER_AND_LAST_FRAME_WITH_PEC) in SMBUS_ConvertOtherXferOptions()
2798 hsmbus->XferOptions = SMBUS_FIRST_AND_LAST_FRAME_WITH_PEC; in SMBUS_ConvertOtherXferOptions()