//----------------------------------------------------------------------------- // 2022 Ahoy, https://github.com/lumpapu/ahoy // Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/ //----------------------------------------------------------------------------- #include "helper.h" namespace ah { void ip2Arr(uint8_t ip[], const char *ipStr) { char tmp[16]; memset(ip, 0, 4); memset(tmp, 0, 16); snprintf(tmp, 16, ipStr); char *p = strtok(tmp, "."); uint8_t i = 0; while(NULL != p) { ip[i++] = atoi(p); p = strtok(NULL, "."); } } // note: char *str needs to be at least 16 bytes long void ip2Char(uint8_t ip[], char *str) { if(0 == ip[0]) str[0] = '\0'; else snprintf(str, 16, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]); } double round3(double value) { return (int)(value * 1000 + 0.5) / 1000.0; } String getDateTimeStr(time_t t) { char str[20]; if(0 == t) sprintf(str, "n/a"); else sprintf(str, "%04d-%02d-%02d %02d:%02d:%02d", year(t), month(t), day(t), hour(t), minute(t), second(t)); return String(str); } uint64_t Serial2u64(const char *val) { char tmp[3]; uint64_t ret = 0ULL; uint64_t u64; memset(tmp, 0, 3); for(uint8_t i = 0; i < 6; i++) { tmp[0] = val[i*2]; tmp[1] = val[i*2 + 1]; if((tmp[0] == '\0') || (tmp[1] == '\0')) break; u64 = strtol(tmp, NULL, 16); ret |= (u64 << ((5-i) << 3)); } return ret; } }