diff --git a/sw/airborne/firmwares/fixedwing/chibios-libopencm3/chibios_init.c b/sw/airborne/firmwares/fixedwing/chibios-libopencm3/chibios_init.c index 680ca241af..4b2848516a 100644 --- a/sw/airborne/firmwares/fixedwing/chibios-libopencm3/chibios_init.c +++ b/sw/airborne/firmwares/fixedwing/chibios-libopencm3/chibios_init.c @@ -92,7 +92,10 @@ static __attribute__((noreturn)) msg_t thd_heartbeat(void *arg) chRegSetThreadName("pprz heartbeat"); chThdSleepSeconds (SDLOG_START_DELAY); - sdOk = chibios_logInit(true); + if (usbStorageIsItRunning ()) + chThdSleepSeconds (20000); // stuck here for hours + else + sdOk = chibios_logInit(true); while (TRUE) { palTogglePad (GPIOC, GPIOC_LED3); diff --git a/sw/airborne/subsystems/chibios-libopencm3/usbStorage.c b/sw/airborne/subsystems/chibios-libopencm3/usbStorage.c index 403d688750..1020d21a7a 100644 --- a/sw/airborne/subsystems/chibios-libopencm3/usbStorage.c +++ b/sw/airborne/subsystems/chibios-libopencm3/usbStorage.c @@ -37,6 +37,7 @@ static msg_t thdUsbStorage(void *arg); static Thread* usbStorageThreadPtr=NULL; /* USB mass storage driver */ static USBMassStorageDriver UMSD1; +static bool_t isRunning = false; /* endpoint index */ #define USB_MS_DATA_EP 1 @@ -297,7 +298,7 @@ static msg_t thdUsbStorage(void *arg) chThdSleepMilliseconds(20); } - + isRunning = true; chRegSetThreadName("UsbStorage:connected"); chibios_logFinish (); @@ -331,3 +332,8 @@ static msg_t thdUsbStorage(void *arg) MCU_RESTART(); return RDY_OK; } + +bool_t usbStorageIsItRunning (void) +{ + return isRunning; +} diff --git a/sw/airborne/subsystems/chibios-libopencm3/usbStorage.h b/sw/airborne/subsystems/chibios-libopencm3/usbStorage.h index 8993a9d72b..cdb33ff53f 100644 --- a/sw/airborne/subsystems/chibios-libopencm3/usbStorage.h +++ b/sw/airborne/subsystems/chibios-libopencm3/usbStorage.h @@ -25,6 +25,7 @@ */ #pragma once -void usbStorageStartPolling (void); -void usbStorageStop (void); -void usbStorageWaitForDeconnexion (void); +void usbStorageStartPolling (void); +void usbStorageStop (void); +void usbStorageWaitForDeconnexion (void); +bool_t usbStorageIsItRunning (void);