The Neuros has several on-disk databases that are used by both the device during normal operation and the host computer during synchronization. The primary databases are:
Each database can be thought as a collection of records with a fixed
number (greater than or equal to 1) of fields. The first field is the
primary field. Next are zero or more fields called
The database structure described above is implemented recursively using a root database (audio, unidedhisi, etc.) with a child database (artist, genre, etc.) for each access key. When a record is added to the root, the actual contents of each access key field are replaced with a pointer to the record in the child db containing the value in its primary field. Of course, if the value doesn't already exist in the child database, it must be added. The following diagram shows an example record from the audio database:
Notice that null values are possible for access keys; just use a pointer to the null record in the child database.
Each root database is stored in a directory whose name is the same as
the database name. Inside that directory are two files holding the
contents of the root database, a
audio/albums.mdb - Album child database audio/albums.pai audio/albums.sai audio/artist.mdb - Artist child database audio/artist.pai audio/artist.sai audio/audio.mdb - Root database audio/audio.sai audio/genre.mdb - Genre child database audio/genre.pai audio/genre.sai audio/playlist.mdb - Playlist child database audio/playlist.pai audio/playlist.sai audio/recordings.mdb - Recordings child database audio/recordings.pai audio/recordings.sai
All database files are treated as a sequence of 16-bit words. A "pointer" is a word offset in a file. So a pointer with value 0 refers to bytes 0 and 1 in the file, and a pointer with value 22 refers to bytes 44 and 45. Null-terminated strings are padded with an extra null byte if they do not end on a word boundary and are terminated with a null word (0x0000). Integers (including pointers) and bitfields are always stored in big-endian format.
In the following sections, the fields for each of the standard databases are defined. The following types are used to describe the extra info fields:
Note that the primary field is always a null-terminated string, and the access keys are pointers to records in child databases which have only a primary field (also a null-terminated string).
# | Name | Type | Description |
---|---|---|---|
0 |