/// <summary>
        /// Subscribe to notifications when bumpers are pressed
        /// </summary>
        void SubscribeToBumpers()
        {
            // Create bumper notification port
            bumper.ContactSensorArrayOperations bumperNotificationPort = new bumper.ContactSensorArrayOperations();

            // Subscribe to the bumper service, send notifications to bumperNotificationPort
            _bumperPort.Subscribe(bumperNotificationPort);

            // Start listening for Bumper Replace notifications
            Activate(
                Arbiter.Receive <bumper.Update>
                    (true, bumperNotificationPort, BumperHandler));
        }
        /// <summary>
        /// Subscribe to the Bumpers service
        /// </summary>
        void SubscribeToBumpers()
        {
            // Create the bumper notification port.
            #region CODECLIP 04-1
            bumper.ContactSensorArrayOperations bumperNotificationPort = new bumper.ContactSensorArrayOperations();
            #endregion

            // Subscribe to the bumper service, receive notifications on the bumperNotificationPort.
            #region CODECLIP 04-2
            _bumperPort.Subscribe(bumperNotificationPort);
            #endregion

            // Start listening for updates from the bumper service.
            #region CODECLIP 04-3
            Activate(
                Arbiter.Receive <bumper.Update>
                    (true, bumperNotificationPort, BumperHandler));
            #endregion
        }
예제 #3
0
 protected virtual void Initialize()
 {
     // Initialize the port
     sensorPort = DssEnvironment.ServiceForwarder <contact.ContactSensorArrayOperations>(new Uri(serviceUri));
 }
예제 #4
0
        /// <summary>
        /// Handles Bumper service connection request
        /// </summary>
        /// <param name="onConnectBumpers">Bumper connection request</param>
        /// <returns></returns>
        IEnumerator<ITask> OnConnectBumpersHandler(OnConnectBumpers onConnectBumpers)
        {
            if (onConnectBumpers.DriveControl != _driveControl)
                yield break;
            _bumpersPort = ServiceForwarder<pxbumper.ContactSensorArrayOperations>(onConnectBumpers.Service);
            _bumpersShutdown = new Port<Shutdown>();

            pxbumper.ReliableSubscribe subscribe = new pxbumper.ReliableSubscribe(
                new ReliableSubscribeRequestType(5)
            );

            subscribe.NotificationPort = _bumpersNotify;
            subscribe.NotificationShutdownPort = _bumpersShutdown;

            _bumpersPort.Post(subscribe);

            yield return Arbiter.Choice(
                subscribe.ResponsePort,
                delegate(SubscribeResponseType response)
                {
                    LogInfo("Subscribed to " + onConnectBumpers.Service);
                },
                delegate(Fault fault)
                {
                    _bumpersShutdown = null;
                    LogError(fault);
                }
            );
        }