Skip to content
Alexandru Dascalu edited this page Jun 26, 2020 · 134 revisions

Wiki > The Backend System > Creating and Basics of IOCs

Before Creating an IOC

Remember, EPICS is a collaboration! Why create an IOC when you can just use one that's already out there? If the device is not ISIS specific, before thinking about creating an IOC check whether it is listed here and, if not, email the mailing list here.

Creating an IOC

Building a new IOC? Before you get started, take a look at the relevant instrument page to see if there's any useful information for the device you're about to write an IOC for. Otherwise, let's get going. If you have problems see See IOC and device Troubleshooting.

There are two sorts of IOCs, EPICs and pycaspy. For EPICs type see the automatic creation below for pycaspy see the pycaspy ioc.

Automatically

If you're building a new StreamDevice IOC you can use the IOC Generator script, for developer info see the wiki.

Manually

If you're not creating a StreamDevice IOC or you you would like to know how an IOC could be created manually see:

Fleshing out the IOC

  1. You can now flesh out your IOC to work. I would encourage you to do this in a TDD style (if not write the tests afterwards) and make sure you follow the conventions. To write in a TDD style use:

    If you used the script to create your IOC an empty emulator and IOC tests will have been created for you.

  2. Record simulation

  3. IOC Finishing Touches

  4. Running (and testing) IOC

  5. Add logging

  6. Add any manuals used to the manuals directory

  7. Add a page about the device in the correct categories in Specific Device IOC

  8. Add IOC to EPICS hardware support list

  9. Create an OPI and send it to instrument scientists for approval.

Conventions

Other

Debugging IOCs

Debug builds of IOCs are built in jenkins and can be deployed to instruments, see here.

Specific IOC Information

For information on specific IOCs see Specific Device IOC

Further reading

Clone this wiki locally