void oneway_anchor_init () { // Make sure the SPI speed is slow for this function dw1000_spi_slow(); // Setup callbacks to this ANCHOR dwt_setcallbacks(anchor_txcallback, anchor_rxcallback); // Make sure the radio starts off dwt_forcetrxoff(); // Set the anchor so it only receives data and ack packets dwt_enableframefilter(DWT_FF_DATA_EN | DWT_FF_ACK_EN); // // Set the ID and PAN ID for this anchor uint8_t eui_array[8]; dw1000_read_eui(eui_array); // dwt_seteui(eui_array); // dwt_setpanid(POLYPOINT_PANID); // Automatically go back to receive dwt_setautorxreenable(TRUE); // Don't use these dwt_setdblrxbuffmode(FALSE); dwt_setrxtimeout(FALSE); // Load our EUI into the outgoing packet dw1000_read_eui(pp_anc_final_pkt.ieee154_header_unicast.sourceAddr); // Need a timer if (_anchor_timer == NULL) { _anchor_timer = timer_init(); } // Init the PRNG for determining when to respond to the tag raninit(&_prng_state, eui_array[0]<<8|eui_array[1]); // Make SPI fast now that everything has been setup dw1000_spi_fast(); // Reset our state because nothing should be in progress if we call init() _state = ASTATE_IDLE; }
dw1000_err_e dw1000_anchor_init () { uint8_t eui_array[8]; // Make sure the radio starts off dwt_forcetrxoff(); // Set the anchor so it only receives data and ack packets dwt_enableframefilter(DWT_FF_DATA_EN | DWT_FF_ACK_EN); // Set the ID and PAN ID for this anchor dw1000_read_eui(eui_array); dwt_seteui(eui_array); dwt_setpanid(POLYPOINT_PANID); // Automatically go back to receive dwt_setautorxreenable(TRUE); // Don't use these dwt_setdblrxbuffmode(FALSE); dwt_setrxtimeout(FALSE); // Don't receive at first dwt_rxenable(FALSE); // Load our EUI into the outgoing packet dw1000_read_eui(pp_anc_final_pkt.ieee154_header_unicast.sourceAddr); // Need a timer _ranging_broadcast_timer = timer_init(); // Init the PRNG for determining when to respond to the tag raninit(&_prng_state, eui_array[0]<<8|eui_array[1]); // Make SPI fast now that everything has been setup dw1000_spi_fast(); return DW1000_NO_ERR; }