Commit Graph

9306 Commits

Author SHA1 Message Date
Damien George bccf9d3dcf esp8266: Let machine.WDT trigger the software WDT if obj is not fed.
This patch allows scripts to have more control over the software WDT.  If
an instance of machine.WDT is created then the underlying OS is prevented
from feeding the software WDT, and it is up to the user script to feed it
instead via WDT.feed().  The timeout for this WDT is currently fixed and
will be between 1.6 and 3.2 seconds.
2018-07-03 15:31:10 +10:00
Damien George b6e5f82ba5 esp8266/modesp: Run ets_loop_iter before/after doing flash erase/write.
A flash erase/write takes a while and during that time tasks may be
scheduled via an IRQ.  To prevent overflow of the task queue (and loss of
tasks) call ets_loop_iter() before and after slow flash operations.

Note: if a task is posted to a full queue while a flash operation is in
progress then this leads to a fault when trying to print out the error
message that the queue is full.  This patch doesn't try to fix this
particular issue, it just prevents it from happening in the first place.
2018-07-03 14:46:29 +10:00
Damien George a3c3dbd955 extmod/vfs: Support opening a file descriptor (int) with VfsPosix.
Fixes issue #3865.
2018-07-03 13:04:29 +10:00
Damien George 349d8e1324 esp32: Allow to build with uPy floats disabled. 2018-07-03 12:10:03 +10:00
Nicko van Someren d66c33cbd6 py/obj.h: Fix broken build for object repr C when float disabled.
Fixes issue #3914.
2018-07-03 09:51:08 +10:00
Damien George b488a4a848 py/objgenerator: Eliminate need for mp_obj_gen_wrap wrapper instances.
For generating functions there is no need to wrap the bytecode function in
a generator wrapper instance.  Instead the type of the bytecode function
can be changed to mp_type_gen_wrap.  This reduces code size and saves a
block of GC heap RAM for each generator.
2018-07-02 15:30:57 +10:00
Damien George 8f86fbfd6c ports: Enable ure.sub() on stm32, esp8266 (not 512k) and esp32. 2018-07-02 15:13:18 +10:00
Damien George 41226e9a18 docs/ure: Document some more supported regex operators. 2018-07-02 14:55:05 +10:00
Damien George 4727bd1db8 docs/ure: Document sub(), groups(), span(), start() and end(). 2018-07-02 14:55:05 +10:00
Damien George 79d5e3abb3 unix/mpconfigport_coverage: Enable ure groups, span, start, end and sub. 2018-07-02 14:55:05 +10:00
Damien George e30a5fc7bc extmod/modure: Add ure.sub() function and method, and tests.
This feature is controlled at compile time by MICROPY_PY_URE_SUB, disabled
by default.

Thanks to @dmazzella for the original patch for this feature; see #3770.
2018-07-02 14:55:02 +10:00
Damien George 1e9b871d29 extmod/modure: Add match.span(), start() and end() methods, and tests.
This feature is controlled at compile time by
MICROPY_PY_URE_MATCH_SPAN_START_END, disabled by default.

Thanks to @dmazzella for the original patch for this feature; see #3770.
2018-07-02 14:54:56 +10:00
Damien George 1f86460910 extmod/modure: Add match.groups() method, and tests.
This feature is controlled at compile time by MICROPY_PY_URE_MATCH_GROUPS,
disabled by default.

Thanks to @dmazzella for the original patch for this feature; see #3770.
2018-07-02 14:53:30 +10:00
Damien George ab02abe96d docs/uos: Make it clear that block device block_num param is an index. 2018-06-28 13:25:10 +10:00
Damien George d800ed1877 esp8266/esp8266_common.ld: Put mp_keyboard_interrupt in iRAM.
This function may be called from a UART IRQ, which may interrupt the system
when it is erasing/reading/writing flash.  In such a case all code
executing from the IRQ must be in iRAM (because the SPI flash is busy), so
put mp_keyboard_interrupt in iRAM so ctrl-C can be caught during flash
access.

This patch also takes get_fattime out of iRAM and puts it in iROM to make
space for mp_keyboard_interrupt.  There's no real need to have get_fattime
in iRAM because it calls other functions in iROM.

Fixes issue #3897.
2018-06-28 12:55:54 +10:00
Damien George d8dc918deb py/compile: Handle return/break/continue correctly in async with.
Before this patch the context manager's __aexit__() method would not be
executed if a return/break/continue statement was used to exit an async
with block.  async with now has the same semantics as normal with.

The fix here applies purely to the compiler, and does not modify the
runtime at all. It might (eventually) be better to define new bytecode(s)
to handle async with (and maybe other async constructs) in a cleaner, more
efficient way.

One minor drawback with addressing this issue purely in the compiler is
that it wasn't possible to get 100% CPython semantics.  The thing that is
different here to CPython is that the __aexit__ method is not looked up in
the context manager until it is needed, which is after the body of the
async with statement has executed.  So if a context manager doesn't have
__aexit__ then CPython raises an exception before the async with is
executed, whereas uPy will raise it after it is executed.  Note that
__aenter__ is looked up at the beginning in uPy because it needs to be
called straightaway, so if the context manager isn't a context manager then
it'll still raise an exception at the same location as CPython.  The only
difference is if the context manager has the __aenter__ method but not the
__aexit__ method, then in that case uPy has different behaviour.  But this
is a very minor, and acceptable, difference.
2018-06-27 16:57:42 +10:00
Damien George 726804ea40 tests: Move non-filesystem io tests to basics dir with io_ prefix. 2018-06-27 16:55:05 +10:00
Damien George bc6c56d75d esp8266/mpconfigport.h: Enable ucryptolib module for standard build.
It remains disabled for the 512k build.
2018-06-27 16:45:22 +10:00
Damien George 8769a3e38c extmod/moducryptolib: Don't include arpa/inet.h, it's not needed.
And some ports (eg esp8266) don't have it.
2018-06-27 16:44:59 +10:00
Damien George 82bc4838d2 esp32/mpconfigport.h: Enable ucryptolib module. 2018-06-27 16:44:59 +10:00
Yonatan Goldschmidt 31f2f1e967 extmod/moducryptolib: Shorten exception messages to reduce code size. 2018-06-27 16:44:59 +10:00
Yonatan Goldschmidt d0507c084c extmod/moducryptolib: Prefix all Python methods/objects with ucryptolib.
Follows what was done in b045ebd35 for uhashlib.
2018-06-27 16:44:59 +10:00
Yonatan Goldschmidt eacb233b8f extmod/moducryptolib: Add an mbedTLS implementation for this module. 2018-06-27 16:44:59 +10:00
Yonatan Goldschmidt e328b4593c extmod/moducryptolib: Refactor functions for clean interface with axTLS.
This will allow implementations other than axTLS.

This commit includes additions of checks and clarifications of exceptions
related to user input.

To make the interface cleaner, I've disallowed switching from encrypt to
decrypt in the same object, as this is not always possible with other
crypto libraries (not all libraries have AES_convert_key like axTLS).
2018-06-27 16:44:59 +10:00
Yonatan Goldschmidt 473fe45da2 extmod/moducryptolib: Optionally export MODE_* constants to Python.
Allow including crypto consts based on compilation settings.  Disabled by
default to reduce code size; if one wants extra code readability, can
enable them.
2018-06-27 16:29:26 +10:00