mirror of
https://github.com/ETLCPP/etl.git
synced 2026-06-28 21:38:44 +08:00
Merge remote-tracking branch 'origin/development'
This commit is contained in:
parent
c1a2213a58
commit
54d04ce1d8
@ -31,7 +31,7 @@ SOFTWARE.
|
||||
#endif
|
||||
|
||||
//***************************************************************************
|
||||
// This file has been auto generated. Do not edit this file.
|
||||
// THIS FILE HAS BEEN AUTO GENERATED. DO NOT EDIT THIS FILE.
|
||||
//***************************************************************************
|
||||
|
||||
//***************************************************************************
|
||||
@ -238,8 +238,9 @@ namespace etl
|
||||
/// Starts the FSM.
|
||||
/// Can only be called once.
|
||||
/// Subsequent calls will do nothing.
|
||||
///\param call_on_enter_state If true will call on_enter_state() for the first state. Default = true.
|
||||
//*******************************************
|
||||
void start()
|
||||
void start(bool call_on_enter_state = true)
|
||||
{
|
||||
// Can only be started once.
|
||||
if (p_state == nullptr)
|
||||
@ -247,7 +248,10 @@ namespace etl
|
||||
p_state = state_list[0];
|
||||
ETL_ASSERT(p_state != nullptr, ETL_ERROR(etl::fsm_null_state_exception));
|
||||
|
||||
p_state->on_enter_state();
|
||||
if (call_on_enter_state)
|
||||
{
|
||||
p_state->on_enter_state();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -335,9 +339,15 @@ namespace etl
|
||||
|
||||
//*******************************************
|
||||
/// Reset the FSM to pre-started state.
|
||||
///\param call_on_exit_state If true will call on_exit_state() for the current state. Default = false.
|
||||
//*******************************************
|
||||
void reset()
|
||||
void reset(bool call_on_exit_state = false)
|
||||
{
|
||||
if ((p_state != nullptr) && call_on_exit_state)
|
||||
{
|
||||
p_state->on_exit_state();
|
||||
}
|
||||
|
||||
p_state = nullptr;
|
||||
}
|
||||
|
||||
@ -351,10 +361,10 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// The definition for all 16 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1 = void, typename T2 = void, typename T3 = void, typename T4 = void,
|
||||
typename T5 = void, typename T6 = void, typename T7 = void, typename T8 = void,
|
||||
typename T9 = void, typename T10 = void, typename T11 = void, typename T12 = void,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1 = void, typename T2 = void, typename T3 = void, typename T4 = void,
|
||||
typename T5 = void, typename T6 = void, typename T7 = void, typename T8 = void,
|
||||
typename T9 = void, typename T10 = void, typename T11 = void, typename T12 = void,
|
||||
typename T13 = void, typename T14 = void, typename T15 = void, typename T16 = void>
|
||||
class fsm_state : public ifsm_state
|
||||
{
|
||||
@ -412,10 +422,10 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 15 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9, typename T10, typename T11, typename T12,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9, typename T10, typename T11, typename T12,
|
||||
typename T13, typename T14, typename T15>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, void> : public ifsm_state
|
||||
{
|
||||
@ -472,10 +482,10 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 14 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9, typename T10, typename T11, typename T12,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9, typename T10, typename T11, typename T12,
|
||||
typename T13, typename T14>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, void, void> : public ifsm_state
|
||||
{
|
||||
@ -531,10 +541,10 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 13 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9, typename T10, typename T11, typename T12,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9, typename T10, typename T11, typename T12,
|
||||
typename T13>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -589,9 +599,9 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 12 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9, typename T10, typename T11, typename T12>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -645,9 +655,9 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 11 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9, typename T10, typename T11>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -700,9 +710,9 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 10 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9, typename T10>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, void, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -754,9 +764,9 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 9 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, T5, T6, T7, T8, T9, void, void, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -807,8 +817,8 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 8 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, T5, T6, T7, T8, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -858,8 +868,8 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 7 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, T5, T6, T7, void, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -908,8 +918,8 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 6 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, T5, T6, void, void, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -957,8 +967,8 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 5 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, T5, void, void, void, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -1005,7 +1015,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 4 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, void, void, void, void, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -1051,7 +1061,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 3 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, void, void, void, void, void, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -1096,7 +1106,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 2 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, void, void, void, void, void, void, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -1140,7 +1150,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 1 message type.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, void, void, void, void, void, void, void, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
|
||||
@ -250,8 +250,9 @@ namespace etl
|
||||
/// Starts the FSM.
|
||||
/// Can only be called once.
|
||||
/// Subsequent calls will do nothing.
|
||||
///\param call_on_enter_state If true will call on_enter_state() for the first state. Default = true.
|
||||
//*******************************************
|
||||
void start()
|
||||
void start(bool call_on_enter_state = true)
|
||||
{
|
||||
// Can only be started once.
|
||||
if (p_state == nullptr)
|
||||
@ -259,7 +260,10 @@ namespace etl
|
||||
p_state = state_list[0];
|
||||
ETL_ASSERT(p_state != nullptr, ETL_ERROR(etl::fsm_null_state_exception));
|
||||
|
||||
p_state->on_enter_state();
|
||||
if (call_on_enter_state)
|
||||
{
|
||||
p_state->on_enter_state();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -347,9 +351,15 @@ namespace etl
|
||||
|
||||
//*******************************************
|
||||
/// Reset the FSM to pre-started state.
|
||||
///\param call_on_exit_state If true will call on_exit_state() for the current state. Default = false.
|
||||
//*******************************************
|
||||
void reset()
|
||||
void reset(bool call_on_exit_state = false)
|
||||
{
|
||||
if ((p_state != nullptr) && call_on_exit_state)
|
||||
{
|
||||
p_state->on_exit_state();
|
||||
}
|
||||
|
||||
p_state = nullptr;
|
||||
}
|
||||
|
||||
|
||||
@ -187,7 +187,7 @@ namespace
|
||||
|
||||
// Timer should have timed out.
|
||||
|
||||
CHECK_EQUAL(50, *callback_list1.data());
|
||||
CHECK_EQUAL(50U, *callback_list1.data());
|
||||
|
||||
CHECK(ecl_timer_unregister(id1));
|
||||
CHECK(!ecl_timer_unregister(id1));
|
||||
|
||||
@ -80,7 +80,7 @@ namespace
|
||||
|
||||
etl::callback_timer<3>* p_controller;
|
||||
};
|
||||
|
||||
|
||||
Test test;
|
||||
etl::function_imv<Test, test, &Test::callback> member_callback;
|
||||
etl::function_imv<Test, test, &Test::callback2> member_callback2;
|
||||
@ -147,7 +147,7 @@ namespace
|
||||
timer_controller.enable(true);
|
||||
|
||||
ticks = 0;
|
||||
|
||||
|
||||
const uint32_t step = 1;
|
||||
|
||||
while (ticks <= 100U)
|
||||
@ -207,7 +207,7 @@ namespace
|
||||
|
||||
// Timer should have timed out.
|
||||
|
||||
CHECK_EQUAL(50, *test.tick_list.data());
|
||||
CHECK_EQUAL(50U, *test.tick_list.data());
|
||||
|
||||
CHECK(timer_controller.unregister_timer(id1));
|
||||
CHECK(!timer_controller.unregister_timer(id1));
|
||||
@ -346,7 +346,7 @@ namespace
|
||||
std::vector<uint64_t> compare1 = { 77 };
|
||||
std::vector<uint64_t> compare2 = { 23 };
|
||||
std::vector<uint64_t> compare3 = { 11, 22, 33, 44, 55, 66, 77, 88, 99 };
|
||||
|
||||
|
||||
CHECK(test.tick_list.size() != 0);
|
||||
CHECK(free_tick_list1.size() != 0);
|
||||
CHECK(free_tick_list2.size() != 0);
|
||||
@ -442,7 +442,7 @@ namespace
|
||||
test.tick_list.clear();
|
||||
free_tick_list1.clear();
|
||||
free_tick_list2.clear();
|
||||
|
||||
|
||||
timer_controller.start(id3);
|
||||
timer_controller.start(id2);
|
||||
|
||||
@ -455,7 +455,7 @@ namespace
|
||||
while (ticks <= 100U)
|
||||
{
|
||||
if (ticks == 40)
|
||||
{
|
||||
{
|
||||
timer_controller.unregister_timer(id2);
|
||||
|
||||
id1 = timer_controller.register_timer(member_callback, 37, etl::timer::mode::REPEATING);
|
||||
@ -666,11 +666,11 @@ namespace
|
||||
|
||||
RAISE_THREAD_PRIORITY;
|
||||
FIX_PROCESSOR_AFFINITY;
|
||||
|
||||
|
||||
while (ticks <= 1000)
|
||||
{
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
||||
|
||||
|
||||
if (controller.tick(tick))
|
||||
{
|
||||
tick = TICK;
|
||||
@ -699,11 +699,11 @@ namespace
|
||||
controller.start(id1);
|
||||
controller.start(id2);
|
||||
//controller.start(id3);
|
||||
|
||||
|
||||
controller.enable(true);
|
||||
|
||||
std::thread t1(timer_event);
|
||||
|
||||
|
||||
bool restart_1 = true;
|
||||
|
||||
while (ticks <= 1000U)
|
||||
|
||||
@ -229,7 +229,7 @@ namespace
|
||||
|
||||
// Timer should have timed out.
|
||||
|
||||
CHECK_EQUAL(50, *router1.message1.data());
|
||||
CHECK_EQUAL(50U, *router1.message1.data());
|
||||
|
||||
CHECK(timer_controller.unregister_timer(id1));
|
||||
CHECK(!timer_controller.unregister_timer(id1));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user