Archived
Template
1
0

Compare commits

..

2 Commits

Author SHA1 Message Date
1235efaf61 fix template factor 2023-07-13 23:54:35 +02:00
be243efd6e add README.md 2023-07-13 23:54:14 +02:00
4 changed files with 62 additions and 24 deletions

56
README.md Normal file
View File

@ -0,0 +1,56 @@
# 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 PIC8 board. It's template for work with state machines.
It used the model of the 5 layers for the packaging and double switch 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 specific code is the code that is specific to the board and 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 PIC8 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 ./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.

View File

@ -1,7 +1,7 @@
/**
* @author R<EFBFBD>mi Heredero (remi@heredero.ch)
* @version. 0.0.6
* @date 2023-06-15
* @author Rémi Heredero
* @version. 1.0.0
* @date July 2023
*/
#include "factory.h"
@ -62,23 +62,6 @@ CLICK_HANDLER* 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
void Factory_init() {
LED_init(l1(), 1);

View File

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

View File

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