| $publicrelease="3.13"; |
| $manualrelease="3.13"; |
| $voicerelease="3.13"; |
| $releasedate="05 March 2013"; |
| $releasenotes="/wiki/ReleaseNotes313"; |
| |
| %builds = ( |
| 'archosav300' => { |
| name => 'Archos AV300', |
| status => 1, # 3=stable, 2=unstable, 1=unusable |
| }, |
| 'archosfmrecorder' => { |
| name => 'Archos FM Recorder', |
| status => 3, |
| ram => 2, |
| }, |
| 'archosondiofm' => { |
| name => 'Archos Ondio FM', |
| status => 3, |
| ram => 2, |
| }, |
| 'archosondiosp' => { |
| name => 'Archos Ondio SP', |
| status => 3, |
| ram => 2, |
| }, |
| 'archosplayer' => { |
| name => 'Archos Player/Studio', |
| status => 3, |
| ram => 2, |
| }, |
| 'archosrecorder' => { |
| name => 'Archos Recorder v1', |
| status => 3, |
| ram => 2, |
| }, |
| 'archosrecorderv2' => { |
| name => 'Archos Recorder v2', |
| status => 3, |
| ram => 2, |
| manual => "archosfmrecorder", |
| }, |
| 'cowond2' => { |
| name => 'Cowon D2', |
| status => 2, |
| manual => 'cowond2', |
| }, |
| 'gigabeatfx' => { |
| name => 'Toshiba Gigabeat F/X', |
| status => 3, |
| }, |
| 'gigabeats' => { |
| name => 'Toshiba Gigabeat S', |
| status => 2, |
| }, |
| 'gogearhdd1630' => { |
| name => 'Philips GoGear HDD1630', |
| status => 3, |
| }, |
| 'gogearhdd6330' => { |
| name => 'Philips GoGear HDD6330', |
| status => 3, |
| }, |
| 'gogearsa9200' => { |
| name => 'Philips GoGear SA9200', |
| status => 3, |
| }, |
| 'hifietma9' => { |
| name => 'HiFi E.T MA9', |
| status => 2, |
| }, |
| 'hifietma9c' => { |
| name => 'HiFi E.T MA9C', |
| status => 2, |
| }, |
| 'hifietma8' => { |
| name => 'HiFi E.T MA8', |
| status => 2, |
| }, |
| 'hifietma8c' => { |
| name => 'HiFi E.T MA8C', |
| status => 2, |
| }, |
| 'hifimanhm60x' => { |
| name => 'HiFiMAN HM-60x', |
| status => 2, |
| }, |
| 'hifimanhm801' => { |
| name => 'HiFiMAN HM-801', |
| status => 2, |
| }, |
| 'iaudio7' => { |
| name => 'iAudio 7', |
| status => 1, |
| }, |
| 'iaudiom3' => { |
| name => 'iAudio M3', |
| status => 3, |
| }, |
| 'iaudiom5' => { |
| name => 'iAudio M5', |
| status => 3, |
| }, |
| 'iaudiox5' => { |
| name => 'iAudio X5', |
| status => 3, |
| }, |
| 'ibassodx50' => { |
| name => 'iBasso DX50', |
| status => 2, |
| }, |
| 'ibassodx90' => { |
| name => 'iBasso DX90', |
| status => 2, |
| }, |
| 'ipod1g2g' => { |
| name => 'iPod 1st and 2nd gen', |
| status => 3, |
| }, |
| 'ipod3g' => { |
| name => 'iPod 3rd gen', |
| status => 3, |
| }, |
| 'ipod4g' => { |
| name => 'iPod 4th gen Grayscale', |
| status => 3, |
| }, |
| 'ipodcolor' => { |
| name => 'iPod color/Photo', |
| status => 3, |
| }, |
| 'ipodmini1g' => { |
| name => 'iPod Mini 1st gen', |
| status => 3, |
| }, |
| 'ipodmini2g' => { |
| name => 'iPod Mini 2nd gen', |
| status => 3, |
| icon => 'ipodmini1g', |
| manual => 'ipodmini1g', |
| }, |
| 'ipodnano1g' => { |
| name => 'iPod Nano 1st gen', |
| status => 3, |
| }, |
| 'ipodnano2g' => { |
| name => 'iPod Nano 2nd gen', |
| status => 2, |
| release => '3.10', |
| }, |
| 'ipodvideo' => { |
| name => 'iPod Video', |
| status => 3, |
| }, |
| 'ipod6g' => { |
| name => 'iPod 6th gen (Classic)', |
| status => 1, |
| }, |
| 'iriverh10' => { |
| name => 'iriver H10 20GB', |
| status => 3, |
| }, |
| 'iriverh10_5gb' => { |
| name => 'iriver H10 5GB', |
| status => 3, |
| }, |
| 'iriverh100' => { |
| name => 'iriver H100/115', |
| status => 3, |
| }, |
| 'iriverh120' => { |
| name => 'iriver H120/140', |
| status => 3, |
| icon => 'iriverh100', |
| manual => 'iriverh100', |
| }, |
| 'iriverh300' => { |
| name => 'iriver H320/340', |
| status => 3, |
| }, |
| 'iriverifp7xx' => { |
| name => 'iriver iFP-7xx', |
| status => 1, |
| }, |
| 'logikdax' => { |
| name => 'Logik DAX', |
| status => 1, |
| }, |
| 'lyreproto1' => { |
| name => 'Lyre Prototype 1', |
| status => 1, |
| }, |
| 'mini2440' => { |
| name => 'Mini 2440', |
| status => 1, |
| }, |
| 'meizum3' => { |
| name => 'Meizu M3', |
| status => 1, |
| }, |
| 'meizum6sl' => { |
| name => 'Meizu M6SL', |
| status => 1, |
| }, |
| 'meizum6sp' => { |
| name => 'Meizu M6SP', |
| status => 1, |
| }, |
| 'mrobe100' => { |
| name => 'Olympus M-Robe 100', |
| status => 3, |
| }, |
| 'mrobe500' => { |
| name => 'Olympus M-Robe 500', |
| status => 2, |
| }, |
| 'ondavx747' => { |
| name => 'Onda VX747', |
| status => 1, |
| }, |
| 'ondavx747p' => { |
| name => 'Onda VX747+', |
| status => 1, |
| }, |
| 'ondavx767' => { |
| name => 'Onda VX767', |
| status => 1, |
| }, |
| 'ondavx777' => { |
| name => 'Onda VX777', |
| status => 1, |
| }, |
| 'rk27generic' => { |
| name => 'Rockchip rk27xx', |
| status => 1, |
| }, |
| 'samsungyh820' => { |
| name => 'Samsung YH-820', |
| status => 3, |
| }, |
| 'samsungyh920' => { |
| name => 'Samsung YH-920', |
| status => 3, |
| }, |
| 'samsungyh925' => { |
| name => 'Samsung YH-925', |
| status => 3, |
| }, |
| 'samsungypr0' => { |
| name => 'Samsung YP-R0', |
| status => 2, |
| }, |
| 'samsungyps3' => { |
| name => 'Samsung YP-S3', |
| status => 1, |
| }, |
| 'sansac100' => { |
| name => 'SanDisk Sansa c100', |
| status => 1, |
| }, |
| 'sansac200' => { |
| name => 'SanDisk Sansa c200', |
| status => 3, |
| }, |
| 'sansac200v2' => { |
| name => 'SanDisk Sansa c200 v2', |
| status => 3, |
| icon => 'sansac200', |
| }, |
| 'sansaclip' => { |
| name => 'SanDisk Sansa Clip v1', |
| status => 3, |
| }, |
| 'sansaclipv2' => { |
| name => 'SanDisk Sansa Clip v2', |
| status => 3, |
| icon => 'sansaclip', |
| }, |
| 'sansaclipplus' => { |
| name => 'SanDisk Sansa Clip+', |
| status => 3, |
| }, |
| 'sansaclipzip' => { |
| name => 'SanDisk Sansa Clip Zip', |
| status => 3, |
| }, |
| 'sansae200' => { |
| name => 'SanDisk Sansa e200', |
| status => 3, |
| }, |
| 'sansae200v2' => { |
| name => 'SanDisk Sansa e200 v2', |
| status => 3, |
| icon => 'sansae200', |
| }, |
| 'sansafuze' => { |
| name => 'SanDisk Sansa Fuze', |
| status => 3, |
| }, |
| 'sansafuzev2' => { |
| name => 'SanDisk Sansa Fuze v2', |
| status => 3, |
| icon => 'sansafuze', |
| }, |
| 'sansafuzeplus' => { |
| name => 'SanDisk Sansa Fuze+', |
| status => 3, |
| icon => 'sansafuzeplus', |
| }, |
| 'sansam200' => { |
| name => 'SanDisk Sansa m200', |
| status => 1, |
| }, |
| 'sansam200v4' => { |
| name => 'SanDisk Sansa m200 v4', |
| status => 1, |
| }, |
| 'sansaview' => { |
| name => 'SanDisk Sansa View', |
| status => 1, |
| }, |
| 'tatungtpj1022' => { |
| name => 'Tatung Elio TPJ-1022', |
| status => 1, |
| }, |
| 'vibe500' => { |
| name => 'Packard Bell Vibe 500', |
| status => 3, |
| }, |
| 'zenvision' => { |
| name => 'Creative Zen Vision', |
| status => 1, |
| }, |
| 'zenvisionm30gb' => { |
| name => 'Creative Zen Vision:M 30GB', |
| status => 1, |
| }, |
| 'zenvisionm60gb' => { |
| name => 'Creative Zen Vision:M 60GB', |
| status => 1, |
| }, |
| 'mpiohd200' => { |
| name => 'MPIO HD200', |
| status => 2, |
| }, |
| 'mpiohd300' => { |
| name => 'MPIO HD300', |
| status => 3, |
| }, |
| 'creativezenxfi2' => { |
| name => 'Creative Zen X-Fi2', |
| status => 2, |
| }, |
| 'creativezenxfi3' => { |
| name => 'Creative Zen X-Fi3', |
| status => 3, |
| }, |
| 'sonynwze360' => { |
| name => 'Sony NWZ-E360', |
| status => 3, |
| }, |
| 'sonynwze370' => { |
| name => 'Sony NWZ-E370/E380', |
| status => 3, |
| }, |
| 'creativezenxfi' => { |
| name => 'Creative Zen X-Fi', |
| status => 3 |
| }, |
| 'creativezenxfistyle' => { |
| name => 'Creative Zen X-Fi Style', |
| status => 3 |
| }, |
| 'creativezen' => { |
| name => 'Creative Zen', |
| status => 2 |
| }, |
| 'creativezenmozaic' => { |
| name => 'Creative Zen Mozaic', |
| status => 3 |
| }, |
| ); |
| |
| sub manualname { |
| my $m = shift @_; |
| |
| return $builds{$m}{manual} ? "$builds{$m}{manual}" : $m; |
| } |
| |
| sub voicename { |
| my $m = shift @_; |
| |
| return $builds{$m}{voice} ? "$builds{$m}{voice}" : $m; |
| } |
| |
| sub byname { |
| return uc $builds{$a}{name} cmp uc $builds{$b}{name}; |
| } |
| |
| sub usablebuilds { |
| my @list; |
| |
| for my $b (sort byname keys %builds) { |
| push @list, $b if ($builds{$b}{status} >= 2); |
| } |
| |
| return @list; |
| } |
| |
| sub stablebuilds { |
| my @list; |
| |
| for my $b (sort byname keys %builds) { |
| push @list, $b if ($builds{$b}{status} >= 3) or $builds{$b}{release}; |
| } |
| |
| return @list; |
| } |
| |
| sub allbuilds { |
| my @list; |
| |
| for my $b (sort byname keys %builds) { |
| push @list, $b if ($builds{$b}{status} >= 1); |
| } |
| |
| return @list; |
| } |
| |
| 1; |