Archived
Template
1
0
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.
XFT/README.md

58 lines
2.3 KiB
Markdown
Raw Normal View History

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.