1 /*
2  * Copyright (c) 2017 Nordic Semiconductor ASA
3  * Copyright (c) 2016 Vinayak Kariappa Chettimada
4  * Copyright (c) 2015-2016 Intel Corporation
5  *
6  * SPDX-License-Identifier: Apache-2.0
7  */
8 
9 #include <string.h>
10 
11 #include "mesh_types.h"
12 #include "mesh_util.h"
13 
bt_hex(const void * buf,size_t len)14 const char *bt_hex(const void *buf, size_t len)
15 {
16     static const char hex[] = "0123456789abcdef";
17     static char hexbufs[2][129];
18     static uint8_t curbuf;
19     const uint8_t *b = buf;
20     char *str = NULL;
21     int i;
22 
23     str = hexbufs[curbuf++];
24     curbuf %= ARRAY_SIZE(hexbufs);
25 
26     len = MIN(len, (sizeof(hexbufs[0]) - 1) / 2);
27 
28     for (i = 0; i < len; i++) {
29         str[i * 2]     = hex[b[i] >> 4];
30         str[i * 2 + 1] = hex[b[i] & 0xf];
31     }
32 
33     str[i * 2] = '\0';
34 
35     return str;
36 }
37 
mem_rcopy(uint8_t * dst,uint8_t const * src,uint16_t len)38 void mem_rcopy(uint8_t *dst, uint8_t const *src, uint16_t len)
39 {
40     src += len;
41     while (len--) {
42         *dst++ = *--src;
43     }
44 }
45