summaryrefslogtreecommitdiffstatshomepage
path: root/py
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-01-17 12:10:28 +0200
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-01-17 12:13:01 +0200
commita58a91eb04c50daafb31228a79f6752374338c5e (patch)
tree67c1aaf41dc3e52f650b2a9168a1e80c0f0e77f3 /py
parente7bee6b35ea4c9e622209902456be64559b94d17 (diff)
downloadmicropython-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.h1
-rw-r--r--py/mpconfig.h4
-rw-r--r--py/objmodule.c3
-rw-r--r--py/py.mk1
-rw-r--r--py/qstrdefs.h6
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
diff --git a/py/py.mk b/py/py.mk
index 4574ec9a68..63770e2d24 100644
--- a/py/py.mk
+++ b/py/py.mk
@@ -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