Skip to content

v4.3.0

Compare
Choose a tag to compare
@github-actions github-actions released this 19 Mar 18:29
· 490 commits to main since this release
358a65a

Pull Requests Since v4.2.1

Client

Bug

  1. #595 - Bug in emulator period data type handling
  2. #599 - Update set_default_pv to handle the new RuntimeError exception
  3. #613 - Change units in read_stream_data

Enhancement

  1. #617 - Update tracking_setup, add feedback_gain and documentation
  2. #587 - Issue586 - Changing name of NEI_to_NEP to get_NEI_to_NEP_factor
  3. #590 - Adding retry attempt to caget
  4. #607 - Fixes #605.

Core

Interface-change

  1. #553 - Add external trigger (from timing system) to the downsampler
  2. #593 - Smurf Server Publisher modifications

Bug

  1. #615 - Update smurf-rogue base image to version R2.8.3

Enhancement

  1. #553 - Add external trigger (from timing system) to the downsampler
  2. #593 - Smurf Server Publisher modifications

Unlabeled

  1. #597 - Updating smurf_cmd.py
  2. #602 - Adding function for finding probe tone gap

Pull Request Details

Update tracking_setup, add feedback_gain and documentation

Author: Edward [email protected]
Date: Tue Mar 2 18:09:31 2021 -0800
Pull: #617 (49 additions, 4 deletions, 1 files changed)
Branch: slaclab/feedback-doc
Issues: #592
Labels: client, enhancement

Notes:

Issue

This PR resolves #592.

Description

Adds doc strings for LMS gain. Also introduces feedback_gain parameter to tracking

Does this PR break any interface?

  • Yes
  • No

Which interface changed?

[Indicate here what is the interface that changed, preferable with a link to the code where the interface is defined]

What was the interface before the change

[Describe here how was the original interface]

What will be the new interface after the change

[Describe here how is the new interface, and what the difference with the original interface]


Update smurf-rogue base image to version R2.8.3

Author: Jesus Vasquez [email protected]
Date: Fri Feb 26 19:38:51 2021 -0800
Pull: #615 (1 additions, 1 deletions, 1 files changed)
Branch: slaclab/ESCRYODET-728
Jira: https://jira.slac.stanford.edu/issues/ESCRYODET-728
Labels: bug, core

Notes:

Issue

This PR resolves ESCRYODET-728.

Description

This PR updates Rogue to version v4.11.7. This version of Rogue contains a fix for the unbound memory usage increase described in ESCRYODET-728.

Does this PR break any interface?

  • Yes
  • No

Change units in read_stream_data

Author: Edward [email protected]
Date: Fri Feb 26 13:31:01 2021 -0800
Pull: #613 (1 additions, 1 deletions, 1 files changed)
Branch: slaclab/issue612
Issues: #612
Labels: bug, client

Notes:

Issue

This PR resolves #612

Description

Corrects doc-string for read_stream_data.

Does this PR break any interface?

  • Yes
  • No

Fixes #605.

Author: Edward [email protected]
Date: Wed Feb 17 14:44:02 2021 -0800
Pull: #607 (6 additions, 2 deletions, 1 files changed)
Branch: slaclab/issue605
Labels: client, enhancement

Notes:

Issue

This PR resolves #605

Description

Adds an output directory keyword (output_dir) to the analyze_iv_from_file so we can dump the analysis results to another location.

Does this PR break any interface?

  • Yes
  • No

Which interface changed?

Extra keyword in analyze_iv_from_file

What was the interface before the change

IV analysis outputs could only be saved in the folder structure on the smurf server. Would throw errors if the files had been moved.

What will be the new interface after the change

Extra keyword in analyze_iv_from_file means you can tell it where to save the results.


Smurf Server Publisher modifications

Author: Edward [email protected]
Date: Tue Feb 16 16:16:38 2021 -0800
Pull: #593 (36 additions, 4 deletions, 1 files changed)
Branch: slaclab/issue588
Issues: #588
Labels: core, enhancement, interface-change

Notes:

Issue

This PR resolves #588.

Description

This PR adds the following changes to the Publisher class as requested in #588:

  • Metadata publishes will now have msgtype set to metadata, instead of general,
  • When publishing metadata, the content of the data field will now be key, value pairs, in JSON format, containing the Rogue register path (path), the register value (value), and the value type (type).

I tested this changes, with the default variable group, and modifying the _backend_null method to print the received messages, and obtained this:

{"host": "smurf-srv06", "id": "undeclared", "script": "PySmurf_Server", "time": 1611797885.3430576, "seq_no": 1565, "type": "metadata", "payload": {"path": "AMCc.SmurfProcessor.ChannelMapper.NumChannels", "value": 1, "type": "int"}}
{"host": "smurf-srv06", "id": "undeclared", "script": "PySmurf_Server", "time": 1611797885.3466105, "seq_no": 1566, "type": "metadata", "payload": {"path": "AMCc.SmurfProcessor.FrameRxStats.FrameLossCnt", "value": 123, "type": "int"}}
{"host": "smurf-srv06", "id": "undeclared", "script": "PySmurf_Server", "time": 1611797885.3493185, "seq_no": 1567, "type": "metadata", "payload": {"path": "AMCc.SmurfProcessor.PreDataEmulator.Amplitude", "value": 65535, "type": "int"}}
{"host": "smurf-srv06", "id": "undeclared", "script": "PySmurf_Server", "time": 1611797885.3505917, "seq_no": 1568, "type": "metadata", "payload": {"path": "AMCc.SmurfProcessor.FileWriter.TotalSize", "value": 0, "type": "int"}}
{"host": "smurf-srv06", "id": "undeclared", "script": "PySmurf_Server", "time": 1611797885.3531475, "seq_no": 1569, "type": "metadata", "payload": {"path": "AMCc.SmurfProcessor.PostDataEmulator.Amplitude", "value": 4294967295, "type": "int"}}
{"host": "smurf-srv06", "id": "undeclared", "script": "PySmurf_Server", "time": 1611797885.355861, "seq_no": 1570, "type": "metadata", "payload": {"path": "AMCc.SmurfProcessor.FileWriter.CurrentSize", "value": 0, "type": "int"}}
{"host": "smurf-srv06", "id": "undeclared", "script": "PySmurf_Server", "time": 1611797885.3562307, "seq_no": 1571, "type": "metadata", "payload": {"path": "AMCc.SmurfProcessor.FrameRxStats.FrameSize", "value": 8320, "type": "int"}}
{"host": "smurf-srv06", "id": "undeclared", "script": "PySmurf_Server", "time": 1611797885.3567724, "seq_no": 1572, "type": "metadata", "payload": {"path": "AMCc.SmurfProcessor.PostDataEmulator.Offset", "value": 0, "type": "int"}}
{"host": "smurf-srv06", "id": "undeclared", "script": "PySmurf_Server", "time": 1611797885.3584292, "seq_no": 1573, "type": "metadata", "payload": {"path": "AMCc.SmurfProcessor.FileWriter.FrameCount", "value": 0, "type": "int"}}
{"host": "smurf-srv06", "id": "undeclared", "script": "PySmurf_Server", "time": 1611797885.3591156, "seq_no": 1574, "type": "metadata", "payload": {"path": "AMCc.SmurfProcessor.FrameRxStats.BadFrameCnt", "value": 0, "type": "int"}}
{"host": "smurf-srv06", "id": "undeclared", "script": "PySmurf_Server", "time": 1611797885.359428, "seq_no": 1575, "type": "metadata", "payload": {"path": "AMCc.SmurfProcessor.PreDataEmulator.Offset", "value": 0, "type": "int"}}
{"host": "smurf-srv06", "id": "undeclared", "script": "PySmurf_Server", "time": 1611797885.3594973, "seq_no": 1576, "type": "metadata", "payload": {"path": "AMCc.SmurfProcessor.FrameRxStats.FrameCnt", "value": 791596, "type": "int"}}
{"host": "smurf-srv06", "id": "undeclared", "script": "PySmurf_Server", "time": 1611797885.36481, "seq_no": 1577, "type": "metadata", "payload": {"path": "AMCc.SmurfProcessor.FrameRxStats.FrameOutOrderCnt", "value": 0, "type": "int"}}

I added a numpy array variable (np.zeros(5)) for testing and got this message:

{"host": "smurf-srv06", "id": "undeclared", "script": "PySmurf_Server", "time": 1611858311.23576, "seq_no": 1239, "type": "metadata", "payload": {"path": "AMCc.SmurfApplication.NPArrayTest", "value": [0.0, 0.0, 0.0, 0.0, 0.0], "type": "ndarray"}}

Additionally, I added try-exception statement when converting the message to JSON to catch exceptions. If an exception occurs, the error message is logged.

Does this PR break any interface?

  • Yes
  • No

Which interface changed?

The content of the metadata send to the Publisher

What was the interface before the change

  • msgtype was general,
  • data was a string containing register_path=register_value

What will be the new interface after the change

  • msgtype is now metadata,
  • data is now formed by the following key, value pairs in JSON format:
    • path : Register path,
    • value : Register value (numpy arrays are converted to lists)
    • type : the value type, as a string.

Add external trigger (from timing system) to the downsampler

Author: Edward [email protected]
Date: Tue Feb 16 16:01:54 2021 -0800
Pull: #553 (147 additions, 42 deletions, 4 files changed)
Branch: slaclab/ESCRYODET-472
Jira: https://jira.slac.stanford.edu/issues/ESCRYODET-472
Labels: core, enhancement, interface-change

Notes:

Issue

This PR resolves ESCRYODET-472.

Description

This PR adds a new feature to the downsampler module which allow it to be trigger from the timing system, using the same method used in the old smurf2mce application for BICEP: The word 96 in the header (External real time clock from timing system) triggers a release of a frame everytime it changes (following what was done in smurf2mce).

The downsampler have now an additional enum variable TriggerMode which can be set to:

  • Internal [0]: This is the way the downsampler has always been used so far. A new frame is released on every specified number of received frames; the number of frames is selected by the variable factor. This is the default mode.
  • Timing (BICEP) [1]: A new frame is release every time the word 96 in the header (External real time clock from timing system) changes.

Does this PR break any interface?

  • Yes
  • No

Which interface changed?

The interface is backwards compatible, but these variables were added to the Downsampler module:

  • FrameCnt: Counts the number of released frames,
  • TriggerMode: Select the trigger mode (0: Internal (default), 1: Timing (BICEP)).

and the following commands:

  • clearCnt: Clear the FrameCnt variable.

Updating smurf_cmd.py

Author: Edward [email protected]
Date: Tue Feb 16 15:43:02 2021 -0800
Pull: #597 (519 additions, 119 deletions, 5 files changed)
Branch: slaclab/issue596
Issues: #596, #606
Labels: client

Notes:

Issue

Fixes #596
smurf_cmd.py has not been updated since the pole deployment. Lots of broken functions.

Description

[Describe what this PR does here]

Does this PR break any interface?

  • Yes
  • No

Which interface changed?

[Indicate here what is the interface that changed, preferable with a link to the code where the interface is defined]

What was the interface before the change

[Describe here how was the original interface]

What will be the new interface after the change

[Describe here how is the new interface, and what the difference with the original interface]


Adding function for finding probe tone gap

Author: Edward [email protected]
Date: Fri Feb 12 16:39:49 2021 -0800
Pull: #602 (88 additions, 0 deletions, 1 files changed)
Branch: slaclab/issue601
Issues: #601
Labels: client

Notes:

Issue

This PR resolves #601

This finds a gap in the resonators to put a tone

Description

[Describe what this PR does here]

Does this PR break any interface?

  • Yes
  • No

Which interface changed?

[Indicate here what is the interface that changed, preferable with a link to the code where the interface is defined]

What was the interface before the change

[Describe here how was the original interface]

What will be the new interface after the change

[Describe here how is the new interface, and what the difference with the original interface]


Update set_default_pv to handle the new RuntimeError exception

Author: Edward [email protected]
Date: Fri Feb 5 17:26:37 2021 -0800
Pull: #599 (10 additions, 4 deletions, 1 files changed)
Branch: slaclab/issue598
Issues: #598, #590
Labels: bug, client

Notes:

Issue

This PR resolves #598.

Description

This PR makes the set_default_pv method behaves the same it was before introducing the changes in #590.

In order to do that, we need to read the status of the configuration in progress PV, disabling the new retry_on_fail and instead catching the RuntimeError exceptions and keep retying for num_retries.

I tested this in a system where I modified the AppTop.Init() method to always fail (which will be the worse case scenario) and then trying to setup the system from the client. This is what you will see:

  • On the client:
In [4]: S = pysmurf.client.SmurfControl(epics_root=epics_prefix, setup=True, cfg_file=config_file, make_logfile=False)
[ 2021-02-02 22:43:59 ]  Setting up...
[ 2021-02-02 22:43:59 ]  Toggling DACs
[ 2021-02-02 22:43:59 ]  caput smurf_server_s2:AMCc:FpgaTopLevel:AppTop:AppCore:MicrowaveMuxCore[0]:DBG:dacReset[0] 1
[ 2021-02-02 22:43:59 ]  caput smurf_server_s2:AMCc:FpgaTopLevel:AppTop:AppCore:MicrowaveMuxCore[0]:DBG:dacReset[1] 1
[ 2021-02-02 22:43:59 ]  caput smurf_server_s2:AMCc:FpgaTopLevel:AppTop:AppCore:MicrowaveMuxCore[0]:DBG:dacReset[0] 0
[ 2021-02-02 22:43:59 ]  caput smurf_server_s2:AMCc:FpgaTopLevel:AppTop:AppCore:MicrowaveMuxCore[0]:DBG:dacReset[1] 0
[ 2021-02-02 22:43:59 ]  caput smurf_server_s2:AMCc:ReadAll 1
[ 2021-02-02 22:44:04 ]  Waiting 20.00 seconds after...
[ 2021-02-02 22:44:24 ]  Done waiting.
[ 2021-02-02 22:44:24 ]  caget smurf_server_s2:AMCc:SmurfApplication:SmurfVersion
[ 2021-02-02 22:44:24 ]  4.2.1+9.g02aa2cc1
[ 2021-02-02 22:44:24 ]  caput smurf_server_s2:AMCc:setDefaults 1
CA.Client.Exception...............................................
    Warning: "Virtual circuit unresponsive"
    Context: "localhost:5064"
    Source File: ../tcpiiu.cpp line 920
    Current Time: Tue Feb 02 2021 22:44:59.859849152
..................................................................
[ 2021-02-02 22:44:59 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:45:09 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:45:19 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:45:29 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:45:39 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:45:49 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:45:59 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:46:09 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:46:19 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:46:29 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:46:39 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:46:49 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:46:59 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:47:09 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:47:19 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:47:29 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:47:39 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:47:49 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:47:59 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:48:09 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:48:19 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:48:29 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:48:39 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:48:49 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:48:59 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:49:09 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:49:19 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:49:29 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:49:39 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:49:49 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:49:59 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:50:09 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:50:19 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:50:29 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:50:39 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:50:49 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:50:59 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:51:09 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:51:19 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:51:29 ]  caget smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
cannot connect to smurf_server_s2:AMCc:SmurfApplication:ConfiguringInProgress
[ 2021-02-02 22:51:39 ]  The system configuration did not finish after 400.0 seconds.
[ 2021-02-02 22:51:39 ]  ERROR : System configuration/setDefaults failed!  Do not proceed!  Reboot or ask someone for help.  You are strongly encouraged to report this as an issue on the pysmurf github repo at https://github.com/slaclab/pysmurf/issues (please provide a state dump using the pysmurf set_read_all/save_state functions).
[ 2021-02-02 22:51:39 ]  Setup failed!
[ 2021-02-02 22:51:39 ]  ERROR : System setup failed!  Proceed at your own risk!

In [5]:
  • On the server:
Setting defaults from file /tmp/fw/smurf_cfg/defaults/defaults_c03_lb_none.yml (try number 0)
AMCc.FpgaTopLevel.AppTop.writeBlocks()
AMCc.FpgaTopLevel.AppTop.AppCore.MicrowaveMuxCore[0].writeBlocks()
WARNING:pyrogue.VirtualClient.VirtualClient:I have not heard from AMCc in 10 seconds. It may be busy, continuing to wait...
AMCc.FpgaTopLevel.AppTop.Init()
Re-executing AppTop.Init(): retryCnt = 1
Re-executing AppTop.Init(): retryCnt = 2
Re-executing AppTop.Init(): retryCnt = 3
Re-executing AppTop.Init(): retryCnt = 4
Re-executing AppTop.Init(): retryCnt = 5
Re-executing AppTop.Init(): retryCnt = 6
Re-executing AppTop.Init(): retryCnt = 7
ERROR:pyrogue.Command.BaseCommand.AMCc.FpgaTopLevel.AppTop.Init:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries
ERROR:pyrogue.Command.BaseCommand.AMCc.LoadConfig:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 234, in <lambda>
    excGroups='NoConfig'),
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 730, in loadYaml
    if not writeEach: self._write()
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 624, in _write
    self.writeBlocks(force=self.ForceWrite.value(), recurse=True)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_TopLevel.py", line 89, in writeBlocks
    super().writeBlocks(**kwargs)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 315, in writeBlocks
    self.Init()
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 98, in __call__
    return self._doFunc(arg)
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 120, in _doFunc
    raise e
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries

ERROR: Setting defaults try number 0 failed with: AppTop.Init(): Too many retries and giving up on retries

Setting defaults from file /tmp/fw/smurf_cfg/defaults/defaults_c03_lb_none.yml (try number 1)
WARNING:pyrogue.VirtualClient.VirtualClient:I have finally heard from AMCc. All is good!
AMCc.FpgaTopLevel.AppTop.writeBlocks()
AMCc.FpgaTopLevel.AppTop.AppCore.MicrowaveMuxCore[0].writeBlocks()
WARNING:pyrogue.VirtualClient.VirtualClient:I have not heard from AMCc in 10 seconds. It may be busy, continuing to wait...
AMCc.FpgaTopLevel.AppTop.Init()
Re-executing AppTop.Init(): retryCnt = 1
Re-executing AppTop.Init(): retryCnt = 2
Re-executing AppTop.Init(): retryCnt = 3
Re-executing AppTop.Init(): retryCnt = 4
Re-executing AppTop.Init(): retryCnt = 5
Re-executing AppTop.Init(): retryCnt = 6
Re-executing AppTop.Init(): retryCnt = 7
ERROR:pyrogue.Command.BaseCommand.AMCc.FpgaTopLevel.AppTop.Init:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries
ERROR:pyrogue.Command.BaseCommand.AMCc.LoadConfig:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 234, in <lambda>
    excGroups='NoConfig'),
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 730, in loadYaml
    if not writeEach: self._write()
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 624, in _write
    self.writeBlocks(force=self.ForceWrite.value(), recurse=True)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_TopLevel.py", line 89, in writeBlocks
    super().writeBlocks(**kwargs)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 315, in writeBlocks
    self.Init()
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 98, in __call__
    return self._doFunc(arg)
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 120, in _doFunc
    raise e
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries

ERROR: Setting defaults try number 1 failed with: AppTop.Init(): Too many retries and giving up on retries

Setting defaults from file /tmp/fw/smurf_cfg/defaults/defaults_c03_lb_none.yml (try number 2)
WARNING:pyrogue.VirtualClient.VirtualClient:I have finally heard from AMCc. All is good!
AMCc.FpgaTopLevel.AppTop.writeBlocks()
AMCc.FpgaTopLevel.AppTop.AppCore.MicrowaveMuxCore[0].writeBlocks()
WARNING:pyrogue.VirtualClient.VirtualClient:I have not heard from AMCc in 10 seconds. It may be busy, continuing to wait...
AMCc.FpgaTopLevel.AppTop.Init()
Re-executing AppTop.Init(): retryCnt = 1
Re-executing AppTop.Init(): retryCnt = 2

Re-executing AppTop.Init(): retryCnt = 3
Re-executing AppTop.Init(): retryCnt = 4
Re-executing AppTop.Init(): retryCnt = 5
Re-executing AppTop.Init(): retryCnt = 6
Re-executing AppTop.Init(): retryCnt = 7
ERROR:pyrogue.Command.BaseCommand.AMCc.FpgaTopLevel.AppTop.Init:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries
ERROR:pyrogue.Command.BaseCommand.AMCc.LoadConfig:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 234, in <lambda>
    excGroups='NoConfig'),
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 730, in loadYaml
    if not writeEach: self._write()
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 624, in _write
    self.writeBlocks(force=self.ForceWrite.value(), recurse=True)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_TopLevel.py", line 89, in writeBlocks
    super().writeBlocks(**kwargs)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 315, in writeBlocks
    self.Init()
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 98, in __call__
    return self._doFunc(arg)
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 120, in _doFunc
    raise e
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries

ERROR: Setting defaults try number 2 failed with: AppTop.Init(): Too many retries and giving up on retries

Setting defaults from file /tmp/fw/smurf_cfg/defaults/defaults_c03_lb_none.yml (try number 3)
WARNING:pyrogue.VirtualClient.VirtualClient:I have finally heard from AMCc. All is good!
AMCc.FpgaTopLevel.AppTop.writeBlocks()
AMCc.FpgaTopLevel.AppTop.AppCore.MicrowaveMuxCore[0].writeBlocks()
WARNING:pyrogue.VirtualClient.VirtualClient:I have not heard from AMCc in 10 seconds. It may be busy, continuing to wait...
AMCc.FpgaTopLevel.AppTop.Init()
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
Re-executing AppTop.Init(): retryCnt = 1
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
Re-executing AppTop.Init(): retryCnt = 2
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
Re-executing AppTop.Init(): retryCnt = 3
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
Re-executing AppTop.Init(): retryCnt = 4
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
Re-executing AppTop.Init(): retryCnt = 5
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
Re-executing AppTop.Init(): retryCnt = 6
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
Re-executing AppTop.Init(): retryCnt = 7
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
ERROR:pyrogue.Command.BaseCommand.AMCc.FpgaTopLevel.AppTop.Init:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries
ERROR:pyrogue.Command.BaseCommand.AMCc.LoadConfig:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 234, in <lambda>
    excGroups='NoConfig'),
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 730, in loadYaml
    if not writeEach: self._write()
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 624, in _write
    self.writeBlocks(force=self.ForceWrite.value(), recurse=True)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_TopLevel.py", line 89, in writeBlocks
    super().writeBlocks(**kwargs)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 315, in writeBlocks
    self.Init()
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 98, in __call__
    return self._doFunc(arg)
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 120, in _doFunc
    raise e
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries

ERROR: Setting defaults try number 3 failed with: AppTop.Init(): Too many retries and giving up on retries


ERROR: Failed to set defaults after 4 retries. Aborting!

Aborting!

WARNING:pyrogue.VirtualClient.VirtualClient:I have finally heard from AMCc. All is good!








WARNING:pyrogue.VirtualClient.VirtualClient:I have not heard from AMCc in 10 seconds. It may be busy, continuing to wait...
WARNING:pyrogue.VirtualClient.VirtualClient:I have finally heard from AMCc. All is good!
Setting defaults from file /tmp/fw/smurf_cfg/defaults/defaults_c03_lb_none.yml (try number 0)
AMCc.FpgaTopLevel.AppTop.writeBlocks()
AMCc.FpgaTopLevel.AppTop.AppCore.MicrowaveMuxCore[0].writeBlocks()
WARNING:pyrogue.VirtualClient.VirtualClient:I have not heard from AMCc in 10 seconds. It may be busy, continuing to wait...
AMCc.FpgaTopLevel.AppTop.Init()
Re-executing AppTop.Init(): retryCnt = 1
Re-executing AppTop.Init(): retryCnt = 2
Re-executing AppTop.Init(): retryCnt = 3
Re-executing AppTop.Init(): retryCnt = 4
Re-executing AppTop.Init(): retryCnt = 5
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: DataValid = 1011, PositionErr = 512, AlignErr = 0
Re-executing AppTop.Init(): retryCnt = 6
Re-executing AppTop.Init(): retryCnt = 7
ERROR:pyrogue.Command.BaseCommand.AMCc.FpgaTopLevel.AppTop.Init:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries
ERROR:pyrogue.Command.BaseCommand.AMCc.LoadConfig:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 234, in <lambda>
    excGroups='NoConfig'),
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 730, in loadYaml
    if not writeEach: self._write()
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 624, in _write
    self.writeBlocks(force=self.ForceWrite.value(), recurse=True)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_TopLevel.py", line 89, in writeBlocks
    super().writeBlocks(**kwargs)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 315, in writeBlocks
    self.Init()
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 98, in __call__
    return self._doFunc(arg)
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 120, in _doFunc
    raise e
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries

ERROR: Setting defaults try number 0 failed with: AppTop.Init(): Too many retries and giving up on retries

Setting defaults from file /tmp/fw/smurf_cfg/defaults/defaults_c03_lb_none.yml (try number 1)
WARNING:pyrogue.VirtualClient.VirtualClient:I have finally heard from AMCc. All is good!
AMCc.FpgaTopLevel.AppTop.writeBlocks()
AMCc.FpgaTopLevel.AppTop.AppCore.MicrowaveMuxCore[0].writeBlocks()
WARNING:pyrogue.VirtualClient.VirtualClient:I have not heard from AMCc in 10 seconds. It may be busy, continuing to wait...
AMCc.FpgaTopLevel.AppTop.Init()
Re-executing AppTop.Init(): retryCnt = 1
Re-executing AppTop.Init(): retryCnt = 2
Re-executing AppTop.Init(): retryCnt = 3
Re-executing AppTop.Init(): retryCnt = 4
Re-executing AppTop.Init(): retryCnt = 5
Re-executing AppTop.Init(): retryCnt = 6
Re-executing AppTop.Init(): retryCnt = 7
ERROR:pyrogue.Command.BaseCommand.AMCc.FpgaTopLevel.AppTop.Init:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries
ERROR:pyrogue.Command.BaseCommand.AMCc.LoadConfig:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 234, in <lambda>
    excGroups='NoConfig'),
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 730, in loadYaml
    if not writeEach: self._write()
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 624, in _write
    self.writeBlocks(force=self.ForceWrite.value(), recurse=True)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_TopLevel.py", line 89, in writeBlocks
    super().writeBlocks(**kwargs)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 315, in writeBlocks
    self.Init()
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 98, in __call__
    return self._doFunc(arg)
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 120, in _doFunc
    raise e
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries

ERROR: Setting defaults try number 1 failed with: AppTop.Init(): Too many retries and giving up on retries

Setting defaults from file /tmp/fw/smurf_cfg/defaults/defaults_c03_lb_none.yml (try number 2)
WARNING:pyrogue.VirtualClient.VirtualClient:I have finally heard from AMCc. All is good!
AMCc.FpgaTopLevel.AppTop.writeBlocks()
AMCc.FpgaTopLevel.AppTop.AppCore.MicrowaveMuxCore[0].writeBlocks()
WARNING:pyrogue.VirtualClient.VirtualClient:I have not heard from AMCc in 10 seconds. It may be busy, continuing to wait...
AMCc.FpgaTopLevel.AppTop.Init()
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
Re-executing AppTop.Init(): retryCnt = 1
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
Re-executing AppTop.Init(): retryCnt = 2
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
Re-executing AppTop.Init(): retryCnt = 3
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
Re-executing AppTop.Init(): retryCnt = 4
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
Re-executing AppTop.Init(): retryCnt = 5
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
Re-executing AppTop.Init(): retryCnt = 6
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
Re-executing AppTop.Init(): retryCnt = 7
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdTx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
AppTop.Init().AMCc.FpgaTopLevel.AppTop.AppTopJesd[0].JesdRx: Link Not Locked: SysRefPeriodmin = 14, SysRefPeriodmax = 16
ERROR:pyrogue.Command.BaseCommand.AMCc.FpgaTopLevel.AppTop.Init:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries
ERROR:pyrogue.Command.BaseCommand.AMCc.LoadConfig:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 234, in <lambda>
    excGroups='NoConfig'),
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 730, in loadYaml
    if not writeEach: self._write()
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 624, in _write
    self.writeBlocks(force=self.ForceWrite.value(), recurse=True)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_TopLevel.py", line 89, in writeBlocks
    super().writeBlocks(**kwargs)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 315, in writeBlocks
    self.Init()
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 98, in __call__
    return self._doFunc(arg)
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 120, in _doFunc
    raise e
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries

ERROR: Setting defaults try number 2 failed with: AppTop.Init(): Too many retries and giving up on retries

Setting defaults from file /tmp/fw/smurf_cfg/defaults/defaults_c03_lb_none.yml (try number 3)
WARNING:pyrogue.VirtualClient.VirtualClient:I have finally heard from AMCc. All is good!
AMCc.FpgaTopLevel.AppTop.writeBlocks()
AMCc.FpgaTopLevel.AppTop.AppCore.MicrowaveMuxCore[0].writeBlocks()
WARNING:pyrogue.VirtualClient.VirtualClient:I have not heard from AMCc in 10 seconds. It may be busy, continuing to wait...
AMCc.FpgaTopLevel.AppTop.Init()
Re-executing AppTop.Init(): retryCnt = 1
Re-executing AppTop.Init(): retryCnt = 2
Re-executing AppTop.Init(): retryCnt = 3
Re-executing AppTop.Init(): retryCnt = 4
Re-executing AppTop.Init(): retryCnt = 5
Re-executing AppTop.Init(): retryCnt = 6
Re-executing AppTop.Init(): retryCnt = 7
ERROR:pyrogue.Command.BaseCommand.AMCc.FpgaTopLevel.AppTop.Init:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries
ERROR:pyrogue.Command.BaseCommand.AMCc.LoadConfig:AppTop.Init(): Too many retries and giving up on retries
Traceback (most recent call last):
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 234, in <lambda>
    excGroups='NoConfig'),
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 730, in loadYaml
    if not writeEach: self._write()
  File "/usr/local/src/rogue/python/pyrogue/_Root.py", line 624, in _write
    self.writeBlocks(force=self.ForceWrite.value(), recurse=True)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_TopLevel.py", line 89, in writeBlocks
    super().writeBlocks(**kwargs)
  File "/usr/local/src/rogue/python/pyrogue/_Device.py", line 296, in writeBlocks
    value.writeBlocks(force=force, recurse=True, checkEach=checkEach)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 315, in writeBlocks
    self.Init()
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 98, in __call__
    return self._doFunc(arg)
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 120, in _doFunc
    raise e
  File "/usr/local/src/rogue/python/pyrogue/_Command.py", line 116, in _doFunc
    return pr.varFuncHelper(self._function,pargs, self._log,self.path)
  File "/usr/local/src/rogue/python/pyrogue/_Variable.py", line 868, in varFuncHelper
    return func(**args)
  File "/tmp/fw/rogue_MicrowaveMuxBpEthGen2_v1.0.3.zip/python/AmcCarrierCore/AppTop/_AppTop.py", line 288, in Init
    raise pr.DeviceError('AppTop.Init(): Too many retries and giving up on retries')
pyrogue._Device.DeviceError: AppTop.Init(): Too many retries and giving up on retries

ERROR: Setting defaults try number 3 failed with: AppTop.Init(): Too many retries and giving up on retries


ERROR: Failed to set defaults after 4 retries. Aborting!

Aborting!

Of course, this test intentionally failed at the end, in order to test the worse case scenario, and make sure that the client waits until the end of the process (compare this with the example shown in #598 when the client didn't wait and failed before the server finished trying to setup the system). In a different situation, the server will eventually recover and the setting defaults will succeed. In that situation, the client code will be able to continuer normally.

Does this PR break any interface?

  • Yes
  • No

Adding retry attempt to caget

Author: Shawn Henderson [email protected]
Date: Thu Jan 28 23:23:32 2021 -0800
Pull: #590 (20 additions, 2 deletions, 1 files changed)
Branch: slaclab/issue589
Issues: #589
Labels: client, enhancement

Notes:

Issue

Resolves #589

Description

Catches and retries if epics.caget returns None.

Does this PR break any interface?

  • Yes
  • No

Which interface changed?

[Indicate here what is the interface that changed, preferable with a link to the code where the interface is defined]

What was the interface before the change

[Describe here how was the original interface]

What will be the new interface after the change

[Describe here how is the new interface, and what the difference with the original interface]


Bug in emulator period data type handling

Author: Shawn Henderson [email protected]
Date: Thu Jan 28 23:17:37 2021 -0800
Pull: #595 (22 additions, 4 deletions, 1 files changed)
Branch: slaclab/issue594
Issues: #594
Labels: bug, client

Notes:

Issue

This PR resolves #594 .

Description

the set and get function to emulator periods are strings. Handle that properly.

Does this PR break any interface?

  • Yes
  • No

Which interface changed?

[Indicate here what is the interface that changed, preferable with a link to the code where the interface is defined]

What was the interface before the change

[Describe here how was the original interface]

What will be the new interface after the change

[Describe here how is the new interface, and what the difference with the original interface]


Issue586 - Changing name of NEI_to_NEP to get_NEI_to_NEP_factor

Author: Edward [email protected]
Date: Sun Jan 24 19:22:23 2021 -0800
Pull: #587 (20 additions, 10 deletions, 1 files changed)
Branch: slaclab/issue586
Issues: #586
Labels: client, enhancement

Notes:

Issue

This PR resolves #586 .

Description

Changes the name of the NEI_to_NEP function to get_NEI_to_NEP_factor. The previous name did not make sense.

Does this PR break any interface?

  • Yes
  • No

Which interface changed?

NEI_to_NEP function name changed to get_NEI_to_NEP_factor

What was the interface before the change

Function was called NEI_to_NEP

What will be the new interface after the change

Now it is called get_NEI_to_NEP_factor