@@ -1712,11 +1697,40 @@ #endif /* CONFIG_KEYPAD == RECORDER_PAD */ case SYS_USB_CONNECTED: + if ((audio_stat & AUDIO_STATUS_RECORD)) { + // stop the recording to do usb + rec_command(RECORDING_CMD_STOP); + FOR_NB_SCREENS(i) + screens[i].set_viewport(NULL); + next_screen = GO_TO_RECSCREEN; + recording_start_automatic = true; + + done = true; + rec_status |= RCSTAT_BEEN_IN_USB_MODE; +#ifdef HAVE_FMRADIO_REC + radio_status = FMRADIO_OFF; +#endif + // wait a bit + sleep(20); + while(!(audio_stat & AUDIO_STATUS_RECORD)) { + sleep(20); + } + + default_event_handler(SYS_USB_CONNECTED); + usb_acknowledge(SYS_USB_CONNECTED_ACK); + + + + } + + /* Only accept USB connection when not recording */ - if(!(audio_stat & AUDIO_STATUS_RECORD)) + else if(!(audio_stat & AUDIO_STATUS_RECORD)) { FOR_NB_SCREENS(i) screens[i].set_viewport(NULL); + next_screen = GO_TO_RECSCREEN; + recording_start_automatic = true; default_event_handler(SYS_USB_CONNECTED); done = true; rec_status |= RCSTAT_BEEN_IN_USB_MODE;