blob: f1c81f9e3665216aeb8a2120c066c5cb123ff8e5 [file] [log] [blame]
/*
* Copyright (c) 2002, Adam Dunkels.
* 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 Contiki desktop environment
*
* $Id: contiki-main.c,v 1.6 2004/09/13 23:23:16 adamdunkels Exp $
*
*/
#include "ctk.h"
#include "ctk-draw.h"
#include "ctk-vncserver.h"
#include "ctk-termtelnet.h"
#include "ek.h"
#include "uiplib.h"
#include "uip.h"
#include "uip_arp.h"
#include "rtl8019-drv.h"
#include "resolv.h"
#include "clock.h"
#include "webserver.h"
#include "program-handler.h"
#include "about-dsc.h"
#include "irc-dsc.h"
#include "netconf-dsc.h"
#include "processes-dsc.h"
#include "calc-dsc.h"
#include "www-dsc.h"
#include "webserver-dsc.h"
/*#include "directory-dsc.h"*/
#include "weblinks-dsc.h"
#include "telnetd-dsc.h"
#include "debug.h"
#include "uip.h"
#include "uip_arp.h"
#include "compiler.h"
#include "rtl8019dev.h"
#include "avr/pgmspace.h"
static const struct uip_eth_addr ethaddr = {{0x00,0x06,0x98,0x01,0x02,0x29}};
static u16_t addr[2];
/*-----------------------------------------------------------------------------------*/
static void setup_xram(void) __attribute__ ((naked)) \
__attribute__ ((section (".init1")));
static void
setup_xram(void)
{
outp(BV(SRE) | BV(SRW), MCUCR);
}
/*-----------------------------------------------------------------------------------*/
static unsigned short count;
static void init_timer(void)
{
/* timer overflows every 32.8ms (with 8MHz clock) */
/* timer0 prescale 1/1024 (5) */
outp(5, TCCR0);
/* interrupt on overflow */
sbi(TIMSK, TOIE0);
count = 0;
}
SIGNAL(SIG_OVERFLOW0)
{
++count;
}
clock_time_t
clock_time(void)
{
return count;
}
/*-----------------------------------------------------------------------------------*/
int
main(int argc, char **argv)
{
/* Setup stack pointer so that it does not interfere with the rest
of the RAM. */
/* asm("ldi r28,lo8(0x00807fff)");
asm("ldi r29,hi8(0x00807fff)");
asm("out 0x3e, r29");
asm("out 0x3d, r28");*/
/* Fiddle with RS232 settings of the AVR: */
/* Enable transmit. */
UCSR0B = _BV(TXEN);
/* Set baud rate (23 =~ 38400) */
UBRR0H = 0;
UBRR0L = 23;
UDR0 = '\n';
outp(BV(SRE) | BV(SRW), MCUCR);
/* end RS232 fiddling. */
init_timer();
sei();
ek_init();
uip_init();
tcpip_init(NULL);
resolv_init(NULL);
debug_print8(1);
uip_setethaddr(ethaddr);
#if 1
uip_ipaddr(addr, 193,10,67,152);
uip_sethostaddr(addr);
uip_ipaddr(addr, 193,10,64,1);
uip_setdraddr(addr);
uip_ipaddr(addr, 255,255,252,0);
uip_setnetmask(addr);
uip_ipaddr(addr, 193,10,66,195);
resolv_conf(addr);
#else
uip_ipaddr(addr, 192,168,27,2);
uip_sethostaddr(addr);
uip_ipaddr(addr, 192,168,27,1);
uip_setdraddr(addr);
uip_ipaddr(addr, 255,255,255,0);
uip_setnetmask(addr);
uip_ipaddr(addr, 195,54,122,204);
resolv_conf(addr);
#endif
ctk_init();
rtl8019_drv_init();
ctk_vncserver_init(NULL);
/* ctk_termtelnet_init(NULL);*/
program_handler_init();
webserver_init(NULL);
/* program_handler_add(&netconf_dsc, "Network config", 1);*/
/*program_handler_add(&irc_dsc, "IRC client", 1);*/
program_handler_add(&calc_dsc, "Calculator", 0);
program_handler_add(&weblinks_dsc, "Web links", 1);
program_handler_add(&www_dsc, "Web browser", 1);
program_handler_add(&webserver_dsc, "Web server", 1);
program_handler_add(&processes_dsc, "Processes", 1);
program_handler_add(&about_dsc, "About", 1);
debug_print8(64);
while(1) {
ek_run();
}
return 0;
argv = argv;
argc = argc;
}
/*-----------------------------------------------------------------------------------*/
char *shell_prompt_text = "contiki-ethernut> ";
unsigned char
uip_fw_forward(void)
{
return 0;
}
void
uip_fw_periodic(void)
{
}