From 0466560b12bce9e9007df620e4f6d273e922e40e Mon Sep 17 00:00:00 2001 From: Jason Kridner Date: Wed, 22 Feb 2023 00:09:22 -0500 Subject: [PATCH 1/2] zephyr/modzsensor: Add additional sensor type constants. Signed-off-by: Jason Kridner --- ports/zephyr/modzsensor.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ports/zephyr/modzsensor.c b/ports/zephyr/modzsensor.c index 2a7278a61481e..58775b980ad3f 100644 --- a/ports/zephyr/modzsensor.c +++ b/ports/zephyr/modzsensor.c @@ -128,11 +128,24 @@ static const mp_rom_map_elem_t mp_module_zsensor_globals_table[] = { C(MAGN_Y), C(MAGN_Z), C(DIE_TEMP), + C(AMBIENT_TEMP), C(PRESS), C(PROX), C(HUMIDITY), C(LIGHT), + C(IR), + C(RED), + C(GREEN), + C(BLUE), C(ALTITUDE), + C(PM_1_0), + C(PM_2_5), + C(PM_10), + C(DISTANCE), + C(CO2), + C(VOC), + C(GAS_RES), + C(VOLTAGE), #undef C }; From c211c052915fdb6007d79abf70329918381c3974 Mon Sep 17 00:00:00 2001 From: Jason Kridner Date: Wed, 22 Feb 2023 00:21:16 -0500 Subject: [PATCH 2/2] zephyr/modsocket: Add socket.recvfrom method. Signed-off-by: Jason Kridner --- ports/zephyr/modsocket.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/ports/zephyr/modsocket.c b/ports/zephyr/modsocket.c index 12c4c934bcd2f..7732e0a64a40d 100644 --- a/ports/zephyr/modsocket.c +++ b/ports/zephyr/modsocket.c @@ -292,6 +292,35 @@ static mp_obj_t socket_recv(mp_obj_t self_in, mp_obj_t len_in) { } static MP_DEFINE_CONST_FUN_OBJ_2(socket_recv_obj, socket_recv); +static mp_obj_t socket_recvfrom(mp_obj_t self_in, mp_obj_t len_in) { + socket_obj_t *socket = self_in; + socket_check_closed(socket); + + mp_int_t max_len = mp_obj_get_int(len_in); + vstr_t vstr; + // +1 to accommodate for trailing \0 + vstr_init_len(&vstr, max_len + 1); + struct sockaddr_in6 saddr; + socklen_t slen = sizeof(saddr); + + ssize_t recv_len = zsock_recvfrom(socket->ctx, vstr.buf, max_len, 0, (struct sockaddr *)&saddr, &slen); + if (recv_len == -1) { + vstr_clear(&vstr); + mp_raise_OSError(errno); + } + + mp_obj_t ret[2]; + if (recv_len == 0) { + ret[0] = mp_const_empty_bytes; + } else { + vstr.len = recv_len; + ret[0] = mp_obj_new_bytes_from_vstr(&vstr); + } + ret[1] = format_inet_addr((struct sockaddr *)&saddr, 0); + return mp_obj_new_tuple(2, ret); +} +static MP_DEFINE_CONST_FUN_OBJ_2(socket_recvfrom_obj, socket_recvfrom); + static mp_obj_t socket_setsockopt(size_t n_args, const mp_obj_t *args) { (void)n_args; // always 4 mp_warning(MP_WARN_CAT(RuntimeWarning), "setsockopt() not implemented"); @@ -336,6 +365,7 @@ static const mp_rom_map_elem_t socket_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_accept), MP_ROM_PTR(&socket_accept_obj) }, { MP_ROM_QSTR(MP_QSTR_send), MP_ROM_PTR(&socket_send_obj) }, { MP_ROM_QSTR(MP_QSTR_recv), MP_ROM_PTR(&socket_recv_obj) }, + { MP_ROM_QSTR(MP_QSTR_recvfrom), MP_ROM_PTR(&socket_recvfrom_obj) }, { MP_ROM_QSTR(MP_QSTR_setsockopt), MP_ROM_PTR(&socket_setsockopt_obj) }, { MP_ROM_QSTR(MP_QSTR_read), MP_ROM_PTR(&mp_stream_read_obj) }, pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy