RPC: Add data field to ping request & response (#836)
* Update protobuf * Send ping data back * Add check for has_next, more readability * Fix nullptr dereference Co-authored-by: Tony Freeman <tonyfreeman@users.noreply.github.com> Co-authored-by: Albert Kharisov <albkharisov@gmail.com> Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
parent
949079cb74
commit
e54e4a6d77
@ -3,14 +3,27 @@
|
||||
#include "status.pb.h"
|
||||
|
||||
void rpc_system_status_ping_process(const PB_Main* msg_request, void* context) {
|
||||
if(msg_request->has_next) {
|
||||
rpc_send_and_release_empty(
|
||||
context, msg_request->command_id, PB_CommandStatus_ERROR_INVALID_PARAMETERS);
|
||||
return;
|
||||
}
|
||||
|
||||
PB_Main msg_response = PB_Main_init_default;
|
||||
msg_response.has_next = false;
|
||||
msg_response.command_status = PB_CommandStatus_OK;
|
||||
msg_response.command_id = msg_request->command_id;
|
||||
msg_response.which_content = PB_Main_ping_response_tag;
|
||||
|
||||
const PB_Status_PingRequest* request = &msg_request->content.ping_request;
|
||||
PB_Status_PingResponse* response = &msg_response.content.ping_response;
|
||||
if(request->data && (request->data->size > 0)) {
|
||||
response->data = furi_alloc(PB_BYTES_ARRAY_T_ALLOCSIZE(request->data->size));
|
||||
memcpy(response->data->bytes, request->data->bytes, request->data->size);
|
||||
response->data->size = request->data->size;
|
||||
}
|
||||
|
||||
rpc_send_and_release(context, &msg_response);
|
||||
pb_release(&PB_Main_msg, &msg_response);
|
||||
}
|
||||
|
||||
void* rpc_system_status_alloc(Rpc* rpc) {
|
||||
|
@ -214,9 +214,9 @@ extern const pb_msgdesc_t PB_Main_msg;
|
||||
/* Maximum encoded size of messages (where known) */
|
||||
#define PB_Empty_size 0
|
||||
#define PB_StopSession_size 0
|
||||
#if defined(PB_Storage_ListRequest_size) && defined(PB_Storage_ListResponse_size) && defined(PB_Storage_ReadRequest_size) && defined(PB_Storage_ReadResponse_size) && defined(PB_Storage_WriteRequest_size) && defined(PB_Storage_DeleteRequest_size) && defined(PB_Storage_MkdirRequest_size) && defined(PB_Storage_Md5sumRequest_size) && defined(PB_App_StartRequest_size) && defined(PB_Gui_ScreenFrame_size) && defined(PB_Storage_StatRequest_size) && defined(PB_Storage_StatResponse_size)
|
||||
#if defined(PB_Status_PingRequest_size) && defined(PB_Status_PingResponse_size) && defined(PB_Storage_ListRequest_size) && defined(PB_Storage_ListResponse_size) && defined(PB_Storage_ReadRequest_size) && defined(PB_Storage_ReadResponse_size) && defined(PB_Storage_WriteRequest_size) && defined(PB_Storage_DeleteRequest_size) && defined(PB_Storage_MkdirRequest_size) && defined(PB_Storage_Md5sumRequest_size) && defined(PB_App_StartRequest_size) && defined(PB_Gui_ScreenFrame_size) && defined(PB_Storage_StatRequest_size) && defined(PB_Storage_StatResponse_size)
|
||||
#define PB_Main_size (10 + sizeof(union PB_Main_content_size_union))
|
||||
union PB_Main_content_size_union {char f7[(6 + PB_Storage_ListRequest_size)]; char f8[(6 + PB_Storage_ListResponse_size)]; char f9[(6 + PB_Storage_ReadRequest_size)]; char f10[(6 + PB_Storage_ReadResponse_size)]; char f11[(6 + PB_Storage_WriteRequest_size)]; char f12[(6 + PB_Storage_DeleteRequest_size)]; char f13[(6 + PB_Storage_MkdirRequest_size)]; char f14[(6 + PB_Storage_Md5sumRequest_size)]; char f16[(7 + PB_App_StartRequest_size)]; char f22[(7 + PB_Gui_ScreenFrame_size)]; char f24[(7 + PB_Storage_StatRequest_size)]; char f25[(7 + PB_Storage_StatResponse_size)]; char f0[36];};
|
||||
union PB_Main_content_size_union {char f5[(6 + PB_Status_PingRequest_size)]; char f6[(6 + PB_Status_PingResponse_size)]; char f7[(6 + PB_Storage_ListRequest_size)]; char f8[(6 + PB_Storage_ListResponse_size)]; char f9[(6 + PB_Storage_ReadRequest_size)]; char f10[(6 + PB_Storage_ReadResponse_size)]; char f11[(6 + PB_Storage_WriteRequest_size)]; char f12[(6 + PB_Storage_DeleteRequest_size)]; char f13[(6 + PB_Storage_MkdirRequest_size)]; char f14[(6 + PB_Storage_Md5sumRequest_size)]; char f16[(7 + PB_App_StartRequest_size)]; char f22[(7 + PB_Gui_ScreenFrame_size)]; char f24[(7 + PB_Storage_StatRequest_size)]; char f25[(7 + PB_Storage_StatResponse_size)]; char f0[36];};
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -11,11 +11,11 @@
|
||||
|
||||
/* Struct definitions */
|
||||
typedef struct _PB_Status_PingRequest {
|
||||
char dummy_field;
|
||||
pb_bytes_array_t *data;
|
||||
} PB_Status_PingRequest;
|
||||
|
||||
typedef struct _PB_Status_PingResponse {
|
||||
char dummy_field;
|
||||
pb_bytes_array_t *data;
|
||||
} PB_Status_PingResponse;
|
||||
|
||||
|
||||
@ -24,21 +24,23 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/* Initializer values for message structs */
|
||||
#define PB_Status_PingRequest_init_default {0}
|
||||
#define PB_Status_PingResponse_init_default {0}
|
||||
#define PB_Status_PingRequest_init_zero {0}
|
||||
#define PB_Status_PingResponse_init_zero {0}
|
||||
#define PB_Status_PingRequest_init_default {NULL}
|
||||
#define PB_Status_PingResponse_init_default {NULL}
|
||||
#define PB_Status_PingRequest_init_zero {NULL}
|
||||
#define PB_Status_PingResponse_init_zero {NULL}
|
||||
|
||||
/* Field tags (for use in manual encoding/decoding) */
|
||||
#define PB_Status_PingRequest_data_tag 1
|
||||
#define PB_Status_PingResponse_data_tag 1
|
||||
|
||||
/* Struct field encoding specification for nanopb */
|
||||
#define PB_Status_PingRequest_FIELDLIST(X, a) \
|
||||
|
||||
X(a, POINTER, SINGULAR, BYTES, data, 1)
|
||||
#define PB_Status_PingRequest_CALLBACK NULL
|
||||
#define PB_Status_PingRequest_DEFAULT NULL
|
||||
|
||||
#define PB_Status_PingResponse_FIELDLIST(X, a) \
|
||||
|
||||
X(a, POINTER, SINGULAR, BYTES, data, 1)
|
||||
#define PB_Status_PingResponse_CALLBACK NULL
|
||||
#define PB_Status_PingResponse_DEFAULT NULL
|
||||
|
||||
@ -50,8 +52,8 @@ extern const pb_msgdesc_t PB_Status_PingResponse_msg;
|
||||
#define PB_Status_PingResponse_fields &PB_Status_PingResponse_msg
|
||||
|
||||
/* Maximum encoded size of messages (where known) */
|
||||
#define PB_Status_PingRequest_size 0
|
||||
#define PB_Status_PingResponse_size 0
|
||||
/* PB_Status_PingRequest_size depends on runtime parameters */
|
||||
/* PB_Status_PingResponse_size depends on runtime parameters */
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 6be7def6087c4d277386381ff2792fa622933668
|
||||
Subproject commit 060aead10b80622975b14a077420354d26e0be38
|
Loading…
Reference in New Issue
Block a user