/*
 * Copyright (c) 2019 - 2021 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: Apache-2.0
 */


#include <platform/nrf_802154_temperature.h>
#include <drivers/entropy.h>

static uint32_t state;

static uint32_t next(void)
{
	uint32_t num = state;

	state = 1664525 * num + 1013904223;
	return num;
}

void nrf_802154_random_init(void)
{
	const struct device *dev;
	int err;

	dev = device_get_binding(DT_CHOSEN_ZEPHYR_ENTROPY_LABEL);
	__ASSERT_NO_MSG(dev != NULL);

	do {
		err = entropy_get_entropy(dev, (uint8_t *)&state, sizeof(state));
		__ASSERT_NO_MSG(err == 0);
	} while (state == 0);
}

void nrf_802154_random_deinit(void)
{
	/* Intentionally empty */
}

uint32_t nrf_802154_random_get(void)
{
	return next();
}
