]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/chips/atm128/atm128hardware.h
Merge TinyOS 2.1.1 into master.
[tinyos-2.x.git] / tos / chips / atm128 / atm128hardware.h
index 89f312f8481559f06dafa048651b068c57a8c259..b412d90fe1a7c74c1110d130db91151f39f1a317 100644 (file)
@@ -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