From: <ny...@us...> - 2007-02-17 15:38:00
|
Revision: 372 http://svn.sourceforge.net/pmplib/?rev=372&view=rev Author: nyaochi Date: 2007-02-17 07:37:59 -0800 (Sat, 17 Feb 2007) Log Message: ----------- Initial attempt to support MSI MEGA PLAYER 536. I will check the compatibility later. Modified Paths: -------------- trunk/pmplib/lib/pmp_portalplayer1/hdr_template.h trunk/pmplib/lib/pmp_portalplayer1/model_msi_megaplayer.c trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c trunk/pmplib/lib/pmp_portalplayer1/pp1db.c trunk/pmplib/lib/ucs2/ucs2char.c Modified: trunk/pmplib/lib/pmp_portalplayer1/hdr_template.h =================================================================== --- trunk/pmplib/lib/pmp_portalplayer1/hdr_template.h 2007-02-17 15:35:46 UTC (rev 371) +++ trunk/pmplib/lib/pmp_portalplayer1/hdr_template.h 2007-02-17 15:37:59 UTC (rev 372) @@ -76,6 +76,7 @@ int medion_mdjuke220_parse_model(const ucs2char_t* firmware, pp1model_t* model); int samsung_parse_model(const ucs2char_t* firmware, pp1model_t* model); int philips_hdd6320_parse_model(const ucs2char_t* firmware, pp1model_t* model); -int megaplayer_parse_model(const ucs2char_t* firmware, pp1model_t* model); +int megaplayer_parse_model_536(const ucs2char_t* firmware, pp1model_t* model); +int megaplayer_parse_model_540(const ucs2char_t* firmware, pp1model_t* model); #endif/*__HDR_TEMPLATE_H__*/ Modified: trunk/pmplib/lib/pmp_portalplayer1/model_msi_megaplayer.c =================================================================== --- trunk/pmplib/lib/pmp_portalplayer1/model_msi_megaplayer.c 2007-02-17 15:35:46 UTC (rev 371) +++ trunk/pmplib/lib/pmp_portalplayer1/model_msi_megaplayer.c 2007-02-17 15:37:59 UTC (rev 372) @@ -153,7 +153,7 @@ return 0; } -int megaplayer_parse_model(const ucs2char_t* firmware, pp1model_t* model) +static int megaplayer_parse_model(const ucs2char_t* firmware, pp1model_t* model, const char *identifier) { /* MSI MEGA PLAYER 540 01.00.16 @@ -176,6 +176,27 @@ 000002D0 68 74 73 20 72 65 73 65 72 76 65 64 2E 00 00 00 hts reserved.... 000002E0 00 01 00 00 EC 00 00 00 20 7F 39 00 00 10 A0 E1 ........ .9..... 000002F0 40 25 A0 E3 00 20 81 E5 01 00 A0 E3 0E F0 A0 E1 @%... .......... + + MSI MEGA PLAYER 536 01.00.16 + + ADDRESS 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF + ------------------------------------------------------------------------------ + 00000200 27 04 00 EA 14 04 00 EA 0E F0 B0 E1 18 04 00 EA '............... + 00000210 1D 04 00 EA FE FF FF EA 05 04 00 EA FB 03 00 EA ................ + 00000220 70 6F 72 74 61 6C 70 6C 61 79 65 72 00 30 2E 30 portalplayer.0.0 + 00000230 C0 00 39 7B FC 00 F1 ED 00 00 00 00 00 00 00 00 ..9{............ + 00000240 50 50 35 30 32 30 41 46 2D 30 35 2E 32 32 2D 50 PP5020AF-05.22-P + 00000250 50 30 37 2D 30 35 2E 32 32 2D 4D 4E 30 33 2D 30 P07-05.22-MN03-0 + 00000260 31 2E 30 30 2E 31 36 2D 44 54 00 00 32 30 30 35 1.00.16-DT..2005 + 00000270 2E 30 33 2E 31 36 00 00 28 42 75 69 6C 64 20 31 .03.16..(Build 1 + 00000280 32 39 29 00 44 69 67 69 74 61 6C 20 4D 65 64 69 29).Digital Medi + 00000290 61 20 50 6C 61 74 66 6F 72 6D 00 00 43 6F 70 79 a Platform..Copy + 000002A0 72 69 67 68 74 28 63 29 20 31 39 39 39 20 2D 20 right(c) 1999 - + 000002B0 32 30 30 33 20 50 6F 72 74 61 6C 50 6C 61 79 65 2003 PortalPlaye + 000002C0 72 2C 20 49 6E 63 2E 20 20 41 6C 6C 20 72 69 67 r, Inc. All rig + 000002D0 68 74 73 20 72 65 73 65 72 76 65 64 2E 00 00 00 hts reserved.... + 000002E0 00 01 00 00 EC 00 00 00 FC 7B 39 00 00 10 A0 E1 .........{9..... + 000002F0 40 25 A0 E3 00 20 81 E5 01 00 A0 E3 0E F0 A0 E1 @%... .......... */ FILE *fp = ucs2fopen(firmware, "rb"); if (fp) { @@ -198,12 +219,11 @@ fclose(fp); // Match the identifier string. - if (strncmp(buff, "PP5020AF-05.22-PP07-05.22-MN05-", 31) != 0) { + if (strncmp(buff, identifier, strlen(identifier)) != 0) { return 0; } // Obtain the model name. - strcpy(model->name, "MEGA PLAYER 540"); memset(model->version, 0, sizeof(model->version)); strncpy(model->version, buff+0x1F, 8); strcpy(model->language, ""); @@ -215,9 +235,27 @@ } } +int megaplayer_parse_model_536(const ucs2char_t* firmware, pp1model_t* model) +{ + int ret = megaplayer_parse_model(firmware, model, "PP5020AF-05.22-PP07-05.22-MN03-"); + if (ret) { + strcpy(model->name, "MEGA PLAYER 536"); + } + return ret; +} +int megaplayer_parse_model_540(const ucs2char_t* firmware, pp1model_t* model) +{ + int ret = megaplayer_parse_model(firmware, model, "PP5020AF-05.22-PP07-05.22-MN05-"); + if (ret) { + strcpy(model->name, "MEGA PLAYER 540"); + } + return ret; +} + + static fd_template_t hdrtmpl_fd_megaplayer540[] = { {0x0000F001, 2, 4, 0, 0, 1, 0, 0, "System\\DATA\\PP...@DE...x"}, {0x0000F002, 1, 128, 0, 0, 1, 0, 0, "System\\DATA\\PP5000_FPTH.idx"}, Modified: trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c =================================================================== --- trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c 2007-02-17 15:35:46 UTC (rev 371) +++ trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c 2007-02-17 15:37:59 UTC (rev 372) @@ -221,6 +221,17 @@ hdr_init_philips_hdd6320, philips_hdd6320_parse_model }, { + "msi_megaplayer536", "MSI", "MEGA PLAYER 536", + 8, "UM", + "01.00.16", "01.00.16", + "SYSTEM\\PP5020.mi4", "System\\DATA\\PP5000.HDR", + ".mp3\0.wma\0", + {PMPCODEC_MPEGLAYER3, PMPCODEC_WMA, 0, 0, 0, 0}, + "SYSTEM", "MUSIC", "Playlists", + ".pla", + hdr_init_msi_megaplayer540, megaplayer_parse_model_536 + }, + { "msi_megaplayer540", "MSI", "MEGA PLAYER 540", 8, "UM", "01.00.16", "01.00.16", @@ -229,7 +240,7 @@ {PMPCODEC_MPEGLAYER3, PMPCODEC_WMA, 0, 0, 0, 0}, "SYSTEM", "MUSIC", "Playlists", ".pla", - hdr_init_msi_megaplayer540, megaplayer_parse_model + hdr_init_msi_megaplayer540, megaplayer_parse_model_540 }, #if 0 { Modified: trunk/pmplib/lib/pmp_portalplayer1/pp1db.c =================================================================== --- trunk/pmplib/lib/pmp_portalplayer1/pp1db.c 2007-02-17 15:35:46 UTC (rev 371) +++ trunk/pmplib/lib/pmp_portalplayer1/pp1db.c 2007-02-17 15:37:59 UTC (rev 372) @@ -581,7 +581,6 @@ pmplib_record_init(dst); db->hdr->param.proc_dat_get(dst, src, path_to_root); - ++j; } Modified: trunk/pmplib/lib/ucs2/ucs2char.c =================================================================== --- trunk/pmplib/lib/ucs2/ucs2char.c 2007-02-17 15:35:46 UTC (rev 371) +++ trunk/pmplib/lib/ucs2/ucs2char.c 2007-02-17 15:37:59 UTC (rev 372) @@ -271,7 +271,7 @@ ucs2char_t* ucs2dup(const ucs2char_t* src) { - ucs2char_t* dst = (ucs2char_t*)malloc((ucs2len(src)+1) * sizeof(ucs2char_t)); + ucs2char_t* dst = (ucs2char_t*)ucs2malloc((ucs2len(src)+1) * sizeof(ucs2char_t)); ucs2cpy(dst, src); return dst; } @@ -283,7 +283,7 @@ if (length < src_length) { src_length = length; } - dst = (ucs2char_t*)malloc((src_length+1) * sizeof(ucs2char_t)); + dst = (ucs2char_t*)ucs2malloc((src_length+1) * sizeof(ucs2char_t)); if (dst) { size_t i; for (i = 0;i < src_length;i++) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |