xref: /btstack/port/stm32-wb55xx-nucleo-freertos/Src/hw_ipcc.c (revision 0561b2d8d5dba972c7daa57d5e677f7a1327edfd)
1*0561b2d8STREFOU Felix /**
2*0561b2d8STREFOU Felix  ******************************************************************************
3*0561b2d8STREFOU Felix   * File Name          : Target/hw_ipcc.c
4*0561b2d8STREFOU Felix   * Description        : Hardware IPCC source file for BLE
5*0561b2d8STREFOU Felix   *                      middleWare.
6*0561b2d8STREFOU Felix   ******************************************************************************
7*0561b2d8STREFOU Felix   * @attention
8*0561b2d8STREFOU Felix   *
9*0561b2d8STREFOU Felix   * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
10*0561b2d8STREFOU Felix   * All rights reserved.</center></h2>
11*0561b2d8STREFOU Felix   *
12*0561b2d8STREFOU Felix   * This software component is licensed by ST under BSD 3-Clause license,
13*0561b2d8STREFOU Felix   * the "License"; You may not use this file except in compliance with the
14*0561b2d8STREFOU Felix   * License. You may obtain a copy of the License at:
15*0561b2d8STREFOU Felix   *                        opensource.org/licenses/BSD-3-Clause
16*0561b2d8STREFOU Felix   *
17*0561b2d8STREFOU Felix   ******************************************************************************
18*0561b2d8STREFOU Felix   */
19*0561b2d8STREFOU Felix 
20*0561b2d8STREFOU Felix /* Includes ------------------------------------------------------------------*/
21*0561b2d8STREFOU Felix #include "app_conf.h"
22*0561b2d8STREFOU Felix #include "mbox_def.h"
23*0561b2d8STREFOU Felix 
24*0561b2d8STREFOU Felix /* Global variables ---------------------------------------------------------*/
25*0561b2d8STREFOU Felix /* Private defines -----------------------------------------------------------*/
26*0561b2d8STREFOU Felix #define HW_IPCC_TX_PENDING( channel ) ( !(LL_C1_IPCC_IsActiveFlag_CHx( IPCC, channel )) ) &&  (((~(IPCC->C1MR)) & (channel << 16U)))
27*0561b2d8STREFOU Felix #define HW_IPCC_RX_PENDING( channel )  (LL_C2_IPCC_IsActiveFlag_CHx( IPCC, channel )) && (((~(IPCC->C1MR)) & (channel << 0U)))
28*0561b2d8STREFOU Felix 
29*0561b2d8STREFOU Felix /* Private macros ------------------------------------------------------------*/
30*0561b2d8STREFOU Felix /* Private typedef -----------------------------------------------------------*/
31*0561b2d8STREFOU Felix /* Private variables ---------------------------------------------------------*/
32*0561b2d8STREFOU Felix static void (*FreeBufCb)( void );
33*0561b2d8STREFOU Felix 
34*0561b2d8STREFOU Felix /* Private function prototypes -----------------------------------------------*/
35*0561b2d8STREFOU Felix static void HW_IPCC_BLE_EvtHandler( void );
36*0561b2d8STREFOU Felix static void HW_IPCC_BLE_AclDataEvtHandler( void );
37*0561b2d8STREFOU Felix static void HW_IPCC_MM_FreeBufHandler( void );
38*0561b2d8STREFOU Felix static void HW_IPCC_SYS_CmdEvtHandler( void );
39*0561b2d8STREFOU Felix static void HW_IPCC_SYS_EvtHandler( void );
40*0561b2d8STREFOU Felix static void HW_IPCC_TRACES_EvtHandler( void );
41*0561b2d8STREFOU Felix static void HW_IPCC_OT_CmdEvtHandler( void );
42*0561b2d8STREFOU Felix static void HW_IPCC_THREAD_NotEvtHandler( void );
43*0561b2d8STREFOU Felix static void HW_IPCC_THREAD_CliNotEvtHandler( void );
44*0561b2d8STREFOU Felix 
45*0561b2d8STREFOU Felix /* Public function definition -----------------------------------------------*/
46*0561b2d8STREFOU Felix 
47*0561b2d8STREFOU Felix /******************************************************************************
48*0561b2d8STREFOU Felix  * INTERRUPT HANDLER
49*0561b2d8STREFOU Felix  ******************************************************************************/
HW_IPCC_Rx_Handler(void)50*0561b2d8STREFOU Felix void HW_IPCC_Rx_Handler( void )
51*0561b2d8STREFOU Felix {
52*0561b2d8STREFOU Felix 	if (HW_IPCC_RX_PENDING( HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL ))
53*0561b2d8STREFOU Felix 	{
54*0561b2d8STREFOU Felix 		HW_IPCC_THREAD_NotEvtHandler();
55*0561b2d8STREFOU Felix 	}
56*0561b2d8STREFOU Felix 	else if (HW_IPCC_RX_PENDING( HW_IPCC_BLE_EVENT_CHANNEL ))
57*0561b2d8STREFOU Felix 	{
58*0561b2d8STREFOU Felix 		HW_IPCC_BLE_EvtHandler();
59*0561b2d8STREFOU Felix 	}
60*0561b2d8STREFOU Felix 	else if (HW_IPCC_RX_PENDING( HW_IPCC_SYSTEM_EVENT_CHANNEL ))
61*0561b2d8STREFOU Felix 	{
62*0561b2d8STREFOU Felix 		HW_IPCC_SYS_EvtHandler();
63*0561b2d8STREFOU Felix 	}
64*0561b2d8STREFOU Felix 	else if (HW_IPCC_RX_PENDING( HW_IPCC_TRACES_CHANNEL ))
65*0561b2d8STREFOU Felix 	{
66*0561b2d8STREFOU Felix 		HW_IPCC_TRACES_EvtHandler();
67*0561b2d8STREFOU Felix 	}
68*0561b2d8STREFOU Felix   else if (HW_IPCC_RX_PENDING( HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL ))
69*0561b2d8STREFOU Felix   {
70*0561b2d8STREFOU Felix     HW_IPCC_THREAD_CliNotEvtHandler();
71*0561b2d8STREFOU Felix   }
72*0561b2d8STREFOU Felix 
73*0561b2d8STREFOU Felix 	return;
74*0561b2d8STREFOU Felix }
75*0561b2d8STREFOU Felix 
HW_IPCC_Tx_Handler(void)76*0561b2d8STREFOU Felix void HW_IPCC_Tx_Handler( void )
77*0561b2d8STREFOU Felix {
78*0561b2d8STREFOU Felix 	if (HW_IPCC_TX_PENDING( HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL ))
79*0561b2d8STREFOU Felix 	{
80*0561b2d8STREFOU Felix 		HW_IPCC_OT_CmdEvtHandler();
81*0561b2d8STREFOU Felix 	}
82*0561b2d8STREFOU Felix 	else if (HW_IPCC_TX_PENDING( HW_IPCC_SYSTEM_CMD_RSP_CHANNEL ))
83*0561b2d8STREFOU Felix 	{
84*0561b2d8STREFOU Felix 		HW_IPCC_SYS_CmdEvtHandler();
85*0561b2d8STREFOU Felix 	}
86*0561b2d8STREFOU Felix 	else if (HW_IPCC_TX_PENDING( HW_IPCC_MM_RELEASE_BUFFER_CHANNEL ))
87*0561b2d8STREFOU Felix 	{
88*0561b2d8STREFOU Felix 		HW_IPCC_MM_FreeBufHandler();
89*0561b2d8STREFOU Felix 	}
90*0561b2d8STREFOU Felix 	else if (HW_IPCC_TX_PENDING( HW_IPCC_HCI_ACL_DATA_CHANNEL ))
91*0561b2d8STREFOU Felix 	{
92*0561b2d8STREFOU Felix 			HW_IPCC_BLE_AclDataEvtHandler();
93*0561b2d8STREFOU Felix 	}
94*0561b2d8STREFOU Felix 	return;
95*0561b2d8STREFOU Felix }
96*0561b2d8STREFOU Felix /******************************************************************************
97*0561b2d8STREFOU Felix  * GENERAL
98*0561b2d8STREFOU Felix  ******************************************************************************/
HW_IPCC_Enable(void)99*0561b2d8STREFOU Felix void HW_IPCC_Enable( void )
100*0561b2d8STREFOU Felix {
101*0561b2d8STREFOU Felix 	LL_PWR_EnableBootC2();
102*0561b2d8STREFOU Felix 
103*0561b2d8STREFOU Felix 	return;
104*0561b2d8STREFOU Felix }
105*0561b2d8STREFOU Felix 
HW_IPCC_Init(void)106*0561b2d8STREFOU Felix void HW_IPCC_Init( void )
107*0561b2d8STREFOU Felix {
108*0561b2d8STREFOU Felix 	LL_AHB3_GRP1_EnableClock( LL_AHB3_GRP1_PERIPH_IPCC );
109*0561b2d8STREFOU Felix 
110*0561b2d8STREFOU Felix 	LL_C1_IPCC_EnableIT_RXO( IPCC );
111*0561b2d8STREFOU Felix 	LL_C1_IPCC_EnableIT_TXF( IPCC );
112*0561b2d8STREFOU Felix 
113*0561b2d8STREFOU Felix 	HAL_NVIC_EnableIRQ(IPCC_C1_RX_IRQn);
114*0561b2d8STREFOU Felix 	HAL_NVIC_EnableIRQ(IPCC_C1_TX_IRQn);
115*0561b2d8STREFOU Felix 
116*0561b2d8STREFOU Felix 	return;
117*0561b2d8STREFOU Felix }
118*0561b2d8STREFOU Felix 
119*0561b2d8STREFOU Felix /******************************************************************************
120*0561b2d8STREFOU Felix  * BLE
121*0561b2d8STREFOU Felix  ******************************************************************************/
HW_IPCC_BLE_Init(void)122*0561b2d8STREFOU Felix void HW_IPCC_BLE_Init( void )
123*0561b2d8STREFOU Felix {
124*0561b2d8STREFOU Felix 	LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_BLE_EVENT_CHANNEL );
125*0561b2d8STREFOU Felix 
126*0561b2d8STREFOU Felix 	return;
127*0561b2d8STREFOU Felix }
128*0561b2d8STREFOU Felix 
HW_IPCC_BLE_SendCmd(void)129*0561b2d8STREFOU Felix void HW_IPCC_BLE_SendCmd( void )
130*0561b2d8STREFOU Felix {
131*0561b2d8STREFOU Felix 	LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_BLE_CMD_CHANNEL );
132*0561b2d8STREFOU Felix 
133*0561b2d8STREFOU Felix 	return;
134*0561b2d8STREFOU Felix }
135*0561b2d8STREFOU Felix 
HW_IPCC_BLE_EvtHandler(void)136*0561b2d8STREFOU Felix static void HW_IPCC_BLE_EvtHandler( void )
137*0561b2d8STREFOU Felix {
138*0561b2d8STREFOU Felix 	HW_IPCC_BLE_RxEvtNot();
139*0561b2d8STREFOU Felix 
140*0561b2d8STREFOU Felix 	LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_BLE_EVENT_CHANNEL );
141*0561b2d8STREFOU Felix 
142*0561b2d8STREFOU Felix 	return;
143*0561b2d8STREFOU Felix }
144*0561b2d8STREFOU Felix 
HW_IPCC_BLE_SendAclData(void)145*0561b2d8STREFOU Felix void HW_IPCC_BLE_SendAclData( void )
146*0561b2d8STREFOU Felix {
147*0561b2d8STREFOU Felix   LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
148*0561b2d8STREFOU Felix   LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
149*0561b2d8STREFOU Felix 
150*0561b2d8STREFOU Felix   return;
151*0561b2d8STREFOU Felix }
152*0561b2d8STREFOU Felix 
HW_IPCC_BLE_AclDataEvtHandler(void)153*0561b2d8STREFOU Felix static void HW_IPCC_BLE_AclDataEvtHandler( void )
154*0561b2d8STREFOU Felix {
155*0561b2d8STREFOU Felix   LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
156*0561b2d8STREFOU Felix 
157*0561b2d8STREFOU Felix   HW_IPCC_BLE_AclDataAckNot();
158*0561b2d8STREFOU Felix 
159*0561b2d8STREFOU Felix   return;
160*0561b2d8STREFOU Felix }
161*0561b2d8STREFOU Felix 
HW_IPCC_BLE_AclDataAckNot(void)162*0561b2d8STREFOU Felix __weak void HW_IPCC_BLE_AclDataAckNot( void ){};
HW_IPCC_BLE_RxEvtNot(void)163*0561b2d8STREFOU Felix __weak void HW_IPCC_BLE_RxEvtNot( void ){};
164*0561b2d8STREFOU Felix 
165*0561b2d8STREFOU Felix /******************************************************************************
166*0561b2d8STREFOU Felix  * SYSTEM
167*0561b2d8STREFOU Felix  ******************************************************************************/
HW_IPCC_SYS_Init(void)168*0561b2d8STREFOU Felix void HW_IPCC_SYS_Init( void )
169*0561b2d8STREFOU Felix {
170*0561b2d8STREFOU Felix 	LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_SYSTEM_EVENT_CHANNEL );
171*0561b2d8STREFOU Felix 
172*0561b2d8STREFOU Felix 	return;
173*0561b2d8STREFOU Felix }
174*0561b2d8STREFOU Felix 
HW_IPCC_SYS_SendCmd(void)175*0561b2d8STREFOU Felix void HW_IPCC_SYS_SendCmd( void )
176*0561b2d8STREFOU Felix {
177*0561b2d8STREFOU Felix 	LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
178*0561b2d8STREFOU Felix 	LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
179*0561b2d8STREFOU Felix 
180*0561b2d8STREFOU Felix 	return;
181*0561b2d8STREFOU Felix }
182*0561b2d8STREFOU Felix 
HW_IPCC_SYS_CmdEvtHandler(void)183*0561b2d8STREFOU Felix static void HW_IPCC_SYS_CmdEvtHandler( void )
184*0561b2d8STREFOU Felix {
185*0561b2d8STREFOU Felix 	LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
186*0561b2d8STREFOU Felix 
187*0561b2d8STREFOU Felix 	HW_IPCC_SYS_CmdEvtNot();
188*0561b2d8STREFOU Felix 
189*0561b2d8STREFOU Felix 	return;
190*0561b2d8STREFOU Felix }
191*0561b2d8STREFOU Felix 
HW_IPCC_SYS_EvtHandler(void)192*0561b2d8STREFOU Felix static void HW_IPCC_SYS_EvtHandler( void )
193*0561b2d8STREFOU Felix {
194*0561b2d8STREFOU Felix 	HW_IPCC_SYS_EvtNot();
195*0561b2d8STREFOU Felix 
196*0561b2d8STREFOU Felix 	LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_SYSTEM_EVENT_CHANNEL );
197*0561b2d8STREFOU Felix 
198*0561b2d8STREFOU Felix 	return;
199*0561b2d8STREFOU Felix }
200*0561b2d8STREFOU Felix 
HW_IPCC_SYS_CmdEvtNot(void)201*0561b2d8STREFOU Felix __weak void HW_IPCC_SYS_CmdEvtNot( void ){};
HW_IPCC_SYS_EvtNot(void)202*0561b2d8STREFOU Felix __weak void HW_IPCC_SYS_EvtNot( void ){};
203*0561b2d8STREFOU Felix 
204*0561b2d8STREFOU Felix /******************************************************************************
205*0561b2d8STREFOU Felix  * THREAD
206*0561b2d8STREFOU Felix  ******************************************************************************/
HW_IPCC_THREAD_Init(void)207*0561b2d8STREFOU Felix void HW_IPCC_THREAD_Init( void )
208*0561b2d8STREFOU Felix {
209*0561b2d8STREFOU Felix 	LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
210*0561b2d8STREFOU Felix   LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
211*0561b2d8STREFOU Felix 
212*0561b2d8STREFOU Felix 	return;
213*0561b2d8STREFOU Felix }
214*0561b2d8STREFOU Felix 
HW_IPCC_OT_SendCmd(void)215*0561b2d8STREFOU Felix void HW_IPCC_OT_SendCmd( void )
216*0561b2d8STREFOU Felix {
217*0561b2d8STREFOU Felix 	LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
218*0561b2d8STREFOU Felix   LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
219*0561b2d8STREFOU Felix 
220*0561b2d8STREFOU Felix 	return;
221*0561b2d8STREFOU Felix }
222*0561b2d8STREFOU Felix 
HW_IPCC_CLI_SendCmd(void)223*0561b2d8STREFOU Felix void HW_IPCC_CLI_SendCmd( void )
224*0561b2d8STREFOU Felix {
225*0561b2d8STREFOU Felix   LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_THREAD_CLI_CMD_CHANNEL );
226*0561b2d8STREFOU Felix 
227*0561b2d8STREFOU Felix 	return;
228*0561b2d8STREFOU Felix }
229*0561b2d8STREFOU Felix 
HW_IPCC_THREAD_SendAck(void)230*0561b2d8STREFOU Felix void HW_IPCC_THREAD_SendAck( void )
231*0561b2d8STREFOU Felix {
232*0561b2d8STREFOU Felix 	  LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
233*0561b2d8STREFOU Felix 	  LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
234*0561b2d8STREFOU Felix 
235*0561b2d8STREFOU Felix 	return;
236*0561b2d8STREFOU Felix }
237*0561b2d8STREFOU Felix 
HW_IPCC_THREAD_CliSendAck(void)238*0561b2d8STREFOU Felix void HW_IPCC_THREAD_CliSendAck( void )
239*0561b2d8STREFOU Felix {
240*0561b2d8STREFOU Felix     LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
241*0561b2d8STREFOU Felix     LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
242*0561b2d8STREFOU Felix 
243*0561b2d8STREFOU Felix   return;
244*0561b2d8STREFOU Felix }
245*0561b2d8STREFOU Felix 
HW_IPCC_OT_CmdEvtHandler(void)246*0561b2d8STREFOU Felix static void HW_IPCC_OT_CmdEvtHandler( void )
247*0561b2d8STREFOU Felix {
248*0561b2d8STREFOU Felix 	LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
249*0561b2d8STREFOU Felix 
250*0561b2d8STREFOU Felix 	HW_IPCC_OT_CmdEvtNot();
251*0561b2d8STREFOU Felix 
252*0561b2d8STREFOU Felix 	return;
253*0561b2d8STREFOU Felix }
254*0561b2d8STREFOU Felix 
HW_IPCC_THREAD_NotEvtHandler(void)255*0561b2d8STREFOU Felix static void HW_IPCC_THREAD_NotEvtHandler( void )
256*0561b2d8STREFOU Felix {
257*0561b2d8STREFOU Felix 	LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
258*0561b2d8STREFOU Felix 
259*0561b2d8STREFOU Felix 	HW_IPCC_THREAD_EvtNot();
260*0561b2d8STREFOU Felix 
261*0561b2d8STREFOU Felix 	return;
262*0561b2d8STREFOU Felix }
263*0561b2d8STREFOU Felix 
HW_IPCC_THREAD_CliNotEvtHandler(void)264*0561b2d8STREFOU Felix static void HW_IPCC_THREAD_CliNotEvtHandler( void )
265*0561b2d8STREFOU Felix {
266*0561b2d8STREFOU Felix   LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
267*0561b2d8STREFOU Felix 
268*0561b2d8STREFOU Felix   HW_IPCC_THREAD_CliEvtNot();
269*0561b2d8STREFOU Felix 
270*0561b2d8STREFOU Felix   return;
271*0561b2d8STREFOU Felix }
272*0561b2d8STREFOU Felix 
HW_IPCC_OT_CmdEvtNot(void)273*0561b2d8STREFOU Felix __weak void HW_IPCC_OT_CmdEvtNot( void ){};
HW_IPCC_CLI_CmdEvtNot(void)274*0561b2d8STREFOU Felix __weak void HW_IPCC_CLI_CmdEvtNot( void ){};
HW_IPCC_THREAD_EvtNot(void)275*0561b2d8STREFOU Felix __weak void HW_IPCC_THREAD_EvtNot( void ){};
HW_IPCC_THREAD_CliEvtNot(void)276*0561b2d8STREFOU Felix __weak void HW_IPCC_THREAD_CliEvtNot( void ){};
277*0561b2d8STREFOU Felix 
278*0561b2d8STREFOU Felix /******************************************************************************
279*0561b2d8STREFOU Felix  * MEMORY MANAGER
280*0561b2d8STREFOU Felix  ******************************************************************************/
HW_IPCC_MM_SendFreeBuf(void (* cb)(void))281*0561b2d8STREFOU Felix void HW_IPCC_MM_SendFreeBuf( void (*cb)( void ) )
282*0561b2d8STREFOU Felix {
283*0561b2d8STREFOU Felix 	if ( LL_C1_IPCC_IsActiveFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL ) )
284*0561b2d8STREFOU Felix 	{
285*0561b2d8STREFOU Felix 		FreeBufCb = cb;
286*0561b2d8STREFOU Felix 		LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
287*0561b2d8STREFOU Felix 	}
288*0561b2d8STREFOU Felix 	else
289*0561b2d8STREFOU Felix 	{
290*0561b2d8STREFOU Felix 		cb();
291*0561b2d8STREFOU Felix 
292*0561b2d8STREFOU Felix 		LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
293*0561b2d8STREFOU Felix 	}
294*0561b2d8STREFOU Felix 
295*0561b2d8STREFOU Felix 	return;
296*0561b2d8STREFOU Felix }
297*0561b2d8STREFOU Felix 
HW_IPCC_MM_FreeBufHandler(void)298*0561b2d8STREFOU Felix static void HW_IPCC_MM_FreeBufHandler( void )
299*0561b2d8STREFOU Felix {
300*0561b2d8STREFOU Felix 	LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
301*0561b2d8STREFOU Felix 
302*0561b2d8STREFOU Felix 	FreeBufCb();
303*0561b2d8STREFOU Felix 
304*0561b2d8STREFOU Felix 	LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
305*0561b2d8STREFOU Felix 
306*0561b2d8STREFOU Felix 	return;
307*0561b2d8STREFOU Felix }
308*0561b2d8STREFOU Felix 
309*0561b2d8STREFOU Felix /******************************************************************************
310*0561b2d8STREFOU Felix  * TRACES
311*0561b2d8STREFOU Felix  ******************************************************************************/
HW_IPCC_TRACES_Init(void)312*0561b2d8STREFOU Felix void HW_IPCC_TRACES_Init( void )
313*0561b2d8STREFOU Felix {
314*0561b2d8STREFOU Felix 	LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_TRACES_CHANNEL );
315*0561b2d8STREFOU Felix 
316*0561b2d8STREFOU Felix 	return;
317*0561b2d8STREFOU Felix }
318*0561b2d8STREFOU Felix 
HW_IPCC_TRACES_EvtHandler(void)319*0561b2d8STREFOU Felix static void HW_IPCC_TRACES_EvtHandler( void )
320*0561b2d8STREFOU Felix {
321*0561b2d8STREFOU Felix 	HW_IPCC_TRACES_EvtNot();
322*0561b2d8STREFOU Felix 
323*0561b2d8STREFOU Felix 	LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_TRACES_CHANNEL );
324*0561b2d8STREFOU Felix 
325*0561b2d8STREFOU Felix 	return;
326*0561b2d8STREFOU Felix }
327*0561b2d8STREFOU Felix 
HW_IPCC_TRACES_EvtNot(void)328*0561b2d8STREFOU Felix __weak void HW_IPCC_TRACES_EvtNot( void ){};
329*0561b2d8STREFOU Felix 
330*0561b2d8STREFOU Felix /******************* (C) COPYRIGHT 2019 STMicroelectronics *****END OF FILE****/
331