2013-01-15 02:30:42 +08:00
|
|
|
#include "endian.h"
|
|
|
|
|
2014-01-27 22:30:46 +08:00
|
|
|
#include "internal/convert.h"
|
2014-01-23 01:28:58 +08:00
|
|
|
|
2013-01-15 20:10:44 +08:00
|
|
|
#include <string.h>
|
|
|
|
|
2013-02-05 19:19:24 +08:00
|
|
|
typedef union
|
|
|
|
{
|
|
|
|
uint32_t integer;
|
2014-01-29 02:06:24 +08:00
|
|
|
uint8_t bytes[4];
|
2014-03-28 23:33:35 +08:00
|
|
|
} _internal_gmio_int_bytes_32_convert_t;
|
2013-02-05 19:19:24 +08:00
|
|
|
|
2014-03-28 23:33:35 +08:00
|
|
|
gmio_endianness_t gmio_host_endianness()
|
2013-01-15 02:30:42 +08:00
|
|
|
{
|
2014-03-28 23:33:35 +08:00
|
|
|
_internal_gmio_int_bytes_32_convert_t conv;
|
2013-01-15 02:30:42 +08:00
|
|
|
|
2013-02-05 19:19:24 +08:00
|
|
|
conv.integer = 0x01020408;
|
|
|
|
if (conv.bytes[0] == 0x08 && conv.bytes[3] == 0x01)
|
2014-03-28 23:33:35 +08:00
|
|
|
return GMIO_LITTLE_ENDIAN;
|
2013-02-05 19:19:24 +08:00
|
|
|
else if (conv.bytes[0] == 0x01 && conv.bytes[3] == 0x08)
|
2014-03-28 23:33:35 +08:00
|
|
|
return GMIO_BIG_ENDIAN;
|
2013-02-05 19:19:24 +08:00
|
|
|
else if (conv.bytes[1] == 0x08 && conv.bytes[2] == 0x01)
|
2014-03-28 23:33:35 +08:00
|
|
|
return GMIO_MIDDLE_ENDIAN;
|
2013-01-15 02:30:42 +08:00
|
|
|
else
|
2014-03-28 23:33:35 +08:00
|
|
|
return GMIO_OTHER_ENDIAN;
|
2013-01-15 02:30:42 +08:00
|
|
|
}
|
|
|
|
|