Skip to content

Commit

Permalink
[K32W1] Bring SDK 2.12.6 changes (openthread#661)
Browse files Browse the repository at this point in the history
* k32w1: radio: multiprotocol support (dual PAN)

- PHY_get_ctx() - protocol stack PHY context binding
- new PLME commands (moved from ASP)

Signed-off-by: George Stefan <[email protected]>

* k32w1: system: fix OSA integration

Add checks for FSL_OSA_MAIN_FUNC_ENABLE

Signed-off-by: George Stefan <[email protected]>

* k32w1: lowpower: API update

Add new functions needed by Zigbee stack:
- PWRM_eFinishActivity()
- PWRM_eStartActivity()
- PWRM_u16GetActivityCount()

Signed-off-by: George Stefan <[email protected]>

* k32w1: ld: align stack to 8 bytes

- stack top must be 8 bytes aligned as per
  AAPCS standard: 5.2.1.2 Stack constraints at a public interface

- va_args for 64 bit values doesn't work otherwise

Signed-off-by: George Stefan <[email protected]>

* k32w1: build: add compilation flags

NO_THREAD_1_3_FLAGS - disables 1.3 features
OT_MAC_CSL_RECEIVER_ENABLE - enables CSL rx

Signed-off-by: George Stefan <[email protected]>

* k32w1: Add in k32w1 linker file new flag for lowpower purpose in shared memory for both cores

* k32w1: add RCP FC support & 1M Baud rate

Based on the K32W061 experiences, the RCP needs to use a
baud rate of 1M in order to be able to keep the pace with
the OT-BR. Also, UART Flow Control needs to be enabled.

Signed-off-by: Alex Porosanu <[email protected]>

* k32w1: add logging infra support

This patch enables logging output from the OT device to
be sent on the 2nd serial, if available. This is particulary
useful in case of RCP.

Signed-off-by: Alex Porosanu <[email protected]>

* k32w1: config: ensure NCP HDLC buffer is properly sized

The NCP HDLC buffer size must always be larger than the spinel TX buffer,
otherwise some side effects can be triggered. Add this config option
for k32w1 platform as it is for k32w0.

Signed-off-by: Alex Porosanu <[email protected]>

* k32w1: uart: allow DMA usage for UART

In some cases (i.e. RCP) where the connections do not allow
for reliable FC propagation from host to MCU, the LPUART DMA
mechanism can be used. This ensures the reliability of the
UART communications over spinel, which is mandatory for
scenarios like border routers.

As such this patch adds the glue defines and structures
so that the user can select from the target to be built that
DMA is desired, as opposed to the standard polling mechanism.

Signed-off-by: Alex Porosanu <[email protected]>

* k32w1: build: add RCP DMA only target

This patch adds a specific target that allows the user
to remove the FC pins required for reliable UART communications
and rely on the DMA mechanism present within the platform.
This target is to be used when the device is used as a dongle
providing OT services to a Linux host.

Signed-off-by: Alex Porosanu <[email protected]>

* k32w1: build: add per target low power feature

Some applications cannot go to low power i.e. RCP, and as such
it's required that low power entry is disabled for these
targets.

Signed-off-by: Alex Porosanu <[email protected]>

* k32w1: Use PWR_AllowDeviceToSleep/PWR_DisallowDeviceToSleep API provided by the PWR module

Signed-off-by: Axel Le Bourhis <[email protected]>

* k32w1: cleanup RCP

Remove a couple of unused lines that got merged when the RCP.

Signed-off-by: Alex Porosanu <[email protected]>

* k32w1: DataPoll Message stops after a many hours when low power enabled

Protect PWR_EnterLowPower with interrupt disable/enable because PWR_EnterLowPower does not used interrupt disable/enable protection at all.
Cover the case when at begining PWR_EnterLowPower check the lpDisallowCount counter and it find it  0 which means can enter to low power, however if an interrupt which disallow entering into low power (like timerCallback for alarm milli handler) happens between lpDisallowCount check and __WFI instruction, then IRQ will be serviced and device will end up into an inconsistent state, i.e. lpDisallowCount will be set to 1 from serviced IRQ but the device will manage to enter in low power, leading to fail to process the event in the main loop and possible stays in low power for ever if it was the single wake-up interrupt.
Also otTaskletsArePending is included into interrupt protection to cover the case when between otTaskletsArePending check and __WFI/PWR_EnterLowPower some Task.Post() is happening.

* k32w1: Fix dependencies with latest SDK

Signed-off-by: Marius Tache <[email protected]>

* k32w1: add sdk board_lp files

Signed-off-by: Andrei Menzopol <[email protected]>

* k32w1: align hybrid OT/ZB example with the SDK structure

This patch fixes the paths for different files that are used
as part of the example to match their location inside of the SDK zip
release.

Signed-off-by: Alex Porosanu <[email protected]>

This commit was partially cp

Signed-off-by: Andrei Menzopol <[email protected]>

* k32w1: entropy: add mutex

otPlatEntropyGet is used by both Matter and Openthread
 to gather entropy through HW TRNG.

Signed-off-by: Andrei Menzopol <[email protected]>

* k32w1: system: add K32WRandomInit call

Signed-off-by: Andrei Menzopol <[email protected]>

* k32w1: sha256_sss: add EdgeLock Secure Enclave based SHA256/HMAC-SHA256 implementation

Signed-off-by: Andrei Menzopol <[email protected]>

* k32w1: aes_sss: add EdgeLock Secure Enclave based AES-ECB implementation

Signed-off-by: Andrei Menzopol <[email protected]>

* k32w1: radio: CSL receiver fixes

NBU has to be awake during CSL receiver trx so that conversion from
PHY timebase (NBU) to TMR timebase (host) is valid

Signed-off-by: George Stefan <[email protected]>

* k32w1: radio: fix otPlatRadioGetIeeeEui64()

- redirect it to FWK API: PLATFORM_GetIeee802_15_4Addr()
- can't use the radio registers since the value provided is not always valid

Signed-off-by: George Stefan <[email protected]>

* k32w1: Rename SNT files to ELEMU

* [K32W1] Add support for 64bit timestamp

Added the implementation of the "otPlatGetTime()" function which provides
a 64bit timestamp in number of microseconds since last system boot up.

Signed-off-by: Marian Chereji <[email protected]>

* k32w1: Changed Low Power init sequence on Host in order to handshake with NBU

Changed APP_ServiceInitLowpower() to be called before NBU started (PLATFORM_InitOT) because function PLATFORM_FwkSrvRegisterLowPowerCallbacks
needs to register callbacks before NBU is started, otherways when low power is enabled on the host core,
the radio core may need to set/release low power constraints as some resources needed by it are in the host power domain.

* k32w1: radio: CSL rx: increase receive window

Increase receive window to cover NBU wake up time

- CSL_RECEIVE_TIME_AHEAD (1920 + 768)
- MIN_RECEIVE_ON_AHEAD 0
- MIN_RECEIVE_ON_AFTER 368 * 16

Signed-off-by: George Stefan <[email protected]>

* k32w1: radio: fix compilation when CSL Rx is disabled

otMacFrameSetCslIe() is compiled when
OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE is enabled

Signed-off-by: George Stefan <[email protected]>

* k32w1: fix TLS handshaking

Double the OPENTHREAD_CONFIG_HEAP_INTERNAL_SIZE (to 16k)
so that TLS handshaking succeeds.

A smaller size will cause the process to fail with
memory allocation error (MBEDTLS_ERR_MPI_ALLOC_FAILED -0x0010)

Signed-off-by: George Stefan <[email protected]>

* k32w1: add RNG file

Signed-off-by: Andrei Menzopol <[email protected]>

* k32w1: ld: remove NBU image dependency

The NBU image must be updated with blhost as explained in README.md

Signed-off-by: George Stefan <[email protected]>

* k32w1: update SDK link to 2.12.6

Signed-off-by: Andrei Menzopol <[email protected]>

---------

Signed-off-by: George Stefan <[email protected]>
Signed-off-by: Alex Porosanu <[email protected]>
Signed-off-by: Axel Le Bourhis <[email protected]>
Signed-off-by: Marius Tache <[email protected]>
Signed-off-by: Andrei Menzopol <[email protected]>
Signed-off-by: Marian Chereji <[email protected]>
Co-authored-by: George Stefan <[email protected]>
Co-authored-by: Corentin Goubin <[email protected]>
Co-authored-by: Alex Porosanu <[email protected]>
Co-authored-by: Axel Le Bourhis <[email protected]>
Co-authored-by: Marius Vilvoi <[email protected]>
Co-authored-by: Marius Tache <[email protected]>
Co-authored-by: Yanis Viola <[email protected]>
Co-authored-by: Marian Chereji <[email protected]>
  • Loading branch information
9 people authored Jan 25, 2024
1 parent 1e5be31 commit 0b395ed
Show file tree
Hide file tree
Showing 19 changed files with 1,124 additions and 265 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,9 @@ jobs:
cd /tmp
mkdir -p sdk_k32w1
cd sdk_k32w1
wget https://cache.nxp.com/lgfiles/bsps/SDK_2_12_5_K32W148-EVK.zip
unzip SDK_2_12_5_K32W148-EVK.zip
rm -rf SDK_2_12_5_K32W148-EVK.zip
wget https://cache.nxp.com/lgfiles/bsps/SDK_2_12_6_K32W148-EVK.zip
unzip SDK_2_12_6_K32W148-EVK.zip
rm -rf SDK_2_12_6_K32W148-EVK.zip
- name: Update JN5189 SDK
run: |
Expand Down
37 changes: 35 additions & 2 deletions script/build_k32w1
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ OT_OPTIONS=(
"-DOT_NXP_EXPORT_TO_SREC=ON"
"-DOT_PLATFORM=external"
"-DOT_SLAAC=ON"
"-DOT_APP_LOWPOWER=ON"
)
readonly OT_OPTIONS

Expand All @@ -54,15 +53,29 @@ OT_OPTIONS_RCP_ONLY_UART_FLOW_CONTROL=(
"-DOT_APP_CLI=OFF"
"-DOT_FTD=OFF"
"-DOT_MTD=OFF"
"-DUART_FLOW_CONTROL=ON"
"-DUART_BAUD_RATE=1000000"
"-DUART_INSTANCE=0"
"-DOT_APP_LOWPOWER=OFF"
)
readonly OT_OPTIONS_RCP_ONLY_UART_FLOW_CONTROL

OT_OPTIONS_RCP_ONLY_UART_DMA=(
"-DOT_RCP_UART_DMA=ON"
"-DOT_APP_CLI=OFF"
"-DOT_FTD=OFF"
"-DOT_MTD=OFF"
"-DUART_BAUD_RATE=1000000"
"-DOT_APP_LOWPOWER=OFF"
)
readonly OT_OPTIONS_RCP_ONLY_UART_DMA

OT_OPTIONS_NO_RCP=(
"-DOT_APP_NCP=OFF"
"-DOT_APP_RCP=OFF"
"-DOT_RCP=OFF"
"-DOT_MAC_CSL_RECEIVER_ENABLE=ON"
"-DOT_APP_LOWPOWER=ON"
)
readonly OT_OPTIONS_NO_RCP

Expand Down Expand Up @@ -105,6 +118,23 @@ build_ot_rcp_only_uart_flow_control()
fi

}

build_ot_rcp_only_uart_dma()
{
echo "Building OT RCP image UART with DMA..."
app_folder_name="rcp_only_uart_dma"
local options=("${OT_OPTIONS_RCP_ONLY_UART_DMA[@]}")
options+=("${OT_OPTIONS[@]}")
options+=("$@")
options+=(" -DSDK_RELEASE=$SDK_RELEASE")
build "${app_folder_name}" "${options[@]}"

if [ $? -eq 1 ]; then
exit 1
fi

}

build_ot_without_rcp_image()
{
echo "Building OT without RCP image ..."
Expand All @@ -126,14 +156,17 @@ create_directory_and_build()
{
if [ "$1" == 'all' ]; then
build_ot_rcp_only_uart_flow_control "$@"
build_ot_rcp_only_uart_dma "$@"
build_ot_without_rcp_image "$@"

elif [ "$1" == 'ot_rcp_only_uart_flow_control' ]; then
build_ot_rcp_only_uart_flow_control "$@"
elif [ "$1" == 'ot_rcp_only_uart_dma' ]; then
build_ot_rcp_only_uart_dma "$@"
elif [ "$1" == 'ot_without_rcp_image' ]; then
build_ot_without_rcp_image "$@"
else
echo >&2 "Unsupported action: $1. Supported: all, ot_rcp_only_uart_flow_control, ot_without_rcp_image"
echo >&2 "Unsupported action: $1. Supported: all, ot_rcp_only_uart_flow_control, ot_rcp_only_uart_dma, ot_without_rcp_image"
# 128 for Invalid arguments
exit 128
fi
Expand Down
23 changes: 20 additions & 3 deletions src/k32w1/k32w1/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# Copyright (c) 2021, The OpenThread Authors.
# Copyright (c) 2021-2023, The OpenThread Authors.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
Expand Down Expand Up @@ -100,16 +100,33 @@ set(K32W1_SOURCES
radio.c
system.c
uart.c
power.c
ecdsa_sss.cpp
../../common/flash_nvm.c
../../../openthread/examples/apps/cli/cli_uart.cpp
)

if (NOT NO_THREAD_1_3_FLAGS)
list(APPEND K32W1_SOURCES
ecdsa_sss.cpp
)
endif()

set(K32W1_LIBS
$ENV{NXP_K32W1_SDK_ROOT}/middleware/wireless/framework/SecLib/lib_crypto_m33.a
)

if (NOT OT_MAC_CSL_RECEIVER_ENABLE)
# disable CSL receiver for now
list(APPEND OT_PLATFORM_DEFINES
OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE=0
)
endif()

if (NO_THREAD_1_3_FLAGS)
list(APPEND OT_PLATFORM_DEFINES
"NO_THREAD_1_3_FLAGS"
)
endif()

set(K32W1_INCLUDES
${CMAKE_CURRENT_SOURCE_DIR}/src
${PROJECT_SOURCE_DIR}/openthread/examples/platforms
Expand Down
36 changes: 19 additions & 17 deletions src/k32w1/k32w1/K32W1480_connectivity.ld
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
** Linker file for the GNU C Compiler
**
** Copyright 2016 Freescale Semiconductor, Inc.
** Copyright 2016-2021 NXP
** Copyright 2016-2023 NXP
** All rights reserved.
**
** SPDX-License-Identifier: BSD-3-Clause
Expand Down Expand Up @@ -105,6 +105,12 @@ firmware_ram_upper_limit = m_data1_end;
firmware_ram_lower_limit = m_data1_start;
m_warmboot_stack_end = m_ram1_start;

m_sqram_debug_size = 0x7C;

/* Section used to share a flag on both cores for lowpower purpose */
m_lowpower_flag_size = 0x04;
m_lowpower_flag_start = 0x489C0000 + m_sqram_debug_size;

m_sqram_btblebuf_size = 0x6300; /* was 0x7700 but was reduced to give space to sh_mem and ext_log - can be readjusted if needed*/
/*Increased from 0x5400 to 0x6300 to hold 12 additionnal TX data buffers to support 24 connections (pairing)*/
rpmsg_sh_mem_size = 0x1800;
Expand All @@ -129,27 +135,13 @@ MEMORY
m_ram_interrupts (RW) : ORIGIN = m_interrupts_ram_start, LENGTH = m_ram_vector_table_size
m_data1 (RW) : ORIGIN = m_data1_start, LENGTH = m_data1_size
rpmsg_sh_mem (RW) : ORIGIN = rpmsg_sh_mem_start, LENGTH = rpmsg_sh_mem_size
m_nbu_flash (RW) : ORIGIN = 0x48800000, LENGTH = 0x00040000
m_lowpower_flag (RW) : ORIGIN = m_lowpower_flag_start, LENGTH = m_lowpower_flag_size
}

TARGET(binary)
/* Indicate NBU RAM binary to link */
/*
* in file k32w1.cmake
* "NBU_BINARY_IMAGE_PATH" is defined for specifying path to connectivity_test.bin binary ... is set to SDK path at this moment:
* $ENV{NXP_K32W1_SDK_ROOT}/middleware/wireless/ieee-802.15.4/boards/k32w1/connectivity_test_cm3/bm/iar/Debug/Exe/
*/
INPUT(k32w1_nbu_ble_15_4_dyn_1_9_10_0.sb3)
OUTPUT_FORMAT(default)

/* Define output sections */
SECTIONS
{
.nbu_flash :
{
k32w1_nbu_ble_15_4_dyn_1_9_10_0.sb3
} > m_nbu_flash

/* NOINIT section for rpmsg_sh_mem */
.noinit_rpmsg_sh_mem (NOLOAD) : ALIGN(4)
{
Expand Down Expand Up @@ -311,11 +303,21 @@ SECTIONS
.stack :
{
. = ALIGN(8);
/* STACK_SIZE is assumed to be multiple of 8 bytes,
* thus __StackTop which is pointing to the end of
* this section should be 8 byte aligned.
*/
. += STACK_SIZE;
__StackTop = .;
} > m_cstack

/* Initializes stack on the end of block */
__StackTop = m_cstack_end;

/* m_cstack_end is manually calculated and in the end it's not 8 byte aligned
* breaking the AAPCS standard: 5.2.1.2 Stack constraints at a public interface
* thus breaking va_args for 64 bit values.
*/
/* __StackTop = m_cstack_end; */
__StackLimit = m_cstack_start;
PROVIDE(__stack = __StackTop);

Expand Down
92 changes: 92 additions & 0 deletions src/k32w1/k32w1/aes_sss.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
/*
* Copyright (c) 2023, The OpenThread Authors.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/

/**
* @file
* This file implements OT AES-ECB for K32W1 secure sub system
*
*/

#include <string.h>

#include <crypto/aes_ecb.hpp>
#include <openthread/error.h>
#include <openthread/platform/crypto.h>

#include "common/code_utils.hpp"
#include "common/debug.hpp"
#include "common/error.hpp"
#include "core/crypto/storage.hpp"

extern "C" {
#include "SecLib.h"
}

using namespace ot;
using namespace Crypto;

// AES Implementation
otError otPlatCryptoAesInit(otCryptoContext *aContext)
{
OT_UNUSED_VARIABLE(aContext);

return kErrorNone;
}

otError otPlatCryptoAesSetKey(otCryptoContext *aContext, const otCryptoKey *aKey)
{
Error error = kErrorNone;
const LiteralKey key(*static_cast<const Key *>(aKey));

VerifyOrExit(aContext != nullptr, error = kErrorInvalidArgs);
VerifyOrExit(aContext->mContextSize >= key.GetLength(), error = kErrorFailed);

memcpy(aContext, key.GetBytes(), key.GetLength());

exit:
return error;
}

otError otPlatCryptoAesEncrypt(otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput)
{
Error error = kErrorNone;

VerifyOrExit(aContext != nullptr, error = kErrorInvalidArgs);

AES_128_Encrypt(aInput, (uint8_t *)aContext, aOutput);

exit:
return error;
}

otError otPlatCryptoAesFree(otCryptoContext *aContext)
{
OT_UNUSED_VARIABLE(aContext);

return kErrorNone;
}
31 changes: 31 additions & 0 deletions src/k32w1/k32w1/alarm.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@
#include <stdint.h>

#include "PWR_Interface.h"
#include "fsl_os_abstraction.h"
#include "fwk_platform.h"
#include "openthread-system.h"
#include <common/logging.hpp>
#include <openthread/platform/alarm-micro.h>
Expand Down Expand Up @@ -207,3 +209,32 @@ void otPlatAlarmMicroStop(otInstance *aInstance)
}

#endif /* OPENTHREAD_CONFIG_PLATFORM_USEC_TIMER_ENABLE */

uint64_t otPlatTimeGet(void)
{
static uint64_t u64SwTimestampUs = 0;
static uint64_t u64HwTimestampUs = 0;

OSA_InterruptDisable();

/* Get new 32bit HW timestamp */
uint64_t u64HwTimestampUs_new = (uint64_t)TM_GetTimestamp();
uint64_t wrapped_val = 0;
uint64_t increment;

/* Check if the timestamp has wrapped around */
if (u64HwTimestampUs > u64HwTimestampUs_new)
{
wrapped_val = COUNT_TO_USEC(((uint64_t)1 << 32), PLATFORM_TM_CLK_FREQ);
}

increment = (u64HwTimestampUs_new + wrapped_val) - u64HwTimestampUs;
u64SwTimestampUs += increment;

/* Store new HW timestamp for next iteration */
u64HwTimestampUs = u64HwTimestampUs_new;

OSA_InterruptEnable();

return u64SwTimestampUs;
}
26 changes: 26 additions & 0 deletions src/k32w1/k32w1/entropy.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,36 @@
#include "mbedtls/entropy_poll.h"
#include "utils/code_utils.h"

#if defined(USE_RTOS) && (USE_RTOS == 1)
#include "fsl_os_abstraction.h"

#define mutex_lock() OSA_MutexLock(trngMutexHandle, osaWaitForever_c)
#define mutex_unlock() OSA_MutexUnlock(trngMutexHandle)

OSA_MUTEX_HANDLE_DEFINE(trngMutexHandle);
#else
#define mutex_lock(...)
#define mutex_unlock(...)
#endif

void K32WRandomInit(void)
{
#if defined(USE_RTOS) && (USE_RTOS == 1)
(void)OSA_MutexCreate(trngMutexHandle);
otEXPECT(NULL != trngMutexHandle);
#endif

exit:
return;
}

otError otPlatEntropyGet(uint8_t *aOutput, uint16_t aOutputLength)
{
otError error = OT_ERROR_NONE;
size_t outputLen = 0;

mutex_lock();

otEXPECT_ACTION(aOutput, error = OT_ERROR_INVALID_ARGS);

for (size_t partialLen = 0; outputLen < aOutputLength; outputLen += partialLen)
Expand All @@ -54,5 +79,6 @@ otError otPlatEntropyGet(uint8_t *aOutput, uint16_t aOutputLength)
}

exit:
mutex_unlock();
return error;
}
1 change: 1 addition & 0 deletions src/k32w1/k32w1/k32w1.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#

list(APPEND OT_PLATFORM_DEFINES
"OPENTHREAD_CORE_CONFIG_PLATFORM_CHECK_FILE=\"openthread-core-k32w1-config-check.h\""
)
Expand Down
Loading

0 comments on commit 0b395ed

Please sign in to comment.