Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2 | Rev 6 | ||
|---|---|---|---|
| Line 45... | Line 45... | ||
| 45 | *** Callback registration *** |
45 | *** Callback registration *** |
| 46 | ============================================= |
46 | ============================================= |
| 47 | 47 | ||
| 48 | The compilation define USE_HAL_CEC_REGISTER_CALLBACKS when set to 1 |
48 | The compilation define USE_HAL_CEC_REGISTER_CALLBACKS when set to 1 |
| 49 | allows the user to configure dynamically the driver callbacks. |
49 | allows the user to configure dynamically the driver callbacks. |
| 50 | Use Functions @ref HAL_CEC_RegisterCallback() or HAL_CEC_RegisterXXXCallback() |
50 | Use Functions HAL_CEC_RegisterCallback() or HAL_CEC_RegisterXXXCallback() |
| 51 | to register an interrupt callback. |
51 | to register an interrupt callback. |
| 52 | 52 | ||
| 53 | Function @ref HAL_CEC_RegisterCallback() allows to register following callbacks: |
53 | Function HAL_CEC_RegisterCallback() allows to register following callbacks: |
| 54 | (+) TxCpltCallback : Tx Transfer completed callback. |
54 | (+) TxCpltCallback : Tx Transfer completed callback. |
| 55 | (+) ErrorCallback : callback for error detection. |
55 | (+) ErrorCallback : callback for error detection. |
| 56 | (+) MspInitCallback : CEC MspInit. |
56 | (+) MspInitCallback : CEC MspInit. |
| 57 | (+) MspDeInitCallback : CEC MspDeInit. |
57 | (+) MspDeInitCallback : CEC MspDeInit. |
| 58 | This function takes as parameters the HAL peripheral handle, the Callback ID |
58 | This function takes as parameters the HAL peripheral handle, the Callback ID |
| 59 | and a pointer to the user callback function. |
59 | and a pointer to the user callback function. |
| 60 | 60 | ||
| 61 | For specific callback HAL_CEC_RxCpltCallback use dedicated register callbacks |
61 | For specific callback HAL_CEC_RxCpltCallback use dedicated register callbacks |
| 62 | @ref HAL_CEC_RegisterRxCpltCallback(). |
62 | HAL_CEC_RegisterRxCpltCallback(). |
| 63 | 63 | ||
| 64 | Use function @ref HAL_CEC_UnRegisterCallback() to reset a callback to the default |
64 | Use function HAL_CEC_UnRegisterCallback() to reset a callback to the default |
| 65 | weak function. |
65 | weak function. |
| 66 | @ref HAL_CEC_UnRegisterCallback() takes as parameters the HAL peripheral handle, |
66 | HAL_CEC_UnRegisterCallback() takes as parameters the HAL peripheral handle, |
| 67 | and the Callback ID. |
67 | and the Callback ID. |
| 68 | This function allows to reset following callbacks: |
68 | This function allows to reset following callbacks: |
| 69 | (+) TxCpltCallback : Tx Transfer completed callback. |
69 | (+) TxCpltCallback : Tx Transfer completed callback. |
| 70 | (+) ErrorCallback : callback for error detection. |
70 | (+) ErrorCallback : callback for error detection. |
| 71 | (+) MspInitCallback : CEC MspInit. |
71 | (+) MspInitCallback : CEC MspInit. |
| 72 | (+) MspDeInitCallback : CEC MspDeInit. |
72 | (+) MspDeInitCallback : CEC MspDeInit. |
| 73 | 73 | ||
| 74 | For callback HAL_CEC_RxCpltCallback use dedicated unregister callback : |
74 | For callback HAL_CEC_RxCpltCallback use dedicated unregister callback : |
| 75 | @ref HAL_CEC_UnRegisterRxCpltCallback(). |
75 | HAL_CEC_UnRegisterRxCpltCallback(). |
| 76 | 76 | ||
| 77 | By default, after the @ref HAL_CEC_Init() and when the state is HAL_CEC_STATE_RESET |
77 | By default, after the HAL_CEC_Init() and when the state is HAL_CEC_STATE_RESET |
| 78 | all callbacks are set to the corresponding weak functions : |
78 | all callbacks are set to the corresponding weak functions : |
| 79 | examples @ref HAL_CEC_TxCpltCallback() , @ref HAL_CEC_RxCpltCallback(). |
79 | examples HAL_CEC_TxCpltCallback() , HAL_CEC_RxCpltCallback(). |
| 80 | Exception done for MspInit and MspDeInit functions that are |
80 | Exception done for MspInit and MspDeInit functions that are |
| 81 | reset to the legacy weak function in the @ref HAL_CEC_Init()/ @ref HAL_CEC_DeInit() only when |
81 | reset to the legacy weak function in the HAL_CEC_Init()/ HAL_CEC_DeInit() only when |
| 82 | these callbacks are null (not registered beforehand). |
82 | these callbacks are null (not registered beforehand). |
| 83 | if not, MspInit or MspDeInit are not null, the @ref HAL_CEC_Init() / @ref HAL_CEC_DeInit() |
83 | if not, MspInit or MspDeInit are not null, the HAL_CEC_Init() / HAL_CEC_DeInit() |
| 84 | keep and use the user MspInit/MspDeInit functions (registered beforehand) |
84 | keep and use the user MspInit/MspDeInit functions (registered beforehand) |
| 85 | 85 | ||
| 86 | Callbacks can be registered/unregistered in HAL_CEC_STATE_READY state only. |
86 | Callbacks can be registered/unregistered in HAL_CEC_STATE_READY state only. |
| 87 | Exception done MspInit/MspDeInit callbacks that can be registered/unregistered |
87 | Exception done MspInit/MspDeInit callbacks that can be registered/unregistered |
| 88 | in HAL_CEC_STATE_READY or HAL_CEC_STATE_RESET state, |
88 | in HAL_CEC_STATE_READY or HAL_CEC_STATE_RESET state, |
| 89 | thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit. |
89 | thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit. |
| 90 | In that case first register the MspInit/MspDeInit user callbacks |
90 | In that case first register the MspInit/MspDeInit user callbacks |
| 91 | using @ref HAL_CEC_RegisterCallback() before calling @ref HAL_CEC_DeInit() |
91 | using HAL_CEC_RegisterCallback() before calling HAL_CEC_DeInit() |
| 92 | or @ref HAL_CEC_Init() function. |
92 | or HAL_CEC_Init() function. |
| 93 | 93 | ||
| 94 | When the compilation define USE_HAL_CEC_REGISTER_CALLBACKS is set to 0 or |
94 | When the compilation define USE_HAL_CEC_REGISTER_CALLBACKS is set to 0 or |
| 95 | not defined, the callback registration feature is not available and all callbacks |
95 | not defined, the callback registration feature is not available and all callbacks |
| 96 | are set to the corresponding weak functions. |
96 | are set to the corresponding weak functions. |
| 97 | @endverbatim |
97 | @endverbatim |
| Line 694... | Line 694... | ||
| 694 | * @retval HAL status |
694 | * @retval HAL status |
| 695 | */ |
695 | */ |
| 696 | HAL_StatusTypeDef HAL_CEC_Transmit_IT(CEC_HandleTypeDef *hcec, uint8_t InitiatorAddress, uint8_t DestinationAddress, |
696 | HAL_StatusTypeDef HAL_CEC_Transmit_IT(CEC_HandleTypeDef *hcec, uint8_t InitiatorAddress, uint8_t DestinationAddress, |
| 697 | uint8_t *pData, uint32_t Size) |
697 | uint8_t *pData, uint32_t Size) |
| 698 | { |
698 | { |
| 699 | /* if the IP isn't already busy and if there is no previous transmission |
699 | /* if the peripheral isn't already busy and if there is no previous transmission |
| 700 | already pending due to arbitration lost */ |
700 | already pending due to arbitration lost */ |
| 701 | if (hcec->gState == HAL_CEC_STATE_READY) |
701 | if (hcec->gState == HAL_CEC_STATE_READY) |
| 702 | { |
702 | { |
| 703 | if ((pData == NULL) && (Size > 0U)) |
703 | if ((pData == NULL) && (Size > 0U)) |
| 704 | { |
704 | { |
| Line 820... | Line 820... | ||
| 820 | 820 | ||
| 821 | /* ----------------------------Tx Management----------------------------------*/ |
821 | /* ----------------------------Tx Management----------------------------------*/ |
| 822 | /* CEC TX byte request interrupt ------------------------------------------------*/ |
822 | /* CEC TX byte request interrupt ------------------------------------------------*/ |
| 823 | if ((reg & CEC_FLAG_TXBR) != 0U) |
823 | if ((reg & CEC_FLAG_TXBR) != 0U) |
| 824 | { |
824 | { |
| - | 825 | --hcec->TxXferCount; |
|
| 825 | if (hcec->TxXferCount == 0U) |
826 | if (hcec->TxXferCount == 0U) |
| 826 | { |
827 | { |
| 827 | /* if this is the last byte transmission, set TX End of Message (TXEOM) bit */ |
828 | /* if this is the last byte transmission, set TX End of Message (TXEOM) bit */ |
| 828 | __HAL_CEC_LAST_BYTE_TX_SET(hcec); |
829 | __HAL_CEC_LAST_BYTE_TX_SET(hcec); |
| 829 | hcec->Instance->TXDR = *hcec->pTxBuffPtr; |
- | |
| 830 | hcec->pTxBuffPtr++; |
- | |
| 831 | } |
- | |
| 832 | else |
- | |
| 833 | { |
- | |
| 834 | hcec->Instance->TXDR = *hcec->pTxBuffPtr; |
- | |
| 835 | hcec->pTxBuffPtr++; |
- | |
| 836 | hcec->TxXferCount--; |
- | |
| 837 | } |
830 | } |
| - | 831 | /* In all cases transmit the byte */ |
|
| - | 832 | hcec->Instance->TXDR = *hcec->pTxBuffPtr; |
|
| - | 833 | hcec->pTxBuffPtr++; |
|
| 838 | /* clear Tx-Byte request flag */ |
834 | /* clear Tx-Byte request flag */ |
| 839 | __HAL_CEC_CLEAR_FLAG(hcec, CEC_FLAG_TXBR); |
835 | __HAL_CEC_CLEAR_FLAG(hcec, CEC_FLAG_TXBR); |
| 840 | } |
836 | } |
| 841 | 837 | ||
| 842 | /* CEC TX end interrupt ------------------------------------------------*/ |
838 | /* CEC TX end interrupt ------------------------------------------------*/ |