void ActuatorConfigurationHandler(ActuatorConfiguration actuatorconfiguration) { int actuatorID = actuatorconfiguration.actuatorID; if ((actuatorID > 0) && (actuatorID <= 2)) { float value = _state.actuator[actuatorID - 1].value = actuatorconfiguration.value; _state.actuator[actuatorID - 1].name = actuatorconfiguration.name; LogVerbose("--- Actuator configuration " + actuatorID.ToString() + " updated to " + value); switch (actuatorID) { case 1: _srv1.LeftMotorPower = value; break; case 2: _srv1.RightMotorPower = value; break; } actuatorconfiguration.ResponsePort.Post(new DefaultUpdateResponseType()); } else { actuatorconfiguration.ResponsePort.Post( Fault.FromCodeSubcodeReason(FaultCodes.Receiver, DsspFaultCodes.OperationFailed, "Bad Index") ); } }
void UpdateActuatorConfiguration(int actuatorID, string name, int actuatorValue) { ActuatorConfiguration config = new ActuatorConfiguration(); config.actuatorID = actuatorID; config.name = name; config.value = actuatorValue; config.ResponsePort = new DsspResponsePort <DefaultUpdateResponseType>(); _updatePort.Post(config); Activate( Arbiter.Choice(config.ResponsePort, delegate(DefaultUpdateResponseType response) { }, delegate(Fault fault) { LogError("Failed to send notification"); } )); }