blob: 7fd1ef4812b8985c7dc03aa9286670f381e0f00c [file] [log] [blame]
Franklin Wei54e7eaf2019-10-28 00:54:52 -04001$publicrelease="3.15";
2$manualrelease="3.15";
3$voicerelease="3.15";
4$releasedate="15 Nov 2019";
5$releasenotes="/wiki/ReleaseNotes315";
Björn Stenberg9d4f0762009-12-07 12:20:56 +00006
7%builds = (
8 'archosav300' => {
9 name => 'Archos AV300',
10 status => 1, # 3=stable, 2=unstable, 1=unusable
11 },
12 'archosfmrecorder' => {
13 name => 'Archos FM Recorder',
14 status => 3,
Michael Chicoinef5c70522009-12-10 19:50:25 +000015 ram => 2,
Björn Stenberg9d4f0762009-12-07 12:20:56 +000016 },
17 'archosondiofm' => {
18 name => 'Archos Ondio FM',
19 status => 3,
Michael Chicoinef5c70522009-12-10 19:50:25 +000020 ram => 2,
Björn Stenberg9d4f0762009-12-07 12:20:56 +000021 },
22 'archosondiosp' => {
23 name => 'Archos Ondio SP',
24 status => 3,
Michael Chicoinef5c70522009-12-10 19:50:25 +000025 ram => 2,
Björn Stenberg9d4f0762009-12-07 12:20:56 +000026 },
27 'archosplayer' => {
28 name => 'Archos Player/Studio',
29 status => 3,
Michael Chicoinef5c70522009-12-10 19:50:25 +000030 ram => 2,
Björn Stenberg9d4f0762009-12-07 12:20:56 +000031 },
32 'archosrecorder' => {
33 name => 'Archos Recorder v1',
34 status => 3,
Michael Chicoinef5c70522009-12-10 19:50:25 +000035 ram => 2,
Franklin Wei370f9fa2019-10-28 00:06:58 -040036 release => '3.13',
Björn Stenberg9d4f0762009-12-07 12:20:56 +000037 },
38 'archosrecorderv2' => {
39 name => 'Archos Recorder v2',
40 status => 3,
Michael Chicoinef5c70522009-12-10 19:50:25 +000041 ram => 2,
Björn Stenbergbd3b58f2009-12-17 13:53:17 +000042 manual => "archosfmrecorder",
Björn Stenberg9d4f0762009-12-07 12:20:56 +000043 },
44 'cowond2' => {
45 name => 'Cowon D2',
46 status => 2,
Tomer Shalev13c78662009-12-14 20:18:38 +000047 manual => 'cowond2',
Björn Stenberg9d4f0762009-12-07 12:20:56 +000048 },
49 'gigabeatfx' => {
50 name => 'Toshiba Gigabeat F/X',
51 status => 3,
52 },
53 'gigabeats' => {
54 name => 'Toshiba Gigabeat S',
55 status => 2,
56 },
57 'gogearhdd1630' => {
58 name => 'Philips GoGear HDD1630',
Szymon Dziok92450a92016-09-22 22:28:42 +020059 status => 3,
Robert Menese68844a2010-11-02 21:46:59 +000060 },
Daniel Stenberga6db8262010-11-02 21:58:19 +000061 'gogearhdd6330' => {
62 name => 'Philips GoGear HDD6330',
Szymon Dziok92450a92016-09-22 22:28:42 +020063 status => 3,
Björn Stenberg9d4f0762009-12-07 12:20:56 +000064 },
65 'gogearsa9200' => {
66 name => 'Philips GoGear SA9200',
Szymon Dziok92450a92016-09-22 22:28:42 +020067 status => 3,
Björn Stenberg9d4f0762009-12-07 12:20:56 +000068 },
Andrew Ryabininfc0cf8d2013-05-18 18:57:16 +040069 'hifietma9' => {
70 name => 'HiFi E.T MA9',
71 status => 2,
72 },
Andrew Ryabinina7fa7b92013-11-05 11:24:50 +040073 'hifietma9c' => {
74 name => 'HiFi E.T MA9C',
75 status => 2,
76 },
77 'hifietma8' => {
78 name => 'HiFi E.T MA8',
79 status => 2,
80 },
81 'hifietma8c' => {
82 name => 'HiFi E.T MA8C',
83 status => 2,
84 },
Andrew Ryabinin0e190672012-04-20 14:49:35 +040085 'hifimanhm60x' => {
86 name => 'HiFiMAN HM-60x',
87 status => 2,
88 },
89 'hifimanhm801' => {
90 name => 'HiFiMAN HM-801',
91 status => 2,
92 },
Björn Stenberg9d4f0762009-12-07 12:20:56 +000093 'iaudio7' => {
94 name => 'iAudio 7',
95 status => 1,
96 },
97 'iaudiom3' => {
98 name => 'iAudio M3',
99 status => 3,
100 },
101 'iaudiom5' => {
102 name => 'iAudio M5',
103 status => 3,
104 },
105 'iaudiox5' => {
106 name => 'iAudio X5',
107 status => 3,
108 },
Simon Rothenb84fd872015-02-21 15:05:16 +0100109 'ibassodx50' => {
110 name => 'iBasso DX50',
111 status => 2,
112 },
113 'ibassodx90' => {
114 name => 'iBasso DX90',
115 status => 2,
116 },
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000117 'ipod1g2g' => {
118 name => 'iPod 1st and 2nd gen',
119 status => 3,
120 },
121 'ipod3g' => {
122 name => 'iPod 3rd gen',
123 status => 3,
124 },
125 'ipod4g' => {
126 name => 'iPod 4th gen Grayscale',
127 status => 3,
128 },
129 'ipodcolor' => {
130 name => 'iPod color/Photo',
131 status => 3,
132 },
133 'ipodmini1g' => {
134 name => 'iPod Mini 1st gen',
135 status => 3,
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000136 },
137 'ipodmini2g' => {
138 name => 'iPod Mini 2nd gen',
139 status => 3,
140 icon => 'ipodmini1g',
Björn Stenberg5ce515c2009-12-15 20:42:24 +0000141 manual => 'ipodmini1g',
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000142 },
143 'ipodnano1g' => {
144 name => 'iPod Nano 1st gen',
145 status => 3,
146 },
147 'ipodnano2g' => {
148 name => 'iPod Nano 2nd gen',
Franklin Weie016a162017-04-30 19:55:20 -0400149 status => 3,
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000150 },
151 'ipodvideo' => {
Alex Parkere23075b2010-10-30 21:50:20 +0000152 name => 'iPod Video',
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000153 status => 3,
154 },
Frank Gevaerts2b3cff82012-07-01 21:06:52 +0200155 'ipod6g' => {
156 name => 'iPod 6th gen (Classic)',
Franklin Weif72b9082019-10-28 00:07:23 -0400157 status => 3,
Frank Gevaerts2b3cff82012-07-01 21:06:52 +0200158 },
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000159 'iriverh10' => {
160 name => 'iriver H10 20GB',
161 status => 3,
162 },
163 'iriverh10_5gb' => {
164 name => 'iriver H10 5GB',
165 status => 3,
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000166 },
167 'iriverh100' => {
168 name => 'iriver H100/115',
169 status => 3,
170 },
171 'iriverh120' => {
172 name => 'iriver H120/140',
173 status => 3,
174 icon => 'iriverh100',
175 manual => 'iriverh100',
176 },
177 'iriverh300' => {
178 name => 'iriver H320/340',
179 status => 3,
180 },
181 'iriverifp7xx' => {
182 name => 'iriver iFP-7xx',
183 status => 1,
184 },
185 'logikdax' => {
186 name => 'Logik DAX',
187 status => 1,
188 },
189 'lyreproto1' => {
190 name => 'Lyre Prototype 1',
191 status => 1,
192 },
193 'mini2440' => {
194 name => 'Mini 2440',
195 status => 1,
196 },
197 'meizum3' => {
198 name => 'Meizu M3',
199 status => 1,
200 },
201 'meizum6sl' => {
202 name => 'Meizu M6SL',
203 status => 1,
204 },
205 'meizum6sp' => {
206 name => 'Meizu M6SP',
207 status => 1,
208 },
209 'mrobe100' => {
210 name => 'Olympus M-Robe 100',
Szymon Dziokfeff0212014-01-13 00:58:24 +0100211 status => 3,
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000212 },
213 'mrobe500' => {
214 name => 'Olympus M-Robe 500',
215 status => 2,
216 },
217 'ondavx747' => {
218 name => 'Onda VX747',
219 status => 1,
220 },
221 'ondavx747p' => {
222 name => 'Onda VX747+',
223 status => 1,
224 },
225 'ondavx767' => {
226 name => 'Onda VX767',
227 status => 1,
228 },
229 'ondavx777' => {
230 name => 'Onda VX777',
231 status => 1,
232 },
Andrew Ryabinin0e190672012-04-20 14:49:35 +0400233 'rk27generic' => {
234 name => 'Rockchip rk27xx',
235 status => 1,
Björn Stenberg2315a232012-04-20 15:23:49 +0200236 },
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000237 'samsungyh820' => {
238 name => 'Samsung YH-820',
Szymon Dziok5869ad22016-09-22 21:48:01 +0200239 status => 3,
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000240 },
241 'samsungyh920' => {
242 name => 'Samsung YH-920',
Szymon Dziok5869ad22016-09-22 21:48:01 +0200243 status => 3,
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000244 },
245 'samsungyh925' => {
246 name => 'Samsung YH-925',
Szymon Dziok5869ad22016-09-22 21:48:01 +0200247 status => 3,
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000248 },
Frank Gevaertsdbcf1732012-01-29 13:54:46 +0100249 'samsungypr0' => {
250 name => 'Samsung YP-R0',
251 status => 2,
252 },
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000253 'samsungyps3' => {
254 name => 'Samsung YP-S3',
255 status => 1,
256 },
257 'sansac100' => {
258 name => 'SanDisk Sansa c100',
259 status => 1,
260 },
261 'sansac200' => {
262 name => 'SanDisk Sansa c200',
263 status => 3,
264 },
265 'sansac200v2' => {
266 name => 'SanDisk Sansa c200 v2',
Michael Giacomelli0e4a2982012-03-28 18:03:04 -0400267 status => 3,
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000268 icon => 'sansac200',
269 },
270 'sansaclip' => {
Dave Chapmanc391c112010-03-25 20:16:34 +0000271 name => 'SanDisk Sansa Clip v1',
Rafaël Carré829ddaa2010-09-06 18:48:04 +0000272 status => 3,
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000273 },
274 'sansaclipv2' => {
275 name => 'SanDisk Sansa Clip v2',
Thomas Martitz5ee1c402010-10-30 13:55:20 +0000276 status => 3,
Björn Stenbergab610e82010-03-24 20:28:10 +0000277 icon => 'sansaclip',
Björn Stenbergab610e82010-03-24 20:28:10 +0000278 },
279 'sansaclipplus' => {
280 name => 'SanDisk Sansa Clip+',
Thomas Martitz5ee1c402010-10-30 13:55:20 +0000281 status => 3,
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000282 },
Frank Gevaerts1107bf12011-10-31 20:35:11 +0000283 'sansaclipzip' => {
284 name => 'SanDisk Sansa Clip Zip',
Rafaël Carréc1305ce2013-02-09 16:36:19 +0100285 status => 3,
Frank Gevaerts1107bf12011-10-31 20:35:11 +0000286 },
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000287 'sansae200' => {
288 name => 'SanDisk Sansa e200',
289 status => 3,
290 },
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000291 'sansae200v2' => {
292 name => 'SanDisk Sansa e200 v2',
Dominik Wenger97865102010-02-03 21:11:39 +0000293 status => 3,
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000294 icon => 'sansae200',
295 },
296 'sansafuze' => {
297 name => 'SanDisk Sansa Fuze',
Dominik Wenger97865102010-02-03 21:11:39 +0000298 status => 3,
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000299 },
Rafaël Carré68535552010-04-01 07:26:47 +0000300 'sansafuzev2' => {
301 name => 'SanDisk Sansa Fuze v2',
Thomas Martitz5ee1c402010-10-30 13:55:20 +0000302 status => 3,
Rafaël Carré68535552010-04-01 07:26:47 +0000303 icon => 'sansafuze',
304 },
Amaury Poulyd6848582012-01-27 20:19:07 +0100305 'sansafuzeplus' => {
306 name => 'SanDisk Sansa Fuze+',
Amaury Poulyc534be02016-09-21 20:39:46 +0100307 status => 3,
Amaury Poulyc18a4e62012-01-27 20:41:04 +0100308 icon => 'sansafuzeplus',
Amaury Poulyd6848582012-01-27 20:19:07 +0100309 },
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000310 'sansam200' => {
311 name => 'SanDisk Sansa m200',
312 status => 1,
313 },
314 'sansam200v4' => {
315 name => 'SanDisk Sansa m200 v4',
316 status => 1,
317 },
318 'sansaview' => {
319 name => 'SanDisk Sansa View',
320 status => 1,
321 },
322 'tatungtpj1022' => {
323 name => 'Tatung Elio TPJ-1022',
324 status => 1,
325 },
Björn Stenbergc6f2a902010-02-18 10:30:00 +0000326 'vibe500' => {
327 name => 'Packard Bell Vibe 500',
Szymon Dziokf6a17bd2010-05-15 19:24:28 +0000328 status => 3,
Björn Stenbergc6f2a902010-02-18 10:30:00 +0000329 },
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000330 'zenvision' => {
331 name => 'Creative Zen Vision',
332 status => 1,
333 },
334 'zenvisionm30gb' => {
335 name => 'Creative Zen Vision:M 30GB',
336 status => 1,
337 },
338 'zenvisionm60gb' => {
339 name => 'Creative Zen Vision:M 60GB',
340 status => 1,
341 },
Marcin Bukate0803382010-09-15 08:34:48 +0000342 'mpiohd200' => {
Marcin Bukat021d4db2010-04-29 20:09:19 +0000343 name => 'MPIO HD200',
Marcin Bukat33a5f1a2010-08-08 18:22:44 +0000344 status => 2,
Marcin Bukat021d4db2010-04-29 20:09:19 +0000345 },
Marcin Bukatabc34aa2010-11-29 09:33:26 +0000346 'mpiohd300' => {
347 name => 'MPIO HD300',
Marcin Bukat3448f5b2012-03-10 14:26:31 +0100348 status => 3,
Marcin Bukatabc34aa2010-11-29 09:33:26 +0000349 },
Amaury Pouly2e0a3fc2013-10-02 17:08:15 +0200350 'creativezenxfi2' => {
351 name => 'Creative Zen X-Fi2',
Amaury Poulyc534be02016-09-21 20:39:46 +0100352 status => 2,
Amaury Pouly2e0a3fc2013-10-02 17:08:15 +0200353 },
354 'creativezenxfi3' => {
355 name => 'Creative Zen X-Fi3',
Amaury Poulyc534be02016-09-21 20:39:46 +0100356 status => 3,
Amaury Pouly2e0a3fc2013-10-02 17:08:15 +0200357 },
Amaury Pouly6a62cc12017-09-17 23:49:07 +0200358 'sonynwze350' => {
359 name => 'Sony NWZ-E350',
360 status => 2,
361 },
Amaury Pouly2e0a3fc2013-10-02 17:08:15 +0200362 'sonynwze360' => {
363 name => 'Sony NWZ-E360',
Amaury Poulyc534be02016-09-21 20:39:46 +0100364 status => 3,
Amaury Pouly2e0a3fc2013-10-02 17:08:15 +0200365 },
366 'sonynwze370' => {
Amaury Poulyc534be02016-09-21 20:39:46 +0100367 name => 'Sony NWZ-E370/E380',
368 status => 3,
Amaury Pouly2e0a3fc2013-10-02 17:08:15 +0200369 },
Amaury Pouly6e819f82017-09-06 18:00:49 +0200370 'sonynwze450' => {
371 name => 'Sony NWZ-E450',
372 status => 2,
373 },
374 'sonynwze460' => {
375 name => 'Sony NWZ-E460',
376 status => 2,
377 },
378 'sonynwze470' => {
379 name => 'Sony NWZ-E470',
380 status => 2,
381 },
382 'sonynwze580' => {
383 name => 'Sony NWZ-E580',
384 status => 2,
385 },
386 'sonynwza10' => {
387 name => 'Sony NWZ-A10',
388 status => 2,
389 },
390 'sonynwa20' => {
391 name => 'Sony NW-A20',
392 status => 2,
393 },
Amaury Pouly53ebdbc2017-09-17 00:09:07 +0200394 'sonynwza860' => {
395 name => 'Sony NWZ-A860',
396 status => 2,
397 },
Amaury Pouly91d3c8e2017-09-17 14:35:58 +0200398 'sonynwzs750' => {
399 name => 'Sony NWZ-S750',
400 status => 2,
401 },
Amaury Pouly6bff0f72013-11-12 16:24:20 +0000402 'creativezenxfi' => {
403 name => 'Creative Zen X-Fi',
Amaury Poulyc534be02016-09-21 20:39:46 +0100404 status => 3
405 },
406 'creativezenxfistyle' => {
407 name => 'Creative Zen X-Fi Style',
408 status => 3
Amaury Pouly6bff0f72013-11-12 16:24:20 +0000409 },
410 'creativezen' => {
411 name => 'Creative Zen',
Amaury Poulyc534be02016-09-21 20:39:46 +0100412 status => 2
Amaury Pouly6bff0f72013-11-12 16:24:20 +0000413 },
414 'creativezenmozaic' => {
415 name => 'Creative Zen Mozaic',
Amaury Poulyc534be02016-09-21 20:39:46 +0100416 status => 3
Amaury Pouly6bff0f72013-11-12 16:24:20 +0000417 },
Marcin Bukat20bdfa82018-06-14 11:29:02 +0200418 'agptekrocker' => {
419 name => 'Agptek Rocker',
420 status => 2
Franklin Weie9bdb4b2018-07-29 12:05:16 -0400421 },
Solomon Peachy06627932018-06-28 06:24:26 -0400422 'xduoox3' => {
423 name => 'xDuoo X3',
424 status => 2,
425 },
Solomon Peachyd4942cc2018-06-29 16:09:28 -0400426 'ihifi770' => {
427 name => 'Xuelin iHIFI 770',
428 status => 2,
429 },
430 'ihifi770C' => {
431 name => 'Xuelin iHIFI 770C',
432 status => 2,
433 },
434 'ihifi800' => {
435 name => 'Xuelin iHIFI 800',
436 status => 2,
437 },
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000438);
439
440sub manualname {
441 my $m = shift @_;
442
443 return $builds{$m}{manual} ? "$builds{$m}{manual}" : $m;
444}
445
446sub voicename {
447 my $m = shift @_;
448
449 return $builds{$m}{voice} ? "$builds{$m}{voice}" : $m;
450}
451
452sub byname {
Björn Stenbergf74fa912009-12-07 12:51:34 +0000453 return uc $builds{$a}{name} cmp uc $builds{$b}{name};
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000454}
455
456sub usablebuilds {
457 my @list;
458
459 for my $b (sort byname keys %builds) {
460 push @list, $b if ($builds{$b}{status} >= 2);
461 }
462
463 return @list;
464}
465
466sub stablebuilds {
467 my @list;
468
469 for my $b (sort byname keys %builds) {
Dominik Riebeling094eca62012-09-10 23:22:01 +0200470 push @list, $b if ($builds{$b}{status} >= 3) or $builds{$b}{release};
Björn Stenberg9d4f0762009-12-07 12:20:56 +0000471 }
472
473 return @list;
474}
475
Frank Gevaerts58b226e2012-02-25 15:26:11 +0100476sub allbuilds {
477 my @list;
478
479 for my $b (sort byname keys %builds) {
480 push @list, $b if ($builds{$b}{status} >= 1);
481 }
482
483 return @list;
484}
485
Björn Stenberg9d4f0762009-12-07 12:20:56 +00004861;