Lines Matching refs:sock
22 uint16_t modem_socket_next_packet_size(struct modem_socket_config *cfg, struct modem_socket *sock) in modem_socket_next_packet_size() argument
28 if (!sock || !sock->packet_count) { in modem_socket_next_packet_size()
32 total = sock->packet_sizes[0]; in modem_socket_next_packet_size()
39 static uint16_t modem_socket_packet_get_total(struct modem_socket *sock) in modem_socket_packet_get_total() argument
44 if (!sock || !sock->packet_count) { in modem_socket_packet_get_total()
48 for (i = 0; i < sock->packet_count; i++) { in modem_socket_packet_get_total()
49 total += sock->packet_sizes[i]; in modem_socket_packet_get_total()
55 static int modem_socket_packet_drop_first(struct modem_socket *sock) in modem_socket_packet_drop_first() argument
59 if (!sock || !sock->packet_count) { in modem_socket_packet_drop_first()
63 sock->packet_count--; in modem_socket_packet_drop_first()
64 for (i = 0; i < sock->packet_count; i++) { in modem_socket_packet_drop_first()
65 sock->packet_sizes[i] = sock->packet_sizes[i + 1]; in modem_socket_packet_drop_first()
68 sock->packet_sizes[sock->packet_count] = 0U; in modem_socket_packet_drop_first()
72 int modem_socket_packet_size_update(struct modem_socket_config *cfg, struct modem_socket *sock, in modem_socket_packet_size_update() argument
77 if (!sock) { in modem_socket_packet_size_update()
84 new_total += modem_socket_packet_get_total(sock); in modem_socket_packet_size_update()
89 sock->packet_count = 0U; in modem_socket_packet_size_update()
90 sock->packet_sizes[0] = 0U; in modem_socket_packet_size_update()
91 k_poll_signal_reset(&sock->sig_data_ready); in modem_socket_packet_size_update()
96 old_total = modem_socket_packet_get_total(sock); in modem_socket_packet_size_update()
104 while (old_total > new_total && sock->packet_count > 0) { in modem_socket_packet_size_update()
106 if (old_total - new_total < sock->packet_sizes[0]) { in modem_socket_packet_size_update()
107 sock->packet_sizes[0] -= old_total - new_total; in modem_socket_packet_size_update()
111 old_total -= sock->packet_sizes[0]; in modem_socket_packet_size_update()
112 modem_socket_packet_drop_first(sock); in modem_socket_packet_size_update()
119 if (sock->packet_count >= CONFIG_MODEM_SOCKET_PACKET_COUNT) { in modem_socket_packet_size_update()
125 sock->packet_sizes[sock->packet_count] = new_total - old_total; in modem_socket_packet_size_update()
126 sock->packet_count++; in modem_socket_packet_size_update()
133 if (sock->packet_sizes[0]) { in modem_socket_packet_size_update()
134 k_poll_signal_raise(&sock->sig_data_ready, 0); in modem_socket_packet_size_update()
136 k_poll_signal_reset(&sock->sig_data_ready); in modem_socket_packet_size_update()
232 struct modem_socket *sock = modem_socket_from_fd(cfg, sock_fd); in modem_socket_put() local
234 if (!sock) { in modem_socket_put()
240 sock->id = cfg->base_socket_id - 1; in modem_socket_put()
241 sock->sock_fd = -1; in modem_socket_put()
242 sock->is_waiting = false; in modem_socket_put()
243 sock->is_connected = false; in modem_socket_put()
244 (void)memset(&sock->src, 0, sizeof(struct sockaddr)); in modem_socket_put()
245 (void)memset(&sock->dst, 0, sizeof(struct sockaddr)); in modem_socket_put()
246 memset(&sock->packet_sizes, 0, sizeof(sock->packet_sizes)); in modem_socket_put()
247 sock->packet_count = 0; in modem_socket_put()
248 k_sem_reset(&sock->sem_data_ready); in modem_socket_put()
249 k_poll_signal_reset(&sock->sig_data_ready); in modem_socket_put()
268 struct modem_socket *sock; in modem_socket_poll() local
279 sock = modem_socket_from_fd(cfg, fds[i].fd); in modem_socket_poll()
280 if (sock) { in modem_socket_poll()
290 K_POLL_MODE_NOTIFY_ONLY, &sock->sig_data_ready); in modem_socket_poll()
291 if (sock->packet_sizes[0] > 0U) { in modem_socket_poll()
313 sock = modem_socket_from_fd(cfg, fds[i].fd); in modem_socket_poll()
314 if (!sock) { in modem_socket_poll()
325 } else if ((fds[i].events & ZSOCK_POLLIN) && (sock->packet_sizes[0] > 0U)) { in modem_socket_poll()
341 int modem_socket_poll_prepare(struct modem_socket_config *cfg, struct modem_socket *sock, in modem_socket_poll_prepare() argument
352 &sock->sig_data_ready); in modem_socket_poll_prepare()
369 int modem_socket_poll_update(struct modem_socket *sock, struct zsock_pollfd *pfd, in modem_socket_poll_update() argument
372 ARG_UNUSED(sock); in modem_socket_poll_update()
392 void modem_socket_wait_data(struct modem_socket_config *cfg, struct modem_socket *sock) in modem_socket_wait_data() argument
395 sock->is_waiting = true; in modem_socket_wait_data()
398 k_sem_take(&sock->sem_data_ready, K_FOREVER); in modem_socket_wait_data()
401 void modem_socket_data_ready(struct modem_socket_config *cfg, struct modem_socket *sock) in modem_socket_data_ready() argument
405 if (sock->is_waiting) { in modem_socket_data_ready()
407 sock->is_waiting = false; in modem_socket_data_ready()
408 k_sem_give(&sock->sem_data_ready); in modem_socket_data_ready()
446 const struct modem_socket *sock) in modem_socket_is_allocated() argument
449 if (cfg->assign_id == false && sock->id == (cfg->base_socket_id + cfg->sockets_len)) { in modem_socket_is_allocated()
454 return modem_socket_id_is_assigned(cfg, sock); in modem_socket_is_allocated()
458 const struct modem_socket *sock) in modem_socket_id_is_assigned() argument
461 if ((cfg->base_socket_id <= sock->id) && in modem_socket_id_is_assigned()
462 (sock->id < (cfg->base_socket_id + cfg->sockets_len))) { in modem_socket_id_is_assigned()
469 struct modem_socket *sock, int id) in modem_socket_id_assign() argument
477 if (modem_socket_id_is_assigned(cfg, sock)) { in modem_socket_id_assign()
487 sock->id = id; in modem_socket_id_assign()