--- trunk/PIC/Demo trimmet/TFTPcDemo.c 2007/05/22 06:55:23 97 +++ trunk/PIC/Demo trimmet/TFTPcDemo.c 2007/05/22 14:45:39 98 @@ -104,17 +104,16 @@ { state = off; } + + char network_send_hello( unsigned char termid ) { -char error = 0; -char gotArp = 0; +char gotArp = 0; // if gotArp is 0, the embedded haven't talked to the server since boot. static char isBound = 0; - -if ( DHCPIsBound() && isBound == 0 ){ - state = DhcpIsBound; - isBound = 1; -} - + if ( DHCPIsBound() && isBound == 0 ){ + state = DhcpIsBound; + isBound = 1; + } switch (state) { case DhcpIsBound: @@ -151,59 +150,53 @@ return 0; case TcpSend: - for (i = net_INT; i >= 0; i--) - { - TCPPut(tsock1, termid ); - } + TCPPut( tsock1, 0x00 ); + TCPPut( tsock1, termid ); TCPFlush(tsock1); + TCPDiscard( tsock1 ); + + state = TcpReadyToSend; return 0; } return 1; } -/* -void network_send_hello( unsigned char termid ) + +char network_send_scan_frame( unsigned char stregkode, unsigned char buflen ) { - if (DHCPIsBound()) - { - RA3 = 0; - if (sock_open == 0) - { - if (ARPIsTxReady()) - { - ARPResolve( &rnode.IPAddr); - is_resolved = 1; - } - else - { - if (ARPIsResolved( &rnode.IPAddr, &rnode.MACAddr)) - //if (MyArp( &rnode)) - { - usock1=UDPOpen(2000,&rnode,3000); // socket to send UDP - sock_open=1; - } - } - } - } - - if (UDPIsPutReady(usock1) && datagrams_to_send>0) - { - UDPPut( rnode.MACAddr.v[0] ); - UDPPut( rnode.MACAddr.v[1] ); - UDPPut( rnode.MACAddr.v[2] ); - UDPPut( rnode.MACAddr.v[3] ); - UDPPut( rnode.MACAddr.v[4] ); - UDPPut( rnode.MACAddr.v[5] ); - UDPPut('D'); - UDPPut('a'); - UDPPut('w'); - UDPPut(0); - UDPFlush(); - datagrams_to_send--; - } - } -} -*/ + switch (state) + { + TCPPut( tsock1, 0x01 ); + for (i = buflen; i >= 0; i--) + { + TCPPut(tsock1, stregkode ); + } + TCPFlush(tsock1); + state = TcpReadyToSend; + return 1; + } +} +char network_send_goodbye(void) +{ + switch (state) + { + case TcpReadyToSend: + if ( TCPIsConnected(tsock1) && TCPIsPutReady(tsock1) ) + state = TcpSend; + + case TcpSend: + TCPPut( tsock1, 0x06 ); + TCPFlush( tsock1 ); + state = SockClosing; + return 0; + + case SockClosing: + TCPDisconnect( tsock1 ); + state = SockClosed; + return 1; + } + return 3; // Didn't close the socket properly; +} void main(void) { @@ -264,6 +257,8 @@ while(1) { + unsigned char antal = 8; + unsigned char stregkode[] = "12345678"; /* * Blink SYSTEM LED every second. */ @@ -285,61 +280,10 @@ * configuration since last reset. */ - a = network_send_hello( 1 ); - /* if (DHCPIsBound()) - { - RA3 =0; - if (has_arp == 0) - { - if (ARPIsTxReady()) - { - if (is_resolved == 0) - { - ARPResolve( &rnode.IPAddr); - is_resolved = 1; - } - else - { - if (ARPIsResolved( &rnode.IPAddr, &rnode.MACAddr)) - { - has_arp = 1; - } - } - - } - } - - if (has_arp == 1) - { - if (sock_state == 0) - { - usock1=TCPConnect(&rnode,3000); - sock_state = 1; - } - /* if (sock_state ==1 && TCPIsConnected(usock1) && TCPIsPutReady(usock1)) - { - TCPPut(usock1,'D'); - TCPPut(usock1,'a'); - TCPPut(usock1,'w'); - TCPPut(usock1,0); - TCPFlush(usock1); - sock_state = 2; - } - - if (sock_state == 2 && TCPIsPutReady(usock1)) - { - TCPDisconnect(usock1); - lastTick = TickGet(); - sock_state =3; - } - tick = TickGet(); - diffTicks = TickGetDiff(tick, lastTick); - - if ( sock_state == 3 && diffTicks > ((TICK)TICK_SECOND * (TICK)2) ) - sock_state = 0; - - } - } */ + a = network_send_hello( 0x01 ); +// a = network_send_scan_frame( stregkode, antal ); + a = network_send_goodbye(); + } }