diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2016-01-17 12:10:28 +0200 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2016-01-17 12:13:01 +0200 |
commit | a58a91eb04c50daafb31228a79f6752374338c5e (patch) | |
tree | 67c1aaf41dc3e52f650b2a9168a1e80c0f0e77f3 /py | |
parent | e7bee6b35ea4c9e622209902456be64559b94d17 (diff) | |
download | micropython-a58a91eb04c50daafb31228a79f6752374338c5e.tar.gz micropython-a58a91eb04c50daafb31228a79f6752374338c5e.zip |
extmod/modurandom: Add "urandom" module.
Seedable and reproducible pseudo-random number generator. Implemented
functions are getrandbits(n) (n <= 32) and seed().
The algorithm used is Yasmarang by Ilya Levin:
http://www.literatecode.com/yasmarang
Diffstat (limited to 'py')
-rw-r--r-- | py/builtin.h | 1 | ||||
-rw-r--r-- | py/mpconfig.h | 4 | ||||
-rw-r--r-- | py/objmodule.c | 3 | ||||
-rw-r--r-- | py/py.mk | 1 | ||||
-rw-r--r-- | py/qstrdefs.h | 6 |
5 files changed, 15 insertions, 0 deletions
diff --git a/py/builtin.h b/py/builtin.h index 261e5a2311..162835cd4f 100644 --- a/py/builtin.h +++ b/py/builtin.h @@ -101,6 +101,7 @@ extern const mp_obj_module_t mp_module_ure; extern const mp_obj_module_t mp_module_uheapq; extern const mp_obj_module_t mp_module_uhashlib; extern const mp_obj_module_t mp_module_ubinascii; +extern const mp_obj_module_t mp_module_urandom; extern const mp_obj_module_t mp_module_ussl; extern const mp_obj_module_t mp_module_machine; extern const mp_obj_module_t mp_module_lwip; diff --git a/py/mpconfig.h b/py/mpconfig.h index 5e717ad0f6..72af343ddf 100644 --- a/py/mpconfig.h +++ b/py/mpconfig.h @@ -783,6 +783,10 @@ typedef double mp_float_t; #define MICROPY_PY_UBINASCII (0) #endif +#ifndef MICROPY_PY_URANDOM +#define MICROPY_PY_URANDOM (0) +#endif + #ifndef MICROPY_PY_MACHINE #define MICROPY_PY_MACHINE (0) #endif diff --git a/py/objmodule.c b/py/objmodule.c index 32ded89196..1034d00f60 100644 --- a/py/objmodule.c +++ b/py/objmodule.c @@ -184,6 +184,9 @@ STATIC const mp_rom_map_elem_t mp_builtin_module_table[] = { #if MICROPY_PY_UBINASCII { MP_ROM_QSTR(MP_QSTR_ubinascii), MP_ROM_PTR(&mp_module_ubinascii) }, #endif +#if MICROPY_PY_URANDOM + { MP_ROM_QSTR(MP_QSTR_urandom), MP_ROM_PTR(&mp_module_urandom) }, +#endif #if MICROPY_PY_USSL { MP_ROM_QSTR(MP_QSTR_ussl), MP_ROM_PTR(&mp_module_ussl) }, #endif @@ -168,6 +168,7 @@ PY_O_BASENAME = \ ../extmod/modubinascii.o \ ../extmod/machine_mem.o \ ../extmod/modussl.o \ + ../extmod/modurandom.o \ ../extmod/fsusermount.o \ ../extmod/moduos_dupterm.o \ diff --git a/py/qstrdefs.h b/py/qstrdefs.h index 50f2b3b385..7e21090063 100644 --- a/py/qstrdefs.h +++ b/py/qstrdefs.h @@ -671,3 +671,9 @@ Q(count) #if MICROPY_PY_OS_DUPTERM Q(dupterm) #endif + +#if MICROPY_PY_URANDOM +Q(urandom) +Q(getrandbits) +Q(seed) +#endif |