rockbox/utils/nwztools/database
Amaury Pouly 1d121e8c08 Initial commit for the Sony NWZ linux port
SUPPORTED SERIES:
- NWZ-E450
- NWZ-E460
- NWZ-E470
- NWZ-E580
- NWZ-A10

NOTES:
- bootloader makefile convert an extra font to be installed alongside the bootloader
  since sysfont is way too small
- the toolsicon bitmap comes from the Oxygen iconset
- touchscreen driver is untested

TODO:
- implement audio routing driver (pcm is handled by pcm-alsa)
- fix playback: it crashes on illegal instruction in DEBUG builds
- find out why the browser starts at / instead of /contents
- implement radio support
- implement return to OF for usb handling
- calibrate battery curve (NB: of can report a battery level on a 0-5 scale but
  probabl don't want to use that ?)
- implement simulator build (we need a nice image of the player)
- figure out if we can detect jack removal

POTENTIAL TODOS:
- try to build a usb serial gadget and gdbserver

Change-Id: Ic77d71e0651355d47cc4e423a40fb64a60c69a80
2017-09-05 21:42:12 +02:00
..
nvp nwztools: add nvp description for NW-S10 series 2017-06-13 20:41:43 +02:00
check_models_series.sh nwztools/database: add database of information on Sony NWZ linux players 2016-11-11 16:07:14 +01:00
gen_db.py Initial commit for the Sony NWZ linux port 2017-09-05 21:42:12 +02:00
models.txt Add NW-A36 and NW-A37 model IDs, based on the A30 service manual. 2017-06-05 16:17:13 -05:00
README nwztools/database: add database of information on Sony NWZ linux players 2016-11-11 16:07:14 +01:00
series.txt Add NW-A36 and NW-A37 model IDs, based on the A30 service manual. 2017-06-05 16:17:13 -05:00

This file explains how the database was created an how to update it.

Model list
==========

The model list (models.txt) was extract from Sony's mptapp on target. This is
most probably the only reliable way of getting model IDs. It cannot be done
automatically but it is easy to locate the list using a tool like IDA. It is
basically a long list of the following structure:
  struct model_info_t
  {
    const char *name;
    uin32_t mid;
  };
Once identified, it is easy to copy it to a file and grep/sed/awk it to produce
the textual list. It depends on which tool you use. I decided to keep this list
because it is an easy format to produce and parse. For consistency, I decided
to use upper case for the model name and lower case for mid. Keep this when
you modify the list to keep the diff minimal.

IMPORTANT NOTE: some players have more than one model ID (ie same name) !!

FORMAT (models.txt): list of pairs <mid>,<name> where <name> is upper case
human name of the player and <mid> is the lower-case hex value of the model ID.

Series list
===========

The original series list was semi-automatically generated. Unfortunately, Sony
does not use a 100% regular naming scheme. It is thus simpler to modify it by
hand for newer models. To keep consistency, the generator script will make sure
that the series list only refers to device in the model list and that no device
in the model list is not refered to.

FORMAT (series.txt): list of <codename>,<name>,<mid1>,<mid2>,... where <codename>
is the (Rockbox-only) codename of the series (that should match what other tools
use, like upgtools), always in lower case; where <name> is the humand name of the
series, and <midX> is the list of models in the series (given by model IDs because
name are not uniques).

Advise on tooling
=================

The format of the file was carefully chosen to be easy to use and produce. It
avoids uses spaces are separators because it breaks easily. The "," separator
is a good match in this case and shouldn't pose a problem. In most tools, changing
the separator is easy. For example with awk, you can use the
  -F ","
option, or define in the preamble with
  BEGIN { FS = ","; }
. Other tools have similar constructs.

NVPs
====

See nvps/README

gen_db.py
=========

This script generates the database (nwz_db.{c,h}) from the various textual files.
The output must NOT be touched by hand.