Compare commits
	
		
			3 Commits
		
	
	
		
			1.0.0
			...
			1235efaf61
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 1235efaf61 | |||
| be243efd6e | |||
| d588c9b0ad | 
							
								
								
									
										8
									
								
								.idea/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.idea/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -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 |  | ||||||
							
								
								
									
										56
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								README.md
									
									
									
									
									
										Normal 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. | ||||||
| @@ -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); | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
| @@ -27,6 +27,5 @@ void main(void) | |||||||
|      |      | ||||||
|     while (1) { |     while (1) { | ||||||
|         XF_executeOnce(); |         XF_executeOnce(); | ||||||
|          |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
		Reference in New Issue
	
	Block a user