feat(openthread): support alloc nat64 session from psram

This commit is contained in:
zwx 2024-09-09 20:38:29 +08:00 committed by Xu Si Yu
parent aa67538038
commit d7f69d03c0
4 changed files with 55 additions and 7 deletions

View File

@ -278,12 +278,20 @@ menu "OpenThread"
help
Select this option to enable border router features in OpenThread.
menu "Thread Memory Allocation Config"
depends on OPENTHREAD_ENABLED && (SPIRAM_USE_CAPS_ALLOC || SPIRAM_USE_MALLOC)
config OPENTHREAD_MEM_ALLOC_EXTERNAL
bool 'Allocate memory from PSRAM'
default y
help
Select this option to allocate buffer from PSRAM for Thread
config OPENTHREAD_PLATFORM_MSGPOOL_MANAGEMENT
bool 'Allocate message pool buffer from PSRAM'
depends on OPENTHREAD_ENABLED && (SPIRAM_USE_CAPS_ALLOC || SPIRAM_USE_MALLOC)
default n
help
If enabled, the message pool is managed by platform defined logic.
endmenu
config OPENTHREAD_NUM_MESSAGE_BUFFERS
int "The number of openthread message buffers"

View File

@ -0,0 +1,21 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#pragma once
#include "esp_heap_caps.h"
#include <utility>
#include "common/new.hpp"
template <typename T, typename... Args>
inline T *New(uint32_t alloc_caps, Args &&...args)
{
void *p = heap_caps_calloc(1, sizeof(T), alloc_caps);
if (p != nullptr) {
return new (p) T(std::forward<Args>(args)...);
}
return nullptr;
}

View File

@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@ -84,7 +84,7 @@ void esp_openthread_platform_workflow_unregister(const char *name);
* @brief Initializes the platform-specific support for the OpenThread stack.
*
* @note This function is not called by and will not call the OpenThread library.
* The user needs to call otInstanceInitSingle to intialize the OpenThread
* The user needs to call otInstanceInitSingle to initialize the OpenThread
* stack after calling this function.
*
* @param[in] init_config The initialization configuration.
@ -146,6 +146,15 @@ esp_err_t esp_openthread_platform_process(otInstance *instance, const esp_openth
*
*/
void esp_openthread_set_storage_name(const char *name);
/**
* @brief Gets the caps of memory allocation.
*
* @return
* - The caps of the memory.
*/
uint32_t esp_openthread_get_alloc_caps(void);
#ifdef __cplusplus
} // end of extern "C"
#endif

View File

@ -204,3 +204,13 @@ esp_err_t esp_openthread_platform_process(otInstance *instance, const esp_openth
}
return ESP_OK;
}
uint32_t esp_openthread_get_alloc_caps(void)
{
return
#if CONFIG_OPENTHREAD_PLATFORM_MALLOC_CAP_SPIRAM
(MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
#else
(MALLOC_CAP_DEFAULT | MALLOC_CAP_8BIT);
#endif
}