diff --git a/.cproject b/.cproject
index cc7b75f..c4c2695 100644
--- a/.cproject
+++ b/.cproject
@@ -120,13 +120,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
@@ -239,12 +277,20 @@
+
+
+
+
+
+
+
+
-
+
-
+
@@ -254,12 +300,4 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..df16fe6
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,18 @@
+[submodule "stm32components"]
+ path = stm32components
+ url = zwsd@192.168.1.3:zsdk_stm32_v1/stm32components.git
+[submodule "stm32basic"]
+ path = stm32basic
+ url = zwsd@192.168.1.3:zsdk_stm32_v1/stm32basic.git
+[submodule "stm32halport"]
+ path = stm32halport
+ url = zwsd@192.168.1.3:zsdk_stm32_v1/stm32halport.git
+[submodule "Middlewares"]
+ path = Middlewares
+ url = zwsd@192.168.1.3:zsdk_stm32_v1/Middlewares.git
+[submodule "Drivers"]
+ path = Drivers
+ url = zwsd@192.168.1.3:zsdk_stm32_v1/Drivers.git
+[submodule "Core"]
+ path = Core
+ url = zwsd@192.168.1.3:zsdk_stm32_v1/Core.git
diff --git a/Core b/Core
new file mode 160000
index 0000000..e6b8750
--- /dev/null
+++ b/Core
@@ -0,0 +1 @@
+Subproject commit e6b8750f142771f180e87203e8a8ab65ef4138b3
diff --git a/Drivers b/Drivers
new file mode 160000
index 0000000..e71ddbc
--- /dev/null
+++ b/Drivers
@@ -0,0 +1 @@
+Subproject commit e71ddbca4e7fc61b82b6b1f03f66b7cfbffb0495
diff --git a/LWIP/App/lwip.c b/LWIP/App/lwip.c
deleted file mode 100644
index f5aa6e5..0000000
--- a/LWIP/App/lwip.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/* USER CODE BEGIN Header */
-/**
- ******************************************************************************
- * File Name : LWIP.c
- * Description : This file provides initialization code for LWIP
- * middleWare.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2024 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-/* USER CODE END Header */
-
-/* Includes ------------------------------------------------------------------*/
-#include "lwip.h"
-#include "lwip/init.h"
-#include "lwip/netif.h"
-#if defined ( __CC_ARM ) /* MDK ARM Compiler */
-#include "lwip/sio.h"
-#endif /* MDK ARM Compiler */
-#include "ethernetif.h"
-
-/* USER CODE BEGIN 0 */
-
-/* USER CODE END 0 */
-/* Private function prototypes -----------------------------------------------*/
-static void ethernet_link_status_updated(struct netif *netif);
-/* ETH Variables initialization ----------------------------------------------*/
-void Error_Handler(void);
-
-/* USER CODE BEGIN 1 */
-
-/* USER CODE END 1 */
-
-/* Variables Initialization */
-struct netif gnetif;
-ip4_addr_t ipaddr;
-ip4_addr_t netmask;
-ip4_addr_t gw;
-uint8_t IP_ADDRESS[4];
-uint8_t NETMASK_ADDRESS[4];
-uint8_t GATEWAY_ADDRESS[4];
-
-/* USER CODE BEGIN 2 */
-
-/* USER CODE END 2 */
-
-/**
- * LwIP initialization function
- */
-void MX_LWIP_Init(void)
-{
- /* IP addresses initialization */
- IP_ADDRESS[0] = 192;
- IP_ADDRESS[1] = 168;
- IP_ADDRESS[2] = 8;
- IP_ADDRESS[3] = 10;
- NETMASK_ADDRESS[0] = 255;
- NETMASK_ADDRESS[1] = 255;
- NETMASK_ADDRESS[2] = 255;
- NETMASK_ADDRESS[3] = 255;
- GATEWAY_ADDRESS[0] = 192;
- GATEWAY_ADDRESS[1] = 168;
- GATEWAY_ADDRESS[2] = 8;
- GATEWAY_ADDRESS[3] = 1;
-
-/* USER CODE BEGIN IP_ADDRESSES */
-/* USER CODE END IP_ADDRESSES */
-
- /* Initilialize the LwIP stack with RTOS */
- tcpip_init( NULL, NULL );
-
- /* IP addresses initialization without DHCP (IPv4) */
- IP4_ADDR(&ipaddr, IP_ADDRESS[0], IP_ADDRESS[1], IP_ADDRESS[2], IP_ADDRESS[3]);
- IP4_ADDR(&netmask, NETMASK_ADDRESS[0], NETMASK_ADDRESS[1] , NETMASK_ADDRESS[2], NETMASK_ADDRESS[3]);
- IP4_ADDR(&gw, GATEWAY_ADDRESS[0], GATEWAY_ADDRESS[1], GATEWAY_ADDRESS[2], GATEWAY_ADDRESS[3]);
-
- /* add the network interface (IPv4/IPv6) with RTOS */
- netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, &tcpip_input);
-
- /* Registers the default network interface */
- netif_set_default(&gnetif);
-
- if (netif_is_link_up(&gnetif))
- {
- /* When the netif is fully configured this function must be called */
- netif_set_up(&gnetif);
- }
- else
- {
- /* When the netif link is down this function must be called */
- netif_set_down(&gnetif);
- }
-
- /* Set the link callback function, this function is called on change of link status*/
- netif_set_link_callback(&gnetif, ethernet_link_status_updated);
-
- /* Create the Ethernet link handler thread */
-/* USER CODE BEGIN H7_OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
- osThreadDef(EthLink, ethernet_link_thread, osPriorityBelowNormal, 0, configMINIMAL_STACK_SIZE *2);
- osThreadCreate (osThread(EthLink), &gnetif);
-/* USER CODE END H7_OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
-
-/* USER CODE BEGIN 3 */
-
-/* USER CODE END 3 */
-}
-
-#ifdef USE_OBSOLETE_USER_CODE_SECTION_4
-/* Kept to help code migration. (See new 4_1, 4_2... sections) */
-/* Avoid to use this user section which will become obsolete. */
-/* USER CODE BEGIN 4 */
-/* USER CODE END 4 */
-#endif
-
-/**
- * @brief Notify the User about the network interface config status
- * @param netif: the network interface
- * @retval None
- */
-static void ethernet_link_status_updated(struct netif *netif)
-{
- if (netif_is_up(netif))
- {
-/* USER CODE BEGIN 5 */
-/* USER CODE END 5 */
- }
- else /* netif is down */
- {
-/* USER CODE BEGIN 6 */
-/* USER CODE END 6 */
- }
-}
-
-#if defined ( __CC_ARM ) /* MDK ARM Compiler */
-/**
- * Opens a serial device for communication.
- *
- * @param devnum device number
- * @return handle to serial device if successful, NULL otherwise
- */
-sio_fd_t sio_open(u8_t devnum)
-{
- sio_fd_t sd;
-
-/* USER CODE BEGIN 7 */
- sd = 0; // dummy code
-/* USER CODE END 7 */
-
- return sd;
-}
-
-/**
- * Sends a single character to the serial device.
- *
- * @param c character to send
- * @param fd serial device handle
- *
- * @note This function will block until the character can be sent.
- */
-void sio_send(u8_t c, sio_fd_t fd)
-{
-/* USER CODE BEGIN 8 */
-/* USER CODE END 8 */
-}
-
-/**
- * Reads from the serial device.
- *
- * @param fd serial device handle
- * @param data pointer to data buffer for receiving
- * @param len maximum length (in bytes) of data to receive
- * @return number of bytes actually received - may be 0 if aborted by sio_read_abort
- *
- * @note This function will block until data can be received. The blocking
- * can be cancelled by calling sio_read_abort().
- */
-u32_t sio_read(sio_fd_t fd, u8_t *data, u32_t len)
-{
- u32_t recved_bytes;
-
-/* USER CODE BEGIN 9 */
- recved_bytes = 0; // dummy code
-/* USER CODE END 9 */
- return recved_bytes;
-}
-
-/**
- * Tries to read from the serial device. Same as sio_read but returns
- * immediately if no data is available and never blocks.
- *
- * @param fd serial device handle
- * @param data pointer to data buffer for receiving
- * @param len maximum length (in bytes) of data to receive
- * @return number of bytes actually received
- */
-u32_t sio_tryread(sio_fd_t fd, u8_t *data, u32_t len)
-{
- u32_t recved_bytes;
-
-/* USER CODE BEGIN 10 */
- recved_bytes = 0; // dummy code
-/* USER CODE END 10 */
- return recved_bytes;
-}
-#endif /* MDK ARM Compiler */
-
diff --git a/LWIP/App/lwip.h b/LWIP/App/lwip.h
deleted file mode 100644
index b14adc0..0000000
--- a/LWIP/App/lwip.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* USER CODE BEGIN Header */
-/**
- ******************************************************************************
- * File Name : LWIP.h
- * Description : This file provides code for the configuration
- * of the LWIP.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2024 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- *************************************************************************
-
- */
-/* USER CODE END Header */
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __mx_lwip_H
-#define __mx_lwip_H
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "lwip/opt.h"
-#include "lwip/mem.h"
-#include "lwip/memp.h"
-#include "netif/etharp.h"
-#include "lwip/dhcp.h"
-#include "lwip/netif.h"
-#include "lwip/timeouts.h"
-#include "ethernetif.h"
-
-/* Includes for RTOS ---------------------------------------------------------*/
-#if WITH_RTOS
-#include "lwip/tcpip.h"
-#endif /* WITH_RTOS */
-
-/* USER CODE BEGIN 0 */
-
-/* USER CODE END 0 */
-
-/* Global Variables ----------------------------------------------------------*/
-extern ETH_HandleTypeDef heth;
-
-/* LWIP init function */
-void MX_LWIP_Init(void);
-
-#if !WITH_RTOS
-/* USER CODE BEGIN 1 */
-/* Function defined in lwip.c to:
- * - Read a received packet from the Ethernet buffers
- * - Send it to the lwIP stack for handling
- * - Handle timeouts if NO_SYS_NO_TIMERS not set
- */
-void MX_LWIP_Process(void);
-
-/* USER CODE END 1 */
-#endif /* WITH_RTOS */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /*__ mx_lwip_H */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/LWIP/Target/ethernetif.c b/LWIP/Target/ethernetif.c
deleted file mode 100644
index f9a2c5f..0000000
--- a/LWIP/Target/ethernetif.c
+++ /dev/null
@@ -1,897 +0,0 @@
-/* USER CODE BEGIN Header */
-/**
- ******************************************************************************
- * File Name : ethernetif.c
- * Description : This file provides code for the configuration
- * of the ethernetif.c MiddleWare.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2023 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-/* USER CODE END Header */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-#include "lwip/opt.h"
-#include "lwip/timeouts.h"
-#include "netif/ethernet.h"
-#include "netif/etharp.h"
-#include "lwip/ethip6.h"
-#include "ethernetif.h"
-#include "lan8742.h"
-#include
-#include "cmsis_os.h"
-#include "lwip/tcpip.h"
-
-/* Within 'USER CODE' section, code will be kept by default at each generation */
-/* USER CODE BEGIN 0 */
-
-/* USER CODE END 0 */
-
-/* Private define ------------------------------------------------------------*/
-/* The time to block waiting for input. */
-#define TIME_WAITING_FOR_INPUT ( portMAX_DELAY )
-/* USER CODE BEGIN OS_THREAD_STACK_SIZE_WITH_RTOS */
-/* Stack size of the interface thread */
-#define INTERFACE_THREAD_STACK_SIZE ( 350 )
-/* USER CODE END OS_THREAD_STACK_SIZE_WITH_RTOS */
-/* Network interface name */
-#define IFNAME0 's'
-#define IFNAME1 't'
-
-/* ETH Setting */
-#define ETH_DMA_TRANSMIT_TIMEOUT ( 20U )
-#define ETH_TX_BUFFER_MAX ((ETH_TX_DESC_CNT) * 2U)
-
-/* USER CODE BEGIN 1 */
-
-/* USER CODE END 1 */
-
-/* Private variables ---------------------------------------------------------*/
-/*
-@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx buffers will be allocated from LwIP stack memory heap,
- then passed to ETH HAL driver.
- - Tx buffers will be allocated from LwIP stack memory heap,
- then passed to ETH HAL driver.
-
-@Notes:
- 1.a. ETH DMA Rx descriptors must be contiguous, the default count is 4,
- to customize it please redefine ETH_RX_DESC_CNT in ETH GUI (Rx Descriptor Length)
- so that updated value will be generated in stm32xxxx_hal_conf.h
- 1.b. ETH DMA Tx descriptors must be contiguous, the default count is 4,
- to customize it please redefine ETH_TX_DESC_CNT in ETH GUI (Tx Descriptor Length)
- so that updated value will be generated in stm32xxxx_hal_conf.h
-
- 2.a. Rx Buffers number must be between ETH_RX_DESC_CNT and 2*ETH_RX_DESC_CNT
- 2.b. Rx Buffers must have the same size: ETH_RX_BUF_SIZE, this value must
- passed to ETH DMA in the init field (heth.Init.RxBuffLen)
- 2.c The RX Ruffers addresses and sizes must be properly defined to be aligned
- to L1-CACHE line size (32 bytes).
-*/
-
-/* Data Type Definitions */
-typedef enum
-{
- RX_ALLOC_OK = 0x00,
- RX_ALLOC_ERROR = 0x01
-} RxAllocStatusTypeDef;
-
-typedef struct
-{
- struct pbuf_custom pbuf_custom;
- uint8_t buff[(ETH_RX_BUF_SIZE + 31) & ~31] __ALIGNED(32);
-} RxBuff_t;
-
-/* Memory Pool Declaration */
-#define ETH_RX_BUFFER_CNT 12U
-LWIP_MEMPOOL_DECLARE(RX_POOL, ETH_RX_BUFFER_CNT, sizeof(RxBuff_t), "Zero-copy RX PBUF pool");
-
-/* Variable Definitions */
-static uint8_t RxAllocStatus;
-
-ETH_DMADescTypeDef DMARxDscrTab[ETH_RX_DESC_CNT]; /* Ethernet Rx DMA Descriptors */
-ETH_DMADescTypeDef DMATxDscrTab[ETH_TX_DESC_CNT]; /* Ethernet Tx DMA Descriptors */
-
-/* USER CODE BEGIN 2 */
-
-/* USER CODE END 2 */
-
-osSemaphoreId RxPktSemaphore = NULL; /* Semaphore to signal incoming packets */
-osSemaphoreId TxPktSemaphore = NULL; /* Semaphore to signal transmit packet complete */
-
-/* Global Ethernet handle */
-ETH_HandleTypeDef heth;
-ETH_TxPacketConfig TxConfig;
-
-/* Private function prototypes -----------------------------------------------*/
-static void ethernetif_input(void const * argument);
-int32_t ETH_PHY_IO_Init(void);
-int32_t ETH_PHY_IO_DeInit (void);
-int32_t ETH_PHY_IO_ReadReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t *pRegVal);
-int32_t ETH_PHY_IO_WriteReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t RegVal);
-int32_t ETH_PHY_IO_GetTick(void);
-
-lan8742_Object_t LAN8742;
-lan8742_IOCtx_t LAN8742_IOCtx = {ETH_PHY_IO_Init,
- ETH_PHY_IO_DeInit,
- ETH_PHY_IO_WriteReg,
- ETH_PHY_IO_ReadReg,
- ETH_PHY_IO_GetTick};
-
-/* USER CODE BEGIN 3 */
-
-/* USER CODE END 3 */
-
-/* Private functions ---------------------------------------------------------*/
-void pbuf_free_custom(struct pbuf *p);
-
-/**
- * @brief Ethernet Rx Transfer completed callback
- * @param handlerEth: ETH handler
- * @retval None
- */
-void HAL_ETH_RxCpltCallback(ETH_HandleTypeDef *handlerEth)
-{
- osSemaphoreRelease(RxPktSemaphore);
-}
-/**
- * @brief Ethernet Tx Transfer completed callback
- * @param handlerEth: ETH handler
- * @retval None
- */
-void HAL_ETH_TxCpltCallback(ETH_HandleTypeDef *handlerEth)
-{
- osSemaphoreRelease(TxPktSemaphore);
-}
-/**
- * @brief Ethernet DMA transfer error callback
- * @param handlerEth: ETH handler
- * @retval None
- */
-void HAL_ETH_ErrorCallback(ETH_HandleTypeDef *handlerEth)
-{
- if((HAL_ETH_GetDMAError(handlerEth) & ETH_DMASR_RBUS) == ETH_DMASR_RBUS)
- {
- osSemaphoreRelease(RxPktSemaphore);
- }
-}
-
-/* USER CODE BEGIN 4 */
-// add by zhaohe
-extern uint8_t g_mac[];
-
-/* USER CODE END 4 */
-
-/*******************************************************************************
- LL Driver Interface ( LwIP stack --> ETH)
-*******************************************************************************/
-/**
- * @brief In this function, the hardware should be initialized.
- * Called from ethernetif_init().
- *
- * @param netif the already initialized lwip network interface structure
- * for this ethernetif
- */
-static void low_level_init(struct netif *netif)
-{
- HAL_StatusTypeDef hal_eth_init_status = HAL_OK;
- uint32_t duplex, speed = 0;
- int32_t PHYLinkState = 0;
- ETH_MACConfigTypeDef MACConf = {0};
- /* Start ETH HAL Init */
-
- uint8_t MACAddr[6] ;
- heth.Instance = ETH;
- MACAddr[0] = 0x00;
- MACAddr[1] = 0x80;
- MACAddr[2] = 0xE1;
- MACAddr[3] = 0x00;
- MACAddr[4] = 0x00;
- MACAddr[5] = 0x01;
- heth.Init.MACAddr = &MACAddr[0];
- heth.Init.MediaInterface = HAL_ETH_RMII_MODE;
- heth.Init.TxDesc = DMATxDscrTab;
- heth.Init.RxDesc = DMARxDscrTab;
- heth.Init.RxBuffLen = 1536;
-
- /* USER CODE BEGIN MACADDRESS */
- // add by zhaohe
- MACAddr[0] = g_mac[0];
- MACAddr[1] = g_mac[1];
- MACAddr[2] = g_mac[2];
- MACAddr[3] = g_mac[3];
- MACAddr[4] = g_mac[4];
- MACAddr[5] = g_mac[5];
- /* USER CODE END MACADDRESS */
-
- hal_eth_init_status = HAL_ETH_Init(&heth);
-
- memset(&TxConfig, 0 , sizeof(ETH_TxPacketConfig));
- TxConfig.Attributes = ETH_TX_PACKETS_FEATURES_CSUM | ETH_TX_PACKETS_FEATURES_CRCPAD;
- TxConfig.ChecksumCtrl = ETH_CHECKSUM_IPHDR_PAYLOAD_INSERT_PHDR_CALC;
- TxConfig.CRCPadCtrl = ETH_CRC_PAD_INSERT;
-
- /* End ETH HAL Init */
-
- /* Initialize the RX POOL */
- LWIP_MEMPOOL_INIT(RX_POOL);
-
-#if LWIP_ARP || LWIP_ETHERNET
-
- /* set MAC hardware address length */
- netif->hwaddr_len = ETH_HWADDR_LEN;
-
- /* set MAC hardware address */
- netif->hwaddr[0] = heth.Init.MACAddr[0];
- netif->hwaddr[1] = heth.Init.MACAddr[1];
- netif->hwaddr[2] = heth.Init.MACAddr[2];
- netif->hwaddr[3] = heth.Init.MACAddr[3];
- netif->hwaddr[4] = heth.Init.MACAddr[4];
- netif->hwaddr[5] = heth.Init.MACAddr[5];
-
- /* maximum transfer unit */
- netif->mtu = ETH_MAX_PAYLOAD;
-
- /* Accept broadcast address and ARP traffic */
- /* don't set NETIF_FLAG_ETHARP if this device is not an ethernet one */
- #if LWIP_ARP
- netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;
- #else
- netif->flags |= NETIF_FLAG_BROADCAST;
- #endif /* LWIP_ARP */
-
- /* create a binary semaphore used for informing ethernetif of frame reception */
- RxPktSemaphore = xSemaphoreCreateBinary();
-
- /* create a binary semaphore used for informing ethernetif of frame transmission */
- TxPktSemaphore = xSemaphoreCreateBinary();
-
- /* create the task that handles the ETH_MAC */
-/* USER CODE BEGIN OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
- osThreadDef(EthIf, ethernetif_input, osPriorityRealtime, 0, INTERFACE_THREAD_STACK_SIZE);
- osThreadCreate (osThread(EthIf), netif);
-/* USER CODE END OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
-
-/* USER CODE BEGIN PHY_PRE_CONFIG */
-
-/* USER CODE END PHY_PRE_CONFIG */
- /* Set PHY IO functions */
- LAN8742_RegisterBusIO(&LAN8742, &LAN8742_IOCtx);
-
- /* Initialize the LAN8742 ETH PHY */
- LAN8742_Init(&LAN8742);
-
- if (hal_eth_init_status == HAL_OK)
- {
- PHYLinkState = LAN8742_GetLinkState(&LAN8742);
-
- /* Get link state */
- if(PHYLinkState <= LAN8742_STATUS_LINK_DOWN)
- {
- netif_set_link_down(netif);
- netif_set_down(netif);
- }
- else
- {
- switch (PHYLinkState)
- {
- case LAN8742_STATUS_100MBITS_FULLDUPLEX:
- duplex = ETH_FULLDUPLEX_MODE;
- speed = ETH_SPEED_100M;
- break;
- case LAN8742_STATUS_100MBITS_HALFDUPLEX:
- duplex = ETH_HALFDUPLEX_MODE;
- speed = ETH_SPEED_100M;
- break;
- case LAN8742_STATUS_10MBITS_FULLDUPLEX:
- duplex = ETH_FULLDUPLEX_MODE;
- speed = ETH_SPEED_10M;
- break;
- case LAN8742_STATUS_10MBITS_HALFDUPLEX:
- duplex = ETH_HALFDUPLEX_MODE;
- speed = ETH_SPEED_10M;
- break;
- default:
- duplex = ETH_FULLDUPLEX_MODE;
- speed = ETH_SPEED_100M;
- break;
- }
-
- /* Get MAC Config MAC */
- HAL_ETH_GetMACConfig(&heth, &MACConf);
- MACConf.DuplexMode = duplex;
- MACConf.Speed = speed;
- HAL_ETH_SetMACConfig(&heth, &MACConf);
-
- HAL_ETH_Start_IT(&heth);
- netif_set_up(netif);
- netif_set_link_up(netif);
-
-/* USER CODE BEGIN PHY_POST_CONFIG */
-
-/* USER CODE END PHY_POST_CONFIG */
- }
-
- }
- else
- {
- Error_Handler();
- }
-#endif /* LWIP_ARP || LWIP_ETHERNET */
-
-/* USER CODE BEGIN LOW_LEVEL_INIT */
-
-/* USER CODE END LOW_LEVEL_INIT */
-}
-
-/**
- * @brief This function should do the actual transmission of the packet. The packet is
- * contained in the pbuf that is passed to the function. This pbuf
- * might be chained.
- *
- * @param netif the lwip network interface structure for this ethernetif
- * @param p the MAC packet to send (e.g. IP packet including MAC addresses and type)
- * @return ERR_OK if the packet could be sent
- * an err_t value if the packet couldn't be sent
- *
- * @note Returning ERR_MEM here if a DMA queue of your MAC is full can lead to
- * strange results. You might consider waiting for space in the DMA queue
- * to become available since the stack doesn't retry to send a packet
- * dropped because of memory failure (except for the TCP timers).
- */
-
-static err_t low_level_output(struct netif *netif, struct pbuf *p)
-{
- uint32_t i = 0U;
- struct pbuf *q = NULL;
- err_t errval = ERR_OK;
- ETH_BufferTypeDef Txbuffer[ETH_TX_DESC_CNT] = {0};
-
- memset(Txbuffer, 0 , ETH_TX_DESC_CNT*sizeof(ETH_BufferTypeDef));
-
- for(q = p; q != NULL; q = q->next)
- {
- if(i >= ETH_TX_DESC_CNT)
- return ERR_IF;
-
- Txbuffer[i].buffer = q->payload;
- Txbuffer[i].len = q->len;
-
- if(i>0)
- {
- Txbuffer[i-1].next = &Txbuffer[i];
- }
-
- if(q->next == NULL)
- {
- Txbuffer[i].next = NULL;
- }
-
- i++;
- }
-
- TxConfig.Length = p->tot_len;
- TxConfig.TxBuffer = Txbuffer;
- TxConfig.pData = p;
-
- pbuf_ref(p);
-
- HAL_ETH_Transmit_IT(&heth, &TxConfig);
- while(osSemaphoreWait(TxPktSemaphore, TIME_WAITING_FOR_INPUT)!=osOK)
-
- {
- }
-
- HAL_ETH_ReleaseTxPacket(&heth);
-
- return errval;
-}
-
-/**
- * @brief Should allocate a pbuf and transfer the bytes of the incoming
- * packet from the interface into the pbuf.
- *
- * @param netif the lwip network interface structure for this ethernetif
- * @return a pbuf filled with the received packet (including MAC header)
- * NULL on memory error
- */
-static struct pbuf * low_level_input(struct netif *netif)
-{
- struct pbuf *p = NULL;
-
- if(RxAllocStatus == RX_ALLOC_OK)
- {
- HAL_ETH_ReadData(&heth, (void **)&p);
- }
-
- return p;
-}
-
-/**
- * @brief This function should be called when a packet is ready to be read
- * from the interface. It uses the function low_level_input() that
- * should handle the actual reception of bytes from the network
- * interface. Then the type of the received packet is determined and
- * the appropriate input function is called.
- *
- * @param netif the lwip network interface structure for this ethernetif
- */
-static void ethernetif_input(void const * argument)
-{
- struct pbuf *p = NULL;
- struct netif *netif = (struct netif *) argument;
-
- for( ;; )
- {
- if (osSemaphoreWait(RxPktSemaphore, TIME_WAITING_FOR_INPUT) == osOK)
- {
- do
- {
- p = low_level_input( netif );
- if (p != NULL)
- {
- if (netif->input( p, netif) != ERR_OK )
- {
- pbuf_free(p);
- }
- }
- } while(p!=NULL);
- }
- }
-}
-
-#if !LWIP_ARP
-/**
- * This function has to be completed by user in case of ARP OFF.
- *
- * @param netif the lwip network interface structure for this ethernetif
- * @return ERR_OK if ...
- */
-static err_t low_level_output_arp_off(struct netif *netif, struct pbuf *q, const ip4_addr_t *ipaddr)
-{
- err_t errval;
- errval = ERR_OK;
-
-/* USER CODE BEGIN 5 */
-
-/* USER CODE END 5 */
-
- return errval;
-
-}
-#endif /* LWIP_ARP */
-
-/**
- * @brief Should be called at the beginning of the program to set up the
- * network interface. It calls the function low_level_init() to do the
- * actual setup of the hardware.
- *
- * This function should be passed as a parameter to netif_add().
- *
- * @param netif the lwip network interface structure for this ethernetif
- * @return ERR_OK if the loopif is initialized
- * ERR_MEM if private data couldn't be allocated
- * any other err_t on error
- */
-err_t ethernetif_init(struct netif *netif)
-{
- LWIP_ASSERT("netif != NULL", (netif != NULL));
-
-#if LWIP_NETIF_HOSTNAME
- /* Initialize interface hostname */
- netif->hostname = "lwip";
-#endif /* LWIP_NETIF_HOSTNAME */
-
- /*
- * Initialize the snmp variables and counters inside the struct netif.
- * The last argument should be replaced with your link speed, in units
- * of bits per second.
- */
- // MIB2_INIT_NETIF(netif, snmp_ifType_ethernet_csmacd, LINK_SPEED_OF_YOUR_NETIF_IN_BPS);
-
- netif->name[0] = IFNAME0;
- netif->name[1] = IFNAME1;
- /* We directly use etharp_output() here to save a function call.
- * You can instead declare your own function an call etharp_output()
- * from it if you have to do some checks before sending (e.g. if link
- * is available...) */
-
-#if LWIP_IPV4
-#if LWIP_ARP || LWIP_ETHERNET
-#if LWIP_ARP
- netif->output = etharp_output;
-#else
- /* The user should write its own code in low_level_output_arp_off function */
- netif->output = low_level_output_arp_off;
-#endif /* LWIP_ARP */
-#endif /* LWIP_ARP || LWIP_ETHERNET */
-#endif /* LWIP_IPV4 */
-
-#if LWIP_IPV6
- netif->output_ip6 = ethip6_output;
-#endif /* LWIP_IPV6 */
-
- netif->linkoutput = low_level_output;
-
- /* initialize the hardware */
- low_level_init(netif);
-
- return ERR_OK;
-}
-
-/**
- * @brief Custom Rx pbuf free callback
- * @param pbuf: pbuf to be freed
- * @retval None
- */
-void pbuf_free_custom(struct pbuf *p)
-{
- struct pbuf_custom* custom_pbuf = (struct pbuf_custom*)p;
- LWIP_MEMPOOL_FREE(RX_POOL, custom_pbuf);
-
- /* If the Rx Buffer Pool was exhausted, signal the ethernetif_input task to
- * call HAL_ETH_GetRxDataBuffer to rebuild the Rx descriptors. */
-
- if (RxAllocStatus == RX_ALLOC_ERROR)
- {
- RxAllocStatus = RX_ALLOC_OK;
- osSemaphoreRelease(RxPktSemaphore);
- }
-}
-
-/* USER CODE BEGIN 6 */
-
-/**
-* @brief Returns the current time in milliseconds
-* when LWIP_TIMERS == 1 and NO_SYS == 1
-* @param None
-* @retval Time
-*/
-u32_t sys_now(void)
-{
- return HAL_GetTick();
-}
-
-/* USER CODE END 6 */
-
-/**
- * @brief Initializes the ETH MSP.
- * @param ethHandle: ETH handle
- * @retval None
- */
-
-void HAL_ETH_MspInit(ETH_HandleTypeDef* ethHandle)
-{
- GPIO_InitTypeDef GPIO_InitStruct = {0};
- if(ethHandle->Instance==ETH)
- {
- /* USER CODE BEGIN ETH_MspInit 0 */
-
- /* USER CODE END ETH_MspInit 0 */
- /* Enable Peripheral clock */
- __HAL_RCC_ETH_CLK_ENABLE();
-
- __HAL_RCC_GPIOC_CLK_ENABLE();
- __HAL_RCC_GPIOA_CLK_ENABLE();
- __HAL_RCC_GPIOB_CLK_ENABLE();
- /**ETH GPIO Configuration
- PC1 ------> ETH_MDC
- PA1 ------> ETH_REF_CLK
- PA2 ------> ETH_MDIO
- PA7 ------> ETH_CRS_DV
- PC4 ------> ETH_RXD0
- PC5 ------> ETH_RXD1
- PB11 ------> ETH_TX_EN
- PB12 ------> ETH_TXD0
- PB13 ------> ETH_TXD1
- */
- GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
- HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
-
- GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
-
- GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
- HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-
- /* Peripheral interrupt init */
- HAL_NVIC_SetPriority(ETH_IRQn, 5, 0);
- HAL_NVIC_EnableIRQ(ETH_IRQn);
- /* USER CODE BEGIN ETH_MspInit 1 */
- #define ETH_RST_Pin GPIO_PIN_3
- #define ETH_RST_GPIO_Port GPIOD
- HAL_GPIO_WritePin(ETH_RST_GPIO_Port,ETH_RST_Pin,GPIO_PIN_RESET);
- HAL_Delay(50);
- HAL_GPIO_WritePin(ETH_RST_GPIO_Port,ETH_RST_Pin,GPIO_PIN_SET);
- /* USER CODE END ETH_MspInit 1 */
- }
-}
-
-void HAL_ETH_MspDeInit(ETH_HandleTypeDef* ethHandle)
-{
- if(ethHandle->Instance==ETH)
- {
- /* USER CODE BEGIN ETH_MspDeInit 0 */
-
- /* USER CODE END ETH_MspDeInit 0 */
- /* Peripheral clock disable */
- __HAL_RCC_ETH_CLK_DISABLE();
-
- /**ETH GPIO Configuration
- PC1 ------> ETH_MDC
- PA1 ------> ETH_REF_CLK
- PA2 ------> ETH_MDIO
- PA7 ------> ETH_CRS_DV
- PC4 ------> ETH_RXD0
- PC5 ------> ETH_RXD1
- PB11 ------> ETH_TX_EN
- PB12 ------> ETH_TXD0
- PB13 ------> ETH_TXD1
- */
- HAL_GPIO_DeInit(GPIOC, GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5);
-
- HAL_GPIO_DeInit(GPIOA, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7);
-
- HAL_GPIO_DeInit(GPIOB, GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13);
-
- /* Peripheral interrupt Deinit*/
- HAL_NVIC_DisableIRQ(ETH_IRQn);
-
- /* USER CODE BEGIN ETH_MspDeInit 1 */
-
- /* USER CODE END ETH_MspDeInit 1 */
- }
-}
-
-/*******************************************************************************
- PHI IO Functions
-*******************************************************************************/
-/**
- * @brief Initializes the MDIO interface GPIO and clocks.
- * @param None
- * @retval 0 if OK, -1 if ERROR
- */
-int32_t ETH_PHY_IO_Init(void)
-{
- /* We assume that MDIO GPIO configuration is already done
- in the ETH_MspInit() else it should be done here
- */
-
- /* Configure the MDIO Clock */
- HAL_ETH_SetMDIOClockRange(&heth);
-
- return 0;
-}
-
-/**
- * @brief De-Initializes the MDIO interface .
- * @param None
- * @retval 0 if OK, -1 if ERROR
- */
-int32_t ETH_PHY_IO_DeInit (void)
-{
- return 0;
-}
-
-/**
- * @brief Read a PHY register through the MDIO interface.
- * @param DevAddr: PHY port address
- * @param RegAddr: PHY register address
- * @param pRegVal: pointer to hold the register value
- * @retval 0 if OK -1 if Error
- */
-int32_t ETH_PHY_IO_ReadReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t *pRegVal)
-{
- if(HAL_ETH_ReadPHYRegister(&heth, DevAddr, RegAddr, pRegVal) != HAL_OK)
- {
- return -1;
- }
-
- return 0;
-}
-
-/**
- * @brief Write a value to a PHY register through the MDIO interface.
- * @param DevAddr: PHY port address
- * @param RegAddr: PHY register address
- * @param RegVal: Value to be written
- * @retval 0 if OK -1 if Error
- */
-int32_t ETH_PHY_IO_WriteReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t RegVal)
-{
- if(HAL_ETH_WritePHYRegister(&heth, DevAddr, RegAddr, RegVal) != HAL_OK)
- {
- return -1;
- }
-
- return 0;
-}
-
-/**
- * @brief Get the time in millisecons used for internal PHY driver process.
- * @retval Time value
- */
-int32_t ETH_PHY_IO_GetTick(void)
-{
- return HAL_GetTick();
-}
-
-/**
- * @brief Check the ETH link state then update ETH driver and netif link accordingly.
- * @retval None
- */
-
-void ethernet_link_thread(void const * argument)
-{
- ETH_MACConfigTypeDef MACConf = {0};
- int32_t PHYLinkState = 0;
- uint32_t linkchanged = 0U, speed = 0U, duplex = 0U;
-
- struct netif *netif = (struct netif *) argument;
-/* USER CODE BEGIN ETH link init */
- netif->link_callback(netif);
-/* USER CODE END ETH link init */
-
- for(;;)
- {
- PHYLinkState = LAN8742_GetLinkState(&LAN8742);
-
- if(netif_is_link_up(netif) && (PHYLinkState <= LAN8742_STATUS_LINK_DOWN))
- {
- HAL_ETH_Stop_IT(&heth);
- netif_set_down(netif);
- netif_set_link_down(netif);
- }
- else if(!netif_is_link_up(netif) && (PHYLinkState > LAN8742_STATUS_LINK_DOWN))
- {
- switch (PHYLinkState)
- {
- case LAN8742_STATUS_100MBITS_FULLDUPLEX:
- duplex = ETH_FULLDUPLEX_MODE;
- speed = ETH_SPEED_100M;
- linkchanged = 1;
- break;
- case LAN8742_STATUS_100MBITS_HALFDUPLEX:
- duplex = ETH_HALFDUPLEX_MODE;
- speed = ETH_SPEED_100M;
- linkchanged = 1;
- break;
- case LAN8742_STATUS_10MBITS_FULLDUPLEX:
- duplex = ETH_FULLDUPLEX_MODE;
- speed = ETH_SPEED_10M;
- linkchanged = 1;
- break;
- case LAN8742_STATUS_10MBITS_HALFDUPLEX:
- duplex = ETH_HALFDUPLEX_MODE;
- speed = ETH_SPEED_10M;
- linkchanged = 1;
- break;
- default:
- break;
- }
-
- if(linkchanged)
- {
- /* Get MAC Config MAC */
- HAL_ETH_GetMACConfig(&heth, &MACConf);
- MACConf.DuplexMode = duplex;
- MACConf.Speed = speed;
- HAL_ETH_SetMACConfig(&heth, &MACConf);
- HAL_ETH_Start_IT(&heth);
- netif_set_up(netif);
- netif_set_link_up(netif);
- }
- }
-
-/* USER CODE BEGIN ETH link Thread core code for User BSP */
-
-/* USER CODE END ETH link Thread core code for User BSP */
-
- osDelay(100);
- }
-}
-
-void HAL_ETH_RxAllocateCallback(uint8_t **buff)
-{
-/* USER CODE BEGIN HAL ETH RxAllocateCallback */
- struct pbuf_custom *p = LWIP_MEMPOOL_ALLOC(RX_POOL);
- if (p)
- {
- /* Get the buff from the struct pbuf address. */
- *buff = (uint8_t *)p + offsetof(RxBuff_t, buff);
- p->custom_free_function = pbuf_free_custom;
- /* Initialize the struct pbuf.
- * This must be performed whenever a buffer's allocated because it may be
- * changed by lwIP or the app, e.g., pbuf_free decrements ref. */
- pbuf_alloced_custom(PBUF_RAW, 0, PBUF_REF, p, *buff, ETH_RX_BUF_SIZE);
- }
- else
- {
- RxAllocStatus = RX_ALLOC_ERROR;
- *buff = NULL;
- }
-/* USER CODE END HAL ETH RxAllocateCallback */
-}
-
-void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t Length)
-{
-/* USER CODE BEGIN HAL ETH RxLinkCallback */
-
- struct pbuf **ppStart = (struct pbuf **)pStart;
- struct pbuf **ppEnd = (struct pbuf **)pEnd;
- struct pbuf *p = NULL;
-
- /* Get the struct pbuf from the buff address. */
- p = (struct pbuf *)(buff - offsetof(RxBuff_t, buff));
- p->next = NULL;
- p->tot_len = 0;
- p->len = Length;
-
- /* Chain the buffer. */
- if (!*ppStart)
- {
- /* The first buffer of the packet. */
- *ppStart = p;
- }
- else
- {
- /* Chain the buffer to the end of the packet. */
- (*ppEnd)->next = p;
- }
- *ppEnd = p;
-
- /* Update the total length of all the buffers of the chain. Each pbuf in the chain should have its tot_len
- * set to its own length, plus the length of all the following pbufs in the chain. */
- for (p = *ppStart; p != NULL; p = p->next)
- {
- p->tot_len += Length;
- }
-
-/* USER CODE END HAL ETH RxLinkCallback */
-}
-
-void HAL_ETH_TxFreeCallback(uint32_t * buff)
-{
-/* USER CODE BEGIN HAL ETH TxFreeCallback */
-
- pbuf_free((struct pbuf *)buff);
-
-/* USER CODE END HAL ETH TxFreeCallback */
-}
-
-/* USER CODE BEGIN 8 */
-/**
- * @brief This function notify user about link status changement.
- * @param netif: the network interface
- * @retval None
- */
-__weak void ethernetif_notify_conn_changed(struct netif *netif)
-{
- /* NOTE : This is function could be implemented in user file
- when the callback is needed,
- */
-
-}
-/* USER CODE END 8 */
-
diff --git a/LWIP/Target/ethernetif.h b/LWIP/Target/ethernetif.h
deleted file mode 100644
index cc2aff0..0000000
--- a/LWIP/Target/ethernetif.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* USER CODE BEGIN Header */
-/**
- ******************************************************************************
- * File Name : ethernetif.h
- * Description : This file provides initialization code for LWIP
- * middleWare.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2024 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-/* USER CODE END Header */
-
-#ifndef __ETHERNETIF_H__
-#define __ETHERNETIF_H__
-
-#include "lwip/err.h"
-#include "lwip/netif.h"
-#include "cmsis_os.h"
-
-/* Within 'USER CODE' section, code will be kept by default at each generation */
-/* USER CODE BEGIN 0 */
-
-/* USER CODE END 0 */
-
-/* Exported functions ------------------------------------------------------- */
-err_t ethernetif_init(struct netif *netif);
-
-void ethernet_link_thread(void const * argument);
-
-void Error_Handler(void);
-u32_t sys_jiffies(void);
-u32_t sys_now(void);
-
-/* USER CODE BEGIN 1 */
-
-/* USER CODE END 1 */
-#endif
diff --git a/LWIP/Target/lwipopts.h b/LWIP/Target/lwipopts.h
deleted file mode 100644
index 6f49472..0000000
--- a/LWIP/Target/lwipopts.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/* USER CODE BEGIN Header */
-/**
- ******************************************************************************
- * File Name : lwipopts.h
- * Description : This file overrides LwIP stack default configuration
- * done in opt.h file.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2023 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-/* USER CODE END Header */
-
-/* Define to prevent recursive inclusion --------------------------------------*/
-#ifndef __LWIPOPTS__H__
-#define __LWIPOPTS__H__
-
-#include "main.h"
-
-/*-----------------------------------------------------------------------------*/
-/* Current version of LwIP supported by CubeMx: 2.1.2 -*/
-/*-----------------------------------------------------------------------------*/
-
-/* Within 'USER CODE' section, code will be kept by default at each generation */
-/* USER CODE BEGIN 0 */
-
-/* USER CODE END 0 */
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* STM32CubeMX Specific Parameters (not defined in opt.h) ---------------------*/
-/* Parameters set in STM32CubeMX LwIP Configuration GUI -*/
-/*----- WITH_RTOS enabled (Since FREERTOS is set) -----*/
-#define WITH_RTOS 1
-/* Temporary workaround to avoid conflict on errno defined in STM32CubeIDE and lwip sys_arch.c errno */
-#undef LWIP_PROVIDE_ERRNO
-/*----- CHECKSUM_BY_HARDWARE enabled -----*/
-#define CHECKSUM_BY_HARDWARE 1
-/*-----------------------------------------------------------------------------*/
-
-/* LwIP Stack Parameters (modified compared to initialization value in opt.h) -*/
-/* Parameters set in STM32CubeMX LwIP Configuration GUI -*/
-/*----- Default Value for LWIP_DNS: 0 ---*/
-#define LWIP_DNS 1
-/*----- Value in opt.h for MEM_ALIGNMENT: 1 -----*/
-#define MEM_ALIGNMENT 4
-/*----- Value in opt.h for LWIP_ETHERNET: LWIP_ARP || PPPOE_SUPPORT -*/
-#define LWIP_ETHERNET 1
-/*----- Value in opt.h for LWIP_DNS_SECURE: (LWIP_DNS_SECURE_RAND_XID | LWIP_DNS_SECURE_NO_MULTIPLE_OUTSTANDING | LWIP_DNS_SECURE_RAND_SRC_PORT) -*/
-#define LWIP_DNS_SECURE 7
-/*----- Value in opt.h for TCP_SND_QUEUELEN: (4*TCP_SND_BUF + (TCP_MSS - 1))/TCP_MSS -----*/
-#define TCP_SND_QUEUELEN 9
-/*----- Value in opt.h for TCP_SNDLOWAT: LWIP_MIN(LWIP_MAX(((TCP_SND_BUF)/2), (2 * TCP_MSS) + 1), (TCP_SND_BUF) - 1) -*/
-#define TCP_SNDLOWAT 1071
-/*----- Value in opt.h for TCP_SNDQUEUELOWAT: LWIP_MAX(TCP_SND_QUEUELEN)/2, 5) -*/
-#define TCP_SNDQUEUELOWAT 5
-/*----- Value in opt.h for TCP_WND_UPDATE_THRESHOLD: LWIP_MIN(TCP_WND/4, TCP_MSS*4) -----*/
-#define TCP_WND_UPDATE_THRESHOLD 536
-/*----- Default Value for LWIP_NETIF_HOSTNAME: 0 ---*/
-#define LWIP_NETIF_HOSTNAME 1
-/*----- Value in opt.h for LWIP_NETIF_LINK_CALLBACK: 0 -----*/
-#define LWIP_NETIF_LINK_CALLBACK 1
-/*----- Value in opt.h for TCPIP_THREAD_STACKSIZE: 0 -----*/
-#define TCPIP_THREAD_STACKSIZE 1024
-/*----- Value in opt.h for TCPIP_THREAD_PRIO: 1 -----*/
-#define TCPIP_THREAD_PRIO osPriorityNormal
-/*----- Value in opt.h for TCPIP_MBOX_SIZE: 0 -----*/
-#define TCPIP_MBOX_SIZE 6
-/*----- Value in opt.h for SLIPIF_THREAD_STACKSIZE: 0 -----*/
-#define SLIPIF_THREAD_STACKSIZE 1024
-/*----- Value in opt.h for SLIPIF_THREAD_PRIO: 1 -----*/
-#define SLIPIF_THREAD_PRIO 3
-/*----- Value in opt.h for DEFAULT_THREAD_STACKSIZE: 0 -----*/
-#define DEFAULT_THREAD_STACKSIZE 1024
-/*----- Value in opt.h for DEFAULT_THREAD_PRIO: 1 -----*/
-#define DEFAULT_THREAD_PRIO 3
-/*----- Value in opt.h for DEFAULT_UDP_RECVMBOX_SIZE: 0 -----*/
-#define DEFAULT_UDP_RECVMBOX_SIZE 6
-/*----- Value in opt.h for DEFAULT_TCP_RECVMBOX_SIZE: 0 -----*/
-#define DEFAULT_TCP_RECVMBOX_SIZE 6
-/*----- Value in opt.h for DEFAULT_ACCEPTMBOX_SIZE: 0 -----*/
-#define DEFAULT_ACCEPTMBOX_SIZE 6
-/*----- Default Value for LWIP_SO_SNDTIMEO: 0 ---*/
-#define LWIP_SO_SNDTIMEO 1
-/*----- Default Value for LWIP_SO_RCVTIMEO: 0 ---*/
-#define LWIP_SO_RCVTIMEO 1
-/*----- Value in opt.h for RECV_BUFSIZE_DEFAULT: INT_MAX -----*/
-#define RECV_BUFSIZE_DEFAULT 2000000000
-/*----- Value in opt.h for LWIP_STATS: 1 -----*/
-#define LWIP_STATS 0
-/*----- Value in opt.h for CHECKSUM_GEN_IP: 1 -----*/
-#define CHECKSUM_GEN_IP 0
-/*----- Value in opt.h for CHECKSUM_GEN_UDP: 1 -----*/
-#define CHECKSUM_GEN_UDP 0
-/*----- Value in opt.h for CHECKSUM_GEN_TCP: 1 -----*/
-#define CHECKSUM_GEN_TCP 0
-/*----- Value in opt.h for CHECKSUM_GEN_ICMP: 1 -----*/
-#define CHECKSUM_GEN_ICMP 0
-/*----- Value in opt.h for CHECKSUM_GEN_ICMP6: 1 -----*/
-#define CHECKSUM_GEN_ICMP6 0
-/*----- Value in opt.h for CHECKSUM_CHECK_IP: 1 -----*/
-#define CHECKSUM_CHECK_IP 0
-/*----- Value in opt.h for CHECKSUM_CHECK_UDP: 1 -----*/
-#define CHECKSUM_CHECK_UDP 0
-/*----- Value in opt.h for CHECKSUM_CHECK_TCP: 1 -----*/
-#define CHECKSUM_CHECK_TCP 0
-/*----- Value in opt.h for CHECKSUM_CHECK_ICMP: 1 -----*/
-#define CHECKSUM_CHECK_ICMP 0
-/*----- Value in opt.h for CHECKSUM_CHECK_ICMP6: 1 -----*/
-#define CHECKSUM_CHECK_ICMP6 0
-/*-----------------------------------------------------------------------------*/
-/* USER CODE BEGIN 1 */
-
-/* USER CODE END 1 */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /*__LWIPOPTS__H__ */
diff --git a/Middlewares b/Middlewares
new file mode 160000
index 0000000..5047b05
--- /dev/null
+++ b/Middlewares
@@ -0,0 +1 @@
+Subproject commit 5047b0506d61e226ae953e58e47293d466a509be
diff --git a/stm32basic b/stm32basic
new file mode 160000
index 0000000..049e643
--- /dev/null
+++ b/stm32basic
@@ -0,0 +1 @@
+Subproject commit 049e643b139652247636ddb1564345bb299b1aab
diff --git a/stm32components b/stm32components
new file mode 160000
index 0000000..bcca882
--- /dev/null
+++ b/stm32components
@@ -0,0 +1 @@
+Subproject commit bcca882e2f1f8688716246e4d376230dbc4de28f
diff --git a/stm32halport b/stm32halport
new file mode 160000
index 0000000..6c550d6
--- /dev/null
+++ b/stm32halport
@@ -0,0 +1 @@
+Subproject commit 6c550d69902d048e8fdd782d11e3feba7120b740
diff --git a/usrc/app_main.cpp b/usrc/app_main.cpp
index 7add538..bd032f5 100644
--- a/usrc/app_main.cpp
+++ b/usrc/app_main.cpp
@@ -12,8 +12,8 @@
#include "base/protocol_processer_mgr.hpp"
#include "protocol_processer_impl/public_cmd_processer.hpp"
//
-#include "zsdk/zcanreceiver/zcanreceiver.hpp"
-#include "zsdk/zsdk.hpp"
+#include "stm32basic/zcanreceiver/zcanreceiver.hpp"
+#include "stm32basic/zsdk.hpp"
//
diff --git a/usrc/base/appdep.hpp b/usrc/base/appdep.hpp
index c862a8a..b67a986 100644
--- a/usrc/base/appdep.hpp
+++ b/usrc/base/appdep.hpp
@@ -5,13 +5,13 @@
#include "project_configs.h"
//
-#include "zsdk/hmp110/hmp110.hpp"
-#include "zsdk/hpp272/hpp272.hpp"
-#include "zsdk/modbus/modbus_block_host.hpp"
-#include "zsdk/pxx_pressure_sensor_driver/pxx_pressure_sensor_bus.hpp"
-#include "zsdk/tmcdriver/tmc51x0/tmc51x0.hpp"
-#include "zsdk/zadc.hpp"
-#include "zsdk/zsdk.hpp"
+#include "stm32basic/hmp110/hmp110.hpp"
+#include "stm32basic/hpp272/hpp272.hpp"
+#include "stm32basic/modbus/modbus_block_host.hpp"
+#include "stm32basic/pxx_pressure_sensor_driver/pxx_pressure_sensor_bus.hpp"
+#include "stm32basic/tmcdriver/tmc51x0/tmc51x0.hpp"
+#include "stm32basic/zadc.hpp"
+#include "stm32basic/zsdk.hpp"
//
#include "config_service.hpp"
#include "device_info.hpp"
diff --git a/usrc/base/appthread/app_period_task_mgr.hpp b/usrc/base/appthread/app_period_task_mgr.hpp
index 42dc5fd..78cced0 100644
--- a/usrc/base/appthread/app_period_task_mgr.hpp
+++ b/usrc/base/appthread/app_period_task_mgr.hpp
@@ -5,8 +5,8 @@
#include
-#include "zsdk/zsdk.hpp"
-#include "zstm32/zstm32.hpp"
+#include "stm32basic/zsdk.hpp"
+#include "stm32halport/stm32halport.hpp"
//
namespace iflytop {
diff --git a/usrc/base/appthread/work_queue.hpp b/usrc/base/appthread/work_queue.hpp
index 5dd7c2e..0a8c728 100644
--- a/usrc/base/appthread/work_queue.hpp
+++ b/usrc/base/appthread/work_queue.hpp
@@ -6,8 +6,8 @@
#include
#include "cmsis_os.h"
-#include "zsdk/zsdk.hpp"
-#include "zstm32/zstm32.hpp"
+#include "stm32basic/zsdk.hpp"
+#include "stm32halport/stm32halport.hpp"
//
namespace iflytop {
using namespace std;
diff --git a/usrc/base/config_service.cpp b/usrc/base/config_service.cpp
index 239fa39..1fa6075 100644
--- a/usrc/base/config_service.cpp
+++ b/usrc/base/config_service.cpp
@@ -1,6 +1,6 @@
#include "config_service.hpp"
-#include "zsdk/zsdk.hpp"
+#include "stm32basic/zsdk.hpp"
static config_t _config;
static config_t _default_val_config;
diff --git a/usrc/base/config_service.hpp b/usrc/base/config_service.hpp
index 5473e71..c2c4bb2 100644
--- a/usrc/base/config_service.hpp
+++ b/usrc/base/config_service.hpp
@@ -1,7 +1,7 @@
#pragma once
#include
-#include "zsdk/zsdk.hpp"
+#include "stm32basic/zsdk.hpp"
typedef struct {
diff --git a/usrc/base/device_info.hpp b/usrc/base/device_info.hpp
index 11f823d..47a3f13 100644
--- a/usrc/base/device_info.hpp
+++ b/usrc/base/device_info.hpp
@@ -3,7 +3,7 @@
#include "project_configs.h"
#include "base/config_service.hpp"
-#include "zsdk/zsdk.hpp"
+#include "stm32basic/zsdk.hpp"
// uint16_t boardType;
// uint16_t projectId;
diff --git a/usrc/base/idtable/IdMgr.cpp b/usrc/base/idtable/IdMgr.cpp
index 7761060..8282ea2 100644
--- a/usrc/base/idtable/IdMgr.cpp
+++ b/usrc/base/idtable/IdMgr.cpp
@@ -1,6 +1,6 @@
#include "IdMgr.hpp"
-#include "zsdk/zsdk.hpp"
+#include "stm32basic/zsdk.hpp"
using namespace iflytop;
void IdMgr::addIdItem(IdIterm item) {
diff --git a/usrc/base/protocol_processer_utils.hpp b/usrc/base/protocol_processer_utils.hpp
index a1fefc3..758d300 100644
--- a/usrc/base/protocol_processer_utils.hpp
+++ b/usrc/base/protocol_processer_utils.hpp
@@ -2,13 +2,13 @@
#include
#include
//
-#include "zsdk/zsdk.hpp"
-#include "zstm32/zstm32.hpp"
+#include "stm32basic/zsdk.hpp"
+#include "stm32halport/stm32halport.hpp"
//
#include "base/device_info.hpp"
#include "gflag/gflag.h"
#include "transmit_disfection_protocol/transmit_disfection_protocol.hpp"
-#include "zsdk/zcanreceiver/zcanreceiver.hpp"
+#include "stm32basic/zcanreceiver/zcanreceiver.hpp"
namespace iflytop {
using namespace std;
diff --git a/usrc/base/utils/halutils.hpp b/usrc/base/utils/halutils.hpp
index 7ec1a86..91f7c0d 100644
--- a/usrc/base/utils/halutils.hpp
+++ b/usrc/base/utils/halutils.hpp
@@ -2,8 +2,8 @@
#include
#include
-#include "zsdk/zsdk.hpp"
-#include "zstm32/zstm32.hpp"
+#include "stm32basic/zsdk.hpp"
+#include "stm32halport/stm32halport.hpp"
namespace iflytop {
diff --git a/usrc/module/h2o2_sensor.cpp b/usrc/module/h2o2_sensor.cpp
index 81f0878..7fd51f3 100644
--- a/usrc/module/h2o2_sensor.cpp
+++ b/usrc/module/h2o2_sensor.cpp
@@ -1,6 +1,6 @@
#include "h2o2_sensor.hpp"
-#include "zsdk/zcanreceiver/zcanreceiver.hpp"
+#include "stm32basic/zcanreceiver/zcanreceiver.hpp"
using namespace iflytop;
#define TAG "LSDMPowerCtrlBoard"
diff --git a/usrc/module/proportional_valve_ctrl.hpp b/usrc/module/proportional_valve_ctrl.hpp
index dd12080..c44fc59 100644
--- a/usrc/module/proportional_valve_ctrl.hpp
+++ b/usrc/module/proportional_valve_ctrl.hpp
@@ -1,6 +1,6 @@
#pragma once
#include "base/appdep.hpp"
-#include "zsdk/preportional_valve/preportional_valve_ctrl.hpp"
+#include "stm32basic/preportional_valve/preportional_valve_ctrl.hpp"
namespace iflytop {
using namespace transmit_disfection_protocol;