diff options
| author | Jeffrey Armstrong <jeffrey.armstrong@approximatrix.com> | 2016-08-25 15:14:24 -0400 |
|---|---|---|
| committer | Jeffrey Armstrong <jeffrey.armstrong@approximatrix.com> | 2016-08-25 15:14:24 -0400 |
| commit | 84de937689bcb35ea3ddae55d9c74dc23463f79c (patch) | |
| tree | cddc948933f9e0ee0a3f1b4caeaea5eb93bfcc98 /dos | |
| download | uIP-FOSSIL-84de937689bcb35ea3ddae55d9c74dc23463f79c.tar.gz uIP-FOSSIL-84de937689bcb35ea3ddae55d9c74dc23463f79c.zip | |
Initial commit of original code
Diffstat (limited to 'dos')
| -rw-r--r-- | dos/app.h | 8 | ||||
| -rw-r--r-- | dos/clk_arch.c | 41 | ||||
| -rw-r--r-- | dos/clk_arch.h | 44 | ||||
| -rw-r--r-- | dos/main.c | 206 | ||||
| -rw-r--r-- | dos/main.h | 43 | ||||
| -rw-r--r-- | dos/uip-conf.h | 58 |
6 files changed, 400 insertions, 0 deletions
diff --git a/dos/app.h b/dos/app.h new file mode 100644 index 0000000..c22bf23 --- /dev/null +++ b/dos/app.h @@ -0,0 +1,8 @@ +#ifndef __UIP_APP_DEFINITION_HEADER +#define __UIP_APP_DEFINITION_HEADER + +/* This file is meant to define any application-specific settings */ + +#include "httpd.h" /* Should be sufficient */ + +#endif /* __UIP_APP_DEFINITION_HEADER */ diff --git a/dos/clk_arch.c b/dos/clk_arch.c new file mode 100644 index 0000000..0361871 --- /dev/null +++ b/dos/clk_arch.c @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2009 Jeffrey Armstrong + * 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 uIP TCP/IP stack - MS-DOS FOSSIL port. + * + * Author: Jeffrey Armstrong <jeff@rainbow-100.com> + * + */ + +#include <time.h> +#include "clk_arch.h" + +clock_time_t clock_time(void) +{ + return clock(); +} diff --git a/dos/clk_arch.h b/dos/clk_arch.h new file mode 100644 index 0000000..535ed54 --- /dev/null +++ b/dos/clk_arch.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2009 Jeffrey Armstrong + * 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 uIP TCP/IP stack - MS-DOS FOSSIL port. + * + * Author: Jeffrey Armstrong <jeff@rainbow-100.com> + * + */ + +#ifndef __CLOCK_ARCH_HEADERS +#define __CLOCK_ARCH_HEADERS + +#include <time.h> + +typedef clock_t clock_time_t; + +#define CLOCK_CONF_SECOND CLK_TCK + +#endif /* __CLOCK_ARCH_HEADERS */ diff --git a/dos/main.c b/dos/main.c new file mode 100644 index 0000000..0acf87e --- /dev/null +++ b/dos/main.c @@ -0,0 +1,206 @@ +/* + * Copyright (c) 2009 Jeffrey Armstrong + * 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 uIP TCP/IP stack - MS-DOS FOSSIL port. + * + * Author: Jeffrey Armstrong <jeff@rainbow-100.com> + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "httpd.h" + +#include "main.h" /* Must come first - contains necessary declaration of + * uip_tcp_appstate + */ + +#include "fossil.h" +#include "uip.h" +#include "uip_arp.h" +#include "slipdev.h" +#include "slipfos.h" + + +#include "timer.h" + +#define BUF ((struct uip_eth_hdr *)&uip_buf[0]) + +int ip_from_string(const char *string, int ip[4]) +{ +char *token; +char *original; +int i, ret; + + for(i=0;i<4;i++) ip[i] = 0; + if(string == NULL) return -1; + + original = (char *)malloc((strlen(string)+1)*sizeof(char)); + memcpy(original,string,strlen(string)+1); + + ret = 1; + token = strtok(original,"."); + for(i=0;i<4;i++) { + if(token == NULL) { + ret = -1; + break; + } + ip[i] = atoi(token); + token = strtok(NULL,"."); + } + + token = NULL; + free(original); + + return ret; +} + +void header() { + printf("+----------------------------------------------------------+\n"); + printf("| uIP/FOSSIL HTTP Server Version 1.0 |\n"); + printf("| Copyright 2009 Jeffrey Armstrong |\n"); + printf("| Portions Copyright Swedish Institute of Computer Science |\n"); + printf("| Portions Copyright Adam Dunkels |\n"); + printf("+----------------------------------------------------------+\n\n"); +} + +int main(int argc, char *argv[]) +{ +int i; +uip_ipaddr_t ipaddr; +struct timer periodic_timer; + +int ip[4]; + + header(); + + if(argc != 6) { + printf("Usage: %s <host ip> <local ip> <netmask> <comport> <baud>\n",argv[0]); + return 0; + } + + timer_set(&periodic_timer, CLOCK_SECOND / 2); + + /* Initialize the FOSSIL driver here */ + printf("Initializing FOSSIL driver..."); + if(slip_fossil_init(atoi(argv[4]),atoi(argv[5])) < 0) { + printf("FAILED\nExiting...\n"); + return 0; + } + printf("OK\n"); + + printf("Initializing SLIP interface..."); + slipdev_init(); + printf("OK\n"); + + printf("Initializing uIP stack..."); + uip_init(); + printf("OK\n"); + + /* Set IP and netmask from command line arguments */ + for(i=1;i<4;i++) { + if(ip_from_string(argv[i],ip) < 0) { + printf("Error parsing ip/netmask in argument %d: %s\nMake sure this argument is a valid 4-element dot-delimited string.\n",i,argv[i]); + return 0; + } else { + uip_ipaddr(&ipaddr, ip[0], ip[1], ip[2], ip[3]); + switch(i) { + case 1: + uip_setdraddr(&ipaddr); + break; + case 2: + uip_sethostaddr(&ipaddr); + break; + case 3: + uip_setnetmask(&ipaddr); + break; + } + } + } + + printf("Initializing httpd server..."); + httpd_init(); + printf("OK\n"); + +#ifdef INITIALIZE_ONLY + return 1; +#endif + + uip_gethostaddr(&ipaddr); + printf("Server is now running - press any key to exit...\n"); + while(1) { + uip_len = slipdev_poll(); + if(uip_len > 0) { + +#ifdef DEBUG + printf("data received: %d (%x)\n",uip_len,(int)BUF->type); +#endif + + uip_input(); + + /* If the above function invocation resulted in data that + should be sent out on the network, the global variable + uip_len is set to a value > 0. */ + + if(uip_len > 0) { + +#ifdef DEBUG + printf("output ready: %d\n",uip_len); +#endif + + slipdev_send(); + } + } else if(timer_expired(&periodic_timer)) { + timer_reset(&periodic_timer); + for(i = 0; i < UIP_CONNS; i++) { + uip_periodic(i); + /* If the above function invocation resulted in data that + should be sent out on the network, the global variable + uip_len is set to a value > 0. */ + if(uip_len > 0) { + slipdev_send(); + } + } + } + + if(Kb_Hit() == 1) + break; + } + + + return 0; +} + +void uip_log(char *m) +{ +#ifdef DEBUG + printf("uIP log message: %s\n", m); +#endif +} diff --git a/dos/main.h b/dos/main.h new file mode 100644 index 0000000..695c3dc --- /dev/null +++ b/dos/main.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2005, 2009 Jeffrey Armstrong + * 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 uIP TCP/IP stack - MS-DOS FOSSIL port. + * + * Author: Jeffrey Armstrong <jeff@rainbow-100.com> + * + */ +#ifndef __HTTPD_MAIN_HEADERS +#define __HTTPD_MAIN_HEADERS + +void httpd_appcall(void); +#define UIP_APPCALL httpd_appcall + +typedef struct httpd_state uip_tcp_appstate_t; + +#endif /* __HTTPD_MAIN_HEADERS */ + diff --git a/dos/uip-conf.h b/dos/uip-conf.h new file mode 100644 index 0000000..7b1099d --- /dev/null +++ b/dos/uip-conf.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2009 Jeffrey Armstrong + * 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 uIP TCP/IP stack - MS-DOS FOSSIL port. + * + * Author: Jeffrey Armstrong <jeff@rainbow-100.com> + * + */ + +#ifndef UIP_CONF_HEADERS__ +#define UIP_CONF_HEADERS__ + +#define UIP_CONF_STATISTICS 0 +#undef UIP_COMPILE_STATISTICS +#define UIP_CONF_UDP 0 +#define UIP_STATS UIP_CONF_STATISTICS + +#define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN + +#define UIP_CONF_MAX_CONNECTIONS 50 + +typedef unsigned char u8_t; +typedef unsigned int u16_t; + +/* Some application-specific settings... */ +#include "app.h" +#include "main.h" + +typedef long uip_stats_t; +typedef void* uip_udp_appstate_t; +/* typedef void* uip_tcp_appstate_t; */ + +#endif /* UIP_CONF_HEADERS__ */ |
