summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-01-02 23:22:37 +0200
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-03-09 12:35:43 +0700
commit7379be3673804528696a6b28d0d47dc42a939a9c (patch)
treea3e94303401b023f5cebf295b3586119171744c5
parent4f64f6bfd3b2bf4fc07a5c91958a453790a40a96 (diff)
downloadmicropython-7379be3673804528696a6b28d0d47dc42a939a9c.tar.gz
micropython-7379be3673804528696a6b28d0d47dc42a939a9c.zip
extmod/modlwip: Add .write() stream method.
-rw-r--r--extmod/modlwip.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/extmod/modlwip.c b/extmod/modlwip.c
index fccde6a052..76b605ee8b 100644
--- a/extmod/modlwip.c
+++ b/extmod/modlwip.c
@@ -901,6 +901,19 @@ STATIC mp_uint_t lwip_socket_read(mp_obj_t self_in, void *buf, mp_uint_t size, i
return MP_STREAM_ERROR;
}
+STATIC mp_uint_t lwip_socket_write(mp_obj_t self_in, const void *buf, mp_uint_t size, int *errcode) {
+ lwip_socket_obj_t *socket = self_in;
+
+ switch (socket->type) {
+ case MOD_NETWORK_SOCK_STREAM:
+ return lwip_tcp_send(socket, buf, size, errcode);
+ case MOD_NETWORK_SOCK_DGRAM:
+ return lwip_udp_send(socket, buf, size, NULL, 0, errcode);
+ }
+ // Unreachable
+ return MP_STREAM_ERROR;
+}
+
STATIC const mp_map_elem_t lwip_socket_locals_dict_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR___del__), (mp_obj_t)&lwip_socket_close_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_close), (mp_obj_t)&lwip_socket_close_obj },
@@ -918,12 +931,13 @@ STATIC const mp_map_elem_t lwip_socket_locals_dict_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR_read), (mp_obj_t)&mp_stream_read_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_readline), (mp_obj_t)&mp_stream_unbuffered_readline_obj},
+ { MP_OBJ_NEW_QSTR(MP_QSTR_write), (mp_obj_t)&mp_stream_write_obj },
};
STATIC MP_DEFINE_CONST_DICT(lwip_socket_locals_dict, lwip_socket_locals_dict_table);
STATIC const mp_stream_p_t lwip_socket_stream_p = {
.read = lwip_socket_read,
- //.write = lwip_socket_write,
+ .write = lwip_socket_write,
};
STATIC const mp_obj_type_t lwip_socket_type = {