Cabco Kart Version History
This lists all logged changes to the Cabco kart firmware.
Version 1.xx[.y] are radio versions
Version 2.xx stands have Technman hardware with child movies only.
Version 3.xx, 4xx & 5xx stands have Harvest hardware with colour LCD panels.
Note: Versions 1 & 3 are obsolete and not used, version 2 used in Meijer
5.01 – 9 May 2011
Random and triggered MCF processing replaced by "playlist"
Brake processing re-added back into code, simplified operation
New MCF function to force end of ride added to ROMActionTable
SD poll is allowed if kart upgradeable not just idle - improves SD upgrading.
4.47 – 4 November 2010
Changes to how and when Freewheel is entered and exit'ed.
Playlist is rebuilt in memory any time a file changes.
MCF processing/triggers not active until kart has received stand time
SD poll is allowed if kart upgradeable not just idle - improves SD upgrading.
4.40 – 15 February 2010
MCF files loaded into internal dataflash for processing.
Smoother switching between MCF files - no black screens.
Improved sync'ing between kart and stand SD files.
4.33 – 9 September 2008
Traffic driver processing.
Checkdisk function added to detect corrupt SD card.
Maintenance mode streamlined.
Better SD access, to prevent conflicts between DMP and kart processors.
Minor MCF processing changes/bug fixes.
4.25 – 3 July 2008
Brake processing removed.
Kart hire parameters always sent by stand.
Battery management and freewheel processing re-organised
MCF process tidied, no random adds if SD out of sync, media tables only processed
at end of stand to kart download. DMP & SD power management streamlined
4.16 – 21 April 2008
If on mat for over 2 hours and MCF running then terminate MCFs.
If SD card error and off mat then show error screen on any key press
Cleaner SD files missing process
Kart actions and delays tidied up
4.10 – 11 March 2008
Initial release of MCF processing code
3.15 to 3.37 (OBSOLETE)– 15 March 2007 to 13 February 2008
New Harvest hardware - support for colour LCD panel
These versions ran either child only screens or dual screens
but only the safety message and a few fixed adverts on the parent screen
2.12 (OBSOLETE)– 11 June 2007
Final release - code development on this platform now ceased
2.11 – 23 November 2005
Adjusted version 2.08's rule 2, GreatVoltage 12.5V now has hysteresis from 12.4V to 12.6V, GreatVoltageLo to GreatVoltageHi.
2.10 – 23 November 2005
Change TimeTillMsg1 to 1 second (practically zilch) so parents wouldn't return karts and another person grab the kart while the video was still playing (without paying), and then the video would stop soon after.
Meaning of green/red LED completely changed; from Peter's email:.
1. Available for hire - flash green LED about 25% duty cycle (ie short pulse, pause, short pulse).
2. Low or flat battery – flash red led 25% duty cycle.
3. Freewheeling – flash red then green at 25% ie red pulse, pause, green pulse, pause.
4. Brake release fast flash green led.
5. Off during hire – can see video and hear audio.
6. Off when kart totally dead – no choice on that one.
2.09 – 27 October 2005
Got rid of MaxHireTime tests (just play video 3 times instead, as per Cabco request).
Don't test DigiPulse on third play, so brakes don't come on in middle of store; brakes should only come on when gone through checkout.
Just play movie three times then turn off DigiViewer/screen and wait.
Check that MinChargeTime and MinHireVoltage are not zero (both in ReadKartSettings and when the settings come from the kart, that is when a TV hire occurs, command 'V'); they may be zero if the stand was upgraded from pre 2.10 code and still has zeroes in these slots in GlobalSettings.
2.08 – 21 October 2005
Send through extra battery info in BoardIteration byte of kart stats.
This allows stand to only permit a hire if either of these are true: (1) battery voltage has been >= MinHireVoltage for at least MinChargeTime minutes (2) battery voltage is now >= GreatVoltage.
Counter for MinChargeTime powered up to MinChargeTime, so hires allowed immediately on powerup.
Turn DigiViewer/screen off immediately when battery <= FlatVoltage, so their settings don't get screwed up.
Also if we try to turn them on after that (for second movie play or whatever), don't do it if battery still low.
Digishutdownifincorrectlyrunning was always being executed (and error always beinge reported), because Sound line doesn't work when DigiViewer off (presumably it did work with radio karts).
2.06 – 16 September 2005
Ben took over the code somewhere in here.
He has a hate-hate relationship with Modula 2, not to mention the 8051 memory arrangement.
Turned Digi Viewer off then on between two plays of the movie during hire, in case of fault.
Made movie play (or retry) 3 times.
2.00 – 9 March 2005
Baden Grey from Harvest Electronics Ltd. has taken over.
MP3 player is replaced by digiviewer for TV rides. Radio rides will show a still image which changes periodically. A lot of MP3 player routines were removed which aren't relevant for the digiviewer.
Adding new mode to distinguish between Radio and TV Hires.
Removed a lot of unused variables and routines.
Changed to new kart board.
1.27 (OBSOLETE)– 10 November 2004
Changed the version number for bootloader checking.
1.26 – 2 November 2004
The kart is now no longer functional once it has erased the code pages in the flash if EraseCodeSpace is set.
1.25 – 2 November 2004
New build flag added "EraseCodeSpace". When this flag is on when the source is compiled, the kart code will erase all versions of code from the IAP banks in the flash on bootup. It will also create a new log entry every time it boots to indicate that this has happened.
Now disables the serial interrupt on behalf of the bootloader when loading new code.
1.24 – 20 October 2004
Resolved some of my concerns to do with how the kart saves the data that it generates.
Fixed a problem with the way that the flash was handled that would cause General Stats to be lost on powerup, along with the kart number stored using older versions.
1.23 – 13 October 2004
Time out after only 200ms on incoming packets now.
Flushes buffers to flash after receiving a new Kart ID number.
Bug taken out where defaults for data packet were incorrect, using the Kart ID number as if it was initialising the settings packet.
Now measures the length of each ride, and stores the length of the ride into the flash as soon as the ride ends. This ride length is then transmitted to the stand in the next kart statistics packet. I have also put the "Time In current state" into the transmitted packet for future use.
Micro now only enters idle mode if there was nothing to do recently.
Now limits the ride to play the story track twice.
1.22 – 4 October 2004
The call to flushbuffer in boot new code wiped the value of the image that we wanted to boot to. This then caused the bootloader to go into an infinite loop. Thus it is not possible to upgrade v1.21.
The flushbuffer behaviour should work now. Before there was a possibilty of trying to write to a buffer as it was saving.
1.21 – 13 September 2004
Noticed that the side sensor was saying it had triggered in the auditlog. Changed the side sensor source very very slightly to get rid of this "phantom" trigger caused by the side sensor counter not getting cleared when the sensors were disabled.
1.20 – 13 September 2004
For first deployment.
Low battery voltage reduced to 10.4v.
Flat battery voltage reduced to 10.2v.
1.19 – 8 September 2004
Released to Harvest.
More auditlog entries for radio commands received.
New auditlog entries for powerup stating the version that is loading.
New auditlog entry for the reboot command. Rebooting now saves the log first.
If the stand received a spurious ack or nck, it would reply to it as if it was a normal command, thus leading to the possibilty of an avalanche of acks going back and forth.
1.18 – 7 September 2004
Released to Brendon for Testing, and for a run of 60 Karts.
New command '!' added which clears the kart statistics.
Auditlog position is now saved in the kart statistics.
Kart used to reject every hire retry.
1.17 – 6 September 2004
Bug introduced in v1.16 fixed where IAP would fail as the new code wasn't correctly saved to flash before we tried to reboot and load it.
1.16 – 23 August 2004
Now uses the "Write back" Caching scheme for flash access as used in the stand.
Now uses the faster CRC routine from the Stand.
Updates the auditlog pointers every 20 seconds rather than every 4 minutes.
1.15 – 23 August 2004
This was just a version number change.
1.14 – 23 August 2004
New error code added for MP3 incorrectly running.
Now calls shiftregs in Poweron routine so that it can write the correct battery voltage to the auditlog.
1.13 – 19 August 2004
The audit log length was set incorrectly.
The Auditlog processing routine wasn't being called every second.
Kart often crashes after being hired.
Being unhired from the stand does strange things to the kart.
1.12 – 12 August 2004
The PC software can now read version number information imbedded in the file.
Sometimes does not play the "Thanks for shopping, return me to kart stand" message when sensor tripped.
Quit might be set by the foreground (this only happens when the sensor tripped during the first intro message or within 20 secs of the end of the stories). This is now set false again in the relevant portion of the lockdown sequence.
1.11 – 12 August 2004
The Kart now sends information about which code is loaded including the CRC to the stand along with the usage statistics it currently sends.
Increased the amount of time that the "Play" Button is pressed when we want stop behaviour. It was 700ms, it is now 800ms.
Minimum Track play time reinstated, but in a cleaner fashion. Now waits 3 seconds after the sound starts before it looks for the end of the sound.
1.10 – 10 August 2004
Released to Mag assembly as a second test.
The comms no longer processes a received packet until the transmitter is free (meaning that we don't stomp on an outgoing packet as we process the response to the next incoming packet).
Auditlog queue is longer as it was overflowing before.
Identified and removed a "Minimum time" from the MP3 Track playing routine that caused the system to wait at least 15 seconds before looking for the end of the track. The info track is only slightly longer than this.
The dashboard power is now controlled from the foreground routine, making it appear more responsive to what is going on.
Now supports software volume control.
1.09 – 09 August 2004
Errors are now reported via the poll command.
The unhire command can put the kart into any state it likes, which includes the test state from which we cannot return. This is a very bad thing. I have made the test state exitable now, but the root problem is still there.
The set state routine no longer uses b40, making it safer to call.
1.08 – 05 August 2004
The comms routine sendcommand was using a byte to store the destination address which is actually a word.
Brake code was using a byte when it should have used a word.
Now putting the micro into idle (system is now using about 122mA while hired).
Less likely to shut down MP3 player because we think it is incorrectly running when it is not.
1.07 – 04 August 2004
Now uses the new registers to communicate with the bootloader for rebooting and loading code.
Fixed a WDT bug on reboot and load.
The comms timeouts are now much more lax, making it less likely that a potentially good packet gets thrown away.
1.06 – 29 July 2004
Now uses the WDT rather than the WatchDog output pin. This allows us to work with the bootloader present.
The auditlog queue is now longer, allowing us to generate more auditlog events back-to-back. The queue was overflowing before.
The CRC flash routine needed WDT maintainance so that it didn't cause the Kart to crash and reboot.
1.05 – 23 July 2004
Supports Jeremy's new test command.
1.04 – 21 July 2004
All code moved to 2000H to facilitate bootloader.
Reads information from codespace about this code to determine where to download the code to.
Comms timeout only throws away the current packet rather than the entire buffer.
Now supports the reboot and load new firmware command, which simply invokes the bootloader.
1.03 – 9 July 2004
Able to receive code downloads from the PC (or from the stand once the stand has the correct software).
Green light flash while available for hire only started after 5 hours (rather than turning off after 5 hours).
1.02 – 24 June 2004
The kart board now uses a flash rather than an EEProm to store data.
The sensors should now turn off when in the exit sequence if only the side sensor is enabled.
Tuning the brake code. Now much more effective.
Now a working auditlog on the kart.
We can transfer the auditlog via the radio link to the PC.
Time and date reception code.
We now transmit the number of auditlog entries to the stand.
Brake now waits 1 second between each of the first 10 retries.
Now create an auditlog entry when the kart is hired.
The newer brakes used in the karts (those with white plastic ends) have position switches which have swapped position. Thus I have swapped the position boolean.
1.01 – 10 June 2004
Version number is now in the format 123 -> 1.23.
Comms now causes an error if we try to send a packet of data while a packet is already sending.
Handle Comms timeout was called far too irregularly to be of any use, leading the kart comms to get locked up for long periods.
Removed another bug which would stop one good packet from following another packet with bad data.
1.00 – 10 June 2004
Fixed a bug in the communications system, causing the comms to ignore the second of two close messages.
|