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); }
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); }