public IEnumerator <ITask> UpdateHandler(drive.Update update) { _state = update.Body; _state.TimeStamp = DateTime.Now; update.ResponsePort.Post(new DefaultUpdateResponseType()); yield break; }
public virtual IEnumerator <ITask> UpdateHandler(drive.Update update) { _state = update.Body; SaveState(_state); update.ResponsePort.Post(DefaultUpdateResponseType.Instance); yield break; }
private void NotifyDriveUpdate(drive.Update update) { LegoMazeDriverState state = new LegoMazeDriverState(); state.MotorEnabled = update.Body.IsEnabled; _mainPort.Post(new Replace(state)); }
private void NotifyDriveUpdate(drive.Update update) { RoboticsTutorial4State state = new RoboticsTutorial4State(); state.MotorEnabled = update.Body.IsEnabled; _mainPort.Post(new Replace(state)); }
IEnumerator <ITask> OnDriveUpdateNotificationHandler(drive.Update notification) { if (_driveControl != null) { WinFormsServicePort.FormInvoke( delegate() { _driveControl.UpdateMotorData(notification.Body); } ); } LogObject(notification.Body); yield break; }
/// <summary> /// DriveUpdateHandler - Prevents Update messages from filling the queue /// </summary> /// <param name="update"></param> /// <returns></returns> IEnumerator <ITask> DriveUpdateHandler(drive.Update update) { // Ignore update messages because we are not interested yield break; }
protected void NotifyDriveUpdate(drive.Update notification) { motorsOn = notification.Body.IsEnabled; }
/// <summary> /// Handles Update notification from the Drive partner /// </summary> /// <remarks>Posts a <typeparamref name="DriveUpdate"/> request to itself.</remarks> /// <param name="update">notification</param> void DriveUpdateNotification(drive.Update update) { _mainPort.Post(new DriveUpdate(update.Body)); }
public IEnumerator<ITask> SubscribeHandler(drive.Subscribe subscribe) { yield return Arbiter.Choice( SubscribeHelper(_subMgrPort, subscribe.Body, subscribe.ResponsePort), delegate(SuccessResult success) { drive.Update update = new drive.Update(_state); SendNotificationToTarget<drive.Update>(subscribe.Body.Subscriber, _subMgrPort, update); }, delegate(Exception ex) { LogError(ex); throw ex; } ); }
public IEnumerator<ITask> SetDrivePowerHandler(drive.SetDrivePower setDrivePower) { ValidateDriveConfiguration(false); #if TRACELOG Tracer.Trace("TR Drive: SetDrivePowerHandler() =============================== TR handler ==================================== left=" + setDrivePower.Body.LeftWheelPower + " right=" + setDrivePower.Body.RightWheelPower); #endif cancelCurrentOperation(); _state.TimeStamp = DateTime.Now; PortSet<DefaultUpdateResponseType, Fault> responsePort = new PortSet<DefaultUpdateResponseType, Fault>(); // Add a coordination header to our motor requests // so that advanced motor implementations can // coordinate the individual motor reqests. coord.ActuatorCoordination coordination = new coord.ActuatorCoordination(2); motor.SetMotorPower leftPower = new motor.SetMotorPower(new motor.SetMotorPowerRequest() { TargetPower = setDrivePower.Body.LeftWheelPower }); leftPower.ResponsePort = responsePort; leftPower.AddHeader(coordination); _leftMotorPort.Post(leftPower); motor.SetMotorPower rightPower = new motor.SetMotorPower(new motor.SetMotorPowerRequest() { TargetPower = setDrivePower.Body.RightWheelPower }); rightPower.ResponsePort = responsePort; rightPower.AddHeader(coordination); _rightMotorPort.Post(rightPower); // send notification to subscription manager drive.Update update = new drive.Update(_state); SendNotification<drive.Update>(_subMgrPort, update); Activate(Arbiter.MultipleItemReceive<DefaultUpdateResponseType, Fault>(responsePort, 2, delegate(ICollection<DefaultUpdateResponseType> successList, ICollection<Fault> failureList) { if (successList.Count == 2) setDrivePower.ResponsePort.Post(new DefaultUpdateResponseType()); foreach (Fault fault in failureList) { setDrivePower.ResponsePort.Post(fault); break; } })); pollEncoderState(); yield break; }
public IEnumerator<ITask> EnableDriveHandler(drive.EnableDrive enableDrive) { _state.IsEnabled = enableDrive.Body.Enable; _state.TimeStamp = DateTime.Now; #if TRACELOG LogInfo("TrackRoamerDriveService:EnableDriveHandler() - enable=" + _state.IsEnabled); #endif // if we are enabling the drive, validate that the motors are configured. if (enableDrive.Body.Enable) { try { ValidateDriveConfiguration(true); // we must have encoders for the drive to work properly } catch (InvalidOperationException) { // If validation fails, // force the state to not be enabled. _state.IsEnabled = false; // rethrow the fault throw; } } // send notification to subscription manager drive.Update update = new drive.Update(_state); SendNotification<drive.Update>(_subMgrPort, update); enableDrive.ResponsePort.Post(DefaultUpdateResponseType.Instance); yield break; }
/// <summary> /// Handles Update notification from the Drive partner /// </summary> /// <remarks>Posts a <typeparamref name="DriveUpdate"/> request to itself.</remarks> /// <param name="update">notification</param> void DriveUpdateNotification(drive.Update update) { //LogInfo("****************************** DriveBehaviorServiceBase:: DriveUpdateNotification: state.IsEnabled=" + update.Body.IsEnabled); _mainPort.Post(new DriveUpdate(update.Body)); }