From 646eac3794ffa98c511e2523cff39694fe06049a Mon Sep 17 00:00:00 2001 From: sallai Date: Mon, 22 Sep 2008 16:02:02 +0000 Subject: [PATCH] added NxFloat support --- tos/chips/atm1281/atm128hardware.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tos/chips/atm1281/atm128hardware.h b/tos/chips/atm1281/atm128hardware.h index 56ef6d10..a5800f16 100644 --- a/tos/chips/atm1281/atm128hardware.h +++ b/tos/chips/atm1281/atm128hardware.h @@ -188,5 +188,23 @@ typedef struct uint8_t xmbk : 1; //!< External Memory Bus-keeper Enable } Atm128_XMCRB_t; +/* Floating-point network-type support. + These functions must convert to/from a 32-bit big-endian integer that follows + the layout of Java's java.lang.float.floatToRawIntBits method. + Conveniently, for the AVR family, this is a straight byte copy... +*/ + +typedef float nx_float __attribute__((nx_base_be(afloat))); + +inline float __nesc_ntoh_afloat(const void *COUNT(sizeof(float)) source) @safe() { + float f; + memcpy(&f, source, sizeof(float)); + return f; +} + +inline float __nesc_hton_afloat(void *COUNT(sizeof(float)) target, float value) @safe() { + memcpy(target, &value, sizeof(float)); + return value; +} #endif //_H_atmega128hardware_H -- 2.39.2