mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-13 08:28:36 -07:00
fix 5 plugins ui update
This commit is contained in:
256
applications/external/flipper_i2ctools/i2ctools.c
vendored
256
applications/external/flipper_i2ctools/i2ctools.c
vendored
@@ -73,143 +73,145 @@ int32_t i2ctools_app(void* p) {
|
|||||||
// Share scanner with sender
|
// Share scanner with sender
|
||||||
i2ctools->sender->scanner = i2ctools->scanner;
|
i2ctools->sender->scanner = i2ctools->scanner;
|
||||||
|
|
||||||
while(furi_message_queue_get(event_queue, &event, FuriWaitForever) == FuriStatusOk) {
|
while(1) {
|
||||||
// Back
|
if(furi_message_queue_get(event_queue, &event, 100) == FuriStatusOk) {
|
||||||
if(event.key == InputKeyBack && event.type == InputTypeRelease) {
|
// Back
|
||||||
if(i2ctools->main_view->current_view == MAIN_VIEW) {
|
if(event.key == InputKeyBack && event.type == InputTypeRelease) {
|
||||||
break;
|
if(i2ctools->main_view->current_view == MAIN_VIEW) {
|
||||||
} else {
|
break;
|
||||||
if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
|
||||||
stop_interrupts();
|
|
||||||
i2ctools->sniffer->started = false;
|
|
||||||
i2ctools->sniffer->state = I2C_BUS_FREE;
|
|
||||||
}
|
|
||||||
i2ctools->main_view->current_view = MAIN_VIEW;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Up
|
|
||||||
else if(event.key == InputKeyUp && event.type == InputTypeRelease) {
|
|
||||||
if(i2ctools->main_view->current_view == MAIN_VIEW) {
|
|
||||||
if((i2ctools->main_view->menu_index > SCAN_VIEW)) {
|
|
||||||
i2ctools->main_view->menu_index--;
|
|
||||||
}
|
|
||||||
} else if(i2ctools->main_view->current_view == SCAN_VIEW) {
|
|
||||||
if(i2ctools->scanner->menu_index > 0) {
|
|
||||||
i2ctools->scanner->menu_index--;
|
|
||||||
}
|
|
||||||
} else if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
|
||||||
if(i2ctools->sniffer->row_index > 0) {
|
|
||||||
i2ctools->sniffer->row_index--;
|
|
||||||
}
|
|
||||||
} else if(i2ctools->main_view->current_view == SEND_VIEW) {
|
|
||||||
if(i2ctools->sender->value < 0xFF) {
|
|
||||||
i2ctools->sender->value++;
|
|
||||||
i2ctools->sender->sended = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Long Up
|
|
||||||
else if(
|
|
||||||
event.key == InputKeyUp &&
|
|
||||||
(event.type == InputTypeLong || event.type == InputTypeRepeat)) {
|
|
||||||
if(i2ctools->main_view->current_view == SCAN_VIEW) {
|
|
||||||
if(i2ctools->scanner->menu_index > 5) {
|
|
||||||
i2ctools->scanner->menu_index -= 5;
|
|
||||||
}
|
|
||||||
} else if(i2ctools->main_view->current_view == SEND_VIEW) {
|
|
||||||
if(i2ctools->sender->value < 0xF9) {
|
|
||||||
i2ctools->sender->value += 5;
|
|
||||||
i2ctools->sender->sended = false;
|
|
||||||
}
|
|
||||||
} else if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
|
||||||
if(i2ctools->sniffer->row_index > 5) {
|
|
||||||
i2ctools->sniffer->row_index -= 5;
|
|
||||||
} else {
|
} else {
|
||||||
i2ctools->sniffer->row_index = 0;
|
if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
||||||
|
stop_interrupts();
|
||||||
|
i2ctools->sniffer->started = false;
|
||||||
|
i2ctools->sniffer->state = I2C_BUS_FREE;
|
||||||
|
}
|
||||||
|
i2ctools->main_view->current_view = MAIN_VIEW;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
// Up
|
||||||
// Down
|
else if(event.key == InputKeyUp && event.type == InputTypeRelease) {
|
||||||
else if(event.key == InputKeyDown && event.type == InputTypeRelease) {
|
if(i2ctools->main_view->current_view == MAIN_VIEW) {
|
||||||
if(i2ctools->main_view->current_view == MAIN_VIEW) {
|
if((i2ctools->main_view->menu_index > SCAN_VIEW)) {
|
||||||
if(i2ctools->main_view->menu_index < MENU_SIZE - 1) {
|
i2ctools->main_view->menu_index--;
|
||||||
i2ctools->main_view->menu_index++;
|
}
|
||||||
}
|
} else if(i2ctools->main_view->current_view == SCAN_VIEW) {
|
||||||
} else if(i2ctools->main_view->current_view == SCAN_VIEW) {
|
if(i2ctools->scanner->menu_index > 0) {
|
||||||
if(i2ctools->scanner->menu_index < ((int)i2ctools->scanner->nb_found / 3)) {
|
i2ctools->scanner->menu_index--;
|
||||||
i2ctools->scanner->menu_index++;
|
}
|
||||||
}
|
} else if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
||||||
} else if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
if(i2ctools->sniffer->row_index > 0) {
|
||||||
if((i2ctools->sniffer->row_index + 3) <
|
i2ctools->sniffer->row_index--;
|
||||||
(int)i2ctools->sniffer->frames[i2ctools->sniffer->menu_index].data_index) {
|
}
|
||||||
i2ctools->sniffer->row_index++;
|
} else if(i2ctools->main_view->current_view == SEND_VIEW) {
|
||||||
}
|
if(i2ctools->sender->value < 0xFF) {
|
||||||
} else if(i2ctools->main_view->current_view == SEND_VIEW) {
|
i2ctools->sender->value++;
|
||||||
if(i2ctools->sender->value > 0x00) {
|
i2ctools->sender->sended = false;
|
||||||
i2ctools->sender->value--;
|
}
|
||||||
i2ctools->sender->sended = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
// Long Up
|
||||||
// Long Down
|
else if(
|
||||||
else if(
|
event.key == InputKeyUp &&
|
||||||
event.key == InputKeyDown &&
|
(event.type == InputTypeLong || event.type == InputTypeRepeat)) {
|
||||||
(event.type == InputTypeLong || event.type == InputTypeRepeat)) {
|
if(i2ctools->main_view->current_view == SCAN_VIEW) {
|
||||||
if(i2ctools->main_view->current_view == SEND_VIEW) {
|
if(i2ctools->scanner->menu_index > 5) {
|
||||||
if(i2ctools->sender->value > 0x05) {
|
i2ctools->scanner->menu_index -= 5;
|
||||||
i2ctools->sender->value -= 5;
|
}
|
||||||
i2ctools->sender->sended = false;
|
} else if(i2ctools->main_view->current_view == SEND_VIEW) {
|
||||||
} else {
|
if(i2ctools->sender->value < 0xF9) {
|
||||||
i2ctools->sender->value = 0;
|
i2ctools->sender->value += 5;
|
||||||
i2ctools->sender->sended = false;
|
i2ctools->sender->sended = false;
|
||||||
}
|
}
|
||||||
} else if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
} else if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
||||||
if((i2ctools->sniffer->row_index + 8) <
|
if(i2ctools->sniffer->row_index > 5) {
|
||||||
(int)i2ctools->sniffer->frames[i2ctools->sniffer->menu_index].data_index) {
|
i2ctools->sniffer->row_index -= 5;
|
||||||
i2ctools->sniffer->row_index += 5;
|
} else {
|
||||||
|
i2ctools->sniffer->row_index = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Down
|
||||||
|
else if(event.key == InputKeyDown && event.type == InputTypeRelease) {
|
||||||
|
if(i2ctools->main_view->current_view == MAIN_VIEW) {
|
||||||
|
if(i2ctools->main_view->menu_index < MENU_SIZE - 1) {
|
||||||
|
i2ctools->main_view->menu_index++;
|
||||||
|
}
|
||||||
|
} else if(i2ctools->main_view->current_view == SCAN_VIEW) {
|
||||||
|
if(i2ctools->scanner->menu_index < ((int)i2ctools->scanner->nb_found / 3)) {
|
||||||
|
i2ctools->scanner->menu_index++;
|
||||||
|
}
|
||||||
|
} else if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
||||||
|
if((i2ctools->sniffer->row_index + 3) <
|
||||||
|
(int)i2ctools->sniffer->frames[i2ctools->sniffer->menu_index].data_index) {
|
||||||
|
i2ctools->sniffer->row_index++;
|
||||||
|
}
|
||||||
|
} else if(i2ctools->main_view->current_view == SEND_VIEW) {
|
||||||
|
if(i2ctools->sender->value > 0x00) {
|
||||||
|
i2ctools->sender->value--;
|
||||||
|
i2ctools->sender->sended = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Long Down
|
||||||
|
else if(
|
||||||
|
event.key == InputKeyDown &&
|
||||||
|
(event.type == InputTypeLong || event.type == InputTypeRepeat)) {
|
||||||
|
if(i2ctools->main_view->current_view == SEND_VIEW) {
|
||||||
|
if(i2ctools->sender->value > 0x05) {
|
||||||
|
i2ctools->sender->value -= 5;
|
||||||
|
i2ctools->sender->sended = false;
|
||||||
|
} else {
|
||||||
|
i2ctools->sender->value = 0;
|
||||||
|
i2ctools->sender->sended = false;
|
||||||
|
}
|
||||||
|
} else if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
||||||
|
if((i2ctools->sniffer->row_index + 8) <
|
||||||
|
(int)i2ctools->sniffer->frames[i2ctools->sniffer->menu_index].data_index) {
|
||||||
|
i2ctools->sniffer->row_index += 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} else if(event.key == InputKeyOk && event.type == InputTypeRelease) {
|
} else if(event.key == InputKeyOk && event.type == InputTypeRelease) {
|
||||||
if(i2ctools->main_view->current_view == MAIN_VIEW) {
|
if(i2ctools->main_view->current_view == MAIN_VIEW) {
|
||||||
i2ctools->main_view->current_view = i2ctools->main_view->menu_index;
|
i2ctools->main_view->current_view = i2ctools->main_view->menu_index;
|
||||||
} else if(i2ctools->main_view->current_view == SCAN_VIEW) {
|
} else if(i2ctools->main_view->current_view == SCAN_VIEW) {
|
||||||
scan_i2c_bus(i2ctools->scanner);
|
scan_i2c_bus(i2ctools->scanner);
|
||||||
} else if(i2ctools->main_view->current_view == SEND_VIEW) {
|
} else if(i2ctools->main_view->current_view == SEND_VIEW) {
|
||||||
i2ctools->sender->must_send = true;
|
i2ctools->sender->must_send = true;
|
||||||
} else if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
} else if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
||||||
if(i2ctools->sniffer->started) {
|
if(i2ctools->sniffer->started) {
|
||||||
stop_interrupts();
|
stop_interrupts();
|
||||||
i2ctools->sniffer->started = false;
|
i2ctools->sniffer->started = false;
|
||||||
i2ctools->sniffer->state = I2C_BUS_FREE;
|
i2ctools->sniffer->state = I2C_BUS_FREE;
|
||||||
} else {
|
} else {
|
||||||
start_interrupts(i2ctools->sniffer);
|
start_interrupts(i2ctools->sniffer);
|
||||||
i2ctools->sniffer->started = true;
|
i2ctools->sniffer->started = true;
|
||||||
i2ctools->sniffer->state = I2C_BUS_FREE;
|
i2ctools->sniffer->state = I2C_BUS_FREE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
} else if(event.key == InputKeyRight && event.type == InputTypeRelease) {
|
||||||
} else if(event.key == InputKeyRight && event.type == InputTypeRelease) {
|
if(i2ctools->main_view->current_view == SEND_VIEW) {
|
||||||
if(i2ctools->main_view->current_view == SEND_VIEW) {
|
if(i2ctools->sender->address_idx < (i2ctools->scanner->nb_found - 1)) {
|
||||||
if(i2ctools->sender->address_idx < (i2ctools->scanner->nb_found - 1)) {
|
i2ctools->sender->address_idx++;
|
||||||
i2ctools->sender->address_idx++;
|
i2ctools->sender->sended = false;
|
||||||
i2ctools->sender->sended = false;
|
}
|
||||||
|
} else if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
||||||
|
if(i2ctools->sniffer->menu_index < i2ctools->sniffer->frame_index) {
|
||||||
|
i2ctools->sniffer->menu_index++;
|
||||||
|
i2ctools->sniffer->row_index = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
} else if(event.key == InputKeyLeft && event.type == InputTypeRelease) {
|
||||||
if(i2ctools->sniffer->menu_index < i2ctools->sniffer->frame_index) {
|
if(i2ctools->main_view->current_view == SEND_VIEW) {
|
||||||
i2ctools->sniffer->menu_index++;
|
if(i2ctools->sender->address_idx > 0) {
|
||||||
i2ctools->sniffer->row_index = 0;
|
i2ctools->sender->address_idx--;
|
||||||
}
|
i2ctools->sender->sended = false;
|
||||||
}
|
}
|
||||||
} else if(event.key == InputKeyLeft && event.type == InputTypeRelease) {
|
} else if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
||||||
if(i2ctools->main_view->current_view == SEND_VIEW) {
|
if(i2ctools->sniffer->menu_index > 0) {
|
||||||
if(i2ctools->sender->address_idx > 0) {
|
i2ctools->sniffer->menu_index--;
|
||||||
i2ctools->sender->address_idx--;
|
i2ctools->sniffer->row_index = 0;
|
||||||
i2ctools->sender->sended = false;
|
}
|
||||||
}
|
|
||||||
} else if(i2ctools->main_view->current_view == SNIFF_VIEW) {
|
|
||||||
if(i2ctools->sniffer->menu_index > 0) {
|
|
||||||
i2ctools->sniffer->menu_index--;
|
|
||||||
i2ctools->sniffer->row_index = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
97
applications/external/hex_viewer/hex_viewer.c
vendored
97
applications/external/hex_viewer/hex_viewer.c
vendored
@@ -229,53 +229,58 @@ int32_t hex_viewer_app(void* p) {
|
|||||||
hex_viewer_read_file(hex_viewer);
|
hex_viewer_read_file(hex_viewer);
|
||||||
|
|
||||||
InputEvent input;
|
InputEvent input;
|
||||||
while(furi_message_queue_get(hex_viewer->input_queue, &input, FuriWaitForever) ==
|
while(1) {
|
||||||
FuriStatusOk) {
|
if(furi_message_queue_get(hex_viewer->input_queue, &input, 100) == FuriStatusOk) {
|
||||||
if(input.key == InputKeyBack) {
|
if(input.key == InputKeyBack) {
|
||||||
break;
|
break;
|
||||||
} else if(input.key == InputKeyUp) {
|
} else if(input.key == InputKeyUp) {
|
||||||
furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
furi_check(
|
||||||
if(hex_viewer->model->file_offset > 0) {
|
furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
||||||
hex_viewer->model->file_offset -= HEX_VIEWER_BYTES_PER_LINE;
|
if(hex_viewer->model->file_offset > 0) {
|
||||||
if(!hex_viewer_read_file(hex_viewer)) break;
|
hex_viewer->model->file_offset -= HEX_VIEWER_BYTES_PER_LINE;
|
||||||
|
if(!hex_viewer_read_file(hex_viewer)) break;
|
||||||
|
}
|
||||||
|
furi_mutex_release(hex_viewer->mutex);
|
||||||
|
} else if(input.key == InputKeyDown) {
|
||||||
|
furi_check(
|
||||||
|
furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
||||||
|
uint32_t last_byte_on_screen =
|
||||||
|
hex_viewer->model->file_offset + hex_viewer->model->file_read_bytes;
|
||||||
|
|
||||||
|
if(hex_viewer->model->file_size > last_byte_on_screen) {
|
||||||
|
hex_viewer->model->file_offset += HEX_VIEWER_BYTES_PER_LINE;
|
||||||
|
if(!hex_viewer_read_file(hex_viewer)) break;
|
||||||
|
}
|
||||||
|
furi_mutex_release(hex_viewer->mutex);
|
||||||
|
} else if(input.key == InputKeyLeft) {
|
||||||
|
furi_check(
|
||||||
|
furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
||||||
|
hex_viewer->model->mode = !hex_viewer->model->mode;
|
||||||
|
furi_mutex_release(hex_viewer->mutex);
|
||||||
|
} else if(input.key == InputKeyRight) {
|
||||||
|
FuriString* buffer;
|
||||||
|
buffer = furi_string_alloc();
|
||||||
|
furi_string_printf(
|
||||||
|
buffer,
|
||||||
|
"File path: %s\nFile size: %lu (0x%lX)",
|
||||||
|
furi_string_get_cstr(file_path),
|
||||||
|
hex_viewer->model->file_size,
|
||||||
|
hex_viewer->model->file_size);
|
||||||
|
|
||||||
|
DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS);
|
||||||
|
DialogMessage* message = dialog_message_alloc();
|
||||||
|
dialog_message_set_header(
|
||||||
|
message, "Hex Viewer v1.1", 16, 2, AlignLeft, AlignTop);
|
||||||
|
dialog_message_set_icon(message, &I_hex_10px, 3, 2);
|
||||||
|
dialog_message_set_text(
|
||||||
|
message, furi_string_get_cstr(buffer), 3, 16, AlignLeft, AlignTop);
|
||||||
|
dialog_message_set_buttons(message, NULL, NULL, "Back");
|
||||||
|
dialog_message_show(dialogs, message);
|
||||||
|
|
||||||
|
furi_string_free(buffer);
|
||||||
|
dialog_message_free(message);
|
||||||
|
furi_record_close(RECORD_DIALOGS);
|
||||||
}
|
}
|
||||||
furi_mutex_release(hex_viewer->mutex);
|
|
||||||
} else if(input.key == InputKeyDown) {
|
|
||||||
furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
|
||||||
uint32_t last_byte_on_screen =
|
|
||||||
hex_viewer->model->file_offset + hex_viewer->model->file_read_bytes;
|
|
||||||
|
|
||||||
if(hex_viewer->model->file_size > last_byte_on_screen) {
|
|
||||||
hex_viewer->model->file_offset += HEX_VIEWER_BYTES_PER_LINE;
|
|
||||||
if(!hex_viewer_read_file(hex_viewer)) break;
|
|
||||||
}
|
|
||||||
furi_mutex_release(hex_viewer->mutex);
|
|
||||||
} else if(input.key == InputKeyLeft) {
|
|
||||||
furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
|
||||||
hex_viewer->model->mode = !hex_viewer->model->mode;
|
|
||||||
furi_mutex_release(hex_viewer->mutex);
|
|
||||||
} else if(input.key == InputKeyRight) {
|
|
||||||
FuriString* buffer;
|
|
||||||
buffer = furi_string_alloc();
|
|
||||||
furi_string_printf(
|
|
||||||
buffer,
|
|
||||||
"File path: %s\nFile size: %lu (0x%lX)",
|
|
||||||
furi_string_get_cstr(file_path),
|
|
||||||
hex_viewer->model->file_size,
|
|
||||||
hex_viewer->model->file_size);
|
|
||||||
|
|
||||||
DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS);
|
|
||||||
DialogMessage* message = dialog_message_alloc();
|
|
||||||
dialog_message_set_header(message, "Hex Viewer v1.1", 16, 2, AlignLeft, AlignTop);
|
|
||||||
dialog_message_set_icon(message, &I_hex_10px, 3, 2);
|
|
||||||
dialog_message_set_text(
|
|
||||||
message, furi_string_get_cstr(buffer), 3, 16, AlignLeft, AlignTop);
|
|
||||||
dialog_message_set_buttons(message, NULL, NULL, "Back");
|
|
||||||
dialog_message_show(dialogs, message);
|
|
||||||
|
|
||||||
furi_string_free(buffer);
|
|
||||||
dialog_message_free(message);
|
|
||||||
furi_record_close(RECORD_DIALOGS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
view_port_update(hex_viewer->view_port);
|
view_port_update(hex_viewer->view_port);
|
||||||
|
|||||||
43
applications/external/ir_scope/ir_scope.c
vendored
43
applications/external/ir_scope/ir_scope.c
vendored
@@ -140,30 +140,31 @@ int32_t ir_scope_app(void* p) {
|
|||||||
|
|
||||||
InputEvent event;
|
InputEvent event;
|
||||||
bool processing = true;
|
bool processing = true;
|
||||||
while(processing &&
|
while(processing) {
|
||||||
furi_message_queue_get(event_queue, &event, FuriWaitForever) == FuriStatusOk) {
|
if(furi_message_queue_get(event_queue, &event, 100) == FuriStatusOk) {
|
||||||
if(event.type == InputTypeRelease) {
|
if(event.type == InputTypeRelease) {
|
||||||
furi_mutex_acquire(state.mutex, FuriWaitForever);
|
furi_mutex_acquire(state.mutex, FuriWaitForever);
|
||||||
|
|
||||||
if(event.key == InputKeyBack) {
|
if(event.key == InputKeyBack) {
|
||||||
processing = false;
|
processing = false;
|
||||||
} else if(event.key == InputKeyUp) {
|
} else if(event.key == InputKeyUp) {
|
||||||
state.us_per_sample = MIN(1000, state.us_per_sample + 25);
|
state.us_per_sample = MIN(1000, state.us_per_sample + 25);
|
||||||
state.autoscale = false;
|
state.autoscale = false;
|
||||||
} else if(event.key == InputKeyDown) {
|
} else if(event.key == InputKeyDown) {
|
||||||
state.us_per_sample = MAX(25, state.us_per_sample - 25);
|
state.us_per_sample = MAX(25, state.us_per_sample - 25);
|
||||||
state.autoscale = false;
|
state.autoscale = false;
|
||||||
} else if(event.key == InputKeyOk) {
|
} else if(event.key == InputKeyOk) {
|
||||||
state.autoscale = !state.autoscale;
|
state.autoscale = !state.autoscale;
|
||||||
if(state.autoscale)
|
if(state.autoscale)
|
||||||
state_set_autoscale(&state);
|
state_set_autoscale(&state);
|
||||||
else
|
else
|
||||||
state.us_per_sample = 200;
|
state.us_per_sample = 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
furi_mutex_release(state.mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
view_port_update(view_port);
|
|
||||||
furi_mutex_release(state.mutex);
|
|
||||||
}
|
}
|
||||||
|
view_port_update(view_port);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clean up.
|
// Clean up.
|
||||||
|
|||||||
100
applications/external/text_viewer/text_viewer.c
vendored
100
applications/external/text_viewer/text_viewer.c
vendored
@@ -223,56 +223,58 @@ int32_t text_viewer_app(void* p) {
|
|||||||
text_viewer_read_file(text_viewer);
|
text_viewer_read_file(text_viewer);
|
||||||
|
|
||||||
InputEvent input;
|
InputEvent input;
|
||||||
while(furi_message_queue_get(text_viewer->input_queue, &input, FuriWaitForever) ==
|
while(1) {
|
||||||
FuriStatusOk) {
|
if(furi_message_queue_get(text_viewer->input_queue, &input, 100) == FuriStatusOk) {
|
||||||
if(input.key == InputKeyBack) {
|
if(input.key == InputKeyBack) {
|
||||||
break;
|
break;
|
||||||
} else if(input.key == InputKeyUp) {
|
} else if(input.key == InputKeyUp) {
|
||||||
furi_check(
|
furi_check(
|
||||||
furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
||||||
if(text_viewer->model->file_offset > 0) {
|
if(text_viewer->model->file_offset > 0) {
|
||||||
text_viewer->model->file_offset -= TEXT_VIEWER_BYTES_PER_LINE;
|
text_viewer->model->file_offset -= TEXT_VIEWER_BYTES_PER_LINE;
|
||||||
if(!text_viewer_read_file(text_viewer)) break;
|
if(!text_viewer_read_file(text_viewer)) break;
|
||||||
|
}
|
||||||
|
furi_mutex_release(text_viewer->mutex);
|
||||||
|
} else if(input.key == InputKeyDown) {
|
||||||
|
furi_check(
|
||||||
|
furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
||||||
|
uint32_t last_byte_on_screen =
|
||||||
|
text_viewer->model->file_offset + text_viewer->model->file_read_bytes;
|
||||||
|
|
||||||
|
if(text_viewer->model->file_size > last_byte_on_screen) {
|
||||||
|
text_viewer->model->file_offset += TEXT_VIEWER_BYTES_PER_LINE;
|
||||||
|
if(!text_viewer_read_file(text_viewer)) break;
|
||||||
|
}
|
||||||
|
furi_mutex_release(text_viewer->mutex);
|
||||||
|
} else if(input.key == InputKeyLeft) {
|
||||||
|
furi_check(
|
||||||
|
furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
||||||
|
text_viewer->model->mode = !text_viewer->model->mode;
|
||||||
|
furi_mutex_release(text_viewer->mutex);
|
||||||
|
} else if(input.key == InputKeyRight) {
|
||||||
|
FuriString* buffer;
|
||||||
|
buffer = furi_string_alloc();
|
||||||
|
furi_string_printf(
|
||||||
|
buffer,
|
||||||
|
"File path: %s\nFile size: %lu (0x%lX)",
|
||||||
|
furi_string_get_cstr(file_path),
|
||||||
|
text_viewer->model->file_size,
|
||||||
|
text_viewer->model->file_size);
|
||||||
|
|
||||||
|
DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS);
|
||||||
|
DialogMessage* message = dialog_message_alloc();
|
||||||
|
dialog_message_set_header(
|
||||||
|
message, "Text Viewer v1.1", 16, 2, AlignLeft, AlignTop);
|
||||||
|
dialog_message_set_icon(message, &I_text_10px, 3, 2);
|
||||||
|
dialog_message_set_text(
|
||||||
|
message, furi_string_get_cstr(buffer), 3, 16, AlignLeft, AlignTop);
|
||||||
|
dialog_message_set_buttons(message, NULL, NULL, "Back");
|
||||||
|
dialog_message_show(dialogs, message);
|
||||||
|
|
||||||
|
furi_string_free(buffer);
|
||||||
|
dialog_message_free(message);
|
||||||
|
furi_record_close(RECORD_DIALOGS);
|
||||||
}
|
}
|
||||||
furi_mutex_release(text_viewer->mutex);
|
|
||||||
} else if(input.key == InputKeyDown) {
|
|
||||||
furi_check(
|
|
||||||
furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
|
||||||
uint32_t last_byte_on_screen =
|
|
||||||
text_viewer->model->file_offset + text_viewer->model->file_read_bytes;
|
|
||||||
|
|
||||||
if(text_viewer->model->file_size > last_byte_on_screen) {
|
|
||||||
text_viewer->model->file_offset += TEXT_VIEWER_BYTES_PER_LINE;
|
|
||||||
if(!text_viewer_read_file(text_viewer)) break;
|
|
||||||
}
|
|
||||||
furi_mutex_release(text_viewer->mutex);
|
|
||||||
} else if(input.key == InputKeyLeft) {
|
|
||||||
furi_check(
|
|
||||||
furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
|
||||||
text_viewer->model->mode = !text_viewer->model->mode;
|
|
||||||
furi_mutex_release(text_viewer->mutex);
|
|
||||||
} else if(input.key == InputKeyRight) {
|
|
||||||
FuriString* buffer;
|
|
||||||
buffer = furi_string_alloc();
|
|
||||||
furi_string_printf(
|
|
||||||
buffer,
|
|
||||||
"File path: %s\nFile size: %lu (0x%lX)",
|
|
||||||
furi_string_get_cstr(file_path),
|
|
||||||
text_viewer->model->file_size,
|
|
||||||
text_viewer->model->file_size);
|
|
||||||
|
|
||||||
DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS);
|
|
||||||
DialogMessage* message = dialog_message_alloc();
|
|
||||||
dialog_message_set_header(message, "Text Viewer v1.1", 16, 2, AlignLeft, AlignTop);
|
|
||||||
dialog_message_set_icon(message, &I_text_10px, 3, 2);
|
|
||||||
dialog_message_set_text(
|
|
||||||
message, furi_string_get_cstr(buffer), 3, 16, AlignLeft, AlignTop);
|
|
||||||
dialog_message_set_buttons(message, NULL, NULL, "Back");
|
|
||||||
dialog_message_show(dialogs, message);
|
|
||||||
|
|
||||||
furi_string_free(buffer);
|
|
||||||
dialog_message_free(message);
|
|
||||||
furi_record_close(RECORD_DIALOGS);
|
|
||||||
}
|
}
|
||||||
view_port_update(text_viewer->view_port);
|
view_port_update(text_viewer->view_port);
|
||||||
}
|
}
|
||||||
|
|||||||
2
applications/external/totp/totp_app.c
vendored
2
applications/external/totp/totp_app.c
vendored
@@ -207,7 +207,7 @@ int32_t totp_app() {
|
|||||||
PluginEvent event;
|
PluginEvent event;
|
||||||
bool processing = true;
|
bool processing = true;
|
||||||
while(processing) {
|
while(processing) {
|
||||||
FuriStatus event_status = furi_message_queue_get(event_queue, &event, FuriWaitForever);
|
FuriStatus event_status = furi_message_queue_get(event_queue, &event, 100);
|
||||||
|
|
||||||
if(furi_mutex_acquire(plugin_state->mutex, FuriWaitForever) == FuriStatusOk) {
|
if(furi_mutex_acquire(plugin_state->mutex, FuriWaitForever) == FuriStatusOk) {
|
||||||
if(event_status == FuriStatusOk) {
|
if(event_status == FuriStatusOk) {
|
||||||
|
|||||||
Reference in New Issue
Block a user