From eb8bdf4df3550d1e3d0ef08cf1ce80108b721fda Mon Sep 17 00:00:00 2001 From: Damien George Date: Mon, 21 Apr 2014 00:10:04 +0100 Subject: stmhal, SPI and I2C: Improvements to functionality and consistency. --- stmhal/bufhelper.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 stmhal/bufhelper.c (limited to 'stmhal/bufhelper.c') diff --git a/stmhal/bufhelper.c b/stmhal/bufhelper.c new file mode 100644 index 000000000..5612a048d --- /dev/null +++ b/stmhal/bufhelper.c @@ -0,0 +1,29 @@ +#include "misc.h" +#include "mpconfig.h" +#include "qstr.h" +#include "obj.h" +#include "bufhelper.h" + +void pyb_buf_get_for_send(mp_obj_t o, mp_buffer_info_t *bufinfo, uint8_t *tmp_data) { + if (MP_OBJ_IS_INT(o)) { + tmp_data[0] = mp_obj_get_int(o); + bufinfo->buf = tmp_data; + bufinfo->len = 1; + bufinfo->typecode = 'B'; + } else { + mp_get_buffer_raise(o, bufinfo, MP_BUFFER_READ); + } +} + +mp_obj_t pyb_buf_get_for_recv(mp_obj_t o, mp_buffer_info_t *bufinfo) { + if (MP_OBJ_IS_INT(o)) { + // allocate a new bytearray of given length + bufinfo->len = mp_obj_get_int(o); + bufinfo->typecode = 'B'; + return mp_obj_str_builder_start(&mp_type_bytes, bufinfo->len, (byte**)&bufinfo->buf); + } else { + // get the existing buffer + mp_get_buffer_raise(o, bufinfo, MP_BUFFER_WRITE); + return MP_OBJ_NULL; + } +} -- cgit v1.2.3