From: Stephen Leake <stephen_leake@stephe-leake.org>
Subject: Re: AW: Translating an embedded C algorithm
Date: Fri, 19 Jan 2007 04:33:42 -0500
Date: 2007-01-19T04:33:42-05:00 [thread overview]
Message-ID: <uvej3webt.fsf@stephe-leake.org> (raw)
In-Reply-To: 87k5zk7m8j.fsf@ludovic-brenta.org
Ludovic Brenta <ludovic@ludovic-brenta.org> writes:
> Markus E Leypold writes:
>> Ludovic Brenta <ludovic@ludovic-brenta.org> writes:
>>> Right, and there would be no need for a silly INVALID_TEMPERATURE.
>>> What *is* an invalid temperature anyway? One that needs crutches?
>>> One that is excused from military service? And why would you ever
>>> return an invalid temperature to your caller? etc. etc.
>>
>> | >> --| Temperature in �C x 10. INVALID_TEMPERATURE if out of range.
>>
>> If the sensor is out of order or the temperature leaves the range
>> where it functions properly?
>>
>> :-).
>
> My point it this: if the sensor is out of order, then there is no
> known temperature; not a known "invalid" temperature. The proper way
> to handle that in Ada is with an exception, not a special value of
> type Degrees_C.
In a real-time system that is tolerant of hardware failures, every
hardware measurement should be accompanied by some sort of quality
flag. In this case, a boolean would do; Temperature_Valid.
The point is that when hardware failures are expected, they are best
handled by normal data, not exceptions.
Using a special value of Temperature to represent hardware failure is
an example of in-band signaling; using a separate quality flag is
out-of-band signaling. Out-of-band is a bit more complicated, but
much more robust.
This example program is far too small to show the crucial differences
between C and Ada.
--
-- Stephe
next prev parent reply other threads:[~2007-01-19 9:33 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <E473CA319B6D514981A06AE6742A1FD82B067D@GLDMS10607.goldlnk.rootlnka.net>
2007-01-17 7:07 ` AW: Translating an embedded C algorithm Grein, Christoph (Fa. ESG)
2007-01-17 10:26 ` Ludovic Brenta
2007-01-17 16:44 ` Markus E Leypold
2007-01-18 8:49 ` Ludovic Brenta
2007-01-18 9:53 ` Markus E Leypold
2007-01-19 9:33 ` Stephen Leake [this message]
2007-01-19 19:23 ` Cesar Rabak
2007-01-19 20:27 ` Robert A Duff
2007-01-19 23:15 ` Cesar Rabak
2007-01-20 9:54 ` Dmitry A. Kazakov
2007-01-20 21:03 ` AW: " Jeffrey Carter
2007-01-20 21:38 ` Robert A Duff
2007-01-22 2:30 ` Jeffrey Carter
2007-01-23 7:43 ` Stephen Leake
2007-01-23 19:34 ` Jeffrey R. Carter
[not found] ` <1%trh.15628$X72.889@newsread3.news.pas.earthlink.net>
2007-01-17 18:44 ` Niklas Holsti
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox