public void BasicLoggerAddressesDuplicates() { MockEcuStream stream = MockEcuStream.CreateInstance(); this.logger = SsmBasicLogger.GetInstance(Environment.CurrentDirectory, stream); IAsyncResult result = logger.BeginConnect(null, null); result.AsyncWaitHandle.WaitOne(); ParameterSource source = logger.EndConnect(result); ParameterDatabase database = ParameterDatabase.GetInstance(); database.Add(source); LogProfile profile = LogProfile.CreateInstance(); Parameter parameter; database.TryGetParameterById("P8", out parameter); // engine speed (14) profile.Add(parameter, parameter.Conversions[0]); database.TryGetParameterById("P201", out parameter); // IDC, requires engine speed (14), IPW (32) profile.Add(parameter, parameter.Conversions[0]); database.TryGetParameterById("P202", out parameter); // MRP(corrected), requires MAP (13), Atmo (35) profile.Add(parameter, parameter.Conversions[0]); database.TryGetParameterById("P7", out parameter); // MAP (13) profile.Add(parameter, parameter.Conversions[0]); // IPW is not in the resulting set of addresses, why? this.logger.SetProfile(profile, database); List <int> addresses = this.logger.Addresses; Assert.AreEqual(5, addresses.Count); int[] expected = new int[] { 14, 15, 13, 32, 35 }; Utility.CompareArrays("Address arrays", expected, addresses.ToArray()); }
/// <summary> /// Initialize the logger /// </summary> private void InitializeLogger(Stream stream) { Trace.WriteLine("InitializeLogger"); if (stream == null) { throw new ArgumentNullException("stream"); } string configurationDirectory = Path.Combine( Environment.CurrentDirectory, "Configuration"); SsmBasicLogger localLogger = SsmBasicLogger.GetInstance(configurationDirectory, stream); localLogger.LogEntry += this.OnLogEntry; localLogger.LogError += this.OnLogError; Trace.WriteLine("Connecting to ECU"); IAsyncResult asyncResult = localLogger.BeginConnect(null, null); asyncResult.AsyncWaitHandle.WaitOne(); ParameterSource source = localLogger.EndConnect(asyncResult); this.database = ParameterDatabase.GetInstance(); this.database.Add(source); Trace.WriteLine("Connected to ECU"); this.logger = localLogger; }
public void LoggerAddressesDuplicates() { this.logger = SsmLogger.GetInstance(Environment.CurrentDirectory, MockEcuStream.PortName); IAsyncResult result = logger.BeginConnect(null, null); result.AsyncWaitHandle.WaitOne(); ParameterSource source = logger.EndConnect(result); ParameterDatabase database = ParameterDatabase.GetInstance(); database.Add(source); LogProfile profile = LogProfile.CreateInstance(); Parameter parameter; database.TryGetParameterById("P8", out parameter); profile.Add(parameter, parameter.Conversions[0]); database.TryGetParameterById("P201", out parameter); profile.Add(parameter, parameter.Conversions[0]); database.TryGetParameterById("P202", out parameter); profile.Add(parameter, parameter.Conversions[0]); database.TryGetParameterById("P7", out parameter); profile.Add(parameter, parameter.Conversions[0]); this.logger.SetProfile(profile, database); List <int> addresses = this.logger.Addresses; Assert.AreEqual(5, addresses.Count); int[] expected = new int[] { 14, 15, 13, 32, 35 }; Utility.CompareArrays("Address arrays", expected, addresses.ToArray()); }
public void ParameterDatabaseLoadRemove() { ParameterDatabase db = ParameterDatabase.GetInstance(); ParameterSource source = new MockParameterSource(); db.Add(source); Assert.AreEqual(source.Parameters.Count, db.Parameters.Count); db.Remove(source); Assert.AreEqual(0, db.Parameters.Count); }
public void LoggerSuspendResume() { this.logger = SsmLogger.GetInstance(Environment.CurrentDirectory, MockEcuStream.PortName); IAsyncResult result = logger.BeginConnect(null, null); result.AsyncWaitHandle.WaitOne(); ParameterSource source = logger.EndConnect(result); ParameterDatabase database = ParameterDatabase.GetInstance(); database.Add(source); LogProfile profile = LogProfile.CreateInstance(); foreach (SsmParameter parameter in database.Parameters) { profile.Add(parameter, parameter.Conversions[0]); if (profile.Columns.Count > 3) { break; } } this.logStartCalls = 0; this.logEntryCalls = 0; this.logEndCalls = 0; this.logErrorCalls = 0; this.logger.SetProfile(profile, database); this.logger.LogStart += this.LogStart; this.logger.LogEntry += this.LogEntry; this.logger.LogStop += this.LogStop; this.logger.LogError += this.LogError; this.logger.StartLogging(); System.Threading.Thread.Sleep(TimeSpan.FromSeconds(0.25)); this.logger.Suspend(); System.Threading.Thread.Sleep(TimeSpan.FromSeconds(0.25)); int entriesBeforeSuspend = this.logEntryCalls; Debug.WriteLine("Entries before suspend: " + entriesBeforeSuspend.ToString()); this.logger.Resume(TimeSpan.FromMilliseconds(250)); System.Threading.Thread.Sleep(TimeSpan.FromSeconds(0.5)); int entriesAfterSuspend = this.logEntryCalls; Debug.WriteLine("Entries after suspend: " + entriesAfterSuspend.ToString()); this.logger.BeginStopLogging(NoOp, null); System.Threading.Thread.Sleep(TimeSpan.FromSeconds(0.1)); Assert.IsTrue(entriesAfterSuspend > entriesBeforeSuspend, "Resumed logging after suspend/resume."); }
public void BasicLoggerDependencyConversions() { MockEcuStream stream = MockEcuStream.CreateInstance(); this.logger = SsmBasicLogger.GetInstance(Environment.CurrentDirectory, stream); IAsyncResult result = logger.BeginConnect(null, null); result.AsyncWaitHandle.WaitOne(); ParameterSource source = logger.EndConnect(result); ParameterDatabase database = ParameterDatabase.GetInstance(); database.Add(source); LogProfile baseParameters = LogProfile.CreateInstance(); foreach (SsmParameter parameter in database.Parameters) { if (parameter.Id == "P201") { baseParameters.Add(parameter, parameter.Conversions[0]); } if (parameter.Id == "P202") { baseParameters.Add(parameter, parameter.Conversions[0]); break; } } this.logger.SetProfile(baseParameters, database); LogEventArgs args = this.logger.GetOneRow(); Utility.AssertColumnParameterId(args, 0, "P201"); Utility.AssertColumnParameterId(args, 1, "P202"); Utility.AssertColumnParameterId(args, 2, "P8"); Utility.AssertColumnParameterId(args, 3, "P21"); Utility.AssertColumnParameterId(args, 4, "P7"); Utility.AssertColumnParameterId(args, 5, "P24"); Assert.AreEqual(6, args.Row.Columns.Count); List <int> addresses = this.logger.Addresses; Assert.AreEqual(5, addresses.Count); int[] expected = new int[] { 14, 15, 32, 13, 35 }; Utility.CompareArrays("Address arrays", expected, addresses.ToArray()); // Values from observation... Assert.AreEqual("2.08", args.Row.Columns[0].ValueAsString); Assert.AreEqual("1.02", args.Row.Columns[1].ValueAsString); }
public void InternalLogProfileNoParameters() { ParameterDatabase database = ParameterDatabase.GetInstance(); MockParameterSource source = new MockParameterSource(); database.Add(source); LogProfile publicProfile = LogProfile.CreateInstance(); InternalLogProfile internalProfile = InternalLogProfile.GetInstance(publicProfile, database); Assert.AreEqual(0, internalProfile.Addresses.Count); }
public void InternalLogProfileMockParameters() { ParameterDatabase database = ParameterDatabase.GetInstance(); MockParameterSource source = new MockParameterSource(); database.Add(source); LogProfile publicProfile = LogProfile.CreateInstance(); publicProfile.Add(database.Parameters[0], database.Parameters[0].Conversions[0]); publicProfile.Add(database.Parameters[1], database.Parameters[1].Conversions[0]); InternalLogProfile internalProfile = InternalLogProfile.GetInstance(publicProfile, database); Assert.AreEqual(0, internalProfile.Addresses.Count); Assert.AreEqual(2, internalProfile.LogEventArgs.Row.Columns.Count); }
public void PlxParameters() { ParameterDatabase db = ParameterDatabase.GetInstance(); ParameterSource plxSource = PlxParameterSource.GetInstance(); db.Add(plxSource); Parameter wb = db.Parameters[0]; PlxSensorId id = new PlxSensorId(PlxSensorType.WidebandAfr, 0); Assert.AreEqual(id, ((PlxParameter)wb).SensorId); Parameter egt = db.Parameters[1]; id = new PlxSensorId(PlxSensorType.ExhaustGasTemperature, 0); Assert.AreEqual(id, ((PlxParameter)egt).SensorId); }
public void LoggerConnect() { MockEcuStream mock = MockEcuStream.CreateInstance(); this.logger = SsmLogger.GetInstance(Environment.CurrentDirectory, MockEcuStream.PortName); IAsyncResult result = logger.BeginConnect(ConnectCallback, null); result.AsyncWaitHandle.WaitOne(); ParameterSource source = logger.EndConnect(result); ParameterDatabase database = ParameterDatabase.GetInstance(); database.Add(source); Assert.AreEqual("2F12785206", this.logger.EcuIdentifier, "EcuIdentifier"); Assert.IsNotNull(database); Assert.IsNotNull(database.Parameters); Assert.AreEqual(database.Parameters.Count, 178); }
public void ManualLoggingTest(Action <ParameterDatabase> callback) { MockEcuStream stream = MockEcuStream.CreateInstance(); FragmentedStream fragStream = FragmentedStream.GetInstance(stream); this.logger = SsmBasicLogger.GetInstance(Environment.CurrentDirectory, fragStream); IAsyncResult result = logger.BeginConnect(null, null); result.AsyncWaitHandle.WaitOne(); ParameterSource source = logger.EndConnect(result); ParameterDatabase database = ParameterDatabase.GetInstance(); database.Add(source); LogProfile Profile = LogProfile.CreateInstance(); foreach (SsmParameter parameter in database.Parameters) { Profile.Add(parameter, parameter.Conversions[0]); if (Profile.Columns.Count > 3) { break; } } this.logStartCalls = 0; this.logEntryCalls = 0; this.logEndCalls = 0; this.logErrorCalls = 0; this.logger.SetProfile(Profile, database); this.logger.LogStart += this.LogStart; this.logger.LogEntry += this.LogEntry; this.logger.LogStop += this.LogStop; this.logger.LogError += this.LogError; this.logger.StartLogging(); System.Threading.Thread.Sleep(TimeSpan.FromSeconds(0.25)); callback(database); this.logger.BeginStopLogging(NoOp, null); System.Threading.Thread.Sleep(TimeSpan.FromSeconds(0.1)); }
private ParameterDatabase InitializeLogger() { MockEcuStream stream = MockEcuStream.CreateInstance(); this.logger = SsmBasicLogger.GetInstance(Environment.CurrentDirectory, stream); IAsyncResult result = logger.BeginConnect(null, null); result.AsyncWaitHandle.WaitOne(); ParameterSource source = logger.EndConnect(result); Assert.AreEqual("2F12785206", this.logger.EcuIdentifier, "EcuIdentifier"); Assert.IsNotNull(source); Assert.AreEqual(178, source.Parameters.Count); ParameterDatabase database = ParameterDatabase.GetInstance(); database.Add(source); Assert.AreEqual(178, database.Parameters.Count); return(database); }
public void LoggerUserData() { SsmLogger logger = SsmLogger.GetInstance(Environment.CurrentDirectory, MockEcuStream.PortName); IAsyncResult result = logger.BeginConnect(null, null); result.AsyncWaitHandle.WaitOne(); ParameterSource source = logger.EndConnect(result); ParameterDatabase database = ParameterDatabase.GetInstance(); database.Add(source); LogProfile profile = LogProfile.CreateInstance(); foreach (SsmParameter parameter in database.Parameters) { profile.Add(parameter, parameter.Conversions[0]); if (profile.Columns.Count == 8) { break; } } string userData = "UserData"; profile.UserData = userData; logger.SetProfile(profile, database); logger.LogStart += this.LoggerUserDataLogStart; logger.LogEntry += this.LoggerUserDataLogEntry; logger.LogStop += this.LoggerUserDataLogStop; logger.StartLogging(); System.Threading.Thread.Sleep(500); IAsyncResult stopResult = logger.BeginStopLogging(null, null); stopResult.AsyncWaitHandle.WaitOne(); logger.EndStopLogging(stopResult); Assert.AreSame(userData, userDataFromLogStart); Assert.AreSame(userData, userDataFromLogEntry); Assert.AreSame(userData, userDataFromLogStop); }
public void BasicLoggerAddresses() { MockEcuStream stream = MockEcuStream.CreateInstance(); SsmBasicLogger logger = SsmBasicLogger.GetInstance(Environment.CurrentDirectory, stream); IAsyncResult result = logger.BeginConnect(null, null); result.AsyncWaitHandle.WaitOne(); ParameterSource source = logger.EndConnect(result); ParameterDatabase database = ParameterDatabase.GetInstance(); database.Add(source); LogProfile profile = LogProfile.CreateInstance(); foreach (SsmParameter parameter in database.Parameters) { profile.Add(parameter, parameter.Conversions[0]); if (profile.Columns.Count == 8) { break; } } logger.SetProfile(profile, database); IList <int> actual = logger.Addresses; // Note that parameters get re-ordered alphabetically IList <int> expected = new int[] { // 9, 10, 8, 14, 15, 17, 18, 13, 16, 8, 9, 10, 13, 14, 15, 16, 17, 18, }; Assert.AreEqual(expected.Count, actual.Count, "Addresses.Length"); for (int i = 0; i < expected.Count; i++) { Assert.AreEqual(expected[i], actual[i], "Addresses[" + i + "]"); } }
/// <summary> /// Constructor /// </summary> private SawMill( string configurationDirectory, string ssmPortName, string plxPortName, IList <SawMillScreen> screens, Update update) { this.update = update; this.screens = screens; this.database = ParameterDatabase.GetInstance(); this.CreateLogger(configurationDirectory, ssmPortName); if (!string.IsNullOrEmpty(plxPortName)) { ExternalSensors externalSensors = ExternalSensors.GetInstance(); externalSensors.SetPlxSerialPort(plxPortName); ParameterSource plxParameters = PlxParameterSource.GetInstance(); this.database.Add(plxParameters); } }
public void BasicLoggerProfile() { MockEcuStream stream = MockEcuStream.CreateInstance(); this.logger = SsmBasicLogger.GetInstance(Environment.CurrentDirectory, stream); IAsyncResult result = logger.BeginConnect(null, null); result.AsyncWaitHandle.WaitOne(); ParameterSource source = logger.EndConnect(result); ParameterDatabase database = ParameterDatabase.GetInstance(); database.Add(source); LogProfile expectedProfile = LogProfile.CreateInstance(); foreach (SsmParameter parameter in database.Parameters) { expectedProfile.Add(parameter, parameter.Conversions[0]); if (expectedProfile.Columns.Count > 3) { break; } } logger.SetProfile(expectedProfile, database); LogProfile actualProfile = logger.CurrentProfile; Assert.AreEqual(expectedProfile.Columns.Count, actualProfile.Columns.Count, "Actual count and expected count"); foreach (LogColumn expectedColumn in expectedProfile.Columns) { Assert.IsTrue(actualProfile.Contains(expectedColumn.Parameter), "Actual expected parameter set is missing something"); } foreach (LogColumn actualColumn in actualProfile.Columns) { Assert.IsTrue(expectedProfile.Contains(actualColumn.Parameter), "Actual expected parameter set contains something extra"); } }
public void InternalLogProfileSsmAddressesOneParameter() { ParameterDatabase database = ParameterDatabase.GetInstance(); SsmParameterSource source = SsmParameterSource.GetInstance( Environment.CurrentDirectory, SsmParameterSourceTest.EcuIdentifier, SsmParameterSourceTest.CompatibilityMap); database.Add(source); LogProfile publicProfile = LogProfile.CreateInstance(); SsmParameter parameter = database.Parameters[0] as SsmParameter; publicProfile.Add(parameter, parameter.Conversions[0]); InternalLogProfile internalProfile = InternalLogProfile.GetInstance(publicProfile, database); Assert.AreEqual(1, internalProfile.Addresses.Count); Assert.AreEqual(parameter.Address, internalProfile.Addresses[0]); Assert.AreEqual(1, internalProfile.LogEventArgs.Row.Columns.Count); LogColumn column = internalProfile.LogEventArgs.Row.Columns[0]; Assert.AreEqual(column.PropertyBag[InternalLogProfile.ColumnAddressIndex], 0); }
/// <summary> /// Construct an instance of Lumberjack with the given UI. /// </summary> /// <param name="ui">User interface.</param> public Lumberjack(IUserInterface ui) { Trace("Lumberjack.Lumberjack"); this.ui = ui; this.database = ParameterDatabase.GetInstance(); }