Headphone / lineout pause/resume #FS13237
Allow Lineout to behave like headphone port in regards to plug/unplug pause/resume Change-Id: I9cb2c9c40e0bdf3bf7e1e272164acd343f6b3850
This commit is contained in:
parent
4fa945d810
commit
2df3a5b04c
|
@ -169,10 +169,19 @@ int audio_get_spdif_sample_rate(void)
|
|||
#ifdef HAVE_SPEAKER
|
||||
void audio_enable_speaker(int mode)
|
||||
{
|
||||
#ifdef HAVE_HEADPHONE_DETECTION
|
||||
#if defined(HAVE_HEADPHONE_DETECTION) || defined(HAVE_LINEOUT_DETECTION)
|
||||
/* if needed, query jack state */
|
||||
if(mode == 2)
|
||||
mode = !headphones_inserted();
|
||||
{
|
||||
#ifdef HAVE_HEADPHONE_DETECTION
|
||||
if (headphones_inserted())
|
||||
mode = 0;
|
||||
#endif
|
||||
#ifdef HAVE_LINEOUT_DETECTION
|
||||
if (lineout_inserted())
|
||||
mode = 0;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
/* treat any nonzero value as enable */
|
||||
audiohw_enable_speaker(mode);
|
||||
|
|
33
apps/misc.c
33
apps/misc.c
|
@ -498,7 +498,7 @@ void car_adapter_mode_init(void)
|
|||
#ifdef HAVE_HEADPHONE_DETECTION
|
||||
static void hp_unplug_change(bool inserted)
|
||||
{
|
||||
static bool headphone_caused_pause = false;
|
||||
static bool headphone_caused_pause = true;
|
||||
|
||||
if (global_settings.unplug_mode)
|
||||
{
|
||||
|
@ -526,7 +526,7 @@ static void hp_unplug_change(bool inserted)
|
|||
audio_enable_speaker(global_settings.speaker_mode);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
#endif /*HAVE_HEADPHONE_DETECTION*/
|
||||
|
||||
#ifdef HAVE_LINEOUT_DETECTION
|
||||
static void lo_unplug_change(bool inserted)
|
||||
|
@ -534,11 +534,32 @@ static void lo_unplug_change(bool inserted)
|
|||
#ifdef HAVE_LINEOUT_POWEROFF
|
||||
lineout_set(inserted);
|
||||
#else
|
||||
(void)inserted;
|
||||
audiohw_set_lineout_volume(0,0);
|
||||
#endif
|
||||
audiohw_set_lineout_volume(0,0); /*hp vol re-set by this function as well*/
|
||||
static bool lineout_caused_pause = true;
|
||||
|
||||
if (global_settings.unplug_mode)
|
||||
{
|
||||
int audio_stat = audio_status();
|
||||
if (inserted)
|
||||
{
|
||||
backlight_on();
|
||||
if ((audio_stat & AUDIO_STATUS_PLAY) &&
|
||||
lineout_caused_pause &&
|
||||
global_settings.unplug_mode > 1 )
|
||||
unpause_action(true, true);
|
||||
lineout_caused_pause = false;
|
||||
} else {
|
||||
if ((audio_stat & AUDIO_STATUS_PLAY) &&
|
||||
!(audio_stat & AUDIO_STATUS_PAUSE))
|
||||
{
|
||||
lineout_caused_pause = true;
|
||||
pause_action(false, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif /*HAVE_LINEOUT_POWEROFF*/
|
||||
}
|
||||
#endif
|
||||
#endif /*HAVE_LINEOUT_DETECTION*/
|
||||
|
||||
long default_event_handler_ex(long event, void (*callback)(void *), void *parameter)
|
||||
{
|
||||
|
|
|
@ -767,11 +767,20 @@ void root_menu(void)
|
|||
}
|
||||
#endif /* HAVE_RTC_ALARM */
|
||||
|
||||
#if defined(HAVE_HEADPHONE_DETECTION) || defined(HAVE_LINEOUT_DETECTION)
|
||||
if (next_screen == GO_TO_WPS && global_settings.unplug_autoresume)
|
||||
{
|
||||
next_screen = GO_TO_ROOT;
|
||||
#ifdef HAVE_HEADPHONE_DETECTION
|
||||
if (next_screen == GO_TO_WPS &&
|
||||
(global_settings.unplug_autoresume && !headphones_inserted() ))
|
||||
next_screen = GO_TO_ROOT;
|
||||
if (headphones_inserted())
|
||||
next_screen = GO_TO_WPS;
|
||||
#endif
|
||||
#ifdef HAVE_LINEOUT_DETECTION
|
||||
if (lineout_inserted())
|
||||
next_screen = GO_TO_WPS;
|
||||
#endif
|
||||
}
|
||||
#endif /*(HAVE_HEADPHONE_DETECTION) || (HAVE_LINEOUT_DETECTION)*/
|
||||
|
||||
while (true)
|
||||
{
|
||||
|
|
|
@ -448,7 +448,7 @@ struct user_settings
|
|||
#endif
|
||||
|
||||
int pause_rewind; /* time in s to rewind when pausing */
|
||||
#ifdef HAVE_HEADPHONE_DETECTION
|
||||
#if defined(HAVE_HEADPHONE_DETECTION) || defined(HAVE_LINEOUT_DETECTION)
|
||||
int unplug_mode; /* pause on headphone unplug */
|
||||
bool unplug_autoresume; /* disable auto-resume if no phones */
|
||||
#endif
|
||||
|
|
|
@ -112,6 +112,7 @@ static int hp_detect_callback(struct timeout *tmo)
|
|||
queue_remove_from_head(&button_queue, id);
|
||||
queue_post(&button_queue, id, 0);
|
||||
return 0;
|
||||
/*misc.c:hp_unplug_change*/
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -125,6 +126,7 @@ static int lo_detect_callback(struct timeout *tmo)
|
|||
queue_remove_from_head(&button_queue, id);
|
||||
queue_post(&button_queue, id, 0);
|
||||
return 0;
|
||||
/*misc.c:lo_unplug_change*/
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -89,10 +89,12 @@ void button_init_device(void)
|
|||
__gpio_as_output(PIN_CHARGE_CON);
|
||||
|
||||
__gpio_as_input(PIN_PH_DECT);
|
||||
__gpio_enable_pull(PIN_PH_DECT);
|
||||
/*__gpio_disable_pull(PIN_PH_DECT); // Spurious Detections */
|
||||
|
||||
__gpio_as_input(PIN_LO_DECT);
|
||||
__gpio_disable_pull(PIN_LO_DECT);
|
||||
__gpio_enable_pull(PIN_LO_DECT);
|
||||
/*__gpio_disable_pull(PIN_LO_DECT); // Spurious Detections */
|
||||
}
|
||||
|
||||
bool button_hold(void)
|
||||
|
|
Loading…
Reference in New Issue