{"id":25895493,"url":"https://github.com/diamondlightsource/epics_device","last_synced_at":"2026-04-02T02:53:36.794Z","repository":{"id":28391066,"uuid":"31905311","full_name":"DiamondLightSource/epics_device","owner":"DiamondLightSource","description":"Framework for EPICS IOC driver implementation","archived":false,"fork":false,"pushed_at":"2024-12-18T15:55:06.000Z","size":1276,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-12-18T16:39:45.560Z","etag":null,"topics":["epics-support-module","from-dls-controls"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DiamondLightSource.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-03-09T15:10:20.000Z","updated_at":"2024-12-18T15:45:06.000Z","dependencies_parsed_at":"2024-01-11T11:22:43.405Z","dependency_job_id":"28dc7bc1-3204-411a-80cf-66faca2fda21","html_url":"https://github.com/DiamondLightSource/epics_device","commit_stats":null,"previous_names":["diamondlightsource/epics_device"],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiamondLightSource%2Fepics_device","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiamondLightSource%2Fepics_device/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiamondLightSource%2Fepics_device/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiamondLightSource%2Fepics_device/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DiamondLightSource","download_url":"https://codeload.github.com/DiamondLightSource/epics_device/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241582515,"owners_count":19985845,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["epics-support-module","from-dls-controls"],"created_at":"2025-03-02T22:31:37.134Z","updated_at":"2026-04-02T02:53:36.748Z","avatar_url":"https://github.com/DiamondLightSource.png","language":"C","readme":"EPICS Device\n============\n\nThis is a lightweight framework for implementing record interfaces for EPICS\nIOCs.  This framework is designed to be used in combination with the\nepicsdbbuilder library for building the database file, but can be used\nstandalone.\n\n\n============== ==============================================================\nSource code    https://github.com/DiamondLightSource/epics_device\nDocumentation  https://DiamondLightSource.github.io/epics_device\n============== ==============================================================\n\n\nSimple Example\n--------------\n\nFor example, to interface to a simple read-write register interface, the\nfollowing two fragments of code will serve.  This interface requires one write\nPV and one read PV, implemented as follows.\n\nFirst the interface is implemented and published in C::\n\n    int read_register_value(void) { ... }\n    void write_register_value(int value) { ... }\n\n    void publish_pvs(void)\n    {\n        PUBLISH_READER(longin, \"REGISTER\", read_register_value);\n        PUBLISH_WRITER(longout, \"REGISTER\", write_register_value);\n    }\n\nThe corresponding database can be declared (in Python) thus::\n\n    read_reg = longIn('REGISTER', DESC = 'Register readback')\n    longOut('REGISTER', DESC = 'Register control', FLNK = read_reg)\n\nWith a little more code to tie things together this is a complete example.  For\nmore details see the example IOCS in the ``examples/`` directory and the\ndocumentation in ``docs/``.\n\n\nVersion 2.0\n-----------\n\nVersion 2.0 introduces a major incompatibility: the ``mbbi`` and ``mbbo`` record\nsupport no longer uses ``RVAL`` but instead uses ``VAL`` with conversion\ndisabled.  This means the following changes apply:\n\n* ``TYPEOF(mbbi)`` and ``TYPEOF(mbbo)`` have changed from ``unsigned int`` to\n  ``uint16_t``.  This means that all code declaring records of these types will\n  need to be changed accordingly.\n\n* The ``mbbIn`` and ``mbbOut`` functions no longer allow the field values to be\n  assigned: these are only meaningful for ``RVAL``, which is now ignored.\n\n\nINSTALLING\n==========\n\nThis library should be installed as a standard EPICS support package.  This\nmeans that following two files in the ``configure`` directory must be edited:\n``configure/RELEASE`` and ``configure/CONFIG_SITE``.\n\n``configure/RELEASE``\n    Change the symbol ``EPICS_BASE`` to point to your local installation of\n    EPICS.\n\n``configure/CONFIG_SITE``\n    This file contains a number of symbols that will need to be customised.\n\n    ``CROSS_COMPILER_TARGET_ARCHS``\n        You almost certainly don't want these lines.  Delete them from your\n        version unless you know they're needed.\n\n    ``PYTHON``\n        This should probably be set to ``python``.\n\n    ``EPICSDBBUILDER``\n        The python library `epicsdbbuilder`_ is a prerequisite for building and\n        using this library.\n\n        This symbol can be in one of two formats, either an explicit path to the\n        directory containing `epicsdbbuilder`_ or a version number understood by\n        ``pkg_resources.require``.  Note that if an explicit path is given it is\n        not necessary to install or setup ``epicsdbbuilder``, it can be used in\n        place.\n\nSee https://DiamondLightSource.github.io/epics_device for more detailed documentation.\n\n..  _epicsdbbuilder: https://github.com/Araneidae/epicsdbbuilder\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiamondlightsource%2Fepics_device","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiamondlightsource%2Fepics_device","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiamondlightsource%2Fepics_device/lists"}