Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clean up pvi signal generation #142

Merged
merged 1 commit into from
Apr 9, 2024

Conversation

evalott100
Copy link
Contributor

@evalott100 evalott100 commented Mar 8, 2024

Closes #126 and #125

@evalott100 evalott100 marked this pull request as draft March 8, 2024 11:31
@evalott100 evalott100 self-assigned this Mar 8, 2024
@olliesilvester
Copy link
Contributor

olliesilvester commented Mar 8, 2024

Once this is merged in I will add an HdfBlock to the common panda blocks as a part of #141

@coretl
Copy link
Collaborator

coretl commented Mar 8, 2024

Please can you not add it to the common panda blocks, but its subclass, as the HDF writing will be optional in future

@evalott100 evalott100 force-pushed the 126_move_panda_block_making_functionality branch 3 times, most recently from c92443b to 3544650 Compare March 13, 2024 15:46
@evalott100
Copy link
Contributor Author

# src/panda_live
async def make_panda_and_connect():
    async with DeviceCollector():
        panda = PandA(prefix="PANDA1:")
    for key, value in panda.__dict__.items():
        print(key, type(value))
        if isinstance(value, Device):
            for key1, value1 in value.__dict__.items():
                print("    ", key1, type(value1))

    assert isinstance(panda.pcap, PcapBlock)
    assert isinstance(panda.seq[1], SeqBlock)
    assert isinstance(panda.seq[2], SeqBlock)
    assert isinstance(panda.pulse[1], PulseBlock)
    assert isinstance(panda.pulse[2], PulseBlock)
    assert isinstance(panda.pulse[3], PulseBlock)
    assert isinstance(panda.pulse[4], PulseBlock)
    assert isinstance(panda.fmc_out, Device)

    # Defined in CommonDevice SeqBlock
    print(await panda.seq[1].table.get_value())

    # Not defined in CommonDevice
    print(await panda.seq[1].enable.get_value())
    print(await panda.fmc_out.gain1.get_value())


RE = RunEngine()
asyncio.run(make_panda_and_connect())
_prefix <class 'str'>
_name <class 'str'>
bits <class 'ophyd_async.core.device.Device'>
     _name <class 'str'>
     a <class 'ophyd_async.core.signal.SignalRW'>
     b <class 'ophyd_async.core.signal.SignalRW'>
     c <class 'ophyd_async.core.signal.SignalRW'>
     d <class 'ophyd_async.core.signal.SignalRW'>
     label <class 'ophyd_async.core.signal.SignalRW'>
     outa <class 'ophyd_async.core.signal.SignalR'>
     outb <class 'ophyd_async.core.signal.SignalR'>
     outc <class 'ophyd_async.core.signal.SignalR'>
     outd <class 'ophyd_async.core.signal.SignalR'>
calc <class 'ophyd_async.core.device.DeviceVector'>
clock <class 'ophyd_async.core.device.DeviceVector'>
counter <class 'ophyd_async.core.device.DeviceVector'>
data <class 'ophyd_async.core.device.Device'>
     _name <class 'str'>
     capture <class 'ophyd_async.core.signal.SignalRW'>
     capturemode <class 'ophyd_async.core.signal.SignalRW'>
     flushperiod <class 'ophyd_async.core.signal.SignalRW'>
     hdfdirectory <class 'ophyd_async.core.signal.SignalRW'>
     hdffilename <class 'ophyd_async.core.signal.SignalRW'>
     hdffullfilepath <class 'ophyd_async.core.signal.SignalR'>
     numcapture <class 'ophyd_async.core.signal.SignalRW'>
     numcaptured <class 'ophyd_async.core.signal.SignalR'>
     numreceived <class 'ophyd_async.core.signal.SignalR'>
     status <class 'ophyd_async.core.signal.SignalR'>
div <class 'ophyd_async.core.device.DeviceVector'>
filter <class 'ophyd_async.core.device.DeviceVector'>
fmc_in <class 'ophyd_async.core.device.Device'>
     _name <class 'str'>
     adc_b_fitted <class 'ophyd_async.core.signal.SignalR'>
     gain1 <class 'ophyd_async.core.signal.SignalRW'>
     gain2 <class 'ophyd_async.core.signal.SignalRW'>
     gain3 <class 'ophyd_async.core.signal.SignalRW'>
     gain4 <class 'ophyd_async.core.signal.SignalRW'>
     gain5 <class 'ophyd_async.core.signal.SignalRW'>
     gain6 <class 'ophyd_async.core.signal.SignalRW'>
     gain7 <class 'ophyd_async.core.signal.SignalRW'>
     gain8 <class 'ophyd_async.core.signal.SignalRW'>
     label <class 'ophyd_async.core.signal.SignalRW'>
     ttl <class 'ophyd_async.core.signal.SignalR'>
     val1 <class 'ophyd_async.core.signal.SignalR'>
     val1_capture <class 'ophyd_async.core.signal.SignalRW'>
     val1_offset <class 'ophyd_async.core.signal.SignalRW'>
     val1_scale <class 'ophyd_async.core.signal.SignalRW'>
     val1_units <class 'ophyd_async.core.signal.SignalRW'>
     val2 <class 'ophyd_async.core.signal.SignalR'>
     val2_capture <class 'ophyd_async.core.signal.SignalRW'>
     val2_offset <class 'ophyd_async.core.signal.SignalRW'>
     val2_scale <class 'ophyd_async.core.signal.SignalRW'>
     val2_units <class 'ophyd_async.core.signal.SignalRW'>
     val3 <class 'ophyd_async.core.signal.SignalR'>
     val3_capture <class 'ophyd_async.core.signal.SignalRW'>
     val3_offset <class 'ophyd_async.core.signal.SignalRW'>
     val3_scale <class 'ophyd_async.core.signal.SignalRW'>
     val3_units <class 'ophyd_async.core.signal.SignalRW'>
     val4 <class 'ophyd_async.core.signal.SignalR'>
     val4_capture <class 'ophyd_async.core.signal.SignalRW'>
     val4_offset <class 'ophyd_async.core.signal.SignalRW'>
     val4_scale <class 'ophyd_async.core.signal.SignalRW'>
     val4_units <class 'ophyd_async.core.signal.SignalRW'>
     val5 <class 'ophyd_async.core.signal.SignalR'>
     val5_capture <class 'ophyd_async.core.signal.SignalRW'>
     val5_offset <class 'ophyd_async.core.signal.SignalRW'>
     val5_scale <class 'ophyd_async.core.signal.SignalRW'>
     val5_units <class 'ophyd_async.core.signal.SignalRW'>
     val6 <class 'ophyd_async.core.signal.SignalR'>
     val6_capture <class 'ophyd_async.core.signal.SignalRW'>
     val6_offset <class 'ophyd_async.core.signal.SignalRW'>
     val6_scale <class 'ophyd_async.core.signal.SignalRW'>
     val6_units <class 'ophyd_async.core.signal.SignalRW'>
     val7 <class 'ophyd_async.core.signal.SignalR'>
     val7_capture <class 'ophyd_async.core.signal.SignalRW'>
     val7_offset <class 'ophyd_async.core.signal.SignalRW'>
     val7_scale <class 'ophyd_async.core.signal.SignalRW'>
     val7_units <class 'ophyd_async.core.signal.SignalRW'>
     val8 <class 'ophyd_async.core.signal.SignalR'>
     val8_capture <class 'ophyd_async.core.signal.SignalRW'>
     val8_offset <class 'ophyd_async.core.signal.SignalRW'>
     val8_scale <class 'ophyd_async.core.signal.SignalRW'>
     val8_units <class 'ophyd_async.core.signal.SignalRW'>
fmc_out <class 'ophyd_async.core.device.Device'>
     _name <class 'str'>
     dac_fitted <class 'ophyd_async.core.signal.SignalR'>
     gain1 <class 'ophyd_async.core.signal.SignalRW'>
     gain2 <class 'ophyd_async.core.signal.SignalRW'>
     gain3 <class 'ophyd_async.core.signal.SignalRW'>
     gain4 <class 'ophyd_async.core.signal.SignalRW'>
     label <class 'ophyd_async.core.signal.SignalRW'>
     val1 <class 'ophyd_async.core.signal.SignalRW'>
     val2 <class 'ophyd_async.core.signal.SignalRW'>
     val3 <class 'ophyd_async.core.signal.SignalRW'>
     val4 <class 'ophyd_async.core.signal.SignalRW'>
inenc <class 'ophyd_async.core.device.DeviceVector'>
lut <class 'ophyd_async.core.device.DeviceVector'>
lvdsin <class 'ophyd_async.core.device.DeviceVector'>
lvdsout <class 'ophyd_async.core.device.DeviceVector'>
outenc <class 'ophyd_async.core.device.DeviceVector'>
pcap <class 'ophyd_async.panda.panda.PcapBlock'>
     _name <class 'str'>
     active <class 'ophyd_async.core.signal.SignalR'>
     arm <class 'ophyd_async.core.signal.SignalRW'>
     bits0_capture <class 'ophyd_async.core.signal.SignalRW'>
     bits1_capture <class 'ophyd_async.core.signal.SignalRW'>
     bits2_capture <class 'ophyd_async.core.signal.SignalRW'>
     bits3_capture <class 'ophyd_async.core.signal.SignalRW'>
     enable <class 'ophyd_async.core.signal.SignalRW'>
     enable_delay <class 'ophyd_async.core.signal.SignalRW'>
     gate <class 'ophyd_async.core.signal.SignalRW'>
     gate_delay <class 'ophyd_async.core.signal.SignalRW'>
     gate_duration_capture <class 'ophyd_async.core.signal.SignalRW'>
     health <class 'ophyd_async.core.signal.SignalR'>
     label <class 'ophyd_async.core.signal.SignalRW'>
     shift_sum <class 'ophyd_async.core.signal.SignalRW'>
     trig <class 'ophyd_async.core.signal.SignalRW'>
     trig_delay <class 'ophyd_async.core.signal.SignalRW'>
     trig_edge <class 'ophyd_async.core.signal.SignalRW'>
     ts_end_capture <class 'ophyd_async.core.signal.SignalRW'>
     ts_start_capture <class 'ophyd_async.core.signal.SignalRW'>
     ts_trig_capture <class 'ophyd_async.core.signal.SignalRW'>
pcomp <class 'ophyd_async.core.device.DeviceVector'>
pgen <class 'ophyd_async.core.device.DeviceVector'>
pulse <class 'ophyd_async.core.device.DeviceVector'>
seq <class 'ophyd_async.core.device.DeviceVector'>
sfp3_sync_in <class 'ophyd_async.core.device.Device'>
     _name <class 'str'>
     bit1 <class 'ophyd_async.core.signal.SignalR'>
     bit2 <class 'ophyd_async.core.signal.SignalR'>
     bit3 <class 'ophyd_async.core.signal.SignalR'>
     bit4 <class 'ophyd_async.core.signal.SignalR'>
     bit5 <class 'ophyd_async.core.signal.SignalR'>
     bit6 <class 'ophyd_async.core.signal.SignalR'>
     bit7 <class 'ophyd_async.core.signal.SignalR'>
     bit8 <class 'ophyd_async.core.signal.SignalR'>
     err_cnt <class 'ophyd_async.core.signal.SignalR'>
     health <class 'ophyd_async.core.signal.SignalR'>
     label <class 'ophyd_async.core.signal.SignalRW'>
     linkup <class 'ophyd_async.core.signal.SignalR'>
     pos1 <class 'ophyd_async.core.signal.SignalR'>
     pos1_capture <class 'ophyd_async.core.signal.SignalRW'>
     pos1_offset <class 'ophyd_async.core.signal.SignalRW'>
     pos1_scale <class 'ophyd_async.core.signal.SignalRW'>
     pos1_units <class 'ophyd_async.core.signal.SignalRW'>
     pos2 <class 'ophyd_async.core.signal.SignalR'>
     pos2_capture <class 'ophyd_async.core.signal.SignalRW'>
     pos2_offset <class 'ophyd_async.core.signal.SignalRW'>
     pos2_scale <class 'ophyd_async.core.signal.SignalRW'>
     pos2_units <class 'ophyd_async.core.signal.SignalRW'>
     pos3 <class 'ophyd_async.core.signal.SignalR'>
     pos3_capture <class 'ophyd_async.core.signal.SignalRW'>
     pos3_offset <class 'ophyd_async.core.signal.SignalRW'>
     pos3_scale <class 'ophyd_async.core.signal.SignalRW'>
     pos3_units <class 'ophyd_async.core.signal.SignalRW'>
     pos4 <class 'ophyd_async.core.signal.SignalR'>
     pos4_capture <class 'ophyd_async.core.signal.SignalRW'>
     pos4_offset <class 'ophyd_async.core.signal.SignalRW'>
     pos4_scale <class 'ophyd_async.core.signal.SignalRW'>
     pos4_units <class 'ophyd_async.core.signal.SignalRW'>
     sync_reset <class 'ophyd_async.core.signal.SignalX'>
sfp3_sync_out <class 'ophyd_async.core.device.Device'>
     _name <class 'str'>
     bit1 <class 'ophyd_async.core.signal.SignalRW'>
     bit1_delay <class 'ophyd_async.core.signal.SignalRW'>
     bit2 <class 'ophyd_async.core.signal.SignalRW'>
     bit2_delay <class 'ophyd_async.core.signal.SignalRW'>
     bit3 <class 'ophyd_async.core.signal.SignalRW'>
     bit3_delay <class 'ophyd_async.core.signal.SignalRW'>
     bit4 <class 'ophyd_async.core.signal.SignalRW'>
     bit4_delay <class 'ophyd_async.core.signal.SignalRW'>
     bit5 <class 'ophyd_async.core.signal.SignalRW'>
     bit5_delay <class 'ophyd_async.core.signal.SignalRW'>
     bit6 <class 'ophyd_async.core.signal.SignalRW'>
     bit6_delay <class 'ophyd_async.core.signal.SignalRW'>
     bit7 <class 'ophyd_async.core.signal.SignalRW'>
     bit7_delay <class 'ophyd_async.core.signal.SignalRW'>
     bit8 <class 'ophyd_async.core.signal.SignalRW'>
     bit8_delay <class 'ophyd_async.core.signal.SignalRW'>
     label <class 'ophyd_async.core.signal.SignalRW'>
     pos1 <class 'ophyd_async.core.signal.SignalRW'>
     pos2 <class 'ophyd_async.core.signal.SignalRW'>
     pos3 <class 'ophyd_async.core.signal.SignalRW'>
     pos4 <class 'ophyd_async.core.signal.SignalRW'>
srgate <class 'ophyd_async.core.device.DeviceVector'>
system <class 'ophyd_async.core.device.Device'>
     _name <class 'str'>
     alim_12v0 <class 'ophyd_async.core.signal.SignalR'>
     clk_sel_stat <class 'ophyd_async.core.signal.SignalR'>
     clock_source <class 'ophyd_async.core.signal.SignalRW'>
     enc_24v <class 'ophyd_async.core.signal.SignalR'>
     ext_clock_freq <class 'ophyd_async.core.signal.SignalR'>
     fmc_12v <class 'ophyd_async.core.signal.SignalR'>
     fmc_15vn <class 'ophyd_async.core.signal.SignalR'>
     fmc_15vp <class 'ophyd_async.core.signal.SignalR'>
     health <class 'ophyd_async.core.signal.SignalR'>
     io_5v0 <class 'ophyd_async.core.signal.SignalR'>
     label <class 'ophyd_async.core.signal.SignalRW'>
     pico_5v0 <class 'ophyd_async.core.signal.SignalR'>
     pll_locked <class 'ophyd_async.core.signal.SignalR'>
     sfp_3v3 <class 'ophyd_async.core.signal.SignalR'>
     temp_enc_l <class 'ophyd_async.core.signal.SignalR'>
     temp_enc_r <class 'ophyd_async.core.signal.SignalR'>
     temp_pico <class 'ophyd_async.core.signal.SignalR'>
     temp_psu <class 'ophyd_async.core.signal.SignalR'>
     temp_sfp <class 'ophyd_async.core.signal.SignalR'>
     temp_zynq <class 'ophyd_async.core.signal.SignalR'>
     vccint <class 'ophyd_async.core.signal.SignalR'>
ttlin <class 'ophyd_async.core.device.DeviceVector'>
ttlout <class 'ophyd_async.core.device.DeviceVector'>
{'repeats': array([], dtype=uint16), 'trigger': [], 'position': array([], dtype=int32), 'time1': array([], dtype=uint32), 'outa1': array([], dtype=uint8), 'outb1': array([], dtype=uint8), 'outc1': array([], dtype=uint8), 'outd1': array([], dtype=uint8), 'oute1': array([], dtype=uint8), 'outf1': array([], dtype=uint8), 'time2': array([], dtype=uint32), 'outa2': array([], dtype=uint8), 'outb2': array([], dtype=uint8), 'outc2': array([], dtype=uint8), 'outd2': array([], dtype=uint8), 'oute2': array([], dtype=uint8), 'outf2': array([], dtype=uint8)}
ZERO
GeneratedChoices.5V

@evalott100 evalott100 force-pushed the 126_move_panda_block_making_functionality branch from 7d33184 to e0755f9 Compare March 15, 2024 15:20
@evalott100 evalott100 force-pushed the 126_move_panda_block_making_functionality branch 3 times, most recently from 833a6ec to a6b6340 Compare March 27, 2024 11:05
@evalott100 evalott100 marked this pull request as ready for review March 27, 2024 11:36
@evalott100 evalott100 force-pushed the 126_move_panda_block_making_functionality branch 7 times, most recently from 1252ffa to 9d4a1f4 Compare March 28, 2024 11:53
@evalott100 evalott100 force-pushed the 126_move_panda_block_making_functionality branch from 9d4a1f4 to eaecd00 Compare March 28, 2024 13:08
Copy link
Contributor

@DiamondJoseph DiamondJoseph left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need to step through pvi.py more closely

tests/epics/db/dummy_pvi.db Outdated Show resolved Hide resolved
src/ophyd_async/panda/panda.py Outdated Show resolved Hide resolved
src/ophyd_async/panda/panda.py Show resolved Hide resolved
@evalott100 evalott100 force-pushed the 126_move_panda_block_making_functionality branch 4 times, most recently from 9d08336 to 1dce320 Compare April 4, 2024 07:56
src/ophyd_async/epics/pvi/pvi.py Outdated Show resolved Hide resolved
src/ophyd_async/epics/pvi/pvi.py Show resolved Hide resolved
src/ophyd_async/epics/pvi/pvi.py Outdated Show resolved Hide resolved
@evalott100 evalott100 force-pushed the 126_move_panda_block_making_functionality branch from 1dce320 to 59d44fe Compare April 5, 2024 09:33
@evalott100 evalott100 force-pushed the 126_move_panda_block_making_functionality branch 2 times, most recently from 8afa908 to 3eb486d Compare April 5, 2024 14:29
src/ophyd_async/epics/pvi/pvi.py Outdated Show resolved Hide resolved
src/ophyd_async/epics/pvi/pvi.py Outdated Show resolved Hide resolved
@evalott100 evalott100 force-pushed the 126_move_panda_block_making_functionality branch 2 times, most recently from d3e7785 to 85f0a4c Compare April 8, 2024 12:26
src/ophyd_async/epics/pvi/pvi.py Outdated Show resolved Hide resolved
src/ophyd_async/epics/pvi/pvi.py Outdated Show resolved Hide resolved
@evalott100 evalott100 force-pushed the 126_move_panda_block_making_functionality branch 3 times, most recently from e1a3c87 to 06118a2 Compare April 8, 2024 14:46
src/ophyd_async/epics/pvi/pvi.py Outdated Show resolved Hide resolved
src/ophyd_async/epics/pvi/pvi.py Show resolved Hide resolved
@evalott100 evalott100 force-pushed the 126_move_panda_block_making_functionality branch from 06118a2 to f2ea8c4 Compare April 9, 2024 10:33
@evalott100 evalott100 force-pushed the 126_move_panda_block_making_functionality branch from f2ea8c4 to 4f2cd07 Compare April 9, 2024 14:45
@evalott100 evalott100 force-pushed the 126_move_panda_block_making_functionality branch from 4f2cd07 to 439a41d Compare April 9, 2024 14:48
@evalott100 evalott100 merged commit 2e4e379 into main Apr 9, 2024
14 checks passed
@evalott100 evalott100 deleted the 126_move_panda_block_making_functionality branch April 9, 2024 14:58
@coretl coretl mentioned this pull request Apr 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Move PandA block making functionality into a standalone pvi function
4 participants