Bläddra i källkod

Merge branch 'new_lwip' of https://192.168.14.200:3000/dtelenkov/bt-670x into new_lwip

TelenkovDmitry 7 år sedan
förälder
incheckning
186edb103b

+ 1 - 1
Makefile

@@ -1,4 +1,4 @@
-TARGETS = projects/gcc/tools iap modules service_hw  
+TARGETS = projects/gcc/tools  modules service_hw  #iap
 BUILDDIR = build
 
 .PHONY: all config $(TARGETS) tools distclean

+ 2 - 0
modules/Ethernet/netconf.c

@@ -89,6 +89,7 @@ void LwIP_Init(void)
 
       netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &tcpip_input);
       netif_set_default(&xnetif);
+
       netif_set_up(&xnetif); 
     }
   
@@ -130,6 +131,7 @@ void LwIP_Init(void)
 
       netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &tcpip_input);
       netif_set_default(&xnetif);
+      netif_set_link_up(&xnetif);
       netif_set_up(&xnetif); 
     }
   

+ 4 - 1
modules/Ethernet/sntp.c

@@ -1,10 +1,13 @@
-//#include "sntp.h"
+#include "sntp.h"
 #include "rtc.h"
 #include "settings_api.h"
 
 #include <string.h>
 #include <time.h>
 
+#include "FreeRTOS.h"
+#include "task.h"
+
 #ifdef PRINTF_STDLIB
 #include <stdio.h>
 #endif

+ 2 - 1
modules/HTTP_Server/http_server.c

@@ -2452,7 +2452,8 @@ void ssl_server(void *pvParameters)
         if(ret != 0)
         {
             //printf(" failed\n  ! net_accept returned %d\n\n", ret);
-            goto exit;
+        	 goto accept;
+            //goto exit;
         }
         //printf(" ok\n");
 

+ 6 - 4
modules/Makefile

@@ -76,10 +76,13 @@ CSRC += $(wildcard ../thirdparty/FreeRTOS/portable/MemMang/heap_4.c)
     INCLUDES += -I../thirdparty/lwip/src/include
     INCLUDES += -I../thirdparty/lwip/src/include/netif
     INCLUDES += -I../thirdparty/lwip/src/include/lwip
-    INCLUDES += -I../thirdparty/lwip/src/include/ipv4
-    INCLUDES += -I../thirdparty/lwip/src/netif/ppp
+    INCLUDES += -I../thirdparty/lwip/src/include/lwip/apps
+    INCLUDES += -I../thirdparty/lwip/src/include/netif
+#    INCLUDES += -I../thirdparty/lwip/src/netif/ppp
     INCLUDES += -I../thirdparty/lwip/port
     INCLUDES += -I../thirdparty/lwip/port/FreeRTOS
+    INCLUDES += -I../thirdparty/lwip/system
+    INCLUDES += -I../thirdparty/lwip/system/arch
     INCLUDES += -IEthernet
  # INCLUDES += -I../stm32/stm32f4x7_ethernet 
  	INCLUDES += -ISTM32F4x7_ETH_Driver
@@ -90,9 +93,8 @@ CSRC += $(wildcard ../thirdparty/FreeRTOS/portable/MemMang/heap_4.c)
     CSRC += $(wildcard ../thirdparty/lwip/src/api/*.c)
     CSRC += $(wildcard ../thirdparty/lwip/src/core/*.c)
     CSRC += $(wildcard ../thirdparty/lwip/src/core/ipv4/*.c)
-    CSRC += $(wildcard ../thirdparty/lwip/src/core/snmp/*.c)
     CSRC += $(wildcard ../thirdparty/lwip/src/netif/*.c)
-    CSRC += $(wildcard ../thirdparty/lwip/src/netif/ppp/*.c)
+#    CSRC += $(wildcard ../thirdparty/lwip/src/netif/ppp/*.c)
     CSRC += $(wildcard ../thirdparty/lwip/port/FreeRTOS/*.c)
     CSRC += $(wildcard Ethernet/*.c)
   #  CSRC += $(wildcard ../stm32/stm32f4x7_ethernet/*.c)

+ 3 - 3
modules/parameters.c

@@ -990,13 +990,13 @@ void SetSntpStateStr(char *str)
   if (strncmp(str, "1", 1) == 0){
 	sSettings.sSNTP.sntpEnable = true;
 	if(old_sntpEnable != sSettings.sSNTP.sntpEnable){
-		SNTP_Enable(sSettings.sSNTP.sntpEnable);
-		SNTP_Poll();
+	//	SNTP_Enable(sSettings.sSNTP.sntpEnable);
+	//	SNTP_Poll();
 	}
   }
   else{
 	sSettings.sSNTP.sntpEnable = false;
-	SNTP_Enable(sSettings.sSNTP.sntpEnable);
+//	SNTP_Enable(sSettings.sSNTP.sntpEnable);
   }
 }
 

BIN
output/BT_6702xx.bin


BIN
output/iap.bin


BIN
output/stm32bt6702.bin


+ 2 - 2
service_hw/Commands/bt_6701_commands.c

@@ -238,8 +238,8 @@ void vTest_SET(void *params)
 void COM_TestRtc(void)
 {
   /* Пытаемся синхронизироваться с NTP сервером */
-  SNTP_Enable(true);
-  SNTP_Poll();
+  //SNTP_Enable(true);
+  //SNTP_Poll();
   vTaskDelay(1000);
 
   /* Синхронизация удалась */

+ 1 - 1
service_hw/Console/port_microrl.c

@@ -258,7 +258,7 @@ int execute (int argc, const char * const * argv)
         {
           len = strlen(argv[i]);
           strncpy(param, argv[i], len);
-		  SNTP_SetServerAddr(param);
+		//  SNTP_SetServerAddr(param);
 		  TEST_SetTest(TEST_RTC);
 		 // testRtc = true;
           print ("\n\r");

+ 6 - 6
service_hw/Ethernet/netconf.c

@@ -38,9 +38,9 @@ TaskHandle_t xHandleDHCP = NULL;
 
 void LwIP_Init(void)
 {
-  struct ip_addr ipaddr;
-  struct ip_addr netmask;
-  struct ip_addr gw;
+  struct ip4_addr ipaddr;
+  struct ip4_addr netmask;
+  struct ip4_addr gw;
   uint16_t reg = 0;
   
   tcpip_init( NULL, NULL );	
@@ -68,9 +68,9 @@ void LwIP_Init(void)
   */
 void LwIP_DHCP_task(void * pvParameters)
 {
-  struct ip_addr ipaddr;
-  struct ip_addr netmask;
-  struct ip_addr gw;
+  struct ip4_addr ipaddr;
+  struct ip4_addr netmask;
+  struct ip4_addr gw;
   uint8_t DHCP_state;  
   DHCP_state = DHCP_START;
 

+ 7 - 5
service_hw/Makefile

@@ -76,23 +76,25 @@ CSRC += $(wildcard ../thirdparty/FreeRTOS/portable/MemMang/heap_4.c)
     INCLUDES += -I../thirdparty/lwip/src/include
     INCLUDES += -I../thirdparty/lwip/src/include/netif
     INCLUDES += -I../thirdparty/lwip/src/include/lwip
-    INCLUDES += -I../thirdparty/lwip/src/include/ipv4
-    INCLUDES += -I../thirdparty/lwip/src/netif/ppp
+    INCLUDES += -I../thirdparty/lwip/src/include/lwip/apps
+    INCLUDES += -I../thirdparty/lwip/src/include/netif
+#    INCLUDES += -I../thirdparty/lwip/src/netif/ppp
     INCLUDES += -I../thirdparty/lwip/port
     INCLUDES += -I../thirdparty/lwip/port/FreeRTOS
+    INCLUDES += -I../thirdparty/lwip/system
+    INCLUDES += -I../thirdparty/lwip/system/arch
     INCLUDES += -IEthernet
  # INCLUDES += -I../stm32/stm32f4x7_ethernet 
  	INCLUDES += -I../modules/STM32F4x7_ETH_Driver
-    CSRC += $(wildcard HTTP_Server/http_server.c)
+     CSRC += $(wildcard HTTP_Server/http_server.c)
     CSRC += $(wildcard HTTP_Server/trap_params.c)
     CSRC += $(wildcard HTTP_Server/web_params_api.c)
     CSRC += $(wildcard ../thirdparty/lwip/src/*.c)
     CSRC += $(wildcard ../thirdparty/lwip/src/api/*.c)
     CSRC += $(wildcard ../thirdparty/lwip/src/core/*.c)
     CSRC += $(wildcard ../thirdparty/lwip/src/core/ipv4/*.c)
-    CSRC += $(wildcard ../thirdparty/lwip/src/core/snmp/*.c)
     CSRC += $(wildcard ../thirdparty/lwip/src/netif/*.c)
-    CSRC += $(wildcard ../thirdparty/lwip/src/netif/ppp/*.c)
+#    CSRC += $(wildcard ../thirdparty/lwip/src/netif/ppp/*.c)
     CSRC += $(wildcard ../thirdparty/lwip/port/FreeRTOS/*.c)
     CSRC += $(wildcard Ethernet/*.c)
   #  CSRC += $(wildcard ../stm32/stm32f4x7_ethernet/*.c)

+ 9 - 0
thirdparty/FreeRadius/include/includes.h

@@ -39,7 +39,14 @@
 //#include <sys/types.h>
 
 #include <ctype.h>
+
+//#ifdef PRINTF_STDLIB
 #include <stdio.h>
+/*#endif
+#ifdef PRINTF_CUSTOM
+#include "tinystdio.h"
+#endif*/
+
 #include <errno.h>
 
 #ifdef HAVE_NETDB_H
@@ -183,7 +190,9 @@ int sigprocmask (int, sigset_t *, sigset_t *);
 #endif
 
 /* rlib/lock.c */
+#if 0
 int do_lock_exclusive(FILE *);
 int do_unlock(FILE *);
+#endif
 
 #endif

+ 4 - 3
thirdparty/FreeRadius/lib/avpair.c

@@ -860,7 +860,7 @@ char *rc_avpair_log(rc_handle const *rh, VALUE_PAIR *pair, char *buf, size_t buf
 #endif    
 	return buf;
 }
-
+#if 0
 /** Get a sequence of attribute value pairs from the file input and make them into a list of value_pairs
  *
  * @param rh a handle to parsed configuration.
@@ -870,7 +870,7 @@ char *rc_avpair_log(rc_handle const *rh, VALUE_PAIR *pair, char *buf, size_t buf
 VALUE_PAIR *rc_avpair_readin(rc_handle const *rh, FILE *input)
 {
 	VALUE_PAIR *vp = NULL;
-#if 0  
+
 	char buffer[1024], *q;
 
 	while (fgets(buffer, sizeof(buffer), input) != NULL)
@@ -888,6 +888,7 @@ VALUE_PAIR *rc_avpair_readin(rc_handle const *rh, FILE *input)
 			return NULL;
 		}
 	}
-#endif
+
 	return vp;
 }
+#endif

+ 1 - 1
thirdparty/FreeRadius/lib/fr_log.c

@@ -32,7 +32,7 @@ void rc_openlog(char const *ident)
 void rc_log(int prio, char const *format, ...)
 {
 #ifdef RC_LOG  
-    printf(format);
+   // printf(format);
 #endif    
 /*  
 	char buff[1024];

+ 7 - 7
thirdparty/FreeRadius/radius_config.h

@@ -17,9 +17,9 @@
 #include <stdint.h>
 #include <string.h>
 
-#include "sockets.h"
+//#include "sockets.h"
 
-#define RC_LOG
+//#define RC_LOG
 #define STDC_HEADERS
 #define HAVE_RAND       //  Рандом генератор
 //#define HAVE_GETENTROPY // ?
@@ -52,7 +52,7 @@ struct __kernel_sockaddr_storage {
 
 // -----------------------------------------------------------------------------
 
-//typedef __kernel_sa_family_t	sa_family_t;
+typedef __kernel_sa_family_t	sa_family_t2;
 
 // -----------------------------------------------------------------------------
 /*
@@ -66,11 +66,11 @@ struct sockaddr {
 #define _SS_MAXSIZE    128  /* Implementation specific max size */
 #define _SS_ALIGNSIZE  (sizeof (int64_t))
 
-#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(sa_family_t))
-#define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof(sa_family_t)+ \
+#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(sa_family_t2))
+#define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof(sa_family_t2)+ \
                       _SS_PAD1SIZE + _SS_ALIGNSIZE))
 struct sockaddr_storage {
-    sa_family_t  ss_family;  /* Address family. */
+    sa_family_t2  ss_family;  /* Address family. */
 /*
  *  Following fields are implementation-defined.
  */
@@ -102,4 +102,4 @@ struct addrinfo {
 
 #endif /* #ifndef __RADIUS_CONFIG_H */
 
-/****************************** (C) LiteMesh ***************** end of file ****/
+/****************************** (C) LiteMesh ***************** end of file ****/

+ 1 - 1
thirdparty/lwip/port/FreeRTOS/ethernetif.c

@@ -51,7 +51,7 @@
 #include "netif/etharp.h"
 #include "err.h"
 #include "ethernetif.h"
-//#include "lwip/timers.h"
+#include "lwip/timeouts.h"
 
 #include "common_config.h"
 #include "settings_api.h"

+ 12 - 1
thirdparty/lwip/src/include/lwip/arch.h

@@ -77,7 +77,12 @@
  */
 #ifndef LWIP_PLATFORM_DIAG
 #define LWIP_PLATFORM_DIAG(x) do {printf x; printf("\r\n");} while(0)
+#ifdef PRINTF_STDLIB
 #include <stdio.h>
+#endif
+#ifdef PRINTF_CUSTOM
+#include "tinystdio.h"
+#endif
 #include <stdlib.h>
 #endif
 
@@ -89,7 +94,12 @@
 #ifndef LWIP_PLATFORM_ASSERT
 #define LWIP_PLATFORM_ASSERT(x) do {printf("Assertion \"%s\" failed at line %d in %s\n", \
                                      x, __LINE__, __FILE__); fflush(NULL); abort();} while(0)
+#ifdef PRINTF_STDLIB
 #include <stdio.h>
+#endif
+#ifdef PRINTF_CUSTOM
+#include "tinystdio.h"
+#endif
 #include <stdlib.h>
 #endif
 
@@ -122,7 +132,8 @@
 //typedef int16_t   s16_t;
 typedef uint32_t  u32_t;
 typedef int32_t   s32_t;
-typedef uintptr_t mem_ptr_t;
+//typedef uintptr_t mem_ptr_t;
+typedef unsigned long mem_ptr_t;
 #endif
 
 /** Define this to 1 in arch/cc.h of your port if your compiler does not provide

+ 6 - 1
thirdparty/lwip/src/include/netif/ppp/ppp_impl.h

@@ -41,7 +41,12 @@
 #include "ppp_settings.h"
 #endif
 
-#include <stdio.h> /* formats */
+#ifdef PRINTF_STDLIB
+#include <stdio.h>
+#endif
+#ifdef PRINTF_CUSTOM
+#include "tinystdio.h"
+#endif
 #include <stdarg.h>
 #include <string.h>
 #include <stdlib.h> /* strtol() */

+ 0 - 317
thirdparty/lwip/src/netif/ethernetif.c

@@ -1,317 +0,0 @@
-/**
- * @file
- * Ethernet Interface Skeleton
- *
- */
-
-/*
- * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
- * All rights reserved. 
- * 
- * Redistribution and use in source and binary forms, with or without modification, 
- * are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission. 
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
- * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
- * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
- * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * This file is part of the lwIP TCP/IP stack.
- * 
- * Author: Adam Dunkels <adam@sics.se>
- *
- */
-
-/*
- * This file is a skeleton for developing Ethernet network interface
- * drivers for lwIP. Add code to the low_level functions and do a
- * search-and-replace for the word "ethernetif" to replace it with
- * something that better describes your network interface.
- */
-
-#include "lwip/opt.h"
-
-#if 0 /* don't build, this is only a skeleton, see previous comment */
-
-#include "lwip/def.h"
-#include "lwip/mem.h"
-#include "lwip/pbuf.h"
-#include <lwip/stats.h>
-#include <lwip/snmp.h>
-#include "netif/etharp.h"
-#include "netif/ppp_oe.h"
-
-/* Define those to better describe your network interface. */
-#define IFNAME0 'e'
-#define IFNAME1 'n'
-
-/**
- * Helper struct to hold private data used to operate your ethernet interface.
- * Keeping the ethernet address of the MAC in this struct is not necessary
- * as it is already kept in the struct netif.
- * But this is only an example, anyway...
- */
-struct ethernetif {
-  struct eth_addr *ethaddr;
-  /* Add whatever per-interface state that is needed here. */
-};
-
-/* Forward declarations. */
-static void  ethernetif_input(struct netif *netif);
-
-/**
- * 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)
-{
-  struct ethernetif *ethernetif = netif->state;
-  
-  /* set MAC hardware address length */
-  netif->hwaddr_len = ETHARP_HWADDR_LEN;
-
-  /* set MAC hardware address */
-  netif->hwaddr[0] = ;
-  ...
-  netif->hwaddr[5] = ;
-
-  /* maximum transfer unit */
-  netif->mtu = 1500;
-  
-  /* device capabilities */
-  /* don't set NETIF_FLAG_ETHARP if this device is not an ethernet one */
-  netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP;
- 
-  /* Do whatever else is needed to initialize interface. */  
-}
-
-/**
- * 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 availale 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)
-{
-  struct ethernetif *ethernetif = netif->state;
-  struct pbuf *q;
-
-  initiate transfer();
-  
-#if ETH_PAD_SIZE
-  pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */
-#endif
-
-  for(q = p; q != NULL; q = q->next) {
-    /* Send the data from the pbuf to the interface, one pbuf at a
-       time. The size of the data in each pbuf is kept in the ->len
-       variable. */
-    send data from(q->payload, q->len);
-  }
-
-  signal that packet should be sent();
-
-#if ETH_PAD_SIZE
-  pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */
-#endif
-  
-  LINK_STATS_INC(link.xmit);
-
-  return ERR_OK;
-}
-
-/**
- * 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 ethernetif *ethernetif = netif->state;
-  struct pbuf *p, *q;
-  u16_t len;
-
-  /* Obtain the size of the packet and put it into the "len"
-     variable. */
-  len = ;
-
-#if ETH_PAD_SIZE
-  len += ETH_PAD_SIZE; /* allow room for Ethernet padding */
-#endif
-
-  /* We allocate a pbuf chain of pbufs from the pool. */
-  p = pbuf_alloc(PBUF_RAW, len, PBUF_POOL);
-  
-  if (p != NULL) {
-
-#if ETH_PAD_SIZE
-    pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */
-#endif
-
-    /* We iterate over the pbuf chain until we have read the entire
-     * packet into the pbuf. */
-    for(q = p; q != NULL; q = q->next) {
-      /* Read enough bytes to fill this pbuf in the chain. The
-       * available data in the pbuf is given by the q->len
-       * variable.
-       * This does not necessarily have to be a memcpy, you can also preallocate
-       * pbufs for a DMA-enabled MAC and after receiving truncate it to the
-       * actually received size. In this case, ensure the tot_len member of the
-       * pbuf is the sum of the chained pbuf len members.
-       */
-      read data into(q->payload, q->len);
-    }
-    acknowledge that packet has been read();
-
-#if ETH_PAD_SIZE
-    pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */
-#endif
-
-    LINK_STATS_INC(link.recv);
-  } else {
-    drop packet();
-    LINK_STATS_INC(link.memerr);
-    LINK_STATS_INC(link.drop);
-  }
-
-  return p;  
-}
-
-/**
- * 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(struct netif *netif)
-{
-  struct ethernetif *ethernetif;
-  struct eth_hdr *ethhdr;
-  struct pbuf *p;
-
-  ethernetif = netif->state;
-
-  /* move received packet into a new pbuf */
-  p = low_level_input(netif);
-  /* no packet could be read, silently ignore this */
-  if (p == NULL) return;
-  /* points to packet payload, which starts with an Ethernet header */
-  ethhdr = p->payload;
-
-  switch (htons(ethhdr->type)) {
-  /* IP or ARP packet? */
-  case ETHTYPE_IP:
-  case ETHTYPE_ARP:
-#if PPPOE_SUPPORT
-  /* PPPoE packet? */
-  case ETHTYPE_PPPOEDISC:
-  case ETHTYPE_PPPOE:
-#endif /* PPPOE_SUPPORT */
-    /* full packet send to tcpip_thread to process */
-    if (netif->input(p, netif)!=ERR_OK)
-     { LWIP_DEBUGF(NETIF_DEBUG, ("ethernetif_input: IP input error\n"));
-       pbuf_free(p);
-       p = NULL;
-     }
-    break;
-
-  default:
-    pbuf_free(p);
-    p = NULL;
-    break;
-  }
-}
-
-/**
- * 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)
-{
-  struct ethernetif *ethernetif;
-
-  LWIP_ASSERT("netif != NULL", (netif != NULL));
-    
-  ethernetif = mem_malloc(sizeof(struct ethernetif));
-  if (ethernetif == NULL) {
-    LWIP_DEBUGF(NETIF_DEBUG, ("ethernetif_init: out of memory\n"));
-    return ERR_MEM;
-  }
-
-#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.
-   */
-  NETIF_INIT_SNMP(netif, snmp_ifType_ethernet_csmacd, LINK_SPEED_OF_YOUR_NETIF_IN_BPS);
-
-  netif->state = ethernetif;
-  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...) */
-  netif->output = etharp_output;
-  netif->linkoutput = low_level_output;
-  
-  ethernetif->ethaddr = (struct eth_addr *)&(netif->hwaddr[0]);
-  
-  /* initialize the hardware */
-  low_level_init(netif);
-
-  return ERR_OK;
-}
-
-#endif /* 0 */

+ 5 - 0
thirdparty/lwip/src/netif/ppp/ppp_oe.c

@@ -81,7 +81,12 @@
 #include "lwip/memp.h"
 
 #include <string.h>
+#ifdef PRINTF_STDLIB
 #include <stdio.h>
+#endif
+#ifdef PRINTF_CUSTOM
+#include "tinystdio.h"
+#endif
 
 
 /* Add a 16 bit unsigned value to a buffer pointed to by PTR */

+ 0 - 584
thirdparty/lwip/src/netif/sys_arch.c

@@ -1,584 +0,0 @@
-/*
- * Copyright (c) 2001-2003 Swedish Institute of Computer Science.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
- * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
- * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * This file is part of the lwIP TCP/IP stack.
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- */
-
-//*****************************************************************************
-//
-// Include OS functionality.
-//
-//*****************************************************************************
-
-/* ------------------------ System architecture includes ----------------------------- */
-#include "arch/sys_arch.h"
-
-/* ------------------------ lwIP includes --------------------------------- */
-#include "lwip/opt.h"
-
-#include "lwip/debug.h"
-#include "lwip/def.h"
-#include "lwip/sys.h"
-#include "lwip/mem.h"
-#include "lwip/stats.h"
-
-/* Very crude mechanism used to determine if the critical section handling
-functions are being called from an interrupt context or not.  This relies on
-the interrupt handler setting this variable manually. */
-portBASE_TYPE xInsideISR = pdFALSE;
-
-/*---------------------------------------------------------------------------*
- * Routine:  sys_mbox_new
- *---------------------------------------------------------------------------*
- * Description:
- *      Creates a new mailbox
- * Inputs:
- *      int size                -- Size of elements in the mailbox
- * Outputs:
- *      sys_mbox_t              -- Handle to new mailbox
- *---------------------------------------------------------------------------*/
-err_t sys_mbox_new( sys_mbox_t *pxMailBox, int iSize )
-{
-err_t xReturn = ERR_MEM;
-
-	*pxMailBox = xQueueCreate( iSize, sizeof( void * ) );
-
-	if( *pxMailBox != NULL )
-	{
-		xReturn = ERR_OK;
-		SYS_STATS_INC_USED( mbox );
-	}
-
-	return xReturn;
-}
-
-
-/*---------------------------------------------------------------------------*
- * Routine:  sys_mbox_free
- *---------------------------------------------------------------------------*
- * Description:
- *      Deallocates a mailbox. If there are messages still present in the
- *      mailbox when the mailbox is deallocated, it is an indication of a
- *      programming error in lwIP and the developer should be notified.
- * Inputs:
- *      sys_mbox_t mbox         -- Handle of mailbox
- * Outputs:
- *      sys_mbox_t              -- Handle to new mailbox
- *---------------------------------------------------------------------------*/
-void sys_mbox_free( sys_mbox_t *pxMailBox )
-{
-unsigned long ulMessagesWaiting;
-
-	ulMessagesWaiting = uxQueueMessagesWaiting( *pxMailBox );
-	configASSERT( ( ulMessagesWaiting == 0 ) );
-
-	#if SYS_STATS
-	{
-		if( ulMessagesWaiting != 0UL )
-		{
-			SYS_STATS_INC( mbox.err );
-		}
-
-		SYS_STATS_DEC( mbox.used );
-	}
-	#endif /* SYS_STATS */
-
-	vQueueDelete( *pxMailBox );
-}
-
-/*---------------------------------------------------------------------------*
- * Routine:  sys_mbox_post
- *---------------------------------------------------------------------------*
- * Description:
- *      Post the "msg" to the mailbox.
- * Inputs:
- *      sys_mbox_t mbox         -- Handle of mailbox
- *      void *data              -- Pointer to data to post
- *---------------------------------------------------------------------------*/
-void sys_mbox_post( sys_mbox_t *pxMailBox, void *pxMessageToPost )
-{
-	while( xQueueSendToBack( *pxMailBox, &pxMessageToPost, portMAX_DELAY ) != pdTRUE );
-}
-
-/*---------------------------------------------------------------------------*
- * Routine:  sys_mbox_trypost
- *---------------------------------------------------------------------------*
- * Description:
- *      Try to post the "msg" to the mailbox.  Returns immediately with
- *      error if cannot.
- * Inputs:
- *      sys_mbox_t mbox         -- Handle of mailbox
- *      void *msg               -- Pointer to data to post
- * Outputs:
- *      err_t                   -- ERR_OK if message posted, else ERR_MEM
- *                                  if not.
- *---------------------------------------------------------------------------*/
-err_t sys_mbox_trypost( sys_mbox_t *pxMailBox, void *pxMessageToPost )
-{
-err_t xReturn;
-portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
-
-	if( xInsideISR != pdFALSE )
-	{
-		xReturn = xQueueSendFromISR( *pxMailBox, &pxMessageToPost, &xHigherPriorityTaskWoken );
-	}
-	else
-	{
-		xReturn = xQueueSend( *pxMailBox, &pxMessageToPost, ( TickType_t ) 0 );
-	}
-
-	if( xReturn == pdPASS )
-	{
-		xReturn = ERR_OK;
-	}
-	else
-	{
-		/* The queue was already full. */
-		xReturn = ERR_MEM;
-		SYS_STATS_INC( mbox.err );
-	}
-
-	return xReturn;
-}
-
-/*---------------------------------------------------------------------------*
- * Routine:  sys_arch_mbox_fetch
- *---------------------------------------------------------------------------*
- * Description:
- *      Blocks the thread until a message arrives in the mailbox, but does
- *      not block the thread longer than "timeout" milliseconds (similar to
- *      the sys_arch_sem_wait() function). The "msg" argument is a result
- *      parameter that is set by the function (i.e., by doing "*msg =
- *      ptr"). The "msg" parameter maybe NULL to indicate that the message
- *      should be dropped.
- *
- *      The return values are the same as for the sys_arch_sem_wait() function:
- *      Number of milliseconds spent waiting or SYS_ARCH_TIMEOUT if there was a
- *      timeout.
- *
- *      Note that a function with a similar name, sys_mbox_fetch(), is
- *      implemented by lwIP.
- * Inputs:
- *      sys_mbox_t mbox         -- Handle of mailbox
- *      void **msg              -- Pointer to pointer to msg received
- *      u32_t timeout           -- Number of milliseconds until timeout
- * Outputs:
- *      u32_t                   -- SYS_ARCH_TIMEOUT if timeout, else number
- *                                  of milliseconds until received.
- *---------------------------------------------------------------------------*/
-u32_t sys_arch_mbox_fetch( sys_mbox_t *pxMailBox, void **ppvBuffer, u32_t ulTimeOut )
-{
-void *pvDummy;
-TickType_t xStartTime, xEndTime, xElapsed;
-unsigned long ulReturn;
-
-	xStartTime = xTaskGetTickCount();
-
-	if( NULL == ppvBuffer )
-	{
-		ppvBuffer = &pvDummy;
-	}
-
-	if( ulTimeOut != 0UL )
-	{
-		configASSERT( xInsideISR == ( portBASE_TYPE ) 0 );
-
-		if( pdTRUE == xQueueReceive( *pxMailBox, &( *ppvBuffer ), ulTimeOut/ portTICK_PERIOD_MS ) )
-		{
-			xEndTime = xTaskGetTickCount();
-			xElapsed = ( xEndTime - xStartTime ) * portTICK_PERIOD_MS;
-
-			ulReturn = xElapsed;
-		}
-		else
-		{
-			/* Timed out. */
-			*ppvBuffer = NULL;
-			ulReturn = SYS_ARCH_TIMEOUT;
-		}
-	}
-	else
-	{
-		while( pdTRUE != xQueueReceive( *pxMailBox, &( *ppvBuffer ), portMAX_DELAY ) );
-		xEndTime = xTaskGetTickCount();
-		xElapsed = ( xEndTime - xStartTime ) * portTICK_PERIOD_MS;
-
-		if( xElapsed == 0UL )
-		{
-			xElapsed = 1UL;
-		}
-
-		ulReturn = xElapsed;
-	}
-
-	return ulReturn;
-}
-
-/*---------------------------------------------------------------------------*
- * Routine:  sys_arch_mbox_tryfetch
- *---------------------------------------------------------------------------*
- * Description:
- *      Similar to sys_arch_mbox_fetch, but if message is not ready
- *      immediately, we'll return with SYS_MBOX_EMPTY.  On success, 0 is
- *      returned.
- * Inputs:
- *      sys_mbox_t mbox         -- Handle of mailbox
- *      void **msg              -- Pointer to pointer to msg received
- * Outputs:
- *      u32_t                   -- SYS_MBOX_EMPTY if no messages.  Otherwise,
- *                                  return ERR_OK.
- *---------------------------------------------------------------------------*/
-u32_t sys_arch_mbox_tryfetch( sys_mbox_t *pxMailBox, void **ppvBuffer )
-{
-void *pvDummy;
-unsigned long ulReturn;
-long lResult;
-portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
-
-	if( ppvBuffer== NULL )
-	{
-		ppvBuffer = &pvDummy;
-	}
-
-	if( xInsideISR != pdFALSE )
-	{
-		lResult = xQueueReceiveFromISR( *pxMailBox, &( *ppvBuffer ), &xHigherPriorityTaskWoken );
-	}
-	else
-	{
-		lResult = xQueueReceive( *pxMailBox, &( *ppvBuffer ), 0UL );
-	}
-
-	if( lResult == pdPASS )
-	{
-		ulReturn = ERR_OK;
-	}
-	else
-	{
-		ulReturn = SYS_MBOX_EMPTY;
-	}
-
-	return ulReturn;
-}
-
-/*---------------------------------------------------------------------------*
- * Routine:  sys_sem_new
- *---------------------------------------------------------------------------*
- * Description:
- *      Creates and returns a new semaphore. The "ucCount" argument specifies
- *      the initial state of the semaphore.
- *      NOTE: Currently this routine only creates counts of 1 or 0
- * Inputs:
- *      sys_mbox_t mbox         -- Handle of mailbox
- *      u8_t ucCount              -- Initial ucCount of semaphore (1 or 0)
- * Outputs:
- *      sys_sem_t               -- Created semaphore or 0 if could not create.
- *---------------------------------------------------------------------------*/
-err_t sys_sem_new( sys_sem_t *pxSemaphore, u8_t ucCount )
-{
-err_t xReturn = ERR_MEM;
-
-	vSemaphoreCreateBinary( ( *pxSemaphore ) );
-
-	if( *pxSemaphore != NULL )
-	{
-		if( ucCount == 0U )
-		{
-			xSemaphoreTake( *pxSemaphore, 1UL );
-		}
-
-		xReturn = ERR_OK;
-		SYS_STATS_INC_USED( sem );
-	}
-	else
-	{
-		SYS_STATS_INC( sem.err );
-	}
-
-	return xReturn;
-}
-
-/*---------------------------------------------------------------------------*
- * Routine:  sys_arch_sem_wait
- *---------------------------------------------------------------------------*
- * Description:
- *      Blocks the thread while waiting for the semaphore to be
- *      signaled. If the "timeout" argument is non-zero, the thread should
- *      only be blocked for the specified time (measured in
- *      milliseconds).
- *
- *      If the timeout argument is non-zero, the return value is the number of
- *      milliseconds spent waiting for the semaphore to be signaled. If the
- *      semaphore wasn't signaled within the specified time, the return value is
- *      SYS_ARCH_TIMEOUT. If the thread didn't have to wait for the semaphore
- *      (i.e., it was already signaled), the function may return zero.
- *
- *      Notice that lwIP implements a function with a similar name,
- *      sys_sem_wait(), that uses the sys_arch_sem_wait() function.
- * Inputs:
- *      sys_sem_t sem           -- Semaphore to wait on
- *      u32_t timeout           -- Number of milliseconds until timeout
- * Outputs:
- *      u32_t                   -- Time elapsed or SYS_ARCH_TIMEOUT.
- *---------------------------------------------------------------------------*/
-u32_t sys_arch_sem_wait( sys_sem_t *pxSemaphore, u32_t ulTimeout )
-{
-TickType_t xStartTime, xEndTime, xElapsed;
-unsigned long ulReturn;
-
-	xStartTime = xTaskGetTickCount();
-
-	if( ulTimeout != 0UL )
-	{
-		if( xSemaphoreTake( *pxSemaphore, ulTimeout / portTICK_PERIOD_MS ) == pdTRUE )
-		{
-			xEndTime = xTaskGetTickCount();
-			xElapsed = (xEndTime - xStartTime) * portTICK_PERIOD_MS;
-			ulReturn = xElapsed;
-		}
-		else
-		{
-			ulReturn = SYS_ARCH_TIMEOUT;
-		}
-	}
-	else
-	{
-		while( xSemaphoreTake( *pxSemaphore, portMAX_DELAY ) != pdTRUE );
-		xEndTime = xTaskGetTickCount();
-		xElapsed = ( xEndTime - xStartTime ) * portTICK_PERIOD_MS;
-
-		if( xElapsed == 0UL )
-		{
-			xElapsed = 1UL;
-		}
-
-		ulReturn = xElapsed;
-	}
-
-	return ulReturn;
-}
-
-/** Create a new mutex
- * @param mutex pointer to the mutex to create
- * @return a new mutex */
-err_t sys_mutex_new( sys_mutex_t *pxMutex )
-{
-err_t xReturn = ERR_MEM;
-
-	*pxMutex = xSemaphoreCreateMutex();
-
-	if( *pxMutex != NULL )
-	{
-		xReturn = ERR_OK;
-		SYS_STATS_INC_USED( mutex );
-	}
-	else
-	{
-		SYS_STATS_INC( mutex.err );
-	}
-
-	return xReturn;
-}
-
-/** Lock a mutex
- * @param mutex the mutex to lock */
-void sys_mutex_lock( sys_mutex_t *pxMutex )
-{
-	while( xSemaphoreTake( *pxMutex, portMAX_DELAY ) != pdPASS );
-}
-
-/** Unlock a mutex
- * @param mutex the mutex to unlock */
-void sys_mutex_unlock(sys_mutex_t *pxMutex )
-{
-	xSemaphoreGive( *pxMutex );
-}
-
-
-/** Delete a semaphore
- * @param mutex the mutex to delete */
-void sys_mutex_free( sys_mutex_t *pxMutex )
-{
-	SYS_STATS_DEC( mutex.used );
-	vQueueDelete( *pxMutex );
-}
-
-
-/*---------------------------------------------------------------------------*
- * Routine:  sys_sem_signal
- *---------------------------------------------------------------------------*
- * Description:
- *      Signals (releases) a semaphore
- * Inputs:
- *      sys_sem_t sem           -- Semaphore to signal
- *---------------------------------------------------------------------------*/
-void sys_sem_signal( sys_sem_t *pxSemaphore )
-{
-portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
-
-	if( xInsideISR != pdFALSE )
-	{
-		xSemaphoreGiveFromISR( *pxSemaphore, &xHigherPriorityTaskWoken );
-	}
-	else
-	{
-		xSemaphoreGive( *pxSemaphore );
-	}
-}
-
-/*---------------------------------------------------------------------------*
- * Routine:  sys_sem_free
- *---------------------------------------------------------------------------*
- * Description:
- *      Deallocates a semaphore
- * Inputs:
- *      sys_sem_t sem           -- Semaphore to free
- *---------------------------------------------------------------------------*/
-void sys_sem_free( sys_sem_t *pxSemaphore )
-{
-	SYS_STATS_DEC(sem.used);
-	vQueueDelete( *pxSemaphore );
-}
-
-/*---------------------------------------------------------------------------*
- * Routine:  sys_init
- *---------------------------------------------------------------------------*
- * Description:
- *      Initialize sys arch
- *---------------------------------------------------------------------------*/
-void sys_init(void)
-{
-}
-
-u32_t sys_now(void)
-{
-	return xTaskGetTickCount();
-}
-
-/*---------------------------------------------------------------------------*
- * Routine:  sys_thread_new
- *---------------------------------------------------------------------------*
- * Description:
- *      Starts a new thread with priority "prio" that will begin its
- *      execution in the function "thread()". The "arg" argument will be
- *      passed as an argument to the thread() function. The id of the new
- *      thread is returned. Both the id and the priority are system
- *      dependent.
- * Inputs:
- *      char *name              -- Name of thread
- *      void (* thread)(void *arg) -- Pointer to function to run.
- *      void *arg               -- Argument passed into function
- *      int stacksize           -- Required stack amount in bytes
- *      int prio                -- Thread priority
- * Outputs:
- *      sys_thread_t            -- Pointer to per-thread timeouts.
- *---------------------------------------------------------------------------*/
-sys_thread_t sys_thread_new( const char *pcName, void( *pxThread )( void *pvParameters ), void *pvArg, int iStackSize, int iPriority )
-{
-TaskHandle_t xCreatedTask;
-portBASE_TYPE xResult;
-sys_thread_t xReturn;
-
-	xResult = xTaskCreate( pxThread, pcName, iStackSize, pvArg, iPriority, &xCreatedTask );
-
-	if( xResult == pdPASS )
-	{
-		xReturn = xCreatedTask;
-	}
-	else
-	{
-		xReturn = NULL;
-	}
-
-	return xReturn;
-}
-
-/*---------------------------------------------------------------------------*
- * Routine:  sys_arch_protect
- *---------------------------------------------------------------------------*
- * Description:
- *      This optional function does a "fast" critical region protection and
- *      returns the previous protection level. This function is only called
- *      during very short critical regions. An embedded system which supports
- *      ISR-based drivers might want to implement this function by disabling
- *      interrupts. Task-based systems might want to implement this by using
- *      a mutex or disabling tasking. This function should support recursive
- *      calls from the same task or interrupt. In other words,
- *      sys_arch_protect() could be called while already protected. In
- *      that case the return value indicates that it is already protected.
- *
- *      sys_arch_protect() is only required if your port is supporting an
- *      operating system.
- * Outputs:
- *      sys_prot_t              -- Previous protection level (not used here)
- *---------------------------------------------------------------------------*/
-sys_prot_t sys_arch_protect( void )
-{
-	if( xInsideISR == pdFALSE )
-	{
-		taskENTER_CRITICAL();
-	}
-	return ( sys_prot_t ) 1;
-}
-
-/*---------------------------------------------------------------------------*
- * Routine:  sys_arch_unprotect
- *---------------------------------------------------------------------------*
- * Description:
- *      This optional function does a "fast" set of critical region
- *      protection to the value specified by pval. See the documentation for
- *      sys_arch_protect() for more information. This function is only
- *      required if your port is supporting an operating system.
- * Inputs:
- *      sys_prot_t              -- Previous protection level (not used here)
- *---------------------------------------------------------------------------*/
-void sys_arch_unprotect( sys_prot_t xValue )
-{
-	(void) xValue;
-	if( xInsideISR == pdFALSE )
-	{
-		taskEXIT_CRITICAL();
-	}
-}
-
-/*
- * Prints an assertion messages and aborts execution.
- */
-void sys_assert( const char *pcMessage )
-{
-	(void) pcMessage;
-
-	for (;;)
-	{
-	}
-}
-/*-------------------------------------------------------------------------*
- * End of File:  sys_arch.c
- *-------------------------------------------------------------------------*/
-

+ 5 - 0
thirdparty/lwip/system/arch/cc.h

@@ -33,7 +33,12 @@
 #define __CC_H__
 
 #include "cpu.h"
+#ifdef PRINTF_STDLIB
 #include <stdio.h>
+#endif
+#ifdef PRINTF_CUSTOM
+#include "tinystdio.h"
+#endif
 #include <stdlib.h>
 
 typedef unsigned   char    u8_t;

BIN
tracefile.bin