void slip_init (slip_t *u, small_uint_t port, const char *name, int prio, mem_pool_t *pool, unsigned int khz, unsigned long baud) { u->netif.interface = &slip_interface; u->netif.name = name; u->netif.arp = 0; u->netif.mtu = 552; u->netif.type = NETIF_SLIP; u->netif.bps = baud; u->pool = pool; u->port = port; u->khz = khz; buf_queue_init (&u->inq, u->inqdata, sizeof (u->inqdata)); buf_queue_init (&u->outq, u->outqdata, sizeof (u->outqdata)); /* Setup baud rate generator. */ setup_baud_rate (u->port, u->khz, baud); /* Create slip receive task. */ task_create (slip_receiver, u, "slipr", prio + 1, u->rstack, sizeof (u->rstack)); #ifdef TRANSMIT_IRQ /* Create slip transmit task. */ task_create (slip_transmitter, u, "slipt", prio, u->tstack, sizeof (u->tstack)); #endif }
/* * Set up the network interface. */ void eth_init(eth_t *u, const char *name, int prio, mem_pool_t *pool, struct _arp_t *arp, const unsigned char *macaddr) { u->netif.interface = ð_interface; u->netif.name = name; u->netif.arp = arp; u->netif.mtu = ETH_MTU; u->netif.type = NETIF_ETHERNET_CSMACD; u->netif.bps = 100000; memcpy(&u->netif.ethaddr, macaddr, 6); u->pool = pool; u->rxbuf = (unsigned char*) ((unsigned) (u->rxbuf_data + 7) & ~7); u->txbuf = (unsigned char*) ((unsigned) (u->txbuf_data + 7) & ~7); u->rxbuf_physaddr = (unsigned) u->rxbuf; u->txbuf_physaddr = (unsigned) u->txbuf; buf_queue_init(&u->inq, u->inqdata, sizeof(u->inqdata)); buf_queue_init(&u->outq, u->outqdata, sizeof(u->outqdata)); /*u->rxbuf_data[0] = 1; u->rxbuf_data[1] = 2; u->rxbuf_data[2] = 3; u->rxbuf_data[3] = 4; u->rxbuf_data[4] = 5; u->rxbuf_data[5] = 6; u->rxbuf_data[6] = 7; u->rxbuf_data[7] = 8; debug_printf("buf addres rxbuf_data = 0x%08X\nrx_uf = 0x%08X\nphysaddr = 0x%08X\n", &u->rxbuf_data[0], u->rxbuf, u->rxbuf_physaddr); unsigned *dst; dst = u->rxbuf_physaddr; debug_printf("*dst = 0x%08X (0x%08X)\n", *dst, dst); */ /* Initialize hardware. */ chip_init(u); /* Create interrupt task. */ u->task_eth_handler = task_create(interrupt_task, u, "eth", prio, u->stack, sizeof(u->stack)); }
transceiver(uint8 duplex):m_duplex(duplex), m_handle_rx((timer_handle_type)-1) { buf_queue_init(&m_buf_queue); tx_status_set(TX_STAT_IDLE); };