Adding IC communication to Felixclient
The goal of this merge request is to add in the ability to send commands over IC channels within the YARR FELIX client. The code will be based on the project itk-ic-over-netio-next which opens a channel for IC communication over a felix-client thread and sends/receives commands, notably for handling communication with an Optoboard device. While this program works well, it would be useful to have these functions built into YARR so that users aren't required to set up an external DAQ library and commands can be handled on a single felix-client thread, instead of having a separate thread open and close. This comes in during operation of the eye diagram scan for FELIX, in which we vary Optoboard parameters alongside front-end parameters YARR issue 235.
This new branch introduces private functions to the FelixController to handle IC communication, as well as several public functions specific to writing and reading registers on different Optoboard devices. These will be based off of the following:
From itk-ic-over-netio-next
:
-
communicate: sends command using
felix-client-thread
send_cmd
function -
prepareICNetioFrame: constructs data frame to send in
communicate
function, builds data frame based on optoboard device parameters, register address, whether the command is for a read or a write operation, etc. -
readRegs: finds address of register to read, calls
prepareICNetioFrame
to construct the frame to send from this information, callscommunicate
to send command - note there is a similar function for writing
From hardware.py
in Optoboard code distribution
- read: constructs register names and sends commands to allow register reads of different Optoboard devices - note there is a similar function for writing
Elements of all of these functions will be compiled and assembled into functions to add to the YARR FelixClient.