summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--zephyr/modusocket.c14
-rw-r--r--zephyr/prj_base.conf3
2 files changed, 17 insertions, 0 deletions
diff --git a/zephyr/modusocket.c b/zephyr/modusocket.c
index 0cacd71796..c48606b76b 100644
--- a/zephyr/modusocket.c
+++ b/zephyr/modusocket.c
@@ -507,6 +507,18 @@ STATIC const mp_obj_type_t socket_type = {
.locals_dict = (mp_obj_t)&socket_locals_dict,
};
+STATIC mp_obj_t nbuf_get_info(void) {
+ struct net_buf_pool *rx, *tx, *rx_data, *tx_data;
+ net_nbuf_get_info(&rx, &tx, &rx_data, &tx_data);
+ mp_obj_tuple_t *t = MP_OBJ_TO_PTR(mp_obj_new_tuple(4, NULL));
+ t->items[0] = MP_OBJ_NEW_SMALL_INT(rx->avail_count);
+ t->items[1] = MP_OBJ_NEW_SMALL_INT(tx->avail_count);
+ t->items[2] = MP_OBJ_NEW_SMALL_INT(rx_data->avail_count);
+ t->items[3] = MP_OBJ_NEW_SMALL_INT(tx_data->avail_count);
+ return MP_OBJ_FROM_PTR(t);
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_0(nbuf_get_info_obj, nbuf_get_info);
+
STATIC const mp_map_elem_t mp_module_usocket_globals_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_usocket) },
// objects
@@ -520,6 +532,8 @@ STATIC const mp_map_elem_t mp_module_usocket_globals_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR_SOL_SOCKET), MP_OBJ_NEW_SMALL_INT(1) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_SO_REUSEADDR), MP_OBJ_NEW_SMALL_INT(2) },
+
+ { MP_OBJ_NEW_QSTR(MP_QSTR_nbuf_get_info), (mp_obj_t)&nbuf_get_info_obj },
};
STATIC MP_DEFINE_CONST_DICT(mp_module_usocket_globals, mp_module_usocket_globals_table);
diff --git a/zephyr/prj_base.conf b/zephyr/prj_base.conf
index 1a0b407116..97a78fa772 100644
--- a/zephyr/prj_base.conf
+++ b/zephyr/prj_base.conf
@@ -17,6 +17,9 @@ CONFIG_NET_TCP=y
CONFIG_TEST_RANDOM_GENERATOR=y
CONFIG_NET_NBUF_RX_COUNT=5
+# Required for usocket.pkt_get_info()
+CONFIG_NET_BUF_POOL_USAGE=y
+
# Uncomment to enable "INFO" level net_buf logging
#CONFIG_NET_LOG=y
#CONFIG_NET_DEBUG_NET_BUF=y