#include <iostream>
{
blink_on{ initial_substate_of{ blinking } },
blink_off{ substate_of{ blinking } };
public :
{
off.just_switch_to< turn_on_off >( blinking );
blinking.just_switch_to< turn_on_off >(
off );
blink_on
.on_enter( []{ std::cout << "ON" << std::endl; } )
.on_exit( []{ std::cout << "off" << std::endl; } )
.time_limit( std::chrono::milliseconds{1250}, blink_off );
blink_off
.time_limit( std::chrono::milliseconds{750}, blink_on );
}
};
int main()
{
try
{
m = led->so_direct_mbox();
} );
auto pause = []( unsigned int v ) {
std::this_thread::sleep_for( std::chrono::seconds{v} );
};
std::cout << "Turn blinking on for 10s" << std::endl;
so_5::send< blinking_led::turn_on_off >( m );
pause( 10 );
std::cout << "Turn blinking off for 5s" << std::endl;
so_5::send< blinking_led::turn_on_off >( m );
pause( 5 );
std::cout << "Turn blinking on for 5s" << std::endl;
so_5::send< blinking_led::turn_on_off >( m );
pause( 5 );
std::cout << "Stopping..." << std::endl;
} );
}
catch( const std::exception & ex )
{
std::cerr << "Error: " << ex.what() << std::endl;
}
return 0;
}