Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Configuration
.clangd
.clang-format
.editorconfig

Expand Down
4 changes: 4 additions & 0 deletions flip_tdi/.catalog/changelog.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
## 1.1
- Fixed crash when connecting to a USB charger instead of a PC
- Fixed crash when connecting to a PC with a companion app running

## 1.0
- Initial release
2 changes: 1 addition & 1 deletion flip_tdi/application.fam
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ App(
],
stack_size=2 * 1024,
fap_description="Flipper FTDI232H emulator.",
fap_version="1.0",
fap_version="1.1",
fap_icon="flip_tdi_icon_10px.png",
fap_category="USB",
fap_icon_assets="images",
Expand Down
11 changes: 6 additions & 5 deletions flip_tdi/flip_tdi_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,10 @@ FlipTDIApp* flip_tdi_app_alloc() {
flip_tdi_view_main_get_view(app->flip_tdi_view_main_instance));

// FTDI emulation Start
flip_tdi_start(app);
app->ftdi_usb = ftdi_usb_start();

scene_manager_next_scene(app->scene_manager, FlipTDISceneMain);
scene_manager_next_scene(
app->scene_manager, app->ftdi_usb ? FlipTDISceneMain : FlipTDISceneCloseRpc);

return app;
}
Expand All @@ -71,13 +72,13 @@ void flip_tdi_app_free(FlipTDIApp* app) {
furi_assert(app);

// FTDI emulation Stop
flip_tdi_stop(app);
if(app->ftdi_usb) ftdi_usb_stop(app->ftdi_usb);

// Submenu
view_dispatcher_remove_view(app->view_dispatcher, FlipTDIViewSubmenu);
submenu_free(app->submenu);

// Widget
// Widget
view_dispatcher_remove_view(app->view_dispatcher, FlipTDIViewWidget);
widget_free(app->widget);

Expand Down Expand Up @@ -108,4 +109,4 @@ int32_t flip_tdi_app(void* p) {
flip_tdi_app_free(flip_tdi_app);

return 0;
}
}
17 changes: 0 additions & 17 deletions flip_tdi/flip_tdi_app_i.c

This file was deleted.

9 changes: 2 additions & 7 deletions flip_tdi/helpers/ftdi_usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -180,12 +180,6 @@ static void ftdi_usb_deinit(usbd_device* dev) {
ftdi_usb->thread = NULL;

ftdi_free(ftdi_usb->ftdi);

free(ftdi_usb->usb.str_prod_descr);
ftdi_usb->usb.str_prod_descr = NULL;
free(ftdi_usb->usb.str_serial_descr);
ftdi_usb->usb.str_serial_descr = NULL;
free(ftdi_usb);
}

static void ftdi_usb_send(usbd_device* dev, uint8_t* buf, uint16_t len) {
Expand Down Expand Up @@ -495,7 +489,7 @@ FtdiUsb* ftdi_usb_start(void) {
ftdi_usb->usb.cfg_descr = (void*)&usb_ftdi_cfg_descr;

if(!furi_hal_usb_set_config(&ftdi_usb->usb, ftdi_usb)) {
FURI_LOG_E(TAG, "USB locked, cannot start Mass Storage");
FURI_LOG_E(TAG, "USB locked, cannot start FlipTDI");
free(ftdi_usb->usb.str_prod_descr);
free(ftdi_usb->usb.str_serial_descr);
free(ftdi_usb);
Expand All @@ -506,4 +500,5 @@ FtdiUsb* ftdi_usb_start(void) {

void ftdi_usb_stop(FtdiUsb* ftdi_usb) {
furi_hal_usb_set_config(ftdi_usb->usb_prev, NULL);
free(ftdi_usb);
}
Binary file added flip_tdi/images/ActiveConnection_50x64.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
35 changes: 35 additions & 0 deletions flip_tdi/scenes/flip_tdi_scene_close_rpc.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#include "../flip_tdi_app_i.h"

void flip_tdi_scene_close_rpc_on_enter(void* context) {
FlipTDIApp* app = context;

widget_add_icon_element(app->widget, 78, 0, &I_ActiveConnection_50x64);
widget_add_string_multiline_element(
app->widget, 3, 2, AlignLeft, AlignTop, FontPrimary, "Connection\nIs Active!");
widget_add_string_multiline_element(
app->widget,
3,
30,
AlignLeft,
AlignTop,
FontSecondary,
"Disconnect from\nPC or phone to\nuse this function.");

view_dispatcher_switch_to_view(app->view_dispatcher, FlipTDIViewWidget);
}

bool flip_tdi_scene_close_rpc_on_event(void* context, SceneManagerEvent event) {
FlipTDIApp* app = context;

if(event.type == SceneManagerEventTypeBack) {
view_dispatcher_stop(app->view_dispatcher);
return true;
}

return false;
}

void flip_tdi_scene_close_rpc_on_exit(void* context) {
FlipTDIApp* app = context;
widget_reset(app->widget);
}
1 change: 1 addition & 0 deletions flip_tdi/scenes/flip_tdi_scene_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ ADD_SCENE(flip_tdi, wiring_uart, WiringUart)
ADD_SCENE(flip_tdi, wiring_spi, WiringSpi)
ADD_SCENE(flip_tdi, wiring_gpio, WiringGpio)
ADD_SCENE(flip_tdi, about, About)
ADD_SCENE(flip_tdi, close_rpc, CloseRpc)
3 changes: 3 additions & 0 deletions mass_storage/.catalog/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
## v.1.5
Fixed crash when connected to a USB charger instead of a PC

## v.1.4
Removed call to legacy SDK API

Expand Down
2 changes: 1 addition & 1 deletion mass_storage/application.fam
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ App(
],
stack_size=2 * 1024,
fap_description="Implements a mass storage device over USB for disk images",
fap_version="1.4",
fap_version="1.5",
fap_icon="assets/mass_storage_10px.png",
fap_icon_assets="assets",
fap_category="USB",
Expand Down
12 changes: 6 additions & 6 deletions mass_storage/helpers/mass_storage_usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -297,12 +297,6 @@ static void usb_deinit(usbd_device* dev) {
furi_thread_join(mass->thread);
furi_thread_free(mass->thread);
mass->thread = NULL;

free(mass->usb.str_prod_descr);
mass->usb.str_prod_descr = NULL;
free(mass->usb.str_serial_descr);
mass->usb.str_serial_descr = NULL;
free(mass);
}

static void usb_wakeup(usbd_device* dev) {
Expand Down Expand Up @@ -478,4 +472,10 @@ MassStorageUsb* mass_storage_usb_start(const char* filename, SCSIDeviceFunc fn)

void mass_storage_usb_stop(MassStorageUsb* mass) {
furi_hal_usb_set_config(mass->usb_prev, NULL);

free(mass->usb.str_prod_descr);
mass->usb.str_prod_descr = NULL;
free(mass->usb.str_serial_descr);
mass->usb.str_serial_descr = NULL;
free(mass);
}