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

Draft: Add PythonSoftIOC record creation directly from PandA #28

Closed
wants to merge 210 commits into from

Commits on Aug 5, 2021

  1. Initial setup and temporary example file for using pythong soft iocs …

    …inside this module.
    
    The _ioc.py file will not live here forever, it's just easier to run and debug it from outside of the module structure, as it avoids some name clashing errors.
    AlexanderWells-diamond committed Aug 5, 2021
    Configuration menu
    Copy the full SHA
    5107208 View commit details
    Browse the repository at this point in the history

Commits on Aug 6, 2021

  1. Initial pass at introspecting the PandA and getting all blocks, field…

    …s, and values.
    
    Also contains the start of an attempted mapping from (type, subtype) -> function to create record.
    AlexanderWells-diamond committed Aug 6, 2021
    Configuration menu
    Copy the full SHA
    ac68e57 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    84f0e62 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    4046d8f View commit details
    Browse the repository at this point in the history

Commits on Aug 9, 2021

  1. Framework in place for creating all records for a block, and an updat…

    …e mechanism.
    
    Note this doesn't work at the moment - the second GetChanges call (in update()) hangs indefinitely. I don't know why...
    AlexanderWells-diamond committed Aug 9, 2021
    Configuration menu
    Copy the full SHA
    46823c7 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    880f627 View commit details
    Browse the repository at this point in the history
  3. Refactor asyncio support on Tom's advice. It now works as expected

    Note that the update() method will basically always throw exceptions as there are no records created for the fields that most commonly change.
    AlexanderWells-diamond committed Aug 9, 2021
    Configuration menu
    Copy the full SHA
    01312da View commit details
    Browse the repository at this point in the history

Commits on Aug 10, 2021

  1. Configuration menu
    Copy the full SHA
    61641ec View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    de58815 View commit details
    Browse the repository at this point in the history
  3. Attempting to refactor into an IocRecordFactory class, although this …

    …implementation still doesn't let me call Get() successfully.
    AlexanderWells-diamond committed Aug 10, 2021
    Configuration menu
    Copy the full SHA
    296709d View commit details
    Browse the repository at this point in the history

Commits on Aug 11, 2021

  1. Configuration menu
    Copy the full SHA
    47c052d View commit details
    Browse the repository at this point in the history

Commits on Aug 12, 2021

  1. Configuration menu
    Copy the full SHA
    d2767da View commit details
    Browse the repository at this point in the history
  2. A working refactor of GetFieldInfo with new data structures to simpli…

    …fy a command saving data into FieldInfo
    
    It revolves around the _FieldCommandMapping class, which links together a command and the attribute in a FieldInfo class. It also handes converting the strings from PandA into more useful Python types.
    
    The FieldInfo class and GetFieldInfo command are being slowly expanded with new attributes for various field types. At some point in the future they'll need to be broken apart.
    AlexanderWells-diamond committed Aug 12, 2021
    Configuration menu
    Copy the full SHA
    e29492a View commit details
    Browse the repository at this point in the history
  3. First pass of capturing all attributes of all applicable fields.

    This results in a very bloated FieldInfo structure - I'll probably sub-class it for each Type to trim it down.
    
    Also add some notes to _ioc.py.
    AlexanderWells-diamond committed Aug 12, 2021
    Configuration menu
    Copy the full SHA
    6a1b305 View commit details
    Browse the repository at this point in the history

Commits on Aug 13, 2021

  1. Configuration menu
    Copy the full SHA
    b840da3 View commit details
    Browse the repository at this point in the history
  2. Minor correction - don't need capture_labels for ext_out as they're…

    … already captured in the `labels` field (which is the logic pymalcolm uses)
    AlexanderWells-diamond committed Aug 13, 2021
    Configuration menu
    Copy the full SHA
    69606ed View commit details
    Browse the repository at this point in the history
  3. Create and use subclasses of FieldInfo for field-type--specific attri…

    …butes.
    
    Clear out commented out code and attributes.
    AlexanderWells-diamond committed Aug 13, 2021
    Configuration menu
    Copy the full SHA
    8b1b184 View commit details
    Browse the repository at this point in the history
  4. Start implementing _ioc again, with new FieldInfo structures

    Also a lot of other miscellaneous refactoring and comments
    AlexanderWells-diamond committed Aug 13, 2021
    Configuration menu
    Copy the full SHA
    69e344b View commit details
    Browse the repository at this point in the history

Commits on Aug 16, 2021

  1. Configuration menu
    Copy the full SHA
    ecf16d9 View commit details
    Browse the repository at this point in the history
  2. Start a _create_record function to commonise setting the DESC value.

    Additional comment on from_instance method.
    AlexanderWells-diamond committed Aug 16, 2021
    Configuration menu
    Copy the full SHA
    1a8cf3b View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    e446540 View commit details
    Browse the repository at this point in the history
  4. Fix all currently broken tests

    NOTE: Something is causing pytest to hang indefinitely after finishing tests, which is causing all kinds of problems. Investigating now...
    AlexanderWells-diamond committed Aug 16, 2021
    Configuration menu
    Copy the full SHA
    b92885c View commit details
    Browse the repository at this point in the history
  5. Remove cause of infinite hang in pytest - the AsyncioDispatcher creat…

    …es a new event loop that never gets terminated
    AlexanderWells-diamond committed Aug 16, 2021
    Configuration menu
    Copy the full SHA
    428bdad View commit details
    Browse the repository at this point in the history

Commits on Aug 17, 2021

  1. Extract labels from FieldInfo and put in to suc-classes only.

    Fix associated tests.
    Start work on test_get_fields_parameterized_type to test every type permutation.
    AlexanderWells-diamond committed Aug 17, 2021
    Configuration menu
    Copy the full SHA
    f91f9b9 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    2dd2386 View commit details
    Browse the repository at this point in the history
  3. Make pos_out and ext_out's CAPTURE attributes store in the same way.

    Doing this after discussion with Tom, who said that there was a historical reason that these two CAPTURE attributes were treated differently in pymalcolm (which this code is based on), but that difference will be disappearing soon and so they should be treated the same.
    AlexanderWells-diamond committed Aug 17, 2021
    Configuration menu
    Copy the full SHA
    32ae77f View commit details
    Browse the repository at this point in the history

Commits on Aug 18, 2021

  1. Finish creating records for all types and subtypes.

    Add missing cases to GetFieldInfo's dictionary lookup.
    
    Note there's a bug somewhere in _make_scalar - PythonSoftIOC complains that the initial_value's type is wrong when it creates the main record, hence it's commented out at the moment.
    AlexanderWells-diamond committed Aug 18, 2021
    Configuration menu
    Copy the full SHA
    924ff9e View commit details
    Browse the repository at this point in the history
  2. Initial attempt at ext_out bits table.

    Also identified problems with the `update` method - we can't use a string type to set most of these records. We have to know what type to set, and in the case of mbbi/mbbo records we have to set the index...
    AlexanderWells-diamond committed Aug 18, 2021
    Configuration menu
    Copy the full SHA
    b1e1ffc View commit details
    Browse the repository at this point in the history

Commits on Aug 19, 2021

  1. Configuration menu
    Copy the full SHA
    1e177e5 View commit details
    Browse the repository at this point in the history
  2. Use the new _RecordInfo class to track labels and data type conversio…

    …n function between creation of the record and the later updating of its values.
    AlexanderWells-diamond committed Aug 19, 2021
    Configuration menu
    Copy the full SHA
    a6609ae View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    7782962 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    1ed974f View commit details
    Browse the repository at this point in the history

Commits on Aug 20, 2021

  1. Configuration menu
    Copy the full SHA
    34f322d View commit details
    Browse the repository at this point in the history
  2. Check number of items in values dict, and fix logical errors found.

    A couple of other TODOs also done.
    AlexanderWells-diamond committed Aug 20, 2021
    Configuration menu
    Copy the full SHA
    c29c30d View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    8db0da4 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    13dbb37 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    bf69287 View commit details
    Browse the repository at this point in the history

Commits on Aug 23, 2021

  1. Configuration menu
    Copy the full SHA
    01c7ad1 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    099fb08 View commit details
    Browse the repository at this point in the history

Commits on Aug 24, 2021

  1. Change the "skip_description" flag on GetFieldInfo for "extended_meta…

    …data", which allows the second network round trip to be skipped if the flag is False.
    
    Tests updated.
    AlexanderWells-diamond committed Aug 24, 2021
    Configuration menu
    Copy the full SHA
    5ad6cb3 View commit details
    Browse the repository at this point in the history

Commits on Aug 25, 2021

  1. Refactor _commands_ext_out_bits to be a generator. This allows the co…

    …de setting the fields of FieldInfo to be next to the code that does the Get request.
    
    Note Descriptions are currently not retrieved - need to work out how to add them...
    AlexanderWells-diamond committed Aug 25, 2021
    Configuration menu
    Copy the full SHA
    17afe76 View commit details
    Browse the repository at this point in the history
  2. A working approach to retrieving descriptions.

    Not terribly happy with it as it means we have to replicate the Get(*DESC...) command to all type functions, and set it in every function as well. But it works...
    AlexanderWells-diamond committed Aug 25, 2021
    Configuration menu
    Copy the full SHA
    d069e89 View commit details
    Browse the repository at this point in the history
  3. A better implementation of getting descriptions

    This is generic and so will work for all types, regardless of whether we recognise them or not.
    AlexanderWells-diamond committed Aug 25, 2021
    Configuration menu
    Copy the full SHA
    ad05eb8 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    62c5199 View commit details
    Browse the repository at this point in the history
  5. Rename all type functions

    The "_command" prefix was superfluous
    AlexanderWells-diamond committed Aug 25, 2021
    Configuration menu
    Copy the full SHA
    b37dccb View commit details
    Browse the repository at this point in the history

Commits on Aug 26, 2021

  1. Move ioc code to its proper place.

    Minor refactoring and renaming included.
    AlexanderWells-diamond committed Aug 26, 2021
    Configuration menu
    Copy the full SHA
    a0b0acb View commit details
    Browse the repository at this point in the history
  2. add parameters to create_softioc to make it the main entry point of t…

    …he file.
    
    Make _check_num_values allow more values than expected, so we are permissive to future PandA server changes.
    Also misc docs and type hints added.
    AlexanderWells-diamond committed Aug 26, 2021
    Configuration menu
    Copy the full SHA
    ea9ca0d View commit details
    Browse the repository at this point in the history

Commits on Aug 27, 2021

  1. Enhance GetChanges with get_multiline parameter, which if set will …

    …return multiline table values in new `multiline_values` field of `Changes`
    AlexanderWells-diamond committed Aug 27, 2021
    Configuration menu
    Copy the full SHA
    017415e View commit details
    Browse the repository at this point in the history
  2. Create block-level records (currently just LABEL) for each block

    This commit includes always adding the block number to record names, for consistency regardless of how many blocks there are.
    AlexanderWells-diamond committed Aug 27, 2021
    Configuration menu
    Copy the full SHA
    d043360 View commit details
    Browse the repository at this point in the history
  3. 8 Configuration menu
    Copy the full SHA
    7538938 View commit details
    Browse the repository at this point in the history

Commits on Aug 31, 2021

  1. Configuration menu
    Copy the full SHA
    f79514e View commit details
    Browse the repository at this point in the history
  2. Initial attempt at Put'ing data back to PandA fields.

    Uses the new _RecordUpdater class, with its one method `update` to handle the logic of converting from EPICS format to PandA format data.
    
    Also swap all `param` types and pos_out to be writeable, rather than readable.
    AlexanderWells-diamond committed Aug 31, 2021
    Configuration menu
    Copy the full SHA
    34e0e6b View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    5f05dcb View commit details
    Browse the repository at this point in the history
  4. Create GetLine and GetMultiline, to allow being more specific on expe…

    …cted data formats without so many asserts.
    
    Note that this doesn't completely remove the need for asserts - _execute_commands always thinks the return type is Union[str, List[str]], so we need asserts there.
    
    And I didn't change GetState's Get commands as it's ambiguous to me what the data is supposed to be
    AlexanderWells-diamond committed Aug 31, 2021
    Configuration menu
    Copy the full SHA
    86c501a View commit details
    Browse the repository at this point in the history

Commits on Sep 1, 2021

  1. Fully split GetLine and GetMultiline from Get, to fix typing issues w…

    …hen used with _execture_commands
    
    Also add tests, and correct the GetState Get calls to GetMultiline.
    AlexanderWells-diamond committed Sep 1, 2021
    Configuration menu
    Copy the full SHA
    e807292 View commit details
    Browse the repository at this point in the history
  2. Remove extra strings on various asserts, they make the output too ver…

    …bose in many places.
    
    Not entirely happy with just removing them though - there's a lot of places where there isn't much information at all as to what went wrong...
    AlexanderWells-diamond committed Sep 1, 2021
    Configuration menu
    Copy the full SHA
    403a334 View commit details
    Browse the repository at this point in the history
  3. Initial test file for ioc.py.

    Pretty empty at the moment, but serves as a template for future testing.
    AlexanderWells-diamond committed Sep 1, 2021
    Configuration menu
    Copy the full SHA
    7bb9b5a View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    641e60a View commit details
    Browse the repository at this point in the history
  5. Beginnings of TABLE support

    Includes retrieving the MAX_LENGTH and FIELDS attributes from the table fields, and a new FieldInfo type to hold the returned info.
    
    Includes some (in-progress) refactoring of the values dict so it can hold both str and List[str] items - not clear how best to do this cleanly though.
    
    Includes some neatening up of how block and field names are created/manipulated to go between PandA and EPICS conventions.
    AlexanderWells-diamond committed Sep 1, 2021
    Configuration menu
    Copy the full SHA
    9e076a2 View commit details
    Browse the repository at this point in the history

Commits on Sep 2, 2021

  1. Addtional table info processing during GetFieldInfo

    Also changes table record creation to be handled completely separately to other fields - the List[str] was just too incompatible with the [str] type in the values dict.
    AlexanderWells-diamond committed Sep 2, 2021
    Configuration menu
    Copy the full SHA
    e281b83 View commit details
    Browse the repository at this point in the history

Commits on Sep 7, 2021

  1. Add option to retrieve multivalue data in Base64 format.

    Add tests.
    Rename `TableFieldParams` -> `TableFieldDetails`.
    Other misc comment changes
    AlexanderWells-diamond committed Sep 7, 2021
    Configuration menu
    Copy the full SHA
    dcf228a View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    02c0b05 View commit details
    Browse the repository at this point in the history

Commits on Sep 8, 2021

  1. Configuration menu
    Copy the full SHA
    799535e View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    524bec1 View commit details
    Browse the repository at this point in the history
  3. Enhance GetFieldInfo to retrieve the Descriptions for individual tabl…

    …e fields
    
    Add a test for table GetFieldInfo support. Could probably do with some more edge case tests.
    AlexanderWells-diamond committed Sep 8, 2021
    Configuration menu
    Copy the full SHA
    a95a9a4 View commit details
    Browse the repository at this point in the history

Commits on Sep 9, 2021

  1. Configuration menu
    Copy the full SHA
    c6e444e View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    2a1a3cf View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    3dc864c View commit details
    Browse the repository at this point in the history

Commits on Sep 10, 2021

  1. Start of table updater, including pack and unpack methods for all fie…

    …lds, and a mechanism to only Put data back based on the MODE record.
    
    Very messy and introduces a lot of special-case processing, so needs re-architecting somewhat.
    AlexanderWells-diamond committed Sep 10, 2021
    Configuration menu
    Copy the full SHA
    11ced1f View commit details
    Browse the repository at this point in the history
  2. Improve the MODE - SUBMIT processing so it actually works.

    Create enum for MODE labels
    Clean up the Panda/EPICS naming conventions somewhat
    AlexanderWells-diamond committed Sep 10, 2021
    Configuration menu
    Copy the full SHA
    249c67c View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    505a898 View commit details
    Browse the repository at this point in the history
  4. Extract packing and unpacking to new class.

    TableUpdater created to manage grouped table records based on its MODE record.
    AlexanderWells-diamond committed Sep 10, 2021
    Configuration menu
    Copy the full SHA
    1e62ffe View commit details
    Browse the repository at this point in the history
  5. Fix the widths of the waveformout record types by casting to/from app…

    …ropriate sized types on pack and unpack.
    AlexanderWells-diamond committed Sep 10, 2021
    Configuration menu
    Copy the full SHA
    b9a17ed View commit details
    Browse the repository at this point in the history

Commits on Sep 13, 2021

  1. Configuration menu
    Copy the full SHA
    4066c60 View commit details
    Browse the repository at this point in the history
  2. Create update_table mechanism to allow PandA to update EPICS records …

    …conditionally on the MODE enum
    
    Also many docs and TODOs tidied up
    AlexanderWells-diamond committed Sep 13, 2021
    Configuration menu
    Copy the full SHA
    21e43e3 View commit details
    Browse the repository at this point in the history
  3. Refactor table pack/unpack for consistency and to sort the list of fi…

    …elds itself.
    
    Alter on_update mechanism to simplify providing alternative ones.
    AlexanderWells-diamond committed Sep 13, 2021
    Configuration menu
    Copy the full SHA
    fe85eaf View commit details
    Browse the repository at this point in the history

Commits on Sep 14, 2021

  1. Configuration menu
    Copy the full SHA
    7da0d16 View commit details
    Browse the repository at this point in the history
  2. Refactor record creation so no write fields set an initial value

    Read fields are in records with initial value
    Param fields are out records with initial value
    Write fields are out records with no initial value
    AlexanderWells-diamond committed Sep 14, 2021
    Configuration menu
    Copy the full SHA
    ee04d7c View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    4c769f4 View commit details
    Browse the repository at this point in the history

Commits on Sep 15, 2021

  1. Refactor _ensure_block_number_present to only need one parameter.

    As per Tom's suggestion in PR review.
    AlexanderWells-diamond committed Sep 15, 2021
    Configuration menu
    Copy the full SHA
    7abc82f View commit details
    Browse the repository at this point in the history
  2. Update GetChanges docs

    Tom spotted a missing `s`
    
    Co-authored-by: Tom Cobb <[email protected]>
    AlexanderWells-diamond and coretl authored Sep 15, 2021
    Configuration menu
    Copy the full SHA
    43100fa View commit details
    Browse the repository at this point in the history
  3. Remove retrieving base64 value of tables

    Delete associated test
    AlexanderWells-diamond committed Sep 15, 2021
    Configuration menu
    Copy the full SHA
    fdcd060 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    e029b5f View commit details
    Browse the repository at this point in the history

Commits on Sep 16, 2021

  1. Add logging to ioc.py

    It's mostly replacing print() statements, and some exceptions as well. Some DEBUG level messages added, although there could/probably should be far more of them for true debugging purposes.
    
    Note that an awful lot of PandA field descriptions, and a lot of field labels, are too long to fit in EPICS so there are a LOT of warnings printed on startup.
    AlexanderWells-diamond committed Sep 16, 2021
    Configuration menu
    Copy the full SHA
    c0a7422 View commit details
    Browse the repository at this point in the history
  2. Add tests for creating records of most type-subtype pairs

    A few special cases that need separate tests have not been completed yet.
    A few other tests in here as well, for some standalone functions.
    AlexanderWells-diamond committed Sep 16, 2021
    Configuration menu
    Copy the full SHA
    0ef1718 View commit details
    Browse the repository at this point in the history

Commits on Sep 17, 2021

  1. Create HDFRecordController, allowing HDF5 files to be written

    The controller keeps track of all the records used for configuring the data capture, along with records to control the PandA's Arm/Disarm status and one more record to enable/disable capturing.
    
    Move ZNAM/ONAM constants into global scope as we now use them in many places.
    
    Move setting DESC into the record creation itself, rather than a line afterwards
    AlexanderWells-diamond committed Sep 17, 2021
    Configuration menu
    Copy the full SHA
    8033398 View commit details
    Browse the repository at this point in the history

Commits on Sep 23, 2021

  1. Initial attempt at HDF5 task cancelling and restarting - but it doesn…

    …'t work!
    
    For reasons as yet unknown the first invocation works, but after cancelling the task and creating a new one it no longer runs at all.
    AlexanderWells-diamond committed Sep 23, 2021
    Configuration menu
    Copy the full SHA
    79a5a9c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    40ebd0b View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    a3494e5 View commit details
    Browse the repository at this point in the history

Commits on Sep 24, 2021

  1. Configuration menu
    Copy the full SHA
    c96e528 View commit details
    Browse the repository at this point in the history
  2. Experiment adding pytest-mock package

    This might break all the CI as a lot of markers have appeared again...
    AlexanderWells-diamond committed Sep 24, 2021
    Configuration menu
    Copy the full SHA
    fd3920c View commit details
    Browse the repository at this point in the history
  3. Revert "Experiment adding pytest-mock package"

    This reverts commit fd3920c.
    
    Need a different package, and some packages must move out of dev-packages section
    AlexanderWells-diamond committed Sep 24, 2021
    Configuration menu
    Copy the full SHA
    7a8aa9e View commit details
    Browse the repository at this point in the history
  4. Add mock package to dev dependencies.

    Move packages from dev to prod dependencies, for reasons not entirely clear...
    AlexanderWells-diamond committed Sep 24, 2021
    Configuration menu
    Copy the full SHA
    c57fb8c View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    4f554e9 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    15b40ab View commit details
    Browse the repository at this point in the history
  7. Tests for the RecordUpdater and TablePacking classes

    Up to 64% coverage in ioc.py
    AlexanderWells-diamond committed Sep 24, 2021
    Configuration menu
    Copy the full SHA
    a35d12a View commit details
    Browse the repository at this point in the history

Commits on Sep 27, 2021

  1. Configuration menu
    Copy the full SHA
    f5c302e View commit details
    Browse the repository at this point in the history
  2. Change the clients to make repeated calls to data() function correctly.

    Previously the clients kept a permanent connection to the server's data port, which was never closed. This meant that even if we disabled capturing by stopping the task running the data capture, the PandA was still sending data to the port that just sat in the receive buffer forever.
    
    Also when a second call to data() was made, a second "XML FRAMED RAW" instruction was send to the PandA, which is ignored and so never responds as expected.
    AlexanderWells-diamond committed Sep 27, 2021
    Configuration menu
    Copy the full SHA
    eaedafc View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    754a61a View commit details
    Browse the repository at this point in the history

Commits on Sep 29, 2021

  1. Finish Table Scalar records, the Index record, and the mechanism to u…

    …pdate their values.
    
    Also disable all Puts to In records by default.
    AlexanderWells-diamond committed Sep 29, 2021
    Configuration menu
    Copy the full SHA
    0b9054e View commit details
    Browse the repository at this point in the history
  2. First round to TODO finishing off.

    Includes:
    Changing GetMultiline to only return lists
    A lot of comment and naming cleanup
    Get the filesystem's max path and max filename parameters through the OS module
    Applying DISP=1 to all In records, to enforce read-only behaviour.
    AlexanderWells-diamond committed Sep 29, 2021
    Configuration menu
    Copy the full SHA
    56cfc1f View commit details
    Browse the repository at this point in the history

Commits on Sep 30, 2021

  1. Few more misc tidyups:

    - Log any exceptions during startup phase of program
    - Improve logging in various places
    - Add validator to pos_mux fields
    AlexanderWells-diamond committed Sep 30, 2021
    Configuration menu
    Copy the full SHA
    888f994 View commit details
    Browse the repository at this point in the history
  2. Implementing most changes from code review this morning. Includes:

    - Specifying a ScalarRecordValue and TableRecordValue to simplify a lot of function signatures
    - Revamping create_softioc's behaviour - it'll now run forever by design, and looks a bit neater
    - Handle in_error from GetChanges - records will be marked with a severity=Invalid
    - Refactored _create_record_info somewhat
    - Removed all casting of initial_value, that now happens inside _create_record_info
    AlexanderWells-diamond committed Sep 30, 2021
    Configuration menu
    Copy the full SHA
    29e9d23 View commit details
    Browse the repository at this point in the history

Commits on Oct 1, 2021

  1. Configuration menu
    Copy the full SHA
    71d8ed1 View commit details
    Browse the repository at this point in the history
  2. Fix test

    AlexanderWells-diamond committed Oct 1, 2021
    Configuration menu
    Copy the full SHA
    5c9d0dd View commit details
    Browse the repository at this point in the history
  3. Another round of code review changes. Includes:

    - Adding UPPERCASE aliases to HDF5 records
    - Fix the type of all records for int/float distinction
    - Many TODO notes for more work
    - Fix up GetChanges in_error handling
    - Resolved many TODOs (most were no-ops)
    AlexanderWells-diamond committed Oct 1, 2021
    Configuration menu
    Copy the full SHA
    cabef3d View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    1500c19 View commit details
    Browse the repository at this point in the history

Commits on Oct 4, 2021

  1. Add NewType definitions for EpicsName and PandAName

    Make all necessary changes to the types of everything to make the type checker happy.
    AlexanderWells-diamond committed Oct 4, 2021
    Configuration menu
    Copy the full SHA
    c759ba0 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    40996fa View commit details
    Browse the repository at this point in the history
  3. Resolve issue with interactive_ioc blocking all async processing

    Before this change all on_update processing was blocked, as it all tries to use the same dispatcher's loop, which is stuck processing the interactive_ioc call.
    
    It's still very ugly, but it works...
    AlexanderWells-diamond committed Oct 4, 2021
    Configuration menu
    Copy the full SHA
    321e8e7 View commit details
    Browse the repository at this point in the history

Commits on Oct 5, 2021

  1. Mostly complete HDF5 record re-write.

    HDF5 writing is now controlled by the Capture and the Arm records. While Capture = 1 and Arm = 1 data will be captured into a file. When Arm = 0 data will stop being captured, but if Arm = 1 again then data will resume being sent to the same file.
    
    Still needs more manual, and any automated, testing!
    AlexanderWells-diamond committed Oct 5, 2021
    Configuration menu
    Copy the full SHA
    940ca3e View commit details
    Browse the repository at this point in the history
  2. Add new EndReasons to enum

    Also more minor HDF5 bits and pieces
    AlexanderWells-diamond committed Oct 5, 2021
    Configuration menu
    Copy the full SHA
    1c377b0 View commit details
    Browse the repository at this point in the history

Commits on Oct 6, 2021

  1. Configuration menu
    Copy the full SHA
    6600fe2 View commit details
    Browse the repository at this point in the history
  2. WIP - working mechanism for starting a new thread and waiting for Cap…

    …ture=1
    
    Lots of dead code here, but it works!
    AlexanderWells-diamond committed Oct 6, 2021
    Configuration menu
    Copy the full SHA
    4693f35 View commit details
    Browse the repository at this point in the history

Commits on Oct 7, 2021

  1. Configuration menu
    Copy the full SHA
    472393b View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    79fe03f View commit details
    Browse the repository at this point in the history
  3. Create the all_values_dict to be a central location for all current P…

    …andA values, which will act as the master data.
    
    TODO: Read and write to the dict
    AlexanderWells-diamond committed Oct 7, 2021
    Configuration menu
    Copy the full SHA
    0ce3e9b View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    beac706 View commit details
    Browse the repository at this point in the history

Commits on Oct 11, 2021

  1. First implementation of all_values_dict

    The dict will be updated by the regular GetChanges polling, and then used in the _RecordUpdater and _TableUpdater to roll back values if their Puts fail.
    AlexanderWells-diamond committed Oct 11, 2021
    Configuration menu
    Copy the full SHA
    9aff9e8 View commit details
    Browse the repository at this point in the history

Commits on Oct 13, 2021

  1. Configuration menu
    Copy the full SHA
    65be974 View commit details
    Browse the repository at this point in the history
  2. Remove all DISP keywords

    They're just unnecessary for the reason I used them - the Python device will override any changes from a caput done to an In record.
    AlexanderWells-diamond committed Oct 13, 2021
    Configuration menu
    Copy the full SHA
    811e198 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    c3ec877 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    51c3d79 View commit details
    Browse the repository at this point in the history
  5. Various things:

    - Handle exceptions in RecordUpdater and TableUpdater
    - Remove all ext_out fields, the only record we need to create is for the CAPTURE attribute
    - Created a _WriteRecordUpdater, for updates to records that don't take a value, they just need to be written
    AlexanderWells-diamond committed Oct 13, 2021
    Configuration menu
    Copy the full SHA
    983d95a View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    40a1847 View commit details
    Browse the repository at this point in the history
  7. Completed many TODOs:

    - Handle None values in _RecordUpdater
    - Add logging to HDF5 writing
    - Change _currently_capturing_record to reflect if a file is being captured
    -  Add required ZNAM&ONAM to records.bi
    AlexanderWells-diamond committed Oct 13, 2021
    Configuration menu
    Copy the full SHA
    02a89c8 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    59ad21f View commit details
    Browse the repository at this point in the history

Commits on Oct 14, 2021

  1. Refactor the PosMuxValidator into a more generic class

    Also complete a couple more TODOs.
    AlexanderWells-diamond committed Oct 14, 2021
    Configuration menu
    Copy the full SHA
    86cf087 View commit details
    Browse the repository at this point in the history
  2. Update after most recent Code Review. Includes:

    - Resolving many TODOs
    - Adding many TODOs about HDF5 processing
    - Move the Arm record out of HDF5 - it should always exist (if there's a PCAP block)
    - Naming consistency - make sure all record names end in "_name".
    AlexanderWells-diamond committed Oct 14, 2021
    Configuration menu
    Copy the full SHA
    8588f87 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    b95598c View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    f956580 View commit details
    Browse the repository at this point in the history

Commits on Oct 15, 2021

  1. Configuration menu
    Copy the full SHA
    22d93dd View commit details
    Browse the repository at this point in the history
  2. Refactor the IOC into its own subpackage.

    Move the table support into its own file.
    - Necessitated creation of the _types.py file for common types between other files
    - This required creating a TableRecordWrapper, to override the set() method.
    AlexanderWells-diamond committed Oct 15, 2021
    Configuration menu
    Copy the full SHA
    0548a8e View commit details
    Browse the repository at this point in the history

Commits on Oct 18, 2021

  1. Split HDF5 processing into its own standalone file.

    This was much easier than Table support!
    AlexanderWells-diamond committed Oct 18, 2021
    Configuration menu
    Copy the full SHA
    9efdb80 View commit details
    Browse the repository at this point in the history
  2. Various TODOs completed. Includes:

    Commands.py:
    - Fixing naming scheme of methods
    - Implemented better logging for fields that are known to have no attributes vs completely unknown fields
    
    __init__.py: Fixed __all__ definition
    AlexanderWells-diamond committed Oct 18, 2021
    Configuration menu
    Copy the full SHA
    f232f1a View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    6480117 View commit details
    Browse the repository at this point in the history
  4. Misc comments and a couple of new tests.

    Committing before refactoring _TableUpdater with some new structure that'll better associate the fields and their associated waveform records - there's no hard link at the moment and its pretty ugly.
    AlexanderWells-diamond committed Oct 18, 2021
    Configuration menu
    Copy the full SHA
    ea6259f View commit details
    Browse the repository at this point in the history
  5. More closely associate the table fields and the waveform records

    Came about as it was too easy to get misaligned fields and records, which results in nonsense data being read/written by the TablePacking class
    AlexanderWells-diamond committed Oct 18, 2021
    Configuration menu
    Copy the full SHA
    5254c1e View commit details
    Browse the repository at this point in the history

Commits on Oct 19, 2021

  1. Configuration menu
    Copy the full SHA
    5abf87e View commit details
    Browse the repository at this point in the history

Commits on Oct 20, 2021

  1. Initial easy tests for hdf_ioc.py.

    Note these only run one at a time - due to the records created in the HDF module the records they create clash and cause errors.
    AlexanderWells-diamond committed Oct 20, 2021
    Configuration menu
    Copy the full SHA
    c28e14d View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    d81c8dc View commit details
    Browse the repository at this point in the history

Commits on Oct 21, 2021

  1. Install aioca into dev packages.

    This also comes with an awful lot of other package updates... hope they all work...
    AlexanderWells-diamond committed Oct 21, 2021
    Configuration menu
    Copy the full SHA
    b12702c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    dd11d06 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    c863cc6 View commit details
    Browse the repository at this point in the history
  4. Refactor HDF module to take dynamic file names from the caller rather…

    … than create them itself.
    
    Refactor the command line and IOC usage of it to provide required file names. This meant I could get rid of a lot of the HDF5 code, which is nice.
    AlexanderWells-diamond committed Oct 21, 2021
    Configuration menu
    Copy the full SHA
    77f06a8 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    0a73034 View commit details
    Browse the repository at this point in the history

Commits on Oct 22, 2021

  1. Configuration menu
    Copy the full SHA
    528ad7b View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    8f95d4a View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    c2fedc9 View commit details
    Browse the repository at this point in the history

Commits on Oct 25, 2021

  1. Configuration menu
    Copy the full SHA
    af85df5 View commit details
    Browse the repository at this point in the history
  2. Heavy refactoring to make a mostly working create_softioc system test.

    Only works without update() running at the moment, need to include more data for GetChanges to consume.
    AlexanderWells-diamond committed Oct 25, 2021
    Configuration menu
    Copy the full SHA
    a021e8a View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    bdd9d01 View commit details
    Browse the repository at this point in the history
  4. Turn a lot of test data into real data.

    Add logger handler to capture exceptions from child process (which are the ones we care most about!)
    Add extra validation to bit_mux and pos_mux stages
    AlexanderWells-diamond committed Oct 25, 2021
    Configuration menu
    Copy the full SHA
    a9046f0 View commit details
    Browse the repository at this point in the history

Commits on Oct 26, 2021

  1. Allow multiprocessing tests to supply code coverage info.

    Also couple minor TODOs and comments added/corrected.
    AlexanderWells-diamond committed Oct 26, 2021
    Configuration menu
    Copy the full SHA
    37465c1 View commit details
    Browse the repository at this point in the history

Commits on Oct 27, 2021

  1. Configuration menu
    Copy the full SHA
    f422db2 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    09e611b View commit details
    Browse the repository at this point in the history
  3. Add many more tests, both system and unit, for ioc.

    Also fix a bug regarding in_error state the testing threw up.
    
    Not sure how much more coverage can sensibly be achieved - pretty much everything that's left are 1-line functions and/or logging messages, which cannot easily be checked for correctness.
    AlexanderWells-diamond committed Oct 27, 2021
    Configuration menu
    Copy the full SHA
    22389bb View commit details
    Browse the repository at this point in the history

Commits on Oct 28, 2021

  1. Last few tests, and fixes for setting alarm severity and status durin…

    …g record initialisation.
    
    With this we hit 95% code coverage, including 90% on the ioc.py module.
    AlexanderWells-diamond committed Oct 28, 2021
    Configuration menu
    Copy the full SHA
    26f02ab View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    8a31b2c View commit details
    Browse the repository at this point in the history
  3. Remove IgnoredException - it's never needed as the RecordUpdater is n…

    …ever instantiated for any of the table records as we provide initial values (or they're in records)
    AlexanderWells-diamond committed Oct 28, 2021
    Configuration menu
    Copy the full SHA
    af8b599 View commit details
    Browse the repository at this point in the history
  4. Remove TODO

    AlexanderWells-diamond committed Oct 28, 2021
    Configuration menu
    Copy the full SHA
    762fcf4 View commit details
    Browse the repository at this point in the history
  5. num parameter now captures infinitely if =0.

    Also misc other tidyup/cleanup bits and pieces.
    AlexanderWells-diamond committed Oct 28, 2021
    Configuration menu
    Copy the full SHA
    d8bf58d View commit details
    Browse the repository at this point in the history
  6. Add missing GetFieldInfo tests

    Also re-order them to match docs, and add an "ids" parameter for better parameterized test names.
    AlexanderWells-diamond committed Oct 28, 2021
    Configuration menu
    Copy the full SHA
    9adcf1d View commit details
    Browse the repository at this point in the history
  7. Add checks that the tests passed without logging warnings/errors.

    The caplog_workaround fixture is taken from a StackOverflow answer.
    AlexanderWells-diamond committed Oct 28, 2021
    Configuration menu
    Copy the full SHA
    7b461d3 View commit details
    Browse the repository at this point in the history

Commits on Oct 29, 2021

  1. Configuration menu
    Copy the full SHA
    3fb27d0 View commit details
    Browse the repository at this point in the history
  2. Centralise clearing records between runs

    Also change order of parameters on IocRecordFactory, to make it inline with the tables and hdf5 classes
    AlexanderWells-diamond committed Oct 29, 2021
    Configuration menu
    Copy the full SHA
    8074b32 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    18bb391 View commit details
    Browse the repository at this point in the history
  4. Refactor _tables.py so it also creates table-specific records.

    Fix tests (in their current places) so they all still pass.
    AlexanderWells-diamond committed Oct 29, 2021
    Configuration menu
    Copy the full SHA
    9dc2faf View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    685494d View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    1a6194c View commit details
    Browse the repository at this point in the history
  7. Move table-related tests into test_tables.py.

    Necessitated moving a lot of fixtures into conftest.
    AlexanderWells-diamond committed Oct 29, 2021
    Configuration menu
    Copy the full SHA
    d3198a9 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    9877dd8 View commit details
    Browse the repository at this point in the history
  9. Fix public v private naming scheme, which wasn't fixed when I first e…

    …xtracted all these types to their own files.
    AlexanderWells-diamond committed Oct 29, 2021
    Configuration menu
    Copy the full SHA
    f660a85 View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    30597ef View commit details
    Browse the repository at this point in the history

Commits on Jan 13, 2022

  1. Configuration menu
    Copy the full SHA
    78de13f View commit details
    Browse the repository at this point in the history

Commits on Jan 26, 2022

  1. Update to use PythonSoftIOC 4.0.0

    Uses longStringOut records, removes now unnecessary code, fixes tests
    AlexanderWells-diamond committed Jan 26, 2022
    Configuration menu
    Copy the full SHA
    709b460 View commit details
    Browse the repository at this point in the history
  2. Fix bug revealed by pythonSoftIOC update

    Looks like invalid initial_value values were just ignored previously.
    Now we have to ensure we don't pass them to the record creation function
    AlexanderWells-diamond committed Jan 26, 2022
    Configuration menu
    Copy the full SHA
    c199b56 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    0da0fe5 View commit details
    Browse the repository at this point in the history
  4. Use @pytest_asyncio.fixture to remove warnings

    There's still a handful of warnings for this, but they are in dependant
    modules and so we must wait for them to update
    AlexanderWells-diamond committed Jan 26, 2022
    Configuration menu
    Copy the full SHA
    7fb8b14 View commit details
    Browse the repository at this point in the history

Commits on Feb 14, 2022

  1. Update to PythonSoftIOC 4.0.1

    Also fixes a bug that this update revealed - we tried to write 40
    characters to a string record, which would  truncate the last character
    AlexanderWells-diamond committed Feb 14, 2022
    Configuration menu
    Copy the full SHA
    1d73af0 View commit details
    Browse the repository at this point in the history
  2. Do various cleanup and refactorings

    Includes:
    - Removing FTVL for record creation
    - Removing specifying initial_value
    - Fix a string length bug reveleaed by PythonSoftIOC 4.0.1
    - Adding asyncio_mode=auto to fix pytest warnings
    - Remove workarounds for pythonSoftIOC issue #37
    - Removing LOPR as I misunderstood its effect. Replaced with DRVL (and
    added DRVH) as appropriate
    - Neatened up many odds and ends
    AlexanderWells-diamond committed Feb 14, 2022
    Configuration menu
    Copy the full SHA
    e3261c3 View commit details
    Browse the repository at this point in the history

Commits on Apr 27, 2022

  1. Fix issues when running against actual PandA

    Includes truncating value for string record if its too long, and capping
    DRVH to the maximum value EPICS supports.
    
    Add a debug configuration for the IOC module.
    AlexanderWells-diamond committed Apr 27, 2022
    Configuration menu
    Copy the full SHA
    adfc762 View commit details
    Browse the repository at this point in the history
  2. Use longStringIn to remove errors

    Some "LABEL" records (e.g. FILTER1:LABEL) are >40 characters, which
    won't fit into a string record type.
    AlexanderWells-diamond committed Apr 27, 2022
    Configuration menu
    Copy the full SHA
    3d547ac View commit details
    Browse the repository at this point in the history

Commits on Aug 8, 2022

  1. Upgrade softioc version to add blocking

    This will mean all records will respect caput with callback, so the
    caput will not return until all on_update processing is finished.
    
    Also fixed up test issues that this update flagged up, regarding asyncio
    event loops being re-used.
    AlexanderWells-diamond committed Aug 8, 2022
    Configuration menu
    Copy the full SHA
    cc1e062 View commit details
    Browse the repository at this point in the history

Commits on Aug 26, 2022

  1. Refactor FieldInfos to have correct type hints

    Now type hints will correctly reflect the possible values for all fields
    
    Added retrieving description for unknown field type/subtypes
    
    Also includes name changes to avoid interfering with the inbuilt min
    and max functions
    
    Rewrote a lot of test framework to be less suseptable to the order of
    requests changing. We don't care about their order really, only that
    they're all called the right number of times
    AlexanderWells-diamond committed Aug 26, 2022
    Configuration menu
    Copy the full SHA
    9609161 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    db34404 View commit details
    Browse the repository at this point in the history

Commits on Aug 30, 2022

  1. Keep a reference to the create_softioc task

    Documentation warns that if we don't, the task may get garbage collected
    at any moment and simply stop executing.
    AlexanderWells-diamond committed Aug 30, 2022
    Configuration menu
    Copy the full SHA
    8d7ecd4 View commit details
    Browse the repository at this point in the history
  2. Make child UNITS record update parent's EGU field

    Also ensure we set EGU on startup to the same value as the UNITS field
    AlexanderWells-diamond committed Aug 30, 2022
    Configuration menu
    Copy the full SHA
    35919d5 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    02f5c11 View commit details
    Browse the repository at this point in the history

Commits on Sep 1, 2022

  1. Move TIME attributes onto base record

    Now the MIN and UNITS attributes are present on the base record
    (as well as UNITS still having its own record, so it can be set)
    
    Updates to the UNITS record are reflected into the .EGU field.
    
    Updates to the MIN value are placed in the record's .DRVL field
    
    Added tests to confirm setting these values from both PandA and EPICS
    works as expected.
    AlexanderWells-diamond committed Sep 1, 2022
    Configuration menu
    Copy the full SHA
    f5e5b70 View commit details
    Browse the repository at this point in the history
  2. Remove now defunct asserts

    This should have been done as part of commit
    9609161
    AlexanderWells-diamond committed Sep 1, 2022
    Configuration menu
    Copy the full SHA
    df7bdd8 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    0f91775 View commit details
    Browse the repository at this point in the history

Commits on Sep 5, 2022

  1. Prevent infinite cycles of values being set

    When a record is updated, it Puts the value to PandA, which then returns
    the value back to us on our next *CHANGES? call. We must stop the value
    from being re-set on the record if that value was just Put.
    
    This required a lot of rearchitecture. The RecordInfo structure is the
    only structure that is available in the *CHANGES handler, and so I
    refactored so that it is available in the RecordUpdater.
    This presented some circular dependency issues - the RecordUpdater must
    be created before the record, so the RecordInfo must be created before
    that, but then the record itself needs to live in the RecordInfo so
    must be put in at a later time.
    AlexanderWells-diamond committed Sep 5, 2022
    Configuration menu
    Copy the full SHA
    adf2713 View commit details
    Browse the repository at this point in the history
  2. Replace mbbIn with stringIn

    This reduces the number of warnings due to overlong enum labels during
    startup.
    
    We cannot so easily do this for mbbOut records as they can be set
    through EPICS, and so need to conform to the expected enums.
    AlexanderWells-diamond committed Sep 5, 2022
    Configuration menu
    Copy the full SHA
    193dbd8 View commit details
    Browse the repository at this point in the history

Commits on Sep 6, 2022

  1. Configuration menu
    Copy the full SHA
    f1bda40 View commit details
    Browse the repository at this point in the history
  2. Split out IOC system tests to their own file

    Also add test for setting errors on records.
    
    At this point there's only one or two lines of functional code that
    isn't tested - the rest is exception logging
    AlexanderWells-diamond committed Sep 6, 2022
    Configuration menu
    Copy the full SHA
    eeacce2 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    98380e5 View commit details
    Browse the repository at this point in the history

Commits on Sep 7, 2022

  1. Update the DRVH of the table's INDEX record

    When the PandA updates the size of its tables, the DRVH value of the
    INDEX record will be set to the maximum allowed value
    
    Note that this does not happen immediately when data is added from the
    EPICS side - we rely on the data being pushed to the PandA, and then it
    being reported back from a *CHANGES request?
    AlexanderWells-diamond committed Sep 7, 2022
    Configuration menu
    Copy the full SHA
    d96dd2f View commit details
    Browse the repository at this point in the history
  2. Refactor tests to ensure errors are suppressed

    When a channel connection is broken, aioca will issue an exception.
    By cleaning the cache at all opportunities we suppress the errors.
    AlexanderWells-diamond committed Sep 7, 2022
    Configuration menu
    Copy the full SHA
    723c7a7 View commit details
    Browse the repository at this point in the history
  3. Move the commands map to __post_init__

    This is a more sensible place for the data, which still has to be
    instantiated at runtime, due to needing a reference to the class
    instance, but makes more sense than creating it inline
    AlexanderWells-diamond committed Sep 7, 2022
    Configuration menu
    Copy the full SHA
    12259e7 View commit details
    Browse the repository at this point in the history

Commits on Sep 23, 2022

  1. Use a 10Hz refresh rate

    This is up from 1Hz. Fixed tests to accomodate this.
    AlexanderWells-diamond committed Sep 23, 2022
    Configuration menu
    Copy the full SHA
    203f1c9 View commit details
    Browse the repository at this point in the history
  2. Make action-write field always send update

    The value of the Action field is immaterial, all that matters is that it
    was set
    AlexanderWells-diamond committed Sep 23, 2022
    Configuration menu
    Copy the full SHA
    e9d0140 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    f35c313 View commit details
    Browse the repository at this point in the history
  4. Make bit_out records always toggle

    The PandA may update bit_out values much faster than our polling period.
    To represent this, we will toggle the record's value, and reset it on
    the next loop of update()
    AlexanderWells-diamond committed Sep 23, 2022
    Configuration menu
    Copy the full SHA
    b8b5770 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    bc0e865 View commit details
    Browse the repository at this point in the history
  6. Use Analog records, with PREC=0, for uint records

    This removes the need to clamp the values to the max of a 32-bit integer
    Instead we have the full value of a float64 to represent the value,
    which allows us to represent the full range of PandA values
    AlexanderWells-diamond committed Sep 23, 2022
    Configuration menu
    Copy the full SHA
    6a30ec7 View commit details
    Browse the repository at this point in the history

Commits on Nov 1, 2022

  1. Remove command line options that require extras

    This means the relevant command line options will only appear if the
    required extra modules have been installed.
    Without this, it was possible to run the hdf5 command line but it would
    just produce an ImportError
    AlexanderWells-diamond committed Nov 1, 2022
    Configuration menu
    Copy the full SHA
    a869aa0 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    a816ab9 View commit details
    Browse the repository at this point in the history
  3. Add stub functions for better errors for extras

    By providing the functions as hidden, they won't appear in any help
    output but will run if directly executed. This'll print a more helpful
    error for users who may be following a guide and not realizing they need
    to specifically install the extras.
    
    Alternative mechanisms like using `logging` don't work well as it means
    it'll either always or never print the message.
    AlexanderWells-diamond committed Nov 1, 2022
    Configuration menu
    Copy the full SHA
    f09254b View commit details
    Browse the repository at this point in the history

Commits on Nov 3, 2022

  1. Explicitly add hdf5 dependency to softioc extra

    This uses the poorly-documented interpolation feature of config parsing:
    https://docs.python.org/3/library/configparser.html#interpolation-of-values
    AlexanderWells-diamond committed Nov 3, 2022
    Configuration menu
    Copy the full SHA
    c4d05da View commit details
    Browse the repository at this point in the history