Exemplo n.º 1
0
/** \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);
}