diff --git a/OpenEphys.Onix1/Bno055Data.cs b/OpenEphys.Onix1/Bno055Data.cs index 6766408..a4ceb50 100644 --- a/OpenEphys.Onix1/Bno055Data.cs +++ b/OpenEphys.Onix1/Bno055Data.cs @@ -10,8 +10,8 @@ namespace OpenEphys.Onix1 /// Produces a sequence of 3D orientation measurements produced by Bno055 9-axis inertial measurement unit. /// /// - /// This data stream operator must be linked to an appropriate configuration, such as a , - /// in order to stream 3D orientation data. + /// This data IO operator must be linked to an appropriate configuration operator, such as a , using a shared DeviceName. /// [Description("Produces a sequence of 3D orientation measurements produced by a Bno055 9-axis inertial measurement unit.")] public class Bno055Data : Source diff --git a/OpenEphys.Onix1/BreakoutAnalogInput.cs b/OpenEphys.Onix1/BreakoutAnalogInput.cs index 38550a9..6a320a3 100644 --- a/OpenEphys.Onix1/BreakoutAnalogInput.cs +++ b/OpenEphys.Onix1/BreakoutAnalogInput.cs @@ -12,6 +12,10 @@ namespace OpenEphys.Onix1 /// /// Produces a sequence of analog input frames from an ONIX breakout board. /// + /// + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. + /// [Description("Produces a sequence of analog input frames from an ONIX breakout board.")] public class BreakoutAnalogInput : Source { diff --git a/OpenEphys.Onix1/BreakoutAnalogOutput.cs b/OpenEphys.Onix1/BreakoutAnalogOutput.cs index 72f0343..da3c609 100644 --- a/OpenEphys.Onix1/BreakoutAnalogOutput.cs +++ b/OpenEphys.Onix1/BreakoutAnalogOutput.cs @@ -10,6 +10,10 @@ namespace OpenEphys.Onix1 /// /// Sends analog output data to an ONIX breakout board. /// + /// + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. + /// [Description("Sends analog output data to an ONIX breakout board.")] public class BreakoutAnalogOutput : Sink { diff --git a/OpenEphys.Onix1/BreakoutDigitalInput.cs b/OpenEphys.Onix1/BreakoutDigitalInput.cs index 95cd64f..4f087be 100644 --- a/OpenEphys.Onix1/BreakoutDigitalInput.cs +++ b/OpenEphys.Onix1/BreakoutDigitalInput.cs @@ -10,8 +10,8 @@ namespace OpenEphys.Onix1 /// Produces a sequence of digital input data from an ONIX breakout board. /// /// - /// This data stream operator must be linked to an appropriate configuration, such as a - /// , in order to stream data. + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. /// [Description("Produces a sequence of digital input frames from an ONIX breakout board.")] public class BreakoutDigitalInput : Source diff --git a/OpenEphys.Onix1/BreakoutDigitalOutput.cs b/OpenEphys.Onix1/BreakoutDigitalOutput.cs index 4c0674e..249916e 100644 --- a/OpenEphys.Onix1/BreakoutDigitalOutput.cs +++ b/OpenEphys.Onix1/BreakoutDigitalOutput.cs @@ -9,6 +9,10 @@ namespace OpenEphys.Onix1 /// /// Sends digital output data to an ONIX breakout board. /// + /// + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. + /// [Description("Sends digital output data to an ONIX breakout board.")] public class BreakoutDigitalOutput : Sink { diff --git a/OpenEphys.Onix1/ConfigureBno055.cs b/OpenEphys.Onix1/ConfigureBno055.cs index d315a9b..07daf71 100644 --- a/OpenEphys.Onix1/ConfigureBno055.cs +++ b/OpenEphys.Onix1/ConfigureBno055.cs @@ -5,10 +5,10 @@ namespace OpenEphys.Onix1 { /// /// Configures a Bosch Bno055 9-axis inertial measurement unit (IMU). - /// C + /// /// - /// This configuration operator can be linked to a instance to stream - /// orientation data from the IMU. + /// This configuration operator can be linked to a data IO operator, such as , + /// using a shared DeviceName. /// [Description("Configures a Bosch Bno055 9-axis inertial measurement unit.")] [Editor("OpenEphys.Onix1.Design.Bno055Editor, OpenEphys.Onix1.Design", typeof(ComponentEditor))] diff --git a/OpenEphys.Onix1/ConfigureBreakoutAnalogIO.cs b/OpenEphys.Onix1/ConfigureBreakoutAnalogIO.cs index 3caa7ec..23ff229 100644 --- a/OpenEphys.Onix1/ConfigureBreakoutAnalogIO.cs +++ b/OpenEphys.Onix1/ConfigureBreakoutAnalogIO.cs @@ -7,6 +7,11 @@ namespace OpenEphys.Onix1 /// /// Configures the ONIX breakout board's analog inputs and outputs. /// + /// + /// This configuration operator can be linked to data IO operators, such as and , using a shared + /// DeviceName. + /// [TypeConverter(typeof(SortedPropertyConverter))] [Description("Configures the ONIX breakout board's analog inputs and outputs.")] public class ConfigureBreakoutAnalogIO : SingleDeviceFactory diff --git a/OpenEphys.Onix1/ConfigureBreakoutDigitalIO.cs b/OpenEphys.Onix1/ConfigureBreakoutDigitalIO.cs index a3943ab..5b22afd 100644 --- a/OpenEphys.Onix1/ConfigureBreakoutDigitalIO.cs +++ b/OpenEphys.Onix1/ConfigureBreakoutDigitalIO.cs @@ -6,6 +6,11 @@ namespace OpenEphys.Onix1 /// /// Configures the ONIX breakout board's digital inputs and outputs. /// + /// + /// This configuration operator can be linked to data IO operators, such as and , using a shared + /// DeviceName. + /// [Description("onfigures the ONIX breakout board's digital inputs and outputs.")] public class ConfigureBreakoutDigitalIO : SingleDeviceFactory { diff --git a/OpenEphys.Onix1/ConfigureHarpSyncInput.cs b/OpenEphys.Onix1/ConfigureHarpSyncInput.cs index 7f4a4a6..cad062d 100644 --- a/OpenEphys.Onix1/ConfigureHarpSyncInput.cs +++ b/OpenEphys.Onix1/ConfigureHarpSyncInput.cs @@ -9,6 +9,10 @@ namespace OpenEphys.Onix1 /// /// /// + /// This configuration operator can be linked to a data IO operator, such as , using a shared DeviceName. + /// + /// /// 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 diff --git a/OpenEphys.Onix1/ConfigureHeadstage64ElectricalStimulator.cs b/OpenEphys.Onix1/ConfigureHeadstage64ElectricalStimulator.cs index 19867e0..5e61852 100644 --- a/OpenEphys.Onix1/ConfigureHeadstage64ElectricalStimulator.cs +++ b/OpenEphys.Onix1/ConfigureHeadstage64ElectricalStimulator.cs @@ -7,10 +7,9 @@ namespace OpenEphys.Onix1 /// Configures a headstage-64 onboard electrical stimulator. /// /// - /// This configuration operator can be linked to a - /// instance to deliver current controlled electrical micro-stimulation through a contact on the probe - /// connector on the bottom of the headstage or the corresponding contact on a compatible electrode - /// interface board. + /// This configuration operator can be linked to a data IO operator, such as , using a shared + /// DeviceName. /// [Description("Configures a headstage-64 onboard electrical stimulator.")] public class ConfigureHeadstage64ElectricalStimulator : SingleDeviceFactory diff --git a/OpenEphys.Onix1/ConfigureHeadstage64OpticalStimulator.cs b/OpenEphys.Onix1/ConfigureHeadstage64OpticalStimulator.cs index a85139f..9004f09 100644 --- a/OpenEphys.Onix1/ConfigureHeadstage64OpticalStimulator.cs +++ b/OpenEphys.Onix1/ConfigureHeadstage64OpticalStimulator.cs @@ -7,9 +7,9 @@ namespace OpenEphys.Onix1 /// Configures a headstage-64 dual-channel optical stimulator. /// /// - /// This configuration class can be linked to a instance - /// to drive current through laser diodes or LEDs connected to two contacts on the probe connector on the - /// bottom of the headstage or the corresponding contacts on a compatible electrode interface board. + /// This configuration operator can be linked to a data IO operator, such as , using a shared + /// DeviceName. /// [Description("Configures a headstage-64 dual-channel optical stimulator.")] public class ConfigureHeadstage64OpticalStimulator : SingleDeviceFactory diff --git a/OpenEphys.Onix1/ConfigureHeartbeat.cs b/OpenEphys.Onix1/ConfigureHeartbeat.cs index e304fdf..b612a8f 100644 --- a/OpenEphys.Onix1/ConfigureHeartbeat.cs +++ b/OpenEphys.Onix1/ConfigureHeartbeat.cs @@ -8,11 +8,11 @@ namespace OpenEphys.Onix1 { /// /// Configures a heartbeat device. + /// /// - /// This configuration operator can be linked to a instance to stream - /// heartbeats from the acquisition system. + /// This configuration operator can be linked to a data IO operator, such as , + /// using a shared DeviceName. /// - /// [Description("Configures a heartbeat device.")] public class ConfigureHeartbeat : SingleDeviceFactory { diff --git a/OpenEphys.Onix1/ConfigureLoadTester.cs b/OpenEphys.Onix1/ConfigureLoadTester.cs index 7ee5ed7..55d7a1e 100644 --- a/OpenEphys.Onix1/ConfigureLoadTester.cs +++ b/OpenEphys.Onix1/ConfigureLoadTester.cs @@ -7,12 +7,15 @@ namespace OpenEphys.Onix1 { + // TODO: Add data IO operators, update XML comment to link to them () /// /// Configures a load tester device. /// /// - /// The load tester device can be configured to produce data at user-settable size and rate - /// to stress test various communication links and test closed-loop response latency. + /// This configuration operator can be linked to a data IO operator, such as LoadTesterData, + /// using a shared DeviceName. The load tester device can be configured + /// to produce data at user-settable size and rate to stress test various communication links and test + /// closed-loop response latency. /// [Description("Configures a load testing device.")] public class ConfigureLoadTester : SingleDeviceFactory diff --git a/OpenEphys.Onix1/ConfigureMemoryMonitor.cs b/OpenEphys.Onix1/ConfigureMemoryMonitor.cs index 9ebc941..be7cb56 100644 --- a/OpenEphys.Onix1/ConfigureMemoryMonitor.cs +++ b/OpenEphys.Onix1/ConfigureMemoryMonitor.cs @@ -8,19 +8,24 @@ namespace OpenEphys.Onix1 /// Configures a hardware memory monitor. /// /// - /// The memory monitor produces periodic snapshots of the system's first in, first out (FIFO) data buffer. - /// This can be useful for: + /// This configuration operator can be linked to a data IO operator, such as , using a shared DeviceName.The memory + /// monitor produces periodic snapshots of the system's first in, first out (FIFO) data buffer. This can + /// be useful for: /// /// - /// Ensuring that data is being read by the host PC quickly enough to prevent real-time delays or overflows. - /// In the case that the PC is not keeping up with data collection, FIFO memory use will increase monotonically. + /// Ensuring that data is being read by the host PC quickly enough to prevent real-time + /// delays or overflows. In the case that the PC is not keeping up with data collection, FIFO memory use + /// will increase monotonically. /// /// - /// Tuning the value of to optimize real-time performance. - /// For optimal real-time performance, should be as small as possible and the FIFO should be bypassed - /// (memory usage should remain at 0). However, these requirements are in conflict. The memory monitor provides a way to find the minimal value of - /// value of that does not result in excessive FIFO data buffering. This tradeoff will depend on the - /// bandwidth of data being acquired, the performance of the host PC, and downstream real-time processing. + /// Tuning the value of to optimize real-time + /// performance. For optimal real-time performance, should be as + /// small as possible and the FIFO should be bypassed (memory usage should remain at 0). However, these + /// requirements are in conflict. The memory monitor provides a way to find the minimal value of value of + /// that does not result in excessive FIFO data buffering. This + /// tradeoff will depend on the bandwidth of data being acquired, the performance of the host PC, and + /// downstream real-time processing. /// /// /// diff --git a/OpenEphys.Onix1/ConfigureNeuropixelsV1e.cs b/OpenEphys.Onix1/ConfigureNeuropixelsV1e.cs index 5b52796..353e618 100644 --- a/OpenEphys.Onix1/ConfigureNeuropixelsV1e.cs +++ b/OpenEphys.Onix1/ConfigureNeuropixelsV1e.cs @@ -9,6 +9,10 @@ namespace OpenEphys.Onix1 /// /// Configures a NeuropixelsV1e device. /// + /// + /// This configuration operator can be linked to a data IO operator, such as , + /// using a shared DeviceName. + /// [Description("Configures a NeuropixelsV1e device.")] [Editor("OpenEphys.Onix1.Design.NeuropixelsV1eEditor, OpenEphys.Onix1.Design", typeof(ComponentEditor))] public class ConfigureNeuropixelsV1e : SingleDeviceFactory diff --git a/OpenEphys.Onix1/ConfigureNeuropixelsV1eBno055.cs b/OpenEphys.Onix1/ConfigureNeuropixelsV1eBno055.cs index 31debfc..e77332c 100644 --- a/OpenEphys.Onix1/ConfigureNeuropixelsV1eBno055.cs +++ b/OpenEphys.Onix1/ConfigureNeuropixelsV1eBno055.cs @@ -6,6 +6,10 @@ namespace OpenEphys.Onix1 /// /// Configures a NeuropixelsV1eBno055 device. /// + /// + /// This configuration operator can be linked to a data IO operator, such as , using a shared DeviceName. + /// [Description("Configures a NeuropixelsV1eBno055 device.")] [Editor("OpenEphys.Onix1.Design.NeuropixelsV1eBno055Editor, OpenEphys.Onix1.Design", typeof(ComponentEditor))] public class ConfigureNeuropixelsV1eBno055 : SingleDeviceFactory diff --git a/OpenEphys.Onix1/ConfigureNeuropixelsV2e.cs b/OpenEphys.Onix1/ConfigureNeuropixelsV2e.cs index 4947229..418ea69 100644 --- a/OpenEphys.Onix1/ConfigureNeuropixelsV2e.cs +++ b/OpenEphys.Onix1/ConfigureNeuropixelsV2e.cs @@ -293,7 +293,7 @@ static class NeuropixelsV2e public const byte ProbeBSelected = 0b1001_1001; public const int FramesPerSuperFrame = 16; - public const int ADCsPerProbe = 24; + public const int AdcsPerProbe = 24; public const int ChannelCount = 384; public const int FrameWords = 36; // TRASH TRASH TRASH 0 ADC0 ADC8 ADC16 0 ADC1 ADC9 ADC17 0 ... ADC7 ADC15 ADC23 0 diff --git a/OpenEphys.Onix1/ConfigureNeuropixelsV2eBeta.cs b/OpenEphys.Onix1/ConfigureNeuropixelsV2eBeta.cs index 6d20ae3..512b769 100644 --- a/OpenEphys.Onix1/ConfigureNeuropixelsV2eBeta.cs +++ b/OpenEphys.Onix1/ConfigureNeuropixelsV2eBeta.cs @@ -9,6 +9,10 @@ namespace OpenEphys.Onix1 /// /// Configures a NeuropixelsV2eBeta device. /// + /// + /// This configuration operator can be linked to a data IO operator, such as , using a shared DeviceName. + /// [Description("Configures a NeuropixelsV2eBeta device.")] [Editor("OpenEphys.Onix1.Design.NeuropixelsV2eEditor, OpenEphys.Onix1.Design", typeof(ComponentEditor))] public class ConfigureNeuropixelsV2eBeta : SingleDeviceFactory, IConfigureNeuropixelsV2 diff --git a/OpenEphys.Onix1/ConfigureNeuropixelsV2eBno055.cs b/OpenEphys.Onix1/ConfigureNeuropixelsV2eBno055.cs index 506c7f1..4db722f 100644 --- a/OpenEphys.Onix1/ConfigureNeuropixelsV2eBno055.cs +++ b/OpenEphys.Onix1/ConfigureNeuropixelsV2eBno055.cs @@ -6,6 +6,10 @@ namespace OpenEphys.Onix1 /// /// Configures a NeuropixelsV2eBno055 device. /// + /// + /// This configuration operator can be linked to a data IO operator, such as , using a shared DeviceName. + /// [Editor("OpenEphys.Onix1.Design.NeuropixelsV2eBno055Editor, OpenEphys.Onix1.Design", typeof(ComponentEditor))] [Description("Configures a NeuropixelsV2eBno055 device.")] public class ConfigureNeuropixelsV2eBno055 : SingleDeviceFactory diff --git a/OpenEphys.Onix1/ConfigureRhd2164.cs b/OpenEphys.Onix1/ConfigureRhd2164.cs index c6fdd87..f9ed506 100644 --- a/OpenEphys.Onix1/ConfigureRhd2164.cs +++ b/OpenEphys.Onix1/ConfigureRhd2164.cs @@ -7,8 +7,8 @@ namespace OpenEphys.Onix1 /// Configures an Intan Rhd2164 bioamplifier chip. /// /// - /// This configuration operator can be linked to a instance to stream - /// electrophysiology data from the chip. + /// This configuration operator can be linked to a data IO operator, such as , using a shared DeviceName. /// [Description("Configures a Rhd2164 device.")] public class ConfigureRhd2164 : SingleDeviceFactory diff --git a/OpenEphys.Onix1/ConfigureTS4231V1.cs b/OpenEphys.Onix1/ConfigureTS4231V1.cs index 532b1d0..31a8634 100644 --- a/OpenEphys.Onix1/ConfigureTS4231V1.cs +++ b/OpenEphys.Onix1/ConfigureTS4231V1.cs @@ -8,8 +8,10 @@ namespace OpenEphys.Onix1 /// a pair of SteamVR V1 base stations. /// /// - /// This configuration operator can be linked to a instance to stream 3D position data from - /// light-house receivers when SteamVR V1 base stations have been installed above the arena. + /// This configuration operator can be linked to a data IO operator, such as , using a shared DeviceName to stream 3D + /// position data from light-house receivers when SteamVR V1 base stations have been installed above the + /// arena. /// [Description("Configures a TS4231 receiver array.")] public class ConfigureTS4231V1 : SingleDeviceFactory diff --git a/OpenEphys.Onix1/DeviceFactory.cs b/OpenEphys.Onix1/DeviceFactory.cs index 443fbda..73bee4b 100644 --- a/OpenEphys.Onix1/DeviceFactory.cs +++ b/OpenEphys.Onix1/DeviceFactory.cs @@ -23,14 +23,13 @@ public abstract class DeviceFactory : Sink } /// - /// Provides an abstract base class for configuration operators responsible for - /// registering a single device within the internal device manager. + /// Abstract base for configuration operators responsible for registering a single device within the + /// internal device manager. /// /// - /// ONI devices usually require a specific sequence of configuration and parameterization - /// steps before they can be interacted with. The - /// provides a modular abstraction allowing flexible assembly and sequencing of - /// of all device-specific configuration code. + /// ONI devices usually require a specific sequence of configuration and parameterization steps before + /// they can be interacted with. The provides a modular abstraction + /// allowing flexible assembly and sequencing of of all device-specific configuration code. /// public abstract class SingleDeviceFactory : DeviceFactory, IDeviceConfiguration { @@ -47,9 +46,11 @@ internal SingleDeviceFactory(Type deviceType) /// /// /// The device name provides a unique, human-readable identifier that is used to link software - /// elements for configuration, control, and data streaming to hardware. This is often a one-to-one - /// representation of a single , but can also represent abstract ONI device - /// aggregates or virtual devices. + /// elements for configuration, control, and data streaming to hardware. For instance, it can be used + /// to link configuration operators to data IO operators within a workflow. This value is + /// usually not set manually, but is assigned in a to correspond to a + /// fixed address with a piece of hardware such as a headstage. This address is used for software + /// communication. /// [Description(DeviceNameDescription)] [Category(ConfigurationCategory)] @@ -59,8 +60,11 @@ internal SingleDeviceFactory(Type deviceType) /// Gets or sets the device address. /// /// - /// This address provides a fully-qualified location of a device within the device table. This is often a one-to-one - /// representation of a , but can also represent abstract device addresses. + /// This is a fully-qualified numerical hardware address of a device within the device table produced + /// by an Open Neuro Interface (ONI) compliant + /// acquisition system. This value is usually not set manually, but is assigned in a to correspond to a fixed address with a piece of hardware such as a + /// headstage. This address is used for hardware communication. /// [Description(DeviceAddressDescription)] [Category(ConfigurationCategory)] @@ -70,8 +74,9 @@ internal SingleDeviceFactory(Type deviceType) /// Gets or sets the device identity. /// /// - /// This type provides a device identity to each device within the device table. This is often a one-to-one - /// representation of a a , but can also represent abstract device identities. + /// This type provides a device identity to each device within the device table produced by an Open Neuro Interface (ONI) compliant acquisition + /// system. /// [Browsable(false)] public Type DeviceType { get; } diff --git a/OpenEphys.Onix1/HarpSyncInputData.cs b/OpenEphys.Onix1/HarpSyncInputData.cs index d149086..b0d6bd1 100644 --- a/OpenEphys.Onix1/HarpSyncInputData.cs +++ b/OpenEphys.Onix1/HarpSyncInputData.cs @@ -7,7 +7,8 @@ namespace OpenEphys.Onix1 { /// - /// Produces a sequence of Harp clock synchronization signals sent to the Harp input in the ONIX breakout board. + /// Produces a sequence of Harp clock synchronization signals sent to the Harp input in the ONIX breakout + /// board. /// /// [Description("Produces a sequence of Harp clock synchronization signals sent to the Harp input in the ONIX breakout board.")] diff --git a/OpenEphys.Onix1/Headstage64ElectricalStimulatorTrigger.cs b/OpenEphys.Onix1/Headstage64ElectricalStimulatorTrigger.cs index 82ed572..4af7d24 100644 --- a/OpenEphys.Onix1/Headstage64ElectricalStimulatorTrigger.cs +++ b/OpenEphys.Onix1/Headstage64ElectricalStimulatorTrigger.cs @@ -14,8 +14,11 @@ namespace OpenEphys.Onix1 /// Controls a headstage-64 onboard electrical stimulus sequencer. /// /// - /// This operator must be linked to an appropriate configuration, such as a , - /// in order to define and deliver electrical stimulation sequences. + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. + /// Headstage-64's onboard electrical stimulator can be used to deliver current controlled + /// micro-stimulation through a contact on the probe connector on the bottom of the headstage or the + /// corresponding contact on a compatible electrode interface board. /// [Description("Controls a headstage-64 onboard electrical stimulus sequencer.")] public class Headstage64ElectricalStimulatorTrigger: Sink diff --git a/OpenEphys.Onix1/Headstage64OpticalStimulatorTrigger.cs b/OpenEphys.Onix1/Headstage64OpticalStimulatorTrigger.cs index b2a4f67..b1a5ebe 100644 --- a/OpenEphys.Onix1/Headstage64OpticalStimulatorTrigger.cs +++ b/OpenEphys.Onix1/Headstage64OpticalStimulatorTrigger.cs @@ -14,8 +14,11 @@ namespace OpenEphys.Onix1 /// Controls a headstage-64 onboard optical stimulus sequencer. /// /// - /// This operator must be linked to an appropriate configuration, such as a , - /// in order to define and deliver optical stimulation sequences. + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. + /// Headstage-64's onboard optical stimulator can be used to drive current through laser diodes or LEDs + /// connected to two contacts on the probe connector on the bottom of the headstage or the corresponding + /// contacts on a compatible electrode interface board. /// [Description("Controls a headstage-64 onboard optical stimulus sequencer.")] public class Headstage64OpticalStimulatorTrigger : Sink diff --git a/OpenEphys.Onix1/HeartbeatData.cs b/OpenEphys.Onix1/HeartbeatData.cs index acab0da..8a4eabf 100644 --- a/OpenEphys.Onix1/HeartbeatData.cs +++ b/OpenEphys.Onix1/HeartbeatData.cs @@ -10,8 +10,8 @@ namespace OpenEphys.Onix1 /// Produces a sequence of heartbeat data frames. /// /// - /// This data stream class must be linked to an appropriate configuration, such as a , - /// in order to stream heartbeat data. + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. /// [Description("Produces a sequence of heartbeat data frames.")] public class HeartbeatData : Source diff --git a/OpenEphys.Onix1/MemoryMonitorData.cs b/OpenEphys.Onix1/MemoryMonitorData.cs index 61316de..cdeadc7 100644 --- a/OpenEphys.Onix1/MemoryMonitorData.cs +++ b/OpenEphys.Onix1/MemoryMonitorData.cs @@ -10,8 +10,8 @@ namespace OpenEphys.Onix1 /// Produces a sequence of memory usage data frames. /// /// - /// This data stream operator must be linked to an appropriate configuration, such as a , - /// in order to stream data. + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. /// [Description("Produces a sequence of memory usage data frames.")] public class MemoryMonitorData : Source diff --git a/OpenEphys.Onix1/MultiDeviceFactory.cs b/OpenEphys.Onix1/MultiDeviceFactory.cs index 4477261..218e399 100644 --- a/OpenEphys.Onix1/MultiDeviceFactory.cs +++ b/OpenEphys.Onix1/MultiDeviceFactory.cs @@ -42,8 +42,8 @@ internal MultiDeviceFactory() /// Gets or sets a unique device group name. /// /// - /// A human-readable identifier that is used as a prefix for - /// the of each device in the the group. + /// A human-readable identifier that is used as a prefix for the of each device in the the group. /// [Description("The unique device group name.")] [Category(ConfigurationCategory)] diff --git a/OpenEphys.Onix1/NeuropixelsV1eBno055Data.cs b/OpenEphys.Onix1/NeuropixelsV1eBno055Data.cs index b5564d8..2e8fdd8 100644 --- a/OpenEphys.Onix1/NeuropixelsV1eBno055Data.cs +++ b/OpenEphys.Onix1/NeuropixelsV1eBno055Data.cs @@ -9,6 +9,10 @@ namespace OpenEphys.Onix1 /// /// Produces a sequence of objects from a NeuropixelsV1e headstage. /// + /// + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. + /// [Description("Produces a sequence of Bno055DataFrame objects from a NeuropixelsV1e headstage.")] public class NeuropixelsV1eBno055Data : Source { diff --git a/OpenEphys.Onix1/NeuropixelsV1eData.cs b/OpenEphys.Onix1/NeuropixelsV1eData.cs index a2e7979..b996643 100644 --- a/OpenEphys.Onix1/NeuropixelsV1eData.cs +++ b/OpenEphys.Onix1/NeuropixelsV1eData.cs @@ -11,6 +11,10 @@ namespace OpenEphys.Onix1 /// /// Produces a sequence of s from a NeuropixelsV1e headstage. /// + /// + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. + /// [Description("Produces a sequence of NeuropixelsV1eDataFrame objects from a NeuropixelsV1e headstage.")] public class NeuropixelsV1eData : Source { diff --git a/OpenEphys.Onix1/NeuropixelsV2eBetaData.cs b/OpenEphys.Onix1/NeuropixelsV2eBetaData.cs index 4861d05..d6654a6 100644 --- a/OpenEphys.Onix1/NeuropixelsV2eBetaData.cs +++ b/OpenEphys.Onix1/NeuropixelsV2eBetaData.cs @@ -11,6 +11,10 @@ namespace OpenEphys.Onix1 /// /// Produces a sequence of objects from a NeuropixelsV2eBeta headstage. /// + /// + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. + /// [Description("Produces a sequence of NeuropixelsV2eDataFrame objects from a NeuropixelsV2e headstage.")] public class NeuropixelsV2eBetaData : Source { diff --git a/OpenEphys.Onix1/NeuropixelsV2eBno055Data.cs b/OpenEphys.Onix1/NeuropixelsV2eBno055Data.cs index 28b7955..79a3974 100644 --- a/OpenEphys.Onix1/NeuropixelsV2eBno055Data.cs +++ b/OpenEphys.Onix1/NeuropixelsV2eBno055Data.cs @@ -9,6 +9,10 @@ namespace OpenEphys.Onix1 /// /// Produces a sequence of objects from a NeuropixelsV2e headstage. /// + /// + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. + /// [Description("Produces a sequence of Bno055DataFrame objects from a NeuropixelsV2e headstage.")] public class NeuropixelsV2eBno055Data : Source { diff --git a/OpenEphys.Onix1/NeuropixelsV2eData.cs b/OpenEphys.Onix1/NeuropixelsV2eData.cs index 4891b4e..f064918 100644 --- a/OpenEphys.Onix1/NeuropixelsV2eData.cs +++ b/OpenEphys.Onix1/NeuropixelsV2eData.cs @@ -11,6 +11,10 @@ namespace OpenEphys.Onix1 /// /// Produces a sequence of objects from a NeuropixelsV2e headstage. /// + /// + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. + /// [Description("Produces a sequence of NeuropixelsV2eDataFrame objects from a NeuropixelsV2e headstage.")] public class NeuropixelsV2eData : Source { @@ -24,12 +28,13 @@ public class NeuropixelsV2eData : Source /// Gets or sets the buffer size. /// /// - /// This property determines the number of super-frames that are buffered before data is propagated. A super-frame consists of 384 - /// channels from the spike-band and 32 channels from the LFP band. If this value is set to 30, then 30 super-frames, along with - /// corresponding clock values, will be collected and packed into each . Because channels are - /// sampled at 30 kHz, this is equivalent to 1 millisecond of data from each channel. + /// This property determines the number of samples that are collected from each of the 384 ephys + /// channels before data is propagated. For instance, if this value is set to 30, then 384x30 samples, + /// along with 30 corresponding clock values, will be collected and packed into each . Because channels are sampled at 30 kHz, this is equivalent to 1 + /// millisecond of data from each channel. /// - [Description("The number of samples collected for each channel that are used to create a single NeuropixelsV2eDataFrame.")] + [Description("The number of samples collected from each channel that are used to create a single NeuropixelsV2eDataFrame.")] [Category(DeviceFactory.ConfigurationCategory)] public int BufferSize { get; set; } = 30; @@ -41,9 +46,9 @@ public class NeuropixelsV2eData : Source public NeuropixelsV2Probe ProbeIndex { get; set; } /// - /// Generates a sequence of objects. + /// Generates a sequence of s. /// - /// A sequence of objects. + /// A sequence of s. public unsafe override IObservable Generate() { var bufferSize = BufferSize; diff --git a/OpenEphys.Onix1/NeuropixelsV2eDataFrame.cs b/OpenEphys.Onix1/NeuropixelsV2eDataFrame.cs index 00f5c22..3a3ccbc 100644 --- a/OpenEphys.Onix1/NeuropixelsV2eDataFrame.cs +++ b/OpenEphys.Onix1/NeuropixelsV2eDataFrame.cs @@ -39,9 +39,9 @@ internal static unsafe void CopyAmplifierBuffer(ushort* amplifierData, ushort[,] // The period of ADC data within data array is 36 words var adcDataOffset = i * NeuropixelsV2e.FrameWords; - for (int k = 0; k < NeuropixelsV2e.ADCsPerProbe; k++) + for (int k = 0; k < NeuropixelsV2e.AdcsPerProbe; k++) { - amplifierBuffer[RawToChannel[k, i], index] = (ushort)(gainCorrection * amplifierData[ADCIndices[k] + adcDataOffset]); + amplifierBuffer[RawToChannel[k, i], index] = (ushort)(gainCorrection * amplifierData[AdcIndicies[k] + adcDataOffset]); } } } @@ -50,7 +50,7 @@ internal static unsafe void CopyAmplifierBuffer(ushort* amplifierData, ushort[,] // First dimension: data index // Second dimension: frame index within super frame - static readonly int[] ADCIndices = { + static readonly int[] AdcIndicies = { 0, 1, 2, 4, 5, 6, 8, 9, 10, diff --git a/OpenEphys.Onix1/PortStatus.cs b/OpenEphys.Onix1/PortStatus.cs index 4be51a6..0587b9f 100644 --- a/OpenEphys.Onix1/PortStatus.cs +++ b/OpenEphys.Onix1/PortStatus.cs @@ -10,9 +10,8 @@ namespace OpenEphys.Onix1 /// Produces a sequence of port status information frames. /// /// - /// This data stream operator must be linked to an appropriate headstage, - /// miniscope, etc. configuration whose communication is dictated by - /// a PortController. + /// This data IO operator must be linked to an appropriate headstage or miniscope configuration (e.g. ) using a shared DeviceName. /// [Description("Produces a sequence of port status information.")] public class PortStatus : Source diff --git a/OpenEphys.Onix1/Rhd2164Data.cs b/OpenEphys.Onix1/Rhd2164Data.cs index 044a51a..3f3522f 100644 --- a/OpenEphys.Onix1/Rhd2164Data.cs +++ b/OpenEphys.Onix1/Rhd2164Data.cs @@ -13,8 +13,8 @@ namespace OpenEphys.Onix1 /// Produces a sequence of electrophysiology data frames from an Intan Rhd2164 bioacquisition chip. /// /// - /// This data stream operator must be linked to an appropriate configuration, such as a , - /// in order to stream electrophysiology data. + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. /// [Description("Produces a sequence of electrophysiology data frames from an Intan Rhd2164 bioacquisition chip.")] public class Rhd2164Data : Source diff --git a/OpenEphys.Onix1/TS4231V1Data.cs b/OpenEphys.Onix1/TS4231V1Data.cs index 2a635bf..3116ba8 100644 --- a/OpenEphys.Onix1/TS4231V1Data.cs +++ b/OpenEphys.Onix1/TS4231V1Data.cs @@ -11,14 +11,15 @@ namespace OpenEphys.Onix1 /// /// /// - /// This data stream class must be linked to an appropriate configuration, such as a , - /// in order to stream 3D position data. + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. /// /// - /// The data produced by this class contains individual base station pulse/sweep codes and timing information. These data provide - /// rapid updates that constrain the possible position of a sensor and therefore can be combined with orientation information - /// in a downstream predictive model (e.g. Kalman filter) for high-accuracy and robust position tracking. To produce naïve - /// position estimates, use the operator instead of this one. + /// The data produced by this class contains individual base station pulse/sweep codes and timing + /// information. These data provide rapid updates that constrain the possible position of a sensor and + /// therefore can be combined with orientation information in a downstream predictive model (e.g. Kalman + /// filter) for high-accuracy and robust position tracking. To produce naïve position estimates, use the + /// operator instead of this one. /// /// [Description("Produces a sequence of decoded optical signals produced by a pair of SteamVR V1 base stations.")] diff --git a/OpenEphys.Onix1/TS4231V1PositionData.cs b/OpenEphys.Onix1/TS4231V1PositionData.cs index fedebda..77f602f 100644 --- a/OpenEphys.Onix1/TS4231V1PositionData.cs +++ b/OpenEphys.Onix1/TS4231V1PositionData.cs @@ -9,30 +9,33 @@ namespace OpenEphys.Onix1 { /// - /// Produces a sequence of 3D positions from an array of Triad Semiconductor TS4231 receivers beneath - /// a pair of SteamVR V1 base stations. + /// Produces a sequence of 3D positions from an array of Triad Semiconductor TS4231 receivers beneath a + /// pair of SteamVR V1 base stations. /// /// /// - /// This data stream class must be linked to an appropriate configuration, such as a , - /// in order to stream data. + /// This data IO operator must be linked to an appropriate configuration, such as a , using a shared DeviceName. /// /// - /// The data produced by this class contains naïve geometric estimates of positions of photodiodes attached to each TS4231 chip. - /// This operator makes the following assumptions about the setup: + /// The data produced by this class contains naïve geometric estimates of positions of photodiodes + /// attached to each TS4231 chip. This operator makes the following assumptions about the setup: /// /// Two SteamVR V1 base stations are used. - /// The base stations have been synchronized with a patch cable and their modes set to ‘A’ and ‘b’, respectively. + /// The base stations have been synchronized with a patch cable and their modes set to + /// ‘A’ and ‘b’, respectively. /// The base stations are pointed in the same direction. - /// The Z-axis extends away the emitting face of lighthouses, X along the direction of the text on the back label, - /// and Y from bottom to top text on the back label. + /// The Z-axis extends away the emitting face of lighthouses, X along the direction of + /// the text on the back label, and Y from bottom to top text on the back label. /// - /// This operator collects a sequence of objects from each TS3231 receiver that are used to determine the ray from each - /// base station to the TS3231's photodiode. A simple geometric inversion is performed to determine the photodiodes 3D position from the values - /// and . It does not use a predictive model or integrate data from an IMU and is therefore quite sensitive to - /// obstructions in and will require post-hoc processing to correct systematic errors due to optical aberrations and nonlinearities. The the - /// operator provides access to individual lighthouse signals that is useful for a creating more robust position - /// estimates using downstream processing. + /// This operator collects a sequence of objects from each TS3231 receiver that + /// are used to determine the ray from each base station to the TS3231's photodiode. A simple geometric + /// inversion is performed to determine the photodiodes 3D position from the values and + /// . It does not use a predictive model or integrate data from an IMU and is therefore + /// quite sensitive to obstructions and will require post-hoc processing to correct systematic errors + /// due to optical aberrations and nonlinearities. The the operator provides + /// access to individual lighthouse signals that is useful for a creating more robust position estimates + /// using downstream processing. /// /// [Description("Produces a sequence of 3D positions from an array of Triad Semiconductor TS4231 receivers beneath a pair of SteamVR V1 base stations.")] @@ -48,8 +51,9 @@ public class TS4231V1PositionData : Source /// Gets or sets the position of the first base station in arbitrary units. /// /// - /// The units used will determine the units of and must match those used in . - /// Typically this value is used to define the origin and remains at (0, 0, 0). + /// The units used will determine the units of and + /// must match those used in . Typically this value is used to define the origin and + /// remains at (0, 0, 0). /// [Description("The position of the first base station in arbitrary units.")] [Category(DeviceFactory.ConfigurationCategory)] @@ -59,14 +63,16 @@ public class TS4231V1PositionData : Source /// Gets or sets the position of the second base station in arbitrary units. /// /// - /// The units used will determine the units of and must match those used in . + /// The units used will determine the units of and + /// must match those used in . /// [Description("The position of the second base station in arbitrary units.")] [Category(DeviceFactory.ConfigurationCategory)] public Point3d Q { get; set; } = new(1, 0, 0); /// - /// Generates a sequence of objects, each of which contains the 3D position of single photodiode. + /// Generates a sequence of objects, each of which contains + /// the 3D position of single photodiode. /// /// A sequence of objects. public unsafe override IObservable Generate()