* add blank example * add ipc example code, need to change FURI API * add ipc example code, need to change FURI API * change core API, add context * check handler at take * fix important bugs in furi * drawing example * add posix mq * fix unsigned demo counter * create at open * working local demo * russian version of IPC example * english version * add gif
		
			
				
	
	
		
			27 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
In this article we create few application, interact between apps, use OS functions and interact with HAL.
 | 
						|
 | 
						|
# General agreements
 | 
						|
 | 
						|
Flipper application is just a function:
 | 
						|
 | 
						|
```C
 | 
						|
void application_name(void* p) {
 | 
						|
    // Setup
 | 
						|
 | 
						|
    while(1) {
 | 
						|
        // Loop
 | 
						|
    }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
1. `void* p` is arbitrary pointer that may be used for pass parameters to application at launch (like argc/argv in POSIX).
 | 
						|
2. Application must never attempt to return or exit from their implementing function.
 | 
						|
3. Avoid long cycles without any "waits" or "blocking" like `delay` or `xQueueReceive`, otherwise your app will blocking overall Flipper work.
 | 
						|
4. Do not create static variables inside function or global variables. Use only local variables. We plan to add virual in-RAM filesystem to save any persistent data.  
 | 
						|
 | 
						|
# Application examples
 | 
						|
 | 
						|
* **[Blink](Blink-app)** show how to create app and control GPIO
 | 
						|
* **[UART write](UART-write)** operate with FURI pipe and print some messages
 | 
						|
* **[Inter-process communication](IPC-example)** describes how to interact between application through FURI
 |