@@ -258,6 +258,41 @@ static void rpc_system_app_button_release(const PB_Main* request, void* context)
258258 }
259259}
260260
261+ static void rpc_system_app_button_press_release (const PB_Main * request , void * context ) {
262+ furi_assert (request );
263+ furi_assert (request -> which_content == PB_Main_app_button_press_release_request_tag );
264+
265+ RpcAppSystem * rpc_app = context ;
266+ furi_assert (rpc_app );
267+
268+ if (rpc_app -> callback ) {
269+ FURI_LOG_D (TAG , "ButtonPressRelease" );
270+
271+ RpcAppSystemEvent event ;
272+ event .type = RpcAppEventTypeButtonPressRelease ;
273+
274+ if (strlen (request -> content .app_button_press_release_request .args ) != 0 ) {
275+ event .data .type = RpcAppSystemEventDataTypeString ;
276+ event .data .string = request -> content .app_button_press_release_request .args ;
277+ } else {
278+ event .data .type = RpcAppSystemEventDataTypeInt32 ;
279+ event .data .i32 = request -> content .app_button_press_release_request .index ;
280+ }
281+
282+ rpc_system_app_error_reset (rpc_app );
283+ rpc_system_app_set_last_command (rpc_app , request -> command_id , & event );
284+
285+ rpc_app -> callback (& event , rpc_app -> callback_context );
286+
287+ } else {
288+ rpc_system_app_send_error_response (
289+ rpc_app ,
290+ request -> command_id ,
291+ PB_CommandStatus_ERROR_APP_NOT_RUNNING ,
292+ "ButtonPressRelease" );
293+ }
294+ }
295+
261296static void rpc_system_app_get_error_process (const PB_Main * request , void * context ) {
262297 furi_assert (request );
263298 furi_assert (request -> which_content == PB_Main_app_get_error_request_tag );
@@ -332,6 +367,7 @@ void rpc_system_app_confirm(RpcAppSystem* rpc_app, bool result) {
332367 rpc_app -> last_event_type == RpcAppEventTypeLoadFile ||
333368 rpc_app -> last_event_type == RpcAppEventTypeButtonPress ||
334369 rpc_app -> last_event_type == RpcAppEventTypeButtonRelease ||
370+ rpc_app -> last_event_type == RpcAppEventTypeButtonPressRelease ||
335371 rpc_app -> last_event_type == RpcAppEventTypeDataExchange );
336372
337373 const uint32_t last_command_id = rpc_app -> last_command_id ;
@@ -432,6 +468,9 @@ void* rpc_system_app_alloc(RpcSession* session) {
432468 rpc_handler .message_handler = rpc_system_app_button_release ;
433469 rpc_add_handler (session , PB_Main_app_button_release_request_tag , & rpc_handler );
434470
471+ rpc_handler .message_handler = rpc_system_app_button_press_release ;
472+ rpc_add_handler (session , PB_Main_app_button_press_release_request_tag , & rpc_handler );
473+
435474 rpc_handler .message_handler = rpc_system_app_get_error_process ;
436475 rpc_add_handler (session , PB_Main_app_get_error_request_tag , & rpc_handler );
437476
0 commit comments