コード例 #1
0
ファイル: ChannelLayoutTest.cpp プロジェクト: goddardl/gander
	void testContainerAccess() 
	{
		typedef ChannelLayout< float, Chan_Green > Layout;
		Layout layout;
		Layout::ChannelContainerType c( layout );
		Layout::ChannelPointerContainerType cp( layout );
		
		BOOST_CHECK_EQUAL( cp.size(), layout.numberOfChannelPointers() );
		BOOST_CHECK_EQUAL( c.size(), layout.numberOfChannels() );
		
		BOOST_CHECK_EQUAL( layout.channels(), ChannelSet( Mask_Green ) );
		
		layout.channel< Layout::ChannelContainerType >( c, Chan_Green ) = 2.;
		
		BOOST_CHECK_EQUAL( float( layout.channel< Layout::ChannelContainerType >( c, Chan_Green ) ), 2. );
		BOOST_CHECK_THROW( layout.channel< Layout::ChannelContainerType >( c, Chan_Red ), std::runtime_error );
		BOOST_CHECK_EQUAL( float( layout.channelAtIndex< Layout::ChannelContainerType >( c, 0 ) ), 2. );
		BOOST_CHECK_THROW( layout.channelAtIndex< Layout::ChannelContainerType >( c, 1 ), std::runtime_error );
	
		float green = 3.;	
		layout.setChannelPointer< Layout::ChannelPointerContainerType >( cp, Chan_Green, &green );
		BOOST_CHECK_EQUAL( float( layout.channel< Layout::ChannelPointerContainerType >( cp, Chan_Green ) ), 3. );
		BOOST_CHECK_THROW( layout.channel< Layout::ChannelPointerContainerType >( cp, Chan_Blue ), std::runtime_error );
		BOOST_CHECK_EQUAL( float( layout.channelAtIndex< Layout::ChannelPointerContainerType >( cp, 0 ) ), 3. );
		BOOST_CHECK_THROW( layout.channelAtIndex< Layout::ChannelPointerContainerType >( cp, 1 ), std::runtime_error );
		layout.channelAtIndex< Layout::ChannelPointerContainerType >( cp, 0 ) = 1.;
		BOOST_CHECK_EQUAL( green, 1. );
	}
コード例 #2
0
ファイル: service_mode_rx.c プロジェクト: Dzenik/eLeReS
void ServiceMode()
{
	unsigned char rssi_table[256];
	uint8_t service_channel;
	unsigned long time = millis();
	static unsigned long last_hop_time;

	Red_LED_ON;
	Green_LED_ON;
	

	service_channel = 0;
	last_hop_time = time;
	ChannelSet(service_channel);
	while(1)
	{
		time = millis();
		
		if (_spi_read(0x0C)==0) // detect the locked module and reboot	
		{
			RF22B_init_parameter(); 
			to_rx_mode(); 
		}
		
		
		//channel change
		if (time-last_hop_time>12)
		{
			rssi_table[service_channel] = _spi_read(0x26);
			service_channel++;
			last_hop_time = time;
		}

		if (UART_lock) //awaiting message from UART
		{
			Service_Recieve(UART_command_type,UART_command_size,(char *)UART_command);
			UART_lock = 0;		//unlock uart - allowing to recieve next message
		}

		Service_Send(rssi_table);

	}
}
コード例 #3
0
ファイル: ChannelLayoutTest.cpp プロジェクト: goddardl/gander
	void testCommonLayoutInterface()
	{
		typedef ChannelLayout<float, Chan_Alpha> Layout1;
		typedef ChannelLayout<int, Chan_Z> Layout2;
		typedef ChannelLayout<short, Chan_Red> Layout3;

		Layout1 l1;
		Layout2 l2;
		Layout3 l3;

		BOOST_CHECK( int( l1 == l1 ) );
		BOOST_CHECK( int( l2 == l2 ) );
		BOOST_CHECK( int( l3 == l3 ) );
		BOOST_CHECK_EQUAL( int( l3 == l1 ), 0 );
		BOOST_CHECK_EQUAL( int( l3 == l2 ), 0 );
		BOOST_CHECK_EQUAL( int( l1 == l2 ), 0 );
		
		BOOST_CHECK( int( l1 != l3 ) );
		BOOST_CHECK( int( l2 != l3 ) );
		BOOST_CHECK( int( l3 != l1 ) );
		
		BOOST_CHECK_EQUAL( l1.contains( Chan_Alpha ), true );
		BOOST_CHECK_EQUAL( l1.contains( Chan_Red ), false );
		BOOST_CHECK_EQUAL( l2.contains( Chan_Z ), true );
		BOOST_CHECK_EQUAL( l2.contains( Chan_Alpha ), false );
		BOOST_CHECK_EQUAL( l3.contains( Chan_Red ), true );
		BOOST_CHECK_EQUAL( l3.contains( Chan_Z ), false );

		BOOST_CHECK_EQUAL( l1.channels(), ChannelSet( Mask_Alpha ) );
		BOOST_CHECK_EQUAL( l2.channels(), ChannelSet( Mask_Z ) );
		BOOST_CHECK_EQUAL( l3.channels(), ChannelSet( Mask_Red ) );
		
		BOOST_CHECK_EQUAL( l1.numberOfChannels(), 1 );
		BOOST_CHECK_EQUAL( l2.numberOfChannels(), 1 );
		BOOST_CHECK_EQUAL( l3.numberOfChannels(), 1 );
		
		BOOST_CHECK_EQUAL( l1.requiredChannels(), ChannelSet( Mask_Alpha ) );
		BOOST_CHECK_EQUAL( l2.requiredChannels(), ChannelSet( Mask_Z ) );
		BOOST_CHECK_EQUAL( l3.requiredChannels(), ChannelSet( Mask_Red ) );
	}