Exemplo n.º 1
0
void stack_init(void)
{
	uip_ipaddr_t ipaddr;
	struct uip_eth_addr mac;
	
	mac.addr[0] = mac_addr[0];
	mac.addr[1] = mac_addr[1];
	mac.addr[2] = mac_addr[2];
	mac.addr[3] = mac_addr[3];
	mac.addr[4] = mac_addr[4];
	mac.addr[5] = mac_addr[5];
	
	timer_set(&periodic_timer, CLOCK_SECOND / 2);
	timer_set(&arp_timer, CLOCK_SECOND * 10);
	timer_set(&self_arp_timer, CLOCK_SECOND * 30);
	
	uip_init();

	uip_setethaddr(mac);

	udpapp_init();
	tcp_app_init();
	
	uip_ipaddr(ipaddr, local_ip[0], local_ip[1], local_ip[2], local_ip[3]);
	uip_sethostaddr(ipaddr);
	uip_ipaddr(ipaddr, gateway_ip[0],gateway_ip[1],gateway_ip[2],gateway_ip[3]);
	uip_setdraddr(ipaddr);
	uip_ipaddr(ipaddr, subnet_mask[0],subnet_mask[1],subnet_mask[2],subnet_mask[3]);
	uip_setnetmask(ipaddr);
	
}
Exemplo n.º 2
0
Arquivo: main.c Projeto: sli92/netcon
int main(void)
{
    uint32_t lastperiodic = 0;
    uint32_t lastarp = 0;

    uint8_t i;

    sysclk_init();

    clock_init();

    /* Interrupts aktivieren. */
    IE |= (1 << _EA);

    io_init();
    emif_init();
    uart_init();
    cp2200_init();

    uip_init();
    uip_arp_init();


    memcpy(uip_ethaddr.addr, mac_addr, sizeof(uip_ethaddr.addr));

    tcp_app_init();
    udp_app_init();


    while(1 > 0) {
        uip_len = cp2200_receive(uip_buf, UIP_CONF_BUFFER_SIZE);

        if(uip_len > 0) {
            if(UIP_BUFFER->type == HTONS(UIP_ETHTYPE_IP)) {
                uip_arp_ipin();
                uip_input();

                if(uip_len > 0) {
                    uip_arp_out();
                    cp2200_transmit(uip_buf, uip_len);
                }
            } else if(UIP_BUFFER->type == HTONS(UIP_ETHTYPE_ARP)) {
                uip_arp_arpin();
                if(uip_len > 0) {
                    cp2200_transmit(uip_buf, uip_len);
                }
            }
        } else if((get_clock() - lastperiodic) > CLOCK_TICKS_PER_SECOND / 2) {
            lastperiodic = get_clock();

            for(i = 0; i < UIP_CONNS; i++) {
                uip_periodic(i);

                if(uip_len > 0) {
                    uip_arp_out();
                    cp2200_transmit(uip_buf, uip_len);
                }
            }

            for(i = 0; i < UIP_UDP_CONNS; i++) {
                uip_udp_periodic(i);

                if(uip_len > 0) {
                    uip_arp_out();
                    cp2200_transmit(uip_buf, uip_len);
                }
            }

        }

        if((get_clock() - lastarp) > CLOCK_TICKS_PER_SECOND * 10) {
            lastarp = get_clock();
            uip_arp_timer();
        }
    }

    return 0;
}
Exemplo n.º 3
0
Arquivo: main.c Projeto: sli92/netcon
int main(void)
{
        uint32_t lastperiodic = 0;
        uint32_t lastarp = 0;
        uint32_t lastupdate = 0;

        uint8_t i; // , x;
        // char buffer[32];

        uart_init();
        clock_init();
        sei();

        while(get_clock() < CLOCK_TICKS_PER_SECOND * 3);

        serconn_init();
        lastupdate = get_clock();

        memcpy_P(uip_ethaddr.addr, mac_addr, sizeof(uip_ethaddr.addr));

        enc28j60_init(uip_ethaddr.addr);

        uip_init();
        uip_arp_init();

        /* Seed fuer den Zufallsgenerator setzen. */
        srandom(get_seed());

        tcp_app_init();
        udp_app_init();

        while(1 > 0) {
                uip_len = enc28j60_receive(uip_buf, UIP_CONF_BUFFER_SIZE);
                if(uip_len > 0) {
                        if(UIP_BUFFER->type == HTONS(UIP_ETHTYPE_IP)) {
                                uip_arp_ipin();
                                uip_input();

                                if(uip_len > 0) {
                                        uip_arp_out();
                                        enc28j60_transmit(uip_buf, uip_len);
                                }

                        } else if(UIP_BUFFER->type == HTONS(UIP_ETHTYPE_ARP)) {
                                uip_arp_arpin();
                                if(uip_len > 0)
                                        enc28j60_transmit(uip_buf, uip_len);
                        }

                } else if((get_clock() - lastperiodic) > CLOCK_TICKS_PER_SECOND / 2) {
                        lastperiodic = get_clock();

                        for(i = 0; i < UIP_CONNS; i++) {
                                uip_periodic(i);

                                if(uip_len > 0) {
                                        uip_arp_out();
                                        enc28j60_transmit(uip_buf, uip_len);
                                }
                        }


                        for(i = 0; i < UIP_UDP_CONNS; i++) {
                                uip_udp_periodic(i);

                                if(uip_len > 0) {
                                        uip_arp_out();
                                        enc28j60_transmit(uip_buf, uip_len);
                                }
                        }
                }

                if((get_clock() - lastarp) > CLOCK_TICKS_PER_SECOND * 10) {
                        lastarp = get_clock();
                        uip_arp_timer();

/*
                        x = 0;
                        for(i = 0; i < UIP_CONNS; i++) {
                                if(uip_conn_active(i))
                                        x++;
                        }

                        sprintf(buffer, "Active connections: %d\n", x);
                        uart_puts(buffer);
*/
                }

                if((get_clock() - lastupdate) > CLOCK_TICKS_PER_SECOND / 2){
                        serconn_update();
                        lastupdate = get_clock();
                }
        }
}