- Mar 04, 2025
-
-
Marco Filho authored
It only works as fanout if records are passive scanned.
-
Marco Filho authored
-
- Mar 03, 2025
-
-
Marco Filho authored
-
- Feb 10, 2025
-
-
Marco Filho authored
hybrid.sub is created to add hybrid numbers to file, avoiding having to define that in st.cmd file. Similar thing is done for VMM chips, since it's always going to be 2 per hybrid. Add global configuration values. Global PVs should configure all parameters for all VMM FENS. Channel global configurations need to connect to asyn port in order to correctly initialize the array record :(
-
- Feb 05, 2025
-
-
Marco Filho authored
It was supposed to stay in the default 1 value.
-
- Feb 04, 2025
-
-
Marco Filho authored
There are 64 channel per parameter, 7 parameters per VMM, 2 VMMs per hybrid, up to 6 hybrids per FEN, up to 32 FENs per ring and up to 12 rings per RMM. We can't scan this without saturating the network card interface, so i removed it. It's now up to the user to force the read. We do have forwawrd links between the setpoint and readback records, however.
-
- Jan 28, 2025
-
-
Marco Filho authored
After talking more with the firmware developers, it became clear that we can actually read from the registers when VMM is acquiring, we can only not Set other parameters. I still leave this as a commit instead of rebasing/amending to make it easily reversible if we need it someday.
-
- Jan 27, 2025
-
-
Marco Filho authored
Now most pertinent RBV records are not processed when acquisition is ongoing. A few records like LinkStatus and IsAcquiring are still scanned for obvious reasons, but if we find out that this could not be the case, we change it. I still think this should also be treated in the API layer. ADCVal and AnalogMon should process in the correct order for us to know what we are reading. We use PHAS field to make sure everything is processed after we have checked that IsAcquiring is 0.
-
Marco Filho authored
Scannig was not added until now because RMMAPI had an issue that made it scramble answers from the hardware if too much polling was made. This issue was fixed so we add scan now. In the channels array records, this called for a new record creation. This is because we need the asyn:READBACK info tag, which makes the readback from hardware and the setpoint record have the same values. So I guarantee that the record ending with R is the actual scanned parameter. I also removed the forward link from S to RB record to guarantee that the latest value we have in $(CH)-S record is still the setpoint. AnalogMon and ADCVal-R have PHAS 0 and 1 respectively to guarantee that we know what is the meaning of what we are reading.
-
- Jan 13, 2025
-
-
Marco Filho authored
For now I avoid polling too many records because of a behavior described in ticket ICSHWI-19975. However, this is an important parameter, so I decided to poll it.
-
Marco Filho authored
In order for VMM channel records to be able to see "#CalcDISA" record, they need to know the prefix for Hybrid records. This new naming structure allows that.
-
Marco Filho authored
asyn READBACK tag allows for waveform record to be updated whenever the callback is called in code. Without this, OPIs usually can't properly put or get to uninitialized waveform records.
-
Marco Filho authored
-
- Jan 10, 2025
-
-
Marco Filho authored
For user to be able to visualize what values are converted into parameters.
-
Marco Filho authored
-
- Jan 09, 2025
-
-
Marco Filho authored
Added enable/disable option, which now requires for all records to be instantiated so we can properly communicate. This particular IOC spits some error messages with the current test setup because it only has two hybrids.
-
Marco Filho authored
As noted on st.cmd, instead of naming records <Device>:HybN we will name them <Device><N>:<Property> (So the number is actually part of the device). So records with two digits refer to the whole IOC, records with three digits refer to hybrid-specific parameters and records with four digits refer to VMM3A specific parameters.
-
- Jan 08, 2025
-
-
Marco Filho authored
-
Marco Filho authored
It was looking for parameter VMM_FEN_ACQUIRE but not finding it. Now it can properly read the parameter, although it shouldn't be needed to be read most of the times...
-
- Jan 07, 2025
-
-
Marco Filho authored
All parameters that share the same ADC are now added: Pulser, Threshold, Temperature and Bandgap. All except temperature are showing weird values though, so that needs to be investigated. I suspect something to do with configHybrid or configFE or configVmm, but I am not sure.
-
Marco Filho authored
This reads Temperature from API memory and sets the structure for future parameters such as BandgapADC, etc... The timestamp is also read and put into a PV in order to be explicit for user when was the last time it was read from hardware.
-
Marco Filho authored
-
Marco Filho authored
-
Marco Filho authored
To use the correct term.
-
Marco Filho authored
-
Marco Filho authored
removed proof of concept. Made it work for all VMMs of all hybrids.
-
- Jan 03, 2025
-
-
Marco Filho authored
-
Marco Filho authored
Turns out it wasn't that different from others. All it needs is to change a bo record to ao.
-
Marco Filho authored
This commit was done with an inescrupulous "git add ." after several radical modifications. Anyway, the API was radically modified and basically the old way the code worked does not make any sense anymore. The desired architecture is the following: the API is going to be used as a class component. Each parameter will be created according to the desired number of enabled hybrids. Each parameter should use one simple API function. No information about the VMM or hybrids itself is stored in the VMMTbl class unless extremely needed. This commit leaves a few old parameters that should be removed in the future such as ADC_VALUE_VMM1, READ_ADC_VMMS, etc. This is only to serve as a reminder to add those later.
-
- Jul 29, 2024
-
-
Marco Filho authored
Substitution file is used in module build to set channel names, since that shouldn't change too much with time and particular detector. VMM and Hybrid numbers are left to be changed in the st.cmd file since that can change more often.
-
- Jul 16, 2024
-
-
Marco Filho authored
Now, for VMM, the pattern is: $(R)$(H)$(V)$(C)$(CH) R: Usually "NDet-VMMHYB-00". No colon after. H: Hybrid number in range 0-5 V: VMM chip number in range 0-1 C: Colon Between device name and property Should be ":" but is a macro in case anyone decides that shouldn't be there anymore. CH: Channel/register being set. Can be ST, SL, SC, STH, SM or SMX Also, to make naming more visible and dynamic, stop using substitutions file.
-
- Jul 15, 2024
-
-
Marco Filho authored
Same as previous commits. Basically add a list of EPICS parameters for each SMX channel and register, for each Hybrid-VMMChip pair. List is indexed by Hybrid and VMM number. Records are created with .sub file to avoid useless code repetition.
-
Marco Filho authored
Nothing new, same stuff as the last previous commits.
-
Marco Filho authored
-
Marco Filho authored
This commit makes it possible to change all 64 SL registers for a given Hybrid-VMM pair.
-
Marco Filho authored
This commit organizes all possible register parameter lists in a map. This is so findRegister can search each register map from a single data structure instead of having to hardcode every new register parameter list in the findRegister function. Now, to add a new register, developer should only need to: 1 - Create the register parameter list and add it to the map in vmm_tbl.h:39-41 2 - ... I think that's it(?) Also, asynPrint should tell which hybrid, vmm and register are being affected by the operation now.
-
Marco Filho authored
ST register is not hardcoded into template file anymore. This will make it easier to add new registers, I hope.
-
Marco Filho authored
-
Marco Filho authored
Before this, Any caput to AllST-S record would only set channels values to hybrid 0, vmm 0 because of hardcoded values. This commit makes the vmmST_ an array with epics parameters. The function getPair discovers the HYBRID-VMM pair for the parameter that was called and sets the correct pair register's values. Also, records are loaded with .sub files so we don't need to keep repeating record names with different numbers. All have been tested and works.
-
- Jul 12, 2024
-
-
Marco Filho authored
Before this, you would need to put array of values into ST-S. Now you can simply put 1 or 0 into AllST-S and it will set all channels. OOPT "on change" field is needed because for some reason without it even if you put PINI=NO in all these three ST-S records, it processes on IOC initialization, which I don't think is desired.
-