/** \copydoc nwl_build_advp_sync_train */ void nwl_build_advp_sync_train(uint16_t duration, uint8_t spectrum_id[2], int8_t tx_eirp, uint8_t subnet) { uint16_t advp_target_timestamp = timer_get_counter_value() + duration; phy_keep_radio_on(true); process_callback = false; uint16_t eta = duration; //advp_target_timestamp - timer_get_counter_value(); //nwl_event.next_event = while (eta > 5 && eta <= duration) { tx_callback_received = false; nwl_build_advertising_protocol_data(eta, spectrum_id, tx_eirp, subnet); dll_tx_frame(); while (!tx_callback_received); __delay_cycles(8000); eta = advp_target_timestamp - timer_get_counter_value(); } phy_keep_radio_on(false); process_callback = true; }
void d7anp_tx_foreground_frame(packet_t* packet, bool should_include_origin_template, dae_access_profile_t* access_profile) { packet->d7anp_ctrl.nls_enabled = false; packet->d7anp_ctrl.hop_enabled = false; packet->d7anp_ctrl.origin_access_id_present = should_include_origin_template; uint8_t vid[2]; fs_read_vid(vid); if(memcmp(vid, (uint8_t[2]){0x00, 0x00},2) == 0) packet->d7anp_ctrl.origin_access_id_is_vid = false; else packet->d7anp_ctrl.origin_access_id_is_vid = true; packet->d7anp_ctrl.origin_access_class = packet->d7atp_addressee->addressee_ctrl_access_class; // TODO validate dll_tx_frame(packet, access_profile); }