¶ÌÏûÏ¢ÐÅÏ¢Ëø¸ÅÒªÉè¼Æ
¶þ.Ìåϵ½á¹¹Éè¼Æ
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