Skip to content

Commit

Permalink
Add OC_API annotations to oc_buffer_settings.h
Browse files Browse the repository at this point in the history
  • Loading branch information
Danielius1922 committed Sep 27, 2024
1 parent 563520d commit e4b351b
Show file tree
Hide file tree
Showing 3 changed files with 185 additions and 148 deletions.
176 changes: 176 additions & 0 deletions api/oc_buffer_settings.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
/****************************************************************************
*
* Copyright (c) 2017 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License"),
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*
****************************************************************************/

#include "oc_buffer_settings.h"
#include "port/oc_log_internal.h"
#include "util/oc_features.h"

#include <stddef.h>

#ifdef OC_DYNAMIC_ALLOCATION

#include "messaging/coap/conf.h"

#ifdef OC_INOUT_BUFFER_SIZE
static size_t _OC_MTU_SIZE = OC_INOUT_BUFFER_SIZE;
#else /* OC_INOUT_BUFFER_SIZE */
static size_t _OC_MTU_SIZE = 2048 + COAP_MAX_HEADER_SIZE;
#endif /* !OC_INOUT_BUFFER_SIZE */
#ifdef OC_APP_DATA_BUFFER_SIZE
static size_t _OC_MAX_APP_DATA_SIZE = 7168;
static size_t _OC_MIN_APP_DATA_SIZE = 7168;
#else /* OC_APP_DATA_BUFFER_SIZE */
static size_t _OC_MAX_APP_DATA_SIZE = 7168;
#ifdef OC_REP_ENCODING_REALLOC
static size_t _OC_MIN_APP_DATA_SIZE = 256;
#else /* OC_REP_ENCODING_REALLOC */
static size_t _OC_MIN_APP_DATA_SIZE = 7168;
#endif /* !OC_REP_ENCODING_REALLOC */
#endif /* !OC_APP_DATA_BUFFER_SIZE */
static size_t _OC_BLOCK_SIZE = 1024; // FIX

int
oc_set_mtu_size(size_t mtu_size)
{
(void)mtu_size;
#ifdef OC_INOUT_BUFFER_SIZE
return -1;
#else /* !OC_INOUT_BUFFER_SIZE */
#ifdef OC_BLOCK_WISE
if (mtu_size < (COAP_MAX_HEADER_SIZE + 16)) {
return -1;
}
#ifdef OC_OSCORE
_OC_MTU_SIZE = mtu_size + COAP_MAX_HEADER_SIZE;
#else /* OC_OSCORE */
_OC_MTU_SIZE = mtu_size;
#endif /* !OC_OSCORE */
mtu_size -= COAP_MAX_HEADER_SIZE;
size_t i;
for (i = 10; i >= 4 && (mtu_size >> i) == 0; i--)
;
_OC_BLOCK_SIZE = ((size_t)1) << i;
#endif /* OC_BLOCK_WISE */
return 0;
#endif /* OC_INOUT_BUFFER_SIZE */
}

long
oc_get_mtu_size(void)
{
return (long)_OC_MTU_SIZE;
}

void
oc_set_max_app_data_size(size_t size)
{
#ifdef OC_APP_DATA_BUFFER_SIZE
(void)size;
#else /* !OC_APP_DATA_BUFFER_SIZE */
_OC_MAX_APP_DATA_SIZE = size;
#ifndef OC_REP_ENCODING_REALLOC
_OC_MIN_APP_DATA_SIZE = size;
#endif /* !OC_REP_ENCODING_REALLOC */
#ifndef OC_BLOCK_WISE
_OC_BLOCK_SIZE = size;
_OC_MTU_SIZE = size + COAP_MAX_HEADER_SIZE;
#endif /* !OC_BLOCK_WISE */
#endif /* OC_APP_DATA_BUFFER_SIZE */
}

long
oc_get_max_app_data_size(void)
{
return (long)_OC_MAX_APP_DATA_SIZE;
}

void
oc_set_min_app_data_size(size_t size)
{
#if defined(OC_APP_DATA_BUFFER_SIZE) || !defined(OC_REP_ENCODING_REALLOC)
(void)size;
#else /* !OC_APP_DATA_BUFFER_SIZE && !OC_REP_ENCODING_REALLOC */
_OC_MIN_APP_DATA_SIZE = size;
#endif /* OC_APP_DATA_BUFFER_SIZE || !OC_REP_ENCODING_REALLOC */
}

long
oc_get_min_app_data_size(void)
{
return (long)_OC_MIN_APP_DATA_SIZE;
}

long
oc_get_block_size(void)
{
return (long)_OC_BLOCK_SIZE;
}

#else /* !OC_DYNAMIC_ALLOCATION */

int
oc_set_mtu_size(size_t mtu_size)
{
(void)mtu_size;
OC_WRN("Dynamic memory not available");
return -1;
}

long
oc_get_mtu_size(void)
{
OC_WRN("Dynamic memory not available");
return -1;
}

void
oc_set_max_app_data_size(size_t size)
{
(void)size;
OC_WRN("Dynamic memory not available");
}

long
oc_get_max_app_data_size(void)
{
OC_WRN("Dynamic memory not available");
return -1;
}

void
oc_set_min_app_data_size(size_t size)
{
(void)size;
OC_WRN("Dynamic memory not available");
}

long
oc_get_min_app_data_size(void)
{
OC_WRN("Dynamic memory not available");
return -1;
}

long
oc_get_block_size(void)
{
OC_WRN("Dynamic memory not available");
return -1;
}

#endif /* OC_DYNAMIC_ALLOCATION */
148 changes: 0 additions & 148 deletions api/oc_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,154 +98,6 @@ oc_get_factory_presets_cb(void)
return &g_factory_presets;
}

#ifdef OC_DYNAMIC_ALLOCATION
#include "oc_buffer_settings.h"
#ifdef OC_INOUT_BUFFER_SIZE
static size_t _OC_MTU_SIZE = OC_INOUT_BUFFER_SIZE;
#else /* OC_INOUT_BUFFER_SIZE */
static size_t _OC_MTU_SIZE = 2048 + COAP_MAX_HEADER_SIZE;
#endif /* !OC_INOUT_BUFFER_SIZE */
#ifdef OC_APP_DATA_BUFFER_SIZE
static size_t _OC_MAX_APP_DATA_SIZE = 7168;
static size_t _OC_MIN_APP_DATA_SIZE = 7168;
#else /* OC_APP_DATA_BUFFER_SIZE */
static size_t _OC_MAX_APP_DATA_SIZE = 7168;
#ifdef OC_REP_ENCODING_REALLOC
static size_t _OC_MIN_APP_DATA_SIZE = 256;
#else /* OC_REP_ENCODING_REALLOC */
static size_t _OC_MIN_APP_DATA_SIZE = 7168;
#endif /* !OC_REP_ENCODING_REALLOC */
#endif /* !OC_APP_DATA_BUFFER_SIZE */
static size_t _OC_BLOCK_SIZE = 1024; // FIX

int
oc_set_mtu_size(size_t mtu_size)
{
(void)mtu_size;
#ifdef OC_INOUT_BUFFER_SIZE
return -1;
#else /* !OC_INOUT_BUFFER_SIZE */
#ifdef OC_BLOCK_WISE
if (mtu_size < (COAP_MAX_HEADER_SIZE + 16)) {
return -1;
}
#ifdef OC_OSCORE
_OC_MTU_SIZE = mtu_size + COAP_MAX_HEADER_SIZE;
#else /* OC_OSCORE */
_OC_MTU_SIZE = mtu_size;
#endif /* !OC_OSCORE */
mtu_size -= COAP_MAX_HEADER_SIZE;
size_t i;
for (i = 10; i >= 4 && (mtu_size >> i) == 0; i--)
;
_OC_BLOCK_SIZE = ((size_t)1) << i;
#endif /* OC_BLOCK_WISE */
return 0;
#endif /* OC_INOUT_BUFFER_SIZE */
}

long
oc_get_mtu_size(void)
{
return (long)_OC_MTU_SIZE;
}

void
oc_set_max_app_data_size(size_t size)
{
#ifdef OC_APP_DATA_BUFFER_SIZE
(void)size;
#else /* !OC_APP_DATA_BUFFER_SIZE */
_OC_MAX_APP_DATA_SIZE = size;
#ifndef OC_REP_ENCODING_REALLOC
_OC_MIN_APP_DATA_SIZE = size;
#endif /* !OC_REP_ENCODING_REALLOC */
#ifndef OC_BLOCK_WISE
_OC_BLOCK_SIZE = size;
_OC_MTU_SIZE = size + COAP_MAX_HEADER_SIZE;
#endif /* !OC_BLOCK_WISE */
#endif /* OC_APP_DATA_BUFFER_SIZE */
}

long
oc_get_max_app_data_size(void)
{
return (long)_OC_MAX_APP_DATA_SIZE;
}

void
oc_set_min_app_data_size(size_t size)
{
#if defined(OC_APP_DATA_BUFFER_SIZE) || !defined(OC_REP_ENCODING_REALLOC)
(void)size;
#else /* !OC_APP_DATA_BUFFER_SIZE && !OC_REP_ENCODING_REALLOC */
_OC_MIN_APP_DATA_SIZE = size;
#endif /* OC_APP_DATA_BUFFER_SIZE || !OC_REP_ENCODING_REALLOC */
}

long
oc_get_min_app_data_size(void)
{
return (long)_OC_MIN_APP_DATA_SIZE;
}

long
oc_get_block_size(void)
{
return (long)_OC_BLOCK_SIZE;
}
#else /* !OC_DYNAMIC_ALLOCATION */
int
oc_set_mtu_size(size_t mtu_size)
{
(void)mtu_size;
OC_WRN("Dynamic memory not available");
return -1;
}

long
oc_get_mtu_size(void)
{
OC_WRN("Dynamic memory not available");
return -1;
}

void
oc_set_max_app_data_size(size_t size)
{
(void)size;
OC_WRN("Dynamic memory not available");
}

long
oc_get_max_app_data_size(void)
{
OC_WRN("Dynamic memory not available");
return -1;
}

void
oc_set_min_app_data_size(size_t size)
{
(void)size;
OC_WRN("Dynamic memory not available");
}

long
oc_get_min_app_data_size(void)
{
OC_WRN("Dynamic memory not available");
return -1;
}

long
oc_get_block_size(void)
{
OC_WRN("Dynamic memory not available");
return -1;
}
#endif /* OC_DYNAMIC_ALLOCATION */

static void
oc_shutdown_all_devices(void)
{
Expand Down
9 changes: 9 additions & 0 deletions include/oc_buffer_settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
#ifndef OC_BUFFER_SETTINGS_H
#define OC_BUFFER_SETTINGS_H

#include "oc_export.h"

#include <stddef.h>

#ifdef __cplusplus
Expand All @@ -33,27 +35,31 @@ extern "C" {
* @param mtu_size size in bytes
* @return int 0-success
*/
OC_API
int oc_set_mtu_size(size_t mtu_size);

/**
* @brief retrieve the currently used MTU size
*
* @return long the MTU size in bytes
*/
OC_API
long oc_get_mtu_size(void);

/**
* @brief set max application data size (e.g. buffer size of the messages)
*
* @param size size in bytes
*/
OC_API
void oc_set_max_app_data_size(size_t size);

/**
* @brief retrieve the max application data size
*
* @return long size in bytes
*/
OC_API
long oc_get_max_app_data_size(void);

/**
Expand All @@ -62,20 +68,23 @@ long oc_get_max_app_data_size(void);
*
* @param size size in bytes
*/
OC_API
void oc_set_min_app_data_size(size_t size);

/**
* @brief retrieve the min application data size
*
* @return long size in bytes
*/
OC_API
long oc_get_min_app_data_size(void);

/**
* @brief retrieve the block size
*
* @return long the block size in bytes
*/
OC_API
long oc_get_block_size(void);

#ifdef __cplusplus
Expand Down

0 comments on commit e4b351b

Please sign in to comment.