1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
|
Changes since v1.0.1:
Fixed a bug in the njb3_set_time() function - it wasn't
reading back the status value after the operation.
Rewrote the metadata scanner to make it more generic, also
unified the NJB1 and NJB3-series code for sending files,
and allowing for short writes to occur on NJB3-series
devices.
Added reading of device keys by default. Probably useful
for something yet to be disclosed.
Changed the playlist fill-in routine so that track ID:s
less than 0 are not returned. The typical value
0xfffffffe (-2) is a placeholder for lost tracks.
Unicode length detection feature for extended character
sets was bugged. Fixed by Friso Brugmans.
Refactored metadata handling code for series 3 devices
yet once more. This time it is even closer to the way it
should work, and rid even more bugs. Notably libnjb could
not handle a very large collection of playlists before this.
Added MacOS X compilation support under GCC. Switched to
libtool to handle this efficiently.
Long awaited bug fix that handles corrupted playlists. These
appear when you create a playlist and remove all the tracks
that were part of this playlist from the jukebox. It will
then report as "a playlist containing tracks" whereas indeed
it is not.
Added support for Dell Digital DJ
Improved track transfer routines JB -> Host direction to be
more archaic.
Changes since v0.9b:
Updated the build documentation for BSD.
Updated source code to compile under FreeBSD 4.6-RELEASE and
higher (accounting for struct changes in dev/usb/usb.h)
Added basic stuff for slowly emerging Nomad Jukebox 3
integration: added a property njb_t so that you can check
which jukebox is connected with njb->device_type (possible
values NJB_DEVICE_NJB1 and NJB_DEVICE_NJB3) where appropriate.
Added support for NJB_Discover, NJB_Open, NJB_Close,
NJB_Handshake so that integration with older programs will
work seamlessly.
Added support for NJB_Ping, NJB_Get_Owner_String,
NJB_Set_Owner_String, NJB_Get_Disk_Usage and NJB_Get_Time
to have something to start with.
Device specific code goes into protocol.c and protocol3.c.
Function specific code goes into eg time.c, and generic
callbacks in procedure.c. Commands that differ subtantially
may be defined as NJ3_Foo in procedure.c, eg for track
listing and metadata change this may be necessary. The user
may then write jukebox-specific code by detecting the
value in njb->device_type.
I decided against a specific njb3.c file as it is better to
put everything njb3 protocol related into protocol3.c as
of now, as static functions.
Added support for reading the tracklist, NJB_Get_Track_Tag()
now works beutifully on NJB3.
Added support to NJB_Get_Track with some kind of callback
which does not give access to any buffer (what was that
actually for?). Getting tracks off the jukebox now actually
works, though it's a bit hacky.
Getting tracks is finished, and so is NJB_Send_Track().
You may start using libnjb for putting and getting tracks
on NJB3 devices. The first track ever transferred using
the NJB3 part of the library was "Covenant - Call the ships
to port".
Fixed NJB_Delete_Track() and NJB_Replace_Track_Tag()
NJB_Get_Playlist() and a bug in NJB_Get_Track_Tag().
Fixed NJB_Delete_Playlist(), NJB_Rename_Playlist(). All
for NJB3.
Added full unicode support, that will be enabled by calling
the library function NJB_Set_Unicode() with (preferably)
the argument NJB_UC_UTF8, or any other character mode that
you want to implement. (UTF8 should be good for all.)
Implemented datafile transfer functions for NJB3 more or
less - still some problems left. Transfering data files
off the jukebox will still not work.
Only playback functions and EAX remain to be fixed for the
NJB3.
Added detection for NJB2. Assuming its protocol to be
identical to NJB3's.
Added detection for NJB ZEN. Assuming its protocol to
be identical to NJB3's.
Uncertain of the BSD part of these device detections.
The detection code in base.c is especially ugly in the
BSD case.
Added a set time patch for NJB3/2/ZEN from Ben Levitt.
Added detection and preliminary support for NJB Zen NX.
Added detection and preliminary support for NJB Zen Xtra.
INTERFACE INCOMPATIBLE CHANGES
------------------------------
Added several patches from David A. Knight adding
a void data pointer to several calls, for suppling a
user-defined pointer, so that a user program may
determine which device provided a particular callback
call. Those who do not want to use it may use
NULL in this placeholder. Affected functions:
NJB_Get_Track
NJB_Send_Track
NJB_Get_File
NJB_Send_File
Another incompatibility comes from adding YEAR and
PlayOnly metadata tags in the following functions:
NJB_Send_Track
NJB_Replace_Track_Tag
PlayOnly set to "1" means that the track is protected
and cannot be copied off the jukebox.
2003-01-11
ZEN patches from Dwight Engen, suspect that these will
be the same for NJB2/3, but keeping them separate as of
now.
2003-03-18
Several NJB2 patches from Bernie.
2003-10-10
Previously added Nomad Zen USB 2.0 support
Added Nomad Zen NX support
Changes since v0.8b:
Fixed memory leaks in protocol.c - raw EAX data was not
freed, dangerous freeing of null pointer on error removed
things should be OK now.
Added the commands NJB_Get_Time() and NJB_Set_Time() which
are currently undocumented in the protocol spec. Added
the sample programs "dumptime" and "settime" to illustrate
the new functionality.
Added shared library (.so) support.
Added NJB_Refresh_EAX command support, which is currently
undocumented in the protocol spec.
Added an explict NJB_Ping() command that e.g. can provide
the user with firmware revision number and power connection
status.
Added -Wall and -Wmissing-prototypes to Makefiles and tweaked
code to build cleanly with these options.
Changes since v0.7b:
Added CHANGES file. This was long overdue.
Added suport for "queue already empty" error (submitted by Linus
Walleij).
Added NJB_Replace_Track_Tag (Linus Walleij, with modifications).
Fixed boundary errors in njb_get_track_tag and njb_get_playlist.
Updated sample programs to support runtime debug output via -D.
Added "tagtr" sample program (changes the tag of a track stored
on the NJB).
Fixed memory leaks in procedure.c
Patches from Linus Walleij (2002-03-26):
Added NJB_Adjust_Sound() for full EAX and volume control
Rewrote the old eax_t into a struct that parses the EAX
data into meaningful chunks and makes it easy to maintain.
also added eax_destroy() to rid this structure.
Added fully functional NJB_Send_File() and NJB_Delete_File()
NJB_Get_File() still poses problems. Added sample programs
that illustrate usage of these functions.
Removed small bug in sendtr.c, usage() was missing
parentheses.
Patches from Linus Walleij (2002-03-29):
Fixed bugs with filesize and string termination in
tag pack/unpack routines in datafile.c
Bug fixes in protocol.c regarding datafiles.
|