⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmisounds.c

📁 GSM手机设计软件代码
💻 C
📖 第 1 页 / 共 4 页
字号:
  }
  else
  {
    //store setting into PCM
    volumeSetting2Pcm=FALSE;
  }

}
/*******************************************************************************

 $Function:     soundsVolHigh

 $Description:  set voulme level to High

 $Returns:    none

 $Arguments:  none

*******************************************************************************/
void soundsVolHigh(void)
{
  FFS_flashData.settings_status &= ~SettingsSilentMode;
  flash_write();
  stopPlayingMelody();
  if(volumeSetting2Pcm != TRUE)
  {
    current.volumeSetting =175;
    audio_SetAmplf (AUDIO_BUZZER, current.volumeSetting);
    audio_PlaySoundID(AUDIO_BUZZER, current.ringer, 0, AUDIO_PLAY_INFINITE);
  }
  else
  {
    //store setting into PCM
    volumeSetting2Pcm=FALSE;
  }

}
/*******************************************************************************

 $Function:     soundsVolInc

 $Description:  set voulme level to increasing

 $Returns:    none

 $Arguments:  none

*******************************************************************************/
void soundsVolInc(void)
{
  FFS_flashData.settings_status &= ~SettingsSilentMode;
  flash_write();
  stopPlayingMelody();
  if(volumeSetting2Pcm != TRUE)
  {
    current.volumeSetting = 5;
    audio_SetAmplf (AUDIO_BUZZER, current.volumeSetting);
    audio_PlaySoundID(AUDIO_BUZZER, current.ringer, 0, AUDIO_PLAY_INFINITE);
  }
  else
  {
    //store setting into PCM
    volumeSetting2Pcm=FALSE;

  }


}
/*******************************************************************************

 $Function:     soundReasonRinger

 $Description:  setup the soundReason to be Ringer Melody settings.

 $Returns:    none

 $Arguments:  none

*******************************************************************************/
void soundReasonRinger(void)
{
  soundReason = MelodySelect;
}
/*******************************************************************************

 $Function:     soundReasonSmsTone

 $Description:  Setup the soundReason to be SMS tones settings.

 $Returns:    none

 $Arguments:  none

*******************************************************************************/
void soundReasonSmsTone(void)
{
  soundReason = SettingSMSTone;
}
/*******************************************************************************

 $Function:     soundReasonAlarm

 $Description:  Setup the soundReason to be Alarm settings.

 $Returns:    none

 $Arguments:  none

*******************************************************************************/
void soundReasonAlarm(void)
{
  soundReason = SettingAlarm;
}
/*******************************************************************************

 $Function:     getcurrentSMSTone

 $Description:  Access function for the current SMS Tone.
 $Returns:    Tone Id

 $Arguments:  None

*******************************************************************************/
UBYTE getcurrentSMSTone(void)
{
  return current.SMSTone;
}/*******************************************************************************

 $Function:     getcurrentSMSTone

 $Description:  Access function for the current SMS Tone.
 $Returns:    Tone Id

 $Arguments:  None

*******************************************************************************/
UBYTE getcurrentAlarmTone(void)
{
  return current.AlarmOn;
}
/*******************************************************************************

 $Function:     getCurrentRingerSettings

 $Description:  Access function for the current ringer settings data.
 $Returns:    Ringer Id.

 $Arguments:  None

*******************************************************************************/
UBYTE getCurrentRingerSettings(void)
{
  return current.ringer;
}
/*******************************************************************************

 $Function:     getCurrentVoulmeSettings

 $Description:  Access function for the current ringer volume settings data.
 $Returns:    volume

 $Arguments:  None

*******************************************************************************/
UBYTE getCurrentVoulmeSettings(void)
{
  return current.volumeSetting;
}
/*******************************************************************************

 $Function:     getMelodyListStatus

 $Description:  Status flag indicating if a melody selection menu is active.
 $Returns:    status

 $Arguments:  None

*******************************************************************************/
BOOL getMelodyListStatus(void)
{
  if(soundReason == MelodySelect ||
    soundReason == SettingSMSTone ||
    soundReason == SettingAlarm )
     return TRUE;
  else
    return FALSE;
}


/*******************************************************************************

 $Function:     stopPlayingMelody

 $Description:  stop currently played ringer melody

 $Returns:    None

 $Arguments:  None

*******************************************************************************/

static void stopPlayingMelody( void )
{
  TRACE_FUNCTION( "stopPlayingMelody" );

  /* If a timer event is running we want to stop that as well,
     since we don't really want to turn the tune off and have
     it start again when the timer expires
  */
  if ( hRingerStartTimer != NULL )
    timStop( hRingerStartTimer );

  /* Are we playing a tune
  */
  if ( LastTune )
    audio_StopSoundbyID( AUDIO_BUZZER, LastTune );

  /* Need to wait for the tune to stop before trying to
     set up the next tune, so wait always
  */
  vsi_t_sleep( 0, 5 );
}

/*******************************************************************************

 $Function:     startPlayingMelody

 $Description:  Start played the ringer melody

 $Returns:    None

 $Arguments:  Melody_id

*******************************************************************************/

static void startPlayingMelody(UBYTE melody_id)
{

  if ( hRingerStartTimer != NULL )
    timStop( hRingerStartTimer );

  audio_PlaySoundID(AUDIO_BUZZER, melody_id, (BYTE)current.volumeSetting, AUDIO_PLAY_INFINITE);

}


/*******************************************************************************

 $Function:     soundsPlayRinger

 $Description:  Play the tune selected by melody_id, stopping any currently
        playing tunes if necessary. Remember to take into account the
        volume setting and provide a crescendo if requested

 $Returns:    None

 $Arguments:  melody_id, selects the melody to be played

*******************************************************************************/

static void soundsPlayRinger( int melody_id )
{
  CurrentTune = melody_id;
  if (LastTune)
    audio_StopSoundbyID (AUDIO_BUZZER,LastTune );
  vsi_t_sleep(0, 5);

  if (current.volumeSetting == increasing)
  {
    audio_PlaySoundID ( AUDIO_BUZZER,CurrentTune, 0 , AUDIO_PLAY_CRESCENDO );
  }
  else
  {
    audio_PlaySoundID ( AUDIO_BUZZER,CurrentTune, 0, AUDIO_PLAY_INFINITE );
  }
  LastTune = CurrentTune;
}


/*******************************************************************************

 $Function:     destroyDynaMenu

 $Description:  frees the memory allocated to a dynamenu (Refer to the
        buildMelodyMenu routine below

 $Returns:    None.

 $Arguments:  None.

*******************************************************************************/

static void destroyDynaMenu( void )
{

}


/*******************************************************************************

 $Function:     buildMelodyMenu

 $Description:  Builds the melody menu dynamenu from the melodies supplied
        by the resource manager

 $Returns:    None

 $Arguments:  None

*******************************************************************************/
static T_MFW_HND  buildMelodyMenu( MfwHnd parent_window)
{
  T_MELODY_INFO *  data = (T_MELODY_INFO *)ALLOC_MEMORY (sizeof (T_MELODY_INFO));
  T_MFW_WIN  * win;

    TRACE_FUNCTION (">>>> buildMelodyMenu()");

    /*
     * Create window handler
     */

    data->sounds_win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)melody_win_cb);
    if (data->sounds_win EQ NULL)
  {
     return NULL;
  }

  TRACE_EVENT(">>>> Melody window created: " );
    /*
     * connect the dialog data to the MFW-window
     */

    data->mmi_control.dialog = (T_DIALOG_FUNC)melody_exec_cb;
    data->mmi_control.data   = data;
    win                      = ((T_MFW_HDR *)data->sounds_win)->data;
    win->user                = (void *)data;
    data->parent             = parent_window;
  winShow(data->sounds_win);
    /*
     * return window handle
     */

     return data->sounds_win;
}

/*******************************************************************************

 $Function:     melody_exec_cb

 $Description:  Exec callback function of the SMS read window (dynamic list of
        all the SMS)

 $Returns:    none

 $Arguments:  win - window handler
        event - mfw event
        parameter - optional data.

*******************************************************************************/
void melody_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
    T_MFW_WIN      * win_data = ((T_MFW_HDR *) win)->data;
    T_MELODY_INFO   * data = (T_MELODY_INFO *)win_data->user;
  UBYTE i;
  UBYTE numberOfMelodies;
  ListWinInfo      * mnu_data = (ListWinInfo *)parameter;

    TRACE_FUNCTION (">>>>> melody_exec_cb()");

    switch (event)
  {
  case E_INIT:

    TRACE_EVENT(">>>> melody_exec_cb() Event:E_INIT");

     /* initialization of administrative data */


    data->menu_list_data = (ListMenuData *)ALLOC_MEMORY(sizeof(ListMenuData));

    if(data->menu_list_data == 0)
    {
      TRACE_EVENT("Failed memory alloc 1 ");
      return;
    }

    numberOfMelodies = resource_GetListCount(RES_MELODY);

    data->menu_list_data->List = (T_MFW_MNU_ITEM *)ALLOC_MEMORY( numberOfMelodies * sizeof(T_MFW_MNU_ITEM) );

    if(data->menu_list_data->List == 0)
    {
      TRACE_EVENT("Failed memory alloc 2");
      return;
    }

    for (i = 0; i < numberOfMelodies ; i++)
    {
		mnuInitDataItem(&data->menu_list_data->List[i]);
		data->menu_list_data->List[i].flagFunc = item_flag_none;
      	data->menu_list_data->List[i].str  = (char *)MelodyTable[i];
    }

      data->menu_list_data->ListLength =numberOfMelodies;
    data->menu_list_data->ListPosition = 1;
    data->menu_list_data->CursorPosition = 1;
    data->menu_list_data->SnapshotSize = numberOfMelodies;
    data->menu_list_data->Font = 0;
    data->menu_list_data->LeftSoftKey = TxtSoftSelect;
    data->menu_list_data->RightSoftKey = TxtSoftBack;
    data->menu_list_data->KeyEvents = KEY_ALL;
    data->menu_list_data->Reason = 0;
    data->menu_list_data->Strings = TRUE;
    data->menu_list_data->Attr   = (MfwMnuAttr*)&melody_menuAttrib;
    data->menu_list_data->autoDestroy    = FALSE;
  	    listDisplayListMenu(win, data->menu_list_data,(ListCbFunc)MelodyList_cb,0);
  case E_START_MELODY:
    startPlayingMelody(mnu_data->MenuData.ListPosition);

    break;

  case E_RETURN:
    break;
  default:
      break;
  }
}
/*******************************************************************************

 $Function:     MelodyList_cb

 $Description:  Callback function for the melody list.

 $Returns:    none

 $Arguments:  Parent - parent window.
        ListData - Menu item list
*******************************************************************************/

void MelodyList_cb(T_MFW_HND * Parent, ListMenuData * ListData)
{
    T_MFW_WIN       * win_data = ((T_MFW_HDR *)Parent)->data;
    T_MELODY_INFO * data     = (T_MELODY_INFO *)win_data->user;
  T_MFW_HND      * l_parent;

  if ((ListData->Reason EQ LISTS_REASON_BACK) || (ListData->Reason EQ LISTS_REASON_CLEAR)
  	|| (ListData->Reason EQ LISTS_REASON_HANGUP))	// sbh - added hangup key
  {
      l_parent = data->parent;

  }
  else if(ListData->Reason EQ LISTS_REASON_SELECT)
  {
    switch(soundReason)
      {
      case MelodySelect:
        stopPlayingMelody();
        current.ringer = ListData->ListPosition;
        break;
      case SettingSMSTone:
        stopPlayingMelody();
        current.SMSTone = ListData->ListPosition;
        break;
      case SettingAlarm:
        // need to check alarm status MZ.
        current.AlarmOn = ListData->ListPosition;
      default:
        break;
      }
    // Store selected melody in PCM storage.


  }
  stopPlayingMelody();
  listsDestroy(ListData->win);
  melody_destroy(data->sounds_win);

}

/*******************************************************************************

 $Function:     melody_destroy

 $Description:  Destroy the melody window.

 $Returns:    none

 $Arguments:  own_window- current window
*******************************************************************************/

static void melody_destroy(MfwHnd own_window)
{
    T_MFW_WIN * win_data;
    T_MELODY_INFO     * data;
  UBYTE numberOfMelodies;

    TRACE_FUNCTION ("melody_destroy()");

    if (own_window)
  {
      win_data = ((T_MFW_HDR *)own_window)->data;
      data = (T_MELODY_INFO *)win_data->user;

      if (data)
    {
        /*
         * Delete WIN handler
         */
        win_delete (data->sounds_win);

        /*
         * Free Memory
         */

        numberOfMelodies = resource_GetListCount(RES_MELODY);

      if (data->menu_list_data != NULL)
      {
        FREE_MEMORY ((void *)data->menu_list_data->List, numberOfMelodies * sizeof (T_MFW_MNU_ITEM));
          FREE_MEMORY ((void *)data->menu_list_data, sizeof (ListMenuData));
      }
      FREE_MEMORY ((void *)data, sizeof (T_MELODY_INFO));

    }
      else
    {
        TRACE_EVENT ("melody_destroy() called twice");
    }
  }
}

/*******************************************************************************

 $Function:     melody_win_cb

 $Description:  Window callback function for the melody window.

 $Returns:    none

 $Arguments:  w - mfw window handler
        e - mfw event

*******************************************************************************/

static int melody_win_cb (MfwEvt e, MfwWin *w)    /* yyy window event handler */
{
  TRACE_FUNCTION ("melody_win_cb()");
  switch (e)
  {
  case MfwWinVisible:  /* window is visible  */
    break;
  case MfwWinFocussed: /* input focus / selected   */
  case MfwWinDelete:   /* window will be deleted   */

  default:
    return MFW_EVENT_REJECTED;
  }
  return MFW_EVENT_CONSUMED;
}

/*******************************************************************************

 $Function:     melody_menu_cb

 $Description:  Call back function for the melody menu.

 $Returns:

 $Arguments:
*******************************************************************************/

static int melody_menu_cb (MfwEvt e, MfwMnu *m){

    T_MFW_HND       win  = mfwParent(mfw_header());
    T_MFW_WIN     * win_data = ((T_MFW_HDR *)win)->data;

  switch (e)
        {
            case E_MNU_ESCAPE:
            break;
            default:
                return 0;
        }
  return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -