/// <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(); } } }
/// <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; }
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; }
/// <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); } }