added stdint.h to parser.h for uint32_t. Thanks Ron Gage for the bug report
[barry.git] / ChangeLog
blobd115bcb760dc35565764dd97ba1652881b39b089
1 Release: version 0.0.2 - 2006/??/??
2 ------------------------------------------------------------------------------
3 2006/09/29
4         - added stdint.h to parser.h for uint32_t.  Thanks Ron Gage for
5                 the bug report
6 2006/09/08
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)
21                         packet format.
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
28                         refactoring.
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
36                 we come!
37         - spelling correction in opensync-plugin/AUTHORS
38 2006/09/01
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
51                 engineered.
52         - added support for retrieving record state table, which is needed
53                 for smarter syncing
54         - added support for retrieving, deleting, and clearing the dirty
55                 flags of individual blackberry device records
56         - added endian macros throughout the code
57 2006/07/13
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,
61                 for development)
62         - removed slow sync functions for now
63 2006/07/07
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
71 2006/06/22
72         - added to Contact record class:
73                 - Clear()
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
81 2006/06/16
82         - added parsing of service book fields:
83                 - old and new name
84                 - old and new unique ID (UID)
85                 - content ID (CID)
86                 - old and new description
87                 - DSID
88                 - bes domain / domain
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
95 2006/06/09
96         - added ServiceBook record class and parser code, based on some
97                 of Ron Gage's reverse engineering... code is by Chris Frey
98         - added AUTHORS file
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.
102 2006/05/25
103         - renamed Changelog to ChangeLog in preparation for autoconf
104         - renamed Todo to TODO in preparation for autoconf
105 2006/05/18
106         - make clean cleans up tests properly now
107 2006/03/31
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
119 2006/03/29
120         - copyright dates updated for 2006
121 2006/01/05
122         - backed out update to latest libusb DEVEL tree, since it is buggy.
123                 Stick with libusb 2005/11/26
124 2005/12/30
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
136 2005/12/29
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}
147 2005/12/23
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
162 2005/12/22
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
171                 this obsolete)
172         - added Calendar::Build() for calendar uploads
173 2005/12/10
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
181                 properly serialized
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()
186 2005/12/08
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,
193                 for later saving
194 2005/12/07
195         - added -fno-strict-aliasing to compiler flags so gcc-4.0.x won't
196                 optimize away protocol struct casts
197                 see: 
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 ------------------------------------------------------------------------------
209 2005/11/25
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
215 2005/11/24
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
222 2005/11/20
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
229 2005/11/19
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
258         - added doxygen docs
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
266                 the command line
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
271                 file based
272 2005/11/18
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
286                 destructors
287 2005/11/17
288         - added Doxyfile to the project
289         - tuned Makefile
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
293                 data transfers.
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
305                 data
306         - removed hardcoded socket numbers from protocol.h
307         - fixed bug in socket.cc:Open() where packet size was not properly
308                 saved
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
313 2005/11/11
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
320                 -l = list only
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
324                 results
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:
344                 MAKE_PACKET()
345                 COMMAND()
346                 IS_COMMAND()
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
351 2005/10/20
352         - syncberry tree started