Release Version 4.0.0
This release makes some major changes, some which impact user interfaces. The key PRs to pay attention to are listed below:
Key Pull Requests
#491 - Add support for Rogue PyDm plugin
#509 - Change default gui to PYDM
#440 - Updated API For DataWriter Device Class
#455 - Add groups field to Nodes
#442 - Add alarm levels to Variables
#452 - Add EPICS 4 (P4P) Support
#190 - Add big-endian and fixed-point Models
#446 - Add process device
#482 - Add data receiver Device
#517 - Add native numpy get and put for Frames
#518 - Add support for multidimensional arrays
#508 - Allow sub-transactions on large blocks
All Pull Requests
- #500 - Replicate Existing GUI Using PYDM
- #519 - Updates to PYDM Interface to make use of PYDM features
- #472 - Make error messages more clear
- #481 - Add SQL Logger
- #440 - Updated API For DataWriter Device Class
- #478 - Reorganize fileio directory and update FileReader
- #507 - Cleanup
- #491 - Add support for Rogue PyDm plugin
- #455 - Add groups field to Nodes
- #513 - Pymd init
- #442 - Add alarm levels to Variables
- #452 - Add EPICS 4 (P4P) Support
- #499 - Add thread names
- #501 - Merge 3.3.7 Changes
- #190 - Add big-endian and fixed-point Models
- #446 - Add process device
- #480 - Improve SystemLog Inteface And Display
- #517 - Add native numpy get and put for Frames
- #470 - Add CPSW Export Utilities
- #518 - Add support for multidimensional arrays
- #497 - Speedup array attribute lookups, revamp attributeHelper and nodeMatch
- #512 - ESROGUE-210 - Add UART Memory Interface
- #504 - Add Process Widget
- #516 - Prep For release.
- #482 - Add data receiver Device
- #508 - Allow sub-transactions on large blocks
- #476 - Add command line entry point
- #484 - Legacy file updates and better checks
- #410 - Check for error when extracting python values
- #458 - Remove PCAS support from MACOS, properly detect existence of PCAS
- #461 - Add VariableWait function to wait for values in one or more variables
- #405 - Allow user to specify typeStr for LocalVariables
- #515 - Update rx device
- #463 - Add simple ZmqClient class
- #520 - Minor Updates to Frame Numpy Interface
- #489 - Allow for read of configuration directory containing multiple files
- #466 - Change names in DataWriter to break interface.
- #475 - Add poll blocking context
- #521 - Update array storage to a dictionary
- #522 - Add expand sub-menus for arrays.
- #511 - Update modules to handle or forward frame errors
- #498 - Add pydm as a dependency. Use conda-forge boost libraries in anaconda.
- #471 - Pure python zmq client
- #474 - Make some functions public so they can be access by users
- #473 - Supress stack trace for memory errors
- #468 - Move address map dump to root
- #464 - Allow process device to be called with an arg
- #469 - Move VirtualClient to interfaces
- #494 - Add root level group lists for streaming and sql logging
- #493 - Add gui run helper; Remove syslog error loops
- #441 - Add variable information dialog box
- #443 - Fix spin box updates
- #450 - Fix pre-release bugs and add more Remote Variable fields
- #451 - Change the way alarms are displayed in the GUI
- #465 - Support zip file archives for libraries and config files
- #502 - Fix mac compile
- #496 - Add yaml save compression
- #467 - Fix race condition in waitFor methods
- #456 - Update anaconda documentation
- #407 - Handle File Write Errors With Log Error Instead Of Exception
- #509 - Change default gui to PYDM
- #447 - Add ability to define command return type
- #459 - Use tidair-packages for epics modules instead of lcls-ii
- #487 - Add wait helper
- #477 - Provide mechanism to lock variable contents
- #485 - Revert stream to use encoded variable value
- #403 - Support 64-bit file sizes
- #437 - Call enable variable update chain directly
- #449 - protocols/batcher/CoreV1.cpp Update
- #514 - Merge in thread names for UDP client and server
- #503 - Add NoServe Group
- #510 - PrbsRx: Check for frame errors and address segfault
- #462 - Remove epics from mac build
- #448 - Batcher bug fixes
- #479 - Pass varValue list to test function
- #505 - Fix corner case where block and device have the same offset
- #492 - Adding twosComplement() function to _Model.py
- #460 - Hidden fix
- #430 - Fix out of bounds error in configuration file
- #488 - Adding checkPayload argument to PrbsRx
- #486 - Avoid sending empty streams
- #495 - Allow user to update a command's function
- #454 - Add deprecation warning to background commands
- #435 - Fix config load issue
- #523 - Fixed typo in _gui.py
- #490 - Exclude hidden in gui by default
- #483 - Increase max byte size for PRBS
- #457 - Update package requirements in documentation
- #453 - Remove debug message
Pull Request Details
Replicate Existing GUI Using PYDM
Author: | Ryan Herbst [email protected] |
Date: | Tue Sep 17 19:58:46 2019 -0700 |
Pull: | #500 (1599 additions, 275 deletions, 25 files changed) |
Branch: | slaclab/pydm_frame |
Notes:
you can now use the pydm gui:
python -m pyrogue pydm
Updates to PYDM Interface to make use of PYDM features
Author: | Ryan Herbst [email protected] |
Date: | Tue Sep 24 11:21:49 2019 -0700 |
Pull: | #519 (767 additions, 338 deletions, 27 files changed) |
Branch: | slaclab/gui_enhance |
Notes:
Make error messages more clear
Author: | Ryan Herbst [email protected] |
Date: | Fri Aug 30 15:23:59 2019 -0700 |
Pull: | #472 (304 additions, 374 deletions, 45 files changed) |
Branch: | slaclab/error_messages |
Notes:
This PR changes many of the error messages in the system in order to make them more clear to the end user.
In order to accomplish this the error transport for memory transactions is now changed. In the new model the error message is generated at the lowest level, allowing more specific details to be communicated.
This will break custom memory hubs written in either C++ or Python as the transaction->done() interface changes. Applications which use a memory bridge should re-deploy both sides of the link.
Add SQL Logger
Author: | Ryan Herbst [email protected] |
Date: | Wed Sep 4 12:59:50 2019 -0700 |
Pull: | #481 (172 additions, 429 deletions, 10 files changed) |
Branch: | slaclab/msql_logging |
Notes:
This adds an optional sql logger to PyRogue. The url of the sql interface is passed to the root.start() method via the sqlUrl parameter.
Variable updates and syslog entries will be added to the database.
I have also removed the obsolete mysql control interface.
Updated API For DataWriter Device Class
Author: | Ryan Herbst [email protected] |
Date: | Wed Aug 7 16:18:51 2019 -0700 |
Pull: | #440 (321 additions, 182 deletions, 9 files changed) |
Branch: | slaclab/ESROGUE-367 |
Jira: | https://jira.slac.stanford.edu/issues/ESROGUE-367 |
Notes:
This PR addresses ESROGUE-367 by changing the API of the DataWriter base class and the C++ modules which are used with it. Instead of having an open/close combo box, the API now uses open and close commands and provides the current status.
I have also moved the DataWriter sub-device into its own file.
Reorganize fileio directory and update FileReader
Author: | Ryan Herbst [email protected] |
Date: | Wed Sep 4 13:00:24 2019 -0700 |
Pull: | #478 (292 additions, 199 deletions, 6 files changed) |
Branch: | slaclab/numpy_reader |
Notes:
This PR breaks the fileio.py file into multiple files under a fileio sub-directory. Existing imports will still work as before.
I also have updated the currently unused FileReader to provide a path lookup mechanism for configuration as well as return the data contents as a numpy array.
Cleanup
Author: | Ryan Herbst [email protected] |
Date: | Thu Sep 19 12:54:58 2019 -0700 |
Pull: | #507 (216 additions, 253 deletions, 17 files changed) |
Branch: | slaclab/cleanup |
Notes:
Add support for Rogue PyDm plugin
Author: | Ryan Herbst [email protected] |
Date: | Wed Sep 11 14:08:13 2019 -0400 |
Pull: | #491 (447 additions, 4 deletions, 16 files changed) |
Branch: | slaclab/pydm |
Notes:
This PR adds the PyDm plugin for Rogue in the pydm sub-directory.
Add groups field to Nodes
Author: | Ryan Herbst [email protected] |
Date: | Fri Aug 30 00:55:51 2019 -0700 |
Pull: | #455 (241 additions, 208 deletions, 21 files changed) |
Branch: | slaclab/group |
Notes:
This groups field replaces the visibility field and changes the implementation of the hidden flag. Each node in the system can be a part of one or more groups, stored as a list of strings. Setting a Node as hidden adds the 'Hidden' string to the groups list. Unhiding a node removes the 'Hidden' string from the groups list.
A device can be added to or removed from a group dynamically. When adding children to a node, the children will inherit the groups that the parent is part of (to be discussed?). Later adding a Node to a group will result in its children also being added to the group(?). Removing a Node from a group does not affect the child group membership. (should be discussed).
The Nodes can later be filtered by the incGroups and excGroups arguments. The Node is selected if it is a member of any of the incGroups and not a member of any of the excGroups.
The group membership can be used to control GUI visibility, inclusion in the epics export and inclusion in the configuration and status storage.
Pymd init
Author: | Ryan Herbst [email protected] |
Date: | Thu Sep 19 23:05:10 2019 -0700 |
Pull: | #513 (251 additions, 190 deletions, 13 files changed) |
Branch: | slaclab/pymd-init |
Notes:
Add alarm levels to Variables
Author: | Ryan Herbst [email protected] |
Date: | Wed Aug 14 10:01:45 2019 -0700 |
Pull: | #442 (355 additions, 69 deletions, 8 files changed) |
Branch: | slaclab/ESROGUE-166 |
Jira: | https://jira.slac.stanford.edu/issues/ESROGUE-166 |
Notes:
This PR adds an alarm state to pyrogue Variables. For each variable you can high and low alarm and warning levels. These levels will then update the alarm state for the variable which is reported by EPICS. The GUI will also indicate the alarm state with a new alarm column which replaces the previous base column.
There are a couple of items to consider. First what alarm status and state values should we define within Rogue?. Right now we have borrowed from epics and indicate the following status values:
None
AlarmLoLo
AlarmHiHi
AlarmLow
AlarmHighwith the corresponding severities:
None
AlarmMinor
AlarmMajorSecondly should we replace the GUI base column with alarm, add a new column, or simply indicate the alarm state by changing the color of the field?
Add EPICS 4 (P4P) Support
Author: | Ryan Herbst [email protected] |
Date: | Thu Aug 22 01:24:19 2019 -0700 |
Pull: | #452 (313 additions, 85 deletions, 14 files changed) |
Branch: | slaclab/ESROGUE-166_pv |
Jira: | https://jira.slac.stanford.edu/issues/ESROGUE-166_pv |
Notes:
This PR adds EPICS 4 (P4P) server support, coexistent with the existing EPICS 3 module.
In order to support this in anaconda, a tidair hosted anaconda package containing the PCAS module was created and the anaconda recipe now pulls the epics package from the lcls-ii build. This changes the anaconda install and update commands to include both tidair-tag/tidair-dev for the pcas module and lcls-ii for the EPICS 7 module. The -ne (no epics) anaconda build is removed as it is no longer required.
The API for epics4 is the same as in epics3 except the syncRead arg is no longer supported:
epics = pyrogue.protocols.epicsV4.EpicsPvServer(base,root,pvMap=None)
The stream to EPICS interface from EPIC3 is not implemented in EPICS4 as this will be replaced with a special stream device in a future version of Rogue, and the existing EPIC3 stream interface will be deprecated.
Add thread names
Author: | Ryan Herbst [email protected] |
Date: | Tue Sep 17 22:18:11 2019 -0700 |
Pull: | #499 (217 additions, 168 deletions, 17 files changed) |
Branch: | slaclab/ESROGUE-391 |
Jira: | https://jira.slac.stanford.edu/issues/ESROGUE-391 |
Notes:
With these changes, I see this output when running top:
Threads: 22 total, 0 running, 22 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.8 us, 4.4 sy, 0.0 ni, 93.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 16038172 total, 11330456 free, 1320016 used, 3387700 buff/cache KiB Swap: 16777212 total, 16777212 free, 0 used. 14370776 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 21671 cryo 20 0 4567564 222848 68692 S 0.0 1.4 0:03.63 python3 21692 cryo 20 0 4567564 222848 68692 S 6.6 1.4 0:02.47 AxiStreamDma 21693 cryo 20 0 4567564 222848 68692 S 6.3 1.4 0:01.88 AxiStreamDma 21694 cryo 20 0 4567564 222848 68692 S 6.6 1.4 0:01.89 AxiStreamDma 21695 cryo 20 0 4567564 222848 68692 S 6.6 1.4 0:01.89 AxiStreamDma 21696 cryo 20 0 4567564 222848 68692 S 6.0 1.4 0:01.88 AxiStreamDma 21697 cryo 20 0 4567564 222848 68692 S 6.3 1.4 0:01.88 AxiStreamDma 21698 cryo 20 0 4567564 222848 68692 S 6.3 1.4 0:01.88 AxiStreamDma 21699 cryo 20 0 4567564 222848 68692 S 6.3 1.4 0:01.84 AxiStreamDma 21700 cryo 20 0 4567564 222848 68692 S 0.0 1.4 0:00.00 ZMQbg/0 21701 cryo 20 0 4567564 222848 68692 S 0.0 1.4 0:00.00 ZMQbg/1 21702 cryo 20 0 4567564 222848 68692 S 4.3 1.4 0:02.43 python3 21703 cryo 20 0 4567564 222848 68692 S 1.3 1.4 0:00.41 python3 21704 cryo 20 0 4567564 222848 68692 S 0.0 1.4 0:00.00 Fifo 21705 cryo 20 0 4567564 222848 68692 S 0.0 1.4 0:00.00 Fifo 21706 cryo 20 0 4567564 222848 68692 S 0.0 1.4 0:00.00 Fifo 21707 cryo 20 0 4567564 222848 68692 S 0.0 1.4 0:00.00 Fifo 21708 cryo 20 0 4567564 222848 68692 S 0.0 1.4 0:00.00 Fifo 21709 cryo 20 0 4567564 222848 68692 S 0.0 1.4 0:00.00 Fifo 21710 cryo 20 0 4567564 222848 68692 S 0.0 1.4 0:00.03 EpicsV3Server 21711 cryo 20 0 4567564 222848 68692 S 0.0 1.4 0:00.00 QXcbEventQueue 21713 cryo 20 0 4567564 222848 68692 S 0.0 1.4 0:00.01 QDBusConnection
Merge 3.3.7 Changes
Author: | Ryan Herbst [email protected] |
Date: | Tue Sep 17 19:59:53 2019 -0700 |
Pull: | #501 (199 additions, 153 deletions, 16 files changed) |
Branch: | slaclab/ESROGUE-391-pr |
Jira: | https://jira.slac.stanford.edu/issues/ESROGUE-391-pr |
Notes:
Add big-endian and fixed-point Models
Author: | Ryan Herbst [email protected] |
Date: | Thu Sep 26 10:49:49 2019 -0700 |
Pull: | #190 (184 additions, 164 deletions, 5 files changed) |
Branch: | slaclab/fixed-point |
Notes:
This is still in development but I'd like some feedback on it.
This PR adds the following new Models:
- UIntBE - Unsigned big-endian integer
- IntBe - Signed big-endian integer
- Float - Existed before but is now explicitly 32-bits
- Double - An 64-bit float (little-endian)
- FloatBE - A big-endian Float
- DoubleBE - a big-endian Double
- Fixed - A fixed point number
Underneath, there is a big change to the way Models work.
Models are now instantiated with a specificbitSize
. Model subclasses can also add other parameters, but bitSize is the one that is always required. This change was made mostly to support the fixed-point Models. These need to know both a bitSize and a pointPosition.There is some special python metaclass magic to make sure that only one instance of each Model is ever instantiated with a given set of parameters. If the code tries to instantiate e.g. UInt(16) twice, the second call with return a reference to the object created by the first call, rather than creating an identical object in memory.
Backward compatibility has been maintained. You can still call:
RemoteVariable(..., base=pr.UInt, bitSize=16, ...)The RemoteVariable constructor will check the
type
ofbase
, and if it is a Model class, it will instantiate that class with thebitSize
. This is how we should continue to use it.It is also now valid to do this:
RemoteVariable(..., base=pr.UInt(16), bitSize=16, ...)Note that the bitSize param to RemoteVariable() is still necessary. The fact that this works is mostly a side effect of the changes required for base=pr.Fixed to work.
Fixed-point numbers look like this:
RemoteVariable(..., base=pr.Fixed(16, 15, signed=True), bitSize=16, ...)It's all still a bit clunky (and totally untested) but we should discuss if this is the path we want to go down.
Add process device
Author: | Ryan Herbst [email protected] |
Date: | Thu Aug 15 11:52:11 2019 -0700 |
Pull: | #446 (210 additions, 90 deletions, 7 files changed) |
Branch: | slaclab/process |
Notes:
This PR creates a base class Process which is a sub-class of device. This Process class is meant to host a long running operation. The base class has a start and stop command as well as a running flag and percent complete status variable. The user can add configuration and output variables as required.
Improve SystemLog Inteface And Display
Author: | Ryan Herbst [email protected] |
Date: | Tue Sep 10 13:16:39 2019 -0400 |
Pull: | #480 (221 additions, 22 deletions, 7 files changed) |
Branch: | slaclab/syslog |
Notes:
With this change the SystemLog variable now contains a json encoded list of dictionaries. Each dictionary entry contains a system entry with fields providing meta data about each system log entry. This allows the GUI client client to display the entries as a simple one line log entry, with the ability to include more data, including a stack trace if desired.
This also adds a syslog command to the pryrogue command line client, allowing for command line monitoring of a Rogue server:
python -m pyrogue syslog --detail
I also added a command line variable monitor option:
pthon -m pyrogue monitor dummyTree.Time
Add native numpy get and put for Frames
Author: | Ryan Herbst [email protected] |
Date: | Sat Sep 21 19:02:11 2019 -0700 |
Pull: | #517 (174 additions, 50 deletions, 9 files changed) |
Branch: | slaclab/jj-dev |
Notes:
Add CPSW Export Utilities
Author: | Ryan Herbst [email protected] |
Date: | Thu Aug 29 09:36:02 2019 -0700 |
Pull: | #470 (198 additions, 0 deletions, 1 files changed) |
Branch: | slaclab/cpsw_exp |
Notes:
Add support for multidimensional arrays
Author: | Ryan Herbst [email protected] |
Date: | Tue Sep 24 11:22:02 2019 -0700 |
Pull: | #518 (125 additions, 72 deletions, 2 files changed) |
Branch: | slaclab/ESROGUE-193 |
Jira: | https://jira.slac.stanford.edu/issues/ESROGUE-193 |
Notes:
This PR adds support for multidimensional arrays for Nodes. Non rectangular and sparse arrays are supported. For example:
for i in range(4): for j in range(4): for j in range(4): self.add(pr.LocalVariable(name = f'TestArray[{i}][{j}][{k}]', value=0)) addVariable(pyrogue.LocalVariable(name='TestArray[4][5]',value=0)) addVariable(pyrogue.LocalVariable(name='TestArray[6]',value=0))
Which generates the following configuration file matching:
In [3]: a.nodeMatch('TestArray[*][*][*]') Out[3]: [dummyTree.AxiVersion.TestArray[0][0][0], dummyTree.AxiVersion.TestArray[0][0][1], dummyTree.AxiVersion.TestArray[0][0][2], dummyTree.AxiVersion.TestArray[0][0][3], .... dummyTree.AxiVersion.TestArray[3][3][2], dummyTree.AxiVersion.TestArray[3][3][3]] In [4]: a.nodeMatch('TestArray[*][*]') Out[4]: [dummyTree.AxiVersion.TestArray[4][5]] In [5]: a.nodeMatch('TestArray[*]') Out[5]: [dummyTree.AxiVersion.TestArray[6]] In [6]: a.nodeMatch('TestArray[*][0][0]') Out[6]: [dummyTree.AxiVersion.TestArray[0][0][0], dummyTree.AxiVersion.TestArray[1][0][0], dummyTree.AxiVersion.TestArray[2][0][0], dummyTree.AxiVersion.TestArray[3][0][0]] In [7]: a.nodeMatch('TestArray[*][0][*]') Out[7]: [dummyTree.AxiVersion.TestArray[0][0][0], dummyTree.AxiVersion.TestArray[0][0][1], dummyTree.AxiVersion.TestArray[0][0][2], dummyTree.AxiVersion.TestArray[0][0][3], dummyTree.AxiVersion.TestArray[1][0][0], dummyTree.AxiVersion.TestArray[1][0][1], dummyTree.AxiVersion.TestArray[1][0][2], dummyTree.AxiVersion.TestArray[1][0][3], dummyTree.AxiVersion.TestArray[2][0][0], dummyTree.AxiVersion.TestArray[2][0][1], dummyTree.AxiVersion.TestArray[2][0][2], dummyTree.AxiVersion.TestArray[2][0][3], dummyTree.AxiVersion.TestArray[3][0][0], dummyTree.AxiVersion.TestArray[3][0][1], dummyTree.AxiVersion.TestArray[3][0][2], dummyTree.AxiVersion.TestArray[3][0][3]]
Speedup array attribute lookups, revamp attributeHelper and nodeMatch
Author: | Ryan Herbst [email protected] |
Date: | Fri Sep 20 15:15:18 2019 -0700 |
Pull: | #497 (110 additions, 85 deletions, 4 files changed) |
Branch: | slaclab/array_lookup |
Notes:
This PR combine the previous attributeHelper and nodeMatch functions into a single class object method _nodeMatch to return nodes and node lists on lookups. At creation node arrays are stored in a new variable _anodes to speed up array element lookups.
This PR also fixes a previous error that allowed a sub-node with the same base name as an array to be added to a node.
Node.node(key) can now process complex lookups such as Node.node('TestArray[4:6]')
ESROGUE-210 - Add UART Memory Interface
Author: | Ryan Herbst [email protected] |
Date: | Fri Sep 20 10:31:48 2019 -0700 |
Pull: | #512 (138 additions, 0 deletions, 6 files changed) |
Branch: | slaclab/ESROGUE-210 |
Jira: | https://jira.slac.stanford.edu/issues/ESROGUE-210 |
Notes:
Provides software interface to https://github.com/slaclab/surf/blob/master/protocols/uart/rtl/UartAxiLiteMaster.vhd
Implementation of this JIRA Ticket: https://jira.slac.stanford.edu/browse/ESROGUE-210
Add Process Widget
Author: | Ryan Herbst [email protected] |
Date: | Tue Sep 17 23:30:15 2019 -0700 |
Pull: | #504 (135 additions, 3 deletions, 6 files changed) |
Branch: | slaclab/process_widget |
Notes:
Prep For release.
Author: | Ryan Herbst [email protected] |
Date: | Fri Sep 20 14:49:30 2019 -0700 |
Pull: | #516 (52 additions, 76 deletions, 12 files changed) |
Branch: | slaclab/rel_prep |
Notes:
Add data receiver Device
Author: | Ryan Herbst [email protected] |
Date: | Mon Sep 9 21:47:52 2019 -0400 |
Pull: | #482 (101 additions, 2 deletions, 2 files changed) |
Branch: | slaclab/data_device |
Notes:
This adds a data receiver Device which contains variables indication rx count, bytes etc. It also includes a method for users to override to re-organize the stored numpy array to match the data structure.
Allow sub-transactions on large blocks
Author: | Ryan Herbst [email protected] |
Date: | Fri Sep 20 23:19:44 2019 -0700 |
Pull: | #508 (64 additions, 35 deletions, 2 files changed) |
Branch: | slaclab/sub_block |
Notes:
This PR allows the user to setup a device with a large block size, allowing both large bulk memory transactions and individual sub-block transactions.
Calling writeBlocks, readBlocks, verifyBlocks without a variable list will generate a burst transaction on the entire block. Calling the above functions with a variable list will only access the range of the block overlapped by the passed variables. Single get() and set() transactions will only generate transactions on the range of the block covered by the accessed variable.
Add command line entry point
Author: | Ryan Herbst [email protected] |
Date: | Tue Sep 3 09:40:46 2019 -0700 |
Pull: | #476 (91 additions, 2 deletions, 3 files changed) |
Branch: | slaclab/cmd_line |
Notes:
This allows a pyrogue server to be accessed from the command line:
python -m pyrogue gui
python -m pyrogue get dummyTree.AxiVersion.ScratchPad
python -m pyrogue set dummyTree.AxiVersion.ScratchPad 1
python -m pyrogue value dummyTree.AxiVersion.ScratchPad
python -m pyrogue exec dummyTree.LoadConfig config.yml
Legacy file updates and better checks
Author: | Ryan Herbst [email protected] |
Date: | Sun Sep 8 12:35:52 2019 -0700 |
Pull: | #484 (87 additions, 4 deletions, 3 files changed) |
Branch: | slaclab/legacy_test |
Notes:
Check for error when extracting python values
Author: | Ryan Herbst [email protected] |
Date: | Sun Jun 9 09:15:26 2019 -0700 |
Pull: | #410 (60 additions, 30 deletions, 2 files changed) |
Branch: | slaclab/file_overflow |
Notes:
Remove PCAS support from MACOS, properly detect existence of PCAS
Author: | Ryan Herbst [email protected] |
Date: | Thu Aug 22 19:44:55 2019 -0700 |
Pull: | #458 (34 additions, 55 deletions, 3 files changed) |
Branch: | slaclab/mac_no_e7 |
Notes:
This PR changes the CMakelists file to properly detect situations where epics-base is installed without pcas. It also removes pcas support from MACOS Anaconda builds.
Add VariableWait function to wait for values in one or more variables
Author: | Ryan Herbst [email protected] |
Date: | Thu Aug 29 23:12:27 2019 -0700 |
Pull: | #461 (82 additions, 4 deletions, 2 files changed) |
Branch: | slaclab/virt_new |
Notes:
This adds a VariableWait function which can be used to wait for one or more variables to pass a condition test.
Example Usage:
pyrogue.VariableWait([client.dummyTree.AxiVersion.ScratchPad],lambda varValues: varValues['dummyTree.AxiVersion.Scratchpad'].value > 10)This PR also adds a hook into the Virtual client to be able to access the root device immediately by name:
client = pyrogue.VirtualClient()
client.dummyTree.AxiVersion.ScratchPad.get()
Allow user to specify typeStr for LocalVariables
Author: | Ryan Herbst [email protected] |
Date: | Fri Jun 7 23:25:14 2019 -0700 |
Pull: | #405 (65 additions, 20 deletions, 4 files changed) |
Branch: | slaclab/user_type |
Notes:
This is required to properly map variable type to external clients.
Update rx device
Author: | Ryan Herbst [email protected] |
Date: | Fri Sep 20 13:57:45 2019 -0700 |
Pull: | #515 (50 additions, 34 deletions, 1 files changed) |
Branch: | slaclab/rx_dev |
Notes:
Add simple ZmqClient class
Author: | Ryan Herbst [email protected] |
Date: | Thu Aug 29 14:08:48 2019 -0700 |
Pull: | #463 (82 additions, 2 deletions, 3 files changed) |
Branch: | slaclab/new_client |
Notes:
This adds a thin lightweight, fast to load, SimpleClient. The interface on this client is limited to the following commands:
client.get("path.to.variable")
client.getDisp("path.to.variable")
client.value("path.to.variable")
client.valueDisp("path.to.variable")
client.set("path.to.variable",value)
client.setDisp("path.to.variable",value)
client.exec("path.to.command",arg)This PR also deprecates the zmqPort= arg for root.Start() and adds serverPort to make sure the interface is protocol agnostic for the future.
Minor Updates to Frame Numpy Interface
Author: | Ryan Herbst [email protected] |
Date: | Tue Sep 24 11:26:44 2019 -0700 |
Pull: | #520 (62 additions, 21 deletions, 4 files changed) |
Branch: | slaclab/jj-dev |
Notes:
Allow for read of configuration directory containing multiple files
Author: | Ryan Herbst [email protected] |
Date: | Tue Sep 10 17:48:03 2019 -0400 |
Pull: | #489 (62 additions, 17 deletions, 2 files changed) |
Branch: | slaclab/dir_read |
Notes:
This PR allows the loading of multiple configuration files when a directory is passed as an arg to LoadConfig.
Any .yml or .yaml files in the passed directory will be loaded in sorted order. Each file is parsed and applied to the management tree individually with the write() call generated after all configuration files have been loaded.
This PR also allows the root node to be aliased with the name 'root'.
Change names in DataWriter to break interface.
Author: | Ryan Herbst [email protected] |
Date: | Tue Aug 27 14:13:56 2019 -0700 |
Pull: | #466 (39 additions, 39 deletions, 3 files changed) |
Branch: | slaclab/break_data |
Notes:
PR #440 changed the API for opening files with the DataWriter, but did so in a way that caused the old way to silently fail.
This PR fixes the silent fail by explicitly breaking everything, including the #440 API. It does this by changing all
Variable
andCommand
names to use UpperCase, which is the correct Rogue naming convention anyway.
Add poll blocking context
Author: | Ryan Herbst [email protected] |
Date: | Wed Sep 4 13:13:29 2019 -0700 |
Pull: | #475 (49 additions, 22 deletions, 2 files changed) |
Branch: | slaclab/poll_lock |
Notes:
This PR adds a poller blocking context to temporarily pause polling while the context is active:
with root.pollBlock():
--- do some stuff
Update array storage to a dictionary
Author: | Ryan Herbst [email protected] |
Date: | Thu Sep 26 08:38:11 2019 -0700 |
Pull: | #521 (38 additions, 32 deletions, 2 files changed) |
Branch: | slaclab/node_dict |
Notes:
Array variables are now stored as a dictionary, which is returned when the user accesses the variable via direction lookup, allowing the following calls:
for v in dummyTree.AxiVersion.TestArray.values(): v.setDisp('0') or for k,v in dummyTree.AxiVersion.TestArray.values(): print(f"Item {k} = {v}")
nodeMatch will still return the matched nodes as an array. A list generation performance penalty is created when slicing arrays in a configuration file.
Add expand sub-menus for arrays.
Author: | Ryan Herbst [email protected] |
Date: | Wed Sep 25 01:04:43 2019 -0700 |
Pull: | #522 (59 additions, 7 deletions, 2 files changed) |
Branch: | slaclab/gui_enhance |
Notes:
Update modules to handle or forward frame errors
Author: | Ryan Herbst [email protected] |
Date: | Thu Sep 19 17:08:31 2019 -0700 |
Pull: | #511 (57 additions, 2 deletions, 12 files changed) |
Branch: | slaclab/ESROGUE-396 |
Jira: | https://jira.slac.stanford.edu/issues/ESROGUE-396 |
Notes:
Add pydm as a dependency. Use conda-forge boost libraries in anaconda.
Author: | Ryan Herbst [email protected] |
Date: | Sat Sep 14 02:25:25 2019 -0400 |
Pull: | #498 (41 additions, 18 deletions, 15 files changed) |
Branch: | slaclab/pydm_update |
Notes:
Pure python zmq client
Author: | Ryan Herbst [email protected] |
Date: | Thu Aug 29 22:49:29 2019 -0700 |
Pull: | #471 (29 additions, 28 deletions, 1 files changed) |
Branch: | slaclab/thinner |
Notes:
Make some functions public so they can be access by users
Author: | Ryan Herbst [email protected] |
Date: | Tue Sep 10 10:49:30 2019 -0400 |
Pull: | #474 (40 additions, 16 deletions, 2 files changed) |
Branch: | slaclab/public_helper |
Notes:
This moves some root methods from private to public so that users are able to create their own versions of LoadConfig and SaveConfig which may make use of the new groups feature.
i.e. SaveThresholds....
Supress stack trace for memory errors
Author: | Ryan Herbst [email protected] |
Date: | Fri Aug 30 15:04:09 2019 -0700 |
Pull: | #473 (35 additions, 20 deletions, 8 files changed) |
Branch: | slaclab/stack_trace |
Notes:
This PR adds a new wrapper function used when logging exceptions. If the exception is a MemoryError then the stack trace printout will be suppressed. This avoids user confusion when Rogue generates memory errors which are a standard run time error.
Move address map dump to root
Author: | Ryan Herbst [email protected] |
Date: | Tue Aug 27 21:13:22 2019 -0700 |
Pull: | #468 (29 additions, 26 deletions, 1 files changed) |
Branch: | slaclab/amap_dump |
Notes:
Allow process device to be called with an arg
Author: | Ryan Herbst [email protected] |
Date: | Thu Aug 29 23:18:14 2019 -0700 |
Pull: | #464 (40 additions, 14 deletions, 6 files changed) |
Branch: | slaclab/process_call |
Notes:
This adds the call() and call methods to the Process device to allow it to be treated as a command. The creator now includes the argVariable arg which indicates which sub-variable to update with the value passed in the call. This could be used to replace the "LoadConfig" Command with a Process.
LoadConfig(argVariable='FileName')
LoadConfig.Start.call("config.yaml")
LoadConfig.Start("config.yaml")
LoadConfig.call("config.yaml")
LoadConfig("config.yaml")all can be used to start the process.
Move VirtualClient to interfaces
Author: | Ryan Herbst [email protected] |
Date: | Fri Aug 30 01:26:11 2019 -0700 |
Pull: | #469 (26 additions, 24 deletions, 8 files changed) |
Branch: | slaclab/virt_move |
Notes:
This moves the VirtualClient class from pyrogue.VirtualClient to pyrogue.interfaces.VirtualClient to be consistent with other itnterfaces.
Add root level group lists for streaming and sql logging
Author: | Ryan Herbst [email protected] |
Date: | Thu Sep 12 18:19:56 2019 -0400 |
Pull: | #494 (35 additions, 14 deletions, 2 files changed) |
Branch: | slaclab/group_settings |
Notes:
This adds root level settings for streaming and log generation.
Add gui run helper; Remove syslog error loops
Author: | Ryan Herbst [email protected] |
Date: | Thu Sep 12 15:43:39 2019 -0400 |
Pull: | #493 (35 additions, 14 deletions, 4 files changed) |
Branch: | slaclab/syslog_loop |
Notes:
This adds a helper function for starting a gui:
pyrogue.gui.runGui(root)It also removes error handling loops when an exception occurs while adding a systemlog entry.
Add variable information dialog box
Author: | Ryan Herbst [email protected] |
Date: | Tue Aug 6 09:37:45 2019 -0700 |
Pull: | #441 (41 additions, 1 deletions, 2 files changed) |
Branch: | slaclab/var_info |
Notes:
This add a popup window to the right click menu for variables. The popup window will display all of the attributes for a variable.
Fix spin box updates
Author: | Ryan Herbst [email protected] |
Date: | Wed Aug 7 16:19:37 2019 -0700 |
Pull: | #443 (21 additions, 18 deletions, 1 files changed) |
Branch: | slaclab/sbox |
Notes:
Fixes the spin box updates with the new VariableValue passing.
Fix pre-release bugs and add more Remote Variable fields
Author: | Ryan Herbst [email protected] |
Date: | Wed Aug 14 16:23:32 2019 -0700 |
Pull: | #450 (21 additions, 17 deletions, 4 files changed) |
Branch: | slaclab/bug_fix |
Notes:
Change the way alarms are displayed in the GUI
Author: | Ryan Herbst [email protected] |
Date: | Tue Aug 20 23:55:42 2019 -0700 |
Pull: | #451 (27 additions, 6 deletions, 2 files changed) |
Branch: | slaclab/alarm-dev |
Notes:
Alarm column now doesn't show anything at all unless a variable has an alarm value set.
Also shows green "Good" status in GUI if value is inside of alarm thresholds.
Support zip file archives for libraries and config files
Author: | Ryan Herbst [email protected] |
Date: | Thu Aug 29 14:07:52 2019 -0700 |
Pull: | #465 (24 additions, 7 deletions, 2 files changed) |
Branch: | slaclab/zip_files |
Notes:
This adds support for adding library paths in zip files with the following command:
pyrogue.addLibraryPath('/my/path/to/archive.zip/python/')
It also allows config files to be loaded from similar archives:
root.LoadConfig('/my/path/to/archive.zip/config/defaults.yml')
Fix mac compile
Author: | Ryan Herbst [email protected] |
Date: | Tue Sep 17 20:51:52 2019 -0700 |
Pull: | #502 (28 additions, 0 deletions, 14 files changed) |
Branch: | slaclab/mac_threads |
Notes:
Add yaml save compression
Author: | Ryan Herbst [email protected] |
Date: | Thu Sep 12 17:46:04 2019 -0400 |
Pull: | #496 (18 additions, 7 deletions, 2 files changed) |
Branch: | slaclab/compress_files |
Notes:
Fix race condition in waitFor methods
Author: | Ryan Herbst [email protected] |
Date: | Thu Aug 29 23:16:30 2019 -0700 |
Pull: | #467 (18 additions, 7 deletions, 3 files changed) |
Branch: | slaclab/frame_wait |
Notes:
Update anaconda documentation
Author: | Ryan Herbst [email protected] |
Date: | Fri Aug 23 15:20:12 2019 -0700 |
Pull: | #456 (14 additions, 11 deletions, 2 files changed) |
Branch: | slaclab/ESROGUE-366 |
Jira: | https://jira.slac.stanford.edu/issues/ESROGUE-366 |
Notes:
Handle File Write Errors With Log Error Instead Of Exception
Author: | Ryan Herbst [email protected] |
Date: | Fri Jun 7 23:24:55 2019 -0700 |
Pull: | #407 (20 additions, 4 deletions, 2 files changed) |
Branch: | slaclab/file_error |
Notes:
Do not allow write errors to crash the application.
Change default gui to PYDM
Author: | Ryan Herbst [email protected] |
Date: | Thu Sep 19 13:21:11 2019 -0700 |
Pull: | #509 (6 additions, 16 deletions, 3 files changed) |
Branch: | slaclab/newgui |
Notes:
Add ability to define command return type
Author: | Ryan Herbst [email protected] |
Date: | Wed Aug 14 16:43:42 2019 -0700 |
Pull: | #447 (19 additions, 2 deletions, 2 files changed) |
Branch: | slaclab/cmd_ret_type |
Notes:
This adds a retType= arg to command creation in order to identify the return type value for commands which return values. This adds the accompanying property to the command:
self.retTypeStr
which returns None for commands that do no return a value.
Use tidair-packages for epics modules instead of lcls-ii
Author: | Ryan Herbst [email protected] |
Date: | Fri Aug 23 15:17:04 2019 -0700 |
Pull: | #459 (9 additions, 11 deletions, 6 files changed) |
Branch: | slaclab/conda2 |
Notes:
Add wait helper
Author: | Ryan Herbst [email protected] |
Date: | Sun Sep 8 12:34:08 2019 -0700 |
Pull: | #487 (11 additions, 7 deletions, 2 files changed) |
Branch: | slaclab/wait_helper |
Notes:
Provide mechanism to lock variable contents
Author: | Ryan Herbst [email protected] |
Date: | Tue Sep 3 09:41:02 2019 -0700 |
Pull: | #477 (16 additions, 2 deletions, 3 files changed) |
Branch: | slaclab/var_lock |
Notes:
This is useful when modifying a list or other complex data stored in a local variable.
with self.MyVariable.lock:
lst = self.MyVariable.get()
lst[100] = 10
self.MyVariable.set(lst)
Revert stream to use encoded variable value
Author: | Ryan Herbst [email protected] |
Date: | Fri Sep 6 14:42:12 2019 -0700 |
Pull: | #485 (7 additions, 9 deletions, 1 files changed) |
Branch: | slaclab/small_stream |
Notes:
Support 64-bit file sizes
Author: | Ryan Herbst [email protected] |
Date: | Fri Jun 7 23:25:44 2019 -0700 |
Pull: | #403 (8 additions, 8 deletions, 2 files changed) |
Branch: | slaclab/file_64-bit |
Notes:
Call enable variable update chain directly
Author: | Ryan Herbst [email protected] |
Date: | Fri Sep 20 23:20:26 2019 -0700 |
Pull: | #437 (8 additions, 6 deletions, 2 files changed) |
Branch: | slaclab/enable_update |
Notes:
This will cause the update chain for the Enable variable to be caused directly in response to set() instead of being pushed to the update queue.
protocols/batcher/CoreV1.cpp Update
Author: | Ryan Herbst [email protected] |
Date: | Wed Aug 14 09:28:05 2019 -0700 |
Pull: | #449 (8 additions, 6 deletions, 1 files changed) |
Branch: | slaclab/batcher-update |
Notes:
Description
- Added 256-bit and 512 bit support
- Added URL to Batcher documentation
Merge in thread names for UDP client and server
Author: | Ryan Herbst [email protected] |
Date: | Fri Sep 20 10:31:25 2019 -0700 |
Pull: | #514 (11 additions, 1 deletions, 2 files changed) |
Branch: | slaclab/ESROGUE-391-pre |
Jira: | https://jira.slac.stanford.edu/issues/ESROGUE-391-pre |
Notes:
Add NoServe Group
Author: | Ryan Herbst [email protected] |
Date: | Tue Sep 17 21:59:33 2019 -0700 |
Pull: | #503 (9 additions, 3 deletions, 3 files changed) |
Branch: | slaclab/no_update |
Notes:
PrbsRx: Check for frame errors and address segfault
Author: | Ryan Herbst [email protected] |
Date: | Thu Sep 19 14:22:30 2019 -0700 |
Pull: | #510 (9 additions, 2 deletions, 1 files changed) |
Branch: | slaclab/ESROGUE-393_ESROGUE-392 |
Jira: | https://jira.slac.stanford.edu/issues/ESROGUE-393_ESROGUE-392 |
Notes:
Remove epics from mac build
Author: | Ryan Herbst [email protected] |
Date: | Sat Aug 24 09:12:13 2019 -0700 |
Pull: | #462 (4 additions, 7 deletions, 2 files changed) |
Branch: | slaclab/mac_epics |
Notes:
Batcher bug fixes
Author: | Ryan Herbst [email protected] |
Date: | Tue Aug 13 16:39:42 2019 -0700 |
Pull: | #448 (8 additions, 2 deletions, 2 files changed) |
Branch: | slaclab/tacs-dev |
Notes:
Header size was being calculated incorrectly in the 64-bit width case.
copyFrame()
was being called with source and dest params switched.(Don't delete this branch after merging.)
Pass varValue list to test function
Author: | Ryan Herbst [email protected] |
Date: | Wed Sep 4 13:00:05 2019 -0700 |
Pull: | #479 (5 additions, 4 deletions, 1 files changed) |
Branch: | slaclab/wait_list |
Notes:
Example Usage:
pyrogue.VariableWait([client.dummyTree.AxiVersion.ScratchPad,client.dummyTree.AxiVersion.AlarmTest], lambda vv: vv[0].value > 10 and vv[1].value > 110)
Fix corner case where block and device have the same offset
Author: | Ryan Herbst [email protected] |
Date: | Wed Sep 18 16:14:24 2019 -0700 |
Pull: | #505 (5 additions, 2 deletions, 1 files changed) |
Branch: | slaclab/ESROGUE-394 |
Jira: | https://jira.slac.stanford.edu/issues/ESROGUE-394 |
Notes:
Adding twosComplement() function to _Model.py
Author: | Larry Ruckman [email protected] |
Date: | Wed Sep 11 17:20:51 2019 -0700 |
Pull: | #492 (6 additions, 0 deletions, 1 files changed) |
Branch: | slaclab/twosComplement |
Notes:
Description
- Adding twosComplement() function to _Model.py
Hidden fix
Author: | Ryan Herbst [email protected] |
Date: | Fri Aug 23 17:28:39 2019 -0700 |
Pull: | #460 (1 additions, 4 deletions, 2 files changed) |
Branch: | slaclab/hidden_fix |
Notes:
Fix out of bounds error in configuration file
Author: | Jesus Vasquez [email protected] |
Date: | Wed Jul 24 10:08:58 2019 -0700 |
Pull: | #430 (4 additions, 1 deletions, 1 files changed) |
Branch: | slaclab/ESCRYODET-210 |
Jira: | https://jira.slac.stanford.edu/issues/ESCRYODET-210 |
Notes:
Adding checkPayload argument to PrbsRx
Author: | Ryan Herbst [email protected] |
Date: | Mon Sep 9 13:14:55 2019 -0700 |
Pull: | #488 (2 additions, 2 deletions, 1 files changed) |
Branch: | slaclab/PrbsRx-checkPayload |
Notes:
Description
- Adding checkPayload argument to PrbsRx
Avoid sending empty streams
Author: | Ryan Herbst [email protected] |
Date: | Fri Sep 6 14:43:21 2019 -0700 |
Pull: | #486 (3 additions, 1 deletions, 1 files changed) |
Branch: | slaclab/no_empty_stream |
Notes:
Allow user to update a command's function
Author: | Ryan Herbst [email protected] |
Date: | Thu Sep 12 18:18:51 2019 -0400 |
Pull: | #495 (3 additions, 0 deletions, 1 files changed) |
Branch: | slaclab/update_command |
Notes:
This can be used to update the default settings for built in commands. As an example:
root.SaveConfig.replaceFunction(lambda arg: self.saveYaml(name=arg, readFirst=False, modes=['RW','WO'], incGroups='MyConfigGroup', excGroups='NoConfig', autoPrefix='config')
Add deprecation warning to background commands
Author: | Ryan Herbst [email protected] |
Date: | Thu Aug 29 14:08:20 2019 -0700 |
Pull: | #454 (3 additions, 0 deletions, 1 files changed) |
Branch: | slaclab/deprecate |
Notes:
Fix config load issue
Author: | Ryan Herbst [email protected] |
Date: | Thu Aug 1 16:53:35 2019 -0700 |
Pull: | #435 (2 additions, 1 deletions, 2 files changed) |
Branch: | slaclab/cfg_load_smurf |
Notes:
This fixes an issue where a memory block bit is first set to 1 using a configuration file wildcard and then later set to zero. The current code would not clear the bit.
Fixed typo in _gui.py
Author: | Ryan Herbst [email protected] |
Date: | Wed Sep 25 17:22:54 2019 -0700 |
Pull: | #523 (1 additions, 1 deletions, 1 files changed) |
Branch: | slaclab/gui-typo-fix |
Notes:
Description
- Fixed typo in _gui.py
Exclude hidden in gui by default
Author: | Ryan Herbst [email protected] |
Date: | Tue Sep 10 14:46:18 2019 -0400 |
Pull: | #490 (1 additions, 1 deletions, 1 files changed) |
Branch: | slaclab/hidden_fix2 |
Notes:
Increase max byte size for PRBS
Author: | Ryan Herbst [email protected] |
Date: | Thu Sep 5 20:28:17 2019 -0700 |
Pull: | #483 (1 additions, 1 deletions, 1 files changed) |
Branch: | slaclab/ESROGUE-390 |
Jira: | https://jira.slac.stanford.edu/issues/ESROGUE-390 |
Notes:
Update package requirements in documentation
Author: | Ryan Herbst [email protected] |
Date: | Fri Aug 23 15:17:31 2019 -0700 |
Pull: | #457 (1 additions, 1 deletions, 1 files changed) |
Branch: | slaclab/ESROGUE-441 |
Jira: | https://jira.slac.stanford.edu/issues/ESROGUE-441 |
Notes:
Remove debug message
Author: | Ryan Herbst [email protected] |
Date: | Wed Aug 21 09:32:49 2019 -0700 |
Pull: | #453 (0 additions, 2 deletions, 1 files changed) |
Branch: | slaclab/bug_fixes |
Notes: