/// <summary> /// Posts an ActionNotSupported DSSP fault code to the response port of the passed in /// DSSP operation /// </summary> /// <param name="operation"></param> static void PostActionNotSupported(DsspOperation operation) { operation.ResponsePort.TryPostUnknownType(Fault.FromCodeSubcode( W3C.Soap.FaultCodes.Sender, DsspFaultCodes.ActionNotSupported) ); }
public void OnReplace(webcam.Replace replace) { // Can't actually send a replace to this service, but it's here // for symmetry with replace events that are raised as the device // signals changes to it. replace.ResponsePort.Post( Fault.FromCodeSubcode( FaultCodes.Receiver, DsspFaultCodes.MessageNotSupported)); }
public IEnumerator <ITask> GetHandler(analogarray.Get get) { var state = new analogarray.AnalogSensorArrayState(); state.Sensors = new List <analogsensor.AnalogSensorState>(this.sensorPorts.Length); // compose state on the fly by issuing N parallel GET requests to partners var getSensorState = new analogsensor.Get(); foreach (var port in this.sensorPorts) { state.Sensors.Add(null); port.Post(getSensorState); } ICollection <analogsensor.AnalogSensorState> sensorStates = null; ICollection <Fault> faults = null; yield return(getSensorState.ResponsePort.MultipleItemReceive( this.sensorPorts.Length, (s, f) => { sensorStates = s; faults = f; })); if (faults != null && faults.Count > 0) { get.ResponsePort.Post(Fault.FromCodeSubcode(FaultCodes.Receiver, DsspFaultCodes.OperationFailed)); yield break; } foreach (var sensorState in sensorStates) { state.Sensors[sensorState.HardwareIdentifier] = sensorState; } var stateClone = state.Clone() as analogarray.AnalogSensorArrayState; get.ResponsePort.Post(stateClone); yield break; }
public IEnumerator <ITask> GetSonarArrayHandler(sonararray.Get get) { var state = new sonararray.SonarSensorArrayState(); state.Sensors = new List <sonarsensor.SonarState>(this.sensorPorts.Length); // compose state on the fly by issuing N parallel GET requests to partners var getSensorState = new sonar.Get(); foreach (var port in this.sensorPorts) { state.Sensors.Add(null); port.Post(getSensorState); } ICollection <sonar.SonarState> sensorStates = null; ICollection <Fault> faults = null; yield return(getSensorState.ResponsePort.MultipleItemReceive( this.sensorPorts.Length, (s, f) => { sensorStates = s; faults = f; })); if (faults != null && faults.Count > 0) { get.ResponsePort.Post(Fault.FromCodeSubcode(FaultCodes.Receiver, DsspFaultCodes.OperationFailed)); yield break; } foreach (var sensorState in sensorStates) { state.Sensors[sensorState.HardwareIdentifier] = new sonarsensor.SonarState() { HardwareIdentifier = sensorState.HardwareIdentifier, AngularRange = sensorState.AngularRange, AngularResolution = sensorState.AngularResolution, DistanceMeasurement = sensorState.DistanceMeasurement, DistanceMeasurements = sensorState.DistanceMeasurements, MaxDistance = sensorState.MaxDistance, Pose = new PhysicalModel.Proxy.Pose { Orientation = new PhysicalModel.Proxy.Quaternion( sensorState.Pose.Orientation.X, sensorState.Pose.Orientation.Y, sensorState.Pose.Orientation.Z, sensorState.Pose.Orientation.W), Position = new PhysicalModel.Proxy.Vector3( sensorState.Pose.Position.X, sensorState.Pose.Position.Y, sensorState.Pose.Position.Z), }, TimeStamp = sensorState.TimeStamp, }; } var stateClone = state.Clone() as sonararray.SonarSensorArrayState; get.ResponsePort.Post(stateClone); yield break; }
public IEnumerator <ITask> GetHandler(infraredarray.Get get) { var state = new infraredarray.InfraredSensorArrayState(); state.Sensors = new List <infraredsensor.InfraredState>(this.sensorPorts.Length); // compose state on the fly by issuing N parallel GET requests to partners var getSensorState = new analogsensor.Get(); foreach (var port in this.sensorPorts) { state.Sensors.Add(null); port.Post(getSensorState); } ICollection <analogsensor.AnalogSensorState> sensorStates = null; ICollection <Fault> faults = null; yield return(getSensorState.ResponsePort.MultipleItemReceive( this.sensorPorts.Length, (s, f) => { sensorStates = s; faults = f; })); if (faults != null && faults.Count > 0) { get.ResponsePort.Post(Fault.FromCodeSubcode(FaultCodes.Receiver, DsspFaultCodes.OperationFailed)); yield break; } foreach (var sensorState in sensorStates) { PhysicalModel.Proxy.Pose sensorPose; switch (sensorState.HardwareIdentifier) { case 0: sensorPose = this.LeftIRPose; break; case 1: sensorPose = this.MiddleIRPose; break; case 2: sensorPose = this.RightIRPose; break; default: sensorPose = new PhysicalModel.Proxy.Pose(); break; } state.Sensors[sensorState.HardwareIdentifier] = new infraredsensor.InfraredState() { DistanceMeasurement = sensorState.RawMeasurement, HardwareIdentifier = sensorState.HardwareIdentifier, ManufacturerIdentifier = SimSensorManufacturer, MaxDistance = int.MaxValue, MinDistance = 0, Pose = sensorPose, TimeStamp = sensorState.TimeStamp }; } var stateClone = state.Clone() as infraredarray.InfraredSensorArrayState; get.ResponsePort.Post(stateClone); yield break; }