Skip to content

Commit

Permalink
ports/psoc6: Cleanup code.
Browse files Browse the repository at this point in the history
Signed-off-by: IFX-Anusha <[email protected]>
  • Loading branch information
IFX-Anusha committed Oct 3, 2024
1 parent 41a1e51 commit 83b2d2d
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 71 deletions.
1 change: 0 additions & 1 deletion ports/psoc6/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,6 @@ ifeq ($(MICROPY_PSOC6_LWIP),1)
netutils/netutils.c \
netutils/trace.c \
)
CFLAGS += -DMICROPY_PY_LWIP=0
MOD_SRC_C += modsocket.c
endif

Expand Down
2 changes: 1 addition & 1 deletion ports/psoc6/lwip_inc/lwipopts.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
#define MEM_ALIGNMENT (4)

#define LWIP_RAW (1)
#define NO_SYS 0
#define NO_SYS (0)

//
// Enable IPV4 networking
Expand Down
73 changes: 4 additions & 69 deletions ports/psoc6/modsocket.c
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* Development of the code in this file was sponsored by Microbric Pty Ltd
* and Mnemote Pty Ltd
*
* The MIT License (MIT)
*
* Copyright (c) 2016, 2017 Nick Moore @mnemote
* Copyright (c) 2022-2024 Infineon Technologies AG
*
* Based on extmod/modlwip.c
* Copyright (c) 2013, 2014 Damien P. George
Expand Down Expand Up @@ -83,7 +80,6 @@ typedef struct _socket_obj_t {
#endif
} socket_obj_t;

// static const char *TAG = "modsocket";

void _socket_settimeout(socket_obj_t *sock, uint64_t timeout_ms);

Expand Down Expand Up @@ -156,62 +152,6 @@ static inline void check_for_exceptions(void) {
mp_handle_pending(true);
}

#if MICROPY_HW_ENABLE_MDNS_QUERIES
// This function mimics lwip_getaddrinfo, but makes an mDNS query
static int mdns_getaddrinfo(const char *host_str, const char *port_str,
const struct addrinfo *hints, struct addrinfo **res) {
int host_len = strlen(host_str);
const int local_len = sizeof(MDNS_LOCAL_SUFFIX) - 1;
if (host_len <= local_len ||
strcasecmp(host_str + host_len - local_len, MDNS_LOCAL_SUFFIX) != 0) {
return 0;
}

// mDNS query
char host_no_local[host_len - local_len + 1];
memcpy(host_no_local, host_str, host_len - local_len);
host_no_local[host_len - local_len] = '\0';

esp_ip4_addr_t addr = {0};

esp_err_t err = mdns_query_a(host_no_local, MDNS_QUERY_TIMEOUT_MS, &addr);
if (err != ESP_OK) {
if (err == ESP_ERR_NOT_FOUND) {
*res = NULL;
return 0;
}
*res = NULL;
return err;
}

struct addrinfo *ai = memp_malloc(MEMP_NETDB);
if (ai == NULL) {
*res = NULL;
return EAI_MEMORY;
}
memset(ai, 0, sizeof(struct addrinfo) + sizeof(struct sockaddr_storage));

struct sockaddr_in *sa = (struct sockaddr_in *)((uint8_t *)ai + sizeof(struct addrinfo));
inet_addr_from_ip4addr(&sa->sin_addr, &addr);
sa->sin_family = AF_INET;
sa->sin_len = sizeof(struct sockaddr_in);
sa->sin_port = lwip_htons((u16_t)atoi(port_str));
ai->ai_family = AF_INET;
ai->ai_canonname = ((char *)sa + sizeof(struct sockaddr_storage));
memcpy(ai->ai_canonname, host_str, host_len + 1);
ai->ai_addrlen = sizeof(struct sockaddr_storage);
ai->ai_addr = (struct sockaddr *)sa;
ai->ai_socktype = SOCK_STREAM;
if (hints) {
ai->ai_socktype = hints->ai_socktype;
ai->ai_protocol = hints->ai_protocol;
}

*res = ai;
return 0;
}
#endif // MICROPY_HW_ENABLE_MDNS_QUERIES

static void _getaddrinfo_inner(const mp_obj_t host, const mp_obj_t portx,
const struct addrinfo *hints, struct addrinfo **res) {
int retval = 0;
Expand All @@ -235,10 +175,6 @@ static void _getaddrinfo_inner(const mp_obj_t host, const mp_obj_t portx,

MP_THREAD_GIL_EXIT();

#if MICROPY_HW_ENABLE_MDNS_QUERIES
retval = mdns_getaddrinfo(host_str, port_str, hints, res);
#endif

if (retval == 0 && *res == NULL) {
// Normal query
retval = lwip_getaddrinfo(host_str, port_str, hints, res);
Expand Down Expand Up @@ -288,7 +224,7 @@ static mp_obj_t socket_make_new(const mp_obj_type_t *type_in, size_t n_args, siz

sock->fd = lwip_socket(sock->domain, sock->type, sock->proto);
if (sock->fd < 0 && errno == ENFILE) {
// ESP32 LWIP has a hard socket limit, ENFILE is returned when this is
// LWIP has a hard socket limit, ENFILE is returned when this is
// reached. Similar to the logic elsewhere for MemoryError, try running
// GC before failing outright.
gc_collect();
Expand Down Expand Up @@ -408,7 +344,7 @@ static mp_obj_t socket_connect(const mp_obj_t arg0, const mp_obj_t arg1) {
// - Allows emulating a connect timeout, which is not supported by LWIP or
// required by POSIX but is normal behaviour for CPython.
if (fcntl(self->fd, F_SETFL, flags | O_NONBLOCK) < 0) {
// ESP_LOGE(TAG, "fcntl set failed %d", errno); // Unexpected internal failure
mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("fcntl set failed %d"), errno);
raise_err = errno;
}
}
Expand All @@ -425,7 +361,7 @@ static mp_obj_t socket_connect(const mp_obj_t arg0, const mp_obj_t arg1) {
// Set the socket back to blocking. We can still pass it to select() in this state.
int r = fcntl(self->fd, F_SETFL, flags);
if (r != 0 && (raise_err == 0 || raise_err == EINPROGRESS)) {
// ESP_LOGE(TAG, "fcntl restore failed %d", errno); // Unexpected internal failure
mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("fcntl restore failed %d"), errno);
raise_err = errno;
}
}
Expand Down Expand Up @@ -978,7 +914,6 @@ static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(psoc6_socket_getaddrinfo_obj, 2, 6, p
static mp_obj_t psoc6_socket_initialize() {
static int initialized = 0;
if (!initialized) {
// ESP_LOGI(TAG, "Initializing");
cy_network_init();

initialized = 1;
Expand Down

0 comments on commit 83b2d2d

Please sign in to comment.