Skip to content

Conversation

@Karthick-Selvam-17
Copy link
Contributor

@Karthick-Selvam-17 Karthick-Selvam-17 commented May 30, 2025

TODO: Check the above box with an 'x' indicating you've read and followed CONTRIBUTING.md.

What does this Pull Request accomplish?

API Changes to Support compilation of dynamically configured channels from veristand application / api's.

About the Changes:
Data Access System Explorer.lvlib:

  • DynamicConfigData.OnCompile.Execute.vi => This vi will be used inside an AsyncVIOnRecompile vi of the custom devices. This vi will calculates new channel data references based on the channel type(read / write / read & write) and returns them as compiled cluster. This info will be the again forwarded to RT Driver vi of the custom device through send message API which will be performed in ActionVIOnReCompile vi.

Data Access Engine.lvlib:

  • Compiled Data Access Info.ctl => A Cluster containing 4 elements. Old LUT, Read, Write and Read / Write channels initial sizes.
  • Data.Engine.DynamicConfigInitialize.vi => Merges the old data with new data. Datas are nothing but read, write, read/write refs and LUT informations.
  • LUT.CreateEntryForDynamicChannels.vi => In the old LUT Variant, creating a new entry for new channels.
  • Data.Engine.Resize.vi => This VI uses the initial sizes of the read, write, and read/write channel references from the Compiled Data Access Info.ctl to remove any newly added channel references and restore them to their original state. It ensures that any new channel references are added only after resetting to the initial configuration.
  • Data Access Engine.ctl => Updated the Data Access Engine obj to ref.

VS Inline Async API.lvlib:

  • Process Current Operation.vi => A functional global variable to keep track of the current execution state case in RT Driver vi of the Custom Device.
  • Async.Engine.DynamicConfigInitialize.vi => Gets the current operation state using FGV and waits untill write to hardware state was completed. once it was completed, calls Data.Engine.Resize.vi to resize the channel refs to its original size and then calls the Data.Engine.DynamicConfig.Initialize to add the new channel refs to older one.
  • Process.ctl => Updated the Data Access Engine obj to ref.

A brief explanation of the example and how the created APIs are used has been provided in the attached .md file.Custom Device Implementation for Dynamic Configuration.md

What testing has been done?

Tested by using these APIs in a simple custom device and the functionality of compiling the dynamically configured channels was worked as expected. Example Custom device can be found here, https://ni.visualstudio.com/DevCentral/_workitems/edit/3116328

@Karthick-Selvam-17 Karthick-Selvam-17 requested review from KishorBasavaraju-NI and removed request for gahegde-ni and skolthay May 30, 2025 08:54
@Karthick-Selvam-17 Karthick-Selvam-17 changed the base branch from main to features/VeriStand/100KChannel May 30, 2025 08:59
@niveristand-diff-bot
Copy link
Collaborator

Bleep bloop!

LabVIEW Diff Robot here with some diffs served up hot for your pull request.

Notice something funny? Help fix me on my GitHub repo.

Data Access Engine.lvlib--Data Access Engine.lvclass--Compiled Data Access Info.ctl.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.Close.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.DynamicConfigInitialize.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.Initialize.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.Resize.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--LUT.CreateEntryForDynamicChannels.vi.png

capture

Data Access System Explorer.lvlib--DynamicConfigData.OnCompile.Execute.vi.png

capture

VS Inline Async API.lvlib--Process.lvclass--Read Data Access.vi.png

capture

VS Inline Async API.lvlib--Process.lvclass--Write Data Access.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Close.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.DynamicConfigInitialize.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Initialize.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Read Data from HW.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Write Data to HW.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Process Current Operation.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Run Process.vi.png

capture

@niveristand-diff-bot
Copy link
Collaborator

Bleep bloop!

LabVIEW Diff Robot here with some diffs served up hot for your pull request.

Notice something funny? Help fix me on my GitHub repo.

Data Access Engine.lvlib--Data Access Engine.lvclass--Compiled Data Access Info.ctl.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.Close.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.DynamicConfigInitialize.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.Initialize.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.Resize.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--LUT.CreateEntryForDynamicChannels.vi.png

capture

Data Access System Explorer.lvlib--DynamicConfigData.OnCompile.Execute.vi.png

capture

VS Inline Async API.lvlib--Process.lvclass--Read Data Access.vi.png

capture

VS Inline Async API.lvlib--Process.lvclass--Write Data Access.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Close.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.DynamicConfigInitialize.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Initialize.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Read Data from HW.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Write Data to HW.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Process Current Operation.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Run Process.vi.png

capture

@niveristand-diff-bot
Copy link
Collaborator

Bleep bloop!

LabVIEW Diff Robot here with some diffs served up hot for your pull request.

Notice something funny? Help fix me on my GitHub repo.

Data Access Engine.lvlib--Data Access Engine.lvclass--Compiled Data Access Info.ctl.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.Close.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.DynamicConfigInitialize.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.Initialize.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.Resize.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--LUT.CreateEntryForDynamicChannels.vi.png

capture

Data Access System Explorer.lvlib--DynamicConfigData.OnCompile.Execute.vi.png

capture

VS Inline Async API.lvlib--Process.lvclass--Read Data Access.vi.png

capture

VS Inline Async API.lvlib--Process.lvclass--Write Data Access.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Close.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.DynamicConfigInitialize.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Initialize.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Read Data from HW.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Write Data to HW.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Process Current Operation.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Run Process.vi.png

capture

@niveristand-diff-bot
Copy link
Collaborator

Bleep bloop!

LabVIEW Diff Robot here with some diffs served up hot for your pull request.

Notice something funny? Help fix me on my GitHub repo.

Data Access Engine.lvlib--Data Access Engine.lvclass--Compiled Data Access Info.ctl.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.Close.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.DynamicConfigInitialize.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.Initialize.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--Data.Engine.Resize.vi.png

capture

Data Access Engine.lvlib--Data Access Engine.lvclass--LUT.CreateEntryForDynamicChannels.vi.png

capture

Data Access System Explorer.lvlib--DynamicConfigData.OnCompile.Execute.vi.png

capture

VS Inline Async API.lvlib--Process.lvclass--Read Data Access.vi.png

capture

VS Inline Async API.lvlib--Process.lvclass--Write Data Access.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Close.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.DynamicConfigInitialize.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Initialize.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Read Data from HW.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Async.Engine.Write Data to HW.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Process Current Operation.vi.png

capture

VS Inline Async API.lvlib--VS Inline Async API.lvclass--Run Process.vi.png

capture

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants