From 80ccac1fe820da55069fe53479994c2912bd1667 Mon Sep 17 00:00:00 2001 From: IFX-Anusha Date: Thu, 3 Oct 2024 12:02:25 +0530 Subject: [PATCH] ports/psoc6: Remove unwanted files. Signed-off-by: IFX-Anusha --- ports/psoc6/Makefile | 1 - ports/psoc6/irq.h | 74 ------------------------------- ports/psoc6/lwip_inc/lwipopts.h | 4 +- ports/psoc6/modsocket.c | 78 +++------------------------------ ports/psoc6/mphalport.c | 1 + ports/psoc6/mphalport.h | 14 +----- 6 files changed, 9 insertions(+), 163 deletions(-) delete mode 100644 ports/psoc6/irq.h diff --git a/ports/psoc6/Makefile b/ports/psoc6/Makefile index 5ce93f4adf34..d6839d1bd500 100644 --- a/ports/psoc6/Makefile +++ b/ports/psoc6/Makefile @@ -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 diff --git a/ports/psoc6/irq.h b/ports/psoc6/irq.h deleted file mode 100644 index 6156d047235b..000000000000 --- a/ports/psoc6/irq.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -#ifndef MICROPY_INCLUDED_PSOC6_IRQ_H -#define MICROPY_INCLUDED_PSOC6_IRQ_H - -#define NVIC_PRIORITYGROUP_4 ((uint32_t)0x00000003) - -static inline uint32_t query_irq(void) { - return __get_PRIMASK(); -} - -static inline uint32_t raise_irq_pri(uint32_t pri) { - uint32_t basepri = __get_BASEPRI(); - // If non-zero, the processor does not process any exception with a - // priority value greater than or equal to BASEPRI. - // When writing to BASEPRI_MAX the write goes to BASEPRI only if either: - // - Rn is non-zero and the current BASEPRI value is 0 - // - Rn is non-zero and less than the current BASEPRI value - pri <<= (8 - __NVIC_PRIO_BITS); - __ASM volatile ("msr basepri_max, %0" : : "r" (pri) : "memory"); - return basepri; -} - -// "basepri" should be the value returned from raise_irq_pri -static inline void restore_irq_pri(uint32_t basepri) { - __set_BASEPRI(basepri); -} - -// IRQ priority definitions. -// -// Lower number implies higher interrupt priority. -// -// The default priority grouping used in this port is NVIC_PRIORITYGROUP_4. -// This corresponds to 4 bits for the priority field and 0 bits for the -// sub-priority field (which means that for all intents and purposes the -// sub-priorities below are ignored). -// -// While a given interrupt is being processed, only higher priority (lower number) -// interrupts will preempt a given interrupt. If sub-priorities are active -// then the sub-priority determines the order that pending interrupts of -// a given priority are executed. This is only meaningful if 2 or more -// interrupts of the same priority are pending at the same time. -// -// The following interrupts are arranged from highest priority to lowest -// priority to make it a bit easier to figure out. - -// PENDSV should be at the lowst priority so that other interrupts complete -// before exception is raised. -#define IRQ_PRI_PENDSV NVIC_EncodePriority(NVIC_PRIORITYGROUP_4, 10, 0) - -#endif // MICROPY_INCLUDED_PSOC6_IRQ_H diff --git a/ports/psoc6/lwip_inc/lwipopts.h b/ports/psoc6/lwip_inc/lwipopts.h index eec0f5eaa1a3..7b3895ca5c1b 100644 --- a/ports/psoc6/lwip_inc/lwipopts.h +++ b/ports/psoc6/lwip_inc/lwipopts.h @@ -36,7 +36,7 @@ #define MEM_ALIGNMENT (4) #define LWIP_RAW (1) -#define NO_SYS 0 +#define NO_SYS (0) // // Enable IPV4 networking @@ -262,8 +262,6 @@ */ #define LWIP_NETIF_API 1 -// #define TCP_LISTEN_BACKLOG 1 - #define LWIP_DNS (1) #define LWIP_NETIF_TX_SINGLE_PBUF (1) diff --git a/ports/psoc6/modsocket.c b/ports/psoc6/modsocket.c index 864267e8d976..becc573bd1af 100644 --- a/ports/psoc6/modsocket.c +++ b/ports/psoc6/modsocket.c @@ -1,16 +1,12 @@ /* * 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 - * Copyright (c) 2015 Galen Hazelwood + * Based on ports/esp32/modsocket.c + * Copyright (c) 2016, 2017 Nick Moore @mnemote * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -83,7 +79,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); @@ -156,62 +151,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; @@ -235,10 +174,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); @@ -288,7 +223,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(); @@ -408,7 +343,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; } } @@ -425,7 +360,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; } } @@ -978,7 +913,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; diff --git a/ports/psoc6/mphalport.c b/ports/psoc6/mphalport.c index ce35b1d47436..0a9e21432a0f 100644 --- a/ports/psoc6/mphalport.c +++ b/ports/psoc6/mphalport.c @@ -72,6 +72,7 @@ void mp_hal_delay_us(mp_uint_t us) { cyhal_system_delay_us(us); } + // Issues may arise if time is incremented only each second. // Would require proper ns count from epoch of clock the source (see also "extmod/vfs_lfs.c", function "lfs_get_mtime" and "mphalport.c", function "mp_hal_time_ns") uint64_t mp_hal_time_ns(void) { diff --git a/ports/psoc6/mphalport.h b/ports/psoc6/mphalport.h index f9eeda5f8195..aaf7d992d702 100644 --- a/ports/psoc6/mphalport.h +++ b/ports/psoc6/mphalport.h @@ -33,12 +33,12 @@ #include "py/mpconfig.h" #include "py/runtime.h" + // MTB includes #include "cyhal.h" // port-specific includes -#include "irq.h" #define MICROPY_BEGIN_ATOMIC_SECTION() cyhal_system_critical_section_enter() #define MICROPY_END_ATOMIC_SECTION(state) cyhal_system_critical_section_exit(state) @@ -46,18 +46,6 @@ // #define MICROPY_BEGIN_ATOMIC_SECTION() (0) // #define MICROPY_END_ATOMIC_SECTION(state) {(void)state;} -// For regular code that wants to prevent "background tasks" from running. -// These background tasks (LWIP) run in PENDSV context. -#define MICROPY_PY_PENDSV_ENTER uint32_t atomic_state = raise_irq_pri(IRQ_PRI_PENDSV); -#define MICROPY_PY_PENDSV_REENTER atomic_state = raise_irq_pri(IRQ_PRI_PENDSV); -#define MICROPY_PY_PENDSV_EXIT restore_irq_pri(atomic_state); - -// Prevent the "lwIP task" from running. -#define MICROPY_PY_LWIP_ENTER MICROPY_PY_PENDSV_ENTER -#define MICROPY_PY_LWIP_REENTER MICROPY_PY_PENDSV_REENTER -#define MICROPY_PY_LWIP_EXIT MICROPY_PY_PENDSV_EXIT - - #define MP_HAL_PIN_FMT "%u" #define mp_hal_pin_obj_t uint