diff --git a/README.md b/README.md new file mode 100644 index 0000000..9bc0b83 --- /dev/null +++ b/README.md @@ -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.