mirror of
https://github.com/DarkFlippers/unleashed-firmware.git
synced 2024-12-30 00:32:06 +03:00
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
|