[MTK]ÒôÀÖ²¥·ÅÆ÷¼ÓÇ¿¹¦ÄܸÅÒªÉè¼Æ ÏÂÔر¾ÎÄ

¶ÌÏûÏ¢ÐÅÏ¢Ëø¸ÅÒªÉè¼Æ

¶þ.Ìåϵ½á¹¹Éè¼Æ

2.1ϵͳ¸ÅÊö

±¾¹¦ÄÜÖ÷ÒªÊÇΪÓû§Ìṩ¸üÇ¿´ó,¸ü¼Ó¶àÑù»¯µÄÒôÀÖ²¥·ÅÆ÷Ïà¹Ø²Ù×÷.ÒòΪ´æÔÚ¶à¸ö²¥·ÅÁбí,ËùÒÔ¶Ô²¥·ÅÁбíµÄ³õʼ»¯,ÐÞ¸Ä,ɾ³ýµÈÒ»°ã²Ù×÷Ïà¶ÔƵ·±,¶à¸ö²¥·ÅÁбíÖ®¼äµÄÇл»¹¤×÷Ò²Ï൱Ƶ·±,±ÈÈçÓû§ÕýÔÚä¯ÀÀµÄÁбíºÍÕýÔÚ²¥·ÅµÄÁбíÖ®¼ä½øÐÐÇл»,½øÐÐÁбíµÄ¸÷Ïî²Ù×÷¾­³£»áÓõ½±È½ÏÅÅÐòµÈËã·¨.ΪÁ˲»Ó°ÏìϵͳËÙ¶È,²»Õ¼Óùý¶àµÄSRAM¿Õ¼ä,ͬʱÂú×ãÓû§Ò»°ãµÄÐèÒª,ÎÒÃǽ«ÏµÍ³×î´ó¿ÉË÷ÒýµÄ¸èÇúÊýÄ¿ÓÉÔ­À´µÄ1024Ê×¼õÉÙΪ512Ê×.

2.2ϵͳÉÏÏÂÎĶ¨Òå

¸Ã¹¦ÄÜÏà¹ØʵÏÖ¶¼ÊÇ»ùÓÚMTKÄ¿Ç°µÄÒôÀÖ²¥·ÅÆ÷¹¦ÄÜ´úÂëʵÏÖ.

2.3Éè¼ÆÔ¼Êø

1. ΪÁ˱£Ö¤ÏµÍ³µÄÔËÐÐËÙ¶È,ÎÒÃǽ«Ïà¹ØµÄ²¥·ÅÁбí´æ´¢ÔÚϵͳFAT¿Õ¼äÖÐ,¶ø²»ÊÇĬÈϵÄT¿¨Ä¿Â¼,ËùÒÔÒªÇóÊÖ»úÈí¼þÔ¤Áô×ã¹»µÄFAT¿Õ¼ä.¼«ÏÞÇé¿öÏÂ, ¸Ã¹¦ÄÜÓпÉÄÜÓõ½800KµÄFAT¿Õ¼ä.¼´Music LibraryÂúÔØ512Ê׸èÇú.Óû§Ð½¨3¸ö²¥·ÅÁбí,ÿ¸ö²¥·ÅÁбíÂúÔØ,Ϊ512Ê׸èÇú.ͬʱ,×î½üÌí¼ÓÁбíҲΪ512Ê׸èÇú.ͬʱ,512Ê׸èÇúÓÐ512¸ö²»Í¬µÄÒÕÊõ¼ÒºÍר¼­Ãû.

2. ΪÁ˱£Ö¤¹¦ÄܵÄÕý³£¹¤×÷ÒÔ¼°ÔËÐÐËÙ¶È,ÎÒÃǽûÖ¹ÁËϵͳ×Ô¶¯¸üÐÂÁбíµÄ¹¦ÄÜ.±ÈÈç,ϵͳÊÇͨ¹ýË÷ÒýÀ´ÕÒµ½Ã¿¸öÒÕÊõ¼ÒÏÂÃæ°üº¬ÄÄһЩ¸èÇú.Èç¹ûϵͳ²»¾­Òâ¼äreloadÁ˲¥·ÅÁбí,ÓпÉÄܵ¼ÖÂÕâ¸öË÷ÒýʧЧ.µ±Óû§É¾³ýÁËij¸öÒôÀÖÎļþºó,¿ÉÒÔͨ¹ý²Ëµ¥À´¸üÐÂÒôÀÖ¿â.

3. ϵͳ¸üÐÂÒôÀÖ¿âµÄʱºò,Ö»Äܴӹ̶¨µÄÒôÀÖÎļþ¼Ð(Èç Music »òÕß My Music µÈ¿Í»§ÒªÇó´æ·ÅÒôÀÖµÄÎļþ¼Ð)À´Ë÷ÒýÎļþ·¾¶.²»Ö§³ÖÓû§ÊÖ¶¯Ìí¼Ó.(²Î¿¼OPPOÒôÀÖÊÖ»ú.)Èç¹ûÔÊÐíÓû§ÊÖ¶¯Ìí¼Ó,ͬÑù»áµ¼ÖÂ2ËùÃèÊöµÄÎÊÌâ.

4. ΪÁ˽ÚÊ¡¿Õ¼ä,×î¶àÒªÇóÓû§¿ÉÒÔ×Ô¶¨Òå3¸ö²¥·ÅÁбí.

2.4Éè¼Æ²ßÂÔ

MTK×Ô´øÒôÀÖ²¥·ÅÆ÷¹¦Äܽö¿É¶ÔÒ»¸ö²¥·ÅÁбí½øÐÐÏà¹Ø²Ù×÷.½â¾ö¶à¸ö²¥·ÅÁбíÇл»µÄÎÊÌâ,ÒÔ¼°²¥·ÅÁбíµÄ×Ô¶¯Éú³ÉÎÊÌâ,´Ó¶øʵÏÖ¸÷ÖÖÓ¦ÓÃ.»ùÓڸù¦ÄÜ,Ò²¿ÉÒÔÀ©Õ¹³ö¸ü¶àµÄÆäËüÓ¦ÓÃ.

Page 5 of 22

¶ÌÏûÏ¢ÐÅÏ¢Ëø¸ÅÒªÉè¼Æ

2.5ϵͳ×ÜÌå½á¹¹

2.6×ÓϵͳNµÄ½á¹¹Ó빦ÄÜ 2.7È«¾Ö±äÁ¿¶¨Òå

ÒòΪÉè¼Æµ½¶à¸ö²¥·ÅÁбíµÄ²Ù×÷,ËùÒÔ¶¨ÒåÁËÒ»¶¨µÄÈ«¾Ö±äÁ¿,±äÁ¿¶¨ÒåÒÔ¼°¹¦ÄÜÃèÊöÈçÏÂ:

ÿ¸ö²¥·ÅÁбíµÄÁбíÃûÒÔ¼°Â·¾¶¶¨Òå.

#define MUSIC_PLAYER_EXT_LIST_FOLDER L\#define MUSIC_PLAYER_EXT_ALL_LIST_NAME L\

#define MUSIC_PLAYER_EXT_MOSTLY_PLAY_LIST_NAME L\ #define MUSIC_PLAYER_EXT_RECENTLY_PLAY_LIST_NAME L\#define MUSIC_PLAYER_EXT_RECENTLY_ADD_LIST_NAME L\#define MUSIC_PLAYER_EXT_USER_ADD_LIST1_NAME L\#define MUSIC_PLAYER_EXT_USER_ADD_LIST2_NAME L\#define MUSIC_PLAYER_EXT_USER_ADD_LIST3_NAME L\#define MUSIC_PLAYER_EXT_ARTIST_LIST_NAME L\#define MUSIC_PLAYER_EXT_ALBUM_LIST_NAME L\#define MUSIC_PLAYER_EXT_CONFIG_LIST_NAME L\

#define MUSIC_PLAYER_EXT_USER_TEMP_LIST_NAME L\#define MUSIC_PLAYER_EXT_USER_LIST_NUM 3

#define MUSIC_PLAYER_EXT_MOSTLY_PLAY_LIST_NUM 10 #define MUSIC_PLAYER_EXT_RECENTLY_PLAY_LIST_NUM 10

ÿ¸ö²¥·ÅÁбíµÄÀàÐͶ¨Òå

typedef enum {

ALL_LIST = 0, /* ÒôÀÖ¿â */

MOSTLY_PLAY_LIST, /* ×î³£²¥·ÅÁбí */ RECENTLY_PLAY_LIST, /* ×î½ü²¥·ÅÁбí */ RECENTLY_ADD_LIST, /* ×î½üÌí¼ÓÁбí */ USER_LIST1, /* Óû§×Ô¶¨ÒåÁбí1 */ USER_LIST2, /* Óû§×Ô¶¨ÒåÁбí2 */ USER_LIST3, /* Óû§×Ô¶¨ÒåÁбí3 */ ARTIST_DETAIL_LIST, /* ÒôÀÖ¼ÒÁбí */ ALBUM_DETAIL_LIST /* ר¼­Áбí */

Page 6 of 22

¶ÌÏûÏ¢ÐÅÏ¢Ëø¸ÅÒªÉè¼Æ

}MUSIC_PLAYER_EXT_LIST_ENUM;

Óû§µ±Ç°ÕýÔÚä¯ÀÀµÄÁбí

typedef enum {

MENU_ADD_LIST = 0,

MENU_SHOW_MOSTLY_PLAY_lIST, MENU_SHOW_RECENTLY_PLAY_lIST, MENU_SHOW_RECENTLY_ADD_LIST,

MENU_USER_LIST_BEGIN = MENU_SHOW_RECENTLY_ADD_LIST, MENU_USER_LIST1, MENU_USER_LIST2, MENU_USER_LIST3, MENU_TOTAL_NUM

}MUSIC_PLAYER_EXT_MY_LIST_MENU_ENUM;

ÓÃÓÚ±£´æÒÕÊõ¼ÒµÄ½á¹¹Ìå

typedef struct {

UI_character_type ArtistName[FMGR_MAX_FILE_LEN + 1]; /* ÒÕÊõ¼ÒÃû³Æ */

S16 file_index[MAX_PLAY_LIST_NUM]; /* ÊôÓÚ¸ÃÒÕÊõ¼ÒµÄ¸èÇúË÷ÒýºÅ */

}MUSIC_PLAYER_EXT_ARTIST_INFO;

ÓÃÓÚ±£´æר¼­µÄ½á¹¹Ìå

typedef struct {

UI_character_type AlbumName[FMGR_MAX_FILE_LEN + 1]; /* ר¼­Ãû³Æ */

S16 file_index[MAX_PLAY_LIST_NUM]; /* ÊôÓÚ¸Ãר¼­µÄ¸èÇúË÷ÒýºÅ */

}MUSIC_PLAYER_EXT_ALBUM_INFO;

UI_character_type

music_player_ext_mostly_play_list[MUSIC_PLAYER_EXT_MOSTLY_PLAY_LIST_NUM][FMGR_MAX_PATH_LEN + 1]; /* ÓÃÓÚ±£´æ10¸ö×î³£²¥·ÅÁбí */

S32 g_playCount[MUSIC_PLAYER_EXT_MOSTLY_PLAY_LIST_NUM]; UI_character_type

music_player_ext_recently_play_list[MUSIC_PLAYER_EXT_RECENTLY_PLAY_LIST_NUM][FMGR_MAX_PATH_LEN + 1]; /* ÓÃÓÚ±£´æ10¸ö×î½ü²¥·ÅÁбí */

U8 g_Record_State[MAX_PLAY_LIST_NUM]; /* ÓÃÓڼǼÿ¸ö¸èÇúµÄ²¥·Å´ÎÊý */

Óû§×Ô¶¨ÒåÁбíµÄһЩÐÅÏ¢.ÐèÒª±£´æµ½ÎļþÖÐ.

typedef struct

Page 7 of 22

¶ÌÏûÏ¢ÐÅÏ¢Ëø¸ÅÒªÉè¼Æ {

S8 totalListNum; /* Óû§Ìí¼ÓµÄÁбíÊýÄ¿ */

S8 curOperIdx; /* µ±Ç°Óû§ÕýÔÚ²Ù×÷µÄÁбíË÷Òý */

S8 curOperate; // 1 - rename; 0 ¨C add /* µ±Ç°Óû§²Ù×÷:Ôö¼Ó»¹ÊÇÖØÃüÃû */ S8 listState[MUSIC_PLAYER_EXT_USER_LIST_NUM]; /* ÿ¸öÁбí״̬ */

S8 listName[MUSIC_PLAYER_EXT_USER_LIST_NUM][(FMGR_MAX_FILE_LEN + 1) * ENCODING_LENGTH]; /* ÁбíÃû³Æ, ±ãÓÚÓû§ÐÞ¸Ä */

S8 tempListName[(FMGR_MAX_FILE_LEN + 1) * ENCODING_LENGTH]; /* temp */ }MUSIC_PLAYER_EXT_USER_LIST_INFO;

// Just for temp List show.

ÓÃÓÚÉú³ÉÁÙʱÁбíÓõĽṹÌå±äÁ¿,±ÈÈçÿ¸öר¼­/ÒÕÊõ¼ÒϵÄÒôÀÖÁбí,ΪÁÙʱÁбí.

typedef struct { U8

list_buffer[PLAY_LIST_BUFF_SIZE][(FMGR_MAX_FILE_LEN

+

1)

*

ENCODING_LENGTH]; /* Ò»´Îloading 8/16 ¸öÁÐ±íµ½bufferÖÐ,ÏÔʾ. */

S32 list_buffer_head; /* µÚÒ»¸öbufferÖб£´æµÄÒôÀÖË÷Òý */ S32 list_buffer_num; /* buffer ÖÐ×ܹ²µÄÒôÀÖÊýÄ¿ */ S32 list_total_num; /* ¸ÃÁбíµÄÒôÀÖÊýÄ¿ */ S32 list_index; /* µ±Ç°¸ßÁÁµÄÒôÀÖ */ BOOL list_changed; /* Reserve */

}MUSIC_PLAYER_EXT_TEMP_LIST_STRUCT;

È«¾ÖµÄÓÃÓÚ¶Ô¶à¸öÁбí½øÐвÙ×÷

typedef struct {

U8 present_list_location; /* ²¥·ÅÁÐ±í±£´æµÄλÖà */

U8 present_music_location; /* µ±Ç°ÒôÀÖÎļþËùÔÚµÄÅÌ·û */

/* ÒÔÏ·ֱðÓÃÓÚ±£´æÿ¸ö²¥·ÅÁбíµÄ·¾¶*/

U8 music_library_path[(FMGR_MAX_PATH_LEN + 1) * ENCODING_LENGTH];

U8 mostly_play_list_path[(FMGR_MAX_PATH_LEN + 1) * ENCODING_LENGTH];

U8 recently_play_list_path[(FMGR_MAX_PATH_LEN + 1) * ENCODING_LENGTH]; U8 recently_add_list_path[(FMGR_MAX_PATH_LEN + 1) * ENCODING_LENGTH];

U8 user_add_list_path[MUSIC_PLAYER_EXT_USER_LIST_NUM][(FMGR_MAX_PATH_LEN +

1) * ENCODING_LENGTH];

U8 artist_list_path[(FMGR_MAX_PATH_LEN + 1) * ENCODING_LENGTH]; U8 album_list_path[(FMGR_MAX_PATH_LEN + 1) * ENCODING_LENGTH]; U8 config_file_path[(FMGR_MAX_PATH_LEN + 1) * ENCODING_LENGTH];

/* ÓÃÓÚ±£´æÒôÀÖ¼ÒµÄbuffer */

U8

artist_buffer[PLAY_LIST_BUFF_SIZE][(FMGR_MAX_FILE_LEN

+

1)

*

ENCODING_LENGTH];

Page 8 of 22