Skip to content

Commit

Permalink
Implement basic rand() (project-chip#6998)
Browse files Browse the repository at this point in the history
* Implement basic rand()

Disabled shadowing of the FreeRTOS config by the DMM header.
Implemented a basic PRNG for ctor startup.

The global initialization of the global message counter struct in
`src/transport/MessageCounter.h` results in a call to the C standard library
function `rand()` from a C++ ctor. This results in a call to pvPortMalloc,
causing a hard fault with the current buffer implementation.

* Restyled by whitespace

* Update src/platform/cc13x2_26x2/Random.c

Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>

Co-authored-by: Restyled.io <commits@restyled.io>
Co-authored-by: Justin Wood <woody@apple.com>
Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>
  • Loading branch information
4 people authored and Nikita committed Sep 23, 2021
1 parent 343988f commit c50773a
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 2 deletions.
2 changes: 0 additions & 2 deletions examples/lock-app/cc13x2x7_26x2x7/main/AppTask.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@

#include <app/server/OnboardingCodesUtil.h>

#include <app/server/DataModelHandler.h>

#include <ti/drivers/apps/Button.h>
#include <ti/drivers/apps/LED.h>

Expand Down
1 change: 1 addition & 0 deletions src/platform/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,7 @@ if (chip_device_platform != "none" && chip_device_platform != "external") {
"cc13x2_26x2/Logging.cpp",
"cc13x2_26x2/PlatformManagerImpl.cpp",
"cc13x2_26x2/PlatformManagerImpl.h",
"cc13x2_26x2/Random.c",
"cc13x2_26x2/SystemPlatformConfig.h",
]

Expand Down
38 changes: 38 additions & 0 deletions src/platform/cc13x2_26x2/Random.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
*
* Copyright (c) 2020 Project CHIP Authors
* Copyright (c) 2020 Texas Instruments Incorporated
*
* 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 <stdlib.h>

/* Basic implementation of pseudo-random number generation to override the
* default newlib-nano implementation.
*/

static unsigned long int next = 1;

/* Return next random integer */
int rand()
{
next = next * 1103515245L + 12345;
return (unsigned int) (next / 65536L) % 32768L;
}

/* Set seed for random generator */
void srand(unsigned int seed)
{
next = seed;
}
3 changes: 3 additions & 0 deletions third_party/ti_simplelink_sdk/ti_simplelink_sdk.gni
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,9 @@ template("ti_simplelink_sdk") {
# DMM/BLE:
"${ti_simplelink_sdk_root}/source",

# Eclipse the SDK config header from DMM
"${chip_root}/src/platform/cc13x2_26x2",

# CHIPoBLE Added include dirs
"${ti_simplelink_sdk_root}/source/ti/dmm/apps/common/freertos/",
"${ti_simplelink_sdk_root}/source/ti/dmm/apps/common/freertos/itm",
Expand Down

0 comments on commit c50773a

Please sign in to comment.