Skip to content

chore: update to STM32_WPAN v1.22.0 #73

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Mar 5, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/utility/STM32_WPAN/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

## Source

[STMicroelectronics/STM32CubeWB Release v1.21.0](https://github.com/STMicroelectronics/STM32CubeWB/releases/tag/v1.21.0)
- Application: [BLE_TransparentMode](https://github.com/STMicroelectronics/STM32CubeWB/tree/v1.21.0/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode)
[STMicroelectronics/STM32CubeWB Release v1.22.0](https://github.com/STMicroelectronics/STM32CubeWB/releases/tag/v1.22.0)
- Application: [BLE_TransparentMode](https://github.com/STMicroelectronics/STM32CubeWB/tree/v1.22.0/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode)

6 changes: 3 additions & 3 deletions src/utility/STM32_WPAN/ble_bufsize.h
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@
*****************************************************************************
* @attention
*
* Copyright (c) 2018-2024 STMicroelectronics.
* Copyright (c) 2018-2025 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
@@ -97,7 +97,7 @@
* mentioned parameters.
*/
#if (BEACON_ONLY != 0)
#define BLE_FIXED_BUFFER_SIZE_BYTES 4100 /* Beacon only */
#define BLE_FIXED_BUFFER_SIZE_BYTES 4200 /* Beacon only */
#elif (LL_ONLY_BASIC != 0)
#define BLE_FIXED_BUFFER_SIZE_BYTES 6040 /* LL only Basic*/
#elif (LL_ONLY != 0)
@@ -114,7 +114,7 @@
* BLE_PER_LINK_SIZE_BYTES: additional memory size used per link
*/
#if (BEACON_ONLY != 0)
#define BLE_PER_LINK_SIZE_BYTES 108 /* Beacon only */
#define BLE_PER_LINK_SIZE_BYTES 76 /* Beacon only */
#elif (LL_ONLY_BASIC != 0)
#define BLE_PER_LINK_SIZE_BYTES 244 /* LL only Basic */
#elif (LL_ONLY != 0)
78 changes: 78 additions & 0 deletions src/utility/STM32_WPAN/hw_ipcc.c
Original file line number Diff line number Diff line change
@@ -22,6 +22,7 @@
/* Includes ------------------------------------------------------------------*/
#include "hw.h"
#include "mbox_def.h"
#include "utilities_conf.h"

/* Global variables ---------------------------------------------------------*/
/* Private defines -----------------------------------------------------------*/
@@ -227,7 +228,9 @@ void HW_IPCC_Init( void )
******************************************************************************/
void HW_IPCC_BLE_Init( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_BLE_EVENT_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}
@@ -251,14 +254,18 @@ static void HW_IPCC_BLE_EvtHandler( void )
void HW_IPCC_BLE_SendAclData( void )
{
LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}

static void HW_IPCC_BLE_AclDataEvtHandler( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

HW_IPCC_BLE_AclDataAckNot();

@@ -273,22 +280,28 @@ __weak void HW_IPCC_BLE_RxEvtNot( void ){};
******************************************************************************/
void HW_IPCC_SYS_Init( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_SYSTEM_EVENT_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}

void HW_IPCC_SYS_SendCmd( void )
{
LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}

static void HW_IPCC_SYS_CmdEvtHandler( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

HW_IPCC_SYS_CmdEvtNot();

@@ -313,30 +326,38 @@ __weak void HW_IPCC_SYS_EvtNot( void ){};
#ifdef MAC_802_15_4_WB
void HW_IPCC_MAC_802_15_4_Init( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}

void HW_IPCC_MAC_802_15_4_SendCmd( void )
{
LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL );
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}

void HW_IPCC_MAC_802_15_4_SendAck( void )
{
LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}

static void HW_IPCC_MAC_802_15_4_CmdEvtHandler( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

HW_IPCC_MAC_802_15_4_CmdEvtNot();

@@ -345,7 +366,9 @@ static void HW_IPCC_MAC_802_15_4_CmdEvtHandler( void )

static void HW_IPCC_MAC_802_15_4_NotEvtHandler( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

HW_IPCC_MAC_802_15_4_EvtNot();

@@ -361,16 +384,20 @@ __weak void HW_IPCC_MAC_802_15_4_EvtNot( void ){};
#ifdef THREAD_WB
void HW_IPCC_THREAD_Init( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}

void HW_IPCC_OT_SendCmd( void )
{
LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}
@@ -385,22 +412,28 @@ void HW_IPCC_CLI_SendCmd( void )
void HW_IPCC_THREAD_SendAck( void )
{
LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}

void HW_IPCC_THREAD_CliSendAck( void )
{
LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}

static void HW_IPCC_OT_CmdEvtHandler( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

HW_IPCC_OT_CmdEvtNot();

@@ -409,7 +442,9 @@ static void HW_IPCC_OT_CmdEvtHandler( void )

static void HW_IPCC_THREAD_NotEvtHandler( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

HW_IPCC_THREAD_EvtNot();

@@ -418,7 +453,9 @@ static void HW_IPCC_THREAD_NotEvtHandler( void )

static void HW_IPCC_THREAD_CliNotEvtHandler( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

HW_IPCC_THREAD_CliEvtNot();

@@ -437,8 +474,10 @@ __weak void HW_IPCC_THREAD_EvtNot( void ){};
#ifdef LLD_TESTS_WB
void HW_IPCC_LLDTESTS_Init( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLDTESTS_CLI_RSP_CHANNEL );
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLDTESTS_M0_CMD_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();
return;
}

@@ -450,29 +489,38 @@ void HW_IPCC_LLDTESTS_SendCliCmd( void )

static void HW_IPCC_LLDTESTS_ReceiveCliRspHandler( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_LLDTESTS_CLI_RSP_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

HW_IPCC_LLDTESTS_ReceiveCliRsp();
return;
}

void HW_IPCC_LLDTESTS_SendCliRspAck( void )
{
LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_LLDTESTS_CLI_RSP_CHANNEL );
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLDTESTS_CLI_RSP_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();
return;
}

static void HW_IPCC_LLDTESTS_ReceiveM0CmdHandler( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_LLDTESTS_M0_CMD_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();
HW_IPCC_LLDTESTS_ReceiveM0Cmd();
return;
}

void HW_IPCC_LLDTESTS_SendM0CmdAck( void )
{
LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_LLDTESTS_M0_CMD_CHANNEL );
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLDTESTS_M0_CMD_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();
return;
}
__weak void HW_IPCC_LLDTESTS_ReceiveCliRsp( void ){};
@@ -485,8 +533,10 @@ __weak void HW_IPCC_LLDTESTS_ReceiveM0Cmd( void ){};
#ifdef LLD_BLE_WB
void HW_IPCC_LLD_BLE_Init( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLD_BLE_RSP_CHANNEL );
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLD_BLE_M0_CMD_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();
return;
}

@@ -498,15 +548,19 @@ void HW_IPCC_LLD_BLE_SendCliCmd( void )

/*static void HW_IPCC_LLD_BLE_ReceiveCliRspHandler( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_LLD_BLE_CLI_RSP_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();
HW_IPCC_LLD_BLE_ReceiveCliRsp();
return;
}*/

void HW_IPCC_LLD_BLE_SendCliRspAck( void )
{
LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_LLD_BLE_CLI_RSP_CHANNEL );
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLD_BLE_CLI_RSP_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();
return;
}

@@ -535,15 +589,19 @@ void HW_IPCC_LLD_BLE_SendCmd( void )

static void HW_IPCC_LLD_BLE_ReceiveRspHandler( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_LLD_BLE_RSP_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();
HW_IPCC_LLD_BLE_ReceiveRsp();
return;
}

void HW_IPCC_LLD_BLE_SendRspAck( void )
{
LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_LLD_BLE_RSP_CHANNEL );
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_LLD_BLE_RSP_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();
return;
}

@@ -555,31 +613,39 @@ void HW_IPCC_LLD_BLE_SendRspAck( void )
#ifdef ZIGBEE_WB
void HW_IPCC_ZIGBEE_Init( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL );
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_ZIGBEE_M0_REQUEST_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}

void HW_IPCC_ZIGBEE_SendM4RequestToM0( void )
{
LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_ZIGBEE_CMD_APPLI_CHANNEL );
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_ZIGBEE_CMD_APPLI_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}

void HW_IPCC_ZIGBEE_SendM4AckToM0Notify( void )
{
LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL );
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}

static void HW_IPCC_ZIGBEE_CmdEvtHandler( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_ZIGBEE_CMD_APPLI_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

HW_IPCC_ZIGBEE_RecvAppliAckFromM0();

@@ -588,7 +654,9 @@ static void HW_IPCC_ZIGBEE_CmdEvtHandler( void )

static void HW_IPCC_ZIGBEE_StackNotifEvtHandler( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

HW_IPCC_ZIGBEE_RecvM0NotifyToM4();

@@ -597,7 +665,9 @@ static void HW_IPCC_ZIGBEE_StackNotifEvtHandler( void )

static void HW_IPCC_ZIGBEE_StackM0RequestHandler( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_ZIGBEE_M0_REQUEST_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

HW_IPCC_ZIGBEE_RecvM0RequestToM4();

@@ -607,7 +677,9 @@ static void HW_IPCC_ZIGBEE_StackM0RequestHandler( void )
void HW_IPCC_ZIGBEE_SendM4AckToM0Request( void )
{
LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_ZIGBEE_M0_REQUEST_CHANNEL );
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_ZIGBEE_M0_REQUEST_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}
@@ -625,7 +697,9 @@ void HW_IPCC_MM_SendFreeBuf( void (*cb)( void ) )
if ( LL_C1_IPCC_IsActiveFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL ) )
{
FreeBufCb = cb;
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();
}
else
{
@@ -639,7 +713,9 @@ void HW_IPCC_MM_SendFreeBuf( void (*cb)( void ) )

static void HW_IPCC_MM_FreeBufHandler( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

FreeBufCb();

@@ -653,7 +729,9 @@ static void HW_IPCC_MM_FreeBufHandler( void )
******************************************************************************/
void HW_IPCC_TRACES_Init( void )
{
UTILS_ENTER_CRITICAL_SECTION();
LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_TRACES_CHANNEL );
UTILS_EXIT_CRITICAL_SECTION();

return;
}
66 changes: 66 additions & 0 deletions src/utility/STM32_WPAN/utilities_conf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file utilities_conf.h
* @author MCD Application Team
* @brief Configuration file for STM32 Utilities.
******************************************************************************
* @attention
*
* Copyright (c) 2019-2021 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef UTILITIES_CONF_H
#define UTILITIES_CONF_H

#ifdef __cplusplus
extern "C" {
#endif

#include "cmsis_compiler.h"
#include "string.h"
#include "app_conf.h"

/******************************************************************************
* common
******************************************************************************/
#define UTILS_ENTER_CRITICAL_SECTION( ) uint32_t primask_bit = __get_PRIMASK( );\
__disable_irq( )

#define UTILS_EXIT_CRITICAL_SECTION( ) __set_PRIMASK( primask_bit )

#define UTILS_MEMSET8( dest, value, size ) memset( dest, value, size);

/******************************************************************************
* tiny low power manager
* (any macro that does not need to be modified can be removed)
******************************************************************************/
#define UTIL_LPM_INIT_CRITICAL_SECTION( )
#define UTIL_LPM_ENTER_CRITICAL_SECTION( ) UTILS_ENTER_CRITICAL_SECTION( )
#define UTIL_LPM_EXIT_CRITICAL_SECTION( ) UTILS_EXIT_CRITICAL_SECTION( )

/******************************************************************************
* sequencer
* (any macro that does not need to be modified can be removed)
******************************************************************************/
#define UTIL_SEQ_INIT_CRITICAL_SECTION( )
#define UTIL_SEQ_ENTER_CRITICAL_SECTION( ) UTILS_ENTER_CRITICAL_SECTION( )
#define UTIL_SEQ_EXIT_CRITICAL_SECTION( ) UTILS_EXIT_CRITICAL_SECTION( )
#define UTIL_SEQ_CONF_TASK_NBR (32)
#define UTIL_SEQ_CONF_PRIO_NBR CFG_SCH_PRIO_NBR
#define UTIL_SEQ_MEMSET8( dest, value, size ) UTILS_MEMSET8( dest, value, size )

#ifdef __cplusplus
}
#endif

#endif /*UTILITIES_CONF_H */