2023-07-13 21:54:14 +00:00
|
|
|
# XFT
|
|
|
|
eXecutive Framework Template (XFT) is a template for project with femto XF.
|
|
|
|
|
|
|
|
Femto XF is an eXecutive Framework for embedded systems developed
|
|
|
|
in the University of Applied Sciences Western Switzerland (HES-SO Valais/Wallis)
|
|
|
|
by Pierre-André Mudry, Pascal Sartoretti and Medar Rieder.
|
|
|
|
|
2023-07-13 22:01:52 +00:00
|
|
|
This template is specifically designed for a PIC18F board. It's template for work with state machines.
|
|
|
|
It used the model of the 5 layers for the packaging and double switch pattern for the state machine.
|
2023-07-13 21:54:14 +00:00
|
|
|
|
|
|
|
## Layers
|
|
|
|
### App
|
|
|
|
Here is the place for the application code.
|
|
|
|
The application code is the code that is specific to the application and that is not reusable on another application.
|
|
|
|
Here you can find the factory and obviously the main.
|
|
|
|
|
|
|
|
### Board
|
|
|
|
Here is the place for the board specific code.
|
2023-07-13 22:01:52 +00:00
|
|
|
The board code is the code that is not reusable on another board.
|
|
|
|
|
|
|
|
Here you can find in bonus a class for the LED and a class for the button for a PIC18F board.
|
2023-07-13 21:54:14 +00:00
|
|
|
|
|
|
|
### MCC Generated Files
|
|
|
|
Here is the files generated by the MPLAB Code Configurator (MCC).
|
|
|
|
You maybe have to regenerate them if you change the configuration of the board.
|
|
|
|
|
|
|
|
### Middleware
|
|
|
|
Here is the place for the middleware code.
|
|
|
|
The middleware code is the code that is not specific to the board and that is reusable on another board.
|
|
|
|
Here you can find in bonus a class for a blinker and a class for a click handler.
|
|
|
|
|
|
|
|
### XF
|
|
|
|
Here is the femto XF framework. No modification is needed.
|
|
|
|
|
|
|
|
## State machines
|
|
|
|
### Generator
|
|
|
|
You can generate a class for state machine with the following command:
|
|
|
|
```bash
|
|
|
|
python3 ./generator/XFTGenerator.py
|
|
|
|
```
|
|
|
|
You can find the generated class in the folder `generator/out/`.
|
|
|
|
For more details about generator, see the README.md in the folder `generator/`.
|
|
|
|
|
|
|
|
### How it works
|
|
|
|
The architecture is based around the method `processEvent()`.
|
|
|
|
This method is called by the XF when an event is received.
|
|
|
|
|
|
|
|
The method `processEvent()` is a switch on the current state.
|
|
|
|
The first switch is switched on the actual state. The second switch is switched on event on exit and a third switch is switched on event on entry.
|
|
|
|
|
|
|
|
For each entry on an event you have a callback method than you can define in the class with the FILENAME_onState() method.
|
|
|
|
|
|
|
|
For each variables you have a setter.
|
|
|
|
|
|
|
|
For each event you have an emitter method that you can call in the class with the FILENAME_emitEvent() method.
|
|
|
|
|
|
|
|
Look the comments of .h file for more details.
|