From 224fee0e1080fa7cd654de240c32c8433bb07cf9 Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Sat, 15 Nov 2014 20:39:44 +0000
Subject: [PATCH] stmhal: Fix HAL error raising; make test for it.

Addresses issue #968.
---
 stmhal/mphal.c            |  2 +-
 tests/pyb/halerror.py     | 15 +++++++++++++++
 tests/pyb/halerror.py.exp |  2 ++
 3 files changed, 18 insertions(+), 1 deletion(-)
 create mode 100644 tests/pyb/halerror.py
 create mode 100644 tests/pyb/halerror.py.exp

diff --git a/stmhal/mphal.c b/stmhal/mphal.c
index e8f242051..7fcd982dc 100644
--- a/stmhal/mphal.c
+++ b/stmhal/mphal.c
@@ -16,5 +16,5 @@ const byte mp_hal_status_to_errno_table[4] = {
 };
 
 NORETURN void mp_hal_raise(HAL_StatusTypeDef status) {
-    nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, (mp_obj_t)(mp_uint_t)mp_hal_status_to_errno_table[status]));
+    nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(mp_hal_status_to_errno_table[status])));
 }
diff --git a/tests/pyb/halerror.py b/tests/pyb/halerror.py
new file mode 100644
index 000000000..1a6bce1a7
--- /dev/null
+++ b/tests/pyb/halerror.py
@@ -0,0 +1,15 @@
+# test hal errors
+
+import pyb
+
+i2c = pyb.I2C(2, pyb.I2C.MASTER)
+try:
+    i2c.recv(1, 1)
+except OSError as e:
+    print(repr(e))
+
+can = pyb.CAN(1, pyb.CAN.NORMAL)
+try:
+    can.send('1', 1, timeout=50)
+except OSError as e:
+    print(repr(e))
diff --git a/tests/pyb/halerror.py.exp b/tests/pyb/halerror.py.exp
new file mode 100644
index 000000000..09c9f7ad9
--- /dev/null
+++ b/tests/pyb/halerror.py.exp
@@ -0,0 +1,2 @@
+OSError(5,)
+OSError(116,)
-- 
GitLab