Skip to content

Commit

Permalink
Latest RM1223-1952-0.93.9-9c6be8a on PATREON & GitHub - OFW 2x
Browse files Browse the repository at this point in the history
  • Loading branch information
RogueMaster committed Dec 26, 2023
2 parents 7577fdc + c9e3f20 commit de635a3
Show file tree
Hide file tree
Showing 13 changed files with 174 additions and 79 deletions.
2 changes: 2 additions & 0 deletions ReadMe.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ This software is for experimental purposes only and is not meant for any illegal
- Last Synced/Checked Unleashed, changes in [changelog](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/blob/420/CHANGELOG.md): `2023-12-25 19:25 EST`
- OFW PR: NFC: [Update mf_classic_dict.nfc #3314 (By ry4000)](https://github.com/flipperdevices/flipperzero-firmware/pull/3314) - For Bandai Namco Passport / Sega Aime Card (Already part of key dictionairy lines 1918-1952.)
- Added: [Smack My Dolphin Up! (By siberianbot)](https://github.com/siberianbot/smack-my-dolphin-up)
- OFW: [About: cn,tw,mx certification information #3318 (By skotopes)](https://github.com/flipperdevices/flipperzero-firmware/pull/3318)
- OFW: [RPC: reverse input #3304 (By skotopes)](https://github.com/flipperdevices/flipperzero-firmware/pull/3304)

## IN THIS BRANCH:

Expand Down
126 changes: 75 additions & 51 deletions applications/services/rpc/rpc_gui.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,41 @@
#include <flipper.pb.h>
#include <gui.pb.h>

// Contract assertion
_Static_assert(InputKeyMAX == 6, "InputKeyMAX");
_Static_assert(InputTypeMAX == 5, "InputTypeMAX");

_Static_assert(InputKeyUp == (int32_t)PB_Gui_InputKey_UP, "InputKeyUp != PB_Gui_InputKey_UP");
_Static_assert(
InputKeyDown == (int32_t)PB_Gui_InputKey_DOWN,
"InputKeyDown != PB_Gui_InputKey_DOWN");
_Static_assert(
InputKeyRight == (int32_t)PB_Gui_InputKey_RIGHT,
"InputKeyRight != PB_Gui_InputKey_RIGHT");
_Static_assert(
InputKeyLeft == (int32_t)PB_Gui_InputKey_LEFT,
"InputKeyLeft != PB_Gui_InputKey_LEFT");
_Static_assert(InputKeyOk == (int32_t)PB_Gui_InputKey_OK, "InputKeyOk != PB_Gui_InputKey_OK");
_Static_assert(
InputKeyBack == (int32_t)PB_Gui_InputKey_BACK,
"InputKeyBack != PB_Gui_InputKey_BACK");

_Static_assert(
InputTypePress == (int32_t)PB_Gui_InputType_PRESS,
"InputTypePress != PB_Gui_InputType_PRESS");
_Static_assert(
InputTypeRelease == (int32_t)PB_Gui_InputType_RELEASE,
"InputTypeRelease != PB_Gui_InputType_RELEASE");
_Static_assert(
InputTypeShort == (int32_t)PB_Gui_InputType_SHORT,
"InputTypeShort != PB_Gui_InputType_SHORT");
_Static_assert(
InputTypeLong == (int32_t)PB_Gui_InputType_LONG,
"InputTypeLong != PB_Gui_InputType_LONG");
_Static_assert(
InputTypeRepeat == (int32_t)PB_Gui_InputType_REPEAT,
"InputTypeRepeat != PB_Gui_InputType_REPEAT");

#define TAG "RpcGui"

typedef enum {
Expand Down Expand Up @@ -172,63 +207,20 @@ static void
RpcSession* session = rpc_gui->session;
furi_assert(session);

InputEvent event;

bool invalid = false;

switch(request->content.gui_send_input_event_request.key) {
case PB_Gui_InputKey_UP:
event.key = InputKeyUp;
break;
case PB_Gui_InputKey_DOWN:
event.key = InputKeyDown;
break;
case PB_Gui_InputKey_RIGHT:
event.key = InputKeyRight;
break;
case PB_Gui_InputKey_LEFT:
event.key = InputKeyLeft;
break;
case PB_Gui_InputKey_OK:
event.key = InputKeyOk;
break;
case PB_Gui_InputKey_BACK:
event.key = InputKeyBack;
break;
default:
// Invalid key
invalid = true;
break;
}
bool is_valid = (request->content.gui_send_input_event_request.key < (int32_t)InputKeyMAX) &&
(request->content.gui_send_input_event_request.type < (int32_t)InputTypeMAX);

switch(request->content.gui_send_input_event_request.type) {
case PB_Gui_InputType_PRESS:
event.type = InputTypePress;
break;
case PB_Gui_InputType_RELEASE:
event.type = InputTypeRelease;
break;
case PB_Gui_InputType_SHORT:
event.type = InputTypeShort;
break;
case PB_Gui_InputType_LONG:
event.type = InputTypeLong;
break;
case PB_Gui_InputType_REPEAT:
event.type = InputTypeRepeat;
break;
default:
// Invalid type
invalid = true;
break;
}

if(invalid) {
if(!is_valid) {
rpc_send_and_release_empty(
session, request->command_id, PB_CommandStatus_ERROR_INVALID_PARAMETERS);
return;
}

InputEvent event = {
.key = (int32_t)request->content.gui_send_input_event_request.key,
.type = (int32_t)request->content.gui_send_input_event_request.type,
};

// Event sequence shenanigans
event.sequence_source = INPUT_SEQUENCE_SOURCE_SOFTWARE;
if(event.type == InputTypePress) {
Expand Down Expand Up @@ -268,6 +260,29 @@ static void rpc_system_gui_virtual_display_render_callback(Canvas* canvas, void*
canvas_draw_xbm(canvas, 0, 0, canvas->width, canvas->height, rpc_gui->virtual_display_buffer);
}

static void rpc_system_gui_virtual_display_input_callback(InputEvent* event, void* context) {
furi_assert(event);
furi_assert(event->key < InputKeyMAX);
furi_assert(event->type < InputTypeMAX);
furi_assert(context);

RpcGuiSystem* rpc_gui = context;
RpcSession* session = rpc_gui->session;

FURI_LOG_D(TAG, "VirtulDisplay: SendInputEvent");

PB_Main rpc_message = {
.command_id = 0,
.command_status = PB_CommandStatus_OK,
.has_next = false,
.which_content = PB_Main_gui_send_input_event_request_tag,
.content.gui_send_input_event_request.key = (int32_t)event->key,
.content.gui_send_input_event_request.type = (int32_t)event->type,
};

rpc_send_and_release(session, &rpc_message);
}

static void rpc_system_gui_start_virtual_display_process(const PB_Main* request, void* context) {
furi_assert(request);
furi_assert(context);
Expand Down Expand Up @@ -304,6 +319,15 @@ static void rpc_system_gui_start_virtual_display_process(const PB_Main* request,
rpc_gui->virtual_display_view_port,
rpc_system_gui_virtual_display_render_callback,
rpc_gui);

if(request->content.gui_start_virtual_display_request.send_input) {
FURI_LOG_D(TAG, "VirtulDisplay: input forwarding requested");
view_port_input_callback_set(
rpc_gui->virtual_display_view_port,
rpc_system_gui_virtual_display_input_callback,
rpc_gui);
}

gui_add_view_port(rpc_gui->gui, rpc_gui->virtual_display_view_port, GuiLayerFullscreen);

rpc_send_and_release_empty(session, request->command_id, PB_CommandStatus_OK);
Expand Down
87 changes: 62 additions & 25 deletions applications/settings/about/about.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

typedef DialogMessageButton (*AboutDialogScreen)(DialogsApp* dialogs, DialogMessage* message);

static DialogMessageButton product_screen(DialogsApp* dialogs, DialogMessage* message) {
static DialogMessageButton about_screen_product(DialogsApp* dialogs, DialogMessage* message) {
DialogMessageButton result;

FuriString* screen_header = furi_string_alloc_printf(
Expand All @@ -31,16 +31,14 @@ static DialogMessageButton product_screen(DialogsApp* dialogs, DialogMessage* me
dialog_message_set_text(
message, furi_string_get_cstr(screen_text), 0, 26, AlignLeft, AlignTop);
result = dialog_message_show(dialogs, message);
dialog_message_set_header(message, NULL, 0, 0, AlignLeft, AlignTop);
dialog_message_set_text(message, NULL, 0, 0, AlignLeft, AlignTop);

furi_string_free(screen_header);
furi_string_free(screen_text);

return result;
}

static DialogMessageButton address_screen(DialogsApp* dialogs, DialogMessage* message) {
static DialogMessageButton about_screen_address(DialogsApp* dialogs, DialogMessage* message) {
DialogMessageButton result;

const char* screen_text = "Flipper Devices Inc\n"
Expand All @@ -50,12 +48,11 @@ static DialogMessageButton address_screen(DialogsApp* dialogs, DialogMessage* me

dialog_message_set_text(message, screen_text, 0, 0, AlignLeft, AlignTop);
result = dialog_message_show(dialogs, message);
dialog_message_set_text(message, NULL, 0, 0, AlignLeft, AlignTop);

return result;
}

static DialogMessageButton compliance_screen(DialogsApp* dialogs, DialogMessage* message) {
static DialogMessageButton about_screen_compliance(DialogsApp* dialogs, DialogMessage* message) {
DialogMessageButton result;

const char* screen_text = "For all compliance\n"
Expand All @@ -64,35 +61,71 @@ static DialogMessageButton compliance_screen(DialogsApp* dialogs, DialogMessage*

dialog_message_set_text(message, screen_text, 0, 0, AlignLeft, AlignTop);
result = dialog_message_show(dialogs, message);
dialog_message_set_text(message, NULL, 0, 0, AlignLeft, AlignTop);

return result;
}

static DialogMessageButton icon1_screen(DialogsApp* dialogs, DialogMessage* message) {
static DialogMessageButton about_screen_icon1(DialogsApp* dialogs, DialogMessage* message) {
DialogMessageButton result;

dialog_message_set_icon(message, &I_Certification1_103x56, 13, 0);
result = dialog_message_show(dialogs, message);
dialog_message_set_icon(message, NULL, 0, 0);

return result;
}

static DialogMessageButton icon2_screen(DialogsApp* dialogs, DialogMessage* message) {
static DialogMessageButton about_screen_icon2(DialogsApp* dialogs, DialogMessage* message) {
DialogMessageButton result;

dialog_message_set_icon(message, &I_Certification2_46x33, 15, 10);
dialog_message_set_text(
message, furi_hal_version_get_mic_id(), 63, 27, AlignLeft, AlignCenter);
result = dialog_message_show(dialogs, message);
dialog_message_set_icon(message, NULL, 0, 0);
dialog_message_set_text(message, NULL, 0, 0, AlignLeft, AlignTop);

return result;
}

static DialogMessageButton hw_version_screen(DialogsApp* dialogs, DialogMessage* message) {
static DialogMessageButton about_screen_cert_china_0(DialogsApp* dialogs, DialogMessage* message) {
DialogMessageButton result;

dialog_message_set_icon(message, &I_CertificationChina0_121x41, 3, 3);
result = dialog_message_show(dialogs, message);

return result;
}

static DialogMessageButton about_screen_cert_china_1(DialogsApp* dialogs, DialogMessage* message) {
DialogMessageButton result;

dialog_message_set_icon(message, &I_CertificationChina1_122x47, 3, 3);
dialog_message_set_text(
message, furi_hal_version_get_srrc_id(), 55, 11, AlignLeft, AlignBottom);
result = dialog_message_show(dialogs, message);

return result;
}

static DialogMessageButton about_screen_cert_taiwan(DialogsApp* dialogs, DialogMessage* message) {
DialogMessageButton result;

dialog_message_set_icon(message, &I_CertificationTaiwan_33x32, 3, 10);
dialog_message_set_text(
message, furi_hal_version_get_ncc_id(), 39, 30, AlignLeft, AlignBottom);
result = dialog_message_show(dialogs, message);

return result;
}

static DialogMessageButton about_screen_cert_mexico(DialogsApp* dialogs, DialogMessage* message) {
DialogMessageButton result;

dialog_message_set_icon(message, &I_CertificationMexico_98x41, 17, 4);
result = dialog_message_show(dialogs, message);

return result;
}

static DialogMessageButton about_screen_hw_version(DialogsApp* dialogs, DialogMessage* message) {
DialogMessageButton result;
FuriString* buffer;
buffer = furi_string_alloc();
Expand All @@ -117,14 +150,12 @@ static DialogMessageButton hw_version_screen(DialogsApp* dialogs, DialogMessage*
dialog_message_set_header(message, "HW Version Info:", 0, 0, AlignLeft, AlignTop);
dialog_message_set_text(message, furi_string_get_cstr(buffer), 0, 13, AlignLeft, AlignTop);
result = dialog_message_show(dialogs, message);
dialog_message_set_text(message, NULL, 0, 0, AlignLeft, AlignTop);
dialog_message_set_header(message, NULL, 0, 0, AlignLeft, AlignTop);
furi_string_free(buffer);

return result;
}

static DialogMessageButton fw_version_screen(DialogsApp* dialogs, DialogMessage* message) {
static DialogMessageButton about_screen_fw_version(DialogsApp* dialogs, DialogMessage* message) {
DialogMessageButton result;
FuriString* buffer;
buffer = furi_string_alloc();
Expand Down Expand Up @@ -156,21 +187,23 @@ static DialogMessageButton fw_version_screen(DialogsApp* dialogs, DialogMessage*
dialog_message_set_header(message, "FW Version Info:", 0, 0, AlignLeft, AlignTop);
dialog_message_set_text(message, furi_string_get_cstr(buffer), 0, 13, AlignLeft, AlignTop);
result = dialog_message_show(dialogs, message);
dialog_message_set_text(message, NULL, 0, 0, AlignLeft, AlignTop);
dialog_message_set_header(message, NULL, 0, 0, AlignLeft, AlignTop);
furi_string_free(buffer);

return result;
}

const AboutDialogScreen about_screens[] = {
product_screen,
hw_version_screen,
fw_version_screen,
icon1_screen,
icon2_screen,
compliance_screen,
address_screen};
about_screen_product,
about_screen_compliance,
about_screen_address,
about_screen_icon1,
about_screen_icon2,
about_screen_cert_china_0,
about_screen_cert_china_1,
about_screen_cert_taiwan,
about_screen_cert_mexico,
about_screen_hw_version,
about_screen_fw_version};

int32_t about_settings_app(void* p) {
UNUSED(p);
Expand Down Expand Up @@ -201,6 +234,10 @@ int32_t about_settings_app(void* p) {

screen_result = about_screens[screen_index](dialogs, message);

dialog_message_set_icon(message, NULL, 0, 0);
dialog_message_set_header(message, NULL, 0, 0, AlignLeft, AlignTop);
dialog_message_set_text(message, NULL, 0, 0, AlignLeft, AlignTop);

if(screen_result == DialogMessageButtonLeft) {
if(screen_index <= 0) {
ret = 1;
Expand Down
Binary file added assets/icons/About/CertificationChina0_121x41.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/icons/About/CertificationChina1_122x47.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/icons/About/CertificationMexico_98x41.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/icons/About/CertificationTaiwan_33x32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion assets/protobuf
Submodule protobuf updated 3 files
+4 −0 Changelog
+4 −4 flipper.proto
+9 −8 gui.proto
4 changes: 3 additions & 1 deletion targets/f18/api_symbols.csv
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
entry,status,name,type,params
Version,+,50.0,,
Version,+,50.1,,
Header,+,applications/services/bt/bt_service/bt.h,,
Header,+,applications/services/cli/cli.h,,
Header,+,applications/services/cli/cli_vcp.h,,
Expand Down Expand Up @@ -1330,7 +1330,9 @@ Function,+,furi_hal_version_get_mic_id,const char*,
Function,+,furi_hal_version_get_model_code,const char*,
Function,+,furi_hal_version_get_model_name,const char*,
Function,+,furi_hal_version_get_name_ptr,const char*,
Function,+,furi_hal_version_get_ncc_id,const char*,
Function,+,furi_hal_version_get_otp_version,FuriHalVersionOtpVersion,
Function,+,furi_hal_version_get_srrc_id,const char*,
Function,-,furi_hal_version_init,void,
Function,+,furi_hal_version_uid,const uint8_t*,
Function,+,furi_hal_version_uid_size,size_t,
Expand Down
8 changes: 8 additions & 0 deletions targets/f18/furi_hal/furi_hal_version_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,11 @@ const char* furi_hal_version_get_ic_id() {
const char* furi_hal_version_get_mic_id() {
return "Pending";
}

const char* furi_hal_version_get_srrc_id() {
return "Pending";
}

const char* furi_hal_version_get_ncc_id() {
return "Pending";
}
4 changes: 3 additions & 1 deletion targets/f7/api_symbols.csv
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
entry,status,name,type,params
Version,+,50.0,,
Version,+,50.1,,
Header,+,applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h,,
Header,+,applications/services/bt/bt_service/bt.h,,
Header,+,applications/services/cli/cli.h,,
Expand Down Expand Up @@ -1594,7 +1594,9 @@ Function,+,furi_hal_version_get_mic_id,const char*,
Function,+,furi_hal_version_get_model_code,const char*,
Function,+,furi_hal_version_get_model_name,const char*,
Function,+,furi_hal_version_get_name_ptr,const char*,
Function,+,furi_hal_version_get_ncc_id,const char*,
Function,+,furi_hal_version_get_otp_version,FuriHalVersionOtpVersion,
Function,+,furi_hal_version_get_srrc_id,const char*,
Function,-,furi_hal_version_init,void,
Function,-,furi_hal_version_set_name,void,const char*
Function,+,furi_hal_version_uid,const uint8_t*,
Expand Down
Loading

0 comments on commit de635a3

Please sign in to comment.