 0261dc3075
			
		
	
	
		0261dc3075
		
			
		
	
	
	
	
		
			
			* Update protobuf definitions * Add Property subsystem entry point function * Key-based system info and power info function stubs * Remove unneeded functions * Working power info * Working system info * Replace #defines with string literals * Remove unneeded field * Simplify system info formatting * Refactor output callback handling * Handle the last info element correctly * Optimise power info, rename methods * Add comments * Add power debug * Remove unneeded definitions * Rename some files and functions * Update protobuf definitions * Implement App GetError and DataExchange APIs * Send GetErrorReply with correct command_id * Add RPC debug app stub * Add more scenes * Add warning, increase stack size * Add receive data exchange scene * Improve data exchange * Add notifications * Update application requirements * Bump format version for property-based infos * Correctly reset error text * RCP: sync protobuf repo to latest release tag Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| #include <stdbool.h>
 | |
| #include <core/string.h>
 | |
| 
 | |
| /** Callback type called every time another key-value pair of device information is ready
 | |
|  *
 | |
|  * @param      key[in]      device information type identifier
 | |
|  * @param      value[in]    device information value
 | |
|  * @param      last[in]     whether the passed key-value pair is the last one
 | |
|  * @param      context[in]  to pass to callback
 | |
|  */
 | |
| typedef void (*PropertyValueCallback)(const char* key, const char* value, bool last, void* context);
 | |
| 
 | |
| typedef struct {
 | |
|     FuriString* key; /**< key string buffer, must be initialised before use */
 | |
|     FuriString* value; /**< value string buffer, must be initialised before use */
 | |
|     PropertyValueCallback out; /**< output callback function */
 | |
|     char sep; /**< separator character between key parts */
 | |
|     bool last; /**< flag to indicate last element */
 | |
|     void* context; /**< user-defined context, passed through to out callback */
 | |
| } PropertyValueContext;
 | |
| 
 | |
| /** Builds key and value strings and outputs them via a callback function
 | |
|  *
 | |
|  * @param       ctx[in]     local property context
 | |
|  * @param       fmt[in]     value format, set to NULL to bypass formatting
 | |
|  * @param       nparts[in]  number of key parts (separated by character)
 | |
|  * @param       ...[in]     list of key parts followed by value
 | |
|  */
 | |
| void property_value_out(PropertyValueContext* ctx, const char* fmt, unsigned int nparts, ...);
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 |