Difference between revisions of "Vista ICM Panel Development"

From LinuxMCE
Jump to: navigation, search
(Initial Content.)
 
(Initial Research: Initial Content.)
Line 2: Line 2:
  
 
== Initial Research ==
 
== 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 ==  
 
== Installation of a basic development environment ==  

Revision as of 00:39, 29 March 2009

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.

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:

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.