Kameleon - a Behavior-Rich, Non-Memoryless and Time-Aware Generic Simulator
Ricardo Fernandes, Nicolas Senaud · HAL (Le Centre pour la Communication Scientifique Directe) · 2017
At ESS, thousands of devices will be used to control both the machine and end-station instruments. To enable ongoing development when access to these devices is not possible (for whatever the reason), Kameleon was implemented. It is a behavior-rich, non-memoryless and time-aware generic simulator that handles clients through a TCP/IP connection. An instance of this client is an EPICS IOC or a Tango Device Server. Kameleon consumes a user-defined file that describes the commands received from a client and, optionally, the reaction to these through statuses sent back to the client. Key features are: 1) Ubiquitous (runs in disparate platforms such as Windows and Linux). 2) Behavior-rich (predefined behaviors as well as user-defined). 3) Non-memoryless (the state of the simulation can be preserved between events and/or elapsed time). 4) Time-aware (statuses can be sent to the client either event-based or time-based). 5) Flexible (commands and statuses are described in a simple user-defined file - nothing is hard-coded in Kameleon). Kameleon will be used in a myriad of scenarios at ESS such as development of EPICS devices support, IOCs, OPI screens, testing of IOCs and alarm workflows.