From fa7ed053bfceab417e88f5aa23e1ef56f5d4e91c Mon Sep 17 00:00:00 2001 From: Jukka Rissanen Date: Tue, 10 May 2016 09:30:10 +0300 Subject: [PATCH] net: Add debug function to print MAC address Change-Id: I32ca7a4f005d73be7c8d4d28a7a6fbd19c01dd2e Signed-off-by: Jukka Rissanen --- net/yaip/net_private.h | 67 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/net/yaip/net_private.h b/net/yaip/net_private.h index 43c2e8304a8..b91dc3e1a61 100644 --- a/net/yaip/net_private.h +++ b/net/yaip/net_private.h @@ -25,3 +25,70 @@ extern void net_nbuf_init(void); extern int net_if_init(void); extern void net_context_init(void); + +#if NET_DEBUG > 0 +static inline char *net_byte_to_hex(uint8_t *ptr, uint8_t byte, char base, + bool pad) +{ + int i, val; + + for (i = 0, val = (byte & 0xf0) >> 4; i < 2; i++, val = byte & 0x0f) { + if (i == 0 && !pad && !val) { + continue; + } + if (val < 10) { + *ptr++ = (char) (val + '0'); + } else { + *ptr++ = (char) (val - 10 + base); + } + } + + *ptr = '\0'; + + return ptr; +} + +static inline char *net_sprint_ll_addr_buf(uint8_t *ll, uint8_t ll_len, + char *buf, int buflen) +{ + uint8_t i, len, blen; + char *ptr = buf; + + switch (ll_len) { + case 8: + len = 8; + break; + case 6: + len = 6; + break; + default: + len = 6; + break; + } + + for (i = 0, blen = buflen; i < len && blen > 0; i++) { + ptr = net_byte_to_hex(ptr, ll[i], 'A', true); + *ptr++ = ':'; + blen -= 3; + } + + if (!(ptr - buf)) { + return NULL; + } + + *(ptr - 1) = '\0'; + return buf; +} + +static inline char *net_sprint_ll_addr(uint8_t *ll, uint8_t ll_len) +{ + static char buf[sizeof("xx:xx:xx:xx:xx:xx:xx:xx")]; + + return net_sprint_ll_addr_buf(ll, ll_len, (char *)buf, sizeof(buf)); +} +#else /* NET_DEBUG */ +static inline char *net_sprint_ll_addr(uint8_t *ll, uint8_t ll_len) +{ + return NULL; +} +#endif /* NET_DEBUG */