Vista ICM Panel Development
This page details the development of the Vista ICM device driver for compatible security panels from Honeywell/Ademco. It intends to show the overview of the development process for the interested developers who wish to create new device support for LinuxMCE.
Contents
Initial Research
Initially, you need any specifications that you can retrieve to tell about the device you wish to implement. These can be gotten from a variety of sources, including:
- Manufacturer's website
- Various google searches on the web (try the following search words: protocol specification, rs-232, technical reference, and custom installer specification along with the name and model of your intended device.)
- Existing literature that you may have, check the appendices.
In our case, the following web link proved especially useful: http://bliny.net/blog/post/HoneywellAdemco-Vista-ICM-network.aspx
Consideration: C++ or Generic Serial Device ?
This link provided a reverse engineered protocol specification of a device that provides:
- 1 TCP port for sending commands using the HTTP protocol
- 1 UDP port for retrieving panel status information, that is sent to the global broadcast address of the network (INADDR_ANY)
There were two other ports exposed, but were deemed not to be useful for the implementation of this device.
This brings up two very important points:
- If your device communicates on more than one port. You can not use the Generic Serial Device.
- If your device communicates on anything other than TCP or RS232, You can not use the Generic Serial Device.
Because we failed both criteria, the device was written as a C++ device.
Installation of a basic development environment
Device Template
Code Development
Running DCEGen
Running Sql2cpp
Implementing code
Testing
Sending it all In
Sending in the Patch
Creating the Package Definition
Checking in the sqlCVS changes anonymously
You should be done at this point. The driver will now be built as part of our release process, and will become part of the autobuilds, so that you can either do your own builder as described in Building LinuxMCE 0810 or you can wait for the build process to produce packages for your new driver.