I2CS resolution

Having rambled on about I2CS for at least two posts now, I have decided on a final resolution...

The first step is going to be a new Command class, I will call it 'alert'. For the protocols that handle this class, they will send out something to their clients that can cause an alert. It is anticipated that the only stack in plcd that can handle a downstream alert will be the NetworkThread, however, upstream alerts will be generated by any thread. If the receiving client can handle the alert command, it will alert the user with a message. In the case of adding a new device to plcd, the command flow will be as follows

  1. User types in address, name and group to the client
  2. Client sends DEVICE command to plcd
  3. NetworkThread sends device command to the Engine which sends it down to the TransmissionThread and PLMProtocol
  4. PLMProtocol determines that this is an Insteon device, and the Insteon command set (I2/I2CS)
  5. PLMProtocol puts the PLM into Link-As-A-Controller mode
  6. PLMProtocol emits an alert to the Engine which in turn sends it down to the NetworkThread
  7. The NetworkThread send the alert command to the client
  8. The client pops up a window with the text of the alert in it

Phew! The text of the alert will be something along the lines of "Please set level and press set button for <device name>" Once the user does _that_ the device will be linked, and the PLM should be able to control the device to get the responder link built.

The main problem with this is that it gives the user the option to hose the link database (link the wrong device or group) the main benefit is that it will work for both I2 and I2CS devices.

Subject: