X-Git-Url: https://oss.titaniummirror.com/gitweb/?p=tinyos-2.x.git;a=blobdiff_plain;f=tos%2Fchips%2Fatm128%2Fatm128hardware.h;h=b412d90fe1a7c74c1110d130db91151f39f1a317;hp=89f312f8481559f06dafa048651b068c57a8c259;hb=e9bfab607e051bae6afb47b44892ce37541d1b44;hpb=adf1de6c009d13b7b52e68535c63b28f59c97400 diff --git a/tos/chips/atm128/atm128hardware.h b/tos/chips/atm128/atm128hardware.h index 89f312f8..b412d90f 100644 --- a/tos/chips/atm128/atm128hardware.h +++ b/tos/chips/atm128/atm128hardware.h @@ -135,6 +135,23 @@ mcu_power_t mcombine(mcu_power_t m1, mcu_power_t m2) @safe() { return (m1 < m2)? m1: m2; } -#endif //_H_atmega128hardware_H +/* 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