[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lwip-users] Xilinx PowerPC receive udp messages
From: |
Peter Kampmann |
Subject: |
[lwip-users] Xilinx PowerPC receive udp messages |
Date: |
Mon, 21 Aug 2006 01:10:10 -0700 (PDT) |
Hi everyone,
after trying various ways to receive an udp-packet to the powerPC, I want to
ask if somebody of you sees perhaps the missing or wrong code that makes my
code refusing to accept udp packages.
static u8_t my_timer = 0;
struct ip_addr ipaddr, netmask, gw;
char macAdress[6];
char port = 9050;
struct netif * networkInterface;
struct pbuf *pb;
int waiting_for_timer = 1;
XTime ml_base, ml_new, ml_offset;
extern XEmacIf_Config XEmacIf_ConfigTable[];
struct udp_pcb *pcb;
//init the lwip services
void init()
{
err_t err;
macAdress[0] = 0x00;
macAdress[1] = 0x0A;
macAdress[2] = 0x35;
macAdress[3] = 0x00;
macAdress[4] = 0x22;
macAdress[5] = 0x21;
//we need a timer
//init the lwip parts
sys_init();
mem_init();
xil_printf("heap initialised\r\n");
memp_init();
xil_printf("memp initialised\r\n");
pbuf_init();
xil_printf("pbuf init done\r\n");
xil_printf("Wait some time, for initialising\r\n");
unsigned int init_wait = 15000000;
while(init_wait--);
//set the Hardware MAC-Address
xemacif_setmac(0,(u8_t *) macAdress );
//set up the ipAddress, Netmask and Gateway
IP4_ADDR(&gw, 0,0,0,0);
IP4_ADDR(&ipaddr, 192,168,1,1);
IP4_ADDR(&netmask, 255,255,255,0);
//init netif
netif_init();
xil_printf("netif_init done\r\n");
ip_init();
//tcp_init();
udp_init();
//allocate memory for the netif
networkInterface = (netif*)mem_malloc(sizeof(struct netif));
//add a new network interface.
networkInterface = netif_add(networkInterface,
&ipaddr,
&netmask,
&gw,
&XEmacIf_ConfigTable[0],
xemacif_init,
ip_input);
xil_printf("wait for network to start...\r\n");
init_wait = 15000000;
while(init_wait--);
netif_set_default(networkInterface);
xil_printf("Network started up!\r\n");
pcb = udp_new();
err = udp_bind(pcb, IP_ADDR_ANY, port);
//err = udp_bind(pcb, &ipaddr, port);
if (err == ERR_OK)
{
xil_printf("NOTICE, Successfuly bound to port\r\n");
}
else
{
xil_printf("ERROR, Could not bound to port\r\n");
}
}
void echo_udp_init(void)
{
struct udp_pcb *pcb;
pcb = udp_new();
udp_bind( pcb, IP_ADDR_ANY, port );
udp_recv( pcb, &echo_udp_recv, NULL );
}
static void echo_udp_recv( void* arg, struct udp_pcb *pcb, struct pbuf *p,
struct ip_addr *addr, u16_t port )
{
xil_printf("receive...\r\n");
err_t err;
err = udp_connect( pcb, addr, port );
if (err != ERR_OK)
{
printf( "ERROR: udp_connect() error: %d\n", err );
}
err = udp_send( pcb, p );
if (err != ERR_OK)
{
printf( "ERROR: udp_send() error: %d\n", err );
}
pbuf_free( p );
udp_remove( pcb );
echo_udp_init();
return;
}
int main()
{
init();
echo_udp_init();
// Get the current Time-Base Register Value
// offset it by ml_offset
XTime_SetTime(0);
XTime_GetTime(&ml_base);
ml_base += ml_offset;
while (1) {
while (waiting_for_timer) {
xemacif_input(networkInterface);
XTime_GetTime(&ml_new);
if ( ml_new >= ml_base ) {
waiting_for_timer = 0;
ml_base = ml_new + ml_offset;
}
}
// Call my_tmr() every ml_offset cycles
my_tmr();
waiting_for_timer = 1;
}
return(1);
}
As far as I understand the raw API, after calling the function
echo_udp_init()
the function echo_udp_recv is registered as a callback function, when a udp
package arrives, the function is then called automatically.
Instead of registering the callback function like udp_recv( pcb,
&echo_udp_recv, NULL ); I tried also udp_recv( pcb, &echo_udp_recv,
networkInterface );
But that didn't work, too.
Does this code not work in the stand-alone version? Do I need to use the
xilkernel?
Hope somebody can help me.
Thanks and regards,
Peter
--
View this message in context:
http://www.nabble.com/Xilinx-PowerPC-receive-udp-messages-tf2138912.html#a5902800
Sent from the lwip-users forum at Nabble.com.
- [lwip-users] Xilinx PowerPC receive udp messages,
Peter Kampmann <=
- Re: [lwip-users] Xilinx PowerPC receive udp messages, Sathya Thammanur, 2006/08/22
- Re: [lwip-users] Xilinx PowerPC receive udp messages, Mumtaz Ahmad, 2006/08/23
- Re: [lwip-users] Xilinx PowerPC receive udp messages, Peter Kampmann, 2006/08/23
- Re: [lwip-users] Xilinx PowerPC receive udp messages, Pedro Alves, 2006/08/23
- Re: [lwip-users] Xilinx PowerPC receive udp messages, Peter Kampmann, 2006/08/23
- Re: [lwip-users] Xilinx PowerPC receive udp messages, Pedro Alves, 2006/08/23
- RE: [lwip-users] Xilinx PowerPC receive udp messages, Matthew Yingling, 2006/08/23
- Re: [lwip-users] Xilinx PowerPC receive udp messages, Sathya Thammanur, 2006/08/23
- Re: [lwip-users] Xilinx PowerPC receive udp messages, Peter Kampmann, 2006/08/25
- Re: [lwip-users] Xilinx PowerPC receive udp messages, Peter Kampmann, 2006/08/25