private void btnRefresh_Click(object sender, EventArgs e)
        {
            try
            {
                tvDoors.Nodes.Clear();

                //old version:
                //DoorInfo[] doors = DoorControlClient.GetDoorInfo(null);

                List <DoorInfo> doors = GetList <DoorInfo>(DoorControlClient.GetDoorInfoList);

                foreach (var door in doors)
                {
                    {
                        TreeNode doorNode = new TreeNode(door.token);
                        doorNode.Tag = door;

                        DoorState state = DoorControlClient.GetDoorState(door.token);

                        doorNode.Nodes.Add("Alarm", "Alarm: " + (state.AlarmSpecified ? state.Alarm.ToString() : "Not specified"));
                        doorNode.Nodes.Add("DoorPhysicalState", "DoorPhysicalState: " + (state.DoorPhysicalStateSpecified ? state.DoorPhysicalState.ToString() : "Not specified"));
                        doorNode.Nodes.Add("LockPhysicalState", "LockPhysicalState: " + (state.LockPhysicalStateSpecified ? state.LockPhysicalState.ToString() : "Not specified"));
                        doorNode.Nodes.Add("DoubleLockPhysicalState", "DoubleLockPhysicalState: " + (state.DoubleLockPhysicalStateSpecified ? state.DoubleLockPhysicalState.ToString() : "Not specified"));
                        doorNode.Nodes.Add("DoorMode", "DoorMode: " + state.DoorMode.ToString());

                        string tamper = state.Tamper != null?state.Tamper.State.ToString() : "Undefined";

                        doorNode.Nodes.Add("Tamper", "Tamper: " + tamper);

                        string fault = state.Fault != null?state.Fault.State.ToString() : "Undefined";

                        doorNode.Nodes.Add("Fault", "Fault: " + fault);

                        tvDoors.Nodes.Add(doorNode);
                    }
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message);
            }
        }
        private void btnAccess_Click(object sender, EventArgs e)
        {
            bool?useExtended = null;

            if (chkUseExtendedTime.CheckState == CheckState.Checked)
            {
                useExtended = true;
            }
            else if (chkUseExtendedTime.CheckState == CheckState.Unchecked)
            {
                useExtended = false;
            }

            SafeInvoke(
                () => DoorControlClient.AccessDoor(_door.token,
                                                   useExtended,
                                                   tbAccessTime.Text,
                                                   tbOpenTooLong.Text,
                                                   tbPreAlarm.Text, new AccessDoorExtension()));
        }
 private void btnLockOpenRelease_Click(object sender, EventArgs e)
 {
     SafeInvoke(() => DoorControlClient.LockOpenReleaseDoor(_door.token));
 }
 private void btnBlock_Click(object sender, EventArgs e)
 {
     SafeInvoke(() => DoorControlClient.BlockDoor(_door.token));
 }