Skip to content

Commit c7fb87c

Browse files
committed
extmod/modlwip: Add stream protocol read method.
1 parent f7be803 commit c7fb87c

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

extmod/modlwip.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -878,6 +878,19 @@ STATIC mp_obj_t lwip_socket_setsockopt(mp_uint_t n_args, const mp_obj_t *args) {
878878
}
879879
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(lwip_socket_setsockopt_obj, 4, 4, lwip_socket_setsockopt);
880880

881+
STATIC mp_uint_t lwip_socket_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *errcode) {
882+
lwip_socket_obj_t *socket = self_in;
883+
884+
switch (socket->type) {
885+
case MOD_NETWORK_SOCK_STREAM:
886+
return lwip_tcp_receive(socket, buf, size, errcode);
887+
case MOD_NETWORK_SOCK_DGRAM:
888+
return lwip_udp_receive(socket, buf, size, NULL, NULL, errcode);
889+
}
890+
// Unreachable
891+
return MP_STREAM_ERROR;
892+
}
893+
881894
STATIC const mp_map_elem_t lwip_socket_locals_dict_table[] = {
882895
{ MP_OBJ_NEW_QSTR(MP_QSTR___del__), (mp_obj_t)&lwip_socket_close_obj },
883896
{ MP_OBJ_NEW_QSTR(MP_QSTR_close), (mp_obj_t)&lwip_socket_close_obj },
@@ -894,11 +907,17 @@ STATIC const mp_map_elem_t lwip_socket_locals_dict_table[] = {
894907
};
895908
STATIC MP_DEFINE_CONST_DICT(lwip_socket_locals_dict, lwip_socket_locals_dict_table);
896909

910+
STATIC const mp_stream_p_t lwip_socket_stream_p = {
911+
.read = lwip_socket_read,
912+
//.write = lwip_socket_write,
913+
};
914+
897915
STATIC const mp_obj_type_t lwip_socket_type = {
898916
{ &mp_type_type },
899917
.name = MP_QSTR_socket,
900918
.print = lwip_socket_print,
901919
.make_new = lwip_socket_make_new,
920+
.stream_p = &lwip_socket_stream_p,
902921
.locals_dict = (mp_obj_t)&lwip_socket_locals_dict,
903922
};
904923

0 commit comments

Comments
 (0)