shnl327@cse.unsw.edu.au

== GAMECONTROLLER CHANGES ==
* 28/5/2005 * - Sample 7 | Struct version 4
- Remember which colour kicks off the first time, and reset to that colour
  kicking off when the half changes
- Reset the clock when the half changes

* 23/5/2005 * - Sample 6 | Struct version 4
- Bug fix: Enable half selection popup correctly
- Bug fix: Swap scores correctly when switching halves
- Bug fix: Unpenalize UI on goal score
- Bug fix: Fix initialization bug in timer

* 17/2/2005 * - Sample 5 | Struct version 4
- Bug fix: When there are two Game Controllers running on different teams, 
  robots that receive packets that are no meant for them are no longer blocked 
  out from receiving other Game Controller packets. The Game Controller object
  did not become ready to receive the next packet after it received an invalid
  packet for whatever reason
- Bug fix: Should not be any more warnings when compiling Game Controller object
- Added partial packet size check to Game Controller object  
- Added a Makefile to create the Game Controller JAR file for yourself 
  (no bin distributed)
- No more STRUCT_SIZE in RoboCupGameControlData.h, use sizeof instead
- Initial packet creation includes the header as well
- The definition of the Drop In buttons have been changed. To allow for more 
  intuitive use of the program, the Drop In buttons now define which team 
  *CAUSED* the Drop In (ie, the team that kicked it out should be selected)
- Neater code to access LEDs in Game Controller object
- Added battery indicator. In the INITIAL, READY and SET states red face LEDs 
  will light if the battery level is less than 40% (configurable in 
  GameControllerConfig.h)
- Head button hold time for state change reduced from 1000ms to 100ms
- Back buttons hold time for team configuration reduced from 1000ms to 100ms
- Removed PowerMonitor directory from sample code. Was not needed


* 3/2/2005 * - Sample 4 | Struct version 3
- Sample GameController object shows player number of face LEDs
- Burst only for Play button, not Drop Ins

  
* 1/2/2005 * - Sample 3 | Struct version 3
- Bug fix: GameController broadcasted inconsistent STATE_FINISHED compared to 
  what was defined in RoboCupGameControlData.h


* 19/1/2005 * - Sample 2 | Struct version 2
- Less restrictive license for RoboCupGameControlData.h
- Added data structure header for identification (STRUCT_HEADER = "RGme")
- Version information added into the header file for comparision between 
  broadcasted version and local version
- RobotInfo now have has an "estimated seconds till unpenalised" field. This 
  field should be ignored if the dog is not penalised (ie, PENALTY_NONE)
- Data type in structure is changed from int to uint32 (to be specific)
- Removed STATE_PENALISED, it was redundant
- Sample code checks version information  
- Sample code only reports unique structures, not every single received one
- Sample code checks header information
- Automatically set "Ready" state after a team scoring
- Shorter bursts mode, now it repeats itself Constants.NETWORK_BURST_COUNT times
  rather than repeating for X seconds with a decreased heartbeat rate to prevent
  network congestion during peak times (eg, start of game)
- Command line arguments no longer order specific
- Configurable UDP port (as command line argument)
- Countdown time is "unofficial"
- Different frame for kick off buttons
- Optional automatic pause clock with state change to "Ready" and "Set". This is
  to comply with section 3.1 of the rules, where the clock may not stop for
  stoppage of plays in the preliminary games  
- Editable countdown time


* 17/1/2005 - Sample 1 | Struct version 1
- Initial release


== TODO ==
- Better editable time GUI
