Created queued FSM example

This commit is contained in:
John Wellbelove 2020-03-24 19:16:09 +00:00
parent 8e76afbcb1
commit a8fb7eecfb
4 changed files with 21 additions and 20 deletions

View File

@ -99,7 +99,7 @@ public:
//***************************************************************************
// The overridden virtual receive function.
//***************************************************************************
void receive(etl::imessage_router& sender_, const etl::imessage& msg_)
void receive(etl::imessage_router& sender_, const etl::imessage& msg_) override
{
if (accepts(msg_))
{
@ -148,9 +148,10 @@ private:
}
etl::imessage_router* sender;
etl::message_packet< Message1, Message2, Message3> packet; // Defines a packet suitable for all handled messages.
etl::message_packet< Message1, Message2, Message3, Message4> packet; // Defines a packet suitable for all possible messages.
};
// The queue of message items.
etl::queue<Item, 10> queue;
};
@ -162,16 +163,18 @@ class State1 : public etl::fsm_state<Fsm, State1, STATE1, Message1, Message2, Me
public:
//***************************************************************************
etl::fsm_state_id_t on_enter_state()
// When we enter this state.
//***************************************************************************
etl::fsm_state_id_t on_enter_state() override
{
std::cout << " S1 : Enter" << std::endl;
std::cout << " S1 : Enter state" << std::endl;
return STATE1;
}
//***************************************************************************
void on_exit_state()
void on_exit_state() override
{
std::cout << " S1 : Exit" << std::endl;
std::cout << " S1 : Exit state" << std::endl;
}
//***************************************************************************
@ -215,16 +218,18 @@ class State2 : public etl::fsm_state<Fsm, State2, STATE2, Message1, Message2, Me
public:
//***************************************************************************
etl::fsm_state_id_t on_enter_state()
etl::fsm_state_id_t on_enter_state() override
{
std::cout << " S2 : Enter" << std::endl;
std::cout << " S2 : Enter state" << std::endl;
return STATE2;
}
//***************************************************************************
void on_exit_state()
// When we enter this state.
//***************************************************************************
void on_exit_state() override
{
std::cout << " S2 : Exit" << std::endl;
std::cout << " S2 : Exit state" << std::endl;
}
//***************************************************************************

View File

@ -7,7 +7,7 @@ Embedded Template Library.
https://github.com/ETLCPP/etl
https://www.etlcpp.com
Copyright(c) 2017 jwellbelove
Copyright(c) 2020 jwellbelove
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files(the "Software"), to deal
@ -33,15 +33,11 @@ SOFTWARE.
#define ETL_THROW_EXCEPTIONS
#define ETL_VERBOSE_ERRORS
#define ETL_CHECK_PUSH_POP
#define ETL_ISTRING_REPAIR_ENABLE
#define ETL_IVECTOR_REPAIR_ENABLE
#define ETL_IDEQUE_REPAIR_ENABLE
#ifdef _MSC_VER
#if defined(_MSC_VER)
#include "etl/profiles/msvc_x86.h"
#else
#include "etl/profiles/gcc_windows_x86.h"
#elif defined(__GNUC__)
#include "etl/profiles/gcc_generic.h"
#endif
#endif

View File

@ -152,7 +152,7 @@
<ClCompile Include="..\QueuedFSM.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="etl_profile.h" />
<ClInclude Include="..\etl_profile.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

View File

@ -20,7 +20,7 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="etl_profile.h">
<ClInclude Include="..\etl_profile.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>