background image
Tech Note #36: Introduction to the Alarm Clock Protocol (ACP)
1998 Bionic Buffalo Corporation; All Rights Reserved.
                  12 June 1998
1 of 8
Bionic Buffalo Tech Note #36:
Introduction to the Alarm Clock Protocol (ACP)
last revised Friday 12 June 1998
©1998 Bionic Buffalo Corporation. All rights reserved.
The Alarm Clock Protocol (ACP) defines communication with an Alarm Clock Client and an
Alarm Clock Server. (In this document, these will be called, simply, the client and the server.) A
server provides time-related services to its clients.
Although ACP may be used in a wide range of applications, the most common use is expected
to be in local networks of co-operating, embedded systems, within single platforms among tasks
or processes, and among tasks or processes within coupled, parallel processors.
A client may communicate with a server using connectionless or connection-oriented protocols.
Each message from the client to the server consists of a sequence of tagged fields. Multiple
requests, responses, and notifications can be aggregated within the same message. Aggregation
improves efficiency and can be used insure that the tagged fields depart the sender or arrive at
the server at the same time. (Aggregation may also occur when the server implementation
processes requests in groups, for implementation reasons unrelated to the semantics of the
There are other protocols, which provide some of these services. However, they were deemed
inadequate for the requirements and were rejected. BBC plans to make the ACP standard
public, since it fills a niche not occupied by any other known standard.
ACP is designed to inter-operate with software written to POSIX.4. ACP remains aware of
multiple clocks, and specifies time values to the nearest nanosecond. On the other hand, ACP’s
tag-based design allows future extensions for greater precision or other features.
Time, Date, and Interval Specification
ACP time values are specified to the nearest nanosecond, using a seconds/nanoseconds pair as
in POSIX.4. However, ACP uses a different scheme for dates. ACP dates are based on the
Astronomical Julian Day, a simple count of days since 1 January, 4713 BC. These day numbers
advance at noon (rather than at midnight).
The use of day numbers avoids the problem, which will occur in the year 2036 with systems
using a count of seconds since the beginning of the year 1900. Since ACP was designed for use
by embedded systems (many of which will survive the year 2036), this achieves a significant
design goal. A 32-bit signed integer is used for day numbers.