コード例 #1
0
        /// <summary>
        /// Configures the logging and tracing using the given controller configuration.
        /// </summary>
        /// <param name="controllerConfiguration">The controller configuration.</param>
        public static void Configure(ControllerConfiguration controllerConfiguration)
        {
            // we better do this on the UI thread
            if (!Deployment.Current.Dispatcher.CheckAccess())
            {
                Deployment.Current.Dispatcher.BeginInvoke(() => Configure(controllerConfiguration));
                return;
            }

            // check if tracing should be enabled
            if (controllerConfiguration.EnableTracing && !string.IsNullOrEmpty(controllerConfiguration.TracingEndpointAddress))
            {
                // create the configuration
                var loggingConfig = new LoggingConfiguration();

                // create the target
                var serviceTarget = new LogReceiverWebServiceTarget();
                serviceTarget.ClientId = "WP7";
                serviceTarget.Name = "WebServiceTarget";
                serviceTarget.IncludeEventProperties = true;
                serviceTarget.UseBinaryEncoding = false;
                serviceTarget.EndpointAddress = controllerConfiguration.TracingEndpointAddress;

                // add parameters
                var parameter = new MethodCallParameter("time", "${time}");
                serviceTarget.Parameters.Add(parameter);
                parameter = new MethodCallParameter("threadid", "${threadid}");
                serviceTarget.Parameters.Add(parameter);

                // create the only rule
                var rule = new LoggingRule("*", LogLevel.Trace, serviceTarget);
                loggingConfig.LoggingRules.Add(rule);

                // set the config
                LogManager.Configuration = loggingConfig;
            }
            else
            {
                // turn off logging
                if (LogManager.Configuration != null && LogManager.Configuration.LoggingRules != null)
                {
                    LogManager.Configuration.LoggingRules.Clear();
                    LogManager.ReconfigExistingLoggers();
                }
            }
        }
コード例 #2
0
ファイル: DataSource.cs プロジェクト: porter1130/WP8-DEMO
        /// <summary>
        /// Configures the data acquisition with the specified configuration.
        /// </summary>
        /// <param name="configuration">The configuration to use.</param>
        public void Configure(ControllerConfiguration configuration)
        {
            _logger.Trace("Configuring from configuration");

            TouchAcquirer.InputMargin = configuration.TouchInputMargin;
            GestureAcquirer.InputMargin = configuration.TouchInputMargin;
            AccelerometerAcquirer.MinDataRate = configuration.MinAccelerometerDataRate;
            CompassAcquirer.MinDataRate = configuration.MinCompassDataRate;
            GyroscopeAcquirer.MinDataRate = configuration.MinGyroscopeDataRate;
            MotionAcquirer.MinDataRate = configuration.MinMotionDataRate;
        }
コード例 #3
0
        private void CreatePhoneControllerClient(IDataSource dataSource)
        {
            if (dataSource == null)
            {
                throw new ArgumentNullException("dataSource");
            }

            // capture the current synchronization context
            _synchronizationContext = SynchronizationContext.Current;
            if (_synchronizationContext == null)
            {
                // create a default implementation
                _synchronizationContext = new SynchronizationContext();
            }

            // store and set up data source
            DataSource = dataSource;
            DataSource.DataAcquired += DataSource_DataAcquired;

            // create all required networking objects
            _broadCaster = new MulticastClient();
            _broadCaster.ServerDiscovered += BroadCaster_ServerDiscovered;
            _broadCaster.TimeoutElapsed += BroadCaster_TimeoutElapsed;

            _controlChannel = _communicationFactory.CreateControlChannel();
            _controlChannel.Error += ControlChannel_Error;
            _controlChannel.ControlCommandReceived += ControlChannel_ControlCommandReceived;
            _controlChannel.Connected += ControlChannel_Connected;
            _controlChannel.ConnectionClosed += ControlChannel_ConnectionClosed;

            _dataChannel = _communicationFactory.CreateDataChannel();
            _dataChannel.Error += DataChannel_Error;
            _dataChannel.Connected += DataChannel_Connected;
            _dataChannel.ConnectionClosed += DataChannel_ConnectionClosed;

            // configure some default values for the configuration here
            // these typically are overridden by a configuration sent down from the server side
            var configuration = new ControllerConfiguration();
            configuration.AutoReconnectOnActivation = false;
            configuration.TouchInputMargin = new Thickness(90, 20, 20, 20);
            configuration.MinAccelerometerDataRate = 0;
            configuration.MinCompassDataRate = 0;
            configuration.MinGyroscopeDataRate = 0;
            configuration.MinMotionDataRate = 0;
            configuration.MinMillisecondsBetweenMessages = 0; // as fast as possible
            configuration.EnableTracing = false;
            configuration.TracingEndpointAddress = null;
            Configure(configuration);

            State = PhoneControllerState.Created;
        }
コード例 #4
0
        /// <summary>
        /// Configures the controller using the given configuration.
        /// </summary>
        /// <param name="controllerConfiguration">The controller configuration used for configuration.</param>
        public void Configure(ControllerConfiguration controllerConfiguration)
        {
            try
            {
                // lock to prevent multiple simultaneous calls to the data source and channel from different threads
                lock (_locker)
                {
                    _logger.Trace("Configuring using a controller configuration");

                    // configure data source and channel
                    DataSource.Configure(controllerConfiguration);
                    _dataChannel.MinMillisecondsBetweenMessages = controllerConfiguration.MinMillisecondsBetweenMessages;

                    // configure tracing
                    LoggingConfigurator.Configure(controllerConfiguration);
                }

                // set the property and notify outside world
                Configuration = controllerConfiguration;
            }
            catch (Exception ex)
            {
                throw new PhoneControllerException("Error while configuring phone controller client: " + ex.Message, ex);
            }
        }