32 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
Extending the Core
 | 
						|
==================
 | 
						|
This directory contains an example on how you can extend the base functionality of the gateway.
 | 
						|
Basically you can define own boards here and can add one or more tasks that will be started by the core.
 | 
						|
You can also add additional libraries that will be used for your task.
 | 
						|
In this example we define an addtional board (environment) with the name "testboard".
 | 
						|
When building for this board we add the -DTEST_BOARD to the compilation - see [platformio.ini](platformio.ini).
 | 
						|
The additional task that we defined will only be compiled and started for this environment (see the #ifdef TEST_BOARD in the code).
 | 
						|
You can add your own directory below "lib". The name of the directory must contain "task".
 | 
						|
 | 
						|
Files
 | 
						|
-----
 | 
						|
   * [platformio.ini](platformio.ini)
 | 
						|
    extend the base configuration - we add a dummy library here and define our buil environment (board)
 | 
						|
   * [GwExampleTask.h](GwExampleTask.h) the name of this include must match the name of the directory (ignoring case) with a "gw" in front. This file includes our special hardware definitions and registers our task at the core (DECLARE_USERTASK in the code).
 | 
						|
   * [GwExampleTaks.cpp](GwExampleTask.cpp) includes the implementation of our task. This tasks runs in an own thread - see the comments in the code.
 | 
						|
   * [GwExampleHardware.h](GwExampleHardware.h) includes our pin definitions for the board.
 | 
						|
 | 
						|
 Hints
 | 
						|
 -----
 | 
						|
 Just be careful not to interfere with names from the core - so it is a good practice to prefix your files and class like in the example.
 | 
						|
 | 
						|
 Developing
 | 
						|
 ----------
 | 
						|
 To develop I recommend forking the gateway repository and adding your own directory below lib (with the string task in it's name).
 | 
						|
 As your code goes into a separate directory it should be very easy to fetch upstream changes without the need to adapt your code.
 | 
						|
 | 
						|
 Future Plans
 | 
						|
 ------------
 | 
						|
 If there will be a need we can extend this extension API by means of adding config items and specific java script code and css for the UI.
 | 
						|
 
 |