private void LoadDevicesFromDatabase() { var dataManager = new InsteonDataManager(false); var devices = dataManager.GetAllDevices(); foreach (var device in devices) { var id = new InsteonIdentity(device.Category, device.SubCategory, device.Firmware); if (!id.IsEmpty) { Network.Devices.Add(InsteonAddress.Parse(device.Address), id); } } }
private InsteonController(InsteonNetwork network, InsteonAddress address, InsteonIdentity identity) { this.network = network; Address = address; Identity = identity; timer.Interval = 4 * 60 * 1000; // 4 minutes timer.AutoReset = false; timer.Elapsed += (sender, args) => { IsInLinkingMode = false; OnDeviceLinkTimeout(); }; }
internal SwitchedLighting(InsteonNetwork network, InsteonAddress address, InsteonIdentity identity) : base(network, address, identity) { }
internal DimmableLighting(InsteonNetwork network, InsteonAddress address, InsteonIdentity identity) : base(network, address, identity) { }
public static string GetDeviceCategoryName(this InsteonIdentity insteonIdentity) { return(DeviceCategoryLookup[insteonIdentity.DevCat]); }
internal IoLinc(InsteonNetwork network, InsteonAddress address, InsteonIdentity identity) : base(network, address, identity) { }
internal PowerLincUsbModem(InsteonNetwork network, InsteonAddress address, InsteonIdentity identity) : base(network, address, identity) { }
internal MiniRemote(InsteonNetwork network, InsteonAddress address, InsteonIdentity identity, int buttonCount) : base(network, address, identity) { NumberOfButtons = buttonCount; }
private bool GetProductData(InsteonDeviceLinkRecord link, out InsteonIdentity? identity) { Dictionary<PropertyKey, int> properties; logger.DebugFormat("Controller {0} GetLinkProductData", Address.ToString()); byte[] message = { (byte)InsteonModemSerialCommand.StandardOrExtendedMessage, link.Address[2], link.Address[1], link.Address[0], (byte) MessageFlagsStandard.ThreeHopsThreeRemaining, (byte)InsteonDirectCommands.ProductDataRequest, Byte.MinValue }; var status = network.Messenger.TrySendReceive(message, false, (byte)InsteonModemSerialCommand.ExtendedMessage, InsteonMessageType.ProductDataResponse, out properties); if (status == EchoStatus.NAK) { logger.ErrorFormat("received NAK trying to get ProductData information"); identity = null; return false; } if (status == EchoStatus.ACK) { if (properties == null) { logger.ErrorFormat("Device Id {0} has null properties object", Address.ToString()); identity = null; return false; } var pk = new InsteonProductKey((byte)properties[PropertyKey.ProductKeyHigh], (byte)properties[PropertyKey.ProductKeyMid], (byte)properties[PropertyKey.ProductKeyLow]); identity = new InsteonIdentity((byte)properties[PropertyKey.DevCat], (byte)properties[PropertyKey.SubCat], (byte)properties[PropertyKey.FirmwareVersion], pk); return true; } logger.ErrorFormat("received unknown status trying to get productdata information"); identity = null; return false; // echo was not ACK or NAK }
private bool GetLinkIdentity(InsteonAddress address, out InsteonIdentity? identity) { Dictionary<PropertyKey, int> properties; logger.DebugFormat("Device {0} GetLinkIdentity", Address.ToString()); byte[] message = { (byte)InsteonModemSerialCommand.StandardOrExtendedMessage, address[2], address[1], address[0], (byte) MessageFlagsStandard.ThreeHopsThreeRemaining, (byte)InsteonDirectCommands.IdRequest, Byte.MinValue }; var status = network.Messenger.TrySendReceive(message, false, (byte)InsteonModemSerialCommand.StandardMessage, InsteonMessageType.SetButtonPressed, out properties); if (status == EchoStatus.NAK) { logger.ErrorFormat("received NAK trying to get idendity information"); identity = null; return false; } if (status == EchoStatus.ACK) { if (properties == null) { logger.ErrorFormat("Device Id {0} has null properties object", Address.ToString()); identity = null; return false; } identity = new InsteonIdentity((byte)properties[PropertyKey.DevCat], (byte)properties[PropertyKey.SubCat], (byte)properties[PropertyKey.FirmwareVersion]); return true; } logger.ErrorFormat("received unknown status trying to get idendity information"); identity = null; return false; // echo was not ACK or NAK }
public bool TryGetLinkIdentity(InsteonAddress address, out InsteonIdentity? identity) { return GetLinkIdentity(address, out identity); }
public bool TryGetLinkIdentity(InsteonDeviceLinkRecord link, out InsteonIdentity? identity) { //GetProductData(link, out identity) || return GetLinkIdentity(link.Address, out identity); }
internal void OnMessage(InsteonMessage message) { if (message.MessageType == InsteonMessageType.DeviceLink) { var address = new InsteonAddress(message.Properties[PropertyKey.Address]); var identity = new InsteonIdentity((byte)message.Properties[PropertyKey.DevCat], (byte)message.Properties[PropertyKey.SubCat], (byte)message.Properties[PropertyKey.FirmwareVersion]); var device = network.Devices.Add(address, identity); timer.Stop(); IsInLinkingMode = false; if (linkingMode.HasValue) { if (linkingMode != InsteonLinkMode.Delete) { OnDeviceLinked(device); } else { OnDeviceUnlinked(device); } } else { OnDeviceLinked(device); } } }
private void LoadDevicesFromDatabase() { var dataManager = new InsteonDataManager(false); var devices = dataManager.GetAllDevices(); foreach (var device in devices) { var id = new InsteonIdentity(device.Category, device.SubCategory, device.Firmware); if (!id.IsEmpty) Network.Devices.Add(InsteonAddress.Parse(device.Address), id); } }