From 9c68c69cf029b22587f4a7225261a45e5391a242 Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Mon, 16 Nov 2020 11:32:12 -0500 Subject: [PATCH] FS13257: Fix inconsistent defaults in the USB mode selection Change-Id: I44894d13f070313ad326ce68018556573e35aad9 --- apps/settings.c | 4 ++++ apps/settings_list.c | 2 +- firmware/export/usb.h | 7 +++++++ firmware/usb.c | 7 ++++--- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/apps/settings.c b/apps/settings.c index b72808b510..59cb480c95 100644 --- a/apps/settings.c +++ b/apps/settings.c @@ -1025,6 +1025,10 @@ void settings_apply(bool read_disk) usb_charging_enable(global_settings.usb_charging); #endif +#ifdef HAVE_USB_POWER + usb_set_mode(global_settings.usb_mode); +#endif + #ifdef HAVE_TOUCHSCREEN touchscreen_set_mode(global_settings.touch_mode); memcpy(&calibration_parameters, &global_settings.ts_calibration_data, sizeof(struct touchscreen_parameter)); diff --git a/apps/settings_list.c b/apps/settings_list.c index 17720b5145..71085906ce 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c @@ -2161,7 +2161,7 @@ const struct settings_list settings[] = { CHOICE_SETTING(0, usb_mode, LANG_USB_MODE, - USB_MODE_MASS_STORAGE, + USBMODE_DEFAULT, "usb mode", "ask,mass storage,charge" #if defined(DX50) || defined(DX90) diff --git a/firmware/export/usb.h b/firmware/export/usb.h index edc37bd5b6..2bcd95ef81 100644 --- a/firmware/export/usb.h +++ b/firmware/export/usb.h @@ -145,6 +145,13 @@ enum #if !defined(USBPOWER_BTN_IGNORE) #define USBPOWER_BTN_IGNORE 0 #endif + +#if defined(BOOTLOADER) +#define USBMODE_DEFAULT USB_MODE_MASS_STORAGE +#else +#define USBMODE_DEFAULT USB_MODE_MASS_STORAGE +#endif + #endif #ifdef HAVE_USBSTACK diff --git a/firmware/usb.c b/firmware/usb.c index aca2683d58..8c6eae9b3f 100644 --- a/firmware/usb.c +++ b/firmware/usb.c @@ -95,8 +95,8 @@ static bool usb_host_present = false; static int usb_num_acks_to_expect = 0; static long usb_last_broadcast_tick = 0; #ifdef HAVE_USB_POWER -static int usb_mode = USB_MODE_ASK; -static int new_usbmode = USB_MODE_ASK; +static int usb_mode = USBMODE_DEFAULT; +static int new_usbmode = USBMODE_DEFAULT; #endif static int usb_release_exclusive_storage(void); @@ -476,6 +476,7 @@ static void NORETURN_ATTR usb_thread(void) /* Power (charging-only) button */ #ifdef HAVE_USB_POWER + new_usbmode = usb_mode; switch (usb_mode) { case USB_MODE_CHARGE: case USB_MODE_ADB: @@ -491,7 +492,7 @@ static void NORETURN_ATTR usb_thread(void) case USB_MODE_MASS_STORAGE: if (button_status() & ~USBPOWER_BTN_IGNORE) new_usbmode = USB_MODE_CHARGE; - break; + break; } #ifndef BOOTLOADER