e84: asio adapter for handshake timers + wall-clock test
The E84StateMachine timers landed last commit but stayed theoretical — arming was delivered via abstract callbacks the application had to glue to a real clock. This commit ships the canonical glue: - include/secsgem/gem/e84_asio_timers.hpp: header-only E84AsioTimers wraps three asio::steady_timers, wires set_timer_handlers on attach(), routes async_wait expiry back into fsm.on_timeout(). detach() cancels everything cleanly. - tests/test_e84_asio_timers.cpp: four scenarios exercised through a real asio::io_context with wall-clock timers — TA1 expiry, signal-driven cancel before TA1 fires, TA3 expiry from the Transferring state, and detach() halting further transitions. These cover the integration the synthetic unit tests in test_e84_timers.cpp can't reach. - INTEGRATION.md §4.6: the vendor-side recipe — create the port, set timeouts, make_shared<E84AsioTimers>(...)::attach(), feed signals from your I/O bridge. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -132,6 +132,7 @@ add_executable(secsgem_tests
|
||||
tests/test_e84.cpp
|
||||
tests/test_e84_ports.cpp
|
||||
tests/test_e84_timers.cpp
|
||||
tests/test_e84_asio_timers.cpp
|
||||
tests/test_e42_formatted_pp.cpp
|
||||
tests/test_gem300_scenario.cpp
|
||||
tests/test_wire_ceid_emission.cpp
|
||||
|
||||
Reference in New Issue
Block a user