public virtual IEnumerator <ITask> AlternateGetHandler(analogArray.Get get) { _alternateState = new analogArray.AnalogSensorArrayState(); _alternateState.Sensors = new List <Microsoft.Robotics.Services.AnalogSensor.Proxy.AnalogSensorState>(); _alternateState.Sensors.Add(_state.LeftSensor); _alternateState.Sensors.Add(_state.CenterSensor); _alternateState.Sensors.Add(_state.RightSensor); get.ResponsePort.Post(_alternateState); yield break; }
public virtual IEnumerator <ITask> HttpGetAnalogSensorHandler(dssphttp.HttpGet httpGet) { analogarray.Get get = new analogarray.Get(); this.mainPort.Post(get); yield return(get.ResponsePort.Choice()); analogarray.AnalogSensorArrayState analogState = get.ResponsePort; httpGet.ResponsePort.Post(new dssphttp.HttpResponseType(analogState)); yield break; }
public virtual IEnumerator <ITask> AlternateGetHandler(analogarray.Get get) { _alternateState = new analogarray.AnalogSensorArrayState(); _alternateState.Sensors = new List <analog.AnalogSensorState>(); analog.AnalogSensorState sens = new analog.AnalogSensorState(); sens.RawMeasurement = _state.Sensors[0].value; _alternateState.Sensors.Add(sens); sens = new analog.AnalogSensorState(); sens.RawMeasurement = _state.Sensors[1].value; _alternateState.Sensors.Add(sens); sens = new analog.AnalogSensorState(); sens.RawMeasurement = _state.Sensors[2].value; _alternateState.Sensors.Add(sens); sens = new analog.AnalogSensorState(); sens.RawMeasurement = _state.Sensors[3].value; _alternateState.Sensors.Add(sens); get.ResponsePort.Post(_alternateState); yield break; }
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> 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 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 analogsensor.AnalogSensorState() { HardwareIdentifier = sensorState.HardwareIdentifier, NormalizedMeasurement = sensorState.DistanceMeasurement, RawMeasurement = sensorState.DistanceMeasurement, RawMeasurementRange = 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 analogarray.AnalogSensorArrayState; get.ResponsePort.Post(stateClone); yield break; }