Skip to content

Commit

Permalink
feat(openthread): support alloc nat64 session from psram
Browse files Browse the repository at this point in the history
  • Loading branch information
zwx1995esp authored and gytxxsy committed Nov 20, 2024
1 parent c7ace03 commit 000f9fe
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 7 deletions.
18 changes: 13 additions & 5 deletions components/openthread/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -278,12 +278,20 @@ menu "OpenThread"
help
Select this option to enable border router features in OpenThread.

config OPENTHREAD_PLATFORM_MSGPOOL_MANAGEMENT
bool 'Allocate message pool buffer from PSRAM'
menu "Thread Memory Allocation Config"
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.
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'
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"
Expand Down
21 changes: 21 additions & 0 deletions components/openthread/private_include/esp_openthread_common.hpp
Original file line number Diff line number Diff line change
@@ -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;
}
13 changes: 11 additions & 2 deletions components/openthread/private_include/esp_openthread_platform.h
Original file line number Diff line number Diff line change
@@ -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
*/
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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
10 changes: 10 additions & 0 deletions components/openthread/src/esp_openthread_platform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

0 comments on commit 000f9fe

Please sign in to comment.