Skip to content

Commit

Permalink
fix #13
Browse files Browse the repository at this point in the history
  • Loading branch information
TorstenRobitzki committed May 4, 2021
1 parent d7e82e6 commit 86e2dc0
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
7 changes: 4 additions & 3 deletions bluetoe/link_layer/include/bluetoe/link_layer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -923,7 +923,6 @@ namespace link_layer {

return transmit_window_size_ <= maximum_transmit_window_offset
&& transmit_window_size_ <= connection_interval_
&& ( transmit_window_offset_ - delta_time( us_per_digits ) ) <= connection_interval_
&& timeout >= minimum_connection_timeout
&& timeout <= maximum_connection_timeout
&& timeout >= ( slave_latency + 1 ) * 2 * connection_interval_
Expand All @@ -933,6 +932,8 @@ namespace link_layer {
template < class Server, template < std::size_t, std::size_t, class > class ScheduledRadio, typename ... Options >
bool link_layer< Server, ScheduledRadio, Options... >::parse_timing_parameters_from_connect_request( const std::uint8_t* valid_connect_request_body )
{
const delta_time transmit_window_offset = delta_time( read_16( &valid_connect_request_body[ 20 ] ) * us_per_digits );

transmit_window_size_ = delta_time( valid_connect_request_body[ 19 ] * us_per_digits );
transmit_window_offset_ = delta_time( read_16( &valid_connect_request_body[ 20 ] ) * us_per_digits + us_per_digits );
connection_interval_ = delta_time( read_16( &valid_connect_request_body[ 22 ] ) * us_per_digits );
Expand All @@ -942,7 +943,7 @@ namespace link_layer {

max_timeouts_til_connection_lost_ = timeout / connection_interval_;

return check_timing_paremeters( slave_latency_, timeout );
return transmit_window_offset <= connection_interval_ && check_timing_paremeters( slave_latency_, timeout );
}

template < class Server, template < std::size_t, std::size_t, class > class ScheduledRadio, typename ... Options >
Expand All @@ -957,7 +958,7 @@ namespace link_layer {

max_timeouts_til_connection_lost_ = timeout / connection_interval_;

return check_timing_paremeters( slave_latency_, timeout );
return transmit_window_offset_ <= connection_interval_ && check_timing_paremeters( slave_latency_, timeout );
}

template < class Server, template < std::size_t, std::size_t, class > class ScheduledRadio, typename ... Options >
Expand Down
7 changes: 7 additions & 0 deletions tests/link_layer/ll_connection_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,13 @@ BOOST_FIXTURE_TEST_CASE( connection_update_request_invalid_window_size, unconnec
BOOST_CHECK_EQUAL( connection_events().size(), 6u );
}

BOOST_FIXTURE_TEST_CASE( connection_update_request_window_size_0, unconnected )
{
simulate_connection_update_request( *this, 5, 0, 40, 1, 25, 6 );

BOOST_CHECK_EQUAL( connection_events().size(), 17u );
}

BOOST_FIXTURE_TEST_CASE( connection_update_request_invalid_window_offset, unconnected )
{
simulate_connection_update_request( *this, 5, 206, 40, 1, 25, 6 );
Expand Down

0 comments on commit 86e2dc0

Please sign in to comment.