+#ifdef __ANDROID__
+void
+dtls_dsrv_hexdump_log(log_t level, const char *name, const unsigned char *buf, size_t length, int extend) {
+ char *hex_dump_text;
+ char *p;
+ int ret;
+ int size;
+
+ if (maxlog < level)
+ return;
+
+ size = length * 3 + strlen(name) + 22;
+ hex_dump_text = malloc(size);
+ if (!hex_dump_text)
+ return;
+
+ p = hex_dump_text;
+
+ ret = snprintf(p, size, "%s: (%zu bytes): ", name, length);
+ if (ret >= size)
+ goto print;
+ p += ret;
+ size -= ret;
+ while (length--) {
+ ret = snprintf(p, size, "%02X ", *buf++);
+ if (ret >= size)
+ goto print;
+ p += ret;
+ size -= ret;
+ }
+print:
+ __android_log_print(loglevels_android[level], PACKAGE_NAME, "%s\n", hex_dump_text);
+ free(hex_dump_text);
+}
+#elif !defined (WITH_CONTIKI)