summaryrefslogtreecommitdiff
path: root/py
diff options
context:
space:
mode:
authorScott Shawcroft <scott@tannewt.org>2018-12-03 14:20:44 -0800
committerGitHub <noreply@github.com>2018-12-03 14:20:44 -0800
commit1b4359eaece432d68cce9c4a96261e411b8dfebb (patch)
tree1d5637fde0ef7162291a4aa1830548e7614dd49c /py
parentb3575180e1e350eb0a8c04c71ea549783268a992 (diff)
parent963a9a7428043a950f4e0dc8af4de40700baea8b (diff)
Merge pull request #1372 from dhalbert/pyserial-compat-for-uart
UART changes: timeout in secs, write bytes, etc.
Diffstat (limited to 'py')
-rw-r--r--py/stream.c6
-rw-r--r--py/stream.h1
2 files changed, 7 insertions, 0 deletions
diff --git a/py/stream.c b/py/stream.c
index 8cf375b16..aca9b8460 100644
--- a/py/stream.c
+++ b/py/stream.c
@@ -250,6 +250,9 @@ void mp_stream_write_adaptor(void *self, const char *buf, size_t len) {
STATIC mp_obj_t stream_write_method(size_t n_args, const mp_obj_t *args) {
mp_buffer_info_t bufinfo;
mp_get_buffer_raise(args[1], &bufinfo, MP_BUFFER_READ);
+ if (!mp_get_stream(args[0])->is_text && MP_OBJ_IS_STR(args[1])) {
+ mp_raise_ValueError(translate("string not supported; use bytes or bytearray"));
+ }
size_t max_len = (size_t)-1;
size_t off = 0;
if (n_args == 3) {
@@ -282,6 +285,9 @@ STATIC mp_obj_t stream_readinto(size_t n_args, const mp_obj_t *args) {
// https://docs.python.org/3/library/socket.html#socket.socket.recv_into
mp_uint_t len = bufinfo.len;
if (n_args > 2) {
+ if (mp_get_stream(args[0])->pyserial_compatibility) {
+ mp_raise_ValueError(translate("length argument not allowed for this type"));
+ }
len = mp_obj_get_int(args[2]);
if (len > bufinfo.len) {
len = bufinfo.len;
diff --git a/py/stream.h b/py/stream.h
index 7b953138c..bcba4f234 100644
--- a/py/stream.h
+++ b/py/stream.h
@@ -70,6 +70,7 @@ typedef struct _mp_stream_p_t {
mp_uint_t (*write)(mp_obj_t obj, const void *buf, mp_uint_t size, int *errcode);
mp_uint_t (*ioctl)(mp_obj_t obj, mp_uint_t request, uintptr_t arg, int *errcode);
mp_uint_t is_text : 1; // default is bytes, set this for text stream
+ bool pyserial_compatibility: 1; // adjust API to match pyserial more closely
} mp_stream_p_t;
MP_DECLARE_CONST_FUN_OBJ_VAR_BETWEEN(mp_stream_read_obj);