Use the GNU C compiler macro __BYTE_ORDER__ to set data_endian on the C
side and ByteOrder.nativeOrder() function to set ByteBuffer's order
in the MessageData class on the Java side.
import org.ocera.orte.*;
import org.ocera.orte.types.*;
-import java.nio.ByteOrder;
-
public class HelloMsg extends org.ocera.orte.types.MessageData
{
public HelloMsg(DomainApp domainApp, String newTopic)
{
super();
- buffer.order(ByteOrder.LITTLE_ENDIAN);
// typeName registration
if(counter == 0)
return data;
}
-}
\ No newline at end of file
+}
package org.ocera.orte.types;
import java.nio.ByteBuffer;
-
+import java.nio.ByteOrder;
public class MessageData
{
public MessageData()
{
this.buffer = ByteBuffer.allocate(getMaxDataLength());
+ this.buffer.order(ByteOrder.nativeOrder());
//System.out.println(":j: instance MessageData created..");
}
}
/////////////////////////////////////////////////
psp.instance = (void *) orte_instance;
- psp.data_endian = 1; /* BIG -pak tahat z headeru !!*/
+ #ifdef __BYTE_ORDER__
+ #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+ psp.data_endian = BigEndian;
+ #elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+ psp.data_endian = LittleEndian;
+ #else
+ #error "Unknown endianness"
+ #endif
+ #endif
#ifdef TEST_STAGE
printf(":c: endian? \n");
#endif