This repository has been archived on 2024-01-25. You can view files and clone it, but cannot push or open issues or pull requests.
XF/readme.md

3.9 KiB

Goal of this project

  • Design an algorithm which lets the XFTimeoutManager behave in the same timely manner independent of whether it handles one or nn timeouts
  • Implement the core classes of the XF
  • Implement the port classes for following ports: common, idf-qt, idf-stm32
  • Test and comment the code of the XF
  • The tests provided need to run using Qt and on the Embedded System platform
  • Demonstrate the right functioning of the XF by comparing and documenting the output created by the tests running on the Embedded System

Time Algorithm

flowchart TD
    insert[it.subRelTick\ninsert]
    
    
    A(Start)--> B[relTime = 0]
    B --> C{relTime < desireTime}
    C --> |Yes| D[it++]
    D --> E{ End ? }
    E --> |No| F[it.getRelTick]
    F --> C
    E --> |Yes| insert
st=>start: Start:>http://google.com[blank]

Andrew -> China : Says Hello

Tests

Test 1

This test launches an instance of the Task01Tm class and produces some output. Optionally, multiple instances of Task01Tm can be created to test the XF.

The Test Factory (TestFactory01) instantiates 2 objects:

  • An object of Task01Tm which outputs the text "Say Hello" every second
  • An object of Task01Tm which outputs the text "Echo" every half second
QT result

result.PNG

This test is successfully passed

STM result

result.png

Test 2

This test checks again timeout handling and proper termination of a state machine. In case the state machine was statically/globally created, the XF must not delete the object, when requested to terminate the behavior. If the state-machine was created on the heap (dynamic allocation), the XF must delete the state machine upon request to terminate.

Weather or not the state machine should be deleted is handled with the 'deleteOnTerminate()' method provided by the XFReactive interface.

QT result

result.PNG

This test is successfully passed

STM result

result.png

Test 3

This test checks basic event handling in state machines. In this example the StateMachine03 class sends itself an evRestart event to change from one state to another.

QT result

result.PNG

This test is successfully passed

STM result

result.png

Test 4

Tests if timeouts are correctly cancelled. When leaving a state with a transition having a timeout, without the timeout raises, the timeout must be cancelled (unscheduled).

QT result

result.PNG

This test is successfully passed

STM result

result.png

Test 5

With this test multiple timeouts are added to the XFTimeoutManager list at the same time. This tests the way how new timeouts are added in relation to other timeouts (with the same timeout value) already added to the list. For more details how the objects are created, please refere to the implementation of the TestFactory05 class.

QT result

result.PNG

This test is successfully passed

STM result

result.png