# HG changeset patch # User Mychaela Falconia # Date 1611034514 0 # Node ID 73fd75652066429601c432aa016c919fdffa9fa1 # Parent 83c6933e8f908f817bc983e62bf5264450f07db5 rm src/ui/mfw/mfw_bt* and src/ui/mfw/mfw_fm.[ch] diff -r 83c6933e8f90 -r 73fd75652066 src/ui/mfw/mfw_bt_api.c --- a/src/ui/mfw/mfw_bt_api.c Tue Jan 19 05:29:26 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,255 +0,0 @@ -/*******************************************************************************\ -* * -* TEXAS INSTRUMENTS ISRAEL PROPRIETARY AND CONFIDENTIAL INFORMATION * -* * -* LEGAL NOTE: THE TRANSFER OF THE TECHNICAL INFORMATION IS BEING MADE * -* UNDER AN EXPORT LICENSE ISSUED BY THE ISRAELI GOVERNMENT AND THAT THE * -* APPLICABLE EXPORT LICENSE DOES NOT ALLOW THE TECHNICAL INFORMATION TO * -* BE USED FOR THE MODIFICATION OF THE BT ENCRYPTION OR THE DEVELOPMENT * -* OF ANY NEW ENCRYPTION. THE INFORMATION CAN BE USED FOR THE INTERNAL * -* DESIGN AND MANUFACTURE OF TI PRODUCTS THAT WILL CONTAIN THE BT IC. * -* * -\*******************************************************************************/ -/*******************************************************************************\ -* -* FILE NAME: mfw_bt_api.c -* -* DESCRIPTION: This file implements the API between BMI (MMI) and BT applications -* -* AUTHOR: Anandhi Ramesh -* -* Rev 0.1 -* -\*******************************************************************************/ -/* ========================================================== */ -/*=========================================================== -*! -*! Revision History -*! =================================== - - Nov 12, 2007 DRT :OMAPS00151698 x0056422 - Description: MM: Commands that are not recognized by MMI are - handled improperly in BMI_NotifyBtEvent function. *! -*! -*! 17-Jan-2006 mf: Revisions appear in reverse chronological order; -*! that is, newest first. The date format is dd-Mon-yyyy. -* =========================================================== */ - -/****************************************************************************** - Include Files -*******************************************************************************/ -#ifdef FF_MMI_A2DP_AVRCP -#if defined (NEW_FRAME) - -#include "typedefs.h" -#include "vsi.h" -#include "pei.h" -#include "custom.h" -#include "gsm.h" - -#else - -#include "STDDEFS.H" -#include "custom.h" -#include "gsm.h" -#include "vsi.h" - -#endif - - -#include "mfw_mfw.h" -#include "mfw_phb.h" -#include "mfw_phbi.h" -#include "mfw_cm.h" -#include "mfw_cmi.h" -#include "mfw_kbd.h" - -#include "mfw_nm.h" -#include "mfw_sim.h" -#include "mfw_sima.h" -#include "mfw_nmi.h" -#include "mfw_simi.h" -#include "mfw_sms.h" -#include "mfw_smsi.h" -#include "mfw_win.h" - -#include "ksd.h" -#include "psa.h" - -#include "mfw_bt_api.h" -#include "mfw_bt_private.h" - -/*Declaration of Global BT structure for BMI*/ -BMI_BT_STRUCTTYPE tGlobalBmiBtStruct; - -extern BOOL mmi_progress_bar; -/* temp comment */ -extern T_AS_RET as_bt_cfg(BOOL , const T_RV_RETURN_PATH* ); -/* ========================================================================== */ -/** -* @fn BMI_SwitchAudioToBtHeadset : Sets BT connection status. -* Connect or disconnect the audio output to BT headset. -* BT will call this function to let BMI know an A2DP link to a wireless headset -* has been connected (and is in Open state), or disconnected. -* -* When link is connected, BMI will decide whether it wants to -* direct the audio output to the wireless headset. -* -* @param [in] connected -* connected [in] - whether the link has just been connected or disconnected: -* TRUE - connected -* FALSE - disconnected -* -* @return BOOL -* when connect parameter is TRUE: -* - return TRUE when BMI approves and will use A2DP headset as the audio output -* - return FALSE when BMI rejects using A2DP headset as the audio output -* -* when connect parameter is FALSE - returned value is ignored -* -* @see mfw_bt_api.h -*/ -/* ========================================================================== */ - -BOOL BMI_SwitchAudioToBtHeadset(BOOL connected) -{ - static U8 first_time = 1; - TRACE_FUNCTION("BMI_SwitchAudioToBtHeadset"); - if(first_time == 1) - { - tGlobalBmiBtStruct.tCmdSrc = BMI_BT_COMMAND_NONE; - first_time = 0; - } - if(connected == 0) - { - TRACE_FUNCTION("BMI_BT_Trace BMI_SwitchAudioToBtHeadset OFF"); - tGlobalBmiBtStruct.bConnected = BMI_BT_NOTCONNECTED; - } - else - { - TRACE_FUNCTION("BMI_BT_Trace BMI_SwitchAudioToBtHeadset ON"); - tGlobalBmiBtStruct.bConnected = BMI_BT_CONNECTED; - } - - //send the status to AS layer. - as_bt_cfg(connected, NULL); - return connected; -} -/* ========================================================================== */ -/** -* @fn BMI_NotifyBtEvent : Informs BMI of any events triggered by the BT headset. -* @Description : This function is called by BT to notify MMI of any events in the headset. -* MMI translates these events to corresponding keypad events and posts the event to itself. -* -* @param [in] BtAppEvent event -* The events that are recognised by MMI are -* BT_EVENT_USER_PLAY - user has pressed play on handset, or resume. -* BT_EVENT_USER_STOP - user has pressed stop on handset. -* BT_EVENT_USER_PAUSE - user has pressed pause on handset. -* -* @return none -* -* @see mfw_bt_api.h -*/ -/* ========================================================================== */ - -void BMI_NotifyBtEvent(BtAppEvent event) -{ - U8 key_state, key_code; - int nPresses; - TRACE_FUNCTION("BMI_BT_Trace BMI_NotifyBtEvent Enter"); - if(tGlobalBmiBtStruct.bConnected != BMI_BT_NOTCONNECTED) - { - key_state = KEY_STAT_PRS; - - TRACE_FUNCTION("BMI_BT_Trace BMI_NotifyBtEvent - BT connected"); - switch(event) - { - case BT_EVENT_USER_PLAY: - TRACE_FUNCTION("Play"); - if(tGlobalBmiBtStruct.tAudioState == FM_AUD_PAUSE - && mmi_progress_bar==1) - key_code = 0x0D; - else if (tGlobalBmiBtStruct.tAudioState == FM_AUD_STOP || - tGlobalBmiBtStruct.tAudioState == FM_AUD_NONE) - key_code = 0x17; - else - goto EXIT; - break; - case BT_EVENT_USER_STOP: - TRACE_FUNCTION("Stop"); - if(tGlobalBmiBtStruct.tAudioState == FM_AUD_PLAY - && mmi_progress_bar==0) - key_code = 0x17; - else if(tGlobalBmiBtStruct.tAudioState != FM_AUD_NONE - && mmi_progress_bar==1) - key_code = 0x0E; - else - goto EXIT; - break; - case BT_EVENT_USER_PAUSE: - TRACE_FUNCTION("Pause"); - if(tGlobalBmiBtStruct.tAudioState == FM_AUD_PLAY - && mmi_progress_bar == 1 ) - key_code = 0x0D; - else - goto EXIT; - break; - - /* OMAPS00151698 x0056422 */ - default : - goto EXIT; - break; - } - - //set the indication that this command came from BT and not handset - tGlobalBmiBtStruct.tCmdSrc = BMI_BT_HEADSET_COMMAND; - - // - //Add keypress to queue of key presses - nPresses = kbd_getNumElements(); - kbd_putMakeAndKey( (char)key_state, (char)key_code); - /*also send a key release indicaiton for the same key. - If this is not done, the key press becomes a long press and is - handled differently */ - key_state = KEY_STAT_REL; - kbd_putMakeAndKey( (char)key_state, (char)key_code); - if ((!kbd_stillProcessingKeys()) && (nPresses == 0)) - { //Only this element present - create and send message. - - sendKeyInd(key_code, KEY_STAT_PRS, 0); - } - if ((!kbd_stillProcessingKeys()) && (nPresses == 0)) - { //Only this element present - create and send message. - - sendKeyInd(key_code, KEY_STAT_REL, 0); - } - } -EXIT: - return; -} - -/* ========================================================================== */ -/** -* @fn BMI_RegisterEventCallback : BT calls this function to register a callback with MMI -* Whenever there is a -* -* @param [in] BtAppEvent event -* The events that are recognised by MMI are -* BT_EVENT_USER_PLAY - user has pressed play on handset, or resume. -* BT_EVENT_USER_STOP - user has pressed stop on handset. -* BT_EVENT_USER_PAUSE - user has pressed pause on handset. -* -* @return none -* -* @see mfw_bt_api.h -*/ -/* ========================================================================== */ -void BMI_RegisterEventCallback(BmiEventCallback eventCallback) -{ - TRACE_FUNCTION("BMI_RegisterEventCallback"); - tGlobalBmiBtStruct.BmiEventCallback = eventCallback; - return; -} -#endif //FF_MMI_A2DP_AVRCP - diff -r 83c6933e8f90 -r 73fd75652066 src/ui/mfw/mfw_bt_api.h --- a/src/ui/mfw/mfw_bt_api.h Tue Jan 19 05:29:26 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,156 +0,0 @@ -/*******************************************************************************\ -* * -* TEXAS INSTRUMENTS ISRAEL PROPRIETARY AND CONFIDENTIAL INFORMATION * -* * -* LEGAL NOTE: THE TRANSFER OF THE TECHNICAL INFORMATION IS BEING MADE * -* UNDER AN EXPORT LICENSE ISSUED BY THE ISRAELI GOVERNMENT AND THAT THE * -* APPLICABLE EXPORT LICENSE DOES NOT ALLOW THE TECHNICAL INFORMATION TO * -* BE USED FOR THE MODIFICATION OF THE BT ENCRYPTION OR THE DEVELOPMENT * -* OF ANY NEW ENCRYPTION. THE INFORMATION CAN BE USED FOR THE INTERNAL * -* DESIGN AND MANUFACTURE OF TI PRODUCTS THAT WILL CONTAIN THE BT IC. * -* * -\*******************************************************************************/ -/*******************************************************************************\ -* -* FILE NAME: mfw_bt_api.h -* -* DESCRIPTION: This file defines the API between BMI (MMI) and BT applications -* -* AUTHOR: Uzi Doron -* -* Rev 0.2 -* -\*******************************************************************************/ - - -#ifndef __MFW_BT_API -#define __MFW_BT_API -/**********************************************/ -/* */ -/* */ -/* from here on - events from BMI to BT */ -/* */ -/* */ -/**********************************************/ - -/*------------------------------------------------------------------------------- - * BmiAvEvent type - * - * Defines Audio/Video events initiated by MMI side. - * These events will be sent from BMI to BT - * - */ -typedef enum -{ -BMI_EVENT_USER_PLAY = 0x0001, /* user pressed Play on handset */ -BMI_EVENT_USER_STOP, /* user pressed Stop on handset */ -BMI_EVENT_USER_PAUSE, /* user pressed Pause on handset */ -BMI_EVENT_USER_RESUME, /* user pressed Resume on handset */ -BMI_EVENT_TRACK_START, /* a track is starting to play */ -BMI_EVENT_TRACK_END /* a track ended playing */ -}BmiAvEvent; - -/*------------------------------------------------------------------------------- - * BmiEventCallback type - * - * A callback function, implemented at BT application, that will be called by - * BMI to send events (of type BmiAvEvent) to BT. BMI will be able to send events - * after BT has registered such an event callback function - * - * At BT side the function prototype will look like: - * void BT_NotifyBmiEvent(BmiAvEvent event); - * - * NOTE: Since the callback is called from BMI context, the BT application should - * not spend considerable time in this function. In case significant processing - * time and/or asynchronous activity is required as a result of calling this function, - * the BT application should switch to its own context to perform this activity. - * It must not block the BMI application. -*/ -typedef void (*BmiEventCallback)(BmiAvEvent event); - -/*------------------------------------------------------------------------------- - * BMI_RegisterEventCallback() - * - * BT application will call this function to register an event callback - * function with BMI. - * - * Parameters: - * eventCallback [in] - pointer of the callback function. if this parameter is - * NULL (0), BMI should not try to make callbacks. - * - * Returns: - * void - * - */ -void BMI_RegisterEventCallback(BmiEventCallback eventCallback); - - - -/**********************************************/ -/* */ -/* */ -/* from here on - events from BT to BMI */ -/* */ -/* */ -/**********************************************/ - -/*------------------------------------------------------------------------------- - * BtAppEvent type - * - * Defines events initiated by BT side. - * These events will be sent from BT to BMI - */ -typedef enum -{ -BT_EVENT_USER_PLAY = 0x0044, /* user pressed Play on BT headset */ -BT_EVENT_USER_STOP, /* user pressed Stop on BT headset */ -BT_EVENT_USER_PAUSE /* user pressed Pause on BT headset */ -}BtAppEvent; - -/*------------------------------------------------------------------------------- - * BMI_NotifyBtEvent() - * - * Notify the BMI about an A/V event initiated at BT side. - * This function is implemented in the BMI application and used by the BT application. - * - * NOTE: Since it is called from BT context, the BMI application should not spend - * considerable time in this function. In case significant processing time and/or - * asynchronous activity is required as a result of calling this function, the BMI - * application should switch to its own context to perform this activity. It must - * not block the BT application. - * - * Parameters: - * event [in] - the reported event - * - * Returns: - * void - * - */ -void BMI_NotifyBtEvent(BtAppEvent event); - -/*------------------------------------------------------------------------------- - * BMI_SwitchAudioToBtHeadset() - * - * Connect or disconnect the audio output to BT headset. - * BT will call this function to let BMI know an A2DP link to a wireless headset - * has been connected (and is in Open state), or disconnected. - * - * When link is connected, BMI will decide whether it wants to - * direct the audio output to the wireless headset. - * - * Parameters: - * connected [in] - whether the link has just been connected or disconnected: - * TRUE - connected - * FALSE - disconnected - * - * Returns: - * when connect parameter is TRUE: - * - return TRUE when BMI approves and will use A2DP headset as the audio output - * - return FALSE when BMI rejects using A2DP headset as the audio output - * - * when connect parameter is FALSE - returned value is ignored - * - */ -BOOL BMI_SwitchAudioToBtHeadset(BOOL connected); -#endif /* __MFWE_BT_API */ - diff -r 83c6933e8f90 -r 73fd75652066 src/ui/mfw/mfw_bt_private.h --- a/src/ui/mfw/mfw_bt_private.h Tue Jan 19 05:29:26 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -/*******************************************************************************\ -* * -* TEXAS INSTRUMENTS ISRAEL PROPRIETARY AND CONFIDENTIAL INFORMATION * -* * -* LEGAL NOTE: THE TRANSFER OF THE TECHNICAL INFORMATION IS BEING MADE * -* UNDER AN EXPORT LICENSE ISSUED BY THE ISRAELI GOVERNMENT AND THAT THE * -* APPLICABLE EXPORT LICENSE DOES NOT ALLOW THE TECHNICAL INFORMATION TO * -* BE USED FOR THE MODIFICATION OF THE BT ENCRYPTION OR THE DEVELOPMENT * -* OF ANY NEW ENCRYPTION. THE INFORMATION CAN BE USED FOR THE INTERNAL * -* DESIGN AND MANUFACTURE OF TI PRODUCTS THAT WILL CONTAIN THE BT IC. * -* * -\*******************************************************************************/ -/*******************************************************************************\ -* -* FILE NAME: mfw_bt_Private.h -* -* DESCRIPTION: This file defines the structures needed for BMI BT interface -* that are not exposed to BT -* -* AUTHOR: Anandhi Ramesh -* -* Rev 0.1 -* -\*******************************************************************************/ -#ifndef __MFW_BT_PRIVATE -#define __MFW_BT_PRIVATE -#include "mfw_fm.h" -#include "mfw_bt_api.h" - -#define BMI_BT_NOTCONNECTED 0 -#define BMI_BT_CONNECTED 1 - -/*---------------------------------------------------------------------------*/ -/* - * BMI_BT_CMD_SRCTYPE -* Contains the types of commands that can occur. - */ -/*---------------------------------------------------------------------------*/ -typedef enum -{ - BMI_BT_COMMAND_NONE = 0, - BMI_BT_HANDSET_COMMAND, - BMI_BT_HEADSET_COMMAND -}BMI_BT_CMD_SRCTYPE; - -/*---------------------------------------------------------------------------*/ -/* - * BMI_BT_STRUCTTYPE - * Global structure that contains the following information - * Connection status - * State of audio - play/pause/stop etc - * Source of the command - could be from headset or handset - * callback function for BT - */ -/*---------------------------------------------------------------------------*/ -typedef struct -{ - BOOL bConnected; - T_FM_AUD_STATE tAudioState; - BMI_BT_CMD_SRCTYPE tCmdSrc; - void (*BmiEventCallback)(BmiAvEvent); -}BMI_BT_STRUCTTYPE; - -#endif // __MFW_BT_PRIVATE - - diff -r 83c6933e8f90 -r 73fd75652066 src/ui/mfw/mfw_fm.c --- a/src/ui/mfw/mfw_fm.c Tue Jan 19 05:29:26 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3128 +0,0 @@ -#ifdef FF_MMI_FILEMANAGER -/* ========================================================= -* Texas Instruments OMAP(TM) Platform Software -* (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. -* -* Use of this software is controlled by the terms and conditions found -* in the license agreement under which this software has been supplied. -* ========================================================== */ - -/*========================================================== -* @file mfw_fmc -* -* This provides the functionality of File Manager Applications. -* It supports file/Directory related operations on NOR, NAND and MMC -* -* @path \bmi\condat\ms\src\mfw -* -* @rev 00.01 -*/ -/* ========================================================== */ -/*=========================================================== -*! -*! Revision History -*! =================================== - - Nov 12 2007 DRT :OMAPS00144861 x0056422 - Description: MM: There are some issues with resume and stop - callback in BT MMI code. - - - Aug 27, 2007 REF:DRT OMAPS00137370 x0045876 - Description: MM: MIDI/IMY file is not played correctly after listening a - MP3 in the Browse Midi list. - Solution: Param Voice_Limit is changed when MP3 or AAC file is played. So before - playing MP3 or AAC file, Voice_Limit should be saved. - - Jul 04, 2007 DRT:OMAPS00135749 x0062174(Nimitha) - Description: Once the audio file has finished automatically play button has to be pressed twice, - in order to be played again. - Solution : The global variable aud_state_status is set to AUD_FM_NONE once the file playing stopped. - - April 27, 2007 DRT:OMAPS00128836 x0073106 - Description: Unexpected behavior when copying images with the same names from a memory to another. - Solution:In mfw_fm_copy_start () added a if condition if(rfs_stat() && image file). - - Apr 10, 2007 DRT: OMAPS00125309 x0039928 - Description: MM - Mono option does not work => MMI changes required - Solution: Selected Output channel from the settings menu is set for all the players. - - Apr 06, 2007 DRT: OMAPS00124877 x0039928 - Description: MM: Voice limit Options doesn't work - Solution: voice limit value is taken from the global variable set by menu options. - - Mar 28, 2007 ER: OMAPS00106188 x0039928 - Description: Align Midi application menu choices and audio Player menu choices - - Mar 15, 2007 DRT: OMAPS00120201 x0039928 - Description: JPEG dir not created in FFS in N5.23 pre release - Solution: The directories are created after format for NOR-MS, NAND and T-FLASH - -*! 10-Apr-2006 mf: Modified x0020906. Change required per SRxxxx -*! to provide File Manager Functionality. -*! -*! -*! 17-Jan-2006 mf: Revisions appear in reverse chronological order; -*! that is, newest first. The date format is dd-Mon-yyyy. -* =========================================================== */ - -/****************************************************************************** - Include Files -*******************************************************************************/ -#define ENTITY_MFW - -#include -#include -#include - -#define FF_MMI_RFS_ENABLED - -#if defined (NEW_FRAME) - -#include "typedefs.h" -#include "vsi.h" -#include "pei.h" -#include "custom.h" -#include "gsm.h" - -#else - -#include "STDDEFS.H" -#include "custom.h" -#include "gsm.h" -#include "vsi.h" - -#endif - - -#include "mfw_mfw.h" -#include "mfw_phb.h" -#include "mfw_phbi.h" -#include "mfw_cm.h" -#include "mfw_cmi.h" - -#include "mfw_nm.h" -#include "mfw_sim.h" -#include "mfw_sima.h" -#include "mfw_nmi.h" -#include "mfw_simi.h" -#include "mfw_sms.h" -#include "mfw_smsi.h" -#include "mfw_win.h" - -#include "ksd.h" -#include "psa.h" - -#if defined (FAX_AND_DATA) -#include "aci_fd.h" -#endif - -//#ifdef FF_MMI_RFS_ENABLED -#include "rfs/rfs_api.h" -//#else -#include "ffs/ffs_api.h" -//#endif - -#include "message.h" -#include "prim.h" -#include "aci_cmh.h" - -#include "cmh.h" -#include "phb.h" -#include "cmh_phb.h" - -#include "mfw_ss.h" -#include "mfw_ssi.h" -#include "mfw_win.h" - -#include "gdi.h" -#include "prim.h" -#ifndef PCM_2_FFS -#include "pcm.h" -#endif - -#ifdef FF_MMI_MIDI_FORMAT -#include "bae/bae_options.h" -#endif - -#include "mfw_fm.h" -/**********************NOTE*************************** -FFS header To be replaced with FS Abstraction Header -******************************************************/ - -#ifdef FF_MMI_A2DP_AVRCP -#include "mfw_bt_api.h" -#include "mfw_bt_private.h" -#endif - - -#ifdef INT_PHONEBOOK -#include "ATBPbGI.h" -#endif -/******************************************************************************* - - Defines - -*******************************************************************************/ -EXTERN MfwHdr * current_mfw_elem; -static MSL_HANDLE msl_handle; -static T_RV_RETURN_PATH fm_aud_return_path; -T_MFW_AUD_PARA para_aud; -extern UBYTE mfw_player_playback_loop_flag; -extern T_AS_PLAYER_PARAMS player_para; -extern INT16 player_channel; -extern int aud_state_status; - - -/* OMAPS00151698, x0056422 */ -#ifdef FF_MMI_A2DP_AVRCP -extern BMI_BT_STRUCTTYPE tGlobalBmiBtStruct; -#endif -//Daisy tang added for Real Resume feature 20071107 -//start -BOOL isPlayer_Real_Pause = FALSE; -UINT32 last_file_size_played = 0; -char last_inputFileName[FM_MAX_DIR_PATH_LENGTH]; -T_WCHAR last_inputFileName_uc[FM_MAX_DIR_PATH_LENGTH]; -T_AS_PLAYER_TYPE last_file_type; -BOOL last_play_bar; -UINT32 last_para_aud_pt; -//end - - -/******************************************************************************* - - Local prototypes - -*******************************************************************************/ - -void Msl_mslil_Callback(void* handle, U32 ucp_type, U32 tCMd, U32 tStatus); -void mfw_fm_audPlay_cb(void *parameter); -void mfw_fm_signal(T_MFW_EVENT event, void *para); -BOOL mfw_fm_sign_exec (T_MFW_HDR * cur_elem, T_MFW_EVENT event, T_MFW_FM_PARA * para); -/* June 28, 2007 DRT: OMAPS00135749 x0062174 */ -EXTERN void mmi_set_aud_state_status( T_FM_AUD_STATE status); - - -/******************************************************************************* - $Function: mfw_fm_create - - $Description: This function initialises an Mfw fm entity and adds it to the Window Stack - - $Returns: T_MFW_HND : A handle for the entity - - $Arguments: hWin : Parent Window Handle - event : Event Mask of the events to be handled - cbfunc : Callback function to handle the events -*******************************************************************************/ -T_MFW_HND mfw_fm_create(T_MFW_HND hWin, T_MFW_EVENT event, T_MFW_CB cbfunc) -{ - T_MFW_HDR *hdr; - T_MFW_FM *fm_para; - - TRACE_FUNCTION("mfw_FM_create()"); - - hdr = (T_MFW_HDR *) mfwAlloc(sizeof (T_MFW_HDR)); - fm_para = (T_MFW_FM *) mfwAlloc(sizeof (T_MFW_FM)); - - if (!hdr OR !fm_para) - return FALSE; - - /* - * initialisation of the handler - */ - fm_para->emask = event; - fm_para->handler = cbfunc; - - hdr->data = fm_para; - hdr->type = MfwTypfm; - - /* - * installation of the handler - */ - return mfwInsert((T_MFW_HDR *)hWin, hdr); -} - -/******************************************************************************* - - $Function: mfw_fm_delete - - $Description: This function clears down an Mfw entity and removes it from the - Window Stack - - $Returns: T_MFW_RES : The result of the function - - $Arguments: T_MFW_HND : The Handle of the entity to be removed - -*******************************************************************************/ -T_MFW_RES mfw_fm_delete(T_MFW_HND hnd) -{ - TRACE_FUNCTION("mfw_FM_delete()"); - - if (!hnd OR !((T_MFW_HDR *)hnd)->data) - return MFW_RES_ILL_HND; - - if (!mfwRemove((T_MFW_HDR *)hnd)) - return MFW_RES_ILL_HND; - - mfwFree((U8 *)(((T_MFW_HDR *) hnd)->data),sizeof(T_MFW_FM)); - mfwFree((U8 *)hnd,sizeof(T_MFW_HDR)); - - return MFW_RES_OK; -} - -/******************************************************************************* - - $Function: mfw_fm_sign_exec - - $Description: This function sends the Mfw FM events from the Mfw to the BMI. - - $Returns: None - - $Arguments: None - -*******************************************************************************/ -BOOL mfw_fm_sign_exec (T_MFW_HDR * cur_elem, T_MFW_EVENT event, T_MFW_FM_PARA * para) -{ - TRACE_FUNCTION("mfw_fm_sign_exec()"); - - - while (cur_elem) - { - /* - * event handler is available - */ - if (cur_elem->type EQ MfwTypfm) - { - T_MFW_FM * fm_data; - TRACE_EVENT("MfwTyFm"); - /* - * handler is FM management handler - */ - fm_data = (T_MFW_FM *)cur_elem->data; - if (fm_data->emask & event) - { - /* - * event is expected by the call back function - */ - fm_data->event = event; - switch (event) - { - /* - ** Generic Events - */ - case E_FM_THMB_INIT: - case E_FM_THMB_DEINIT: - case E_FM_THMB_GEN: - case E_FM_IMG_INIT: - case E_FM_IMG_DRAW: - case E_FM_IMG_DEINIT: - case E_FM_AUDIO_STOP: - if(para!=NULL) - memcpy (&fm_data->para, para, sizeof (T_MFW_FM_PARA)); - break; - } - /* - * if call back defined, call it - */ - if (fm_data->handler) - { - // store current mfw elem - current_mfw_elem = cur_elem; - if ((*(fm_data->handler)) (fm_data->event, (void *)&fm_data->para)) - return TRUE; - } - } - } - cur_elem = cur_elem->next; - } - return FALSE; -} - -/******************************************************************************* - - $Function: mfw_FM_signal - - $Description: This function sends the Mfw events from the Mfw to the BMI. - - $Returns: None - - $Arguments: T_MFW_EVENT : The event to be sent to the BMI - void * : Pointer to the Event data - -*******************************************************************************/ -void mfw_fm_signal(T_MFW_EVENT event, void *para) -{ - UBYTE temp; - temp = dspl_Enable(0); - - TRACE_FUNCTION("mfw_FM_signal()"); - - if (mfwSignallingMethod EQ 0) - { - /* - * focus is on a window - */ - if (mfwFocus) - { - /* - * send event to sim management - * handler if available - */ - if (mfw_fm_sign_exec (mfwFocus, event, para)) - { - dspl_Enable(temp); - return; - } - } - /* - * actual focussed window is not available - * or has no network management registration - * handler, then search all nodes from the root. - */ - if (mfwRoot) - mfw_fm_sign_exec (mfwRoot, event, para); - } - else - { - MfwHdr * h = 0; - /* - * Focus set, then start here - */ - if (mfwFocus) - h = mfwFocus; - /* - * Focus not set, then start root - */ - if (!h) - h = mfwRoot; - /* - * No elements available, return - */ - while (h) - { - /* - * Signal consumed, then return - */ - if (mfw_fm_sign_exec (h, event, para)) - { - dspl_Enable(temp); - return; - } - /* - * All windows tried inclusive root - */ - if (h == mfwRoot) - { - dspl_Enable(temp); - return; - } - /* - * get parent window - */ - h = mfwParent(mfwParent(h)); - - if (h) - h = ((MfwWin * )(h->data))->elems; - } - - mfw_fm_sign_exec (mfwRoot, event, para); - - } - dspl_Enable(temp); - return; -} - -/******************************************************************************* - $Function: mfw_fm_readDir - - $Description: Reads the objects from the given directory - - $Returns: FM_DIR_DOESNOTEXISTS/FM_READDIR_ERROR/FM_NO_ERROR - - $Arguments: dir_path : Current Directory Path - dir_name : Current Directory Name - num_objs : num of obejcts - obj_list : object list - source : Current Drive -*******************************************************************************/ -T_MFW_FM_STATUS mfw_fm_readDir(char *dir_path, char *dir_name, UBYTE *num_objs, T_FM_OBJ **obj_list, T_FM_DEVICE_TYPE source, T_FM_APP_TYPE app) -{ - char curDir[FM_MAX_DIR_PATH_LENGTH]; - /* x0083025 - OMAPS00156759 - Jan 29, 2008 */ -#if defined(FF_MMI_UNICODE_SUPPORT)||defined (FF_MMI_RFS_ENABLED) - T_WCHAR objName_uc[FM_MAX_OBJ_NAME_LENGTH]; - T_WCHAR curObj_uc[FM_MAX_DIR_PATH_LENGTH]; -#else - char objName_u8[FM_MAX_OBJ_NAME_LENGTH]; -#endif - -#ifdef FF_MMI_RFS_ENABLED - char ext1[FM_MAX_EXT_LENGTH]; - T_RFS_DIR f_dir; - UINT16 curDir_uc[FM_MAX_DIR_PATH_LENGTH]; - T_RFS_RET result; - T_RFS_STAT f_stat; -#else - T_FFS_DIR f_dir; -#endif - int iCount=0; - - TRACE_FUNCTION("mfw_fm_readDir"); - - *num_objs = 0; - memset(curDir, 0, FM_MAX_DIR_PATH_LENGTH); -#ifdef FF_MMI_RFS_ENABLED - switch (source) - { - case FM_NOR_FLASH: - sprintf(curDir,"%s%s%s","/FFS",dir_path,dir_name); - TRACE_EVENT_P1("Current Dir %s",curDir); - break; - case FM_NORMS_FLASH: - sprintf(curDir,"%s%s%s","/NOR",dir_path,dir_name); - TRACE_EVENT_P1("Current Dir %s",curDir); - break; - case FM_NAND_FLASH: - sprintf(curDir,"%s%s%s","/NAND",dir_path,dir_name); - TRACE_EVENT_P1("Current Dir %s",curDir); - break; - case FM_T_FLASH: - sprintf(curDir,"%s%s%s","/MMC",dir_path,dir_name); - TRACE_EVENT_P1("Current Dir %s",curDir); - break; - default: - TRACE_EVENT("Default: Invalid value"); - break; - } - - convert_u8_to_unicode((const char *)curDir, curDir_uc); - if (rfs_opendir (curDir_uc, &f_dir) < 0) - { - TRACE_EVENT_P1("Opening dir %s Failed",curDir); - return FM_DIR_DOESNOTEXISTS; - } - - for (iCount = 0; rfs_readdir (&f_dir, objName_uc, FM_MAX_OBJ_NAME_LENGTH) > 0x0; ) - { - if (objName_uc[0] == '\0') - { - return FM_READDIR_ERROR; - } - if( objName_uc[0] != '.' ) - { - /* x0083025 - OMAPS00156759 - Jan 29, 2008 */ - wstrcpy(curObj_uc, curDir_uc); - { // append '/' char to the end of string - T_WCHAR *tmp = curObj_uc; - while (*tmp) ++tmp; - *tmp++ = '/'; - *tmp = 0; - } - wstrcat(curObj_uc, objName_uc); - - result= rfs_stat(curObj_uc, &f_stat); - - if(result == RFS_EOK) - { - if(f_stat.file_dir.mode & RFS_IXUSR) - { - obj_list[iCount] = (T_FM_OBJ*)mfwAlloc(sizeof(T_FM_OBJ)); - - /* x0083025 - OMAPS00156759 - Jan 29, 2008 */ - #ifdef FF_MMI_UNICODE_SUPPORT - wstrcpy(obj_list[iCount]->name_uc, objName_uc); - TRACE_EVENT_P1("%s", obj_list[iCount]->name_uc); - #endif - convert_unicode_to_u8(objName_uc, obj_list[iCount]->name); - TRACE_EVENT_P1("%s", obj_list[iCount]->name); - (*num_objs)++; - iCount++; - if((*num_objs) >= FM_MAX_OBJ ) - { - TRACE_EVENT("MAX COUNT Reached"); - if(source == FM_NOR_FLASH) - rfs_closedir(&f_dir); - return FM_NO_ERROR; - } - } - else - { - /* x0083025 - OMAPS00156759 - Jan 29, 2008 */ - convert_unicode_to_u8(wstrchr(objName_uc,'.')+1, ext1); - - if(ext1) - { - switch(app) - { - case FM_IMAGE: - if(strcmp(ext1, "jpg") == 0) - { - obj_list[iCount] = (T_FM_OBJ*)mfwAlloc(sizeof(T_FM_OBJ)); - - /* x0083025 - OMAPS00156759 - Jan 29, 2008 */ - convert_unicode_to_u8(objName_uc, obj_list[iCount]->name); - - TRACE_EVENT_P1("%s", obj_list[iCount]->name); - (*num_objs)++; - iCount++; - if((*num_objs) >= FM_MAX_OBJ ) - { - TRACE_EVENT("MAX COUNT Reached"); - if(source == FM_NOR_FLASH) - rfs_closedir(&f_dir); - return FM_NO_ERROR; - } - } - break; - case FM_AUDIO: - if( - -#ifdef FF_MP3_RINGER - (strcmp(ext1, "mp3") == 0) -#else - (0) -#endif -#ifdef FF_AAC_RINGER - || (strcmp(ext1, "aac") == 0) -#else - || (0) -#endif - -#ifdef FF_MMI_MIDI_FORMAT - -#ifdef PAL_ENABLE_XMF - || (strcmp(ext1, "xmf") == 0) -#else - || (0) -#endif -#ifdef PAL_ENABLE_IMELODY - || (strcmp(ext1, "imy") == 0) -#else - || (0) -#endif -#ifdef PAL_ENABLE_SMAF_MA3 - || (strcmp(ext1, "mmf") == 0) -#else - || (0) -#endif -#ifdef PAL_ENABLE_XMF - || (strcmp(ext1, "mxmf") == 0) -#else - || (0) -#endif -#ifdef PAL_ENABLE_SMS - || (strcmp(ext1, "sms") == 0) -#else - || (0) -#endif -#ifdef PAL_ENABLE_DIGITAL_AUDIO - || (strcmp(ext1, "wav") == 0) -#else - || (0) -#endif -#ifdef PAL_ENABLE_MIDI_NORMALIZER - || (strcmp(ext1, "mid") == 0) -#else - || (0) -#endif - -#endif - ) - - { - obj_list[iCount] = (T_FM_OBJ*)mfwAlloc(sizeof(T_FM_OBJ)); - /* x0083025 - OMAPS00156759 - Jan 29, 2008 */ - #ifdef FF_MMI_UNICODE_SUPPORT - wstrcpy(obj_list[iCount]->name_uc, objName_uc); - TRACE_EVENT_P1("%s", obj_list[iCount]->name_uc); - #else - convert_unicode_to_u8(objName_uc, obj_list[iCount]->name); - TRACE_EVENT_P1("%s", obj_list[iCount]->name); - #endif - (*num_objs)++; - iCount++; - if((*num_objs) >= FM_MAX_OBJ ) - { - TRACE_EVENT("MAX COUNT Reached"); - if(source == FM_NOR_FLASH) - rfs_closedir(&f_dir); - return FM_NO_ERROR; - } - } - break; - } - } - } - } - } - } - TRACE_EVENT_P2("Dir %s contains %d Objects",curDir,iCount); - if(source == FM_NOR_FLASH) - rfs_closedir(&f_dir); -#else - sprintf(curDir,"%s%s",dir_path,dir_name); - TRACE_EVENT_P1("Current Dir %s",curDir); - - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - if (ffs_opendir (curDir, &f_dir) < 0) - { - TRACE_EVENT_P1("Opening dir %s Failed",curDir); - return FM_DIR_DOESNOTEXISTS; - } - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - for (iCount = 0; ffs_readdir (&f_dir, objName_u8, FM_MAX_OBJ_NAME_LENGTH) > 0x0; iCount++) - { - if (objName_u8[0] == '\0') - { - return FM_READDIR_ERROR; - } - if( objName_u8[0] != '.' ) - { - obj_list[iCount] = (T_FM_OBJ*)mfwAlloc(sizeof(T_FM_OBJ)); - strcpy(obj_list[iCount]->name, objName_u8); - TRACE_EVENT_P1("%s", obj_list[iCount]->name); - (*num_objs)++; - if((*num_objs) >= FM_MAX_OBJ ) - { - TRACE_EVENT("MAX COUNT Reached"); - break; - } - } - } - TRACE_EVENT_P2("Dir %s contains %d Objects",curDir,iCount); -#endif - - - return FM_NO_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_rename - - $Description: Renames the selcted object with the new name - - $Returns: FM_RENAME_ERROR/FM_NO_ERROR - - $Arguments: old_filename : Old filename - new_filename : New filename - source : Current Drive -*******************************************************************************/ -#ifdef FF_MMI_UNICODE_SUPPORT -T_MFW_FM_STATUS mfw_fm_rename(T_WCHAR* old_filename, T_WCHAR* new_filename, T_FM_DEVICE_TYPE source) -#else -T_MFW_FM_STATUS mfw_fm_rename(char* old_filename, char * new_filename, T_FM_DEVICE_TYPE source) -#endif -{ - -#ifdef FF_MMI_RFS_ENABLED - T_RFS_RET rfsResult; - char old_filename_mt[FM_MAX_DIR_PATH_LENGTH]; - char new_filename_mt[FM_MAX_DIR_PATH_LENGTH]; - UINT16 new_filename_uc[FM_MAX_DIR_PATH_LENGTH]; - UINT16 old_filename_uc[FM_MAX_DIR_PATH_LENGTH]; -#else - -#if defined(FF_MMI_UNICODE_SUPPORT) && !defined(FF_MMI_RFS_ENABLED) - char old_filename_u8[FM_MAX_DIR_PATH_LENGTH]; - char new_filename_u8[FM_MAX_DIR_PATH_LENGTH]; -#endif - - T_FFS_RET ffsResult; -#endif - - TRACE_FUNCTION("mfw_fm_rename"); - -#ifdef FF_MMI_RFS_ENABLED - switch (source) - { - case FM_NOR_FLASH: - strcpy(old_filename_mt, "/FFS"); - strcpy(new_filename_mt, "/FFS"); - break; - case FM_NORMS_FLASH: - strcpy(old_filename_mt, "/NOR"); - strcpy(new_filename_mt, "/NOR"); - break; - case FM_NAND_FLASH: - strcpy(old_filename_mt, "/NAND"); - strcpy(new_filename_mt, "/NAND"); - break; - case FM_T_FLASH: - strcpy(old_filename_mt, "/MMC"); - strcpy(new_filename_mt, "/MMC"); - break; - } - -#ifdef FF_MMI_UNICODE_SUPPORT - convert_u8_to_unicode(old_filename_mt,old_filename_uc); - convert_u8_to_unicode(new_filename_mt, new_filename_uc); - wstrcat(old_filename_uc, old_filename); - wstrcat(new_filename_uc, new_filename); -#else - strcat(old_filename_mt, old_filename); - strcat(new_filename_mt, new_filename); - convert_u8_to_unicode(old_filename_mt,old_filename_uc); - convert_u8_to_unicode(new_filename_mt, new_filename_uc); -#endif - - rfsResult = rfs_rename(old_filename_uc, new_filename_uc); - if(rfsResult != RFS_EOK) - { - return FM_RENAME_ERROR; - } -#else - -#ifdef FF_MMI_UNICODE_SUPPORT - convert_unicode_to_u8(old_filename, old_filename_u8); - convert_unicode_to_u8(new_filename, new_filename_u8; - - ffsResult = ffs_rename(old_filename_u8,new_filename_u8); -#else - ffsResult = ffs_rename(old_filename,new_filename); -#endif - if(ffsResult != EFFS_OK) - { - return FM_RENAME_ERROR; - } -#endif - return FM_NO_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_rename_image - - $Description: Renames the selected image and its thumbnail with the new name - - $Returns: FM_RENAME_ERROR/FM_NO_ERROR - - $Arguments: path : Current directory path - dirname : Current Directory name - old_filename : Old filename - new_filename : New filename - source : Current Drive -*******************************************************************************/ -T_MFW_FM_STATUS mfw_fm_rename_image(char * path, char * dirname, char* old_filename, char * new_filename, T_FM_DEVICE_TYPE source) -{ - T_MFW_FM_STATUS ffsResult; - char t_oldfilename[FM_MAX_DIR_PATH_LENGTH]; - char t_newfilename[FM_MAX_DIR_PATH_LENGTH]; - -#ifdef FF_MMI_UNICODE_SUPPORT - T_WCHAR oldfilename_uc[FM_MAX_DIR_PATH_LENGTH]; - T_WCHAR newfilename_uc[FM_MAX_DIR_PATH_LENGTH]; -#endif - - TRACE_FUNCTION("mfw_fm_rename_image"); - -#ifdef FF_MMI_RFS_ENABLED - - sprintf(t_oldfilename,"%s%s/%s.jpg",path,dirname,old_filename); - sprintf(t_newfilename,"%s%s/%s.jpg",path,dirname,new_filename); -/* February 8, 2008 DRT:OMAPS00156759 (x0083025) For Unicode Support--> Start*/ - -#ifdef FF_MMI_UNICODE_SUPPORT - convert_u8_to_unicode(t_oldfilename, oldfilename_uc); - convert_u8_to_unicode(t_newfilename, newfilename_uc); - ffsResult = mfw_fm_rename(oldfilename_uc,newfilename_uc,source); -#else - ffsResult = mfw_fm_rename(t_oldfilename,t_newfilename,source); -#endif - if(ffsResult != FM_NO_ERROR) - { - return FM_RENAME_ERROR; - } - switch(source) - { - case FM_NOR_FLASH: - sprintf(t_oldfilename,"%s%s/%s.tmb",NORDIR,THUMB,old_filename); - sprintf(t_newfilename,"%s%s/%s.tmb",NORDIR,THUMB,new_filename); - break; - case FM_NORMS_FLASH: - sprintf(t_oldfilename,"%s%s/%s.tmb",NORMSDIR,THUMB,old_filename); - sprintf(t_newfilename,"%s%s/%s.tmb",NORMSDIR,THUMB,new_filename); - break; - case FM_NAND_FLASH: - sprintf(t_oldfilename,"%s%s/%s.tmb",NANDDIR,THUMB,old_filename); - sprintf(t_newfilename,"%s%s/%s.tmb",NANDDIR,THUMB,new_filename); - break; - case FM_T_FLASH: - sprintf(t_oldfilename,"%s%s/%s.tmb",TFLASHDIR,THUMB,old_filename); - sprintf(t_newfilename,"%s%s/%s.tmb",TFLASHDIR,THUMB,new_filename); - break; - } - -#ifdef FF_MMI_UNICODE_SUPPORT - convert_u8_to_unicode(t_oldfilename, oldfilename_uc); - convert_u8_to_unicode(t_newfilename, newfilename_uc); - ffsResult = mfw_fm_rename(oldfilename_uc,newfilename_uc,source); -#else - ffsResult = mfw_fm_rename(t_oldfilename,t_newfilename,source); -#endif - if(ffsResult != FM_NO_ERROR) - { - return FM_RENAME_ERROR; - } -#else - sprintf(t_oldfilename,"%s%s/%s.jpg",path,dirname,old_filename); - sprintf(t_newfilename,"%s%s/%s.jpg",path,dirname,new_filename); - - ffsResult = mfw_fm_rename(t_oldfilename,t_newfilename,source); - if(ffsResult != FM_NO_ERROR) - { - return FM_RENAME_ERROR; - } - sprintf(t_oldfilename,"%s%s/%s.tmb",NORDIR,THUMB,old_filename); - sprintf(t_newfilename,"%s%s/%s.tmb",NORDIR,THUMB,new_filename); - - ffsResult = mfw_fm_rename(t_oldfilename,t_newfilename,source); - - if(ffsResult != FM_NO_ERROR) - { - return FM_RENAME_ERROR; - } -#endif - return FM_NO_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_createRootDir - - $Description: Creates the root jpeg, tones directory - - $Returns: FM_NO_ERROR - - $Arguments: source : Current Drive -*******************************************************************************/ -T_MFW_FM_STATUS mfw_fm_createRootDir(T_FM_DEVICE_TYPE source) -{ -#ifdef FF_MMI_RFS_ENABLED - T_RFS_RET ffsResult; - T_RFS_DIR f_dir; - UINT16 dir_path_uc[FM_MAX_DIR_PATH_LENGTH]; -#else - T_FFS_RET ffsResult; - T_FFS_DIR f_dir; -#endif - char dir_path[FM_MAX_DIR_PATH_LENGTH]; - - TRACE_FUNCTION("mfw_fm_createRootDir"); - -#ifdef FF_MMI_RFS_ENABLED - TRACE_EVENT_P1("Source %d",source); - switch (source) - { - case FM_NOR_FLASH: - sprintf(dir_path,"%s%s%s","/FFS",NORDIR,NORDIR_IMG); - convert_u8_to_unicode(dir_path, dir_path_uc); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_opendir(dir_path_uc,&f_dir); - TRACE_EVENT_P2("Opendir - ffsResult %d Dir path %s", ffsResult,dir_path); - if(ffsResult > 0) - rfs_closedir(&f_dir); - else if(RFS_ENOENT == ffsResult) - { - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_mkdir(dir_path_uc, RFS_IRWXU); - TRACE_EVENT_P2("Makedir - ffsResult %d Dir path %s", ffsResult,dir_path); - } - sprintf(dir_path,"%s%s%s","/FFS",NORDIR,THUMB); - convert_u8_to_unicode(dir_path, dir_path_uc); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_opendir(dir_path_uc,&f_dir); - TRACE_EVENT_P2("Opendir - ffsResult %d Dir path %s", ffsResult,dir_path); - if(ffsResult > 0) - rfs_closedir(&f_dir); - else if(RFS_ENOENT == ffsResult) - { - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_mkdir(dir_path_uc, RFS_IRWXU); - TRACE_EVENT_P2("Makedir - ffsResult %d Dir path %s", ffsResult,dir_path); - } - sprintf(dir_path,"%s%s%s","/FFS",NORDIR,NORDIR_AUD); - convert_u8_to_unicode(dir_path, dir_path_uc); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_opendir(dir_path_uc,&f_dir); - TRACE_EVENT_P2("Opendir - ffsResult %d Dir path %s", ffsResult,dir_path); - if(ffsResult > 0) - rfs_closedir(&f_dir); - else if(RFS_ENOENT == ffsResult) - { - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_mkdir(dir_path_uc, RFS_IRWXU); - TRACE_EVENT_P2("Makedir - ffsResult %d Dir path %s", ffsResult,dir_path); - } - break; - case FM_NORMS_FLASH: - sprintf(dir_path,"%s%s%s","/NOR",NORMSDIR,NORMSDIR_IMG); - convert_u8_to_unicode(dir_path, dir_path_uc); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_opendir(dir_path_uc,&f_dir); - TRACE_EVENT_P2("Opendir - ffsResult %d Dir path %s", ffsResult,dir_path); - // if(ffsResult > 0) - // rfs_closedir(&f_dir); - // else - if(RFS_ENOENT == ffsResult) - { - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_mkdir(dir_path_uc, RFS_IRWXU); - TRACE_EVENT_P2("Makedir - ffsResult %d Dir path %s", ffsResult,dir_path); - } - sprintf(dir_path,"%s%s%s","/NOR",NORMSDIR,THUMB); - convert_u8_to_unicode(dir_path, dir_path_uc); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_opendir(dir_path_uc,&f_dir); - TRACE_EVENT_P2("Opendir - ffsResult %d Dir path %s", ffsResult,dir_path); - // if(ffsResult > 0) - // rfs_closedir(&f_dir); - // else - if(RFS_ENOENT == ffsResult) - { - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_mkdir(dir_path_uc, RFS_IRWXU); - TRACE_EVENT_P2("Makedir - ffsResult %d Dir path %s", ffsResult,dir_path); - } - sprintf(dir_path,"%s%s%s","/NOR",NORMSDIR,NORMSDIR_AUD); - convert_u8_to_unicode(dir_path, dir_path_uc); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_opendir(dir_path_uc,&f_dir); - TRACE_EVENT_P2("Opendir - ffsResult %d Dir path %s", ffsResult,dir_path); - // if(ffsResult > 0) - // rfs_closedir(&f_dir); - // else - if(RFS_ENOENT == ffsResult) - { - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_mkdir(dir_path_uc, RFS_IRWXU); - TRACE_EVENT_P2("Makedir - ffsResult %d Dir path %s", ffsResult,dir_path); - } - break; - case FM_NAND_FLASH: - /**********************NOTE*************************** - FS Abstraction API to be added - ******************************************************/ - sprintf(dir_path,"%s%s%s","/NAND",NANDDIR,NANDDIR_IMG); - convert_u8_to_unicode(dir_path, dir_path_uc); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_opendir(dir_path_uc,&f_dir); - TRACE_EVENT_P2("Opendir - ffsResult %d Dir path %s", ffsResult,dir_path); - // if(ffsResult > 0) - // rfs_closedir(&f_dir); -// else - if(RFS_ENOENT == ffsResult) - { - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_mkdir(dir_path_uc, RFS_IRWXU); - TRACE_EVENT_P2("Makedir - ffsResult %d Dir path %s", ffsResult,dir_path); - } - sprintf(dir_path,"%s%s%s","/NAND",NANDDIR,THUMB); - convert_u8_to_unicode(dir_path, dir_path_uc); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_opendir(dir_path_uc,&f_dir); - TRACE_EVENT_P2("Opendir - ffsResult %d Dir path %s", ffsResult,dir_path); - // if(ffsResult > 0) - // rfs_closedir(&f_dir); - // else - if(RFS_ENOENT == ffsResult) - { - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_mkdir(dir_path_uc, RFS_IRWXU); - TRACE_EVENT_P2("Makedir - ffsResult %d Dir path %s", ffsResult,dir_path); - } - sprintf(dir_path,"%s%s%s","/NAND",NANDDIR,NANDDIR_AUD); - convert_u8_to_unicode(dir_path, dir_path_uc); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_opendir(dir_path_uc,&f_dir); - TRACE_EVENT_P2("Opendir - ffsResult %d Dir path %s", ffsResult,dir_path); - // if(ffsResult > 0) - // rfs_closedir(&f_dir); - // else - if(RFS_ENOENT == ffsResult) - { - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_mkdir(dir_path_uc, RFS_IRWXU); - TRACE_EVENT_P2("Makedir - ffsResult %d Dir path %s", ffsResult,dir_path); - } - break; - case FM_T_FLASH: - /**********************NOTE*************************** - FS Abstraction API to be added - ******************************************************/ - sprintf(dir_path,"%s%s%s","/MMC",TFLASHDIR,TFLASHDIR_IMG); - convert_u8_to_unicode(dir_path, dir_path_uc); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_opendir(dir_path_uc,&f_dir); - TRACE_EVENT_P2("Opendir - ffsResult %d Dir path %s", ffsResult,dir_path); - // if(ffsResult > 0) - // rfs_closedir(&f_dir); - // else - if(RFS_ENOENT == ffsResult) - { - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_mkdir(dir_path_uc, RFS_IRWXU); - TRACE_EVENT_P2("Makedir - ffsResult %d Dir path %s", ffsResult,dir_path); - } - sprintf(dir_path,"%s%s%s","/MMC",TFLASHDIR,THUMB); - convert_u8_to_unicode(dir_path, dir_path_uc); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_opendir(dir_path_uc,&f_dir); - TRACE_EVENT_P2("Opendir - ffsResult %d Dir path %s", ffsResult,dir_path); - // if(ffsResult > 0) - // rfs_closedir(&f_dir); - // else - if(RFS_ENOENT == ffsResult) - { - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_mkdir(dir_path_uc, RFS_IRWXU); - TRACE_EVENT_P2("Makedir - ffsResult %d Dir path %s", ffsResult,dir_path); - } - sprintf(dir_path,"%s%s%s","/MMC",TFLASHDIR,TFLASHDIR_AUD); - convert_u8_to_unicode(dir_path, dir_path_uc); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_opendir(dir_path_uc,&f_dir); - TRACE_EVENT_P2("Opendir - ffsResult %d Dir path %s", ffsResult,dir_path); - // if(ffsResult > 0) - // rfs_closedir(&f_dir); - // else - if(RFS_ENOENT == ffsResult) - { - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = rfs_mkdir(dir_path_uc, RFS_IRWXU); - TRACE_EVENT_P2("Makedir - ffsResult %d Dir path %s", ffsResult,dir_path); - } - break; - } -#else - sprintf(dir_path,"%s%s",NORDIR,NORDIR_IMG); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = ffs_opendir(dir_path,&f_dir); - if(EFFS_NOTFOUND == ffsResult) - { - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = ffs_mkdir(dir_path); - } - sprintf(dir_path,"%s%s",NORDIR,THUMB); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = ffs_opendir(dir_path,&f_dir); - if(EFFS_NOTFOUND == ffsResult) - { - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = ffs_mkdir(dir_path); - } - sprintf(dir_path,"%s%s",NORDIR,NORDIR_AUD); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = ffs_opendir(dir_path,&f_dir); - if(EFFS_NOTFOUND == ffsResult) - { - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffsResult = ffs_mkdir(dir_path); - } -#endif - return FM_NO_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_newdir - - $Description: creates a new direcotry with the given name - - $Returns: FM_DIR_EXISTS/FM_NO_ERROR - - $Arguments: dirname : new directory name - source : Current Drive -*******************************************************************************/ -T_MFW_FM_STATUS mfw_fm_newdir(char *dirname, T_FM_DEVICE_TYPE source) -{ -#ifdef FF_MMI_RFS_ENABLED - T_RFS_RET ffsResult; - T_RFS_DIR f_dir; - char pathname[FM_MAX_DIR_PATH_LENGTH]; - UINT16 pathname_uc[FM_MAX_DIR_PATH_LENGTH]; -#else - T_FFS_RET ffsResult; - T_FFS_DIR f_dir; -#endif - - TRACE_FUNCTION("mfw_fm_newdir"); - -#ifdef FF_MMI_RFS_ENABLED - switch (source) - { - case FM_NOR_FLASH: - strcpy(pathname,"/FFS"); - break; - case FM_NORMS_FLASH: - strcpy(pathname,"/NOR"); - break; - case FM_NAND_FLASH: - strcpy(pathname,"/NAND"); - break; - case FM_T_FLASH: - strcpy(pathname,"/MMC"); - break; - } - strcat(pathname,dirname); - convert_u8_to_unicode(pathname,pathname_uc); - - ffsResult = rfs_opendir(pathname_uc,&f_dir); - if(RFS_ENOENT == ffsResult) - { - ffsResult = rfs_mkdir(pathname_uc,RFS_IRWXU); - } - else - { - return FM_DIR_EXISTS; - } -#else - - ffsResult = ffs_opendir(dirname,&f_dir); - if(EFFS_NOTFOUND == ffsResult) - { - ffsResult = ffs_mkdir(dirname); - } - else - { - return FM_DIR_EXISTS; - } -#endif - return FM_NO_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_readProperties - - $Description: Reads the properties of all the objects in the given directory - - $Returns: None - - $Arguments: dir_path : Current Directory Path - dir_name : Current Directory Name - num_objs : num of obejcts - obj_list : object list - obj_properties: Object properties - source : Current Drive -*******************************************************************************/ -void mfw_fm_readProperties(char *dir_path, char *dir_name, UBYTE num_objs, T_FM_OBJ **obj_list, T_FM_OBJ_PROPERTIES **obj_properties,T_FM_DEVICE_TYPE source, T_FM_APP_TYPE app) -{ - /* January 16, 2008 DRT:OMAPS00156759 (x0082844) Shubhro -> For Unicode Support--> Start*/ - #if defined(FF_MMI_UNICODE_SUPPORT)||defined (FF_MMI_RFS_ENABLED) - T_WCHAR curObj_uc[FM_MAX_DIR_PATH_LENGTH]; - #else - char curObj_u8[FM_MAX_DIR_PATH_LENGTH]; - #endif - /* January 16, 2008 DRT:OMAPS00156759 (x0082844) Shubhro --> End*/ - - char curPath[FM_MAX_DIR_PATH_LENGTH]; - int iCount=0; - -#ifdef FF_MMI_RFS_ENABLED - T_RFS_RET result; - T_RFS_STAT f_stat; - T_RTC_DATE_TIME time_and_date; -#else - T_FFS_RET result; - T_FFS_STAT f_stat; -#endif - - TRACE_FUNCTION("mfw_fm_readProperties"); - -#ifdef FF_MMI_RFS_ENABLED - switch (source) - { - case FM_NOR_FLASH: - sprintf(curPath,"%s%s%s/","/FFS",dir_path,dir_name); - break; - case FM_NORMS_FLASH: - sprintf(curPath,"%s%s%s/","/NOR",dir_path,dir_name); - break; - case FM_NAND_FLASH: - sprintf(curPath,"%s%s%s/","/NAND",dir_path,dir_name); - break; - case FM_T_FLASH: - sprintf(curPath,"%s%s%s/","/MMC",dir_path,dir_name); - break; - } - - - for (iCount = 0;iCount Start*/ - convert_u8_to_unicode(curPath, curObj_uc); - - #ifdef FF_MMI_UNICODE_SUPPORT - // If it's an image it's stored as char - if (app == FM_AUDIO) - { - wstrcat(curObj_uc, obj_list[iCount]->name_uc); - } - else - #endif - { - T_WCHAR filename_uc[FM_MAX_OBJ_NAME_LENGTH]; - convert_u8_to_unicode(obj_list[iCount]->name, filename_uc); - wstrcat(curObj_uc, filename_uc); - } - result= rfs_stat(curObj_uc, &f_stat); - if(result == RFS_EOK) - { - if(f_stat.file_dir.mode & RFS_IXUSR) - obj_list[iCount]->type=OBJECT_TYPE_FOLDER; - else - obj_list[iCount]->type=OBJECT_TYPE_FILE; - } - TRACE_EVENT_P2("Object %s type %d",curObj_uc, obj_list[iCount]->type); - - obj_properties[iCount] = (T_FM_OBJ_PROPERTIES *)mfwAlloc(sizeof(T_FM_OBJ_PROPERTIES)); - obj_properties[iCount]->size = f_stat.file_dir.size; - result = rfs_getdatetime(curObj_uc,NULL /* creation date and time */,&time_and_date /* last modified date and time */); - sprintf(obj_properties[iCount]->date,"%d-%d-%d", time_and_date.day, time_and_date.month, 2000 + time_and_date.year); - sprintf(obj_properties[iCount]->time,"%d.%d.%d", time_and_date.hour, time_and_date.minute, time_and_date.second); - } - -#else - sprintf(curPath,"%s%s/",dir_path,dir_name); - for (iCount = 0;iCountname); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - result= ffs_stat( curObj_u8, (void *)&f_stat ); - if(result == EFFS_OK) - { - switch(f_stat.type) - { - case OT_FILE: - obj_list[iCount]->type=OBJECT_TYPE_FILE; - break; - case OT_DIR: - obj_list[iCount]->type=OBJECT_TYPE_FOLDER; - break; - default: - obj_list[iCount]->type=OBJECT_TYPE_NONE; - break; - } - } - TRACE_EVENT_P2("name %s, Object type %d", obj_list[iCount]->name,obj_list[iCount]->type); - obj_properties[iCount] = (T_FM_OBJ_PROPERTIES*)mfwAlloc(sizeof(T_FM_OBJ_PROPERTIES)); - obj_properties[iCount]->size=f_stat.size; - } -#endif -} - -/******************************************************************************* - $Function: mfw_fm_readFIleFolders - - $Description: Classifies all the objects as either File or Directory - - $Returns: None - - $Arguments: fm_curr_dir : Current directory - source : Current Drive -*******************************************************************************/ -void mfw_fm_readFileFolders(char *dir_path, char *dir_name, UBYTE num_objs, T_FM_OBJ **obj_list, T_FM_DEVICE_TYPE source) -{ - char curObj[FM_MAX_DIR_PATH_LENGTH]; - char curPath[FM_MAX_DIR_PATH_LENGTH]; - int iCount=0; -#ifdef FF_MMI_RFS_ENABLED - T_RFS_RET result; - T_RFS_STAT f_stat; - UINT16 curObj_uc[FM_MAX_DIR_PATH_LENGTH]; -#else - T_FFS_RET result; - T_FFS_STAT f_stat; -#endif - -TRACE_FUNCTION("mfw_fm_readFileFolders"); - -#ifdef FF_MMI_RFS_ENABLED - switch (source) - { - case FM_NOR_FLASH: - sprintf(curPath,"%s%s%s/","/FFS",dir_path,dir_name); - break; - case FM_NORMS_FLASH: - sprintf(curPath,"%s%s%s/","/NOR",dir_path,dir_name); - break; - case FM_NAND_FLASH: - sprintf(curPath,"%s%s%s/","/NAND",dir_path,dir_name); - break; - case FM_T_FLASH: - sprintf(curPath,"%s%s%s/","/MMC",dir_path,dir_name); - break; - } - for (iCount = 0;iCountname); - convert_u8_to_unicode(curObj, curObj_uc); - result= rfs_stat(curObj_uc, &f_stat); - if(result == RFS_EOK) - { - if(f_stat.file_dir.mode & RFS_IXUSR) - obj_list[iCount]->type=OBJECT_TYPE_FOLDER; - else - obj_list[iCount]->type=OBJECT_TYPE_FILE; - } - TRACE_EVENT_P2("Object %s type %d",curObj, obj_list[iCount]->type); - } -#else - sprintf(curPath,"%s%s/",dir_path,dir_name); - - for (iCount = 0;iCountname); - - result= ffs_stat( curObj, (void *)&f_stat ); - if(result == EFFS_OK) - { - switch(f_stat.type) - { - case OT_FILE: - obj_list[iCount]->type=OBJECT_TYPE_FILE; - break; - case OT_DIR: - obj_list[iCount]->type=OBJECT_TYPE_FOLDER; - break; - default: - obj_list[iCount]->type=OBJECT_TYPE_NONE; - break; - } - } - TRACE_EVENT_P2("Object %s type %d",curObj, obj_list[iCount]->type); - } -#endif -} -/******************************************************************************* - $Function: mfw_fm_getMemStat - - $Description: Extracts the memory usage details of a given drive - - $Returns: None - - $Arguments: nfree : free bytes - nused : used bytes - source : Current Drive -*******************************************************************************/ -void mfw_fm_getMemStat(int *nfree, int *nused,T_FM_DEVICE_TYPE source) -{ - - T_RFS_STAT f_stat; - char curObj[FM_MAX_DIR_PATH_LENGTH]; - UINT16 curObj_uc[FM_MAX_DIR_PATH_LENGTH]; - TRACE_FUNCTION("mfw_fm_getMemStat"); - - memset(curObj, 0, FM_MAX_DIR_PATH_LENGTH); - switch (source) - { - case FM_NOR_FLASH: - strcpy(curObj,"/FFS"); - break; - case FM_NORMS_FLASH: - strcpy(curObj,"/NOR"); - break; - case FM_NAND_FLASH: - strcpy(curObj,"/NAND"); - break; - case FM_T_FLASH: - strcpy(curObj,"/MMC"); - break; - } - convert_u8_to_unicode(curObj, curObj_uc); - rfs_stat(curObj_uc, &f_stat); /* warning fix */ - *nfree = f_stat.mount_point.free_space; - *nused = f_stat.mount_point.used_size; - -} - -/******************************************************************************* - $Function: mfw_fm_format - - $Description: Formats the given drive - - $Returns: FM_NO_ERROR/FM_FORMAT_ERROR - - $Arguments: source : Current Drive -*******************************************************************************/ -T_MFW_FM_STATUS mfw_fm_format(T_FM_DEVICE_TYPE source) -{ - T_RFS_RET result; - UINT16 mount_point_uc[6]; - TRACE_FUNCTION("mfw_fm_format"); - memset(mount_point_uc, 0x00,6); - switch (source) - { - case FM_NORMS_FLASH: - convert_u8_to_unicode("/NOR", mount_point_uc); - break; - case FM_NAND_FLASH: - convert_u8_to_unicode("/NAND", mount_point_uc); - break; - case FM_T_FLASH: - convert_u8_to_unicode("/MMC", mount_point_uc); - break; - } - - result = rfs_preformat(mount_point_uc, 0xDEAD); - if(result < RFS_EOK) - return FM_FORMAT_ERROR; - else - { - result = rfs_format(mount_point_uc, NULL, 0x2BAD); - if (result < RFS_EOK) - return FM_FORMAT_ERROR; - else - { - /* Mar 15, 2007 DRT: OMAPS00120201 x0039928 */ - /* Fix: Creating the default directories for the selected device after format */ - mfw_fm_createRootDir(source); - return FM_NO_ERROR; - } - } -} - -/******************************************************************************* - $Function: mfw_fm_remove - - $Description: Deletes the selected object - - $Returns: FM_DELETE_DIRNOTEMPTY/FM_DELETE_ERROR/FM_NO_ERROR - - $Arguments: source : Current Drive -*******************************************************************************/ -#ifdef FF_MMI_UNICODE_SUPPORT -T_MFW_FM_STATUS mfw_fm_remove(T_WCHAR* objname_u16,T_FM_DEVICE_TYPE source) -#else -T_MFW_FM_STATUS mfw_fm_remove(char* objname,T_FM_DEVICE_TYPE source) -#endif -{ -#ifdef FF_MMI_RFS_ENABLED - T_RFS_RET rfsResult; - char objname_mt[FM_MAX_DIR_PATH_LENGTH]; - T_WCHAR objname_uc[FM_MAX_DIR_PATH_LENGTH]; -#else - T_FFS_RET ffsResult; -#endif - - - TRACE_FUNCTION("mfw_fm_remove"); - -#ifdef FF_MMI_RFS_ENABLED - switch (source) - { - case FM_NOR_FLASH: - strcpy(objname_mt,"/FFS"); - break; - case FM_NORMS_FLASH: - strcpy(objname_mt,"/NOR"); - break; - case FM_NAND_FLASH: - strcpy(objname_mt,"/NAND"); - break; - case FM_T_FLASH: - strcpy(objname_mt,"/MMC"); - break; - } - #ifdef FF_MMI_UNICODE_SUPPORT - convert_u8_to_unicode(objname_mt, objname_uc); - wstrcat(objname_uc, objname_u16); - #else - strcat(objname_mt,objname); - convert_u8_to_unicode(objname_mt, objname_uc); - #endif - TRACE_EVENT_P1("objname %s",objname_uc); - rfsResult = rfs_remove(objname_uc); - if(rfsResult != RFS_EOK) - { - return FM_DELETE_ERROR; - } -#else - { - #ifdef FF_MMI_UNICODE_SUPPORT - char objname[FM_MAX_DIR_PATH_LENGTH]; - convert_unicode_to_u8(objname_u16, objname); - #endif - TRACE_EVENT_P1("objname %s",objname); - ffsResult = ffs_remove(objname); - } - if(ffsResult != EFFS_OK) - { - if(ffsResult == EFFS_DIRNOTEMPTY) - return FM_DELETE_DIRNOTEMPTY; - else - return FM_DELETE_ERROR; - } - -#endif - return FM_NO_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_remove_image - - $Description: Deletes the selcted image and its thumbnail - - $Returns: FM_DELETE_ERROR/FM_NO_ERROR - - $Arguments: path : Current directory path - dirname : Current Directory name - old_filename : Old filename - new_filename : New filename - source : Current Drive -*******************************************************************************/ -T_MFW_FM_STATUS mfw_fm_remove_image(char * path, char * dirname, char* objname,T_FM_DEVICE_TYPE source) -{ - char obj[FM_MAX_DIR_PATH_LENGTH]; - T_MFW_FM_STATUS ffsResult; - - TRACE_FUNCTION("mfw_fm_delete_image"); - - sprintf(obj,"%s%s/%s.jpg",path,dirname,objname); - TRACE_EVENT_P1("obj %s",obj); -#ifdef FF_MMI_UNICODE_SUPPORT - { - T_WCHAR obj_uc[FM_MAX_DIR_PATH_LENGTH]; - convert_u8_to_unicode(obj, obj_uc); - ffsResult = mfw_fm_remove(obj_uc,source); - } -#else - ffsResult = mfw_fm_remove(obj,source); -#endif - if(ffsResult != FM_NO_ERROR) - { - return FM_DELETE_ERROR; - } - switch(source) - { - case FM_NOR_FLASH: - sprintf(obj,"%s%s/%s.tmb",NORDIR,THUMB,objname); - break; - case FM_NORMS_FLASH: - sprintf(obj,"%s%s/%s.tmb",NORMSDIR,THUMB,objname); - break; - case FM_NAND_FLASH: - sprintf(obj,"%s%s/%s.tmb",NANDDIR,THUMB,objname); - break; - case FM_T_FLASH: - sprintf(obj,"%s%s/%s.tmb",TFLASHDIR,THUMB,objname); - break; - } -#ifdef FF_MMI_UNICODE_SUPPORT - { - T_WCHAR obj_uc[FM_MAX_DIR_PATH_LENGTH]; - convert_u8_to_unicode(obj, obj_uc); - ffsResult = mfw_fm_remove(obj_uc,source); - } -#else - ffsResult = mfw_fm_remove(obj,source); -#endif - if(ffsResult != FM_NO_ERROR) - { - return FM_DELETE_ERROR; - } - return FM_NO_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_copy_start - - $Description: starts copying the give file - - $Returns: FM_COPY_ERROR/FM_COPY_DONE/FM_COPY_PROGRESS - - $Arguments: data : Copy/Move operation related structure -*******************************************************************************/ -T_FM_COPY_STATE mfw_fm_copy_start(T_MFW_FM_COPYMOVE_STRUCT *data) -{ - char *ext2; - T_RFS_STAT f_stat; - T_RFS_SIZE iResult = 0; - UINT16 source_file_uc[FM_MAX_DIR_PATH_LENGTH]; - UINT16 destination_file_uc[FM_MAX_DIR_PATH_LENGTH]; - char source_file[FM_MAX_DIR_PATH_LENGTH]; - char destination_file[FM_MAX_DIR_PATH_LENGTH]; - - TRACE_FUNCTION("mfw_fm_copy_start"); - - switch (data->source_type) - { - case FM_NOR_FLASH: - strcpy(source_file,"/FFS"); - break; - case FM_NORMS_FLASH: - strcpy(source_file,"/NOR"); - break; - case FM_NAND_FLASH: - strcpy(source_file,"/NAND"); - break; - case FM_T_FLASH: - strcpy(source_file,"/MMC"); - break; - } - - switch (data->destination_type) - { - case FM_NOR_FLASH: - strcpy(destination_file,"/FFS"); - break; - case FM_NORMS_FLASH: - strcpy(destination_file,"/NOR"); - break; - case FM_NAND_FLASH: - strcpy(destination_file,"/NAND"); - break; - case FM_T_FLASH: - strcpy(destination_file,"/MMC"); - break; - } -#ifdef FF_MMI_UNICODE_SUPPORT - convert_u8_to_unicode(source_file, source_file_uc); - convert_u8_to_unicode(destination_file, destination_file_uc); - wstrcat(source_file_uc, data->sourceFile); - wstrcat(destination_file_uc, data->destinationFile); -#else - strcat(source_file, data->sourceFile); - strcat(destination_file, data->destinationFile); - - convert_u8_to_unicode(source_file, source_file_uc); - convert_u8_to_unicode(destination_file, destination_file_uc); -#endif - - ext2=(char *)mmi_fm_get_ext(source_file);//April 27, 2007 DRT:OMAPS00128836 x0073106 - - if( ( (rfs_stat(destination_file_uc, &f_stat)) != RFS_ENOENT)//April 27, 2007 DRT:OMAPS00128836 x0073106 - && (strcmp((const char*)ext2, "jpg") ==0 )) - { - return FM_COPY_NONE; - } - - data->sourceFileID = (T_RFS_FD)rfs_open( source_file_uc, RFS_O_RDONLY, NULL); - data->destFileID= (T_RFS_FD)rfs_open( destination_file_uc, RFS_O_WRONLY|RFS_O_CREAT, RFS_IRUSR|RFS_IWUSR); - data->bytesRead = 0; - - if(data->sourceFileSize > FM_COPY_BUFFER_SIZE ) - { - data->buf_size = FM_COPY_BUFFER_SIZE; - data->bytesRead = data->buf_size; - } - else - { - data->buf_size = data->sourceFileSize; - data->bytesRead = data->buf_size; - } - - iResult = (T_RFS_SIZE)rfs_read(data->sourceFileID, data->buf, data->buf_size ); - TRACE_EVENT_P1("iResult %d",iResult); - if(iResult < 0) - { - //Error Reading - rfs_close( data->sourceFileID); - rfs_close(data->destFileID ); - return FM_COPY_ERROR; - } - iResult = (T_RFS_SIZE)rfs_write( data->destFileID, data->buf, data->buf_size); - TRACE_EVENT_P1("iResult %d",iResult); - if(iResult < 0) - { - //Error writing - rfs_close( data->sourceFileID); - rfs_close(data->destFileID ); - return FM_COPY_ERROR; - } - if(data->bytesRead < data->sourceFileSize) - { - return FM_COPY_PROGRESS; - } - else - { - rfs_close( data->sourceFileID); - rfs_close(data->destFileID ); - return FM_COPY_DONE; - } - -// return FM_COPY_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_copy_continue - - $Description: resumes copying the give file - - $Returns: FM_COPY_ERROR/FM_COPY_DONE/FM_COPY_PROGRESS - - $Arguments: data : Copy/Move operation related structure -*******************************************************************************/ -T_FM_COPY_STATE mfw_fm_copy_continue(T_MFW_FM_COPYMOVE_STRUCT *data) -{ - T_RFS_SIZE iResult = 0; - -/* - UINT16 source_file_uc[FM_MAX_DIR_PATH_LENGTH]; - UINT16 destination_file_uc[FM_MAX_DIR_PATH_LENGTH]; - char source_file[FM_MAX_DIR_PATH_LENGTH]; - char destination_file[FM_MAX_DIR_PATH_LENGTH]; - - TRACE_FUNCTION("mfw_fm_copy_continue"); - - - switch (data->source_type) - { - case FM_NOR_FLASH: - strcpy(source_file,"/FFS"); - break; - case FM_NORMS_FLASH: - strcpy(source_file,"/NOR"); - break; - case FM_NAND_FLASH: - strcpy(source_file,"/NAND"); - break; - case FM_T_FLASH: - strcpy(source_file,"/MMC"); - break; - } - - switch (data->destination_type) - { - case FM_NOR_FLASH: - strcpy(destination_file,"/FFS"); - break; - case FM_NORMS_FLASH: - strcpy(destination_file,"/NOR"); - break; - case FM_NAND_FLASH: - strcpy(destination_file,"/NAND"); - break; - case FM_T_FLASH: - strcpy(destination_file,"/MMC"); - break; - } - - strcat(source_file, data->sourceFile); - strcat(destination_file, data->destinationFile); - - convert_u8_to_unicode(source_file, source_file_uc); - convert_u8_to_unicode(destination_file, destination_file_uc); - -*/ - if( (data->bytesRead+ FM_COPY_BUFFER_SIZE) < data->sourceFileSize) - { - //More blocks to be read - data->buf_size = FM_COPY_BUFFER_SIZE; - data->bytesRead = data->bytesRead + data->buf_size; - } - else - { - //Last chunk to be read - data->buf_size = data->sourceFileSize - data->bytesRead; - data->bytesRead = data->bytesRead + FM_COPY_BUFFER_SIZE; - } - - iResult = (T_RFS_SIZE)rfs_read(data->sourceFileID, data->buf, data->buf_size ); - TRACE_EVENT_P1("iResult %d",iResult); - if(iResult < 0) - { - //Error Reading - rfs_close( data->sourceFileID); - rfs_close(data->destFileID ); - return FM_COPY_ERROR; - } - iResult = (T_RFS_SIZE)rfs_write( data->destFileID, data->buf, data->buf_size); - TRACE_EVENT_P1("iResult %d",iResult); - if(iResult < 0) - { - //Error Writing - rfs_close( data->sourceFileID); - rfs_close(data->destFileID ); - return FM_COPY_ERROR; - } - - if(data->bytesRead < data->sourceFileSize) - { - return FM_COPY_PROGRESS; - } - else - { - rfs_close(data->sourceFileID); - rfs_close(data->destFileID ); - return FM_COPY_DONE; - } -// return FM_COPY_ERROR; -} - -//Image List -/******************************************************************************* - $Function: mfw_fm_checkThumbnail - - $Description: Checks for thumbnail - - $Returns: FM_FILE_DOESNOTEXISTS/FM_NO_ERROR - - $Arguments: obj : Current image - source : Current Drive -*******************************************************************************/ -T_MFW_FM_STATUS mfw_fm_checkThumbnail( char * obj,T_FM_DEVICE_TYPE source) -{ - - char filename[FM_MAX_DIR_PATH_LENGTH]; -#ifdef FF_MMI_RFS_ENABLED - T_RFS_FD fd = 0; - UINT16 filename_uc[FM_MAX_DIR_PATH_LENGTH]; -#else - T_FFS_FD fd = 0; -#endif - TRACE_FUNCTION("mfw_fm_check_thumbnail"); - - TRACE_EVENT_P1("File %s",obj); - -#ifdef FF_MMI_RFS_ENABLED - memset(filename, 0, FM_MAX_DIR_PATH_LENGTH); - switch(source) - { - case FM_NOR_FLASH: - sprintf(filename,"%s%s%s/%s.tmb","/FFS",NORDIR,THUMB,obj); - break; - case FM_NORMS_FLASH: - sprintf(filename,"%s%s%s/%s.tmb","/NOR",NORMSDIR,THUMB,obj); - break; - case FM_NAND_FLASH: - sprintf(filename,"%s%s%s/%s.tmb","/NAND",NANDDIR,THUMB,obj); - break; - case FM_T_FLASH: - sprintf(filename,"%s%s%s/%s.tmb","/MMC",TFLASHDIR,THUMB,obj); - break; - } - convert_u8_to_unicode(filename, filename_uc); - if ((fd = rfs_open (filename_uc, RFS_O_RDONLY, NULL)) == RFS_ENOENT) - { - TRACE_EVENT("Create the thmbnail."); - return FM_FILE_DOESNOTEXISTS; - } - else - { - TRACE_EVENT_P1("Error %d",fd); - rfs_close(fd); - return FM_FILE_EXISTS; - } -#else - sprintf(filename,"%s%s/%s.tmb",NORDIR,THUMB,obj); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - if ((fd = ffs_open (filename, FFS_O_RDONLY)) <= EFFS_NOTFOUND) - { - TRACE_EVENT("Create the thmbnail."); - return FM_FILE_DOESNOTEXISTS; - } - else - { - TRACE_EVENT_P1("Error %d",fd); - /**********************NOTE*************************** - FFS API To be replaced with FS Abstraction API - ******************************************************/ - ffs_close(fd); - return FM_FILE_EXISTS; - } -#endif -// return FM_FILE_DOESNOTEXISTS; -} -/******************************************************************************* - $Function: mfw_fm_imgViewer_create - - $Description: This function will create the handle of imageviewer UCP - - $Returns: Result of the UCP creation - - $Arguments: None -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgViewer_create(void) -{ - MSL_IMGVIEW_STATUS mslResult = MSL_IMGVIEW_STATUS_OK; - - TRACE_FUNCTION ("mfw_fm_imgViewer_create()"); - - mslResult = MSL_ImgView_Create(&msl_handle); - if(mslResult == MSL_IMGVIEW_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_imgViewer_init - - $Description: This function will initialise the imageviewer UCP - - $Returns: Result of the UCP initialization - - $Arguments: None -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgViewer_init(void) -{ - MSL_IMGVIEW_STATUS mslResult = MSL_IMGVIEW_STATUS_OK; - - TRACE_FUNCTION ("mfw_fm_imgViewer_init()"); - - mslResult = MSL_ImgView_Init(msl_handle); - - if(mslResult == MSL_IMGVIEW_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_imgViewer_destroy - - $Description: This function destroy the imageviewer UCP - - $Returns: Result of the UCP destroy - - $Arguments: None -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgViewer_destroy(void) -{ - MSL_IMGVIEW_STATUS mslResult = MSL_IMGVIEW_STATUS_OK; - - TRACE_FUNCTION ("mfw_fm_imgViewer_destroy()"); - mslResult = MSL_ImgView_Destroy(msl_handle); - if(mslResult == MSL_IMGVIEW_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_imgViewer_deinit - - $Description: This function will deinit the imageviewer UCP - - $Returns: Result of the UCP de-initialization - - $Arguments: None -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgViewer_deinit(void) -{ - MSL_IMGVIEW_STATUS mslResult = MSL_IMGVIEW_STATUS_OK; - - TRACE_FUNCTION ("mfw_fm_imgViewer_deinit()"); - - mslResult = MSL_ImgView_Deinit(msl_handle); - - if(mslResult == MSL_IMGVIEW_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; -} - - -/******************************************************************************* - $Function: mfw_fm_imgViewer_pause - - $Description: This function will pause the imageviewer UCP. - - $Returns: Result of the UCP pause - - $Arguments: None -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgViewer_pause(void) -{ - MSL_IMGVIEW_STATUS mslResult = MSL_IMGVIEW_STATUS_OK; - - TRACE_FUNCTION ("mfw_fm_imgViewer_pause()"); - mslResult = MSL_ImgView_Pause((MSL_HANDLE)msl_handle); - - if(mslResult == MSL_IMGVIEW_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; -} - - -/******************************************************************************* - $Function: mfw_fm_imgViewer_view - - $Description: This function will start the rendering of the image on LCD. - - $Returns: Result of the drawing the image - - $Arguments: None -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgViewer_view(void) -{ - MSL_IMGVIEW_STATUS mslResult = MSL_IMGVIEW_STATUS_OK; - - TRACE_FUNCTION ("mfw_fm_imgViewer_view()"); - mslResult = MSL_ImgView_View((MSL_HANDLE)msl_handle); - - if(mslResult == MSL_IMGVIEW_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR;} -/******************************************************************************* - $Function: mfw_fm_imgViewer_setImageProperty - - $Description: This function will set the parameters for the imageviewer UCP - - $Returns: Result of the UCP updation of configurations - - $Arguments: filepath : Image path - filename : Image name - width : Image width - height : Image height - xoffset : Image x offset - yoffset : Image y offset - source : Current drive -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgViewer_setImageProperty( char * filepath, char *filename, int width, int height,int xoffset, int yoffset, T_FM_DEVICE_TYPE source) -{ - - MSL_IMGVIEW_STATUS mslResult; - //The fullpath will be included. - char tmb_name_p[FM_MAX_OBJ_NAME_LENGTH]; - MSL_DISPLAY_CONFIGTYPE mfw_fm_dspl_config; - MSL_FILE_CONFIGTYPE mfw_fm_file_config ; - int rotation_degree = 0; - int zoom_factor = 0; - - TRACE_FUNCTION ("mfw_fm_imgViewer_setImageProperty()"); - - mfw_fm_dspl_config.tImgFormat = MSL_COLOR_RGB565; - mfw_fm_dspl_config.unDisplayImgHeight = height; - mfw_fm_dspl_config.unDisplayImgWidth = width; - mfw_fm_dspl_config.unDisplayXOffset = xoffset; - mfw_fm_dspl_config.unDisplayYOffset = yoffset; - mslResult = MSL_ImgView_SetConfig(msl_handle,MSL_DISPLAY_CONFIGINDEX,&mfw_fm_dspl_config); - if(mslResult == MSL_IMGVIEW_STATUS_OK) - mslResult = MSL_ImgView_SetConfig (msl_handle,MSL_ROTATE_CONFIGINDEX,&rotation_degree); - if(mslResult == MSL_IMGVIEW_STATUS_OK) - mslResult = MSL_ImgView_SetConfig(msl_handle,MSL_ZOOM_CONFIGINDEX,&zoom_factor); - mfw_fm_file_config.sFileName = (char *) mfwAlloc(FM_MAX_OBJ_NAME_LENGTH); - -#ifdef FF_MMI_RFS_ENABLED - switch (source) - { - case FM_NOR_FLASH: - sprintf(tmb_name_p,"%s%s%s/%s.tmb","/FFS",NORDIR,THUMB, filename); - // mfw_fm_file_config.tFileType = MSL_FILETYPE_FFS; - break; - case FM_NORMS_FLASH: - sprintf(tmb_name_p,"%s%s%s/%s.tmb","/NOR",NORMSDIR,THUMB, filename); - // mfw_fm_file_config.tFileType = MSL_FILETYPE_FFS; - break; - case FM_NAND_FLASH: - sprintf(tmb_name_p,"%s%s%s/%s.tmb","/NAND",NANDDIR,THUMB, filename); - /**********************NOTE*************************** - Drive type to be updated - ******************************************************/ - // mfw_fm_file_config.tFileType = MSL_FILETYPE_RFS; - break; - case FM_T_FLASH: - sprintf(tmb_name_p,"%s%s%s/%s.tmb","/MMC",TFLASHDIR,THUMB, filename); - /**********************NOTE*************************** - Drive type to be updated - ******************************************************/ - //mfw_fm_file_config.tFileType = MSL_FILETYPE_TFLASH; - break; - default: - sprintf(tmb_name_p,"/%s/%s.tmb",THUMB, filename); - } - strcat(mfw_fm_file_config.sFileName,tmb_name_p); -#else - strcpy(mfw_fm_file_config.sFileName,tmb_name_p); -#endif - if(mslResult == MSL_IMGVIEW_STATUS_OK) - mslResult = MSL_ImgView_SetConfig(msl_handle,MSL_DECFILE_CONFIGINDEX,&mfw_fm_file_config); - mfwFree((U8 *)mfw_fm_file_config.sFileName,FM_MAX_OBJ_NAME_LENGTH); - if(mslResult == MSL_IMGVIEW_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; - -} - -/******************************************************************************* - $Function: mfw_fm_imgViewer_setConfigs - - $Description: This function will set the parameters for the imageviewer UCP - - $Returns: Result of the UCP updation of configurations - - $Arguments: filepath : Image path - filename : Image name - width : Image width - height : Image height - xoffset : Image x offset - yoffset : Image y offset - zFactor : Zoom factor - rotation_degree : Rotate factor - source : Current drive -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgViewer_setConfigs(char *filename,int width, int height,int xoffset, int yoffset,U32 zFactor,int rotation_degree,T_FM_DEVICE_TYPE source) -{ - MSL_IMGVIEW_STATUS mslResult; - MSL_DISPLAY_CONFIGTYPE mfw_fm_dspl_config; - MSL_FILE_CONFIGTYPE mfw_fm_file_config ; - int zoom_factor = zFactor; - int rAngle = rotation_degree; - - TRACE_FUNCTION ("mfw_fm_imgViewer_setRotationConfigs()"); - - mfw_fm_dspl_config.unDisplayImgHeight = height; - mfw_fm_dspl_config.unDisplayImgWidth = width; - mfw_fm_dspl_config.unDisplayXOffset = xoffset; - mfw_fm_dspl_config.unDisplayYOffset = yoffset; - mslResult = MSL_ImgView_SetConfig(msl_handle,MSL_DISPLAY_CONFIGINDEX,&mfw_fm_dspl_config); - - mfw_fm_file_config.sFileName = (char *) mfwAlloc(FM_MAX_OBJ_NAME_LENGTH); - -#ifdef FF_MMI_RFS_ENABLED - switch (source) - { - case FM_NOR_FLASH: - strcpy(mfw_fm_file_config.sFileName,"/FFS"); - // mfw_fm_file_config.tFileType = MSL_FILETYPE_FFS; - break; - case FM_NORMS_FLASH: - strcpy(mfw_fm_file_config.sFileName,"/NOR"); - // mfw_fm_file_config.tFileType = MSL_FILETYPE_FFS; - break; - case FM_NAND_FLASH: - strcpy(mfw_fm_file_config.sFileName,"/NAND"); - /**********************NOTE*************************** - Drive type to be updated - ******************************************************/ - // mfw_fm_file_config.tFileType = MSL_FILETYPE_RFS; - break; - case FM_T_FLASH: - strcpy(mfw_fm_file_config.sFileName,"/MMC"); - /**********************NOTE*************************** - Drive type to be updated - ******************************************************/ - //mfw_fm_file_config.tFileType = MSL_FILETYPE_TFLASH; - break; - } - strcat(mfw_fm_file_config.sFileName,filename); -#else - strcpy(mfw_fm_file_config.sFileName,filename); -#endif - - if(mslResult == MSL_IMGVIEW_STATUS_OK) - mslResult = MSL_ImgView_SetConfig(msl_handle,MSL_DECFILE_CONFIGINDEX,&mfw_fm_file_config); - - if(mslResult == MSL_IMGVIEW_STATUS_OK) - mslResult = MSL_ImgView_SetConfig(msl_handle,MSL_ZOOM_CONFIGINDEX,&zoom_factor); - - if(mslResult == MSL_IMGVIEW_STATUS_OK) - mslResult = MSL_ImgView_SetConfig (msl_handle,MSL_ROTATE_CONFIGINDEX,&rAngle); - - mfwFree((U8 *)mfw_fm_file_config.sFileName,FM_MAX_OBJ_NAME_LENGTH); - - if(mslResult == MSL_IMGVIEW_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; -} - -/******************************************************************************* - $Function: mfw_imgView_setcallback - - $Description: This function will set the callback for viewer UCP - - $Returns: Result of the updating the callback function - - $Arguments: None -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgViewer_setcallback(void) -{ - MSL_IMGVIEW_STATUS mslResult; - - TRACE_FUNCTION("mfw_fm_imgViewer_setcallback"); - - mslResult = MSL_ImgView_SetConfig(msl_handle,MSL_CALLBACKSET_CONFIGINDEX,(MSL_CALLBACK)Msl_mslil_Callback); - if(mslResult == MSL_IMGVIEW_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_imgThmb_create - - $Description: This function will create the handle of thumbnail UCP - - $Returns: Result of the UCP create - - $Arguments: None -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgThmb_create(void) -{ - MSL_IMGTHMB_STATUS mslResult = MSL_IMGTHMB_STATUS_OK; - - TRACE_FUNCTION ("mfw_fm_imgThmb_create()"); - - mslResult = MSL_ImgThmb_Create(&msl_handle); - - if(mslResult == MSL_IMGTHMB_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_imgThmb_init - - $Description: This function will initialise of thumbnail UCP - - $Returns: Result of the UCP initialization - - $Arguments: None -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgThmb_init(void) -{ - MSL_IMGTHMB_STATUS mslResult = MSL_IMGTHMB_STATUS_OK; - - TRACE_FUNCTION ("mfw_fm_imgThmb_init()"); - - mslResult = MSL_ImgThmb_Init(msl_handle); - - if(mslResult == MSL_IMGTHMB_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_imgThmb_destroy - - $Description: This function will destroy the thumbnail UCP. - - $Returns: Result of the UCP destroy - - $Arguments: None -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgThmb_destroy(void) -{ - MSL_IMGTHMB_STATUS mslResult; - - TRACE_FUNCTION ("mfw_fm_imgThmb_destroy()"); - - mslResult = MSL_ImgThmb_Destroy(msl_handle); - if (mslResult != MSL_IMGTHMB_STATUS_OK) - { - MSL_ImgThmb_Destroy(msl_handle); - msl_handle=0; - return FM_UCP_ERROR; - } - if(mslResult == MSL_IMGTHMB_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_imgThmb_deinit - - $Description: This function will deinit the thumbnail UCP. - - $Returns: Result of the UCP de-initialization - - $Arguments: None -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgThmb_deinit(void) -{ - MSL_IMGTHMB_STATUS mslResult; - - TRACE_FUNCTION ("mfw_fm_imgThmb_deinit()"); - - mslResult = MSL_ImgThmb_Deinit(msl_handle); - - if(mslResult == MSL_IMGTHMB_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; -} - -/******************************************************************************* - - $Function: mfw_fm_imgThmb_pause - - $Description: This function will pasue the thumbnail UCP. - - $Returns: Result of the UCP pause - - $Arguments: None - -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgThmb_pause(void) -{ - MSL_IMGTHMB_STATUS mslResult; - - TRACE_FUNCTION ("mfw_fm_imgThmb_pause()"); - mslResult = MSL_ImgThmb_Pause((MSL_HANDLE)msl_handle); - - if(mslResult == MSL_IMGTHMB_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_imgThmb_generate - - $Description: This function will generate the thumbnail file in filesystem. - - $Returns: Result of the thumbanil generation - - $Arguments: None -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgThmb_generate(void) -{ - MSL_IMGTHMB_STATUS mslResult; - - TRACE_FUNCTION ("mfw_fm_imgThmb_generate()"); - - mslResult = MSL_ImgThmb_Generate((MSL_HANDLE)msl_handle); - if(mslResult == MSL_IMGTHMB_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; -} - - -/******************************************************************************* - $Function: mfw_fm_imgThmb_setparams - - $Description: This function will set the parameters for thumbnail UCP - - $Returns: Result of the UCP updation of configurations - - $Arguments: inFilepath : Image path - inFilename : Image name - width : Image width - height : Image height - source : Current drive -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgThmb_setparams(char * inFilepath, char* inFilename, int width,int height, T_FM_DEVICE_TYPE source) -{ - MSL_IMGTHMB_STATUS mslResult = MSL_IMGTHMB_STATUS_OK; - char tmb_name_p[FM_MAX_DIR_PATH_LENGTH]; - - MSL_RESCALE_CONFIGTYPE mfw_fm_rescaleconfig ; - MSL_FILE_CONFIGTYPE mfw_fm_file_config ; - - TRACE_FUNCTION ("mfw_fm_imgThmb_setparams()"); - - mfw_fm_rescaleconfig.unRescaledImgHeight = height; - mfw_fm_rescaleconfig.unRescaledImgWidth =width ; - mslResult = MSL_ImgThmb_SetConfigs(msl_handle,MSL_RESCALE_CONFIGINDEX,&mfw_fm_rescaleconfig); - mfw_fm_file_config.sFileName = (char *) mfwAlloc(FM_MAX_DIR_PATH_LENGTH); - switch (source) - { - case FM_NOR_FLASH: - sprintf(mfw_fm_file_config.sFileName,"%s%s%s.jpg","/FFS",inFilepath,inFilename); - sprintf(tmb_name_p,"%s%s%s/%s.tmb","/FFS",NORDIR,THUMB, inFilename); - // mfw_fm_file_config.tFileType = MSL_FILETYPE_FFS; - break; - case FM_NORMS_FLASH: - sprintf(mfw_fm_file_config.sFileName,"%s%s%s.jpg","/NOR",inFilepath,inFilename); - sprintf(tmb_name_p,"%s%s%s/%s.tmb","/NOR",NORMSDIR,THUMB, inFilename); - // mfw_fm_file_config.tFileType = MSL_FILETYPE_FFS; - break; - case FM_NAND_FLASH: - /**********************NOTE*************************** - Drive type to be updated - ******************************************************/ - sprintf(mfw_fm_file_config.sFileName,"%s%s%s.jpg","/NAND",inFilepath,inFilename); - sprintf(tmb_name_p,"%s%s%s/%s.tmb","/NAND",NANDDIR,THUMB, inFilename); - mfw_fm_file_config.tFileType = MSL_FILETYPE_RFS; - break; - case FM_T_FLASH: - /**********************NOTE*************************** - Drive type to be updated - ******************************************************/ - sprintf(mfw_fm_file_config.sFileName,"%s%s%s.jpg","/MMC",inFilepath,inFilename); - sprintf(tmb_name_p,"%s%s%s/%s.tmb","/MMC",TFLASHDIR,THUMB, inFilename); - //mfw_fm_file_config.tFileType = MSL_FILETYPE_TFLASH; - break; - } - if(mslResult == MSL_IMGTHMB_STATUS_OK) - { - mslResult = MSL_ImgThmb_SetConfigs(msl_handle,MSL_DECFILE_CONFIGINDEX,&mfw_fm_file_config); - } - sprintf(mfw_fm_file_config.sFileName,"%s",tmb_name_p); - if(mslResult == MSL_IMGTHMB_STATUS_OK) - { - mslResult = MSL_ImgThmb_SetConfigs(msl_handle,MSL_ENCFILE_CONFIGINDEX,&mfw_fm_file_config); - } - mfwFree((U8 *)mfw_fm_file_config.sFileName,FM_MAX_DIR_PATH_LENGTH); - if(mslResult == MSL_IMGTHMB_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_imgThmb_setcallback - - $Description: This function will set the callback for thumbnail UCP - - $Returns: Result of the UCP updation of configurations - - $Arguments: None -*******************************************************************************/ -T_FM_IMG_STATE mfw_fm_imgThmb_setcallback() -{ - MSL_IMGTHMB_STATUS mslResult = MSL_IMGTHMB_STATUS_OK; - - TRACE_FUNCTION("mfw_fm_imgThmb_setcallback"); - - mslResult = MSL_ImgThmb_SetConfigs(msl_handle,MSL_CALLBACKSET_CONFIGINDEX,(MSL_CALLBACK)Msl_mslil_Callback); - if(mslResult == MSL_IMGTHMB_STATUS_OK) - return FM_UCP_NO_ERROR; - else - return FM_UCP_ERROR; -} - -/******************************************************************************* - $Function: mfw_fm_thmb_mslcb - - $Description: This function is the callback for the thumbnail UCP - - $Returns: None - - $Arguments: tCMd : Current command being executed by the MSL - tStatus : Status of the current command -*******************************************************************************/ -void mfw_fm_thmb_mslcb( U32 tCMd,U32 tStatus) -{ - T_MFW_FM_PARA para; - - TRACE_FUNCTION("mfw_fm_thmb_mslcb()"); - switch(tCMd) - { - case MSL_CMD_INIT: - TRACE_EVENT_P1("MSL_CMD_INIT %d",tStatus); - if(tStatus ==MSL_IMGTHMB_STATUS_OK) - { - para.img_state=FM_UCP_NO_ERROR; - } - else - { - para.img_state=FM_UCP_ERROR; - } - mfw_fm_signal(E_FM_THMB_INIT, ¶); - break; - case MSL_CMD_GENERATE: - TRACE_EVENT_P1("MSL_CMD_GENERATE %d",tStatus); - switch(tStatus) - { - case MSL_IMGTHMB_STATUS_OK: - para.img_state = FM_UCP_NO_ERROR; - break; - case MSL_IMGTHMB_ERROR_BAD_STREAM: - para.img_state = FM_UCP_ERROR_BAD_STREAM; - break; - case MSL_IMGTHMB_ERROR_UNKNOWN: - para.img_state = FM_UCP_ERROR_UNKNOWN; - break; - case MSL_IMGTHMB_ERROR_IOWRITE: - para.img_state = FM_UCP_ERROR_NO_MEM; - break; - case MSL_IMGTHMB_ERROR_INVALID_ARGUMENT: - para.img_state = FM_UCP_ERROR_INVALID_ARGUMENT; - break; - default : - para.img_state = FM_UCP_ERROR; - } - mfw_fm_signal(E_FM_THMB_GEN, ¶); - break; - case MSL_CMD_DEINIT: - TRACE_EVENT_P1("MSL_CMD_DEINIT %d",tStatus); - if(tStatus ==MSL_IMGTHMB_STATUS_OK) - { - para.img_state=FM_UCP_NO_ERROR; - } - else - { - para.img_state=FM_UCP_ERROR; - } - mfw_fm_signal(E_FM_THMB_DEINIT, ¶); - break; - } -} - -/******************************************************************************* - $Function: mfw_fm_view_mslcb - - $Description: This function is the callback for the Viewer UCP - - $Returns: None - - $Arguments: tCMd : Current command being executed by the MSL - tStatus : Status of the current command -*******************************************************************************/ -void mfw_fm_view_mslcb( U32 tCMd,U32 tStatus) -{ - T_MFW_FM_PARA para; - - TRACE_FUNCTION("mfw_fm_view_mslcb()"); - - switch(tCMd) - { - case MSL_CMD_INIT: - TRACE_EVENT_P1("MSL_CMD_INIT %d",tStatus); - if(tStatus ==MSL_IMGVIEW_STATUS_OK) - { - para.img_state=FM_UCP_NO_ERROR; - } - else - { - para.img_state=FM_UCP_ERROR; - } - mfw_fm_signal(E_FM_IMG_INIT, ¶); - break; - case MSL_CMD_VIEW: - TRACE_EVENT_P1("MSL_CMD_VIEW %d",tStatus); - switch(tStatus ) - { - case MSL_IMGVIEW_STATUS_OK: - para.img_state = FM_UCP_NO_ERROR; - break; - case MSL_IMGVIEW_ERROR_BAD_STREAM: - para.img_state = FM_UCP_ERROR_BAD_STREAM; - break; - case MSL_IMGVIEW_ERROR_UNKNOWN: - para.img_state = FM_UCP_ERROR_UNKNOWN; - break; - case MSL_IMGVIEW_ERROR_IOREAD: - para.img_state = FM_UCP_ERROR_READ_FAILED; - break; - case MSL_IMGVIEW_ERROR_INVALID_ARGUMENT: - para.img_state = FM_UCP_ERROR_INVALID_ARGUMENT; - break; - default : - para.img_state = FM_UCP_ERROR; - } - mfw_fm_signal(E_FM_IMG_DRAW,¶); - break; - case MSL_CMD_DEINIT: - TRACE_EVENT_P1("MSL_CMD_DEINIT %d",tStatus); - if(tStatus ==MSL_IMGVIEW_STATUS_OK) - { - para.img_state=FM_UCP_NO_ERROR; - } - else - { - para.img_state=FM_UCP_ERROR; - } - mfw_fm_signal(E_FM_IMG_DEINIT, ¶); - break; - - } -} - - -//Audio List - -/******************************************************************************* - $Function: mfw_fm_audPlay_cb - - $Description: Callback fundtion for auio play/stop - - $Returns: None - - $Arguments: parameter : The structure conveying the stop indication data -*******************************************************************************/ -void mfw_fm_audPlay_cb(void *parameter) -{ - T_MFW_FM_PARA para; - T_AS_STOP_IND *stop_ind = (T_AS_STOP_IND *)parameter; - - /* OMAPS00151698, x0056422 */ - T_AS_START_IND *start_ind = ( T_AS_START_IND *)parameter; - - /* OMAPS00151698, x0056422 */ - - T_AS_PROBAR_IND_MP3 *mp3_pb = (T_AS_PROBAR_IND_MP3 *)parameter; - - TRACE_FUNCTION("mfw_fm_audPlay_cb"); - - - - if(mmi_get_aud_state_status() == FM_AUD_NONE) - { - - TRACE_EVENT_P1("AS_START_IND status %d ",start_ind->status); - mmi_set_aud_state_status(FM_AUD_PLAY); - - /* OMAPS00151698, x0056422 */ - #ifdef FF_MMI_A2DP_AVRCP - - //if BT connected and aud is initialized, and the command wasnt from BT, then send callback - tGlobalBmiBtStruct.tAudioState = FM_AUD_PLAY; - if((tGlobalBmiBtStruct.bConnected != BMI_BT_NOTCONNECTED) - && (start_ind->status == AS_OK)) - { - - - if( NULL != tGlobalBmiBtStruct.BmiEventCallback) - tGlobalBmiBtStruct.BmiEventCallback(BMI_EVENT_USER_PLAY); - tGlobalBmiBtStruct.tCmdSrc == BMI_BT_COMMAND_NONE; - } - #endif // FF_MMI_A2DP_AVRCP - } - - switch(stop_ind->header.msg_id ) - { - /* OMAPS00151698, x0056422 */ - case AS_PAUSE_IND: - TRACE_EVENT_P1("AS_PAUSE_IND status %d",stop_ind->status); - mmi_set_aud_state_status( FM_AUD_PAUSE); - /* OMAPS00151698, x0056422 */ - #ifdef FF_MMI_A2DP_AVRCP - tGlobalBmiBtStruct.tAudioState = FM_AUD_PAUSE; - if(tGlobalBmiBtStruct.bConnected != BMI_BT_NOTCONNECTED) - { - if(NULL != tGlobalBmiBtStruct.BmiEventCallback) - tGlobalBmiBtStruct.BmiEventCallback(BMI_EVENT_USER_PAUSE); - tGlobalBmiBtStruct.tCmdSrc = BMI_BT_COMMAND_NONE; - } - #endif//FF_MMI_A2DP_AVRCP - break; - /* OMAPS00151698, x0056422 */ - - case AS_STOP_IND: - TRACE_EVENT_P2("AS_STOP_IND status %d end %d",stop_ind->status, stop_ind->end_of_media); - mfw_unset_stereo_path(mfw_get_current_audioDevice()); - //Daisy tang added for Real Resume feature 20071107 - if(isPlayer_Real_Pause) - { - last_file_size_played = stop_ind->file_size; - last_para_aud_pt = para_aud.aud_pt; - } - - switch((int)(stop_ind->status)) - { - case AS_NOT_SUPPORTED: - para.aud_state = FM_AUD_ERROR_NOTSUPPORTED; - break; - case AS_MEMORY_ERR: - para.aud_state = FM_AUD_ERROR_MEM; - break; - case AS_INTERNAL_ERR: - para.aud_state = FM_AUD_ERROR_INTERNAL; - break; - case AS_INVALID_PARAM: - para.aud_state = FM_AUD_ERROR_INVALIDPARAM; - break; - case AS_NOT_READY: - para.aud_state = FM_AUD_ERROR_NOTREADY; - break; - case AS_MESSAGING_ERR: - para.aud_state = FM_AUD_ERROR_MSGING; - break; - case AS_FFS_ERR: - para.aud_state = FM_AUD_ERROR_FFS; - break; - case AS_PLAYER_ERR: - para.aud_state = FM_AUD_ERROR_PLAYER; - break; - case AS_DENIED: - para.aud_state = FM_AUD_ERROR_DENIED; - break; - case AS_AUDIO_ERR: - para.aud_state = FM_AUD_ERROR_AUDIO; - break; - case AS_NOT_ALLOWED: - para.aud_state = FM_AUD_ERROR_NOTALLOWED; - break; - default: - para.aud_state = FM_AUD_NONE; - } - /* June 28, 2007 DRT: OMAPS00135749 x0062174 */ - mmi_set_aud_state_status( FM_AUD_NONE); - - /* OMAPS00151698, x0056422 */ - #ifdef FF_MMI_A2DP_AVRCP - tGlobalBmiBtStruct.tAudioState = FM_AUD_NONE; - /* x0056422, updated changes from this ID */ - /*OMAPS001448610 : This callback code is removed since L1 sends the callback to BT for - stop playback irrespective of whether the stop is due to end of media or is user prompted. */ - tGlobalBmiBtStruct.tCmdSrc = BMI_BT_COMMAND_NONE; - - #endif//FF_MMI_A2DP_AVRCP - /* OMAPS00151698, x0056422 */ - mfw_fm_signal(E_FM_AUDIO_STOP, ¶); - break; - - case AS_PROBAR_IND: - TRACE_EVENT_P2("pt %d tt %d",mp3_pb->u32TotalTimePlayed, mp3_pb->u32totalTimeEst); - para_aud.aud_pt = mp3_pb->u32TotalTimePlayed + last_para_aud_pt; //Daisy tang added for Real Resume feature 20071107 - para_aud.aud_tt = mp3_pb->u32totalTimeEst; - mfw_fm_signal(E_FM_AUDIO_PROG, NULL); - break; - } - return; - -} - -/******************************************************************************* - $Function: mfw_fm_aud_get_type - - $Description: Deduces the type of audio file - - $Returns: audio file type - - $Arguments: file_name : audio file -*******************************************************************************/ -T_FM_OBJ_TYPE mfw_fm_aud_get_type(char * file_name) -{ - T_AS_PLAYER_TYPE player_type; - UINT16 filename_uc[47]; - TRACE_FUNCTION("mfw_fm_aud_get_type"); - - convert_u8_to_unicode(file_name, filename_uc); - as_deduce_player_type(filename_uc,&player_type); - switch(player_type) - { - case AS_PLAYER_TYPE_MIDI: - TRACE_EVENT("AS_PLAYER_TYPE_MIDI"); - return OBJECT_TYPE_AUDIO_MIDI; - case AS_PLAYER_TYPE_MP3: - TRACE_EVENT("AS_PLAYER_TYPE_MP3"); - return OBJECT_TYPE_AUDIO_MP3; - case AS_PLAYER_TYPE_AAC: - TRACE_EVENT("AS_PLAYER_TYPE_AAC"); - return OBJECT_TYPE_AUDIO_AAC; - default: - TRACE_EVENT("Default"); - return OBJECT_TYPE_FILE; - } -} - -/******************************************************************************* - $Function: mfw_fm_audPlay - - $Description: Plays the selected audio file - - $Returns: None - - $Arguments: file_name : audio file - file_type : audio file type -*******************************************************************************/ -#ifdef FF_MMI_UNICODE_SUPPORT -T_FM_AUD_STATE mfw_fm_audPlay(T_WCHAR * filename_uc, T_FM_OBJ_TYPE file_type, BOOL play_bar) -{ - -#else -T_FM_AUD_STATE mfw_fm_audPlay(char * file_name, T_FM_OBJ_TYPE file_type, BOOL play_bar) -{ - UINT16 filename_uc[FM_MAX_DIR_PATH_LENGTH]; - - convert_u8_to_unicode(file_name, filename_uc); -#endif - T_AS_RET status; - T_AS_PLAYER_TYPE player_type; - int i=0; - - TRACE_FUNCTION("mfw_fm_audPlay"); - - //Daisy tang added for Real Resume feature 20071107 - //start - #ifdef FF_MMI_UNICODE_SUPPORT - for(i==0;i