Archived
Template
1
0

Compare commits

...

7 Commits

Author SHA1 Message Date
3be2fc85ff fix submodule 2023-07-14 00:12:03 +02:00
4dc5d2a0bc fix submodule 2023-07-14 00:08:58 +02:00
92bed31368 rename generator 2023-07-14 00:04:27 +02:00
8a47647fdd fix README.md 2023-07-14 00:01:52 +02:00
1235efaf61 fix template factor 2023-07-13 23:54:35 +02:00
be243efd6e add README.md 2023-07-13 23:54:14 +02:00
d588c9b0ad Supprimer '.idea/.gitignore' 2023-07-13 20:41:48 +00:00
7 changed files with 66 additions and 32 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "XFTGenerator"]
path = XFTGenerator
url = git@git.kb28.ch:HEL/XFTGenerator.git

8
.idea/.gitignore vendored
View File

@ -1,8 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

57
README.md Normal file
View File

@ -0,0 +1,57 @@
# 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.
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.
## 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.
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.
### 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 ./XFTGenerator/XFTGenerator.py
```
You can find the generated class in the folder `XFTGenerator/out/`.
For more details about generator, see the README.md in the folder `XFTGenerator/`.
### 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.

View File

@ -1,7 +1,7 @@
/** /**
* @author R<EFBFBD>mi Heredero (remi@heredero.ch) * @author Rémi Heredero
* @version. 0.0.6 * @version. 1.0.0
* @date 2023-06-15 * @date July 2023
*/ */
#include "factory.h" #include "factory.h"
@ -62,23 +62,6 @@ CLICK_HANDLER* ch3() {
return &theFactory.ch3_; return &theFactory.ch3_;
} }
BLINKER* blL() {
return &theFactory.blL_;
}
BLINKER* blR() {
return &theFactory.blR_;
}
BLINKER* blB() {
return &theFactory.blB_;
}
BLINKER* blT() {
return &theFactory.blT_;
}
APP* app() {
return &theFactory.app_;
}
//initialize all objects //initialize all objects
void Factory_init() { void Factory_init() {
LED_init(l1(), 1); LED_init(l1(), 1);

View File

@ -1,7 +1,7 @@
/** /**
* @author R<EFBFBD>mi Heredero (remi@heredero.ch) * @author Rémi Heredero
* @version. 0.0.6 * @version. 1.0.0
* @date 2023-06-15 * @date July 2023
*/ */
#ifndef FACTORY_H #ifndef FACTORY_H

View File

@ -27,6 +27,5 @@ void main(void)
while (1) { while (1) {
XF_executeOnce(); XF_executeOnce();
} }
} }