- xdr_data_t time; // Time when this packet was generated
- xdr_data_t timeusec; // Microsecs when this packet was generated
- xdr_data2_t lat; // Position, orientation, speed
- xdr_data2_t lon; // ...
- xdr_data2_t alt; // ...
- xdr_data2_t hdg; // ...
- xdr_data2_t roll; // ...
- xdr_data2_t pitch; // ...
- xdr_data2_t speedN; // ...
- xdr_data2_t speedE; // ...
- xdr_data2_t speedD; // ...
- xdr_data_t accN; // acceleration N
- xdr_data_t accE; // acceleration E
- xdr_data_t accD; // acceleration D
- xdr_data_t left_aileron; // control positions
- xdr_data_t right_aileron; // control positions
- xdr_data_t elevator; // ...
- xdr_data_t rudder; // ...
-// xdr_data_t rpms[6]; // RPMs of all of the motors
- xdr_data_t rateH; // Rate of change of heading
- xdr_data_t rateR; // roll
- xdr_data_t rateP; // and pitch
-// xdr_data_t dummy; // pad message length
+
+ // Time when this packet was generated
+ xdr_data2_t time;
+ xdr_data2_t lag;
+
+ // position wrt the earth centered frame
+ xdr_data2_t position[3];
+ // orientation wrt the earth centered frame, stored in the angle axis
+ // representation where the angle is coded into the axis length
+ xdr_data_t orientation[3];
+
+ // linear velocity wrt the earth centered frame measured in
+ // the earth centered frame
+ xdr_data_t linearVel[3];
+ // angular velocity wrt the earth centered frame measured in
+ // the earth centered frame
+ xdr_data_t angularVel[3];
+
+ // linear acceleration wrt the earth centered frame measured in
+ // the earth centered frame
+ xdr_data_t linearAccel[3];
+ // angular acceleration wrt the earth centered frame measured in
+ // the earth centered frame
+ xdr_data_t angularAccel[3];
+ // Padding. The alignment is 8 bytes on x86_64 because there are
+ // 8-byte types in the message, so the size should be explicitly
+ // rounded out to a multiple of 8. Of course, it's a bad idea to
+ // put a C struct directly on the wire, but that's a fight for
+ // another day...
+ xdr_data_t pad;