externalize hash code to library

This commit is contained in:
cyberman54 2020-12-27 23:43:45 +01:00
parent dd1ec2deed
commit 73263c3d04
3 changed files with 5 additions and 50 deletions

View File

@ -2,7 +2,7 @@
#define _HASH_H #define _HASH_H
#include <Arduino.h> #include <Arduino.h>
#include <inttypes.h> #include <RokkitHash.h>
uint32_t IRAM_ATTR hash(const char *data, int len); uint32_t IRAM_ATTR hash(const char *data, int len);

View File

@ -79,6 +79,7 @@ lib_deps_sensors =
boschsensortec/BSEC Software Library @ 1.6.1480 boschsensortec/BSEC Software Library @ 1.6.1480
https://github.com/ricki-z/SDS011.git https://github.com/ricki-z/SDS011.git
lib_deps_basic = lib_deps_basic =
https://github.com/SukkoPera/Arduino-Rokkit-Hash.git
bblanchon/ArduinoJson @ ^6 bblanchon/ArduinoJson @ ^6
jchristensen/Timezone @ ^1.2.4 jchristensen/Timezone @ ^1.2.4
makuna/RTC @ ^2.3.5 makuna/RTC @ ^2.3.5

View File

@ -36,55 +36,9 @@
#include "hash.h" #include "hash.h"
uint32_t IRAM_ATTR rokkit(const char *data, int len) { #ifdef ROKKIT_ENABLE_8BIT_OPTIMIZATIONS
uint32_t hash, tmp; #undef ROKKIT_ENABLE_8BIT_OPTIMIZATIONS
int rem; #endif
if (len <= 0 || data == 0)
return 0;
hash = len;
rem = len & 3;
len >>= 2;
/* Main loop */
while (len > 0) {
hash += *((uint16_t *)data);
tmp = (*((uint16_t *)(data + 2)) << 11) ^ hash;
hash = (hash << 16) ^ tmp;
data += 2 * 2;
hash += hash >> 11;
len--;
}
/* Handle end cases */
switch (rem) {
case 3:
hash += *((uint16_t *)data);
hash ^= hash << 16;
hash ^= ((uint32_t)data[2]) << 18;
hash += hash >> 11;
break;
case 2:
hash += *((uint16_t *)data);
hash ^= hash << 11;
hash += hash >> 17;
break;
case 1:
hash += (signed char)*data;
hash ^= hash << 10;
hash += hash >> 1;
}
/* Force "avalanching" of final 127 bits */
hash ^= hash << 3;
hash += hash >> 5;
hash ^= hash << 4;
hash += hash >> 17;
hash ^= hash << 25;
hash += hash >> 6;
return hash;
}
uint32_t IRAM_ATTR hash(const char *data, int len) { uint32_t IRAM_ATTR hash(const char *data, int len) {
return rokkit(data, len); return rokkit(data, len);