using System;
namespace Modbus.Data
{
///
/// Data story factory.
///
public static class DataStoreFactory
{
///
/// Factory method for default data store - register values set to 0 and discrete values set to false.
///
public static DataStore CreateDefaultDataStore()
{
return CreateDefaultDataStore(UInt16.MaxValue, UInt16.MaxValue, UInt16.MaxValue, UInt16.MaxValue);
}
///
/// Factory method for default data store - register values set to 0 and discrete values set to false.
///
public static DataStore CreateDefaultDataStore(ushort coilsCount, ushort inputsCount, ushort holdingRegistersCount, ushort inputRegistersCount)
{
DataStore dataStore = new DataStore();
for (int i = 0; i < coilsCount; i++)
dataStore.CoilDiscretes.Add(false);
for (int i = 0; i < inputsCount; i++)
dataStore.InputDiscretes.Add(false);
for (int i = 0; i < holdingRegistersCount; i++)
dataStore.HoldingRegisters.Add((ushort) 0);
for (int i = 0; i < inputRegistersCount; i++)
dataStore.InputRegisters.Add((ushort) 0);
return dataStore;
}
///
/// Factory method for test data store.
///
public static DataStore CreateTestDataStore()
{
DataStore dataStore = new DataStore();
for (int i = 1; i < 3000; i++)
{
bool value = i % 2 > 0;
dataStore.CoilDiscretes.Add(value);
dataStore.InputDiscretes.Add(!value);
dataStore.HoldingRegisters.Add((ushort) (i));
dataStore.InputRegisters.Add((ushort) ((i) * 10));
}
return dataStore;
}
}
}