/* * This functiom is called once each second. */ static void check_dead_gw (void) { char buf[20]; static int i = 0; if (i >= gate_top) i = 0; for ( ; i < gate_top; i++) { struct gate_entry *gw = &gate_list [i]; eth_address eth; if (!is_on_LAN(gw->gate_ip)) continue; if (!LAN_lookup(gw->gate_ip,ð)) continue; if (gw->chk_timer == 0UL || !chk_timeout(gw->chk_timer)) { gw->chk_timer = set_timeout (DEAD_GW_TIMEOUT); continue; } if (gw->echo_pending && _chk_ping(gw->gate_ip,NULL) == (DWORD)-1) { gw->is_dead = TRUE; gw->echo_pending = FALSE; TCP_CONSOLE_MSG (1, ("Dead default GW %s (%d) detected\n", _inet_ntoa(NULL,gw->gate_ip), i)); } if (ping_gateway (gw->gate_ip, eth)) gw->echo_pending = TRUE; gw->chk_timer = set_timeout (DEAD_GW_TIMEOUT); return; /* only one ping per interval */ } }
main() { char buffer[100]; longword seq,ping_who,tmp_seq,time_out; float mavg_txrate, mavg_rxrate; float avg_txrate, avg_rxrate; float txrate, rxrate; int gather; brdInit(); //initialize board for this demo // Configure IO channels as digital outputs (sinking type outputs) setDigOut (LED1, 1); // Configure LED1 as sinking type output setDigOut (LED2, 1); // Configure LED2 as sinking type output // Set the initial state of the LED's digOut(LED1, LEDOFF); digOut(LED2, LEDOFF); seq=0; mavg_txrate = mavg_rxrate = 0.0; avg_txrate = avg_rxrate = 0.0; // Start network and wait until associated sock_init_or_exit(1); /* * Get the binary ip address for the target of our * pinging. */ #ifdef PING_WHO /* Ping a specific IP addr: */ ping_who=resolve(PING_WHO); if(ping_who==0) { printf("ERROR: unable to resolve %s\n",PING_WHO); exit(2); } #else /* Examine our configuration, and ping the default router: */ tmp_seq = ifconfig( IF_ANY, IFG_ROUTER_DEFAULT, & ping_who, IFS_END ); if( tmp_seq != 0 ) { printf( "ERROR: ifconfig() failed --> %d\n", (int) tmp_seq ); exit(2); } if(ping_who==0) { printf("ERROR: unable to resolve IFG_ROUTER_DEFAULT\n"); exit(2); } #endif #ifdef VERBOSE printf("\n"); printf("Note: RSSI = Receive Signal Strength Indicator\n"); printf("The last display line shows a filtered rate estimate.\n"); printf("Every %u samples (at %u ms intervals) these rates will be\n", GATHER_INTERVAL, PING_DELAY); printf(" set to the average over the last %u ms, and the next\n", GATHER_INTERVAL * PING_DELAY); printf(" line is started.\n"); #ifdef GRAPHICAL printf("Bar graphs are * == 1Mbit/sec and # == 4Mbit/sec\n"); printf("\n\n"); printf("\tRx rate (Kbit)\t\tTx rate (Kbit)\t\tRSSI (dB)\n"); printf("Seq\tLast\tFilt.\t\tLast\tFilt.\t\tFilt.\n"); printf("------- ------- --------------- ------- --------------- -------\n"); #else printf("\n\n"); printf("\tRx rate (Kbit)\tTx rate (Kbit)\tRSSI (dB)\n"); printf("Seq\tLast\tFilt.\tLast\tFilt.\tFilt.\n"); printf("------- ------- ------- ------- ------- -------\n"); #endif #endif for(;;) { /* * It is important to call tcp_tick here because * ping packets will not get processed otherwise. * */ tcp_tick(NULL); /* * Send one ping every PING_DELAY ms. */ costate { waitfor(DelayMs(PING_DELAY)); _ping(ping_who,seq++); pingoutled(LEDON); // flash transmit LED waitfor(DelayMs(50)); pingoutled(LEDOFF); } /* * Has a ping come in? time_out!=0xfffffff->yes. */ costate { time_out=_chk_ping(ping_who,&tmp_seq); if(time_out!=0xffffffff) { // Here is where we gather the statistics... // Note that if you get a compile error here, it is because you are not running // this sample on a Wifi-equipped board. ifconfig (IF_WIFI0, IFG_WIFI_STATUS, &wstatus, IFS_END); txrate = wstatus.tx_rate * 100.0; // Convert to Kbit/sec rxrate = wstatus.rx_rate * 100.0; mavg_txrate = mavg_txrate * ((MOVING_AVERAGE - 1.0)/MOVING_AVERAGE) + txrate * (1.0/MOVING_AVERAGE); mavg_rxrate = mavg_rxrate * ((MOVING_AVERAGE - 1.0)/MOVING_AVERAGE) + rxrate * (1.0/MOVING_AVERAGE); avg_txrate += txrate; avg_rxrate += rxrate; gather = tmp_seq % GATHER_INTERVAL == 0; #ifdef VERBOSE #ifdef GRAPHICAL printf("%7lu %7u %15.15s %7u %15.15s %7d %c", tmp_seq, (word)rxrate, graph(rxgraph, gather ? (word)(avg_rxrate / GATHER_INTERVAL) : (word)mavg_rxrate), (word)txrate, graph(txgraph, gather ? (word)(avg_txrate / GATHER_INTERVAL) : (word)mavg_txrate), wstatus.rx_signal >> _WIFI_RSSI_SCALE_SHIFT, gather ? '\n' : '\r' ); #else printf("%7lu %7u %7u %7u %7u %7d %c", tmp_seq, (word)rxrate, gather ? (word)(avg_rxrate / GATHER_INTERVAL) : (word)mavg_rxrate, (word)txrate, gather ? (word)(avg_txrate / GATHER_INTERVAL) : (word)mavg_txrate, wstatus.rx_signal >> _WIFI_RSSI_SCALE_SHIFT, gather ? '\n' : '\r' ); #endif #endif if (gather) avg_txrate = avg_rxrate = 0.0; pinginled(LEDON); // flash receive LED waitfor(DelayMs(50)); pinginled(LEDOFF); } } }
debug void main() { longword host, timer, new_rcvd; longword tot_timeout, itts, send_timeout; word i; word sequence_mode, is_new_line; word debug_on; static unsigned char tempbuffer[255]; word arping; auto char ip[16], netmask[16]; auto int status; sent=received=tot_delays=last_rcvd=0L; tot_timeout=itts=send_timeout=0L; debug_on=0; is_new_line=1; arping = 1; // Start network and wait for interface to come up (or error exit). printf("Starting/joining ad-hoc network...\n"); sock_init_or_exit(1); name=PINGWHO; itts=0; // 0 == continuous if (!(host = resolve( name ))) { printf("Unable to resolve '%s'\n", name ); exit( 3 ); } if ( isaddr( name )) printf("Pinging [%s]",inet_ntoa(tempbuffer, host)); else printf("Pinging '%s' [%s]",name, inet_ntoa(tempbuffer, host)); if (!itts) itts = 1000000L; printf(" %lu times\n", itts); tot_timeout = _SET_TIMEOUT((itts + 2)*1000L); send_timeout = _SET_TIMEOUT(0); do { /* once per second - do all this */ if ( chk_timeout( send_timeout )) { send_timeout = _SET_TIMEOUT(1000L); if (chk_timeout( tot_timeout )) { stats(); break; } if (arping) { if (!_arp_resolve( host, (eth_address *)tempbuffer, 0 )) printf("Could not resolve hardware address (maybe other host not up yet)\n"); else { arping = 0; printf("Hardware address resolved to %02x:%02x:%02x:%02x:%02x:%02x\n", (int)tempbuffer[0],(int)tempbuffer[1],(int)tempbuffer[2],(int)tempbuffer[3], (int)tempbuffer[4],(int)tempbuffer[5]); } } if (!arping && sent < itts) { sent++; if (_ping( host , sent )) stats(); if (!is_new_line) printf("\n"); printf("sent PING # %lu ", sent ); is_new_line = 0; } } if ( kbhit() ) { getchar(); /* trash the character */ stats(); } tcp_tick(NULL); if (arping) continue; if ((timer = _chk_ping( host , &new_rcvd)) != 0xffffffffL) { tot_delays += timer; ++received; if ( new_rcvd != last_rcvd + 1 ) { if (!is_new_line) printf("\n"); printf("PING receipt received out of order!\n"); is_new_line = 1; } last_rcvd = new_rcvd; if (!is_new_line) printf(", "); printf("PING receipt # %lu : response time %lu ms\n", received, timer); is_new_line = 1; if ( received == itts ) stats(); } } while (1); }
main() { longword seq,ping_who,tmp_seq,time_out; char buffer[100]; brdInit(); //initialize board for this demo seq=0; // Start network and wait for interface to come up (or error exit). sock_init_or_exit(1); /* * Get the binary ip address for the target of our * pinging. */ #ifdef PING_WHO /* Ping a specific IP addr: */ ping_who=resolve(PING_WHO); if(ping_who==0) { printf("ERROR: unable to resolve %s\n",PING_WHO); exit(2); } #else /* Examine our configuration, and ping the default router: */ tmp_seq = ifconfig( IF_ANY, IFG_ROUTER_DEFAULT, & ping_who, IFS_END ); if( tmp_seq != 0 ) { printf( "ERROR: ifconfig() failed --> %d\n", (int) tmp_seq ); exit(2); } if(ping_who==0) { printf("ERROR: unable to resolve IFG_ROUTER_DEFAULT\n"); exit(2); } #endif for(;;) { /* * It is important to call tcp_tick here because * ping packets will not get processed otherwise. * */ tcp_tick(NULL); /* * Send one ping every PING_DELAY ms. */ costate { waitfor(DelayMs(PING_DELAY)); _ping(ping_who,seq++); pingoutled(LEDON); // flash transmit LED waitfor(DelayMs(50)); pingoutled(LEDOFF); } /* * Has a ping come in? time_out!=0xfffffff->yes. */ costate { time_out=_chk_ping(ping_who,&tmp_seq); if(time_out!=0xffffffff) { #ifdef VERBOSE printf("received ping: %ld\n", tmp_seq); #endif pinginled(LEDON); // flash receive LED waitfor(DelayMs(50)); pinginled(LEDOFF); } } } }
debug void main() { longword host, timer, new_rcvd; longword tot_timeout, itts, send_timeout; word i; word sequence_mode, is_new_line; word debug_on; static unsigned char tempbuffer[255]; sent=received=tot_delays=last_rcvd=0L; tot_timeout=itts=send_timeout=0L; sequence_mode=debug_on=0; is_new_line=1; // Start network and wait for interface to come up (or error exit). sock_init_or_exit(1); name=PINGWHO; itts=10; if (!(host = resolve( name ))) { printf("Unable to resolve '%s'\n", name ); exit( 3 ); } if ( isaddr( name )) printf("Pinging [%s]",inet_ntoa(tempbuffer, host)); else printf("Pinging '%s' [%s]",name, inet_ntoa(tempbuffer, host)); if (itts) printf(" %u times", itts); else itts = sequence_mode ? 0xffffffffL : 1; if (sequence_mode) printf(" once per_second"); printf("\n"); if (!_arp_resolve( host, (eth_address *)tempbuffer, 0 )) { /* resolve it before timer starts */ printf("Could not resolve hardware address\n"); exit(2); } tot_timeout = _SET_TIMEOUT((itts + 2)*1000L); if ( debug_on ) printf("ETH -> %02x:%02x:%02x:%02x:%02x:%02x\n", (int)tempbuffer[0],(int)tempbuffer[1],(int)tempbuffer[2],(int)tempbuffer[3], (int)tempbuffer[4],(int)tempbuffer[5]); send_timeout = _SET_TIMEOUT(0); do { /* once per second - do all this */ if ( chk_timeout( send_timeout )) { send_timeout = _SET_TIMEOUT(1000L); if (chk_timeout( tot_timeout )) { stats(); break; } if ( sent < itts ) { sent++; if (_ping( host , sent )) stats(); if (!is_new_line) printf("\n"); printf("sent PING # %lu ", sent ); is_new_line = 0; } } if ( kbhit() ) { getchar(); /* trash the character */ stats(); } tcp_tick(NULL); if ((timer = _chk_ping( host , &new_rcvd)) != 0xffffffffL) { tot_delays += timer; ++received; if ( new_rcvd != last_rcvd + 1 ) { if (!is_new_line) printf("\n"); printf("PING receipt received out of order!\n"); is_new_line = 1; } last_rcvd = new_rcvd; if (!is_new_line) printf(", "); printf("PING receipt # %lu : response time %lu ms\n", received, timer); is_new_line = 1; if ( received == itts ) stats(); } } while (1); }
int main() { auto int if_status; printf("Multiple Interface Echo Test\n"); usage(); printf("\nPress any key to proceed.\n"); while (!kbhit()); getchar(); printf("Initializing TCP/IP stack...\n"); for (i = 0; i < IF_MAX; i++) ifconfig(i, IFG_IPADDR, oldip+i, #ifdef USE_IF_CALLBACK IFS_IF_CALLBACK, updowncb, #endif IFS_END); sock_init(); // Wait for the interface to come up while (IF_COMING_UP == (if_status = ifpending(IF_DEFAULT)) || IF_COMING_DOWN == if_status) { tcp_tick(NULL); } printf("...done.\n"); memset(state, 0, sizeof(state)); socknum = -1; seq = 1; ping_ip = 0; act_ip = 0; asock = s + (NUM_SOCKS - 1); astate = state + (NUM_SOCKS - 1); *astate = STATE_DONT_USE; if(!udp_extopen(&usock, IF_ANY, ECHO_PORT, -1L, 0, echo_handler, 0, 0)) { printf("udp_extopen failed!\n"); exit(0); } for (;;) { socknum++; if (socknum == NUM_SOCKS) socknum = 0; tcp_tick(NULL); if (state[socknum] > STATE_CLOSED && !sock_alive(s+socknum)) { if (socknum == NUM_LISTEN_SOCKS) { printf("Active socket closed\n"); state[socknum] = STATE_DONT_USE; } else { printf("Socket %d closed\n", socknum); state[socknum] = STATE_CLOSED; } sock_perror(s+socknum, NULL); } for (i = 0; i < IF_MAX; i++) { ifconfig(i, IFG_IPADDR, &ip, IFS_END); if (oldip[i] != ip) { printf("IPaddr on i/f %d changed from %08lx to %08lx\n", i, oldip[i], ip); oldip[i] = ip; ifconfig(i, IFS_ICMP_CONFIG_RESET, IFS_END); } } if (kbhit()) { kb = getchar(); if (kb == '?') usage(); else if (kb == 'i') ip_print_ifs(); else if (kb == 'r') router_printall(); else if (kb == 'c') arpcache_printall(); else if (kb == 'p') { printf("Press an interface number [TCP/IP now blocked]\n"); while (!kbhit()); kb = getchar(); if (isdigit(kb)) { ifconfig(kb - '0', IFG_ROUTER_DEFAULT, &ping_ip, IFS_END); if (ping_ip) { printf("Pinging router %08lX...\n", ping_ip); _send_ping(ping_ip, seq++, 1, IPTOS_DEFAULT, &ping_id); } else printf("No router for interface %d\n", kb - '0'); } else printf("No interface selected.\n"); } else if (kb == 'a') { if (act_ip && *astate != STATE_DONT_USE) { printf("Closing active connection to %s...\n", inet_ntoa(buf, act_ip)); sock_close(asock); while (tcp_tick(asock)); } *astate = STATE_DONT_USE; printf("Enter a host name or IP address [TCP/IP now blocked]\n"); gets(buf); printf("Resolving...\n"); act_ip = resolve(buf); if (act_ip) { printf("Enter a port number to connect to (0-65535)\n"); gets(buf); aport = (word)atol(buf); printf("Opening to %s:%u...\n", inet_ntoa(buf, act_ip), aport); *astate = STATE_ACTOPEN; } else printf("Could not resolve %s to IP address.\n", buf); } else if (isdigit(kb)) { // Toggle interface status kb -= '0'; if (!(1u<<kb & IF_SET)) { printf("Not a valid interface\n"); continue; } if (ifstatus(kb)) { printf("Bringing interface %d down...\n", kb); ifconfig(kb, IFS_DOWN, IFS_END); } else { printf("Bringing interface %d up...\n", kb); ifconfig(kb, IFS_UP, IFS_END); } } } if (ping_ip) { if (_chk_ping(ping_ip , &ping_id) != 0xffffffffL) { printf("Got ping response from %08lX\n", ping_ip); ping_ip = 0; } } switch (state[socknum]) { case STATE_CLOSED: if (!tcp_extlisten(s + socknum, IF_ANY, ECHO_PORT, 0, 0, t_handler, 0, 0, 0)) { printf("Listen failed - socket %d\n", socknum); state[socknum] = STATE_DONT_USE; break; } printf("Listening on socket %d...\n", socknum); state[socknum] = STATE_LISTEN; break; case STATE_ACTOPEN: if (!tcp_extopen(s + socknum, IF_ANY, 0, act_ip, aport, t_handler, 0, 0)) { printf("Active open failed\n"); state[socknum] = STATE_DONT_USE; break; } state[socknum] = STATE_LISTEN; break; case STATE_LISTEN: if (sock_established(s + socknum)) { printf("Connection %d estab.\n", socknum); state[socknum] = STATE_ESTAB; } break; case STATE_ESTAB: if ((rb = sock_fastread(s + socknum, buf, sizeof(buf))) > 0) { sock_fastwrite(s + socknum, buf, rb); if (!strncmp(buf, "quit", 4)) { printf("Peer on socket %d requests close\n", socknum); sock_close(s + socknum); state[socknum] = STATE_CLOSING; } } else if (rb < 0) { printf("Connection %d closed by peer.\n", socknum); sock_close(s + socknum); state[socknum] = STATE_CLOSING; } break; default: break; } } }
main() { longword seq,ping_who,tmp_seq,time_out; char buffer[100]; auto wifi_region region_info; auto char index[10]; auto int option; auto char tmpbuf[64]; auto int updateRegion; auto int country; auto int configured; brdInit(); //initialize board for this demo seq=0; sock_init(); // Initial wifi interface // Make sure wifi IF is down to do ifconfig's functions printf("\nBringing interface down (disassociate)...\n"); ifdown(IF_WIFI0); while (ifpending(IF_WIFI0) != IF_DOWN) { printf("."); tcp_tick(NULL); } printf("...Done.\n"); configured = FALSE; updateRegion = FALSE; do { country = get_stored_region(®ion_info); // Check if the region has been previously set. if(country < 0 || updateRegion) { // Populate structure with region info, then display ifconfig (IF_WIFI0, IFG_WIFI_REGION_INFO, ®ion_info, IFS_END); printf("\nCurrent region setting:\n"); display_info(®ion_info); // Select Region and write value to userblock country = wifi_config_region(®ion_info); updateRegion = FALSE; } else { // Set Region from previously saved value read from the userblock, this // will set the runtime limits to be used by the wifi driver. ifconfig (IF_WIFI0, IFS_WIFI_REGION, country, IFG_WIFI_REGION_INFO, ®ion_info, IFS_END); printf("\nRuntime region setting now being used by wifi driver:\n"); display_info(®ion_info); // Region has already been set at runtime, check if it needs to // be changed due to country to country roaming. printf("\nRegion already set, select option to continue"); printf("\n1. Continue."); printf("\n2. Select new region."); printf("\nSelect > "); do { option = atoi(gets(tmpbuf)); } while (!((option >= 1) && (option <= 2))); if(option == 2) updateRegion = TRUE; else configured = TRUE; } }while(!configured); // If you are not going to use the defaulted channel and/or power level, // then you can use the following functions to set channel and/or the // power level. This needs to be done after setting the region/country // to meet wifi driver requirements. //ifconfig (IF_WIFI0, IFS_WIFI_CHANNEL, 0, IFS_END); // Scan all channels //ifconfig (IF_WIFI0, IFS_WIFI_TX_POWER, 8, IFS_END); // Set to Pwr level 8 // Startup the wireless interface here... printf("Bringing interface back up (associate)...\n"); ifup(IF_WIFI0); while (ifpending(IF_WIFI0) == IF_COMING_UP) { tcp_tick(NULL); } printf("...Done.\n"); if (ifpending(IF_WIFI0) != IF_UP) { printf("Unfortunately, it failed to associate :-(\n"); exit(1); } // End of regional setting section, from this point on do standard tcp/ip // protocol. /* // Here is where we gather the statistics... // Note that if you get a compile error here, it is because you are not running // this sample on a Wifi-equipped board. /* Print who we are... */ printf( "My IP address is %s\n\n", inet_ntoa(buffer, gethostid()) ); /* * Get the binary ip address for the target of our * pinging. */ #ifdef PING_WHO /* Ping a specific IP addr: */ ping_who=resolve(PING_WHO); if(ping_who==0) { printf("ERROR: unable to resolve %s\n",PING_WHO); exit(2); } #else /* Examine our configuration, and ping the default router: */ tmp_seq = ifconfig( IF_ANY, IFG_ROUTER_DEFAULT, & ping_who, IFS_END ); if( tmp_seq != 0 ) { printf( "ERROR: ifconfig() failed --> %d\n", (int) tmp_seq ); exit(2); } if(ping_who==0) { printf("ERROR: unable to resolve IFG_ROUTER_DEFAULT\n"); exit(2); } #endif for(;;) { /* * It is important to call tcp_tick here because * ping packets will not get processed otherwise. * */ tcp_tick(NULL); /* * Send one ping every PING_DELAY ms. */ costate { waitfor(DelayMs(PING_DELAY)); _ping(ping_who,seq++); pingoutled(LEDON); // flash transmit LED waitfor(DelayMs(50)); pingoutled(LEDOFF); } /* * Has a ping come in? time_out!=0xfffffff->yes. */ costate { time_out=_chk_ping(ping_who,&tmp_seq); if(time_out!=0xffffffff) { #ifdef VERBOSE printf("received ping: %ld\n", tmp_seq); #endif pinginled(LEDON); // flash receive LED waitfor(DelayMs(50)); pinginled(LEDOFF); } } } }
main() { longword seq,ping_who,tmp_seq,time_out; char buffer[100]; brdInit(); //initialize board for this demo seq=0; sock_init(); // Initialize wifi interface // Make sure wifi IF is down to do ifconfig's functions printf("\nBringing interface down (disassociate)...\n"); ifdown(IF_WIFI0); while (ifpending(IF_WIFI0) != IF_DOWN) { printf("."); tcp_tick(NULL); } printf("...Done.\n"); // Enable 802.11d country information capability // Note: Access Point must have 802.11d enabled with proper country selected ifconfig(IF_WIFI0, IFS_WIFI_MULTI_DOMAIN, 1, IFS_END); // Startup the wireless interface here... printf("Bringing interface back up (associate)...\n"); ifup(IF_WIFI0); while (ifpending(IF_WIFI0) == IF_COMING_UP) { tcp_tick(NULL); } printf("...Done.\n"); if (ifpending(IF_WIFI0) != IF_UP) { printf("Unfortunately, it failed to associate :-(\n"); exit(1); } // End of regional setting section, from this point on do standard tcp/ip // protocol. /* // Here is where we gather the statistics... // Note that if you get a compile error here, it is because you are not running // this sample on a Wifi-equipped board. /* Print who we are... */ printf( "My IP address is %s\n\n", inet_ntoa(buffer, gethostid()) ); /* * Get the binary ip address for the target of our * pinging. */ #ifdef PING_WHO /* Ping a specific IP addr: */ ping_who=resolve(PING_WHO); if(ping_who==0) { printf("ERROR: unable to resolve %s\n",PING_WHO); exit(2); } #else /* Examine our configuration, and ping the default router: */ tmp_seq = ifconfig( IF_ANY, IFG_ROUTER_DEFAULT, & ping_who, IFS_END ); if( tmp_seq != 0 ) { printf( "ERROR: ifconfig() failed --> %d\n", (int) tmp_seq ); exit(2); } if(ping_who==0) { printf("ERROR: unable to resolve IFG_ROUTER_DEFAULT\n"); exit(2); } #endif for(;;) { /* * It is important to call tcp_tick here because * ping packets will not get processed otherwise. * */ tcp_tick(NULL); /* * Send one ping every PING_DELAY ms. */ costate { waitfor(DelayMs(PING_DELAY)); pingoutled(LEDON); // flash transmit LED waitfor(DelayMs(50)); pingoutled(LEDOFF); _ping(ping_who,seq++); } /* * Has a ping come in? time_out!=0xfffffff->yes. */ costate { time_out=_chk_ping(ping_who,&tmp_seq); if(time_out!=0xffffffff) { #ifdef VERBOSE printf("received ping: %ld\n", tmp_seq); #endif pinginled(LEDON); // flash receive LED waitfor(DelayMs(50)); pinginled(LEDOFF); #if RCM5600W_SERIES waitfor(DelayMs(250)); pinginled(LEDON); // flash receive LED again waitfor(DelayMs(50)); pinginled(LEDOFF); #endif } } } }