mirror of
https://github.com/espressif/esp-nimble.git
synced 2026-09-24 01:47:22 +00:00
native: Add basic ble_hw_rng implementation
This commit is contained in:
@@ -20,6 +20,8 @@
|
||||
#include <stdint.h>
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
#include "syscfg/syscfg.h"
|
||||
#include "os/os.h"
|
||||
#include "nimble/ble.h"
|
||||
@@ -32,6 +34,9 @@
|
||||
/* We use this to keep track of which entries are set to valid addresses */
|
||||
static uint8_t g_ble_hw_whitelist_mask;
|
||||
|
||||
static ble_rng_isr_cb_t rng_cb;
|
||||
static bool rng_started;
|
||||
|
||||
/* Returns public device address or -1 if not present */
|
||||
int
|
||||
ble_hw_get_public_addr(ble_addr_t *addr)
|
||||
@@ -143,7 +148,8 @@ ble_hw_encrypt_block(struct ble_encryption_block *ecb)
|
||||
int
|
||||
ble_hw_rng_init(ble_rng_isr_cb_t cb, int bias)
|
||||
{
|
||||
return -1;
|
||||
rng_cb = cb;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -154,7 +160,15 @@ ble_hw_rng_init(ble_rng_isr_cb_t cb, int bias)
|
||||
int
|
||||
ble_hw_rng_start(void)
|
||||
{
|
||||
return -1;
|
||||
rng_started = true;
|
||||
|
||||
if (rng_cb) {
|
||||
while (rng_started) {
|
||||
rng_cb(rand());
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -165,7 +179,8 @@ ble_hw_rng_start(void)
|
||||
int
|
||||
ble_hw_rng_stop(void)
|
||||
{
|
||||
return -1;
|
||||
rng_started = false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -176,7 +191,7 @@ ble_hw_rng_stop(void)
|
||||
uint8_t
|
||||
ble_hw_rng_read(void)
|
||||
{
|
||||
return 0;
|
||||
return rand();
|
||||
}
|
||||
|
||||
#if MYNEWT_VAL(BLE_LL_CFG_FEAT_LL_PRIVACY)
|
||||
|
||||
Reference in New Issue
Block a user