Esempio n. 1
0
        public ResultType UpdateDoorState(Int32 deviceId, Int32 doorIndex, DoorControlOption option)
        {
            Log.Info("Invoke WebSocketOperation...");
            var operation = new WebSocketOperation(deviceId);
            var updateDoorStateRequest = new UpdateDoorStateRequest()
            {
                Token = operation.Token, DoorIndex = doorIndex, Option = option
            };
            string rawRequest = DataContractSerializationHelper.Serialize(updateDoorStateRequest);

            Log.DebugFormat("Request: {0}", rawRequest);
            var rawResponse = operation.Execute(rawRequest);

            Log.DebugFormat("Response: {0}", rawResponse);

            var response = DataContractSerializationHelper.Deserialize <UpdateDoorStateResponse>(rawResponse);

            Log.InfoFormat("Update door index:[{0}] for device id:[{1}], result:[{2}]", doorIndex, deviceId, response.ResultType);

            if (response.ResultType != ResultType.OK && response.ResultType != ResultType.NotSupport)
            {
                throw new Exception(string.Format("Update door index:[{0}] for device id:[{1}], result:[{2}]", doorIndex, deviceId, response.ResultType));
            }
            return(response.ResultType);
        }
Esempio n. 2
0
        public bool UpdateStatus(Int32 doorIndex, DoorControlOption option)
        {
            var device        = _deviceProxy.Device;
            var extraProperty = new object();
            var extraData     = new object();

            byte[] data       = new byte[8];
            UInt32 paramIndex = Zd2911Utils.DeviceParamLock1Status;

            if (doorIndex == 2)
            {
                paramIndex = Zd2911Utils.DeviceParamLock2Status;
            }

            Array.Copy(BitConverter.GetBytes(paramIndex), 0, data, 0, 4);
            Array.Copy(BitConverter.GetBytes((UInt32)option.GetHashCode()), 0, data, 4, 4);

            var  retryablePolicy = Policies.GetRetryablePolicy();
            bool result          = retryablePolicy.Execute(
                () =>
            {
                extraData = data;
                return(_deviceProxy.DeviceConnection.SetProperty(DeviceProperty.SysParam, extraProperty, device, extraData));
            });

            return(result);
        }