Skip to content
druzmieres edited this page Jan 20, 2016 · 9 revisions

jBACI review and implementation

Acronyms

  • ACS: ALMA Common Software
  • BACI: BAsic Control Interface

Purpose

The objective of this project is to review the current implementation of the BACI properties done in Java, and complete the missing parts of it as needed.

Current Status

ACS provides a software infrastructure common to all partners and consists of a documented collection of common patterns in and of components, which implement those patterns. The heart of ACS is based on a distributed component model, with ACS components implemented as CORBA objects in any of the supported programming languages. The teams responsible for the control system's development use ACS Components as the basis for control high level entities and for the implementation of devices such as an antenna mount control. ACS provides common CORBA-based services such as logging, error and alarm management, configuration database and lifecycle management.

One of the part of ACS is BACI, which defines a framework that forms a base for the IDL definition of the interfaces for the controlled objects. BACI itself does not define any specific control system (for instance a control system designed to manage a synchrotron light source or a network of gas pumps). It does, however, restrict the set of all definable objects with the IDL to a specific set that conforms to BACI design guidelines and uses BACI interfaces in a predefined way.

Currently the BACI specification has an implementation in C++, this was done in the collaboration framework of ALMA, which uses this implementation in its Control system software. Nowadays, there has been huge interest from the ACS users community, to start to use a BACI implementation based on Java programming language, there is an outdated implementation which might not work completely. Hence, it needs to be reviewed.

Objectives

  1. Review the BACI specification requirements, considering monitoring and alarm as well
    1. Check ACS and ALMA documentation, this includes manual and twiki pages
  2. Review the current jBACI code available as part of the ACS community repository (open source software)
    1. Prepare a machine to install ACS community build. ACS community requires RHEL 6 64-bit
    2. Understand and prepare the development environment in the prepared machine.
  3. Implement in Java the missing parts of jBACI
    1. Add unit tests and instructions to automatize the build.
    2. Developed code must be according to the ACS community standards, therefore the results may result in a contribution to the ACS community.

Planning

# Milestone/Deliverable Planned Completion Date Status
1 Documentation of the requirements for this project and preparation of the environment/machine End of week 2 PENDING
2 Documentation of the proposed solution End of week 3 PENDING
3 Implementation and testing End of week 6 PENDING
4 Presentation for ADC Software Group and documentation on twiki page End of week 8 PENDING

Worklogs

2016/01/11

  1. Ubuntu & VirtualBox installed.

2016/01/12

  1. CentOS 6.7 installed on virtual
  2. ACS required packages downloaded and installed.

2016/01/13

  1. Additional ACS pre-installation procedures.
  2. ACS version 2015.2 successfully installed and started.

2016/01/14

  1. Bugs found on ACS version 2015.2.
  2. Unable to run more than one ACS Instance at the same time.
  3. Unable to start more than one container.
  4. After invoking 'acsStop' the lock file is not deleted.
  5. ACS version 2014.6 installed.

2016/01/15

  1. Eclipse installed.
  2. jBaci project configured.

2016/01/18

  1. Read jBaci & Baci code.
  2. Read documentation (BACI supported types, BACI properties).
  3. Printed Baci UML.

2016/01/19

  1. Read jBaci & Baci code.
  2. Printed jBaci UML.

2016/01/20

  1. Ran jBaci old tests.

Additional Info