void application_main(Os::AppMainParameter& value) {
    Radio *wiselib_radio_ = &wiselib::FacetProvider<Os, Radio>::get_facet(value);
    Timer *wiselib_timer_ = &wiselib::FacetProvider<Os, Timer>::get_facet(value);
    Debug *wiselib_debug_ = &wiselib::FacetProvider<Os, Debug>::get_facet(value);
    Rand *wiselib_rand_ = &wiselib::FacetProvider<Os, Rand>::get_facet(value);
    Clock *wiselib_clock_ = &wiselib::FacetProvider<Os, Clock>::get_facet(value);
    wiselib_rand_->srand( wiselib_radio_->id() );
    wiselib_radio_->set_channel( SCLD_ATP_CHANNEL );
    neighbor_discovery = new NeighborDiscovery();
#ifdef CONFIG_SCLD_ATP_RELIABLE_RADIO
    reliable_radio.init(  *wiselib_radio_, *wiselib_timer_, *wiselib_debug_, *wiselib_clock_, *wiselib_rand_ );
    reliable_radio.enable_radio();
	#ifdef CONFIG_SCLD_ATP_NRG
    	iBS = new iSenseBatterySensor( value );
    	neighbor_discovery->init( reliable_radio, *wiselib_timer_, *wiselib_debug_, *wiselib_clock_, *wiselib_rand_ , iBS );
    	neighbor_discovery->enable();
    #else
    	neighbor_discovery->init( reliable_radio, *wiselib_timer_, *wiselib_debug_, *wiselib_clock_, *wiselib_rand_ );
    	atp.init( reliable_radio, *wiselib_timer_, *wiselib_debug_, *wiselib_rand_, *wiselib_clock_, *neighbor_discovery );
    	atp.enable();
    #endif
#else
	#ifdef CONFIG_SCLD_ATP_NRG
    	iBS = new iSenseBatterySensor( value );
    	neighbor_discovery->init( *wiselib_radio_, *wiselib_timer_, *wiselib_debug_, *wiselib_clock_, *wiselib_rand_ , *iBS );
    	neighbor_discovery->enable();
    #else
    	neighbor_discovery->init( *wiselib_radio_, *wiselib_timer_, *wiselib_debug_, *wiselib_clock_, *wiselib_rand_ );
    	atp.init( *wiselib_radio_, *wiselib_timer_, *wiselib_debug_, *wiselib_rand_, *wiselib_clock_, *neighbor_discovery );
    	atp.enable();
    #endif
#endif

}
void application_main( Os::AppMainParameter& value )
{
	Radio *wiselib_radio_ = &wiselib::FacetProvider<Os, Radio>::get_facet( value );
	Timer *wiselib_timer_ = &wiselib::FacetProvider<Os, Os::Timer>::get_facet( value );
	Debug *wiselib_debug_ = &wiselib::FacetProvider<Os, Os::Debug>::get_facet( value );
	Rand *wiselib_rand_ = &wiselib::FacetProvider<Os, Os::Rand>::get_facet( value );
	Clock *wiselib_clock_ = &wiselib::FacetProvider<Os, Os::Clock>::get_facet( value );
	wiselib_radio_->set_channel( PLTT_CHANNEL );
	wiselib_rand_->srand( wiselib_radio_->id() );
#ifdef CONFIG_PLTT_TRACKER
	reliable_radio.init(  *wiselib_radio_, *wiselib_timer_, *wiselib_debug_, *wiselib_clock_, *wiselib_rand_ );
	tracker.init( *wiselib_radio_, reliable_radio, *wiselib_timer_, *wiselib_rand_, *wiselib_clock_, *wiselib_debug_ );
	tracker.set_self( Node( wiselib_radio_->id(), Position( 0, 0, 0 ) ) );
	tracker.enable();
#endif
#ifdef CONFIG_PLTT_TARGET
	target.init( *wiselib_radio_, *wiselib_timer_, *wiselib_clock_, *wiselib_debug_ );
	target.set_self( Node( wiselib_radio_->id(), Position( 0, 0, 0 ) ) );
#ifdef CONFIG_PLTT_PRIVACY
	target.set_request_id( PLTT_TARGET_PRIVACY_REQUEST_ID_1 );
	Os::Uart *wiselib_uart_ = &wiselib::FacetProvider<Os, Os::Uart>::get_facet( value );
	privacy.set_randomization();
	privacy.init( *wiselib_radio_, *wiselib_debug_, *wiselib_uart_, *wiselib_timer_ );
	target.reg_privacy_radio_callback<Privacy, &Privacy::radio_receive>( &privacy );
	privacy.reg_privacy_callback<PLTT_Target, &PLTT_Target::randomize_callback>( 999, &target );
	privacy.enable();
#endif
	target.enable();
#endif
}
void application_main( Os::AppMainParameter& value )
{
	Radio *wiselib_radio_ = &wiselib::FacetProvider<Os, Radio>::get_facet( value );
	Timer *wiselib_timer_ = &wiselib::FacetProvider<Os, Timer>::get_facet( value );
	Debug *wiselib_debug_ = &wiselib::FacetProvider<Os, Debug>::get_facet( value );
	Rand *wiselib_rand_ = &wiselib::FacetProvider<Os, Rand>::get_facet( value );
	Clock *wiselib_clock_ = &wiselib::FacetProvider<Os, Clock>::get_facet( value );
	wiselib_rand_->srand( wiselib_radio_->id() );
	wiselib_radio_->set_channel( PLTT_CHANNEL );
	neighbor_discovery.init( *wiselib_radio_, *wiselib_timer_, *wiselib_debug_, *wiselib_clock_, *wiselib_rand_ );
	reliable_radio.init(  *wiselib_radio_, *wiselib_timer_, *wiselib_debug_, *wiselib_clock_, *wiselib_rand_ );
	passive.init( *wiselib_radio_, reliable_radio, *wiselib_timer_, *wiselib_debug_, *wiselib_rand_, *wiselib_clock_, neighbor_discovery );
	passive.set_self( PLTT_Node( Node( wiselib_radio_->id(), get_node_info<Position, Radio>( wiselib_radio_ ) ) ) );
	passive.enable();
}