{"action":"created","issue":{"url":"https://api.github.com/repos/NSLS-II/ophyd/issues/355","repository_url":"https://api.github.com/repos/NSLS-II/ophyd","labels_url":"https://api.github.com/repos/NSLS-II/ophyd/issues/355/labels{/name}","comments_url":"https://api.github.com/repos/NSLS-II/ophyd/issues/355/comments","events_url":"https://api.github.com/repos/NSLS-II/ophyd/issues/355/events","html_url":"https://github.com/NSLS-II/ophyd/issues/355","id":169404727,"number":355,"title":"Document common completion reporting mechanisms from EPICS","user":{"login":"klauer","id":5139267,"avatar_url":"https://avatars1.githubusercontent.com/u/5139267?v=4","gravatar_id":"","url":"https://api.github.com/users/klauer","html_url":"https://github.com/klauer","followers_url":"https://api.github.com/users/klauer/followers","following_url":"https://api.github.com/users/klauer/following{/other_user}","gists_url":"https://api.github.com/users/klauer/gists{/gist_id}","starred_url":"https://api.github.com/users/klauer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/klauer/subscriptions","organizations_url":"https://api.github.com/users/klauer/orgs","repos_url":"https://api.github.com/users/klauer/repos","events_url":"https://api.github.com/users/klauer/events{/privacy}","received_events_url":"https://api.github.com/users/klauer/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2016-08-04T15:35:36Z","updated_at":"2017-09-07T12:36:46Z","closed_at":null,"author_association":"OWNER","body":"Request from @danielballan \n- Put completion (aka put callbacks)\n- Record processing (with or without busy record)\n- Done flag in a record (or field)\n"},"comment":{"url":"https://api.github.com/repos/NSLS-II/ophyd/issues/comments/327786233","html_url":"https://github.com/NSLS-II/ophyd/issues/355#issuecomment-327786233","issue_url":"https://api.github.com/repos/NSLS-II/ophyd/issues/355","id":327786233,"user":{"login":"danielballan","id":2279598,"avatar_url":"https://avatars3.githubusercontent.com/u/2279598?v=4","gravatar_id":"","url":"https://api.github.com/users/danielballan","html_url":"https://github.com/danielballan","followers_url":"https://api.github.com/users/danielballan/followers","following_url":"https://api.github.com/users/danielballan/following{/other_user}","gists_url":"https://api.github.com/users/danielballan/gists{/gist_id}","starred_url":"https://api.github.com/users/danielballan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danielballan/subscriptions","organizations_url":"https://api.github.com/users/danielballan/orgs","repos_url":"https://api.github.com/users/danielballan/repos","events_url":"https://api.github.com/users/danielballan/events{/privacy}","received_events_url":"https://api.github.com/users/danielballan/received_events","type":"User","site_admin":false},"created_at":"2017-09-07T12:36:46Z","updated_at":"2017-09-07T12:36:46Z","author_association":"CONTRIBUTOR","body":"From an email I wrote for a scientist, some content that might be useful whenever we get around to this:\r\n\r\nUnfortunately, documenting the various ways that EPICS handles \"completion\" is still an open issue. My (possibly flawed) understanding is:\r\n\r\n1. Some multi-PV devices like EPICS motors have a separate \"readback\" and/or \"done\" PVs that are involved in checking for completion, and ophyd Devices that span these multi-PV devices handle coordination of that information.\r\n2. Simple EPICS signals do not have separate readback or done PVs. Instead, they use \"put completion\". The EPICS client sends a message \"write this value\" and the EPICS server on the IOC sends back the message \"OK,\" meaning, \"OK I have written that value\". This all happens through just one PV.\r\n3. Other, less smart EPICS signals do not implement put completion. When the EPICS client sends a message, \"write this value\", the server immediately answers \"OK\", meaning, \"OK I _will_ write that value\" even though it hasn't actually done yet. For these, if we want to know when the writing is actually complete, our only option is to poll the server with messages to read the value and see whether it has changed yet. Again, this happens through just one PV.\r\n\r\nBy default, ophyd.EpicsSignal assumes it is talking to an EPICS server like the one in (2). It waits to get back that response (\"OK I have written that value\") and tells bluesky that it is ready. If it is hanging instead, then I think that the server is never sending a response or that the response is for whatever reason getting lost in network traffic (which is not too unusual, sadly)."}}
{"actor":{"display_login":"danielballan"}}