Skip to content
Snippets Groups Projects
Verified Commit 1d762d46 authored by fpletz's avatar fpletz :snowflake:
Browse files

feat(pycardium): add trng module

parent 4c74f061
No related branches found
No related tags found
No related merge requests found
...@@ -11,6 +11,7 @@ modsrc = files( ...@@ -11,6 +11,7 @@ modsrc = files(
'modules/os.c', 'modules/os.c',
'modules/personal_state.c', 'modules/personal_state.c',
'modules/sys_display.c', 'modules/sys_display.c',
'modules/trng.c',
'modules/utime.c', 'modules/utime.c',
'modules/vibra.c', 'modules/vibra.c',
) )
......
...@@ -54,6 +54,10 @@ Q(set_unix_time) ...@@ -54,6 +54,10 @@ Q(set_unix_time)
Q(vibra) Q(vibra)
Q(vibrate) Q(vibrate)
/* trng */
Q(trng)
Q(getrandbytes)
Q(set_callback) Q(set_callback)
Q(enable_callback) Q(enable_callback)
Q(disable_callback) Q(disable_callback)
......
#include "epicardium.h"
#include "py/builtin.h"
#include "py/obj.h"
#include "py/runtime.h"
static mp_obj_t mp_trng_getrandbytes(mp_obj_t n)
{
size_t amount = mp_obj_get_int(n);
uint8_t randbytes[amount];
epic_trng_read(randbytes, amount);
return mp_obj_new_bytearray_by_ref(amount, randbytes);
}
static MP_DEFINE_CONST_FUN_OBJ_1(trng_getrandbytes_obj, mp_trng_getrandbytes);
static const mp_rom_map_elem_t trng_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_trng) },
{ MP_ROM_QSTR(MP_QSTR_getrandbytes),
MP_ROM_PTR(&trng_getrandbytes_obj) },
};
static MP_DEFINE_CONST_DICT(trng_module_globals, trng_module_globals_table);
// Define module object.
const mp_obj_module_t trng_module = {
.base = { &mp_type_module },
.globals = (mp_obj_dict_t *)&trng_module_globals,
};
/* Register the module to make it available in Python */
/* clang-format off */
MP_REGISTER_MODULE(MP_QSTR_trng, trng_module, MODULE_TRNG_ENABLED);
...@@ -55,6 +55,7 @@ int mp_hal_trng_read_int(void); ...@@ -55,6 +55,7 @@ int mp_hal_trng_read_int(void);
#define MODULE_PERSONAL_STATE_ENABLED (1) #define MODULE_PERSONAL_STATE_ENABLED (1)
#define MODULE_UTIME_ENABLED (1) #define MODULE_UTIME_ENABLED (1)
#define MODULE_VIBRA_ENABLED (1) #define MODULE_VIBRA_ENABLED (1)
#define MODULE_TRNG_ENABLED (1)
/* /*
* This port is intended to be 32-bit, but unfortunately, int32_t for * This port is intended to be 32-bit, but unfortunately, int32_t for
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment