diff --git a/OpenEphys.Onix/ConfigureBreakoutBoard.cs b/OpenEphys.Onix/ConfigureBreakoutBoard.cs
index c17b4f4c..00dbcad3 100644
--- a/OpenEphys.Onix/ConfigureBreakoutBoard.cs
+++ b/OpenEphys.Onix/ConfigureBreakoutBoard.cs
@@ -7,33 +7,33 @@ namespace OpenEphys.Onix
/// A class that configures an ONIX breakout board.
///
[Description("Configures an ONIX breakout board.")]
- public class ConfigureBreakoutBoard : HubDeviceFactory
+ public class ConfigureBreakoutBoard : MultiDeviceFactory
{
///
/// Gets or sets the heartbeat configuration.
///
- [TypeConverter(typeof(HubDeviceConverter))]
+ [TypeConverter(typeof(SingleDeviceFactoryConverter))]
[Description("Specifies the configuration for the heartbeat device in the ONIX breakout board.")]
public ConfigureHeartbeat Heartbeat { get; set; } = new();
///
/// Gets or sets the breakout board's analog IO configuration.
///
- [TypeConverter(typeof(HubDeviceConverter))]
+ [TypeConverter(typeof(SingleDeviceFactoryConverter))]
[Description("Specifies the configuration for the analog IO device in the ONIX breakout board.")]
public ConfigureBreakoutAnalogIO AnalogIO { get; set; } = new();
///
/// Gets or sets the breakout board's digital IO configuration.
///
- [TypeConverter(typeof(HubDeviceConverter))]
+ [TypeConverter(typeof(SingleDeviceFactoryConverter))]
[Description("Specifies the configuration for the digital IO device in the ONIX breakout board.")]
public ConfigureBreakoutDigitalIO DigitalIO { get; set; } = new();
///
/// Gets or sets the hardware memory monitor configuration.
///
- [TypeConverter(typeof(HubDeviceConverter))]
+ [TypeConverter(typeof(SingleDeviceFactoryConverter))]
[Description("Specifies the configuration for the memory monitor device in the ONIX breakout board.")]
public ConfigureMemoryMonitor MemoryMonitor { get; set; } = new();
diff --git a/OpenEphys.Onix/ConfigureHarpSyncInput.cs b/OpenEphys.Onix/ConfigureHarpSyncInput.cs
index b88185ec..2fc554d2 100644
--- a/OpenEphys.Onix/ConfigureHarpSyncInput.cs
+++ b/OpenEphys.Onix/ConfigureHarpSyncInput.cs
@@ -7,20 +7,24 @@ namespace OpenEphys.Onix
/// A class for configuring the ONIX breakout board Harp sync input device.
///
///
+ ///
/// Harp is a standard for asynchronous real-time data acquisition and experimental
/// control in neuroscience. It includes a clock synchronization protocol which allows
/// Harp devices to be connected to a shared clock line and continuously self-synchronize
/// their clocks to a precision of tens of microseconds. This means that all experimental
/// events are timestamped on the same clock and no post-hoc alignment of timing is necessary.
- ///
+ ///
+ ///
/// The Harp clock signal is transmitted over a serial line every second.
/// Every time the Harp sync input device in the ONIX breakout board detects a full Harp
/// synchronization packet, a new data frame is emitted pairing the current value of the
/// Harp clock with the local ONIX acquisition clock.
- ///
+ ///
+ ///
/// Logging the sequence of all Harp synchronization packets can greatly facilitate post-hoc
/// analysis and interpretation of timing signals. For more information see
/// .
+ ///
///
[Description("Configures a ONIX breakout board Harp sync input device.")]
public class ConfigureHarpSyncInput : SingleDeviceFactory
diff --git a/OpenEphys.Onix/ConfigureHeadstage64.cs b/OpenEphys.Onix/ConfigureHeadstage64.cs
index c775b729..e07affff 100644
--- a/OpenEphys.Onix/ConfigureHeadstage64.cs
+++ b/OpenEphys.Onix/ConfigureHeadstage64.cs
@@ -8,7 +8,7 @@ namespace OpenEphys.Onix
/// A class that configures an ONIX headstage-64 in the specified port.
///
[Description("Configures an ONIX headstage-64 in the specified port.")]
- public class ConfigureHeadstage64 : HubDeviceFactory
+ public class ConfigureHeadstage64 : MultiDeviceFactory
{
PortName port;
readonly ConfigureHeadstage64LinkController LinkController = new();
@@ -42,7 +42,7 @@ public ConfigureHeadstage64()
/// Gets or sets the Rhd2164 configuration.
///
[Category(ConfigurationCategory)]
- [TypeConverter(typeof(HubDeviceConverter))]
+ [TypeConverter(typeof(SingleDeviceFactoryConverter))]
[Description("Specifies the configuration for the Rhd2164 device in the headstage-64.")]
public ConfigureRhd2164 Rhd2164 { get; set; } = new();
@@ -50,7 +50,7 @@ public ConfigureHeadstage64()
/// Gets or sets the Bno055 9-axis inertial measurement unit configuration.
///
[Category(ConfigurationCategory)]
- [TypeConverter(typeof(HubDeviceConverter))]
+ [TypeConverter(typeof(SingleDeviceFactoryConverter))]
[Description("Specifies the configuration for the Bno055 device in the headstage-64.")]
public ConfigureBno055 Bno055 { get; set; } = new();
@@ -58,7 +58,7 @@ public ConfigureHeadstage64()
/// Gets or sets the SteamVR V1 basestation 3D tracking array configuration.
///
[Category(ConfigurationCategory)]
- [TypeConverter(typeof(HubDeviceConverter))]
+ [TypeConverter(typeof(SingleDeviceFactoryConverter))]
[Description("Specifies the configuration for the TS4231 device in the headstage-64.")]
public ConfigureTS4231V1 TS4231 { get; set; } = new() { Enable = false };
@@ -66,7 +66,7 @@ public ConfigureHeadstage64()
/// Gets or sets onboard electrical stimulator configuration.
///
[Category(ConfigurationCategory)]
- [TypeConverter(typeof(HubDeviceConverter))]
+ [TypeConverter(typeof(SingleDeviceFactoryConverter))]
[Description("Specifies the configuration for the ElectricalStimulator device in the headstage-64.")]
public ConfigureHeadstage64ElectricalStimulator ElectricalStimulator { get; set; } = new();
@@ -74,7 +74,7 @@ public ConfigureHeadstage64()
/// Gets or sets onboard optical stimulator configuration.
///
[Category(ConfigurationCategory)]
- [TypeConverter(typeof(HubDeviceConverter))]
+ [TypeConverter(typeof(SingleDeviceFactoryConverter))]
[Description("Specifies the configuration for the OpticalStimulator device in the headstage-64.")]
public ConfigureHeadstage64OpticalStimulator OpticalStimulator { get; set; } = new();
diff --git a/OpenEphys.Onix/ConfigureNeuropixelsV1eHeadstage.cs b/OpenEphys.Onix/ConfigureNeuropixelsV1eHeadstage.cs
index 169d48c3..5e90a4f9 100644
--- a/OpenEphys.Onix/ConfigureNeuropixelsV1eHeadstage.cs
+++ b/OpenEphys.Onix/ConfigureNeuropixelsV1eHeadstage.cs
@@ -8,7 +8,7 @@ namespace OpenEphys.Onix
/// A class that configures a NeuropixelsV1e headstage.
///
[Description("Configures a NeuropixelsV1e headstage.")]
- public class ConfigureNeuropixelsV1eHeadstage : HubDeviceFactory
+ public class ConfigureNeuropixelsV1eHeadstage : MultiDeviceFactory
{
PortName port;
readonly ConfigureNeuropixelsV1eLinkController LinkController = new();
@@ -26,7 +26,7 @@ public ConfigureNeuropixelsV1eHeadstage()
/// Gets or sets the NeuropixelsV1e configuration.
///
[Category(ConfigurationCategory)]
- [TypeConverter(typeof(HubDeviceConverter))]
+ [TypeConverter(typeof(SingleDeviceFactoryConverter))]
[Description("Specifies the configuration for the NeuropixelsV1e device.")]
public ConfigureNeuropixelsV1e NeuropixelsV1e { get; set; } = new();
@@ -34,7 +34,7 @@ public ConfigureNeuropixelsV1eHeadstage()
/// Gets or sets the Bno055 9-axis inertial measurement unit configuration.
///
[Category(ConfigurationCategory)]
- [TypeConverter(typeof(HubDeviceConverter))]
+ [TypeConverter(typeof(SingleDeviceFactoryConverter))]
[Description("Specifies the configuration for the Bno055 device.")]
public ConfigureNeuropixelsV1eBno055 Bno055 { get; set; } = new();
diff --git a/OpenEphys.Onix/ConfigureNeuropixelsV2eBetaHeadstage.cs b/OpenEphys.Onix/ConfigureNeuropixelsV2eBetaHeadstage.cs
index ba76044f..1a9a9374 100644
--- a/OpenEphys.Onix/ConfigureNeuropixelsV2eBetaHeadstage.cs
+++ b/OpenEphys.Onix/ConfigureNeuropixelsV2eBetaHeadstage.cs
@@ -7,7 +7,7 @@ namespace OpenEphys.Onix
/// A class that configures a NeuropixelsV2eBeta headstage.
///
[Description("Configures a NeuropixelsV2eBeta headstage.")]
- public class ConfigureNeuropixelsV2eBetaHeadstage : HubDeviceFactory
+ public class ConfigureNeuropixelsV2eBetaHeadstage : MultiDeviceFactory
{
PortName port;
readonly ConfigureNeuropixelsV2eLinkController LinkController = new();
@@ -25,7 +25,7 @@ public ConfigureNeuropixelsV2eBetaHeadstage()
/// Gets or sets the NeuropixelsV2eBeta configuration.
///
[Category(ConfigurationCategory)]
- [TypeConverter(typeof(HubDeviceConverter))]
+ [TypeConverter(typeof(SingleDeviceFactoryConverter))]
[Description("Specifies the configuration for the NeuropixelsV2eBeta device.")]
public ConfigureNeuropixelsV2eBeta NeuropixelsV2eBeta { get; set; } = new();
@@ -33,7 +33,7 @@ public ConfigureNeuropixelsV2eBetaHeadstage()
/// Gets or sets the Bno055 9-axis inertial measurement unit configuration.
///
[Category(ConfigurationCategory)]
- [TypeConverter(typeof(HubDeviceConverter))]
+ [TypeConverter(typeof(SingleDeviceFactoryConverter))]
[Description("Specifies the configuration for the Bno055 device.")]
public ConfigureNeuropixelsV2eBno055 Bno055 { get; set; } = new();
diff --git a/OpenEphys.Onix/ConfigureNeuropixelsV2eHeadstage.cs b/OpenEphys.Onix/ConfigureNeuropixelsV2eHeadstage.cs
index 627030ac..e129c579 100644
--- a/OpenEphys.Onix/ConfigureNeuropixelsV2eHeadstage.cs
+++ b/OpenEphys.Onix/ConfigureNeuropixelsV2eHeadstage.cs
@@ -7,7 +7,7 @@ namespace OpenEphys.Onix
/// A class that configures a NeuropixelsV2e headstage.
///
[Description("configures a NeuropixelsV2e headstage.")]
- public class ConfigureNeuropixelsV2eHeadstage : HubDeviceFactory
+ public class ConfigureNeuropixelsV2eHeadstage : MultiDeviceFactory
{
PortName port;
readonly ConfigureNeuropixelsV2eLinkController LinkController = new();
@@ -25,7 +25,7 @@ public ConfigureNeuropixelsV2eHeadstage()
/// Gets or sets the NeuropixelsV2e configuration.
///
[Category(ConfigurationCategory)]
- [TypeConverter(typeof(HubDeviceConverter))]
+ [TypeConverter(typeof(SingleDeviceFactoryConverter))]
[Description("Specifies the configuration for the NeuropixelsV2e device.")]
public ConfigureNeuropixelsV2e NeuropixelsV2e { get; set; } = new();
@@ -33,7 +33,7 @@ public ConfigureNeuropixelsV2eHeadstage()
/// Gets or sets the Bno055 9-axis inertial measurement unit configuration.
///
[Category(ConfigurationCategory)]
- [TypeConverter(typeof(HubDeviceConverter))]
+ [TypeConverter(typeof(SingleDeviceFactoryConverter))]
[Description("Specifies the configuration for the Bno055 device.")]
public ConfigureNeuropixelsV2eBno055 Bno055 { get; set; } = new();
diff --git a/OpenEphys.Onix/HubDeviceFactory.cs b/OpenEphys.Onix/MultiDeviceFactory.cs
similarity index 91%
rename from OpenEphys.Onix/HubDeviceFactory.cs
rename to OpenEphys.Onix/MultiDeviceFactory.cs
index b982e08b..5caf4508 100644
--- a/OpenEphys.Onix/HubDeviceFactory.cs
+++ b/OpenEphys.Onix/MultiDeviceFactory.cs
@@ -9,21 +9,24 @@ namespace OpenEphys.Onix
/// registering all devices in an ONI device aggregate in the context device table.
///
///
+ ///
/// ONI devices are often grouped into multi-device aggregates connected to hubs or
/// headstages. These aggregates provide access to multiple devices through hub-specific
/// addresses and usually require a specific sequence of configuration steps to determine
/// operational port voltages and other link-specific settings.
- ///
+ ///
+ ///
/// These multi-device aggregates are the most common starting point for configuration
- /// of an ONI system, and the provides a modular abstraction
+ /// of an ONI system, and the provides a modular abstraction
/// for flexible assembly and sequencing of multiple such aggregates.
+ ///
///
- public abstract class HubDeviceFactory : DeviceFactory, INamedElement
+ public abstract class MultiDeviceFactory : DeviceFactory, INamedElement
{
const string BaseTypePrefix = "Configure";
string _name;
- internal HubDeviceFactory()
+ internal MultiDeviceFactory()
{
var baseName = GetType().Name;
var prefixIndex = baseName.IndexOf(BaseTypePrefix);
diff --git a/OpenEphys.Onix/HubDeviceConverter.cs b/OpenEphys.Onix/SingleDeviceFactoryConverter.cs
similarity index 93%
rename from OpenEphys.Onix/HubDeviceConverter.cs
rename to OpenEphys.Onix/SingleDeviceFactoryConverter.cs
index e83622b6..9b0e8bd2 100644
--- a/OpenEphys.Onix/HubDeviceConverter.cs
+++ b/OpenEphys.Onix/SingleDeviceFactoryConverter.cs
@@ -5,7 +5,7 @@
namespace OpenEphys.Onix
{
- internal class HubDeviceConverter : ExpandableObjectConverter
+ internal class SingleDeviceFactoryConverter : ExpandableObjectConverter
{
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{