* 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
 |