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. ); }
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); } }
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 ) ); }