Total Units Connected: 2196
 

SPE g20 Version History

1.04.27 - 26 February 2009

Changed the analog sampling to force a sample to be taken at power on.

Changed the writing of log records to wait for the completion of any analog conversion that might be in progress. This is how it used to work before the changes that were made with the introduction of the WIND option to the ^HASI command. The old code looked at whether the ADC was turned on, however, with the new sampling control code the ADC was being turned on after the sampling delay instead of before it. This new code now also looks at whether a sampling delay is in progress.

It was noticed that the presence of the RST option in the ^HLOP setting was not causing a log record to be written until on the minute following a reset. This was rectified by the addition of a call to the InstantTrigger function at startup.

1.04.26 - 24 October 2008

When starting newly downloaded code the SPE first sets its configuration to a predefined set of factory defaults. It then works through those setting that have been saved in the external dataflash; installing them as it goes. This means that any settings that were not saved to the external flash, such as newly introduced settings, retain their factory default values. This is, however, a relatively slow process due mostly to the multiple copying of the internal flash settings. An undesired consequence of this process has been the DAC output delivering 12V for the first sampling event after starting new code. This occured because the factory default was for 12V output and one second sampling and the DAC voltage setting was not read from the external dataflash until after the first sampling interval. If the sampling interval was set to longer than one second the problem was avoiding due to the sampling interval command, ^HASI, being earlier in the alphabetical order of commands than the DAC setting, ^HDAC, and so getting installed soon enough to delay the first sampling until after the DAC setting is updated. To solve this problem the factory default DAC setting has been changed to zero in this version.

1.04.25 - 13 October 2008

Fixed a bug with the direct reading (via ^HTMP command) of conventional temperature sensors. This was a bug that was introduced with the support for the Humidity-Temperature-Pressure sensor in version 1.04.24.

Fixed a problem with the units watchdog resetting occasionally. This was caused by a bug in the debug output code in which an interrupt flag was checked before entering a low power mode. There was a finite probability that the interrupt could occur after the flag was checked but before entering low power mode. After the last bit of a character was sent the interrupt was disabled from within the ISR. This could enable the low power mode to be entered after the interrupt had ben disabled. The interrupt is now disabled outside of the ISR. The modified debug output code is also less prone to produce corrupt characters.

1.04.24 - 7 October 2008

Added support for the Harvest Humidity-Temperature-Pressure sensor. Humidity reported by this sensor is reported in a additional field of the log record, along with the pressure, distinct from the temperature readings. This means that only one such sensor can be attached to a system but all eight temperature positions in the log record can still be used for temperature.

1.04.23 - 11 September 2008

Made it possible to use up to eight wireless temperature sensors by:

  • Removing the assignment of error codes to temperature reading positions one and two when wired sensors are not connected.
  • Making the assignment of humidity readings to temperature reading positions five and six conditional on humidity sensors being detected.

Previously only four wireless sensors could be used.

1.04.22 - 6 August 2008

Changed the analog sampling so that the wind direction input (analog input 2) can be sampled independantly of the other analog inputs. This allows the analog inputs to be configured for sampling less often and with a sampling delay and still have the wind direction sampled every second. The sampling interval command, ^HASI, now takes a second optional parameter, WIND, that enables wind sampling every second regardless of the selected sampling interval.

The digital groups have been extened to now include the four radio temperature sensor digital inputs (13-16).

Fixed a bug with the ^HWHY command and announcement option returning incorrect causes.

Note that ITU and MIB variants of this version reduce the number of buffer pages from 18 to 17.

1.04.21 - 15 May 2008

Modified bootloader to set DAC output to zero imediately after reset, before the RAM is initialized and the flash is checked. This limits the duration of the DAC power on glitch. It was discovered that at power up the DAC output went to full supply voltage until after it was configured. It wasn't possible to completely eliminate this problem but by changing the bootloader code it was possible to reduce the duration to less than a millisecond.

Reduced the cell phone power lockout time from 30 seconds down to 10 seconds. It had been set to 30 seconds to cope with some of the g18 engines that took an extended period without power before the reset circuit would operate correctly.

An interesting problem occurred with restarts after code downloads not working. This was found to be caused by the cellphone keeping the GPRS session alive despite the loss of DTR during the restart. This is a consequence of the change in the DTR behaviour setting (&D1) that was introduced with version 1.04.04. Following the restart the GPRS session was suspended so attempts to initiate a new session are rejected. A further twist is that because the session still exists the carrier detect is still active so the SPE keeps the cellphone on to allow pass through operation of circuit switched data. If the DTR timeout was set long enough then after five minutes the SPE would power cycle the phone and all would come right.

To address this problem the SPE now checks carrier detect at power on and terminates any suspended GPRS session. Also the connect timeout was reduced from five minutes to three minutes.

1.04.20 - 29 January 2008

An error in the code was noticed that could result in some variables being corrupted when expired temperature readings are cleared. The variables that would be corrupted all relate to the reading of temperature. No effect of this bug has been noticed. Possibily because an effect of the bug is to suppress its own action.

1.04.19 - 8 January 2008

Fixed problem, introduced with the ^HCPD command in version 1.04.04, that caused the Cabco 'E' command to not work when not in low power mode. The RS232 transceiver was being shut down when the 'E' command was being sent.

1.04.18 - 19 December 2007

Ever since the logs have been stored in dataflash there have been occasional problems with units stopping logging. One mechanism that can cause this problem was discovered and this version addresses it.

1.04.17 - 15 October 2007

Fixed a parser bug with the ^HDTO command that prevented setting the extension time to zero.

1.04.16 - 11 September 2007

Made changes to speed up the processing of an outgoing UDP packet. For a full packet this was found to be taking around 36ms which is enough to result in data loss when fed a 9600bps stream without flow control. The major changes were a new GetBufBytes() function that speeds up the CompleteUDPHeader() function and also the debug was reduced for the case of a full packet. The changes reduced the full packet processing time to around 24ms.

1.04.15 - 31 July 2007

New variables, HOT and COLD, have been added to support temperature based logging and calling (^HLOP and ^HSCO) for sensors other than just sensors one and two. The new ^HTHC command has been added to configure these variables.

Added ^HRFG command to read the group setting of the radio temperature sensors. The group is not directly readable but this returns the group value from the most recent temperature reading that was received.

Added tracking of the temperature sensors RF signal strength separate from the temperature reading. This makes the code easier for the min/max checking and also means that the reported signal strength of an absent sensor is now zero instead of 15.

The following changes were made to free up additional code space. These should have not noticable effect.

Moved the table of command names from commands.c to parser.c so that the strings that duplicate those in the parser's command table would be merged. Duplicate string merging only works within the same source file.

Changed the command table entries to use a Boolean to indicate whether it's a set command or an execute command. This made each entry one byte smaller but because this took the entry from an odd to an even number of bytes the effective size of each entry was reduced by two bytes.

Rewrote the CopySetting() function in globals.c to be separate CopyAllSettings() and CopyExclude() functions. This allowed the CopyExclude() function to use a series of calls to CopyFlashWord() and CopyFlashDWord() functions that had the source and destination parameter block addresses coded into them. This reduced the parameters to just an offset of the element to copy and reduced the size of the calling code.

1.04.14 - 26 July 2007

Changed reset value of temperatures from zero to -884. This is because with the radio temperature sensors an SPE can reset and write a log record before it has received reading from all of its sensors. With wired sensors the SPE took the reading when it needed them so this wasn't a problem. Using an error value avoids the generation of false frost alarms.

Changed the debug port output of the radio temperature sensor signal strength to include a decimal fraction. This is to assist with range testing.

In order to gain a little more code space two new functions were added to the globals.c file, CopyExclude() and CopyAll(). This are essentially wrapper functions for the CopySetting() function but with reduced parameters. By reducing the number of parameters, around 400 bytes was saved from the Commands.c SetParameter() function where the CopySetting() function was used repeatedly.

1.04.13 - 26 June 2007

Added support for radio temperature sensors.

Changed method of expiring temperature readings so that they are only discarded once they are between 90 and 120 seconds old. This is a futher development on the change of version 1.04.07 which sometimes recorded error readings when the interval between logs was sufficiently short. The asynchronous nature of the radio temperature reports caused this to show up more.

1.04.12 - 5 April 2007

Version 1.04.06 included a change to the InstantTrigger functions that was to help with interrupt execution time. A bug was found with this, and corrected in this present version, that was preventing the instant triggering of log writes. Instant triggering of calls was not affected.

Also made a minor change to the phone power on check to try and help with the problems we've had with the MIB modules. Due to being unable to repeat the fault this possible fix is unconfirmed.

1.04.11 - 8 March 2007

Fixed a problem with the counting of the digital inputs. The input port interrupt edge select was being toggled before the interrupt flag was being cleared. This meant that if a second edge occurred in the time between the first edge (and interrupt) and the clearing of the flag then the edge sensitivity would get out of phase with the input signal. This could lead to lost counts before they got back in sync again. This problem only shows up when signals with fast switching noise, such as you can get from some relays, are used. By clearing the interrupt flag before the edge select if the input has already changed state then the interrupt flag will be immediately set and a second interupt will be processed.

1.04.10 - 21 February 2007

Fixed a problem with the most significant bit (last sent) of debug port characters being stretched. This was happening because the SendCharDebug function was only waiting until the transmit buffer word was zero and this happened just after the start of the last data bit, once the compare was configured to send the stop bit next. The wait was changed to look at the interrupt enable flag since this is only cleared at the end of the last data bit.

Added a new announcement option, HNC (NC for New Context), that indicated if the SPE has established a new PDP context. The flag is set when a new context is started and cleared when the SPE receives a valid UDP packet. The purpose of this announcement option is to make it easier to calculate chargable data usage when there is a volume rounding applied to each session.

Changed the reporting format of the ^HWHY command and announcement option to be more consistent with other commands.

1.04.09 - 12 February 2007

Fixed problem with selection of announcement fields HRI1 through HRI4 using the ^HAFS command. The code was matching the HRI option first and then returning and error when it looked at the next character (the digit). The new code now looks in reverse order so the longer sequences are checked first.

1.04.08 - 16 January 2007

It was found that the T10 event didn't work. This was tracked down to a precedence error in the code that set it and was fixed by adding an extra set of parentheses.

In Globals.h there the LOP_TIMEEVENTS defines were missing the SCT and ICT2 events. Also the LOP_DELTAEVENTS were missing the C3 and C4 events. There are no adverse consequences of these omissions but they are now corrected.

1.04.07 - 15 January 2007

An issue was found with the DTR timeout extension (the new, second, parameter of the ^HDTO command). If the ^HDTR=0 command was used to terminate a session the DTR extension was then applied afterwards and delayed the session termination. The order of these was changed so that the DTR timeout is now extended before commands are processed.

Until now, when additional, numbered, temperature sensors are used the readings are held if the sensor can't be found. This differs from the primary temperature sensors that report errors. This code version changes this behaviour so that errors will now be reported for sensors that can't be found.

1.04.06 - 18 December 2006

Made the ^HRI command (read digital input) work again for analog inputs. This used to work before source code unification at version 1.04.00.

Added the ^HAIF command to allow the analog input filters to be enabled or disabled. For certain low power applications the analog inputs are sampled at a very low rate. For these applications the delay caused by the analog input filtering is too long so the filtering is undesirable.

The DTR timeout command, ^HDTO, has had a second, optional, parameter added. This second parameter is used to specify a timeout value that is used after data is received. If the second parameter is used then the DTR timeout is set to this value each time a valid packet is received by the SPE. This allows extended sessions and quicker hangups on failures.

The connect timeout is now reduced to one minute once PPP negotiating starts. This timeout starts off at five minutes and is used to decide to power cycle the modem should a session not be established in a reasonable time. By making this shorter once we get to the negotiation phase there is less delay if power cycling is needed. This was changed to go with the change in the DTR timeout to facilitate a shorter DTR timeout period than the default of ten minutes.

It was found that if an SPE command was entered directly after termination of a call then it would always fail. This version adds resetting of the LastChar variable in the PPP.c file so that the start of a command is correctly identified.

It was noted that during a code download some characters were being lost. This problem was previously addressed in ITU version 1.03.01 but showed up again. This was, once again, caused by the RTC interrupt handler taking too long. This time it was addressed by use of an improved modulo function, some speed enhancements to the InstantTrigger function, and less frequent use of this function from within the interrupt handler.

In the Commands.c file the ShowHelp function was changed to use the command name from the CmdNames array rather than having the command name embedded in the help string. This saved constant space by reducing the string sizes and allowing duplicate strings to be merged. When they had the command names in the help strings there could be no duplicate strings. Also changed the string output functions to insert a carriage return before any newline characters. This saves storing all the carriage return characters. A newline character can still be sent without a carriage return by using the character output functions.

1.04.05 - 17 November 2006

Added Hayes type, "+++", escape sequence support.

Added filtering of analog inputs. The latest six reading for each analog input are held in memory and a filtered value calculated by discarding the highest and lowest reading and averaging the remaining four.

Fixed a bug that was causing the phone to be power cycled unnecessarily. An extra timeout had been added, to improving performance with the g24, but this was not being initialized correctly every time.

1.04.04 - 13 September 2006

Fixed bug that was causing the analog reference to be left on if the analog sampling interval was set to greater than 25 seconds. Bug was introduced at version 1.04.00.

Made sending of the second two pings to the second IP address (as well as the first) dependant on the address having been set.

Added ^HCPD command to allow setting of a delay before the cellphone module is powered down. This command can be issused by the host end software to allow a circuit switched call to be made to an SPE within a time window (up to one hour) after the call. Also changed the behaviour of the DTR absent loop to allow passing of data between the RS232 port and the cellphone. The RS232 converter is power up based an activity. SPE commands are still not processed in this DTR absent mode.

Made of output operate timers (^HOOT) operative for all code variants and not just the ITU.

Removed the ^HREF command from the SPE code variant. Now that there is a special SPE-MIB code variant it's no longer needed in the standard SPE code.

Added ^HCMD command.

Added further announement options. Digital input counts three and four (HCNT4 & HCNT4), anlog inputs four and nine (HRA4 & HRA9), and the call reason (HWHY) are now available as announcement options.

Fixed bug with ^HRSV result presentation. When the first decimal digit was a zero it was showing as a space.

1.04.03 - 22 February 2006

Changed module power up code to assert DTR (active low) to the module so that the modem-in-a-box SPE could turn on the module. Recent code versions have used the on/off line for power control instead of the ignition line. This was done to allow operation with the g24 module that has a higher ignition line voltage requirement. However the MIB doesn't have the on/off control line on the connector. Instead the ignition line must be used. The MIB also allows the DTR line to be used such that if DTR is asserted then the ignition line will be pulled up to the supply voltage regardless of the state of the ignition input to the MIB. This code version uses the on/off line and DTR since only one of these will affect any particular hardware platform.

Made The ^HREF command effective for the SPE. This is useful with the MIB SPE since this version includes the external voltage reference.

Added a receive idle timout feature. This is for SPEs that are intended to remain on line all the time. The new ^HRIT command specifies a timeout period that is used to detect a loss of communication. Each time a UDP packet or ping request is received the SPE resets its receive idle timer. If this timer expires then the SPE will reset the phone module and establish a new GPRS session (provided ^HPOC is set correctly) in the same way is does for a ping response failure. To use this feature requires that the host computer talk to the SPE often enough to keep the session alive.

Compared to the ping test the receive idle timout has a couple of advantages. Firstly it can reduce the data volume in certain applications where the ping traffic makes up a significant portion of all traffic. The other advantages comes from a reliability issue. It has been found that in some fault situations the SPE can send a ping and receive a reply but a UDP packet sent to the SPE a few minutes later will fail to arrive. Under this condition the SPE ping test doesn't help but the idle timeout will. By having the timeout reset by a UDP packet or ping request the host computer can either talk normally to the SPE via UDP or can send it a ping. The SPEs ping test can be used as well since this will only cause the SPE to receive ping replies which are ignored for the purpose of resetting the idle timeout.

1.04.01 - 10 November 2005

Fixed bug with not reporting supply voltage in LCF style logs. Text and binary logs reported correctly.

Added check of date when reading log records from flash. If the date and time field is zero the SPE retries up to three times.

1.04.00 - 28 September 2005

This version unifies the g20 SPE and ITU source code.

Fixed display of digital input four state when it appears as an announcement field.

When changing the analog thresholds, if the optional level threshold was not specified then it would change to 65535 rather than remain unchanged as it was supposed to. Fixed this.

The hour and minute fields in the default scheduled call times were reversed. This was fixed in g18 version 2.02.04 but missed getting ported to the g20 code.

Added ^HRSV command and HRSV announcement option. This command and option read the supply voltage and return the result in volts. The purpose of this is to allow a platform independant option since the ITU uses input nine for the supply and the SPE uses input three.

Added support for the supply voltage supervisor.

Added a second remote IP address option, ^HRIP2. After the third announcement the SPE alternates between the two remote IP options. Each of the two IP addresses has an associated port pair. If a response is received from the second IP address then this is used for subsequent transmissions from the SPE regardless of the ^HRTS option setting. The SPE looks for, and addreses to, the port pair associated with the IP address that it is using. However, it always uses the ^HRIP1 port pair for it's own port numbers. That means that any packets sent to the SPE should be addressed to the ^HRIP1 ports regardless of the address they are being sent from.

Also made the port number an optional parameter for the ^HRIP commands. If omitted the port number is unchanged.

Fixed Cabco 'E' command operation when in low power mode. The RS-232 driver is now kept on long enough for a response to be received.

Fixed a problem with manually initiated calls failing within 20 seconds of a previous session termination. This had not previously been identified as a bug. It was found that the g20 would not accept another dial command for 20 seconds after a previous call. A 30 second retry time was added to the dial command operation to cover this.

The default IP address was changed from the old harvest.com ADSL address to the new direct internet access (DIA) frame relay circuit address (210.55.246.26).

Added ^HWHY command to help explain the most recent log and call reasons. This is intended to help with debugging in a few cases when it is difficult to understand why so many log records are being writted or calls made.

A problem had been found such that when certain combinations of three of more Dallas sensors were fitted to the same bus the enumeration would fail to find all of the sensors. This was due to a bug in the enumeration algorithm. This version incorporates a revised search algorithm that correctly finds all sensors.

1.00.17 - 26 July 2005

Changed all local constant declarations to be static to prevent these being copied to the stack and hence using excess stack space. Also changed the .xcl file to put initialized data lower than uninitilized data (further away from the stack) and created a new segment for the buffers to force these to be highest. The use of static consts greatly reduced stack usage in order to avoid the stack runing into variables. The re-arrangement of the data segments puts the least important data (least used buffer page) in the position most vulnerable to a stack overrun.

Added range checking of the flash write address in globals.c to prevent writing outside of the configuration settings and ID info pages.

1.00.16 - 1 June 2005

The loss of DSR problem addressed, speculatively, in version 1.00.15 was found to be the g20 turning off. Since the power off state of DSR is a logical true the trap added previously will not work. Instead, checking of the g20 power on state was added to each of the two sub-loops of the main loop. As per ITU version 1.02.02.

When talking to Dallas 1-Wire devices a 1µs delay was added between turning on passive pull up and turning on active pull up. This reduced di/dt and hence ringing. This was particularly important when talking to RFI filtered sensors since the fast di/dt caused the resonant circuits in the filters to ring which in turn caused the Dallas devices to see a false read time slot. As per ITU version 1.02.02.

1.00.15 - 26 March 2005

Fixed a bug that caused the SPE to not re-establish a connection after a network initiated context termination.

Added at trap to check for a loss of DSR from the g20 module. This is a speculative fix of a potential, but unconfirmed, problem. If the problem actually exists, it would affect only units that use a DSR to DTR loopback.

1.00.14 - 31 March 2005

Added LED flash codes for progress (green), errors (reds) and data transfer.

1.00.13 - 17 March 2005

Increased TTL (Time To Live) value in IP headers (UDP & ICMP) from 32 to 64. This was originally for the Met Service to help investigate a problem they were having in England. Later confirmed to fix a problem with calling from Italy.

1.00.12 - 2 March 2005

I had been found that the SPE would fail to establish a connection when being sent data during the connect phase. This was found to be due to the packet buffer filling up and then a bug in the SendPacket function meant that nothing was done with the full buffer. This was fixed by changing the SendPacket function to discard the packet if it was not able to sent it due to PAD mode not being established.

1.00.11 - 21 February 2005

Fixed a bug with the Campbell mode RTS check. The check on the RTS line was still using the g18 SPE pin.

Fixed transparent mode. There was a bug that caused the SPE to immediately terminate any GPRS session when the SPE was in transparent mode and another bug block any data being sent to the g20.

Fixed handling of PAP authentication. With the g20 it is necessary for the SPE to send the first LCP configuration request. The code as ported from the g18 version assumed that when an LCP config ack was received the LCP phase of the negotiation was over and moved on to the PAP phase. This is no longer true since the LCP negotiation now occurs in the opposite order. With this code version the SPE now waits until both directions of the LCP negotiation are complete before moving on to the PAP phase.

1.00.10 - 17 February 2005

Fixed Campbell and Unidata mode handling of the RI line. This was a problem of not changing the pin definition when moving to the g20 platform. Also added the RTS check when in Campbell mode as per g18 version 2.02.09.

1.00.09 - 17 December 2004

In the function ReadDallasBit we had a six cycle NOP of the form MOV 0(R4),0(R4) although it turns out that the IAR assembler had replaced this with the five cycle form MOV @R4,0(R4). However register R4 had unknown contents and was used just because it was used in the databook example. The R4 register is little used by the compilier but was used in three places. In one case it took a value in the range 0 to 8, and in another 0 to 64. The third place it was used was in the extended log search function where it could take a value from 0 up to 6143. If the search function was interrupted while R4 had a value in the range 288 to 300 and this interrupt service return called ReadDallasBit then the action of this move instruction would result in a key violation of either the watchdog control register or one of the flash control registers. This would cause an immediate reset but the R4 value is preserved through a reset so next time the ReadDallasBit function was called the same would happen. This left our SPE stuck resetting every minute so long as it had a Dallas device attached. A power down was needed to recover normal operation. The re-entrancy avoidance change of version 1.00.08 would prevent this problem but this version tidies it up properly.

1.00.08 - 13 December 2004

Changed the call to CheckTemperatureReading from the TAOvfl interrupt to the UpdateFlashLog function. This avoids possible re-entrancy and also has the benefit of reducing the stack depth.

Changed the ReadHumidity function to read the sensor supply voltage before its output and then use the supply voltage less 200mV as the upper limit of a valid sensor reading. Previously a fixed threshold was used and this resulted in some readings being discarded because they exceeded this threshold.

Added error codes (1301-1303) for some types of humidity reading errors instead of just returning zero. The maximum possible real reading from the sensor is 1296 so the 1300 range was choosen to be above this but distinct from the usual no sensor found values.

1.00.07 - 6 December 2004

Added a 30 second minimum off time for the cellphone power. When the phone is turned off a timer is started and any attempt to turn it back on within the 30 seconds will be delayed.

Added checking of the response to the AT+CSQ command when reading the signal strength for the announcement. The SPE will retry up to ten times at two second intervals until a useful response is obtained.

Added checking of the appropriate timer interrupt enable flag before entering the WaitForDebugEmpty wait. Also limited the duration of the wait to 100ms maximum.

Increased the watchdog timeout in the DTR true loop from 30 seconds to 120 seconds. This is to cope with the longer response time that may be encountered with the AT^HPWR=1 command now that the call power lockout and signal strength loops have been added.

1.00.06 - 26 November 2004

Further reduced the buffer page count (now 20, was once 22) to prevent the stack running into them.

Rewrote log search function because the old version had a problem when the number of records just filled the number of entries.

Made the ^HFES take an optional parameter to specify the sector to erase. This can then be used to erase the log records if desired.

Made the seconds field of the ^HLOG and ^HLCF commands default to zero when to time has been specified to the minute. Previously this defaulted to the real time clock second.

Added delay in generating log response when the DTE transmit buffer filled up to over 512 bytes. This prevents flooding of the buffer and data loss.

1.00.05 - 12 November 2004

Added ^HRI0 command to read the state of the IO1 line for diagnostic purposes.

Made the ^HRST command (set factory defaults) locally executable only. This is to make sure it's not accidentially sent to a remote unit since it would stop it calling. There are other command that could stop it calling but this command has no reason to be executed remotely and could be confused with the ^HRTS (reply to sender) or ^HWTDG (watchdog reset) commands.

Fixed a bug with CTS being cleared on a transmit underrun when in normal mode. This was only supposed to happen in Cabco mode.

Changed from using the ShowIPAddr() function to using the alternate unsigned long format (%#ul) in Commands.c.

Changed the default setting for ^HAFS (announcement field selection) to be just HSN. This has the advantage of not having to read the IMSI out of the phone at power up.

Added ^HIFT command as per the g18 version. The input filter times were there but the command for setting them was missing.

Added ^HCCC command and announcement option to return a CRC of the configuration settings plus the SPE software version.

Added extra checks to StartADC to check that the timer is running or the ADC is busy before we assume a conversion is already in progress.

Added software resets of the two UARTs at power up to prevent stay characters appearing at power up.

Changed watchdog system to use the RTC interrupt (14.0625 per second, ~71ms) and a counter. With the exception of the ^HWTDG command the counter is only reset from the main loop. The watchdog is still turned off for code updates.

1.00.04 - 29 October 2004

Added a five second timout when sending data in either of the Cabco modes. When the timer expires the SPE clears CTS and discards the pending data. This prevents the SPE from waiting forever and the Cabco stand locking us out because we've had CTS asserted too long.

1.00.03 - 27 October 2004

Added special mode 5 for Cabco units with the 'E' command and report in on change of error count.

1.00.02 - 11 October 2004

Fixed problem with reading of humidity sensors.

1.00.01 - 8 October 2004

Fixed problem with reading of Dallas temperature sensors.

1.00.00 - 8 October 2004

Initial version released for very limited field testing.