h2zero / n-able-Arduino

An arduino core for ARM based BLE devices supported by the NimBLE stack.
GNU Lesser General Public License v2.1
35 stars 14 forks source link

nrfx_rng driver #43

Open lilindian16 opened 5 months ago

lilindian16 commented 5 months ago

Board: generic_nrf52840

This is a dumb question. How do I enable the RNG driver (cores/nRF5/nordic/nrfx/drivers/include/nrfx_rng.h)? I have included the driver in my source file. I have added -DNRFX_RNG_ENABLED to the build_flags in my platformio.ini

Building results in undefined reference to nrfx_rng_init and undefined reference to nrfx_rng_uninit

My current code:

bool rngGenerated = false;
uint8_t rngNumber;

void rngEventHandler(uint8_t randomNumber)
{
  rngGenerated = true;
  rngNumber = randomNumber;
}

void generateRandomNumber(uint8_t *dataBuffer, uint8_t bytesToGenerate)
{
  uint8_t numbersGenerated = 0;
  nrfx_rng_config_t config = NRFX_RNG_DEFAULT_CONFIG;
  nrfx_rng_evt_handler_t eventHandler = &rngEventHandler;
  nrfx_rng_init(&config, eventHandler);

  while (numbersGenerated < bytesToGenerate)
  {
    if (rngGenerated)
    {
      dataBuffer[numbersGenerated] = rngNumber;
      rngGenerated = false;
      numbersGenerated++;
    }
    delay(1);
  }
  nrfx_rng_uninit();
}

Any help would be much appreciated :)

h2zero commented 5 months ago

I don't think that code is included currently. I would need to add it, might be time to update nrfx as well. Any particular reason to use this over the other options?