[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[paparazzi-commits] [4766] fix handling of doubles
From: |
Pascal Brisset |
Subject: |
[paparazzi-commits] [4766] fix handling of doubles |
Date: |
Tue, 30 Mar 2010 10:00:38 +0000 |
Revision: 4766
http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4766
Author: hecto
Date: 2010-03-30 10:00:29 +0000 (Tue, 30 Mar 2010)
Log Message:
-----------
fix handling of doubles
Modified Paths:
--------------
paparazzi3/trunk/sw/airborne/downlink.h
paparazzi3/trunk/sw/airborne/sim/ivy_transport.h
paparazzi3/trunk/sw/lib/ocaml/convert.c
paparazzi3/trunk/sw/lib/ocaml/pprz.ml
Modified: paparazzi3/trunk/sw/airborne/downlink.h
===================================================================
--- paparazzi3/trunk/sw/airborne/downlink.h 2010-03-30 09:58:26 UTC (rev
4765)
+++ paparazzi3/trunk/sw/airborne/downlink.h 2010-03-30 10:00:29 UTC (rev
4766)
@@ -98,6 +98,7 @@
#define DownlinkPutDoubleByAddr(_chan, _x) Transport(_chan,
PutDoubleByAddr(_x))
#define DownlinkPutFloatArray(_chan, _n, _x) Transport(_chan,
PutFloatArray(_n, _x))
+#define DownlinkPutDoubleArray(_chan, _n, _x) Transport(_chan,
PutDoubleArray(_n, _x))
#define DownlinkPutInt16Array(_chan, _n, _x) Transport(_chan,
PutInt16Array(_n, _x))
#define DownlinkPutUint16Array(_chan, _n, _x) Transport(_chan,
PutUint16Array(_n, _x))
#define DownlinkPutInt32Array(_chan, _n, _x) Transport(_chan,
PutInt32Array(_n, _x))
Modified: paparazzi3/trunk/sw/airborne/sim/ivy_transport.h
===================================================================
--- paparazzi3/trunk/sw/airborne/sim/ivy_transport.h 2010-03-30 09:58:26 UTC
(rev 4765)
+++ paparazzi3/trunk/sw/airborne/sim/ivy_transport.h 2010-03-30 10:00:29 UTC
(rev 4766)
@@ -27,9 +27,11 @@
#define IvyTransportPutInt8ByAddr(x) IvyTransportPutIntByAddr(x) Space()
#define IvyTransportPutInt16ByAddr(x) IvyTransportPutIntByAddr(x) Space()
#define IvyTransportPutInt32ByAddr(x) IvyTransportPutIntByAddr(x) Space()
-#define IvyTransportPutFloatByAddr(x) ivy_p += sprintf(ivy_p, "%f ", *x);
-#define IvyTransportPutDoubleByAddr(x) ivy_p += sprintf(ivy_p, "%f ", *x);
+#define IvyTransportPutOneFloatByAddr(x) ivy_p += sprintf(ivy_p, "%f", *x);
+#define IvyTransportPutFloatByAddr(x) IvyTransportPutOneFloatByAddr(x) Space()
+#define IvyTransportPutDoubleByAddr(x) IvyTransportPutOneFloatByAddr(x) Space()
+
#define IvyTransportPutArray(_put, _n, _x) { \
int i; \
for(i = 0; i < _n; i++) { \
@@ -42,3 +44,5 @@
#define IvyTransportPutInt16Array(_n, _x)
IvyTransportPutArray(IvyTransportPutIntByAddr, _n, _x)
#define IvyTransportPutUint16Array(_n, _x)
IvyTransportPutArray(IvyTransportPutUintByAddr, _n, _x)
#define IvyTransportPutUint32Array(_n, _x)
IvyTransportPutArray(IvyTransportPutUintByAddr, _n, _x)
+#define IvyTransportPutFloatArray(_n, _x)
IvyTransportPutArray(IvyTransportPutOneFloatByAddr, _n, _x)
+#define IvyTransportPutDoubleArray(_n, _x) IvyTransportPutFloatArray(_n, _x)
Modified: paparazzi3/trunk/sw/lib/ocaml/convert.c
===================================================================
--- paparazzi3/trunk/sw/lib/ocaml/convert.c 2010-03-30 09:58:26 UTC (rev
4765)
+++ paparazzi3/trunk/sw/lib/ocaml/convert.c 2010-03-30 10:00:29 UTC (rev
4766)
@@ -39,6 +39,14 @@
return copy_double((double)(*x));
}
+value
+c_double_of_indexed_bytes(value s, value index)
+{
+ double *x = (double*)(String_val(s) + Int_val(index));
+
+ return copy_double(*x);
+}
+
value
c_sprint_float(value s, value index, value f) {
float *p = (float*) (String_val(s) + Int_val(index));
Modified: paparazzi3/trunk/sw/lib/ocaml/pprz.ml
===================================================================
--- paparazzi3/trunk/sw/lib/ocaml/pprz.ml 2010-03-30 09:58:26 UTC (rev
4765)
+++ paparazzi3/trunk/sw/lib/ocaml/pprz.ml 2010-03-30 10:00:29 UTC (rev
4766)
@@ -75,6 +75,7 @@
let messages_xml = fun () -> Lazy.force lazy_messages_xml
external float_of_bytes : string -> int -> float = "c_float_of_indexed_bytes"
+external double_of_bytes : string -> int -> float = "c_double_of_indexed_bytes"
external int32_of_bytes : string -> int -> int32 = "c_int32_of_indexed_bytes"
external int8_of_bytes : string -> int -> int = "c_int8_of_indexed_bytes"
external int16_of_bytes : string -> int -> int = "c_int16_of_indexed_bytes"
@@ -238,6 +239,9 @@
| Scalar "uint16" -> Int (Char.code buffer.[index+1] lsl 8 + Char.code
buffer.[index]), sizeof _type
| Scalar "int16" -> Int (int16_of_bytes buffer index), sizeof _type
| Scalar "float" -> Float (float_of_bytes buffer index), sizeof _type
+ | Scalar "double" ->
+ fprintf stderr "%s\n%!" (Debug.xprint (String.sub buffer index 8));
+Float (double_of_bytes buffer index), sizeof _type
| Scalar ("int32" | "uint32") -> Int32 (int32_of_bytes buffer index),
sizeof _type
| ArrayType t ->
(** First get the number of values *)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [paparazzi-commits] [4766] fix handling of doubles,
Pascal Brisset <=