mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-15 04:19:26 -07:00
Fix RFID Fuzzer and iButton Fuzzer Bugs
This commit is contained in:
@@ -4,7 +4,7 @@ App(
|
|||||||
apptype=FlipperAppType.EXTERNAL,
|
apptype=FlipperAppType.EXTERNAL,
|
||||||
entry_point="flipfrid_start",
|
entry_point="flipfrid_start",
|
||||||
requires=["gui", "storage", "dialogs", "input", "notification"],
|
requires=["gui", "storage", "dialogs", "input", "notification"],
|
||||||
stack_size=1 * 1024,
|
stack_size=2 * 1024,
|
||||||
order=15,
|
order=15,
|
||||||
fap_icon="rfid_10px.png",
|
fap_icon="rfid_10px.png",
|
||||||
fap_category="Tools",
|
fap_category="Tools",
|
||||||
|
|||||||
18
applications/external/flipfrid/flipfrid.c
vendored
18
applications/external/flipfrid/flipfrid.c
vendored
@@ -58,6 +58,16 @@ FlipFridState* flipfrid_alloc() {
|
|||||||
flipfrid->proto_name = furi_string_alloc();
|
flipfrid->proto_name = furi_string_alloc();
|
||||||
flipfrid->data_str = furi_string_alloc();
|
flipfrid->data_str = furi_string_alloc();
|
||||||
|
|
||||||
|
flipfrid->main_menu_items[0] = furi_string_alloc_set("Default Values");
|
||||||
|
flipfrid->main_menu_items[1] = furi_string_alloc_set("BF Customer ID");
|
||||||
|
flipfrid->main_menu_items[2] = furi_string_alloc_set("Load File");
|
||||||
|
flipfrid->main_menu_items[3] = furi_string_alloc_set("Load UIDs from file");
|
||||||
|
|
||||||
|
flipfrid->main_menu_proto_items[0] = furi_string_alloc_set("EM4100");
|
||||||
|
flipfrid->main_menu_proto_items[1] = furi_string_alloc_set("HIDProx");
|
||||||
|
flipfrid->main_menu_proto_items[2] = furi_string_alloc_set("PAC/Stanley");
|
||||||
|
flipfrid->main_menu_proto_items[3] = furi_string_alloc_set("H10301");
|
||||||
|
|
||||||
flipfrid->previous_scene = NoneScene;
|
flipfrid->previous_scene = NoneScene;
|
||||||
flipfrid->current_scene = SceneEntryPoint;
|
flipfrid->current_scene = SceneEntryPoint;
|
||||||
flipfrid->is_running = true;
|
flipfrid->is_running = true;
|
||||||
@@ -100,6 +110,14 @@ void flipfrid_free(FlipFridState* flipfrid) {
|
|||||||
furi_string_free(flipfrid->proto_name);
|
furi_string_free(flipfrid->proto_name);
|
||||||
furi_string_free(flipfrid->data_str);
|
furi_string_free(flipfrid->data_str);
|
||||||
|
|
||||||
|
for(uint32_t i = 0; i < 4; i++) {
|
||||||
|
furi_string_free(flipfrid->main_menu_items[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(uint32_t i = 0; i < 4; i++) {
|
||||||
|
furi_string_free(flipfrid->main_menu_proto_items[i]);
|
||||||
|
}
|
||||||
|
|
||||||
free(flipfrid->data);
|
free(flipfrid->data);
|
||||||
free(flipfrid->payload);
|
free(flipfrid->payload);
|
||||||
|
|
||||||
|
|||||||
2
applications/external/flipfrid/flipfrid.h
vendored
2
applications/external/flipfrid/flipfrid.h
vendored
@@ -75,6 +75,8 @@ typedef struct {
|
|||||||
FlipFridProtos proto;
|
FlipFridProtos proto;
|
||||||
FuriString* attack_name;
|
FuriString* attack_name;
|
||||||
FuriString* proto_name;
|
FuriString* proto_name;
|
||||||
|
FuriString* main_menu_items[4];
|
||||||
|
FuriString* main_menu_proto_items[4];
|
||||||
|
|
||||||
DialogsApp* dialogs;
|
DialogsApp* dialogs;
|
||||||
FuriString* notification_msg;
|
FuriString* notification_msg;
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
#include "flipfrid_scene_entrypoint.h"
|
#include "flipfrid_scene_entrypoint.h"
|
||||||
|
|
||||||
FuriString* main_menu_items[4];
|
|
||||||
FuriString* main_menu_proto_items[4];
|
|
||||||
|
|
||||||
void flipfrid_scene_entrypoint_menu_callback(
|
void flipfrid_scene_entrypoint_menu_callback(
|
||||||
FlipFridState* context,
|
FlipFridState* context,
|
||||||
uint32_t index,
|
uint32_t index,
|
||||||
@@ -68,31 +65,14 @@ void flipfrid_scene_entrypoint_on_enter(FlipFridState* context) {
|
|||||||
menu_items[i] = furi_string_alloc();
|
menu_items[i] = furi_string_alloc();
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
main_menu_items[0] = furi_string_alloc_set("Default Values");
|
|
||||||
main_menu_items[1] = furi_string_alloc_set("BF Customer ID");
|
|
||||||
main_menu_items[2] = furi_string_alloc_set("Load File");
|
|
||||||
main_menu_items[3] = furi_string_alloc_set("Load UIDs from file");
|
|
||||||
|
|
||||||
context->menu_proto_index = 0;
|
context->menu_proto_index = 0;
|
||||||
/*for(uint32_t i = 0; i < 4; i++) {
|
/*for(uint32_t i = 0; i < 4; i++) {
|
||||||
menu_proto_items[i] = furi_string_alloc();
|
menu_proto_items[i] = furi_string_alloc();
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
main_menu_proto_items[0] = furi_string_alloc_set("EM4100");
|
|
||||||
main_menu_proto_items[1] = furi_string_alloc_set("HIDProx");
|
|
||||||
main_menu_proto_items[2] = furi_string_alloc_set("PAC/Stanley");
|
|
||||||
main_menu_proto_items[3] = furi_string_alloc_set("H10301");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void flipfrid_scene_entrypoint_on_exit(FlipFridState* context) {
|
void flipfrid_scene_entrypoint_on_exit(FlipFridState* context) {
|
||||||
UNUSED(context);
|
UNUSED(context);
|
||||||
for(uint32_t i = 0; i < 4; i++) {
|
|
||||||
furi_string_free(main_menu_items[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(uint32_t i = 0; i < 4; i++) {
|
|
||||||
furi_string_free(main_menu_proto_items[i]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void flipfrid_scene_entrypoint_on_tick(FlipFridState* context) {
|
void flipfrid_scene_entrypoint_on_tick(FlipFridState* context) {
|
||||||
@@ -145,73 +125,77 @@ void flipfrid_scene_entrypoint_on_draw(Canvas* canvas, FlipFridState* context) {
|
|||||||
canvas_clear(canvas);
|
canvas_clear(canvas);
|
||||||
canvas_set_color(canvas, ColorBlack);
|
canvas_set_color(canvas, ColorBlack);
|
||||||
|
|
||||||
if(main_menu_items[context->menu_index] != NULL) {
|
if(context->main_menu_items != NULL) {
|
||||||
if(context->menu_index > FlipFridAttackDefaultValues) {
|
if(context->main_menu_items[context->menu_index] != NULL) {
|
||||||
canvas_set_font(canvas, FontSecondary);
|
if(context->menu_index > FlipFridAttackDefaultValues) {
|
||||||
|
canvas_set_font(canvas, FontSecondary);
|
||||||
|
canvas_draw_str_aligned(
|
||||||
|
canvas,
|
||||||
|
64,
|
||||||
|
24,
|
||||||
|
AlignCenter,
|
||||||
|
AlignTop,
|
||||||
|
furi_string_get_cstr(context->main_menu_items[context->menu_index - 1]));
|
||||||
|
}
|
||||||
|
|
||||||
|
canvas_set_font(canvas, FontPrimary);
|
||||||
canvas_draw_str_aligned(
|
canvas_draw_str_aligned(
|
||||||
canvas,
|
canvas,
|
||||||
64,
|
64,
|
||||||
24,
|
36,
|
||||||
AlignCenter,
|
AlignCenter,
|
||||||
AlignTop,
|
AlignTop,
|
||||||
furi_string_get_cstr(main_menu_items[context->menu_index - 1]));
|
furi_string_get_cstr(context->main_menu_items[context->menu_index]));
|
||||||
}
|
|
||||||
|
|
||||||
canvas_set_font(canvas, FontPrimary);
|
if(context->menu_index < FlipFridAttackLoadFileCustomUids) {
|
||||||
canvas_draw_str_aligned(
|
canvas_set_font(canvas, FontSecondary);
|
||||||
canvas,
|
canvas_draw_str_aligned(
|
||||||
64,
|
canvas,
|
||||||
36,
|
64,
|
||||||
AlignCenter,
|
48,
|
||||||
AlignTop,
|
AlignCenter,
|
||||||
furi_string_get_cstr(main_menu_items[context->menu_index]));
|
AlignTop,
|
||||||
|
furi_string_get_cstr(context->main_menu_items[context->menu_index + 1]));
|
||||||
|
}
|
||||||
|
|
||||||
if(context->menu_index < FlipFridAttackLoadFileCustomUids) {
|
if(context->menu_proto_index > EM4100) {
|
||||||
canvas_set_font(canvas, FontSecondary);
|
canvas_set_font(canvas, FontSecondary);
|
||||||
|
canvas_draw_str_aligned(
|
||||||
|
canvas,
|
||||||
|
64,
|
||||||
|
-12,
|
||||||
|
AlignCenter,
|
||||||
|
AlignTop,
|
||||||
|
furi_string_get_cstr(
|
||||||
|
context->main_menu_proto_items[context->menu_proto_index - 1]));
|
||||||
|
}
|
||||||
|
|
||||||
|
canvas_set_font(canvas, FontPrimary);
|
||||||
|
canvas_draw_str_aligned(canvas, 27, 4, AlignCenter, AlignTop, "<");
|
||||||
|
|
||||||
|
canvas_set_font(canvas, FontPrimary);
|
||||||
canvas_draw_str_aligned(
|
canvas_draw_str_aligned(
|
||||||
canvas,
|
canvas,
|
||||||
64,
|
64,
|
||||||
48,
|
4,
|
||||||
AlignCenter,
|
AlignCenter,
|
||||||
AlignTop,
|
AlignTop,
|
||||||
furi_string_get_cstr(main_menu_items[context->menu_index + 1]));
|
furi_string_get_cstr(context->main_menu_proto_items[context->menu_proto_index]));
|
||||||
}
|
|
||||||
|
|
||||||
if(context->menu_proto_index > EM4100) {
|
canvas_set_font(canvas, FontPrimary);
|
||||||
canvas_set_font(canvas, FontSecondary);
|
canvas_draw_str_aligned(canvas, 101, 4, AlignCenter, AlignTop, ">");
|
||||||
canvas_draw_str_aligned(
|
|
||||||
canvas,
|
|
||||||
64,
|
|
||||||
-12,
|
|
||||||
AlignCenter,
|
|
||||||
AlignTop,
|
|
||||||
furi_string_get_cstr(main_menu_proto_items[context->menu_proto_index - 1]));
|
|
||||||
}
|
|
||||||
|
|
||||||
canvas_set_font(canvas, FontPrimary);
|
if(context->menu_proto_index < H10301) {
|
||||||
canvas_draw_str_aligned(canvas, 27, 4, AlignCenter, AlignTop, "<");
|
canvas_set_font(canvas, FontSecondary);
|
||||||
|
canvas_draw_str_aligned(
|
||||||
canvas_set_font(canvas, FontPrimary);
|
canvas,
|
||||||
canvas_draw_str_aligned(
|
64,
|
||||||
canvas,
|
-12,
|
||||||
64,
|
AlignCenter,
|
||||||
4,
|
AlignTop,
|
||||||
AlignCenter,
|
furi_string_get_cstr(
|
||||||
AlignTop,
|
context->main_menu_proto_items[context->menu_proto_index + 1]));
|
||||||
furi_string_get_cstr(main_menu_proto_items[context->menu_proto_index]));
|
}
|
||||||
|
|
||||||
canvas_set_font(canvas, FontPrimary);
|
|
||||||
canvas_draw_str_aligned(canvas, 101, 4, AlignCenter, AlignTop, ">");
|
|
||||||
|
|
||||||
if(context->menu_proto_index < H10301) {
|
|
||||||
canvas_set_font(canvas, FontSecondary);
|
|
||||||
canvas_draw_str_aligned(
|
|
||||||
canvas,
|
|
||||||
64,
|
|
||||||
-12,
|
|
||||||
AlignCenter,
|
|
||||||
AlignTop,
|
|
||||||
furi_string_get_cstr(main_menu_proto_items[context->menu_proto_index + 1]));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
16
applications/external/ibtn_fuzzer/ibtnfuzzer.c
vendored
16
applications/external/ibtn_fuzzer/ibtnfuzzer.c
vendored
@@ -58,6 +58,14 @@ iBtnFuzzerState* ibtnfuzzer_alloc() {
|
|||||||
ibtnfuzzer->proto_name = furi_string_alloc();
|
ibtnfuzzer->proto_name = furi_string_alloc();
|
||||||
ibtnfuzzer->data_str = furi_string_alloc();
|
ibtnfuzzer->data_str = furi_string_alloc();
|
||||||
|
|
||||||
|
ibtnfuzzer->main_menu_items[0] = furi_string_alloc_set("Default Values");
|
||||||
|
ibtnfuzzer->main_menu_items[1] = furi_string_alloc_set("Load File");
|
||||||
|
ibtnfuzzer->main_menu_items[2] = furi_string_alloc_set("Load UIDs from file");
|
||||||
|
|
||||||
|
ibtnfuzzer->main_menu_proto_items[0] = furi_string_alloc_set("DS1990");
|
||||||
|
ibtnfuzzer->main_menu_proto_items[1] = furi_string_alloc_set("Metakom");
|
||||||
|
ibtnfuzzer->main_menu_proto_items[2] = furi_string_alloc_set("Cyfral");
|
||||||
|
|
||||||
ibtnfuzzer->previous_scene = NoneScene;
|
ibtnfuzzer->previous_scene = NoneScene;
|
||||||
ibtnfuzzer->current_scene = SceneEntryPoint;
|
ibtnfuzzer->current_scene = SceneEntryPoint;
|
||||||
ibtnfuzzer->is_running = true;
|
ibtnfuzzer->is_running = true;
|
||||||
@@ -104,6 +112,14 @@ void ibtnfuzzer_free(iBtnFuzzerState* ibtnfuzzer) {
|
|||||||
furi_string_free(ibtnfuzzer->proto_name);
|
furi_string_free(ibtnfuzzer->proto_name);
|
||||||
furi_string_free(ibtnfuzzer->data_str);
|
furi_string_free(ibtnfuzzer->data_str);
|
||||||
|
|
||||||
|
for(uint32_t i = 0; i < 3; i++) {
|
||||||
|
furi_string_free(ibtnfuzzer->main_menu_items[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(uint32_t i = 0; i < 3; i++) {
|
||||||
|
furi_string_free(ibtnfuzzer->main_menu_proto_items[i]);
|
||||||
|
}
|
||||||
|
|
||||||
free(ibtnfuzzer->data);
|
free(ibtnfuzzer->data);
|
||||||
free(ibtnfuzzer->payload);
|
free(ibtnfuzzer->payload);
|
||||||
|
|
||||||
|
|||||||
@@ -73,6 +73,8 @@ typedef struct {
|
|||||||
iBtnFuzzerProtos proto;
|
iBtnFuzzerProtos proto;
|
||||||
FuriString* attack_name;
|
FuriString* attack_name;
|
||||||
FuriString* proto_name;
|
FuriString* proto_name;
|
||||||
|
FuriString* main_menu_items[3];
|
||||||
|
FuriString* main_menu_proto_items[3];
|
||||||
|
|
||||||
DialogsApp* dialogs;
|
DialogsApp* dialogs;
|
||||||
FuriString* notification_msg;
|
FuriString* notification_msg;
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
#include "ibtnfuzzer_scene_entrypoint.h"
|
#include "ibtnfuzzer_scene_entrypoint.h"
|
||||||
|
|
||||||
FuriString* main_menu_items[3];
|
|
||||||
FuriString* main_menu_proto_items[3];
|
|
||||||
|
|
||||||
void ibtnfuzzer_scene_entrypoint_menu_callback(
|
void ibtnfuzzer_scene_entrypoint_menu_callback(
|
||||||
iBtnFuzzerState* context,
|
iBtnFuzzerState* context,
|
||||||
uint32_t index,
|
uint32_t index,
|
||||||
@@ -61,30 +58,14 @@ void ibtnfuzzer_scene_entrypoint_on_enter(iBtnFuzzerState* context) {
|
|||||||
menu_items[i] = furi_string_alloc();
|
menu_items[i] = furi_string_alloc();
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
main_menu_items[0] = furi_string_alloc_set("Default Values");
|
|
||||||
main_menu_items[1] = furi_string_alloc_set("Load File");
|
|
||||||
main_menu_items[2] = furi_string_alloc_set("Load UIDs from file");
|
|
||||||
|
|
||||||
context->menu_proto_index = 0;
|
context->menu_proto_index = 0;
|
||||||
/*for(uint32_t i = 0; i < 4; i++) {
|
/*for(uint32_t i = 0; i < 4; i++) {
|
||||||
menu_proto_items[i] = furi_string_alloc();
|
menu_proto_items[i] = furi_string_alloc();
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
main_menu_proto_items[0] = furi_string_alloc_set("DS1990");
|
|
||||||
main_menu_proto_items[1] = furi_string_alloc_set("Metakom");
|
|
||||||
main_menu_proto_items[2] = furi_string_alloc_set("Cyfral");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ibtnfuzzer_scene_entrypoint_on_exit(iBtnFuzzerState* context) {
|
void ibtnfuzzer_scene_entrypoint_on_exit(iBtnFuzzerState* context) {
|
||||||
context->enter_rerun = false;
|
context->enter_rerun = false;
|
||||||
|
|
||||||
for(uint32_t i = 0; i < 3; i++) {
|
|
||||||
furi_string_free(main_menu_items[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(uint32_t i = 0; i < 3; i++) {
|
|
||||||
furi_string_free(main_menu_proto_items[i]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ibtnfuzzer_scene_entrypoint_on_tick(iBtnFuzzerState* context) {
|
void ibtnfuzzer_scene_entrypoint_on_tick(iBtnFuzzerState* context) {
|
||||||
@@ -142,74 +123,79 @@ void ibtnfuzzer_scene_entrypoint_on_draw(Canvas* canvas, iBtnFuzzerState* contex
|
|||||||
canvas_clear(canvas);
|
canvas_clear(canvas);
|
||||||
canvas_set_color(canvas, ColorBlack);
|
canvas_set_color(canvas, ColorBlack);
|
||||||
|
|
||||||
if(main_menu_items[context->menu_index] != NULL) {
|
if(context->main_menu_items != NULL) {
|
||||||
if(context->menu_index > iBtnFuzzerAttackDefaultValues) {
|
if(context->main_menu_items[context->menu_index] != NULL) {
|
||||||
canvas_set_font(canvas, FontSecondary);
|
if(context->menu_index > iBtnFuzzerAttackDefaultValues) {
|
||||||
|
canvas_set_font(canvas, FontSecondary);
|
||||||
|
canvas_draw_str_aligned(
|
||||||
|
canvas,
|
||||||
|
64,
|
||||||
|
24,
|
||||||
|
AlignCenter,
|
||||||
|
AlignTop,
|
||||||
|
furi_string_get_cstr(context->main_menu_items[context->menu_index - 1]));
|
||||||
|
}
|
||||||
|
|
||||||
|
canvas_set_font(canvas, FontPrimary);
|
||||||
canvas_draw_str_aligned(
|
canvas_draw_str_aligned(
|
||||||
canvas,
|
canvas,
|
||||||
64,
|
64,
|
||||||
24,
|
36,
|
||||||
AlignCenter,
|
AlignCenter,
|
||||||
AlignTop,
|
AlignTop,
|
||||||
furi_string_get_cstr(main_menu_items[context->menu_index - 1]));
|
furi_string_get_cstr(context->main_menu_items[context->menu_index]));
|
||||||
}
|
|
||||||
|
|
||||||
canvas_set_font(canvas, FontPrimary);
|
if(context->menu_index < iBtnFuzzerAttackLoadFileCustomUids) {
|
||||||
canvas_draw_str_aligned(
|
canvas_set_font(canvas, FontSecondary);
|
||||||
canvas,
|
canvas_draw_str_aligned(
|
||||||
64,
|
canvas,
|
||||||
36,
|
64,
|
||||||
AlignCenter,
|
48,
|
||||||
AlignTop,
|
AlignCenter,
|
||||||
furi_string_get_cstr(main_menu_items[context->menu_index]));
|
AlignTop,
|
||||||
|
furi_string_get_cstr(context->main_menu_items[context->menu_index + 1]));
|
||||||
|
}
|
||||||
|
|
||||||
if(context->menu_index < iBtnFuzzerAttackLoadFileCustomUids) {
|
if(context->menu_proto_index > DS1990) {
|
||||||
canvas_set_font(canvas, FontSecondary);
|
canvas_set_font(canvas, FontSecondary);
|
||||||
canvas_draw_str_aligned(
|
canvas_draw_str_aligned(
|
||||||
canvas,
|
canvas,
|
||||||
64,
|
64,
|
||||||
48,
|
-12,
|
||||||
AlignCenter,
|
AlignCenter,
|
||||||
AlignTop,
|
AlignTop,
|
||||||
furi_string_get_cstr(main_menu_items[context->menu_index + 1]));
|
furi_string_get_cstr(
|
||||||
}
|
context->main_menu_proto_items[context->menu_proto_index - 1]));
|
||||||
|
}
|
||||||
|
|
||||||
if(context->menu_proto_index > DS1990) {
|
canvas_set_font(canvas, FontPrimary);
|
||||||
canvas_set_font(canvas, FontSecondary);
|
canvas_draw_str_aligned(canvas, 27, 4, AlignCenter, AlignTop, "<");
|
||||||
canvas_draw_str_aligned(
|
|
||||||
canvas,
|
|
||||||
64,
|
|
||||||
-12,
|
|
||||||
AlignCenter,
|
|
||||||
AlignTop,
|
|
||||||
furi_string_get_cstr(main_menu_proto_items[context->menu_proto_index - 1]));
|
|
||||||
}
|
|
||||||
|
|
||||||
canvas_set_font(canvas, FontPrimary);
|
canvas_set_font(canvas, FontPrimary);
|
||||||
canvas_draw_str_aligned(canvas, 27, 4, AlignCenter, AlignTop, "<");
|
if(context->main_menu_proto_items[context->menu_proto_index] != NULL) {
|
||||||
|
canvas_draw_str_aligned(
|
||||||
|
canvas,
|
||||||
|
64,
|
||||||
|
4,
|
||||||
|
AlignCenter,
|
||||||
|
AlignTop,
|
||||||
|
furi_string_get_cstr(
|
||||||
|
context->main_menu_proto_items[context->menu_proto_index]));
|
||||||
|
}
|
||||||
|
canvas_set_font(canvas, FontPrimary);
|
||||||
|
canvas_draw_str_aligned(canvas, 101, 4, AlignCenter, AlignTop, ">");
|
||||||
|
|
||||||
canvas_set_font(canvas, FontPrimary);
|
if(context->menu_proto_index < Cyfral) {
|
||||||
if(main_menu_proto_items[context->menu_proto_index] != NULL) {
|
canvas_set_font(canvas, FontSecondary);
|
||||||
canvas_draw_str_aligned(
|
canvas_draw_str_aligned(
|
||||||
canvas,
|
canvas,
|
||||||
64,
|
64,
|
||||||
4,
|
-12,
|
||||||
AlignCenter,
|
AlignCenter,
|
||||||
AlignTop,
|
AlignTop,
|
||||||
furi_string_get_cstr(main_menu_proto_items[context->menu_proto_index]));
|
furi_string_get_cstr(
|
||||||
}
|
context->main_menu_proto_items[context->menu_proto_index + 1]));
|
||||||
canvas_set_font(canvas, FontPrimary);
|
}
|
||||||
canvas_draw_str_aligned(canvas, 101, 4, AlignCenter, AlignTop, ">");
|
|
||||||
|
|
||||||
if(context->menu_proto_index < Cyfral) {
|
|
||||||
canvas_set_font(canvas, FontSecondary);
|
|
||||||
canvas_draw_str_aligned(
|
|
||||||
canvas,
|
|
||||||
64,
|
|
||||||
-12,
|
|
||||||
AlignCenter,
|
|
||||||
AlignTop,
|
|
||||||
furi_string_get_cstr(main_menu_proto_items[context->menu_proto_index + 1]));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user