HLX Firmware Version History
--------------------------------------------------------------------------------

Full Version 2.2.0* - 6/28/12
--------------------------------------------------------------------------------

*All settings will be lost when loading this firmware. Be sure to backup your
settings using the import/export on the menu before loading the new firwmare.

System Card 2.2.0
-----------------
1. Added a watchdog feed to the [rmap] command; in some cases, a large number of
   outputs could have caused the watchdog to kick and reboot the HLX.
2. Fixed a bug in the favorites menu which would have ignored certain zones in
   the member count.
3. Added retries when trying to load data from the EEPROM to help in case of a
   bad EEPROM read.
4. Modified the USB import file procedure to make it more robust.
5. Added a watchdog feed to the restrictions reset, as in some large cases, it
   could cause a reboot.
6. Changed the delay in boot up from 3 to 5 seconds to give the cards more time
   to boot.
7. Changed the keyboard reset delay from 70ms to 100ms.
8. Added a check for cards that did not enumerate, holding the line low. This
   will cause an error message to be displayed and the unit to reboot.
9. Changed default factory settings to mute outputs and to set audio outputs
   which have volume control (audio only card, component cards) to -40 dB.
10. Added a message for displaying when the unit is saving, and when it has 
    completed a save.
11. Changed the autosave to not be triggered by query commands.
12. Changed the autosave to be canceled by a manual save command.
13. Changed the save and load routines to hold the qprox keyboard chip in reset
    during their operations. This should make sure that the keyboard chip does
    not interfere with saving and loading.
14. Modified the main menu to allow HLX systems with only CAT-5 driver cards to
    access volume mute control.
15. Modified the volume menu to make a Volume/Muting menu. This menu will allow
    CAT-5 driver cards to mute or unmute their volume from the front panel. Also
    modified the way all volume adjustment and individual adjustment works;
    turning down the volume below the minimum mutes the output, and turning it
    up above the maximum fixes the volume output (for DSP zones). The all 
    volume adjustment screen mutes when turned below the minimum, and unmutes when
    turned up.

Zone Card 2.2.0
---------------
1. Set the outputs of the CAT-5 driver cards to mute the audio outputs by default.

Source Card 2.2.0
-----------------
1. No change.

Full Version 2.1.0
--------------------------------------------------------------------------------

System Card 2.1.0
-----------------
1. The maximum zones in the system was increased from 64 to 96.
2. Replace the system failure messages with a one line message indicating which
   part of the unit has failed.
3. Added a serial command for changing the frequency of the high-pass filter in
   an output - [EO###HP#####]. Additionally, the mode command has a new mode 
   [EO###M5], which is the high-pass mode. The high-pass filter corner frequency
   range is 1-20,000 Hz.
4. Modified the tone menu to include high-pass mode.
5. Modified the equalizer menu to handle low-pass and high-pass modes.
6. Fixed an oversight whereby all the DSP settings that were not nominal were
   not being sent to the zone cards. This caused mode switch commands to result
   in a mismatch between what was set for the zone and what was in memory; for
   example, if tone was set to +12, +12, and the unit booted in ZQ mode, switching
   to tone mode would result in the nominal settings of 0, 0 to be heard while the
   menu displayed +12, +12. If you adjusted the +12, +12 it would then jump to the
   correct setting. Now all settings are sent to the card that are not nominal so
   that the mode switch command functions correctly.
7. Added a serial command [VO###F1], which sets the volume of an output zone with
   DSP to 0 dB and 'fixes' it there. Further volume adjustment commands from any
   source are ignored; use [VO###F0] to remove the volume lock.
8. Modified the volume adjustment screen in the front panel menu so that increasing
   the volume past 0 dB results in setting the volume of the zone to fixed. Turning
   it back down first 'unfixes' the volume, and then turns it down.
9. Modified the firmware versions screen to make it more clear what is being
   displayed. The bootloader version of the expansion cards is not displayed, and
   the additional room is used to display the zone or source card name and number.
10. Moved the detection for if a card needs a firmware update BEFORE the check for
    a valid configuration. A card could lose it's firmware (if for instance, power
    was cycled during the update) and then cause a configuration error, which could
    not be remedied unless the offending card was removed. Now the cards can be
    updated.
11. Added a delay during all configuration errors so that they can be seen before
    the system failure message is displayed.
12. Changed the system failure messages to display for 3 seconds and then reboot. 

Zone Card 2.1.0
---------------
1. A bug was found whereby the 4th output port of an audio only output card (8
   ports total) would not be set upon bootup and would require switching to and
   away in order to be activated. Corrected this issue with a small software
   change.
2. Changed the DSP programming to include a new mode - high pass filter mode.
   The high pass filter is a second order Butterworth filter with a default 
   crossover frequency of 100 Hz.
3. Switch the DSP ADI_REG_TYPE to a constant in order to put the DSP programming
   into flash memory and not into a global variable.

Source Card 2.1.0
-----------------
1. No changes; version incremented.

Full Version 2.0.0
--------------------------------------------------------------------------------

System Card 2.0.0
-----------------
1. Rewrote the main code removing all tasks except for those which are completely
   necessary; the only ones left are the telnet server/client, main task, USB task,
   and Ethernet task. In addition, removed all dependance on the MQX OS as was possible,
   removing lightweight events and message queue handling. The main queue now uses
   a queue written and tested in previous products.
2. Added factory default settings to the menu.
3. Added messages that appear over serial for telnet client connection and
   disconnection; also added a telnet client connection message on the clients
   themselves.
4. Removed IR debugging support for timing data from the front/back panel.
5. Remove extraneous serial output messages. For instance, if you were to enter a
   [CXI1] command, you would see a response for switching each zone to input one (CO1I1),
   (CO2I1), and so on. Now you only get the (CXI1) response. This was done to speed up
   the serial output and to match our other products.
6. Changed the way the front panel / back panel IR responds with respect to entering
   the zone number. Now once you have entered the zone number using the keypad, you
   are free to hit any source, mute, volume up, and volume down keys in any sequence
   without entering the zone again. Once you have entered one of these commands, typing
   in a new zone number will reset the value. 
7. Added the ability to have additional discreet IR codes to help installers eliminate
   the need for IR control macros. There are now discrete commands for:
   a. Connecting zones to sources
   b. Muting on/off/toggle zones
   c. Volume up/down in a zone
   d. Balance left/right/center in a zone
   e. Bass up/down/flat in a zone
   f. Treble up/down/flat in a zone
   g. Connecting a group to a source
   h. Group volume up/down
   i. Group mute on/off/toggle
8. Switched the default serial baud rate to 9600 baud. Also remove the ability to change
   the serial baud rate from the menu, and the baud rate change command. This is to
   eliminate confusion over baud rate settings, and with the reduced output above, there
   is no need to run at a faster baud rate. This is also an 'industry standard' rate which
   all devices should support.
9. Changed the way the Ethernet settings are handled. Now it is possible to change
   any Ethernet settings from telnet or serial without losing the connection; the
   setting changes are saved but are not acted upon until a power cycle or a commit
   command has been issued. Modified the [EQ] command to report if changes have not
   been committed.
10. Added a serial command [EC] which commits Ethernet setting changes. This is so it
    it possible to set a static IP/gateway/network mask over telnet without being
    disconnected. Simply set all the settings as desired, and then issue the commit
    command to cause the changes to occur.
11. Removed unnecessary button pushes from the import/export/firmware update menu
    selections; they are now more streamlined. They also update real-time when the USB
    drive is removed or inserted.
12. Removed the three second delay before automatically rebooting to perform the firmware
    update. Also remove the 'press knob to reboot' messages from the bootloader and made
    it automatically reboot.
13. Added serial command [VG##R##] to ramp a group volume to the designated level.
14. Added serial command [VG##U] to increase a group volume 1 dB from their current
   output levels; for example, if zone 1 and zone 2 are in a group, and zone one is
   set to -10 dB and zone 2 to -20 dB, this command would put them at -9 dB and -19 dB
   respectfully.
15. Added serial command [VG##D] to decrease a group volume (similar to the up command).
16. Added serial command [VMG##] to mute a group.
17. Added serial command [VUMG##] to unmute a group.
18. Added serial command [VMTG##] to toggle muting on a group.
19. Backup watchdog support is now added back. 
20. Added a manufacturing level serial command to test the rail voltages.
21. Replaced the ADAU1702 DSP code with a new version that will simply design
   changes in the future. In addition, this changed various properties:
   a. The slew rate of the volume adjustment has been changed. There is now
      a more perceptible ramping when you change volume levels.
   b. Mute has been changed from adjusting volume down to -127 to a full output
      mute.
   c. Mode control has been changed to simplify processing; now a multiplexor
      chooses mode in the DSP rather than having everything strung together and
      having to disable individual elements.
   d. A low pass filter mode as added, which would allow one to hook up a subwoofer
      to a particular output without needing a crossover. This mode "mono-izes" the
      stereo input into a single signal, low pass filters it at the specified
      frequency, and outputs the signal on both outputs. Added a serial command
      to enable setting of this frequency, [EO###LP###]. The limits for the LPF are 40-
      240 Hz with a default setting of 100 Hz. The low pass filter setting now appears
      in the [QX], [QXSB], and [QO###] commands.
   e. The mode command has a new mode [EO###M4], which is the low-pass mode.

Full Version 1.3.0 - 9/7/2011
--------------------------------------------------------------------------------

System Card 1.3.0
-----------------
1. Added a serial command [QEO%d] to query the ZQ eq band settings for a zone. Note
   that the values will be returned regardless of the DSP mode; for instance, if the
   zone is in TONE or FLAT mode, the ZQ bands could be set to any value as they are
   not currently being used.
2. Changed the I2C write_retry routine to delay first, then write. This slows down
   the communication between the cards and the system controller very slightly, but
   also takes care of some NACK issues.
3. Removed the storage_task, which auto-saved the state of the system. This is now
   done inside the main queue task, which will free some memory and also force
   the save to only occur while the queue is not busy.
4. Fixed a menu issue where the selection screen would not update to show a new
   source selection unless the cursor was on the top line.
5. Fixed an issue whereby front panel IR lock would not lock upon reboot.
6. Made the default setting for IR lock to be on (front panel IR disabled).
7. Increased the stack size of the watchdog and main tasks. This helps to prevent
   some lock up issues while using the iPad control app.
8. Removed zone card IR detection while using the IR Diagnostics. This was causing
   issues with IR reproduction and stability. If there is an issue with noise, it
   is suggested to unplug all receivers from the back panel, and plug each one in,
   one at a time until the noisy one causes the traffic IR to flicker while there is
   no incoming IR.

Zone Card 1.3.0
---------------
1. Adjusted the IR input routines to better recreate the spacing between repetitive
   IR commands causing repetitive activation on some Samsung DVD players, Direct TV.

Source Card 1.3.0
-----------------
1. Adjusted the IR output routine to better recreate the spacing between two commands.
2. Changed the I2C IR routine to only attempt to process I2C transactions with greater
   than 6 bytes. Previously, it was possible to break the IR output by hot plugging the
   IR receiver on the zone card which caused a 1 byte transmission.
3. Added a check to prevent the IR output from from entering an undetermined state and
   stop outputting IR. This was occurring while heavy IR use w/Direct TV + Dish Network
   remotes.

Full Version 1.2.0 - 7/15/2011
--------------------------------------------------------------------------------
System Card 1.2.0
-----------------
1. Added a display settings item to the menu. It allows the adjustment of the
   front panel VFD sleep timer, and also allows one to adjust the VFD/LED 
   brightness levels.
2. Fixed a menu issue when no cards with DSP are present.
3. Changed system I2C speed from 100 kHz to 400 kHz.
4. IR diagnostic has been rewritten to align with the way that the zone card now
   works. The card will not return IR data that it has decoded and understands, 
   only IR that would have been passed to source cards.
5. Added serial command [rmap] which shows the selection and restriction map.
6. Changed the firmware update process; now, in the menu, once the firmware update
   is selected, it updates the cards, reboots the unit automatically, and updates
   the system controller. Makes the process more of a single step.
7. Changed the menu graphic equalizer adjustment screen to make adjusting
   the levels a more stream-lined process.
8. Changed the front panel IR lock control to be more obvious as to what you are
   adjusting; rather than turning the lock on or off, now the IR is enabled or
   disabled.
9. The telnet server has been rewritten to allow for multiple client connections;
   previously, it was limited to 1. Now 2 clients can be connected at the
   same time. Note that individual client connections have a time out of 15
   minutes; if a client crashes and does not close the connection properly
   (sending an EOF) that connection will remain busy until it times out.
10. Changed the firmware version screen to make it more clear what was being
    displayed.
11. Added serial command [vxr##] to set the volume of all volume adjustable zones
    at once. This command is also now accessible from the front panel volume
    adjustment screen by selecting the 'all zone' selection in between the final
    and first adjustable zones.
12. Adjusted the delays between checking for received serial and telnet data;
    a relatively long delay (200 ms) is used continually; once data has been 
    received, the delay is shortened (1 ms) for a period of time (100 ms) to help
    handle large amounts of commands sent from non-human sources.
13. Changed the way the DSP frequency response characteristics are handled.
    Previously, the tone and EQ could be used at the same time. Now, each zone has
    a DSP mode setting - 0 disabled, 1 tone, 2 ZQ, and 3 preset. The disabled mode
    turns off the EQ and tone controls. Tone mode allows the bass and tone levels
    to be set. Zq mode allows setting specific eq bands (no tone control). Preset
    mode allows the selection of one of ten presets, which can be named, and set
    up for quick access.
14. Added serial command [EO###M#] to set the DSP mode of a particular zone. Modes
    are as follows:
    0 - EQ/Tone disabled (set flat)
    1 - ZQ mode. Custom 10 band equalizer, with setting saved per zone.
    2 - Preset mode. Choose one of 10 preset 10-band equalizer settings.
    3 - Tone mode. Adjust bass or treble alone, 10-band eq disabled (flat).
15. Added serial command [EO###P##] to set the EQ preset of a zone.
16. Added serial command [EP##B##L##] to set an EQ preset band level.
17. Added serial command [NEP##"@@@@@@@@@@@@@@@@"] to name an EQ preset.
18. Added serial command [QEP##] to query an EQ preset.
19. Redesigned menus for a more consistent feel.
20. Added a command to set all 10 bands of the EQ on the zone card at once.
21. New system I2C command structure.
22. The favorites menu now details the number of members for each group.
23. Added serial command [QVO###] to query the output volume of a particular
    zone.
24. Added serial command [QVMO###] to query the mute status of a zone.
25. Added serial command [QCO###] to query the connected source of a zone.
26. Changed the default serial baud rate to 115200 baud.
27. Added serial command [BO###LU] and [BO###RU] to adjust the balance to the left
    or right one increment.
28. Added serial command [EO###B##U] and [EO###B##D] to adjust the level of an
    EQ band in ZQ mode one increment up or down.
29. Added serial command [EP##B##U] and [EP##B##D] to adjust the level of an
    EQ preset in preset mode one increment up or down.
30. Added serial command [EO###STP##] to save the current ZQ 10 band settings of
    a zone into an EQ preset. This makes creating a preset easier, because you 
    can adjust the zone's EQ on the fly, and then save it to the preset.
31. Added serial command [To###BD], [TO###BU], [TO###TU], [TO###TD] to adjust the
    bass and treble tone controls one increment up or down in tone mode.

Zone Card Version 1.2.0
-----------------------
1. Corrected an issue where switching a zone that is muted would cause it to unmute
   automatically (and inadvertently).
2. Added a command to set all 10 EQ bands at once.
3. New system I2C command structure.
4. Removed restriction and switching intellegence from the card. Previously IR
   commands received from the card were acted upon by the card, and information
   was then transmitted back to the system card to let it know what happened.
   Now, the card does not do anything by itself and alerts the system controller
   to all received commands; at that point, the system controller sends the
   command(s) back to the card to activate switching, muting, etc.
5. IR buffering rewritten; there are now 8 IR buffers, one for each input
   channel; once a buffer has been filled, it is transmitted into an IR buffer
   queue to be sent out, of which there are 8 elements. If the IR buffer is
   full and the queue is full, no IR will be received until it has been
   processed. This is to help handle noisy IR receivers flooding the zone card
   and crashing it.
6. IR transferring rewritten. Once the IR queue has IR buffers to send, it will
   ask permission of the system card to send these to the source card over the
   IR I2C bus. This will prevent bus collisions.

Source Card Version 1.2.0
-------------------------
1. Fixed a bug where hot plugging IR receivers into a zone card could cause the
   source card to get stuck outputting garbage IR due to a spurious interrupt.

System Card Bootloader Version 1.2.0
------------------------------------
1. The bootloader has been rewritten to allow the one step firmware update of
   the system and the expander cards.
2. The delay on boot up has been removed, but it is now possible to enter the
   system card bootloader (for emergency purposes) by cycling power while holding
   down the front panel knob.


Full Version 1.1.0 - 4/14/2011
--------------------------------------------------------------------------------

System Card Version 1.1.0b - 4/15/2011
1. Implemented a fix for the keyboard/encoder push becoming non-responsive due
   to erratic usage (pushing the knob, turning, and keyboard use all at once).

System Card Version 1.1.0
-------------------------
1. Added volume up [vo###u], volume down [vo###d], and mute toggle [vmto###] 
   commands to the serial command set.
2. Error messages now appear over serial in the event of a crash to allow 
   service to better determine possible problems.
3. A software watchdog has been employed to address lock up issues with the 
   hardware watchdog.
4. Added menu selection for enabling/disabling front panel IR lock.
5. Commands sent to zone and source cards now retry on longer delays to allow
   for more stability.
6. Addressed an issue with entering and leaving the IR diagnostic mode while
   a telnet connection was present or if a noisy source of IR was constantly
   transmitting.

Source Card Version 1.1.0
-------------------------
1. Adjusted the way IR is output to increase the accuracy of the recreated wave
   form. Measurements indicate a relative error of approximately 5% from input
   to output.

Zone Card Version 1.1.0
------------------------
1. Corrected the formula used to generate the EQ band digital filters which now
   results in the correct Q.
2. Rewrote the command processing engine to make it more efficient.
3. Adjusted the way IR is detected by the system to make it more resistant to
   noisy IR receivers.

System Card Bootloader 1.0.1
----------------------------
Note that the system card bootloader is not field upgradeable.
1. Removed the hardware watchdog from the bootloader which in some instances can
   cause lock up issues.

Full Version 1.0.7 - 3/7/2011
--------------------------------------------------------------------------------
1. Matched the full version number with the system card firmware version number
   to make it clearer which version is loaded on the system.
2. Fixed a bug with adding favorites if the favorite was added with only video
   or audio specified.
3. Added a serial command [RAR] which resets all permanent restriction settings.

Full Version 1.0.6 - 3/3/2011
--------------------------------------------------------------------------------

System Card Version 1.0.5
-------------------------
1. The expander firmware menu option only allowed selecting the first file from 
   the USB drive. This has been fixed.
2. Added a serial command [qxsb] which displays the current system settings
   over serial using square brackets - [co1i1] for example, as opposed to 
   (co1i1).
3. Adjusted the telnet connect/disconnect delay to increase operational speed.
4. The [reset] command now resets all settings; previously it left restrictions
   in place.
5. Changed how adding a zone membership to a favorite works when in break-away 
   mode. Previously, if one added a zone to a favorite and only specified either
   the source video or audio, then the non-specified setting by default was set
   to source 1. Now if you add a favorite and only specify video or audio, it
   will default to non-breakaway mode.
   Example:
   [f1ao1ai2] - Add zone 1 to favorite 1, connecting audio to input 2. This will
                also connect video to input 2 by default, the same as [f1ao1i2].
   [f1ao1vi3] - Now specify that zone 1, a member of favorite 1, is to have the
                video connected to source 3. Audio will be connected as
                previously specified to source 2.
6. If the front panel is displaying the zone/source selection screen, any
   switch command now results in the screen displaying the switching zone.
   Previously this only occurred during front panel operation, now IR and serial
   switching commands will also update the front panel display.
7. Sped up firmware update when updating expander firmware (zone and source 
   cards).

Source Card Version 1.0.1
-------------------------
1. All IR outputs will be turned ON during the boot up process to speed IR 
   connectivity testing.


Zone Card Version 1.0.3
-----------------------
1. Changed the way that switching commands are processed in order to eliminate
   analog audio 'pops' during switching. Also fixes problem where many commands
   at once sent to a single card could cause some of the commands to be ignored. 


Full Version 1.0.0 - 2/9/2011
--------------------------------------------------------------------------------
1. Initial release of 1.0.0 for system card, source card,
   and zone card firmware, as well as bootloaders.