HoneywellGalaxy Driver - Changelog

                         Changelog for honeywellGalaxy
                         -----------------------------

100) Workaround for framework bug which was stopping zone
     points for being polled when they are added to a
     running station.

---- Release 1.0.0.0 ----

099) Updated documentation for the driver.
098) Tidied comments.
097) Do not set device status to fault if version command
     fails - to cope with older ethernet boards.
096) Restructured device/panel alarm logic as requested by
     Tridium. Code now raises offnormal and tonormal alarm
     for the panel alarm state object.
095) Remove zones 513 to 520 - these were added making an
     assumption about the protocol which is incorrect.
094) Changed vendor to Tridium. Added documentation tree.
     Added top-level build script. Documentation yet to be
     written.
093) Force zone points to always be subscribed / polled.

---- Forth version given to Tridium for testing 08/02/2010 ----

092) Version number updated to mark release to Tridium.
091) Updated zone points to have dynamic actions for writing
     to them. Alarms that were previously logged at the device
     level are now logged to the "panel" object instead.
090) Fixed license "none" problem for device and point limits.
089) Fixed alarm source name problem for device, proxy extension
     and panel objects.

---- Third version given to Tridium for testing 04/02/2010 ----

088) Version number updated to mark release to Tridium following
     change 087.
087) Code added to provide write support for zone points.
     This partially works, but due to there being three
     commands to write to a zone points, a problem exists
     with this version... The out slot for zones already has
     an enum type, and this is not compatible with the
     enum type needed by the in slot[s]. This needs to be
     discussed with Tridium.
086) Version number updated to mark release to Tridium.
085) Hid the discovery folder property in the point device
     extension.
084) Changed slots using BDynamicEnum to BStatusEnum.
083) Added new property "Panel" under the device class. Moved
     properties from device to "panel" as requested. Added
     alarm source and property panelAlarmStatus. Added code to
     examine all zone points alarm bits and to set or clear
     the panelAlarmStatus property as applicable. If any zone
     alarm bit is 1 then the staus is set to alarm, if all
     are 0 it is set to ok. Added code in zone reponse handler
     to print message if zone state cannot be determined.
082) Removed alarm source "source name" property from the point
     manager view - it can be added by the user if required.
     It is still present on the edit dialog.
081) Zone points "alarm bit" now drives the points "out" slot
     bstatus value to "alarm" if 1, or to "ok" if 0.
080) Group points "alarm bit" now drives the points "out" slot
     bstatus value to "alarm" if ALARM or RESET REQUIRED,
     or to "ok" if NORMAL.
079) Group points had read/write fields in the pointId class
     by mistake - these are now read-only.
078) Zone points changed to only update the "out" slot of the
     point after the "fault" bit has been read from the device.
     This ensures that all values of the "out" slot should be
     valid, to prevent any transient values being shown from
     partly read data.
077) All Enum types that extend BFrozenEnum now include method
     getDisplayTag to return string values for each ordinal
     value - the strings are read in from the lexicon.
076) License code updated following comments from Tridium.
     Vendor is tridium. Code now checks number of devices
     and points in the station against the license limits.
075) Added license checking code to the Network class.

---- Second version given to Tridium for testing 27/01/2010 ----

074) Version number updated to mark release to Tridium.
073) Zone points changed as per Andrew Jackson's request. Out
     slot is now an enum type. Slots renamed as requested, and
     changed to boolean from integer.
072) Group points changed as per Andrew Jackson's request. Redundant
     copy of setState property removed. AlarmState and ReadyState
     properties changed to enum types.
071) Changed alarm class string property to use BAlarmSourceInfo
     and extended point manager view to show the Alarm Class and
     Source Name properties in the view / edit dialog. The Source
     Name defaults to %parent.parent.displayName% and the other
     text fields for the alarm have no default value.
070) Added BStatus + fault cause properties to the UserProfile
     class. Class now implements BIStatus interface. Read/write
     code now updates the status / fault cause properties as
     applicable.
069) ProxyExtension alarm class now has MGR_INCLUDE facets.
068) Moved tcp port properties from ethernet network to its main
     communicator.
067) Overrode network.getNavChildren to make the frozen device
     property appear in the tree view under the network. Removed
     property unitNumber from DeviceId class. Stopped the NEW
     FOLDER button being hidden in the point manager view.
066) Device properties logged on, time/date, panel version are
     now transient.
065) Base network class is now abstract to prevent it showing
     in the device manager view.
064) TODO.txt updated to include actions / items raised at
     meeting with Tridium on 20/01/2010

---- Initial version given to Tridium for testing 19/01/2010 ----

063) Updated TODO.txt detailing outstanding items.
062) Procedure for setting up Galaxy Demo Case for SIA control
     updated following dry run.
061) Corrected type in zone lookup code.
060) Trace suppressed in various places.
059) Added points for "outputs" and code to read/write them.
     Outputs 1 to 256 work OK, there are protocol related
     questions for outputs 257 to 260 which have been sent
     to Honeywell.
058) Point discover job now provides 520 zone points. Code updated
     to poll values for points 513 to 768 in addition to 1 to 512.
     Code added to convert four digit zone numbers to three digit
     zone numbers. Alarm code updated to decode zone number
     correctly for both three digit and four digit numbers.
     Alarm code updated as per Tridium's request.
057) Made group points writeable. Changed device action to only
     allow writing to all groups. To write to individual groups
     use the group point. Group points are now enums. Zone
     points are now boolean.
056) Added comments indicating what to change next to allow
     group points to be writable.
055) Updated to poll groups in same way as zones.
054) Updated to set the value[s] of the zone bits following
     read via poll scheduler. The values are also copied to the
     control point for use on wire-sheets.
053) Added custom poll scheduler to cater for points which
     require multiple field-bus requests to get their value,
     for example zones and groups. This currently sends the
     requests for zones correctly, but does not yet update the
     value of the point based on the reply.
052) Updated alarm code based on example from David @ Tridium.
     There are issues with this, which he is looking at.
051) Source of alarms is now identified to a point, for zones,
     or device for other alarm types. NOTE: if a point does not
     exist in the station the device is used as the source for
     zone alarms.
050) Points are now named correctly when added to the station
     database. List of points now includes groups 1 to 32 and
     zones 1 to 512.
049) Added point discover code + supporting code. Currently it
     discovers dummy points only.
048) Treat / parse NEW event and OLD event packets the same way.
047) Change trace to use logger.
046) Receiver timeout set to 3 seconds - the panel sometimes
     takes a while to respond, and this stops requests being
     sent multiple times. Note: no timing information is
     available in the documentation.
045) Fix ethernet network / ports to work when added to a new
     station. User only has to enter IP address now.
044) Modified Unsolicited Message Handler to accept either
     N blocks or O blocks inside events.
043) Hid the event communicator under the ethernet network.
     Now changes to the IP address of the primary communicator
     are automatically propogated to the event communicator.
     Added property SIAEventPort to the ethernet network,
     and this is also propogated to the event communicator
     when it is changed.
042) Added TcpSocketManager and supporting code to make the
     event socket act as a socket server. Events can now be
     received by ethernet and serial networks.
041) Refactor ethernet network to have two communicators
     instead of three. Added custom tcp socket manager to
     make socket act as server instead of client. Need to
     add custom transaction manager to make socket open
     at startup instead of when first packet is transmitted.
040) Correct off by one error in set date for month.
039) Simulator updated to listen for connections from panel
     for SIA events - this proves that the panel is a socket
     client, not server, and that the port is bi-directional.
     I.E. no longer need read-only/write-only pair of
     communicators - just a single server socket...
038) Date / Time field now uses BAbsTime. Version + Date/Time
     updated after each ping. Device fault cause no longer set
     to OK following successfull commands.
037) Changed PIN fields to be of type BPassword.
036) Added custom device manager view with no buttons.
035) Added TODO.txt file listing outstanding items/questions
     to discuss with Honeywell / Tridium.
034) Implemented action to allow set/unset/reset of groups.
     Need to query Honeywell about groups and how they are
     setup on the panel.
033) Updated code to save user profile to the panel.
032) Modify all methods that decode read packets to pass a
     read context to the property setter to prevent values
     being written back to the panel after a read.
031) Implemented setting time and date on the panel.
030) Implemented code to read time and date from the panel.
029) Reset device status and fault cause to "OK" after reading
     a valid reply to a control command.
028) Tidied warnings for unused imports / variables.
027) Added UnsolicitiedResponseHandler class and connected it
     to both the serial and ethernet communicators. Added code
     to parse alarm events from the panel and raise them as
     Niagara alarms. Checked in before asking questions to
     Honeywell about these alarms as they do not appear to be
     consistent with the protocol document. Added vendor supplied
     Rabbit Programmer + firmware.
026) Added error checking in command response decoder. If
     the block code in the reply is not as expected the device
     is set to fault, and the fault cause is set to a suitable
     error message. Added vendor supplied firmware files and
     tools.
025) Implemented code to write the user profile back to the
     panel when it is changed in Niagara. NOTE: this code
     has been checked into SVN in a disabled mode as it has
     not yet been fully tested.
024) The tagcode field in the user profile is now correctly
     decoded from BCD format to string format.
023) Implemented action to read the unset/set/part set state
     of an individual group.
022) Added code to decode the user profile block returned by
     the panel - there are still some fields in this reply that
     need additional explanation by Honeywell.
021) Implemented action to read a user profile. The reply is
     just printed currently - it needs decoding into a struct
     and storing as a property under device.
020) Implemented additional commands to read all status bits
     for groups.
019) Implemented action to read the panel version. NOTE the
     reply is a REJECT packet, Honeywell have been emailed
     for advise on this.
018) Added remoteServicesPin property to the device object and
     modified ping logic to it.
017) Implemented action to read all zone statuses information
     for zones 1 to 256 and 257 to 512.
016) Implemented action to read all groups current statuses.
015) Disabled network level ping/upload/download actions, and
     device level upload/download actions as this is not
     applicable for this driver. Added device action to allow
     control commands to be sent for test purposes.
014) Modified to send PIN Log On command every 4 minutes and
     updated code to work with the Galaxy demo case instead of
     the simulator.
013) Added user manual and installation manual to vendor docs.
     Added class to map EV (event code) to event description.
012) Added vendor protocol documents to SVN.
011) Added class + methods to construct all types of SIA Control
     and Request commands.
010) Driver now sends back "ACK" replies to the "ID", "N" and "A"
     blocks sent by the panel simulator.
009) Panel simulator now sends three packets in a row, an "ID"
     block, then a "N" block, then a "A" block. This simulates
     and event being sent by the panel. The receiver side of the
     driver correctly decodes all packets in this sequence.
008) Added code to simulator to send packets using the block "ID"
     to send a "site identifier". The ethernet receiver side now
     correctly reads and decodes these packets.
007) Added various methods to create packets, verify received packets
     and verify size of packets.
006) Modified the extra two tcp communicators to make one read-only
     and one write-only. The read-only one works OK, but the 
     write-only one causes errors when written to, as it is still
     trying to read a reply, despite using write-only request
     objects. Need input from Tridium for this.
005) Added two more tcp communicators to the ethernet object.
     One of these is to be used to read events from panels, and
     the other is to be used to send ACK messages for each event.
004) Added method to create a packet according to the rules in the
     protocol specification. This includes header byte, block code
     byte, data payload and checksum byte.
003) Now sends a fake ping message to both serial and tcp networks
     proving that the driver is capable of using both.
002) Updated as per example from Tridium for driver using both
     serial and ethernet communicators.
001) Added to SVN repository after creation by Niagara Wizard.