OSDN Git Service

f02970e2019e0ef8429369723427b9527a2adf05
[nxt-jsp/lejos_nxj.git] / nxtOSEK / lejos_nxj / RELEASENOTES
1 lejos NXJ 0.4beta
2 -----------------
3
4 Most of the leJOS functionality is now present, so this has been declared a beta release.
5
6 Lawrie Griffiths and Michael Wiedau have added:
7
8 - NXT to NXT Bluetooth comms.
9
10 Lawrie Griffiths has added:
11
12 - Multi-level StartUp Text menu
13 - Connection by address on the nxj and nxjupload utilities
14
15 Roger Glassey has added:
16
17 - DataLogger
18 - Some improvement to Motor speed control
19
20 Andre Nijholt and Brian Bagnall have added:
21
22 - Support for the J2ME MIDP LCD user interface and graphics
23
24 Ranulf Green has added:
25
26 - Comms proxy included NXTSocket class
27
28 Patai Gergely and Lawrie Griffiths have added:
29
30 - Playing sound files (8-bit WAV)
31
32 Brian Bagnall has added
33
34 - Fixes to Windows batch files to allows spaces in NXJ_HOME
35 - Backward compatibility lejosdl and lejosfirmdl scripts
36 - Some improvement to Lego Communications Protocol support.
37
38 leJOS NXJ 0.3alpha
39 ------------------
40
41 This is the first firmware release of leJOS NXJ. It includes a flash file system
42 and a menu system, written in Java.
43
44 Brian Bagnall and Roger Glassey have added:
45
46 - A flash file system including implementations of java.io.File,
47   FileInputStream, and FileOutputStream.
48 - CompassPilot and CompassNavigator
49
50 Lawrie Griffiths and Roger Glassey have added:
51
52 - The StartUpText menu system that supports executing and
53   deleting programs, and LCP commands with NXJ extensions
54   over USB and Bluetooth
55 - Java streams over Bluetooth and USB
56
57 Lawrie Griffiths has added:
58
59 - USB support
60 - Flash native methods
61 - Working flash build of leJOS NXJ
62 - Support in the VM for running a Java start-up menu
63 - Improved LCP support including file commands
64 - Improved Bluetooth support including setting the NXT name
65 - The pccomm library including Windows and Linux Bluetooth and
66   USB comms drivers. This incorporates some of the functionality
67   of iCommand.
68 - The pctools library of nxj tools including nxjbrowse
69 - Ant build files for all the samples
70 - Libnxt JNI library
71 - Bluez JNI library based on the iCommand version
72 - nxjflash utility based on David Anderson's fwflash
73
74 leJOS NXT 0.2alpha
75 ------------------
76
77 - This release is similar to 0.1alpha in that it still runs in RAM under SAMBA. 
78 - It adds partial support for I2C, Bluetooth, and sound, and greatly improved Motor
79   control and navigation.
80 - The API is substantially revised
81
82 Charles Manning has added:
83
84 - I2C support (reads only)
85
86 Lawrie Griffiths has added:
87
88 - Bluetooth support (PC to NXT)
89 - Sound support (playTone, single volume)
90 - Native methods for I2C
91 - Ultrasonic sensor support
92 - Refactored API and native methods
93 - new samples (BTRespond, updated View sample etc.)
94
95 Roger Glassey has added:
96
97 - Improved Motor class
98 - New Pilot class for steering control
99 - TextMenu
100 - new samples
101
102 Roger Glassey and Brian Bagnall have added:
103
104 - New TachoNavigator class and Navigator interface replacing previous navigators
105
106 Brian Bagnall has added:
107
108 - javax.microedition.lcdui.Graphics class
109 - Support for third party I2C sensors (ColorSensor, CompassSensor etc.)
110 - new samples
111
112 Lawrie Griffiths and Brian Bagnall have added:
113
114 - Support for Lego Communications Protocol
115 - Partial support for iCommand (no files)
116 - Partial support for Bluetooth utilities that work with the standard Lego firmware
117   (This includes the Lego Mobile Application)
118
119 leJOS NXT 0.1alpha
120 ------------------
121
122 - First alpha release for the NXT
123 - The lejos VM is essentially the same as lejos 3.0 for the RCX
124 - The code is now held in a subversion repository, not CVS
125 - This release runs under the SAMBA boot monitor and executes code from RAM
126 - You must do a long reset on your NXT to go into SAMBA mode
127 - It makes no use of Flash memory
128 - The VM and Java binary are downloaded together by the runjava command
129 - The NXT powers down 5 seconds after finishing a program and the program is lost from memory
130 - It has been tested on Linux and Windows
131 - It has no support for Sound or Comms
132 - The API has changed substantially to support the NXT
133 - The Motor classes has new methods to support the inbuilt tachometer
134 - Motor also supports regulated speed control methods: setSpeed, setRegulation, rotate, rotateTo.
135 - Motor.setSpeed() replaces Motor.setPower()
136 - There is a class for each sensor, and variant for legacy RCX sensors
137 - The Sensor class is replaced by a Port class
138 - SensorListener is replaced by PortListener
139 - The RCX touch and light sensors are supported, but not the rotation sensor
140 - RCX motors are supported
141 - I2C sensors such as the Ultrasonic sensior are not supported
142
143 leJOS 3.0.0
144 -----------
145
146 - leJOS supports Lunix kernel 2.6 now
147 - There has been a major restructuring and refactoring of leJOS' classes
148 - The single "lejos" command for linking and downloading programs in one step is available again
149 - The tutorial is part of the leJOS release now (see doc/tutorial)
150 - The third party libraries have been factored out to a "3rdparty" folder
151 - There is a folder "check" now that contains a script for checking the distribution after having installed it  
152
153 Known compatibility to 2.1.0 issues:
154 - the Tower() constructor without port argument is no longer supported (for it lead to errors)
155 - the Tower methods return no longer error codes but throw exceptions in case of an error/exception
156 - Tower.send(byte[],int) is deprecated now and no longer public
157
158  
159 leJOS 2.1.0
160 -----------
161
162   Paul Andrews has added:
163   - Activity class in josx.robotics
164
165   Lawrie Griffiths has added:
166   - linker changes to remove some unused methods and hence reduce program
167     sizes.
168   - bug fixes to josx.rcxcomm particularly to RCXPort with serial towers. 
169   - a new LNP class that supports a Lego Network Protocol style of API
170     including listening on multiple ports.
171   - a vision API based on the Java Media Framework similar to the one that
172     comes with the Lego Vision Command product.
173   - remote execution of Java methods sufficient to support the Vision API.
174   - example programs using the Vision API for motion, color and light
175     detection and remote method execution.
176   - Java versions of the lejos tools, which use the josx.rcxcomm package.
177
178   Matthias Paul Scholz has added:
179   - a new remotecontrol package in josx.platform which handles incoming messages from 
180     the LEGO remote control or by Maroc (the associated emulator). For details and a 
181     description, see http://mp.scholz.bei.t-online.de/lejos.
182   - a new example file (RemoteControlTest.java) for this in the examples\remotectl section 
183  
184   Markus Strickler has added:
185   - enhanced support for USB on Mac OS X including josx.rcxcomm
186   - fixed Makefile for picking up JNI headers on Linux
187
188   Markus Strickler & Andy Belk have added:
189   - fixed Makefiles for Mac OS X 10.2
190  
191   David Glance has added:
192   - Support for USB on Linux
193
194
195 leJOS 2.0
196 ---------
197
198   Paul Andrews has added:
199   - Priority inversion avoidance to the thread scheduler.
200   - Variable thread stack sizes.
201   - Code layout modifications to remove the motor twitching introduced in 1.0.5
202   - Various minor code/build tweaks to reduce the size of the VM.
203   - Minor fix to the 'lejos' command to enable multiple levels of
204     verbosity (syntax -verbos[=<n>]).
205   
206   Markus Strickler has added:
207   - Experimental support for USB on MAC OS X
208
209   Brian Bagnall has added:
210   - Modified trig functions in Math class - they are now 10x faster.
211     Code donated by Paulo Costa
212   - Support for floats in DataInputStream and DataOutputStream
213
214   Lawrie Griffiths has added:
215   - Decoupling of ListenerThread from Sensor, Button and Serial, so that these
216     classes are not included when they are not used.
217   - Low level comms (LLC) that allows single bytes to be sent and received
218     over IR, without being limited to the Lego firmware protocol and opcodes
219   - A re-implementation of josx.rcxcomm.RCXPort using LLC which is faster 
220     and reliable.
221   - A similar re-implementation of RCXInputStream and RCXOutputStream.
222   - An abstract interface - PacketHandler - for creating your own multi-layer 
223     comms protocols.
224   - Partial implementations of the LegOS Networking Protocol (LNP) Integrity 
225     and Addressing layers using the PacketHandler interface.
226   - A re-implementation of the 1.0.5 RCXPort protocol, called RCXF7Port - 
227     this uses Serial not LLC on the RCX.
228   - An Abstract RCX port interface - RCXAbstractPort - for creating ports using
229     any protocol, and implementations: RCXPort, RCXF7Port, RCXLNPPort, and 
230     RCXLNPAddrPort.
231   - Partial support for point-to-point connections to multiple RCXs using the
232     LNP addressing protocol via RCXLNPAddrPort of direct use of the packet 
233     handlers.
234   - Versions of the SensorReader examples using all the above protocols.
235   - A version of javax.servlet.html for writing lejos Web servers.
236   - Example servlets including one that sets and reads Sensors via URLs.
237   - An Integer class that implements toString(int).
238   - Additional String methods and a new StringUtils class.
239   - Removal of memory leaks in Button.waitForPressAndRelease and TextLCD.print. 
240   - New floatToIntBits and intBitsToFloat native methods to support data streams.
241   - Fixes and minor enhancements to josx.rcxcomm.
242   - Improvements to apidocs including the inclusion of josx.utils. 
243
244 leJOS 1.0.5:
245 ------------
246
247   Brian Bagnall and Lawrie Griffihs have added:
248   - the josx.rcxcomm package for stream-based communication between PC and RCX
249
250   Lawrie Griffiths has added:
251   - a version of java.net building on josx.rcxcomm
252
253   Brian Bagnall has added:
254   - MacOSX support
255
256   Juergen Stuber has added:
257   - P1 one remote control now starts program (the one selected by Prgm)
258   - added memory regions + 3K extra memory
259   - added file TODO
260   - Persistent memory
261   - writeShort method in Native
262   - moved methods from Native to Memory and ROM,
263     and from ROM to Battery and MinuteTimer
264   - removed Runtime as special class
265   - corrected bug in scheduler that could interrupt wrong thread
266   - renamed class josx.util.Test to Assertion, method assert to test etc.
267     to avoid name clash with JDK 1.4 reserved word assert
268   
269 leJOS 1.0.4:
270 ------------
271
272   Juergen Stuber has added:
273   - Serial listeners
274   
275   Paul Andrews has added (with a lot of help from Martin Nielsen):
276   - Number formatting to StringBuffer
277   - delete() method to StringBuffer
278   - Fixed Math.log() and Math.exp() to handle a much larger range of numbers.
279
280 leJOS 1.0.3:
281 -----------
282
283   Paul Andrews has added:
284   - Fixed application download code. Fewer hangs now.
285   - Added experimental USB support to firmdl and lejosrun. Set RCXTTY
286     to 'usb'.
287   - Added progress indicator to lejosrun.
288   - Fixed uninitialised variable and boundary condition in
289     interpreter that could have prevented task switching.
290   - All input listeners now use one thread.
291   - Added Proximity Sensor Class
292   - Added Servo class
293   - Added more accessor methods to sensor and motor classes.
294   
295   Juergen Stuber has added:
296   - LCDConstants.java
297   - idle_hook() in interpreter
298
299 leJOS 1.0.2:
300 ------------
301
302   Paul Andrews has added:
303   - Added Runtime class so that heap size and free memory can be
304     returned.
305   - Added Object.wait()/notify()
306   - Added thread priorities. Scheduler will always run threads
307     of a greater priority in preference to those of a lower priority.
308   - Added daemon threads.
309   - Added ability to interrupt sleeping/waiting threads.
310   - Added System.exit().
311   - Added a 'Poll' class to monitor changes of sensors and buttons in
312     the VM (i.e. a call that blocks until a state change occurs).
313   - Changed Sensor and Button listeners to use Poll.
314   - Changed Sensor and Button listener threads to be daemon threads.
315   - Modified 'View' example to update display whenever a sensor state
316     changes rather than only when a button is pressed.
317   - Modified native method name mangler so that native methods can
318     be overloaded.
319   - Added default constructor to StringBuffer so that expressions of the
320     form "string1" + "string2" will compile.
321   - Added several new exceptions to support all of the above.
322   - Added the 'final' keyword to API classes where Java 2 normally has it.
323   - Added Test class for performing assertions.
324   - Fixed bug in memory allocator that failed to detect a full heap.
325   - Added subsumption architcture examples using old and new threading.
326   - Added '-n' option to lejosfirmdl so that the JVM size can be checked.
327   - Fixed up code to remove warnings when compiling with GCC 3.0.
328   - Added instructions on building with CygWin1.3.2 and GCC 3.0.
329   - Modified code in several places to reduce footprint.
330   - Modified compile options to reduce footprint.
331   - Reduced footprint to 16k
332   
333   Juergen Stuber has added:
334   - Fixed rotation sensor mode.
335   - Modified main loop to check only one flag for increased speed.
336   - Cleaned up hooks.
337   - Added performance test to examples.
338   - Internal changes to button and sensor listener code to make it smaller.
339
340   Brian Bagnall has added:
341   - Behavioural API
342   - Navigation API
343   
344 leJOS 1.0.1 (not released separately):
345 --------------------------------------
346
347   - Fixed bug in java.util.Vector: NoSuchMethodError after 7
348     elements added.
349   --------------------------------------------------------------
350   - Phil Berry has contributed some documentation (see
351     docs/phil_berry) and more meaningful trace output
352     for emu-lejosrun -v.
353   - Hajime Murao reporded a bug in jtoolexec.c. The first
354     argument was not initialized properly, which
355     means that in some systems (e.g. W2K) you'd see a message 
356     saying that lejosc was unable to execute javac or something 
357     to that effect, with no apparent reason.
358
359 leJOS 1.0.0beta3:
360 -----------------
361  
362   - Removed gcc's -O2 option from unix_impl/Makefile, as
363     it was crashing gcc 2.95.2.
364   - Added Christophe Ponsard's remote control example,
365     Ryan Vander Bijl's hworld example, and Reinhard Schiedermeier's
366     example on RCX-to-RCX communication (serial2rcx).
367   - Added a few methods to the Motor class, based on
368     suggestions sent by Rune Berge.
369   - Copied the entire util/firmdl directory from legOS 0.2.4
370     into tools/firmdl, and made minor modifications to it.
371     This should fix the infamous "Permission Denied" bug.
372   - The emulation tool was crashing when string constants
373     were used, due to a byte ordering problem which is now
374     fixed.
375   - Considerable performance improvements for certain
376     Math functions.
377   
378 leJOS 1.0.0beta2:
379 -----------------
380  
381   - Fixed a multi-dimensional array allocation bug.
382   - Brian Bagnall's performance improvements for java.lang.Math.
383   - Fixed a bug in sqrt.
384     
385 leJOS 1.0.0beta1:
386 -----------------
387
388   - Multi-program downloading. All programs are linked and
389     downloaded in one shot and override previously downloaded 
390     programs. Use: lejos Class0,Class1,...
391   - Auto power off, but only while in program-download mode.
392   - Increased default stack size.
393   - Brian Bagnall's latest changes to Math (log, exp, sqrt, and more!)
394   - Changed memory allocation and deallocation routines, in preparation
395     for upcoming implementation of garbage collection.
396   - Max array length is now 511 (was 255).
397   - Linker warns about truncated long and double constants.
398   - Battery power shown as percentage in program-download mode.
399   - This should now work: To kill a running program, hold Run while 
400     you press On/Off.
401   - Miscellaneous bug fixes (e.g. a js.tinyvm.Sequence bug reported
402     by K. E. Elby).
403
404 leJOS 1.0.0alpha5:
405 ------------------
406
407   - Significant changes to Sensor API. Sensor.setTypeAndMode()
408     should be called before using a Sensor. Sensor.getPercentageValue()
409     is no longer there. SensorListener only has one method.
410   - Performance of low-level method readSensorValue has
411     improved by at least a factor of 6.
412   - There is only one global thread that dispatches events to
413     SensorListener's, which will also improve performance
414     considerably, and may even prevent certain race conditions.
415     (Having only one thread for sensor events was once mentioned 
416     by Reinhard Schiedermeier).
417   - java.lang.Math.atan(double), contributed by Brian Bagnall.
418   - Linker checks whether entry class has a main method.
419   - Forced persistence across runs was taken out, i.e. all memory 
420     is reinitialized every time you rerun a program.
421   - Prgm-On/Off does nothing. Run-On/Off kills a running program.
422   - Emulation tools have been renamed.
423   
424 leJOS 1.0.0alpha4:
425 ------------------
426   
427   - Added Brian Bagnall's java.lang.Math class.
428   - Fixed bug in the way the linker was writing doubles.
429   - Optimized native method calling. About 30% performance
430     improvement.
431   - Found bugs in handling of stack by some native methods.
432     This might have been causing programs to misbehave.
433
434 leJOS 1.0.0alpha3:
435 ------------------
436   
437   - ButtonListener support.
438   - Fixed a linker bug: it was dumping a stack trace if
439     one of the zip/jar entries in the classpath wasn't found.
440     This bug was reported by E. Harshbarger.
441   - lejosc and lejosp will work with Java 2 compilers only.
442     For JDK 1.1, use lejosc1 and lejosp1. The problem was
443     that java.util.Random couldn't be used with Java 2.
444     Reported by J. Knudsen.
445   - Changed Random(int) to Random(long).
446   - Fixed memory leak. Thread stacks were not getting deallocated
447     properly on program death.
448   - Fixed Makefiles and other things to make leJOS installable
449     under Linux.
450   
451 leJOS 1.0.0alpha2:
452 ------------------
453
454   - Distributing CYGWIN1.DLL in the bin directory. 
455   
456 leJOS 1.0.0alpha1:
457 ------------------
458
459   - leJOS is born out of TinyVM. Versions starting
460     with 0 are TinyVM versions, whereas versions starting
461     with 1 are leJOS versions.
462   - Marking references in stack.
463   - String constants.
464   - Caught up with TinyVM. This is ongoing. Refer to
465     TinyVM release notes for 0.1.4 and up.
466   - Scripts converted into executables. 
467   - Native Thread.sleep() and System.currentTimeMillis().
468   - Various other enhancements.
469
470 TinyVM 0.1.3:
471 --------------
472
473   - Found that the hello example did not compile in
474     the last version. Fixed it.
475
476   - Decided to make the firmware show battery power 
477     whenever it enters program-download mode.
478
479   - Fixed virtual method linker bug. (The linker was
480     unable to find certain virtual methods in classfiles
481     compiled with JDK1.2.x).
482
483   - Apparently fixed On/Off bug. (The LCD is not cleared 
484     by shutdown_buttons in some RCXs).
485
486   - Got rid of TINYVM_HOME.
487
488   - TINYVMPATH is no longer necessary. CLASSPATH is
489     used.
490
491   - More appropriate message for linker failure when
492     instanceof or checkcast of array classes is 
493     encountered.
494
495   - Multi-dimensional array allocation was broken.
496     Fixed it.
497
498   - Fixed checkcast bug. (It was not allowing casts of
499     null).
500
501   - Footprint report:
502     Test13 creates 4238 objects.
503     Firmware download count: ~1020
504
505 TinyVM 0.1.2:
506 --------------
507
508   - Fixed serial comm bug. (If you tried to download
509     a program to the RCX while another program was
510     running, the transferred data could clobber 
511     program memory. TinyVM is now shutting down
512     serial communications right after a program is
513     downloaded).
514
515   - Added a couple dummy classes to satisfy the
516     jikes compiler. Users simply have to set JAVAC
517     to "jikes". (Jikes is a really fast Java compiler
518     by IBM).
519
520   - Changed implementation of Sensor.readSensorValue.
521     Reading values from sensors should be more
522     efficient now. (I might have to adjust the rotator
523     example a bit).
524
525   - Publicized the SensorListener interface and
526     Sensor.addListener. It probably still needs to
527     be optimized for performance.
528
529   - Added examples to some classes in the API
530     documentation.
531
532   - Removed "queued" parameter from most methods in
533     Sound. It really didn't make sense to have it 
534     in some APIs. Hopefully that won't be much of a 
535     problem for anyone.
536
537   - Removed previously deprecated APIs from ROM.
538     Again, sorry if this affects you.
539
540   - Fixed MONITORENTER bug. (It was not throwing
541     NPE on null monitors - it was crashing instead).
542
543   - TinyVM's linker is now also a loader: The -d
544     option will download the program to the RCX.
545
546   - TinyVM's firmware is now listening for the 
547     standard "Delete Firmware" opcode (0x65/0x6d).
548     Consequently, Prgm-Run On/Off is no longer
549     useful, so it has been removed.
550
551   - tvmfirmdl doesn't need an argument now.
552
553   - Added the Serial API and a corresponding example.
554
555   - Footprint report:
556     Test13 creates 4262 objects.
557     The firmware download count is about 1000.    
558
559 TinyVM 0.1.1:
560 --------------
561
562   - Fixed PUTSTATIC bug. (Setting a static field
563     in uninitialized class could produce subsequent
564     erroneous behavior).
565
566   - Fixed exceptions bug. (Very critical bug:
567     exceptions were not pushed on the stack before
568     they were caught).
569
570   - Changed RCX API so that its style conforms
571     a bit more with other Java APIs. Namely, 
572     depracted routines in ROM, and split them up
573     into LCD and Sound, which have more convenient
574     APIs. Removed some ROM routines, which hopefully
575     haven't been used too much yet. Class Native
576     now contains native APIs. ROM contains certain
577     unclassified APIs.
578
579   - Added buttons API.
580
581   - Improved the usability of the firmware a bit.
582     Basically, you can now press the On/Off button
583     to turn off the RCX and kill running programs.
584
585   - To continue on exception "traces" you have to
586     press On/Off instead of View.
587
588   - TinyVM has been ported to JDK1.2. This required
589     a couple of fixes under jtools.
590
591   - Footprint: Test13 can create 4338 empty objects
592     (17352 bytes of allocation space).
593
594
595
596
597
598
599
600
601