///
/// Copyright (c) 2013-2016 Sensus Metering Systems
///
using System.Collections.Generic;
using Config.Entities;
namespace TBF.BenchControl.Generic
{
public interface IComponentCfg
{
///
/// Unique component # (0 .. nr.of components-1)
///
int ItemNr { get; set; }
///
/// Component name
///
string Name { get; set; }
///
/// Reference to the component factory (it is a singleton)
///
IComponentFactory Factory { get; set; }
///
/// Component class / component type name
///
string ParentName { get; set; }
///
/// Debug level, 0 = debugging off
///
Config.Entities.DebugMode DebugLevel { get; set; }
///
/// Log level, 0 = logging off
///
Config.Entities.LogLevel LogLevel { get; set; }
///
/// Measurement correction values
///
IList Corrections { get; set; }
///
/// Measurement correction values
///
IList Uncertainties { get; set; }
///
/// Creates a new database entity 'Component' from the parameters
///
Config.Entities.Component CreateDbEntity();
///
/// Object instance factory-like methods
///
IComponentCfgCtrl GetControl();
///
/// Creates a procedure parameters provider (specific for each component).
///
/// Prodedure parameters provider or null
IParamsProvider CreateProcParamsProvider();
///
/// Returns runtime procedure parameters provider - one per component updated by LoadProcedureParamsFromDB(...).
///
/// Prodedure parameters provider or null
IParamsProvider GetRuntimeProcParamsProvider();
///
/// Returns UI procedure parameters provider - one per ComponentProcedure DB entity.
///
/// Prodedure parameters provider or null
IParamsProvider GetUIProcParamsProvider(Config.Entities.Procedure procedure);
///
/// Creates a test parameters provider (specific for each component).
///
/// Test parameters provider or null
IParamsProvider CreateTestParamsProvider();
///
/// Returns runtime test parameters provider - one per component updated by LoadtestParamsFromDB(...).
///
/// Test parameters provider or null
IParamsProvider GetRuntimeTestParamsProvider();
///
/// Returns UI test parameters provider - one per ComponentTest DB entity.
///
/// Test parameters provider or null
IParamsProvider GetUITestParamsProvider(Config.Entities.Test test);
///
/// Used in run time when a procedure is loaded or a test is started
///
void LoadProcedureParamsFromDB(Config.Entities.Procedure procedure);
void LoadTestParamsFromDB(Config.Entities.Test test);
string ToString(int i);
}
}