9 #ifndef _981c80db_b2ac_4f25_af6c_febf5563d178
10 #define _981c80db_b2ac_4f25_af6c_febf5563d178
17 #include <boost/asio.hpp>
39 Sta2, Sta3, Sta4, Sta5,
41 Sta7, Sta8, Sta9, Sta10, Sta11, Sta12,
49 TransportConnectionIndication, TransportConnectionConfirmation,
50 TransportConnectionClosedIndication,
52 AAssociateRQLocal, AAssociateRQRemote,
53 AAssociateACLocal, AAssociateACRemote,
54 AAssociateRJLocal, AAssociateRJRemote,
56 AReleaseRQLocal, AReleaseRQRemote,
57 AReleaseRPLocal, AReleaseRPRemote,
59 PDataTFLocal, PDataTFRemote,
61 AAbortLocal, AAbortRemote,
63 ARTIMTimerExpired, InvalidPDU,
67 typedef boost::asio::deadline_timer::duration_type duration_type;
79 void transition(Event
const & event,
EventData & data);
82 State get_state()
const;
91 duration_type get_timeout()
const;
94 void set_timeout(duration_type timeout);
132 AE_1, AE_2, AE_3, AE_4, AE_5, AE_6, AE_7, AE_8,
134 AR_1, AR_2, AR_3, AR_4, AR_5, AR_6, AR_7, AR_8, AR_9, AR_10,
135 AA_1, AA_2, AA_3, AA_4, AA_5, AA_6, AA_7, AA_8
139 std::tuple<State, Event, bool>,
140 std::pair<Action, State>> TransitionMap;
143 std::pair<State, Event>,
144 std::function<bool(StateMachine
const &, EventData &)>> GuardMap;
146 static TransitionMap
const _transitions;
147 static GuardMap
const _guards;
153 Transport _transport;
156 duration_type _timeout;
159 boost::asio::deadline_timer _artim_timer;
165 void _send_pdu(EventData & data, uint8_t pdu_type);
171 void AE_1(EventData & data);
174 void AE_2(EventData & data);
177 void AE_3(EventData & data);
183 void AE_4(EventData & data);
186 void AE_5(EventData & data);
189 void AE_6(EventData & data);
192 void AE_7(EventData & data);
195 void AE_8(EventData & data);
198 void DT_1(EventData & data);
201 void DT_2(EventData & data);
204 void AR_1(EventData & data);
207 void AR_2(EventData & data);
213 void AR_3(EventData & data);
216 void AR_4(EventData & data);
219 void AR_5(EventData & data);
222 void AR_6(EventData & data);
225 void AR_7(EventData & data);
228 void AR_8(EventData & data);
231 void AR_9(EventData & data);
234 void AR_10(EventData & data);
240 void AA_1(EventData & data);
243 void AA_2(EventData & data);
250 void AA_3(EventData & data);
253 void AA_4(EventData & data);
256 void AA_5(EventData & data);
259 void AA_6(EventData & data);
262 void AA_7(EventData & data);
268 void AA_8(EventData & data);
275 #endif // _981c80db_b2ac_4f25_af6c_febf5563d178