This page is no longer maintained — Please continue to the home page at www.scala-lang.org

Scala API for remote monitoring and control

The EISCAT Svalbard Radar is a fixed 42m dish and a fully steerable 32m dish used for research into the Suns interaction with the magnetosphere. JMaCS, the Java API derived from experimental software developed for the monitoring and controlling of these dishes, has recently been rewritten in Scala.

In this paper, soon to be presented at the forthcoming 14th International EISCAT Workshop, it is explained how, with the help of Scala's type members and the 'type-safe singleton' pattern, the new API allows a range of 'programmable device' components to be written more concisely, and in a type-safe manner. Comparisons are made with the original Java implementation.

This move to Scala was motivated by the better support provided for writing components, such as Programmable Devices(PDs), with traits, a more concise syntax, type inferencing and Actors. However, type-safety, language extensibility via libraries, functional programming and scripting proved to be invaluable.

Re: Scala API for remote monitoring and control

 [2009-07-22] Preprint version 2: couple of refinements, including small changes to the text of the conclusions.

 [2009-07-22] Preprint version 3: §2.1 bullets refined.

 [2009-07-22] Preprint version 4: added sentence to opening paragraph.

 [2009-07-24] Preprint version 5: minor fixes; added link to MaCS web-page.

 [2009-09-09] Preprint version 6: rewrote §3.2; changes to fig. 5 (example program) and associated text, following API refinement.

Re: Scala API for remote monitoring and control

There is now a MaCS web-page, with (so far) a link to the scaladoc.

Re: Scala API for remote monitoring and control

MaCS 1.0r1 is now available, and anyone wishing to start defining their own MaCS

Programmable Device components may now do so, by following the instructions here:

http://lafros.com/macs

 

Copyright © 2012 École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Switzerland