1 Release: version 0.0.2 - 2006/??/??
2 ------------------------------------------------------------------------------
4 - added stdint.h to parser.h for uint32_t. Thanks Ron Gage for
7 - large refactoring of the packet parsing and building code,
8 splitting the code into 3 groups:
9 - record: handles record specific parsing and building...
10 this is mostly subfields with CommonField structs
11 as their headers, but sometimes has a specific
12 header of its own, in the case of email
13 Note: email's header is as yet undecoded.
14 Record does not know the details of the packet
15 formats, only the formats of its own record data.
16 - packet: handles building of complete command packets
17 and handles parsing of commonly used header values,
18 providing an API for it... packet does not know
19 the record format details, but does know the
20 details of each Database Operation (protocol.h)
22 So far, it seems that there is a real separation
23 of operation formats and record formats, with the
24 record formats being the same even with different
25 database operation codes (GET_RECORDS /
26 OLD_GET_RECORDS), which was not confirmed before.
27 See the header size of the email record after
29 - controller: handles device state, and the management of
30 sockets, commands, and checking for response values.
31 The Controller object does not know the format
32 of either the record or the packet it is sending,
33 but does know the protocol handshake logic used
34 to talk to the device.
35 - implemented SetRecord (SET_RECORD_BY_INDEX)... syncing, here
37 - spelling correction in opensync-plugin/AUTHORS
39 - added sample hotplug scripts
40 - added .cvsignore files for doxygen and opensync directories
41 - added src/endian.h... still need to add configure support to
42 handle non-little-endian machines
43 - added exception handler in opensync plugin commit_change()
44 - removed the device reset code in probe.cc, as resetting a device
45 can renumber the devices in /proc on kernel 2.4.x,
46 and cause a failure to reach the device...
47 FIXME - this should be changed someday to reset if probing
48 fails, and restart the probe on reset, as sometimes
49 the blackberry devices respond differently when not reset
50 Ideally, the probe protocol should be properly reverse
52 - added support for retrieving record state table, which is needed
54 - added support for retrieving, deleting, and clearing the dirty
55 flags of individual blackberry device records
56 - added endian macros throughout the code
58 - added opensync-plugin to root Makefile's clean
59 - updated time conversion calls to match opensync's latest SVN
60 - added opensync_change_set_changetype() (only add for now,
62 - removed slow sync functions for now
64 - added quick "install" makefile target, to src/install by default
65 - added static library target... this is temporary until autoconf
66 stuff is added properly... needed for the opensync plugin
67 - documented in comments that Barry::BError is intended to be
68 the base classes for all exceptions
69 - added first round of implementation of an opensync plugin, based
70 on the example plugin code from the opensync sources
72 - added to Contact record class:
74 - ReadLdif() to load and parse LDAP data
75 - added fragmented send support to Socket class
76 - added Probe::FindActive() to make client programs more streamlined
77 - fixed hex/decimal printing of record counts in btool
78 - added upldif.cc, a utility to take ldapsearch output on stdin
79 and upload it to a blackberry
80 - updated src/.cvsignore
82 - added parsing of service book fields:
84 - old and new unique ID (UID)
86 - old and new description
89 - date change in legal.txt
90 - added initial parsing of ServiceBook field 0x09, and calling it
91 ServiceBookConfig for now, for lack of a better name
92 - added parsing for ServiceBook field 0x02 on 72xx Blackberries...
93 seems to be a name or description, but doesn't appear
94 in the device's own GUI... called "Hidden Name" for now
96 - added ServiceBook record class and parser code, based on some
97 of Ron Gage's reverse engineering... code is by Chris Frey
99 - fixed the libusb set_configuration/claim_interface order
100 bug in controller.{h,cc}... already fixed in probe,
101 but not controller. Thanks Ron Gage for finding this.
103 - renamed Changelog to ChangeLog in preparation for autoconf
104 - renamed Todo to TODO in preparation for autoconf
106 - make clean cleans up tests properly now
108 - turned source code browsing on in Doxyfile
109 - added LoadDatabaseByName() and LoadDatabaseByType() template members
110 to the Controller class
111 - new file: controllertmpl.h
112 - documentation fixes in builder.h
113 - added static GetDBName() functions to all record classes, in
114 support of the template Controller functions
115 - fleshed out DatabaseDatabase::GetDBNumber() and GetDBName(),
116 returning errors properly
117 - documented sample btool.cc code better, and added example
118 of Controller template member usage
120 - copyright dates updated for 2006
122 - backed out update to latest libusb DEVEL tree, since it is buggy.
123 Stick with libusb 2005/11/26
125 - added clean target to convenience Makefile
126 - added Boost to list of dependencies in README
127 - fixed minor compile warnings in base64.cc
128 - fixed new USB discovery code, and changed endpoint usage to use
129 it, instead of the READ_ENDPOINT and WRITE_ENDPOINT
130 constants... constants are now removed
131 common.h, controller.cc, probe.cc, probe.h, usbwrap.cc
132 - added ClearHalt() to Usb::Device (usbwrap.cc)
133 - updated usbwrap.h to match latest libusb CVS devel tree
134 - updated README to refer to 2005/12/30 libusb CVS devel tree
135 - added roadmap to Todo list
137 - added convenience Makefile in root directory
138 - added Hacking document
139 - minor touchups to README
140 - added caution warning to README, since this release will support
141 delete / overwrite / upload functionality
142 - minor compile order change in Makefile (speed reasons)
143 - added dynamic endpoint discovery to probe.cc
144 - changed claim_interface/set_configuration() function call order in
145 probe.cc based on feedback on the libusb mailing list
146 - added USB discovery code to usbwrap.{h,cc}
148 - fixed packing bug in new upload header struct
149 - renamed CommonField union from data to u to be consistent
150 - added return_code field to DBAccess struct, for error checking
151 - added response checking during upload: if response is non-zero
152 throw exception in controller.cc
153 - added sorting operators to record parser classes... when writing
154 contact data to the device, it may be important to write
155 group link items last, since they reference other contacts...
156 This needs to be tested, and if not required, removed.
157 - added GROUP_FLAG field code to Contact parser class
158 - fixed offset bug in Contact and Calendar Build() functions
159 - fixed name bug in Contact::Build(), now output only with data
160 - added appointment type flag support to Calendar record parser
161 class, and "all day event" flag support
163 - added autoconf to Todo list
164 - refactored the protocol structures so that record structs can
165 be reused for upload and download
166 - with new protostructs, more header control is handled by
167 controller.cc instead of record.cc parsers and builders
168 - parser code now accepts an offset, to govern start of record data
169 - changed Data sizes from int to size_t and removed casts
170 - removed unneeded Parser::GetHeaderSize() (new protostructs make
172 - added Calendar::Build() for calendar uploads
174 - added s11n-boost.h serialization templates for boost::serialization
175 - added boost::serialization to build
176 - minor change in usbwrap.cc to display error codes in decimal
177 - added SizePacket special case code to Socket::Send()... this is
178 required when uploaded packet size is a multiple of 0x40,
179 a special 3 byte size packet is sent
180 - moved some record class variables to public: so they can be
182 - fixed variable name but in RecordBuilder template
183 - added -f switch to btool, for saving and loading of record data
184 - added -s switch to btool, for uploading saved data back to handheld
185 - added Controller::SaveDatabase()
187 - fixed potential casting / pointer bug in controller.cc
188 - added builder.h, to support uploading
189 - minor comment fixes in parser.h
190 - added preliminary Contact protocol record building support
191 - fixed field order bug in ContactRecord protocol struct
192 - Contact record.h class now saves unknown Group Link field,
195 - added -fno-strict-aliasing to compiler flags so gcc-4.0.x won't
196 optimize away protocol struct casts
198 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25235
199 http://mail-index.netbsd.org/tech-kern/2003/08/11/0001.html
200 http://groups.google.ca/group/comp.lang.c++.moderated/ \
201 browse_thread/thread/e7bf096832526f8e/5714701b \
202 02a2a3cc?hl=en#5714701b02a2a3cc
203 - changed headers so that any low level protocol-specific sizes and
204 structs are completely hidden in the library...
205 this adds library-only header: protostructs.h
207 Release: version 0.0.1 - 2005/11/25
208 ------------------------------------------------------------------------------
210 - added barry.h for documentation purposes and application usage
211 - updated README for release
212 - renamed SBError exception class to BError
213 - updated Doxyfile to version 1.4.5
214 - added more doxygen comments
216 - added conversion routines (and tests) between time_t and min1900_t
217 - added -v option to btool to dynamically control protocol dumping
218 - removed duplicated database database table display in controller.cc
219 - minor spelling corrections
220 - added copyright to usbwrap.{h,cc} as per earlier meeting
221 - added support for Old protocol Calendar entries
223 - added legal.txt, to save typing when adding new source files
224 - ignore test-base64 file (cvsignore)
225 - added contact-to-ldif generation, and updated supporting code
226 - added argument to btool to support contact-to-ldif operation
227 - added Contact::GetPostalAddress()
228 - added README documentation in preparation for future release
230 - added parser.{h,cc} virtual wrapper to generalize LoadDatabase()
231 - added code to socket.cc's Packet() command to re-receive on
232 reception of empty packets... this seems to be a signal
233 from the device that it needs more time for long transfers
234 Current limit: 10 blank packets before exception is thrown
235 Observed maximum blank count: 1
236 - added MessageRecord and OldMessageRecord to protocol.h
237 - changed common record field structs to one CommonField struct
238 - increased default USB timeout to 10 seconds (some loaded devices
239 seem to need more time...)
240 - reorganized record.{h,cc} to try to reduce the code duplication
241 - record.h classes now "know" the sizes of their corresponding
242 protocol structs... this may cause trouble down the line
243 with Python, if used(?)
244 - added Message class for Email records
245 - removed the "Get*" database functions and replaced with
246 general LoadDatabase() call, which loads any database
247 available, and parses it with a Parser object
248 - added GetDBID() for searching for database numbers via name
249 - added test code to retrieve and display all email
250 - cleaned up comments
251 - renamed blackberry.{h,cc} to controller.{h,cc}
252 - renamed bbtool.cc to btool.cc
253 - added Makefile.conf
254 - added copyright notices to source files
255 - added COPYING file with GPL
256 - put parser in Barry namespace, and added auto_ptr-like mode for
257 store object pointers
259 - added header comments to convo.awk script
260 - removed Test() function in Controller object, and made class
261 better suited to its general API purpose
262 - changed OpenMode() so it loads command table and DBDB... it is now
263 a public API function
264 - moved Controller test code to btool.cc and made tool more
265 generically useful... can now download any DB by name on
267 - added mode checks to Controller
268 - added -t and -d command line options to btool
269 - added base64 routines from John Walker / Fourmilab and Citadel/UX
270 - converted base64 routines into an API, instead of hardcoded
273 - changed project name to Barry, including namespaces
274 - renamed sbcommon.* to common.*
275 - increased USB default timeout to 2 seconds
276 - fixed formatting bug in Data operator<< output
277 - cleaned up the protocol packet structs, getting rid of the
278 confusing param/simple split... param is now the tableCmd
279 from the Command Table
280 - moved protocol structs from record.h to protocol.h
281 - added support for older version of the USB protocol, which matches
282 the Cassis spec more closely
283 - fixed the hardcoded offsets in blackberry.cc's protocol parsing
284 - fixed Socket::Close() so on error, socket flags are reset.
285 This stops Close() from being called twice on exception
288 - added Doxyfile to the project
290 - added mode selection support to Blackberry class (RIM Desktop,
291 RIM Bypass, and RIM_JavaLoader)
292 Mode selection governs which socket is used in subsequent
294 - added Command Table parsing and protocol support
295 Blackberry class, and CommandTable record class
296 - added Database database parsing and protocol support
297 Blackberry class and DatabaseDatabase record class
298 - added Address book retrieval support - dumps data to stdout for now
299 - fixed bug in CopyOnWrite mode in Data class, where could allocate
300 less buffer than data copied
301 - added "easy exception" debug output macro
302 - fixed minor spelling error in protocol.cc
303 - fixed ModeSelectCommand protocol structure - it is not a parameter
304 command, but uses the unknown slots for socket and flag
306 - removed hardcoded socket numbers from protocol.h
307 - fixed bug in socket.cc:Open() where packet size was not properly
309 - implemented socket::Close()
310 - fixed sequence number checks, so it is reset properly on socket 0
311 - added Socket::NextRecord() for multiple record data transfers
312 - fixed input handling bug in translate.cc
314 - added .cvsignore files to project
315 - added README notes to document the source architecture
316 - added dbsetup data script, which shows how to get into database
317 mode, using the RIM Desktop mode, and open a socket
318 - added blackberry.{h,cc} class
319 - added command line parameters to bbtool.cc
321 -p = specify pin of blackberry device
322 - added blackberry test code in bbtool.cc - debugging the initial
323 opening protocol: sockets, modes, etc... see dbsetup for
325 - added copy-on-write functionality to Data class, so it can be used
326 with plain data buffers with little performance impact
327 - added eout() and ddout() debugging - to separate:
328 - regular debug output
329 - exception debug output (should probably be logged to
330 syslog someday, and never turned off)
331 - raw data dump output
332 - changed errno SBError exception handler to try to decode the error
333 numbers into english (limited success)
334 - fixed probe and socket USB Bulk message handling, so they don't
335 use PollCompletions(), but use IO::Wait() (libusb_io_wait())
336 - added common packet size checker in protocol.cc
337 - fixed unpacked protocol packet structs... using gcc's
338 __attribute__ ((packed)) ... see protocol.h
339 - added ModeSelectCommand structure (protocol.h)
340 - finished Socket::Open() call (Close() not yet implemented)
341 - moved Socket::Send/Receive() out of private, as they can be used
342 for socket 0 operations.
343 - cleaned up pointer management with macros:
347 - added IO::Wait() and IO::Cancel() to correspond with libusb API
348 - added datadumping in usbwrap for easy protocol capture
349 - added preliminary record.{h,cc} classes
350 - added Contact record parsing, and test code
352 - syncberry tree started