view src/ui3/mfw/mfw_fm.h @ 686:59f07d67eb45

luna target split into luna1 and luna2 luna1 is FC Luna based on iWOW DSK v4.0 or v5.0 motherboard luna2 is FC Luna based on FC Caramel2 MB
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 12 Oct 2020 18:51:24 +0000
parents e8ddbb0837ed
children
line wrap: on
line source

/* =========================================================
*             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_FileManager.h
*
* This provides the functionality of File Manager Applications.
* It supports file/folder related operations on FFS and MMC
*
* @path  \bmi\condat\ms\src\mfw
*
* @rev  00.01
*/
/* ========================================================== */
/*===========================================================
*!
*! Revision History
*! ===================================
	Apr 06, 2007 DRT: OMAPS00124874 x0039928
	Description: MM: Renaming process of an Imy file is incorrect
	Solution: Seperate enum values for different audio files is added.
	
	Mar 28, 2007   ER: OMAPS00106188  x0039928
	Description: Align Midi application menu choices and audio Player menu choices 

*! 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.
* =========================================================== */


#ifndef DEF_MFW_FILEMANAGER
#define DEF_MFW_FILEMANAGER
//Includes for Image Services
#include "msl/inc/msl_imgthmb.h"
#include "msl/inc/msl_imgview.h" 
//Includes for Audio Services
#include "as/as_api.h" 
#include "as/as_message.h"


/*******************************************************************************
                                                                              
                                Interface constants
                                                                              
*******************************************************************************/
#define FM_MAX_EXT_LENGTH	   5
#define FM_MAX_OBJ_NAME_LENGTH  200// 45
#ifdef FF_MMI_UNICODE_SUPPORT
/* x0083025 OMAPS00156759 
 * Changed from 250 to 100 because to much memory is being taken when unicode 
 * is enabled (2 bytes per char) and system would eventually crash */
#define FM_MAX_DIR_PATH_LENGTH 100
#else
#define FM_MAX_DIR_PATH_LENGTH 250
#endif
#define FM_MAX_OBJ_DATE_LENGTH 15
#define FM_MAX_OBJ_TIME_LENGTH 15

#define FM_COPY_BUFFER_SIZE 	1000

#define FM_MAX_OBJ  20
#define E_FM_THMB_INIT			(T_MFW_EVENT)0x00000001
#define E_FM_THMB_DEINIT           (T_MFW_EVENT)0x00000010
#define E_FM_THMB_GEN			(T_MFW_EVENT)0x00000100
#define E_FM_IMG_INIT			(T_MFW_EVENT)0x00001000
#define E_FM_IMG_DEINIT		(T_MFW_EVENT)0x00010000
#define E_FM_IMG_DRAW			(T_MFW_EVENT)0x00100000
#define E_FM_AUDIO_STOP		(T_MFW_EVENT)0x01000000
#define E_FM_AUDIO_PROG		(T_MFW_EVENT)0x10000000
#define E_FM_ALL_SERVICES		(T_MFW_EVENT)0xFFFFFFFF
//Image 

typedef enum
{
	FM_UCP_ERROR_FATAL = -8,
	FM_UCP_ERROR_NONFATAL,
	FM_UCP_ERROR_UNKNOWN,
	FM_UCP_ERROR_INVALID_ARGUMENT,
	FM_UCP_ERROR_BAD_STREAM,
	FM_UCP_ERROR_NO_MEM,
	FM_UCP_ERROR_READ_FAILED,
	FM_UCP_ERROR,
	FM_UCP_NONE = 0,
	FM_UCP_NO_ERROR,
	FM_UCP_THMB_INIT,
	FM_UCP_THMB_GEN,
	FM_UCP_THMB_DEINIT,
	FM_UCP_THMBIMG_INIT,
	FM_UCP_THMBIMG_DRAW,
	FM_UCP_THMBIMG_DEINIT,
	FM_UCP_QCIFIMG_INIT,
	FM_UCP_QCIFIMG_DRAW,
	FM_UCP_QCIFIMG_DEINIT
}T_FM_IMG_STATE;
typedef struct
{
	T_FM_IMG_STATE state;
	T_FM_IMG_STATE cmd;
	int ipMsl;
}T_FM_IMG;

typedef struct
{
	BOOL thumbnail;
 }T_FM_OBJ_IMAGE;
#define MFW_FM_ZOOM_LOW 	 1024
#define MFW_FM_ZOOM_MAX	 (8 * MFW_FM_ZOOM_LOW)
typedef enum
{
	MFW_FM_ROTATE_0 = 	0,
	MFW_FM_ROTATE_90, 
	MFW_FM_ROTATE_180,
	MFW_FM_ROTATE_270,
	MFW_FM_ROTATE_MAX
}T_FM_IMG_ROTATE;
//Audio
typedef enum
{
	FM_AUD_ERROR_NOTALLOWED = -12,
	FM_AUD_ERROR_AUDIO,
	FM_AUD_ERROR_DENIED,
	FM_AUD_ERROR_PLAYER,
	FM_AUD_ERROR_FFS,
	FM_AUD_ERROR_MSGING,
	FM_AUD_ERROR_NOTREADY,
	FM_AUD_ERROR_INVALIDPARAM,
	FM_AUD_ERROR_INTERNAL,
	FM_AUD_ERROR_MEM,
	FM_AUD_ERROR_NOTSUPPORTED,
	FM_AUD_ERROR = -1 ,
	FM_AUD_NO_ERROR,
	FM_AUD_NONE,
	FM_AUD_PLAY,
	FM_AUD_FORWARD,
	FM_AUD_REWIND,
	FM_AUD_PAUSE,
	FM_AUD_STOP,
}T_FM_AUD_STATE;

#define FM_AUD_MIDI_CHANNEL_MONO      1
#define FM_AUD_MIDI_CHANNEL_STEREO   2

#define FM_AUD_MP3_CHANNEL_MONO      0
#define FM_AUD_MP3_CHANNEL_STEREO   1

#define FM_AUD_AAC_CHANNEL_MONO      0
#define FM_AUD_AAC_CHANNEL_STEREO   1
#define FM_MFW_QCIF_WIDTH 176
#define FM_MFW_QCIF_HEIGHT 144
#define FM_MFW_PREVIEW_WIDTH  48
#define FM_MFW_PREVIEW_HEIGHT 48

typedef struct
{
	T_FM_AUD_STATE state;
}T_FM_AUD;

typedef struct
{
	BOOL hidden;
}T_FM_OBJ_AUDIO;

typedef enum
{
	FM_IMAGE=0,
	FM_AUDIO
}T_FM_APP_TYPE;	

//Misc
typedef enum
{
	FM_INVALID=-1,
	FM_NOR_FLASH,
	FM_NORMS_FLASH,
	FM_NAND_FLASH,
	FM_T_FLASH
}T_FM_DEVICE_TYPE;	
typedef enum
{
	FM_NONE=-1,
	FM_OPEN,
	FM_BACK,
	FM_COPY,
	FM_MOVE,
	FM_OPTIONS_FILE,
	FM_OPTIONS_FOLDER,
	FM_IMGVIEW,
	FM_RENAME,
	FM_DELETE,
	FM_NEWDIR,
	FM_REMOVE
}T_FM_OPERATION_TYPE;	

typedef enum
{
	OBJECT_TYPE_NONE=-1,
	OBJECT_TYPE_FILE,
	OBJECT_TYPE_AUDIO,
	OBJECT_TYPE_AUDIO_MIDI,
	OBJECT_TYPE_AUDIO_MP3,
	OBJECT_TYPE_AUDIO_AAC,
	OBJECT_TYPE_IMAGE,
	OBJECT_TYPE_FOLDER,
	OBJECT_TYPE_IMAGE_FOLDER,
	OBJECT_TYPE_AUDIO_FOLDER,
	OBJECT_TYPE_AUDIO_XMF,                       /* Apr 06, 2007 DRT: OMAPS00124874 x0039928 */
	OBJECT_TYPE_AUDIO_IMY,
	OBJECT_TYPE_AUDIO_MMF,
	OBJECT_TYPE_AUDIO_MXMF,
	OBJECT_TYPE_AUDIO_SMS,
	OBJECT_TYPE_AUDIO_WAV
}T_FM_OBJ_TYPE;

typedef enum
{
	FM_COPY_ERROR = -1,
	FM_COPY_NONE,
	FM_COPY_START,
	FM_COPY_PROGRESS,
	FM_COPY_DONE
}T_FM_COPY_STATE;
typedef enum
{
	FM_STATE_NONE=0,	
	FM_STATE_ERROR
}T_MFW_FM_STATE;
typedef enum
{
	FM_NO_ERROR=0,
	FM_DIR_DOESNOTEXISTS,
	FM_FILE_EXISTS,
	FM_FILE_DOESNOTEXISTS,
	FM_READDIR_ERROR,
	FM_RENAME_ERROR,
	FM_DELETE_ERROR,
	FM_DELETE_DIRNOTEMPTY,
	FM_DIR_EXISTS,
	FM_FORMAT_ERROR
}T_MFW_FM_STATUS;


typedef struct
{
	UINT32 aud_tt;
	UINT16 aud_pt;
}T_MFW_AUD_PARA;

typedef union
{
	T_FM_AUD aud;
	T_FM_IMG img;
}T_FM_DIRTYPE_INFO;

typedef union
{
	T_FM_IMG_STATE img_state;
	T_FM_AUD_STATE aud_state;
} T_MFW_FM_PARA;

typedef union
{
	T_FM_OBJ_AUDIO audio;
	T_FM_OBJ_IMAGE image;
}T_FM_OBJ_DATA;

typedef struct
{
	char name[FM_MAX_OBJ_NAME_LENGTH];
	#ifdef FF_MMI_UNICODE_SUPPORT
		T_WCHAR name_uc[FM_MAX_OBJ_NAME_LENGTH];
	#endif
	T_FM_OBJ_TYPE type;
}T_FM_OBJ;

typedef struct
{
	char name[15];
}T_FM_OBJ_ITEM;

typedef struct
{
	int size;
	char date[FM_MAX_OBJ_DATE_LENGTH];
	char time[FM_MAX_OBJ_TIME_LENGTH];
}T_FM_OBJ_PROPERTIES;

typedef struct
{
	T_FM_OBJ       *obj_list[FM_MAX_OBJ];
	T_FM_OBJ_PROPERTIES *obj_properties[FM_MAX_OBJ];
	T_FM_OBJ_DATA *obj_data[FM_MAX_OBJ];
	UBYTE                      num_objs;
	char                         dir_name[FM_MAX_OBJ_NAME_LENGTH];
	char                         dir_path[FM_MAX_DIR_PATH_LENGTH];
	T_FM_OBJ_TYPE        dir_type;
	int                            depth;	
	int                            startIndex;
	int	                        currentIndex;
	T_FM_DIRTYPE_INFO     dirinfo;
}T_FM_CURDIR;
typedef struct
{
	T_FM_OBJ       *obj_list[FM_MAX_OBJ];
	UBYTE                      num_objs;
	char                         dir_name[FM_MAX_OBJ_NAME_LENGTH];
	char                         dir_path[FM_MAX_DIR_PATH_LENGTH];
	T_FM_OBJ_TYPE        dir_type;
	int	                        currentIndex;
	int                            depth;	
}T_FM_DESTDIR;
typedef struct
{
    T_MFW_EVENT      emask;         /* events of interest */
    T_MFW_EVENT      event;          /* current event */
    T_MFW_CB           handler;
    T_MFW_FM_PARA  para;
} T_MFW_FM;
typedef struct
{

	T_RFS_FD sourceFileID;
//	int sourceFileID;
#ifdef FF_MMI_UNICODE_SUPPORT
	T_WCHAR *sourceFile;
#else
	char *sourceFile;
#endif
	T_FM_DEVICE_TYPE source_type;
	int  sourceFileSize;

	T_RFS_FD destFileID;
//	int destFileID;
#ifdef FF_MMI_UNICODE_SUPPORT
	T_WCHAR *destinationFile;
#else
	char *destinationFile;
#endif
	T_FM_DEVICE_TYPE destination_type;
	char *buf;
	T_RFS_SIZE buf_size;
	int  bytesRead;
	T_FM_COPY_STATE state;
}T_MFW_FM_COPYMOVE_STRUCT;

#define THUMB "thumbnail"

#define NORDIR "/mmi/"
#define NORDIR_IMG "jpeg"
#define NORDIR_AUD "tones"

#define NORMSDIR "/"
#define NORMSDIR_IMG "jpeg"
#define NORMSDIR_AUD "tones"

#define NANDDIR "/"
#define NANDDIR_IMG  "jpeg"
#define NANDDIR_AUD  "tones"

#define TFLASHDIR "/"
#define TFLASHDIR_IMG "jpeg"
#define TFLASHDIR_AUD "tones"



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);
void mfw_fm_readFileFolders(char *dir_path, char *dir_name, UBYTE num_objs, T_FM_OBJ **obj_list, T_FM_DEVICE_TYPE  source);
T_MFW_FM_STATUS mfw_fm_create_rootdir(T_FM_DEVICE_TYPE  source);
T_MFW_HND mfw_fm_create(T_MFW_HND hWin, T_MFW_EVENT event, T_MFW_CB cbfunc);
T_MFW_RES mfw_fm_delete(T_MFW_HND hnd);
T_MFW_FM_STATUS mfw_fm_format(T_FM_DEVICE_TYPE  source)	;
#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);
T_MFW_FM_STATUS mfw_fm_remove(T_WCHAR* objname,T_FM_DEVICE_TYPE  source);
#else
T_MFW_FM_STATUS mfw_fm_rename(char* old_filename, char * new_filename, T_FM_DEVICE_TYPE  source);
T_MFW_FM_STATUS mfw_fm_remove(char* objname,T_FM_DEVICE_TYPE  source);	
#endif

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 mfw_fm_remove_image(char * path, char * dirname, char* objname,T_FM_DEVICE_TYPE  source)	;
T_MFW_FM_STATUS mfw_fm_newdir(char *dirname, T_FM_DEVICE_TYPE  source);
T_MFW_FM_STATUS mfw_fm_createRootDir(T_FM_DEVICE_TYPE  source);
T_FM_COPY_STATE mfw_fm_copy_start(T_MFW_FM_COPYMOVE_STRUCT *data)	;
T_FM_COPY_STATE mfw_fm_copy_continue(T_MFW_FM_COPYMOVE_STRUCT *data)	;
void mfw_fm_getMemStat(int *nfree, int *nused,T_FM_DEVICE_TYPE  source);


//Image
T_FM_IMG_STATE  mfw_fm_imgThmb_create(void);
T_FM_IMG_STATE  mfw_fm_imgThmb_init(void);
T_FM_IMG_STATE  mfw_fm_imgThmb_destroy(void);
T_FM_IMG_STATE  mfw_fm_imgThmb_deinit(void);
T_FM_IMG_STATE  mfw_fm_imgThmb_pause(void);
T_FM_IMG_STATE  mfw_fm_imgThmb_generate(void);
T_FM_IMG_STATE  mfw_fm_imgThmb_setparams(char * inFilepath, char* inFilename, int width,int height,T_FM_DEVICE_TYPE  source);
T_FM_IMG_STATE  mfw_fm_imgThmb_setcallback(void);
T_FM_IMG_STATE  mfw_fm_imgViewer_create(void);
T_FM_IMG_STATE  mfw_fm_imgViewer_init(void);
T_FM_IMG_STATE  mfw_fm_imgViewer_destroy(void);
T_FM_IMG_STATE  mfw_fm_imgViewer_deinit(void);
T_FM_IMG_STATE  mfw_fm_imgViewer_pause(void);
T_FM_IMG_STATE  mfw_fm_imgViewer_view(void);
T_FM_IMG_STATE  mfw_fm_imgViewer_setparams(char * inFilepath, char* inFilename, int width,int height);
T_FM_IMG_STATE  mfw_fm_imgViewer_setcallback(void);
void mfw_fm_thmb_mslcb( U32 tCMd,U32 tStatus);
void mfw_fm_view_mslcb( U32 tCMd,U32 tStatus);
T_MFW_FM_STATUS mfw_fm_checkThumbnail( char * obj,T_FM_DEVICE_TYPE  source);
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);
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);
void mfw_fm_thmb_mslcb( U32 tCMd,U32 tStatus);
void mfw_fm_view_mslcb( U32 tCMd,U32 tStatus);



//Audio
T_FM_AUD_STATE mfw_fm_audStop(void);
#ifdef FF_MMI_UNICODE_SUPPORT
T_FM_AUD_STATE mfw_fm_audPlay(T_WCHAR * file_name, 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);
#endif
T_FM_OBJ_TYPE mfw_fm_aud_get_type(char * file_name);
T_FM_AUD_STATE mfw_fm_audPause(void);
T_FM_AUD_STATE mfw_fm_audResume(void);
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);
/* OMAPS00151698, x0056522 */
void mfw_fm_audPlay_cb(void *parameter);

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

#if 0
typedef UINT16 T_RFS_MODE;

#define RFS_IXUSR   0x0100  // Execute permission for the user
#define RFS_IWUSR   0x0200  // Write permission for the user
#define RFS_IRUSR   0x0400  // Read permission for the user
#define RFS_IRWXU   0x0700  // Read Write permission mask (default) for the user

#define RFS_IXGRP   0x0010  // Execute permission for group
#define RFS_IWGRP   0x0020  // Write permission for group
#define RFS_IRGRP   0x0040  // Read permission for group
#define RFS_IRWXG   0x0070  // Read Write permission mask (default) for group

#define RFS_IXOTH   0x0001  // Execute permission for others
#define RFS_IWOTH   0x0002  // Write permission for others
#define RFS_IROTH   0x0004  // Read permission for others
#define RFS_IRWXO   0x0007  // Read Write permission mask (default) for others

typedef INT32 T_RFS_RET;

#define RFS_EOK               0

#define RFS_ENODEVICE         -1
#define RFS_EAGAIN            -2
#define RFS_ENOSPACE          -3
#define RFS_EFSFULL           -4
#define RFS_EBADNAME          -5
#define RFS_ENOENT            -6
#define RFS_EEXISTS           -7
#define RFS_EACCES            -8
#define RFS_ENAMETOOLONG      -9
#define RFS_EINVALID          -10
#define RFS_ENOTEMPTY         -11
#define RFS_EFBIG             -12
#define RFS_ENOTAFILE         -13
#define RFS_ENUMFD            -14
#define RFS_EBADFD            -15
#define RFS_EBADDIR           -16
#define RFS_EBADOP            -17
#define RFS_ELOCKED           -18
#define RFS_EMOUNT            -19
#define RFS_EDEVICE           -20
#define RFS_EBUSY             -21
#define RFS_ENOTADIR          -22
#define RFS_EMAGIC            -23
#define RFS_EMEMORY           -24
#define RFS_EMSGSEND          -25
#define RFS_ENOTALLOWED       -26
#define RFS_ENOTSUPPORTED     -27
#define RFS_EEMPTY            -28
#define RFS_EINTERNALERROR    -29
#define RFS_CORRUPT_LFN       -30
#define RFS_E_FILETOOBIG      -31


typedef union {
    T_RFS_FS_STAT         file_system;
    T_RFS_MP_STAT         mount_point;
    T_RFS_FILE_DIR_STAT   file_dir;
} T_RFS_STAT;

/* Defines the DIR type. This represents a directory stream, which is an ordered
 * sequence of all the di-rectory entries (files) in a particular directory.
 */
typedef struct {
    UINT32    opendir_ino;  // inode of directory that was opened
    UINT32    lastread_ino; // last inode of the read direcoty entry
    UINT8     mpt_idx;      // mount point where the directory is located
    UINT8     fscore_nmb; // file system type
} T_RFS_DIR;

typedef enum
{
	FFS_ATTRIB_READWRITE   	= FFS_ATTRIB_READWRITE_MASK,
	FFS_ATTRIB_READONLY    	= FFS_ATTRIB_READONLY_MASK,
	FFS_ATTRIB_HIDDEN 		= FFS_ATTRIB_HIDDEN_MASK,
	FFS_ATTRIB_SYSTEM		= FFS_ATTRIB_SYSTEM_MASK,
	FFS_ATTRIB_SUBDIR       = FFS_ATTRIB_SUBDIR_MASK,
	FFS_ATTRIB_ARCHIVE	    = FFS_ATTRIB_ARCHIVE_MASK,
	FFS_ATTRIB_INVALID
}T_FFS_ATTRIB_TYPE;

/**********************************/
#endif

#endif