From a550c52c39168108b9451b1dd51aff9a9918dd7b Mon Sep 17 00:00:00 2001 From: Th3maz1ng Date: Sat, 22 Apr 2023 13:20:15 +0200 Subject: [PATCH] Added a function to generate a random 6 digit number, this number could be used as the bluetooth pairing code --- .../app/app_utils/app_utils.c | 22 ++++++++++++++++++- .../app/app_utils/app_utils.h | 7 ++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/W800_SDK_v1.00.10/app/app_utils/app_utils.c b/src/W800_SDK_v1.00.10/app/app_utils/app_utils.c index 8863202..eb9b021 100644 --- a/src/W800_SDK_v1.00.10/app/app_utils/app_utils.c +++ b/src/W800_SDK_v1.00.10/app/app_utils/app_utils.c @@ -1,5 +1,6 @@ #include "app_utils.h" #include "app_log.h" +#include "wm_crypto_hard.h"" static uint32_t _elapsed_ms = 0; @@ -69,4 +70,23 @@ void ms_increment(uint32_t increment) uint32_t elapsed_ms(void) { return _elapsed_ms; -} \ No newline at end of file +} + +uint32_t random_gen_6_digit(void) +{ + unsigned char random_buf[6] = {0}; + uint32_t output_num = 0; + + tls_crypto_random_init(0x19031998, CRYPTO_RNG_SWITCH_16); + tls_crypto_random_bytes(random_buf, sizeof random_buf); + tls_crypto_random_stop(); + + for(uint8_t i = 0; i < sizeof random_buf; i++) + { + // Ensures the last digit is not 0 + if(i == (sizeof random_buf) - 1 && random_buf[i] % 10 == 0)random_buf[i]++; + output_num += (random_buf[i] % 10) * pow(10, i); + } + + return output_num; +} diff --git a/src/W800_SDK_v1.00.10/app/app_utils/app_utils.h b/src/W800_SDK_v1.00.10/app/app_utils/app_utils.h index c4f178b..6b93aae 100644 --- a/src/W800_SDK_v1.00.10/app/app_utils/app_utils.h +++ b/src/W800_SDK_v1.00.10/app/app_utils/app_utils.h @@ -31,4 +31,11 @@ void ms_increment(uint32_t increment); */ uint32_t elapsed_ms(void); +/** + * @brief Generates a 6 digit random number using the hardware RNG IP. + * + * @return uint32_t the 6 digit random number generated + */ +uint32_t random_gen_6_digit(void); + #endif //APP_UTILS_H \ No newline at end of file