private void ButtonPressed(ButtonMapping mapping) { if (mapping.ButtonType == ButtonType.Target) { ButtonMappingTarget target = (ButtonMappingTarget)mapping; m_currentDevice = m_devices.FirstOrDefault(device => device.NodeID == target.DeviceID); } else { ButtonMappingAction action = (ButtonMappingAction)mapping; if (null == m_currentDevice) { m_devices.ForEach(device => ApplyAction(device, action.Action)); } else { ApplyAction(m_currentDevice, action.Action); } } }
private void ApplyAction(IZWaveDevice device, ButtonAction action) { IBinarySceneSwitch binarySwitch = device as IBinarySceneSwitch; IMultilevelSceneSwitch multiLevelSwitch = device as IMultilevelSceneSwitch; switch (action) { case ButtonAction.On: if (null != binarySwitch) { binarySwitch.PowerOn(); } break; case ButtonAction.Off: if (null != binarySwitch) { binarySwitch.PowerOff(); } break; case ButtonAction.Up: if (null != multiLevelSwitch) { multiLevelSwitch.Level += 10; } break; case ButtonAction.Down: if (null != multiLevelSwitch) { multiLevelSwitch.Level -= 10; } break; } }