| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | /*  *  Tools  * *      Philippe G. 2019, philippe_44@outlook.com * *  This software is released under the MIT License. *  https://opensource.org/licenses/MIT * */ #pragma once#ifdef __cplusplusextern "C" {#endif#ifndef QUOTE#define QUOTE(name) #name#endif#ifndef STR#define STR(macro)  QUOTE(macro)#endif#ifndef STR_OR_ALT#define STR_OR_ALT(str,alt) (str?str:alt)#endif#ifndef STR_OR_BLANK#define STR_OR_BLANK(p) p == NULL ? "" : p#endif#define ESP_LOG_DEBUG_EVENT(tag,e) ESP_LOGD(tag,"evt: " e)#ifndef FREE_AND_NULL#define FREE_AND_NULL(x) if(x) { free(x); x=NULL; }#endif#ifndef CASE_TO_STR#define CASE_TO_STR(x) case x: return STR(x); break;#endif#define ENUM_TO_STRING(g) 	\    case g:    				\        return STR(g);    	\        break;void 		utf8_decode(char *src);void 		url_decode(char *url);void* 		malloc_init_external(size_t sz);void* 		clone_obj_psram(void * source, size_t source_sz);char* 		strdup_psram(const char * source);const char* str_or_unknown(const char * str);const char* str_or_null(const char * str);typedef void (*http_download_cb_t)(uint8_t* data, size_t len, void *context);void		http_download(char *url, size_t max, http_download_cb_t callback, void *context);extern const char unknown_string_placeholder[];#ifdef __cplusplus}#endif
 |