uint16_t network_device_read() { uint16_t ret = 0; int i; packet_t *packet = 0; //if (xxx) DBG("device read"); vicDisable(INT_CHANNEL_USB); if (!RING_IS_EMPTY(receive_ring_head, receive_ring_tail, RECEIVE_RING_SIZE)) { packet = &receive_ring[receive_ring_head]; if (packet->size == 0) packet = 0; } vicEnable(INT_CHANNEL_USB); if (packet) { /* we got ip packet, copy it and notify uip framework */ //ETH_DEV_DBG_INFO("Got a packet!"); DBG("Got a packet! (%d bytes)",packet->size); packet = &receive_ring[receive_ring_head]; for (i=0; i<packet->size; i++) { uip_buf[i] = packet->data[i]; //packet->data[i] = 0; } ret = packet->size; packet->size = 0; vicDisable(INT_CHANNEL_USB); RING_INC(receive_ring_head, RECEIVE_RING_SIZE); vicEnable(INT_CHANNEL_USB); } return ret; }
uint16_t network_device_read() { uint16_t ret = 0; int i; packet_t *packet; if (!RING_IS_EMPTY(receive_ring_head, receive_ring_tail, RECEIVE_RING_SIZE)) { /* we got ip packet, copy it and notify uip framework */ packet = &receive_ring[receive_ring_head]; for (i=0; i<packet->transferred; i++) { uip_buf[i] = packet->data[i]; packet->data[i] = 0; } ret = packet->transferred; packet->transferred = 0; RING_INC(receive_ring_head, RECEIVE_RING_SIZE); } return ret; }