Skip to content

Commit 600f5af

Browse files
committed
zephyr/modusocket: bind, connect, listen, accept: Swtich to native sockets.
1 parent 6c55cda commit 600f5af

1 file changed

Lines changed: 12 additions & 7 deletions

File tree

zephyr/modusocket.c

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,9 @@ STATIC mp_obj_t socket_bind(mp_obj_t self_in, mp_obj_t addr_in) {
278278
struct sockaddr sockaddr;
279279
parse_inet_addr(socket, addr_in, &sockaddr);
280280

281-
RAISE_ERRNO(net_context_bind(socket->ctx, &sockaddr, sizeof(sockaddr)));
281+
int res = zsock_bind(socket->ctx, &sockaddr, sizeof(sockaddr));
282+
RAISE_SOCK_ERRNO(res);
283+
282284
// For DGRAM socket, we expect to receive packets after call to bind(),
283285
// but for STREAM socket, next expected operation is listen(), which
284286
// doesn't work if recv callback is set.
@@ -297,7 +299,9 @@ STATIC mp_obj_t socket_connect(mp_obj_t self_in, mp_obj_t addr_in) {
297299
struct sockaddr sockaddr;
298300
parse_inet_addr(socket, addr_in, &sockaddr);
299301

300-
RAISE_ERRNO(net_context_connect(socket->ctx, &sockaddr, sizeof(sockaddr), NULL, K_FOREVER, NULL));
302+
int res = zsock_connect(socket->ctx, &sockaddr, sizeof(sockaddr));
303+
RAISE_SOCK_ERRNO(res);
304+
301305
DEBUG_printf("Setting recv cb after connect()\n");
302306
RAISE_ERRNO(net_context_recv(socket->ctx, sock_received_cb, K_NO_WAIT, socket));
303307
return mp_const_none;
@@ -309,8 +313,9 @@ STATIC mp_obj_t socket_listen(mp_obj_t self_in, mp_obj_t backlog_in) {
309313
socket_check_closed(socket);
310314

311315
mp_int_t backlog = mp_obj_get_int(backlog_in);
312-
RAISE_ERRNO(net_context_listen(socket->ctx, backlog));
313-
RAISE_ERRNO(net_context_accept(socket->ctx, sock_accepted_cb, K_NO_WAIT, socket));
316+
int res = zsock_listen(socket->ctx, backlog);
317+
RAISE_SOCK_ERRNO(res);
318+
314319
return mp_const_none;
315320
}
316321
STATIC MP_DEFINE_CONST_FUN_OBJ_2(socket_listen_obj, socket_listen);
@@ -319,9 +324,9 @@ STATIC mp_obj_t socket_accept(mp_obj_t self_in) {
319324
socket_obj_t *socket = self_in;
320325
socket_check_closed(socket);
321326

322-
struct net_context *ctx = k_fifo_get(&SOCK_FIELD(socket, accept_q), K_FOREVER);
323-
// Was overwritten by fifo
324-
ctx->refcount = 1;
327+
struct sockaddr sockaddr;
328+
socklen_t addrlen = sizeof(sockaddr);
329+
void *ctx = zsock_accept(socket->ctx, &sockaddr, &addrlen);
325330

326331
socket_obj_t *socket2 = socket_new();
327332
socket2->ctx = ctx;

0 commit comments

Comments
 (0)