Added BitAxe support

This commit is contained in:
Djuri 2024-07-29 20:49:46 +02:00
parent ca1c7178f1
commit b13c7242a6
18 changed files with 837 additions and 46 deletions

View file

@ -14,10 +14,14 @@ BH1750 bh1750;
bool hasLuxSensor = false;
#endif
std::vector<std::string> screenNameMap(SCREEN_COUNT);
std::vector<ScreenMapping> screenMappings;
std::mutex mcpMutex;
uint lastTimeSync;
void addScreenMapping(int value, const char* name) {
screenMappings.push_back({value, name});
}
void setup()
{
setupPreferences();
@ -250,6 +254,7 @@ void syncTime()
lastTimeSync = esp_timer_get_time() / 1000000;
}
void setupPreferences()
{
preferences.begin("btclock", false);
@ -259,13 +264,26 @@ void setupPreferences()
setBlockHeight(preferences.getUInt("blockHeight", INITIAL_BLOCK_HEIGHT));
setPrice(preferences.getUInt("lastPrice", INITIAL_LAST_PRICE));
screenNameMap[SCREEN_BLOCK_HEIGHT] = "Block Height";
screenNameMap[SCREEN_BLOCK_FEE_RATE] = "Block Fee Rate";
screenNameMap[SCREEN_MSCW_TIME] = "Sats per dollar";
screenNameMap[SCREEN_BTC_TICKER] = "Ticker";
screenNameMap[SCREEN_TIME] = "Time";
screenNameMap[SCREEN_HALVING_COUNTDOWN] = "Halving countdown";
screenNameMap[SCREEN_MARKET_CAP] = "Market Cap";
addScreenMapping(SCREEN_BLOCK_HEIGHT, "Block Height");
addScreenMapping(SCREEN_MSCW_TIME, "Sats per dollar");
addScreenMapping(SCREEN_BTC_TICKER, "Ticker");
addScreenMapping(SCREEN_TIME, "Time");
addScreenMapping(SCREEN_HALVING_COUNTDOWN, "Halving countdown");
addScreenMapping(SCREEN_MARKET_CAP, "Market Cap");
addScreenMapping(SCREEN_BLOCK_FEE_RATE, "Block Fee Rate");
// screenNameMap[SCREEN_BLOCK_HEIGHT] = "Block Height";
// screenNameMap[SCREEN_BLOCK_FEE_RATE] = "Block Fee Rate";
// screenNameMap[SCREEN_MSCW_TIME] = "Sats per dollar";
// screenNameMap[SCREEN_BTC_TICKER] = "Ticker";
// screenNameMap[SCREEN_TIME] = "Time";
// screenNameMap[SCREEN_HALVING_COUNTDOWN] = "Halving countdown";
// screenNameMap[SCREEN_MARKET_CAP] = "Market Cap";
if (preferences.getBool("bitaxeEnabled", DEFAULT_BITAXE_ENABLED)) {
addScreenMapping(SCREEN_BITAXE_HASHRATE, "BitAxe Hashrate");
addScreenMapping(SCREEN_BITAXE_BESTDIFF, "BitAxe Best Difficulty");
}
}
void setupWebsocketClients(void *pvParameters)
@ -281,6 +299,11 @@ void setupWebsocketClients(void *pvParameters)
setupPriceNotify();
}
if (preferences.getBool("bitaxeEnabled", DEFAULT_BITAXE_ENABLED))
{
setupBitaxeFetchTask();
}
vTaskDelete(NULL);
}
@ -304,7 +327,7 @@ void finishSetup()
}
}
std::vector<std::string> getScreenNameMap() { return screenNameMap; }
std::vector<ScreenMapping> getScreenNameMap() { return screenMappings; }
void setupMcp()
{
@ -419,6 +442,9 @@ void setupHardware()
Serial.println(F("Found BH1750"));
hasLuxSensor = true;
bh1750.begin(BH1750::CONTINUOUS_LOW_RES_MODE, 0x5C);
} else {
Serial.println(F("BH1750 Not found"));
hasLuxSensor = false;
}
#endif
}
@ -796,3 +822,12 @@ String getFsRev()
fsHash.close();
return ret;
}
int findScreenIndexByValue(int value) {
for (int i = 0; i < screenMappings.size(); i++) {
if (screenMappings[i].value == value) {
return i;
}
}
return -1; // Return -1 if value is not found
}