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