22
22
/* Includes ------------------------------------------------------------------*/
23
23
#include "hw.h"
24
24
#include "mbox_def.h"
25
+ #include "utilities_conf.h"
25
26
26
27
/* Global variables ---------------------------------------------------------*/
27
28
/* Private defines -----------------------------------------------------------*/
@@ -227,7 +228,9 @@ void HW_IPCC_Init( void )
227
228
******************************************************************************/
228
229
void HW_IPCC_BLE_Init ( void )
229
230
{
231
+ UTILS_ENTER_CRITICAL_SECTION ();
230
232
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_BLE_EVENT_CHANNEL );
233
+ UTILS_EXIT_CRITICAL_SECTION ();
231
234
232
235
return ;
233
236
}
@@ -251,14 +254,18 @@ static void HW_IPCC_BLE_EvtHandler( void )
251
254
void HW_IPCC_BLE_SendAclData ( void )
252
255
{
253
256
LL_C1_IPCC_SetFlag_CHx ( IPCC , HW_IPCC_HCI_ACL_DATA_CHANNEL );
257
+ UTILS_ENTER_CRITICAL_SECTION ();
254
258
LL_C1_IPCC_EnableTransmitChannel ( IPCC , HW_IPCC_HCI_ACL_DATA_CHANNEL );
259
+ UTILS_EXIT_CRITICAL_SECTION ();
255
260
256
261
return ;
257
262
}
258
263
259
264
static void HW_IPCC_BLE_AclDataEvtHandler ( void )
260
265
{
266
+ UTILS_ENTER_CRITICAL_SECTION ();
261
267
LL_C1_IPCC_DisableTransmitChannel ( IPCC , HW_IPCC_HCI_ACL_DATA_CHANNEL );
268
+ UTILS_EXIT_CRITICAL_SECTION ();
262
269
263
270
HW_IPCC_BLE_AclDataAckNot ();
264
271
@@ -273,22 +280,28 @@ __weak void HW_IPCC_BLE_RxEvtNot( void ){};
273
280
******************************************************************************/
274
281
void HW_IPCC_SYS_Init ( void )
275
282
{
283
+ UTILS_ENTER_CRITICAL_SECTION ();
276
284
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_SYSTEM_EVENT_CHANNEL );
285
+ UTILS_EXIT_CRITICAL_SECTION ();
277
286
278
287
return ;
279
288
}
280
289
281
290
void HW_IPCC_SYS_SendCmd ( void )
282
291
{
283
292
LL_C1_IPCC_SetFlag_CHx ( IPCC , HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
293
+ UTILS_ENTER_CRITICAL_SECTION ();
284
294
LL_C1_IPCC_EnableTransmitChannel ( IPCC , HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
295
+ UTILS_EXIT_CRITICAL_SECTION ();
285
296
286
297
return ;
287
298
}
288
299
289
300
static void HW_IPCC_SYS_CmdEvtHandler ( void )
290
301
{
302
+ UTILS_ENTER_CRITICAL_SECTION ();
291
303
LL_C1_IPCC_DisableTransmitChannel ( IPCC , HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
304
+ UTILS_EXIT_CRITICAL_SECTION ();
292
305
293
306
HW_IPCC_SYS_CmdEvtNot ();
294
307
@@ -313,30 +326,38 @@ __weak void HW_IPCC_SYS_EvtNot( void ){};
313
326
#ifdef MAC_802_15_4_WB
314
327
void HW_IPCC_MAC_802_15_4_Init ( void )
315
328
{
329
+ UTILS_ENTER_CRITICAL_SECTION ();
316
330
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
331
+ UTILS_EXIT_CRITICAL_SECTION ();
317
332
318
333
return ;
319
334
}
320
335
321
336
void HW_IPCC_MAC_802_15_4_SendCmd ( void )
322
337
{
323
338
LL_C1_IPCC_SetFlag_CHx ( IPCC , HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL );
339
+ UTILS_ENTER_CRITICAL_SECTION ();
324
340
LL_C1_IPCC_EnableTransmitChannel ( IPCC , HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL );
341
+ UTILS_EXIT_CRITICAL_SECTION ();
325
342
326
343
return ;
327
344
}
328
345
329
346
void HW_IPCC_MAC_802_15_4_SendAck ( void )
330
347
{
331
348
LL_C1_IPCC_ClearFlag_CHx ( IPCC , HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
349
+ UTILS_ENTER_CRITICAL_SECTION ();
332
350
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
351
+ UTILS_EXIT_CRITICAL_SECTION ();
333
352
334
353
return ;
335
354
}
336
355
337
356
static void HW_IPCC_MAC_802_15_4_CmdEvtHandler ( void )
338
357
{
358
+ UTILS_ENTER_CRITICAL_SECTION ();
339
359
LL_C1_IPCC_DisableTransmitChannel ( IPCC , HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL );
360
+ UTILS_EXIT_CRITICAL_SECTION ();
340
361
341
362
HW_IPCC_MAC_802_15_4_CmdEvtNot ();
342
363
@@ -345,7 +366,9 @@ static void HW_IPCC_MAC_802_15_4_CmdEvtHandler( void )
345
366
346
367
static void HW_IPCC_MAC_802_15_4_NotEvtHandler ( void )
347
368
{
369
+ UTILS_ENTER_CRITICAL_SECTION ();
348
370
LL_C1_IPCC_DisableReceiveChannel ( IPCC , HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
371
+ UTILS_EXIT_CRITICAL_SECTION ();
349
372
350
373
HW_IPCC_MAC_802_15_4_EvtNot ();
351
374
@@ -361,16 +384,20 @@ __weak void HW_IPCC_MAC_802_15_4_EvtNot( void ){};
361
384
#ifdef THREAD_WB
362
385
void HW_IPCC_THREAD_Init ( void )
363
386
{
387
+ UTILS_ENTER_CRITICAL_SECTION ();
364
388
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
365
389
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
390
+ UTILS_EXIT_CRITICAL_SECTION ();
366
391
367
392
return ;
368
393
}
369
394
370
395
void HW_IPCC_OT_SendCmd ( void )
371
396
{
372
397
LL_C1_IPCC_SetFlag_CHx ( IPCC , HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
398
+ UTILS_ENTER_CRITICAL_SECTION ();
373
399
LL_C1_IPCC_EnableTransmitChannel ( IPCC , HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
400
+ UTILS_EXIT_CRITICAL_SECTION ();
374
401
375
402
return ;
376
403
}
@@ -385,22 +412,28 @@ void HW_IPCC_CLI_SendCmd( void )
385
412
void HW_IPCC_THREAD_SendAck ( void )
386
413
{
387
414
LL_C1_IPCC_ClearFlag_CHx ( IPCC , HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
415
+ UTILS_ENTER_CRITICAL_SECTION ();
388
416
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
417
+ UTILS_EXIT_CRITICAL_SECTION ();
389
418
390
419
return ;
391
420
}
392
421
393
422
void HW_IPCC_THREAD_CliSendAck ( void )
394
423
{
395
424
LL_C1_IPCC_ClearFlag_CHx ( IPCC , HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
425
+ UTILS_ENTER_CRITICAL_SECTION ();
396
426
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
427
+ UTILS_EXIT_CRITICAL_SECTION ();
397
428
398
429
return ;
399
430
}
400
431
401
432
static void HW_IPCC_OT_CmdEvtHandler ( void )
402
433
{
434
+ UTILS_ENTER_CRITICAL_SECTION ();
403
435
LL_C1_IPCC_DisableTransmitChannel ( IPCC , HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
436
+ UTILS_EXIT_CRITICAL_SECTION ();
404
437
405
438
HW_IPCC_OT_CmdEvtNot ();
406
439
@@ -409,7 +442,9 @@ static void HW_IPCC_OT_CmdEvtHandler( void )
409
442
410
443
static void HW_IPCC_THREAD_NotEvtHandler ( void )
411
444
{
445
+ UTILS_ENTER_CRITICAL_SECTION ();
412
446
LL_C1_IPCC_DisableReceiveChannel ( IPCC , HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
447
+ UTILS_EXIT_CRITICAL_SECTION ();
413
448
414
449
HW_IPCC_THREAD_EvtNot ();
415
450
@@ -418,7 +453,9 @@ static void HW_IPCC_THREAD_NotEvtHandler( void )
418
453
419
454
static void HW_IPCC_THREAD_CliNotEvtHandler ( void )
420
455
{
456
+ UTILS_ENTER_CRITICAL_SECTION ();
421
457
LL_C1_IPCC_DisableReceiveChannel ( IPCC , HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
458
+ UTILS_EXIT_CRITICAL_SECTION ();
422
459
423
460
HW_IPCC_THREAD_CliEvtNot ();
424
461
@@ -437,8 +474,10 @@ __weak void HW_IPCC_THREAD_EvtNot( void ){};
437
474
#ifdef LLD_TESTS_WB
438
475
void HW_IPCC_LLDTESTS_Init ( void )
439
476
{
477
+ UTILS_ENTER_CRITICAL_SECTION ();
440
478
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_LLDTESTS_CLI_RSP_CHANNEL );
441
479
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_LLDTESTS_M0_CMD_CHANNEL );
480
+ UTILS_EXIT_CRITICAL_SECTION ();
442
481
return ;
443
482
}
444
483
@@ -450,29 +489,38 @@ void HW_IPCC_LLDTESTS_SendCliCmd( void )
450
489
451
490
static void HW_IPCC_LLDTESTS_ReceiveCliRspHandler ( void )
452
491
{
492
+ UTILS_ENTER_CRITICAL_SECTION ();
453
493
LL_C1_IPCC_DisableReceiveChannel ( IPCC , HW_IPCC_LLDTESTS_CLI_RSP_CHANNEL );
494
+ UTILS_EXIT_CRITICAL_SECTION ();
495
+
454
496
HW_IPCC_LLDTESTS_ReceiveCliRsp ();
455
497
return ;
456
498
}
457
499
458
500
void HW_IPCC_LLDTESTS_SendCliRspAck ( void )
459
501
{
460
502
LL_C1_IPCC_ClearFlag_CHx ( IPCC , HW_IPCC_LLDTESTS_CLI_RSP_CHANNEL );
503
+ UTILS_ENTER_CRITICAL_SECTION ();
461
504
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_LLDTESTS_CLI_RSP_CHANNEL );
505
+ UTILS_EXIT_CRITICAL_SECTION ();
462
506
return ;
463
507
}
464
508
465
509
static void HW_IPCC_LLDTESTS_ReceiveM0CmdHandler ( void )
466
510
{
511
+ UTILS_ENTER_CRITICAL_SECTION ();
467
512
LL_C1_IPCC_DisableReceiveChannel ( IPCC , HW_IPCC_LLDTESTS_M0_CMD_CHANNEL );
513
+ UTILS_EXIT_CRITICAL_SECTION ();
468
514
HW_IPCC_LLDTESTS_ReceiveM0Cmd ();
469
515
return ;
470
516
}
471
517
472
518
void HW_IPCC_LLDTESTS_SendM0CmdAck ( void )
473
519
{
474
520
LL_C1_IPCC_ClearFlag_CHx ( IPCC , HW_IPCC_LLDTESTS_M0_CMD_CHANNEL );
521
+ UTILS_ENTER_CRITICAL_SECTION ();
475
522
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_LLDTESTS_M0_CMD_CHANNEL );
523
+ UTILS_EXIT_CRITICAL_SECTION ();
476
524
return ;
477
525
}
478
526
__weak void HW_IPCC_LLDTESTS_ReceiveCliRsp ( void ){};
@@ -485,8 +533,10 @@ __weak void HW_IPCC_LLDTESTS_ReceiveM0Cmd( void ){};
485
533
#ifdef LLD_BLE_WB
486
534
void HW_IPCC_LLD_BLE_Init ( void )
487
535
{
536
+ UTILS_ENTER_CRITICAL_SECTION ();
488
537
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_LLD_BLE_RSP_CHANNEL );
489
538
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_LLD_BLE_M0_CMD_CHANNEL );
539
+ UTILS_EXIT_CRITICAL_SECTION ();
490
540
return ;
491
541
}
492
542
@@ -498,15 +548,19 @@ void HW_IPCC_LLD_BLE_SendCliCmd( void )
498
548
499
549
/*static void HW_IPCC_LLD_BLE_ReceiveCliRspHandler( void )
500
550
{
551
+ UTILS_ENTER_CRITICAL_SECTION();
501
552
LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_LLD_BLE_CLI_RSP_CHANNEL );
553
+ UTILS_EXIT_CRITICAL_SECTION();
502
554
HW_IPCC_LLD_BLE_ReceiveCliRsp();
503
555
return;
504
556
}*/
505
557
506
558
void HW_IPCC_LLD_BLE_SendCliRspAck ( void )
507
559
{
508
560
LL_C1_IPCC_ClearFlag_CHx ( IPCC , HW_IPCC_LLD_BLE_CLI_RSP_CHANNEL );
561
+ UTILS_ENTER_CRITICAL_SECTION ();
509
562
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_LLD_BLE_CLI_RSP_CHANNEL );
563
+ UTILS_EXIT_CRITICAL_SECTION ();
510
564
return ;
511
565
}
512
566
@@ -535,15 +589,19 @@ void HW_IPCC_LLD_BLE_SendCmd( void )
535
589
536
590
static void HW_IPCC_LLD_BLE_ReceiveRspHandler ( void )
537
591
{
592
+ UTILS_ENTER_CRITICAL_SECTION ();
538
593
LL_C1_IPCC_DisableReceiveChannel ( IPCC , HW_IPCC_LLD_BLE_RSP_CHANNEL );
594
+ UTILS_EXIT_CRITICAL_SECTION ();
539
595
HW_IPCC_LLD_BLE_ReceiveRsp ();
540
596
return ;
541
597
}
542
598
543
599
void HW_IPCC_LLD_BLE_SendRspAck ( void )
544
600
{
545
601
LL_C1_IPCC_ClearFlag_CHx ( IPCC , HW_IPCC_LLD_BLE_RSP_CHANNEL );
602
+ UTILS_ENTER_CRITICAL_SECTION ();
546
603
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_LLD_BLE_RSP_CHANNEL );
604
+ UTILS_EXIT_CRITICAL_SECTION ();
547
605
return ;
548
606
}
549
607
@@ -555,31 +613,39 @@ void HW_IPCC_LLD_BLE_SendRspAck( void )
555
613
#ifdef ZIGBEE_WB
556
614
void HW_IPCC_ZIGBEE_Init ( void )
557
615
{
616
+ UTILS_ENTER_CRITICAL_SECTION ();
558
617
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL );
559
618
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_ZIGBEE_M0_REQUEST_CHANNEL );
619
+ UTILS_EXIT_CRITICAL_SECTION ();
560
620
561
621
return ;
562
622
}
563
623
564
624
void HW_IPCC_ZIGBEE_SendM4RequestToM0 ( void )
565
625
{
566
626
LL_C1_IPCC_SetFlag_CHx ( IPCC , HW_IPCC_ZIGBEE_CMD_APPLI_CHANNEL );
627
+ UTILS_ENTER_CRITICAL_SECTION ();
567
628
LL_C1_IPCC_EnableTransmitChannel ( IPCC , HW_IPCC_ZIGBEE_CMD_APPLI_CHANNEL );
629
+ UTILS_EXIT_CRITICAL_SECTION ();
568
630
569
631
return ;
570
632
}
571
633
572
634
void HW_IPCC_ZIGBEE_SendM4AckToM0Notify ( void )
573
635
{
574
636
LL_C1_IPCC_ClearFlag_CHx ( IPCC , HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL );
637
+ UTILS_ENTER_CRITICAL_SECTION ();
575
638
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL );
639
+ UTILS_EXIT_CRITICAL_SECTION ();
576
640
577
641
return ;
578
642
}
579
643
580
644
static void HW_IPCC_ZIGBEE_CmdEvtHandler ( void )
581
645
{
646
+ UTILS_ENTER_CRITICAL_SECTION ();
582
647
LL_C1_IPCC_DisableTransmitChannel ( IPCC , HW_IPCC_ZIGBEE_CMD_APPLI_CHANNEL );
648
+ UTILS_EXIT_CRITICAL_SECTION ();
583
649
584
650
HW_IPCC_ZIGBEE_RecvAppliAckFromM0 ();
585
651
@@ -588,7 +654,9 @@ static void HW_IPCC_ZIGBEE_CmdEvtHandler( void )
588
654
589
655
static void HW_IPCC_ZIGBEE_StackNotifEvtHandler ( void )
590
656
{
657
+ UTILS_ENTER_CRITICAL_SECTION ();
591
658
LL_C1_IPCC_DisableReceiveChannel ( IPCC , HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL );
659
+ UTILS_EXIT_CRITICAL_SECTION ();
592
660
593
661
HW_IPCC_ZIGBEE_RecvM0NotifyToM4 ();
594
662
@@ -597,7 +665,9 @@ static void HW_IPCC_ZIGBEE_StackNotifEvtHandler( void )
597
665
598
666
static void HW_IPCC_ZIGBEE_StackM0RequestHandler ( void )
599
667
{
668
+ UTILS_ENTER_CRITICAL_SECTION ();
600
669
LL_C1_IPCC_DisableReceiveChannel ( IPCC , HW_IPCC_ZIGBEE_M0_REQUEST_CHANNEL );
670
+ UTILS_EXIT_CRITICAL_SECTION ();
601
671
602
672
HW_IPCC_ZIGBEE_RecvM0RequestToM4 ();
603
673
@@ -607,7 +677,9 @@ static void HW_IPCC_ZIGBEE_StackM0RequestHandler( void )
607
677
void HW_IPCC_ZIGBEE_SendM4AckToM0Request ( void )
608
678
{
609
679
LL_C1_IPCC_ClearFlag_CHx ( IPCC , HW_IPCC_ZIGBEE_M0_REQUEST_CHANNEL );
680
+ UTILS_ENTER_CRITICAL_SECTION ();
610
681
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_ZIGBEE_M0_REQUEST_CHANNEL );
682
+ UTILS_EXIT_CRITICAL_SECTION ();
611
683
612
684
return ;
613
685
}
@@ -625,7 +697,9 @@ void HW_IPCC_MM_SendFreeBuf( void (*cb)( void ) )
625
697
if ( LL_C1_IPCC_IsActiveFlag_CHx ( IPCC , HW_IPCC_MM_RELEASE_BUFFER_CHANNEL ) )
626
698
{
627
699
FreeBufCb = cb ;
700
+ UTILS_ENTER_CRITICAL_SECTION ();
628
701
LL_C1_IPCC_EnableTransmitChannel ( IPCC , HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
702
+ UTILS_EXIT_CRITICAL_SECTION ();
629
703
}
630
704
else
631
705
{
@@ -639,7 +713,9 @@ void HW_IPCC_MM_SendFreeBuf( void (*cb)( void ) )
639
713
640
714
static void HW_IPCC_MM_FreeBufHandler ( void )
641
715
{
716
+ UTILS_ENTER_CRITICAL_SECTION ();
642
717
LL_C1_IPCC_DisableTransmitChannel ( IPCC , HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
718
+ UTILS_EXIT_CRITICAL_SECTION ();
643
719
644
720
FreeBufCb ();
645
721
@@ -653,7 +729,9 @@ static void HW_IPCC_MM_FreeBufHandler( void )
653
729
******************************************************************************/
654
730
void HW_IPCC_TRACES_Init ( void )
655
731
{
732
+ UTILS_ENTER_CRITICAL_SECTION ();
656
733
LL_C1_IPCC_EnableReceiveChannel ( IPCC , HW_IPCC_TRACES_CHANNEL );
734
+ UTILS_EXIT_CRITICAL_SECTION ();
657
735
658
736
return ;
659
737
}
0 commit comments