Skip to content

Commit

Permalink
Simplify check for first row in UclaMiniscopeV4Data
Browse files Browse the repository at this point in the history
- Use sample index instead of defining a second boolean variable
  • Loading branch information
jonnew committed Sep 4, 2024
1 parent 4f7ab76 commit 3bbba4e
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 8 deletions.
2 changes: 1 addition & 1 deletion OpenEphys.Onix1/ConfigureUclaMiniscopeV4.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ override protected bool CheckLinkState(DeviceContext device)
try
{
var ds90ub9x = device.Context.GetPassthroughDeviceContext(DeviceAddress << 8, typeof(DS90UB9x));
ConfigureUclaMiniscopeV4Camera.ConfigureMiniscope(ds90ub9x);
ConfigureUclaMiniscopeV4Camera.ConfigureCameraSystem(ds90ub9x);
}
catch (oni.ONIException ex)
{
Expand Down
4 changes: 2 additions & 2 deletions OpenEphys.Onix1/ConfigureUclaMiniscopeV4Camera.cs
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ public override IObservable<ContextTask> Process(IObservable<ContextTask> source
device.WriteRegister(DS90UB9x.ENABLE, enable ? 1u : 0);

// configure deserializer, chip states, and camera PLL
ConfigureMiniscope(device);
ConfigureCameraSystem(device);

// configuration properties
var atMega = new I2CRegisterContext(device, UclaMiniscopeV4.AtMegaAddress);
Expand All @@ -167,7 +167,7 @@ public override IObservable<ContextTask> Process(IObservable<ContextTask> source
});
}

internal static void ConfigureMiniscope(DeviceContext device)
internal static void ConfigureCameraSystem(DeviceContext device)
{
// configure deserializer
device.WriteRegister(DS90UB9x.TRIGGEROFF, 0);
Expand Down
7 changes: 2 additions & 5 deletions OpenEphys.Onix1/UclaMiniscopeV4CameraData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,18 +40,16 @@ public unsafe override IObservable<UclaMiniscopeV4CameraFrame> Generate()
var imageBuffer = new short[UclaMiniscopeV4.SensorRows * UclaMiniscopeV4.SensorColumns];
var hubClockBuffer = new ulong[UclaMiniscopeV4.SensorRows];
var clockBuffer = new ulong[UclaMiniscopeV4.SensorRows];
var awaitingFrameStart = true;

var frameObserver = Observer.Create<oni.Frame>(
frame =>
{
var payload = (UclaMiniscopeV4ImagerPayload*)frame.Data.ToPointer();

// Wait for first row
if (awaitingFrameStart && (payload->ImageRow[0] & 0x8000) == 0)
return;
if (sampleIndex == 0 && (payload->ImageRow[0] & 0x8000) == 0)
return;

awaitingFrameStart = false;
Marshal.Copy(new IntPtr(payload->ImageRow), imageBuffer, sampleIndex * UclaMiniscopeV4.SensorColumns, UclaMiniscopeV4.SensorColumns);
hubClockBuffer[sampleIndex] = payload->HubClock;
clockBuffer[sampleIndex] = frame.Clock;
Expand All @@ -63,7 +61,6 @@ public unsafe override IObservable<UclaMiniscopeV4CameraFrame> Generate()
hubClockBuffer = new ulong[UclaMiniscopeV4.SensorRows];
clockBuffer = new ulong[UclaMiniscopeV4.SensorRows];
sampleIndex = 0;
awaitingFrameStart = true;
}
},
observer.OnError,
Expand Down

0 comments on commit 3bbba4e

Please sign in to comment.