fix 5 plugins ui update

This commit is contained in:
MX
2023-07-25 00:11:56 +03:00
parent c447dc45f1
commit f1a353d942
5 changed files with 254 additions and 244 deletions

View File

@@ -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;
} }
} }
} }

View File

@@ -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);

View File

@@ -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.

View File

@@ -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);
} }

View File

@@ -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) {