FreeCalypso > hg > fc-tourmaline
view src/cs/services/audio/audio_vm.c @ 280:82665effff30
keypad boot init overhaul: handle initially held-down keys
This change fixes two previous behavioural defects:
1) On Compal phones, the PWR key had to be released before the boot
sequence would proceed at all - it was stuck in an endless IRQ loop
at the point of Nucleus enabling interrupts, before anything else.
2) On both Compal and sane platforms including Luna, if some regular
non-PWR key was held down at boot time, the boot sequence would
proceed and complete normally, but all non-PWR keypad buttons would
be dead for the remainder of that boot cycle.
The fix is a generic solution - no Compal-specific hack ended up being
needed for the special case of their idiotic PWON-to-ROW4 hw wiring.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 24 Sep 2021 00:47:12 +0000 |
parents | 4e78acac3d88 |
children |
line wrap: on
line source
/****************************************************************************/ /* */ /* File Name: audio_vm.c */ /* */ /* Purpose: This file contains all the functions used to manage the */ /* Voice Memorization . */ /* */ /* Version 0.1 */ /* */ /* Date Modification */ /* ------------------------------------ */ /* 2 August 2001 Create */ /* */ /* Author */ /* Stephanie Gerthoux */ /* */ /* (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved*/ /****************************************************************************/ #include "rv/rv_defined_swe.h" #ifdef RVM_AUDIO_MAIN_SWE #ifndef _WINDOWS #include "config/swconfig.cfg" #include "config/sys.cfg" #include "config/chipset.cfg" #endif /* include the usefull L1 header */ #include "l1_confg.h" #if (VOICE_MEMO) #include "rv/rv_general.h" #include "rvm/rvm_gen.h" #include "audio/audio_ffs_i.h" #include "audio/audio_api.h" #include "audio/audio_structs_i.h" #include "audio/audio_var_i.h" #include "audio/audio_messages_i.h" #include "rvf/rvf_target.h" #include "audio/audio_const_i.h" #include "audio/audio_error_hdlr_i.h" /* include the usefull L1 header */ #define BOOL_FLAG #define CHAR_FLAG #include "l1_types.h" #include "l1audio_cust.h" #include "l1audio_msgty.h" #include "l1audio_signa.h" /********************************************************************************/ /* */ /* Function Name: audio_voice_memo_message_switch */ /* */ /* Purpose: Manage the message supply between the vice memo play and the */ /* voice memo record */ /* */ /* Input Parameters: */ /* start or stop message from the voice memo features */ /* */ /* Output Parameters: */ /* index of the manager */ /* */ /* Note: */ /* None. */ /* */ /* Revision History: */ /* None. */ /* */ /********************************************************************************/ UINT8 audio_voice_memo_message_switch (T_RV_HDR *p_message) { switch (p_message->msg_id) { case AUDIO_FFS_INIT_DONE: { /* The FFS message is from the voice memo play */ if ( ((T_AUDIO_FFS_INIT *)p_message)->session_id == AUDIO_FFS_SESSION_VM_PLAY ) { return(AUDIO_VM_PLAY); } /* The FFS message is from the voice memo record */ if ( ((T_AUDIO_FFS_INIT *)p_message)->session_id == AUDIO_FFS_SESSION_VM_RECORD ) { return(AUDIO_VM_RECORD); } return(AUDIO_VM_NONE); } case AUDIO_FFS_STOP_CON: { /* The FFS message is from the voice memo play*/ if ( ((T_AUDIO_FFS_STOP_REQ *)p_message)->session_id == AUDIO_FFS_SESSION_VM_PLAY ) { return(AUDIO_VM_PLAY); } /* The FFS message is from the voice memo record */ if ( ((T_AUDIO_FFS_STOP_REQ *)p_message)->session_id == AUDIO_FFS_SESSION_VM_RECORD ) { return(AUDIO_VM_RECORD); } return(AUDIO_VM_NONE); } case AUDIO_VM_PLAY_START_REQ: case AUDIO_VM_PLAY_STOP_REQ: case MMI_VM_PLAY_START_CON: case MMI_VM_PLAY_STOP_CON: { return(AUDIO_VM_PLAY); } case AUDIO_VM_RECORD_START_REQ: case AUDIO_VM_RECORD_STOP_REQ: case MMI_VM_RECORD_START_CON: case MMI_VM_RECORD_STOP_CON: { return(AUDIO_VM_RECORD); } default: { return(AUDIO_VM_NONE); break; } } /* switch */ } #endif /* VOICE_MEMO */ #endif /* RVM_AUDIO_MAIN_SWE */