diff --git a/drivers/modem/modem_socket.c b/drivers/modem/modem_socket.c index 92522c72e54..c388c24ad53 100644 --- a/drivers/modem/modem_socket.c +++ b/drivers/modem/modem_socket.c @@ -19,6 +19,24 @@ * Packet Size Support Functions */ +u16_t modem_socket_next_packet_size(struct modem_socket_config *cfg, + struct modem_socket *sock) +{ + u16_t total = 0U; + + k_sem_take(&cfg->sem_lock, K_FOREVER); + + if (!sock || !sock->packet_count) { + goto exit; + } + + total = sock->packet_sizes[0]; + +exit: + k_sem_give(&cfg->sem_lock); + return total; +} + static u16_t modem_socket_packet_get_total(struct modem_socket *sock) { int i; diff --git a/drivers/modem/modem_socket.h b/drivers/modem/modem_socket.h index 4b3e5e7a7d2..edda1f1085c 100644 --- a/drivers/modem/modem_socket.h +++ b/drivers/modem/modem_socket.h @@ -59,7 +59,9 @@ struct modem_socket_config { const struct socket_op_vtable *vtable; }; -/* return total size of remaining packets */ +/* return size of the first packet */ +u16_t modem_socket_next_packet_size(struct modem_socket_config *cfg, + struct modem_socket *sock); int modem_socket_packet_size_update(struct modem_socket_config *cfg, struct modem_socket *sock, int new_total); int modem_socket_get(struct modem_socket_config *cfg, int family, int type,