RPC: Add ASCII event support (#284)

* RPC: SendAsciiEventRequest support

* GUI: Ascii input for ByteInput

* Sync protobuf submodule

* Update changelog
This commit is contained in:
WillyJL
2024-10-29 23:16:27 +00:00
committed by GitHub
parent 45f6e448c6
commit 39a3422b45
3 changed files with 36 additions and 1 deletions

View File

@@ -82,6 +82,7 @@
- JS:
- New `i2c` module (#259 by @jamisonderek)
- New `spi` module (#272 by @jamisonderek)
- RPC: Added ASCII event support (#284 by @Willy-JL)
- BadKB:
- OFW: Add linux/gnome badusb demo files (by @thomasnemer)
- Add older qFlipper install demos for windows and macos (by @DXVVAY & @grugnoymeme)

View File

@@ -269,6 +269,37 @@ static void
rpc_send_and_release_empty(session, request->command_id, PB_CommandStatus_OK);
}
static void
rpc_system_gui_send_ascii_event_request_process(const PB_Main* request, void* context) {
furi_assert(request);
furi_assert(request->which_content == PB_Main_gui_send_ascii_event_request_tag);
furi_assert(context);
FURI_LOG_D(TAG, "SendAsciiEvent");
RpcGuiSystem* rpc_gui = context;
RpcSession* session = rpc_gui->session;
furi_assert(session);
bool is_valid = (request->content.gui_send_ascii_event_request.value <= 0xFF);
if(!is_valid) {
rpc_send_and_release_empty(
session, request->command_id, PB_CommandStatus_ERROR_INVALID_PARAMETERS);
return;
}
AsciiEvent event = {
.value = request->content.gui_send_ascii_event_request.value,
};
// Submit event
FuriPubSub* ascii_events = furi_record_open(RECORD_ASCII_EVENTS);
furi_pubsub_publish(ascii_events, &event);
furi_record_close(RECORD_ASCII_EVENTS);
rpc_send_and_release_empty(session, request->command_id, PB_CommandStatus_OK);
}
static void rpc_system_gui_virtual_display_render_callback(Canvas* canvas, void* context) {
furi_assert(canvas);
furi_assert(context);
@@ -459,6 +490,9 @@ void* rpc_system_gui_alloc(RpcSession* session) {
rpc_handler.message_handler = rpc_system_gui_send_input_event_request_process;
rpc_add_handler(session, PB_Main_gui_send_input_event_request_tag, &rpc_handler);
rpc_handler.message_handler = rpc_system_gui_send_ascii_event_request_process;
rpc_add_handler(session, PB_Main_gui_send_ascii_event_request_tag, &rpc_handler);
rpc_handler.message_handler = rpc_system_gui_start_virtual_display_process;
rpc_add_handler(session, PB_Main_gui_start_virtual_display_request_tag, &rpc_handler);