void net_base_run(void) { struct net_packet_broadcast pkg; // every 1s RTC_set_irq(net_base_rtc_callback); while(true) { if (net_base_is_sending) { while (radio_has_packets_to_sent()){ __WFE(); } Radio_setMode(Radio_Mode_RX, false); Radio_enable(true); net_base_is_sending = false; } if(Radio_available() > 0) { Radio_recive((uint8_t *) &pkg, sizeof(struct net_packet_broadcast)); pkg.time = 1; } if(Radio_available() == 0 && !net_base_is_sending) { __WFE(); } } // stop callback RTC_set_irq(NULL); }
void net_node_join(void){ struct net_packet_broadcast pkg; // set up the radio Radio_setMode(Radio_Mode_RX, false); Radio_enable(true); // wait for becon while(Radio_available() == 0){ __WFE(); } // get the packet Radio_enable(false); Radio_recive((uint8_t *) &pkg, sizeof(struct net_packet_broadcast)); DBG_probe_toggle(DBG_Probe_1); RTC_reset_irq(115); letimer_init(100, NULL); RTC_set_irq(net_node_start_rx); }