Browse Source
This commit consolidates a number of check_esp_err functions that check whether an ESP-IDF return code is OK and raises an exception if not. The exception raised is an OSError with the error code as the first argument (negative if it's ESP-IDF specific) and the ESP-IDF error string as the second argument. This commit also fixes esp32.Partition.set_boot to use check_esp_err, and uses that function for a unit test.pull/5968/head
Thorsten von Eicken
5 years ago
committed by
Damien George
8 changed files with 85 additions and 44 deletions
@ -0,0 +1,43 @@ |
|||
try: |
|||
from esp32 import Partition as p |
|||
import micropython |
|||
except ImportError: |
|||
print("SKIP") |
|||
raise SystemExit |
|||
|
|||
# try some vanilla OSError to get std error code |
|||
try: |
|||
open("this filedoesnotexist", "r") |
|||
print("FAILED TO RAISE") |
|||
except OSError as e: |
|||
print(e) |
|||
|
|||
# try to make nvs partition bootable, which ain't gonna work |
|||
part = p.find(type=p.TYPE_DATA)[0] |
|||
fun = p.set_boot |
|||
try: |
|||
fun(part) |
|||
print("FAILED TO RAISE") |
|||
except OSError as e: |
|||
print(e) |
|||
|
|||
# same but with out of memory condition by locking the heap |
|||
exc = "FAILED TO RAISE" |
|||
micropython.heap_lock() |
|||
try: |
|||
fun(part) |
|||
except OSError as e: |
|||
exc = e |
|||
micropython.heap_unlock() |
|||
print("exc:", exc) # exc empty due to no memory |
|||
|
|||
# same again but having an emergency buffer |
|||
micropython.alloc_emergency_exception_buf(256) |
|||
exc = "FAILED TO RAISE" |
|||
micropython.heap_lock() |
|||
try: |
|||
fun(part) |
|||
except Exception as e: |
|||
exc = e |
|||
micropython.heap_unlock() |
|||
print(exc) |
@ -0,0 +1,4 @@ |
|||
[Errno 2] ENOENT |
|||
(-5379, 'ESP_ERR_OTA_VALIDATE_FAILED') |
|||
exc: |
|||
-5379 |
Loading…
Reference in new issue