Repository: incubator-mynewt-larva
Updated Branches:
  refs/heads/master 6b0845f4b -> 2ffa9b4f0


Add util/endian.h; simple byte swapping macros.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/commit/2ffa9b4f
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/tree/2ffa9b4f
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/diff/2ffa9b4f

Branch: refs/heads/master
Commit: 2ffa9b4f01f329f8e88f139549ab82b676283156
Parents: 6b0845f
Author: Christopher Collins <ccollins47...@gmail.com>
Authored: Tue Dec 8 14:20:18 2015 -0800
Committer: Christopher Collins <ccollins47...@gmail.com>
Committed: Tue Dec 8 14:20:54 2015 -0800

----------------------------------------------------------------------
 libs/shell/src/shell.c          |  1 +
 libs/util/include/util/endian.h | 89 ++++++++++++++++++++++++++++++++++++
 2 files changed, 90 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/2ffa9b4f/libs/shell/src/shell.c
----------------------------------------------------------------------
diff --git a/libs/shell/src/shell.c b/libs/shell/src/shell.c
index 20c8251..6a51e4e 100644
--- a/libs/shell/src/shell.c
+++ b/libs/shell/src/shell.c
@@ -20,6 +20,7 @@
 
 #include <shell/shell.h>
 #include <util/base64.h>
+#include <util/endian.h>
 
 #include <stdio.h>
 #include <string.h>

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/2ffa9b4f/libs/util/include/util/endian.h
----------------------------------------------------------------------
diff --git a/libs/util/include/util/endian.h b/libs/util/include/util/endian.h
new file mode 100644
index 0000000..c8c838a
--- /dev/null
+++ b/libs/util/include/util/endian.h
@@ -0,0 +1,89 @@
+/**
+ * Copyright (c) 2015 Runtime Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef H_ENDIAN_
+#define H_ENDIAN_
+
+#include <inttypes.h>
+
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+
+#ifndef ntohll
+#define ntohll(x)  ((uint64_t)(x))
+#endif
+
+#ifndef htonll
+#define htonll(x)  ((uint64_t)(x))
+#endif
+
+#ifndef ntohl
+#define ntohl(x)   ((uint32_t)(x))
+#endif
+
+#ifndef htonl
+#define htonl(x)   ((uint32_t)(x))
+#endif
+
+#ifndef ntohs
+#define ntohs(x)   ((uint16_t)(x))
+#endif
+
+#ifndef htons
+#define htons(x)   ((uint16_t)(x))
+#endif
+
+#else
+
+#ifndef ntohll
+#define ntohll(x)   ((uint64_t)                     \
+     ((((x) & 0xff00000000000000ull) >> 56) |       \
+      (((x) & 0x00ff000000000000ull) >> 40) |       \
+      (((x) & 0x0000ff0000000000ull) >> 24) |       \
+      (((x) & 0x000000ff00000000ull) >>  8) |       \
+      (((x) & 0x00000000ff000000ull) <<  8) |       \
+      (((x) & 0x0000000000ff0000ull) << 24) |       \
+      (((x) & 0x000000000000ff00ull) << 40) |       \
+      (((x) & 0x00000000000000ffull) << 56)))
+#endif
+
+#ifndef htonll
+#define htonll      ntohll
+#endif
+
+#ifndef ntohl
+#define ntohl(x)    ((uint32_t)                     \
+    ((((x) & 0xff000000) >> 24) |                   \
+     (((x) & 0x00ff0000) >>  8) |                   \
+     (((x) & 0x0000ff00) <<  8) |                   \
+     (((x) & 0x000000ff) << 24)))
+#endif
+
+#ifndef htonl
+#define htonl       ntohl
+#endif
+
+#ifndef htons
+#define htons(x)   ((uint16_t)                      \
+    ((((x) & 0xff00) >> 8) |                        \
+     (((x) & 0x00ff) << 8)))
+#endif
+
+#ifndef ntohs
+#define ntohs       htons
+#endif
+
+#endif
+#endif

Reply via email to