embkernel
 All Classes Functions Variables Typedefs Groups Pages
LibEndian.cpp
1 //------------------------------------------------------------------------------
2 //This file is part of embKernel.
3 //See license.txt for the full license governing this code.
4 //------------------------------------------------------------------------------
5 
6 #include "LibEndian.hpp"
7 
8 #if LIB_CFG_LITTLE_ENDIAN
9 uint16_t LibEndian::beToHw(uint16_t value) {
10  uint16_t result;
11 
12  uint8_t* dst = (uint8_t*) &result;
13  uint8_t* src = (uint8_t*) &value;
14 
15  dst[0] = src[1];
16  dst[1] = src[0];
17 
18  return result;
19 }
20 
21 uint32_t LibEndian::beToHw(uint32_t value) {
22  uint32_t result;
23 
24  uint8_t* dst = (uint8_t*) &result;
25  uint8_t* src = (uint8_t*) &value;
26 
27  dst[0] = src[3];
28  dst[1] = src[2];
29  dst[2] = src[1];
30  dst[3] = src[0];
31 
32  return result;
33 }
34 
35 uint16_t LibEndian::hwToBe(uint16_t value) {
36  return beToHw(value);
37 }
38 
39 uint32_t LibEndian::hwToBe(uint32_t value) {
40  return beToHw(value);
41 }
42 #else
43 uint16_t LibEndian::leToHw(uint16_t value) {
44  uint16_t result;
45 
46  uint8_t* dst = (uint8_t*) &result;
47  uint8_t* src = (uint8_t*) &value;
48 
49  dst[0] = src[1];
50  dst[1] = src[0];
51 
52  return result;
53 }
54 
55 uint32_t LibEndian::leToHw(uint32_t value) {
56  uint32_t result;
57 
58  uint8_t* dst = (uint8_t*) &result;
59  uint8_t* src = (uint8_t*) &value;
60 
61  dst[0] = src[3];
62  dst[1] = src[2];
63  dst[2] = src[1];
64  dst[3] = src[0];
65 
66  return result;
67 }
68 
69 uint16_t LibEndian::hwToLe(uint16_t value) {
70  return leToHw(value);
71 }
72 
73 uint32_t LibEndian::hwToLe(uint32_t value) {
74  return leToHw(value);
75 }
76 #endif