コード例 #1
0
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);
}
コード例 #2
0
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);
}