Skip to content

Commit 83e2d7c

Browse files
committed
CYD display: font, pool strip, local/pool label, N/A fallbacks
- Logo: black background (was purple #280040) - Status bar: FreeSansBold font (was DigitalNumbers - garbled) - Pool strip: replaced baked-in Public-Pool.io bitmap with clean 320x67 helper - Pool label: Local/Pool sprite with transparent push (no black box) - Local mode: skip HTTP pool API (returns P/0/E on fail), use miner best_diff - Pool-only stats (Workers, Total Hash Rate): show N/A in local mode - Best Difficulty: 2dp precision (was 5dp) - BLOCK TEMPLATES / BEST DIFFICULTY: x-offset bumped to clear logo edge - Strip positioned at y=170, bottom 3px filled to match strip colour
1 parent 1a21709 commit 83e2d7c

File tree

4 files changed

+2563
-3212
lines changed

4 files changed

+2563
-3212
lines changed

src/drivers/displays/esp23_2432s028r.cpp

Lines changed: 50 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -155,34 +155,48 @@ extern unsigned long mPoolUpdate;
155155
void printPoolData(){
156156
if ((hasChangedScreen) || (mPoolUpdate == 0) || (millis() - mPoolUpdate > UPDATE_POOL_min * 60 * 1000)){
157157
if (Settings.PoolAddress != "tn.vkbit.com") {
158-
pData = getPoolData();
159-
background.createSprite(320,50); //Background Sprite
160-
if (!background.created()) {
161-
Serial.println("###### POOL SPRITE ERROR ######");
162-
// Serial.printf("Pool data W:%d H:%s D:%s\n", pData.workersCount, pData.workersHash, pData.bestDifficulty);
163-
printheap();
164-
}
165-
background.setSwapBytes(true);
166-
if (bottomScreenBlue) {
167-
background.pushImage(0, -20, 320, 70, bottonPoolScreen);
168-
tft.pushImage(0,170,320,20,bottonPoolScreen);
158+
// Local address: skip HTTP pool API (will fail), use miner's own stats
159+
String _addr = Settings.PoolAddress;
160+
bool _isLocal = _addr.startsWith("192.168") || _addr.startsWith("10.") ||
161+
_addr.startsWith("172.") || _addr == "localhost";
162+
if (!_isLocal) {
163+
pData = getPoolData();
169164
} else {
170-
background.pushImage(0, -20, 320, 70, bottonPoolScreen_g);
171-
tft.pushImage(0,170,320,20,bottonPoolScreen_g);
165+
// Local mode: use miner's own best_diff; workers/hashrate are pool-only
166+
extern double best_diff;
167+
pData.bestDifficulty = String(best_diff, 2);
168+
pData.workersHash = "N/A";
169+
pData.workersCount = 0; // N/A — will display as "N/A" below
172170
}
173-
174-
render.setDrawer(background); // Link drawing object to background instance (so font will be rendered on background)
175-
render.setLineSpaceRatio(1);
176-
177-
render.setFontSize(24);
178-
render.cdrawString(String(pData.workersCount).c_str(), 157, 16, TFT_BLACK);
179-
render.setFontSize(18);
180-
render.setAlignment(Align::BottomRight);
181-
render.cdrawString(pData.workersHash.c_str(), 265, 14, TFT_BLACK);
182-
render.setAlignment(Align::BottomLeft);
183-
render.cdrawString(pData.bestDifficulty.c_str(), 54, 14, TFT_BLACK);
184-
background.pushSprite(0,190);
185-
background.deleteSprite();
171+
172+
// Push clean bottom strip
173+
tft.pushImage(0, 170, 320, 67, bottonPoolScreen);
174+
tft.fillRect(0, 237, 320, 3, 0x45DD);
175+
176+
// Pool label — sprite with green key for transparency
177+
{
178+
const char* poolLabel = _isLocal ? "Local" : "Pool";
179+
TFT_eSprite labelSpr = TFT_eSprite(&tft);
180+
labelSpr.setColorDepth(16);
181+
labelSpr.createSprite(80, 18);
182+
labelSpr.fillSprite(TFT_GREEN);
183+
labelSpr.setTextColor(TFT_WHITE);
184+
labelSpr.setTextDatum(MC_DATUM);
185+
labelSpr.drawString(poolLabel, 40, 9, 2);
186+
labelSpr.pushSprite(120, 170, TFT_GREEN);
187+
labelSpr.deleteSprite();
188+
}
189+
190+
// Pool stats values
191+
uint16_t statsBg = tft.color565(68, 181, 212);
192+
tft.setTextColor(TFT_BLACK, statsBg);
193+
tft.setTextDatum(ML_DATUM);
194+
tft.drawString(pData.bestDifficulty.c_str(), 8, 215, 2);
195+
tft.setTextDatum(MC_DATUM);
196+
tft.drawString(_isLocal ? "N/A" : String(pData.workersCount).c_str(), 160, 215, 2);
197+
tft.setTextDatum(MR_DATUM);
198+
tft.drawString(pData.workersHash.c_str(), 312, 215, 2);
199+
mPoolUpdate = millis();
186200
} else {
187201
pData.bestDifficulty = "TESTNET";
188202
pData.workersHash = "TESTNET";
@@ -235,14 +249,14 @@ void esp32_2432S028R_MinerScreen(unsigned long mElapsed)
235249
// Block templates
236250
render.setFontSize(18);
237251
render.setAlignment(Align::TopLeft);
238-
render.drawString(data.templates.c_str(), 189-wdtOffset, 20, 0xDEDB);
252+
render.drawString(data.templates.c_str(), 208-wdtOffset, 20, 0xDEDB);
239253
// Best diff
240-
render.drawString(data.bestDiff.c_str(), 189-wdtOffset, 48, 0xDEDB);
254+
render.drawString(data.bestDiff.c_str(), 208-wdtOffset, 48, 0xDEDB);
241255
// 32Bit shares
242256
render.setFontSize(18);
243257
render.drawString(data.completedShares.c_str(), 189-wdtOffset, 76, 0xDEDB);
244258
// Uptime - use TFT native font (DigitalNumbers cant render d/h/m/: chars)
245-
background.setFreeFont(FF1);
259+
background.setFreeFont(FSSB9);
246260
background.setTextSize(1);
247261
background.setTextDatum(TR_DATUM);
248262
background.setTextColor(0xDEDB, TFT_BLACK);
@@ -253,16 +267,13 @@ void esp32_2432S028R_MinerScreen(unsigned long mElapsed)
253267
render.setAlignment(Align::TopCenter);
254268
render.drawString(data.valids.c_str(), 290-wdtOffset, 56, 0xDEDB);
255269

256-
// Print Temp
257-
render.setFontSize(10);
258-
render.rdrawString(data.temp.c_str(), 239-wdtOffset, 1, TFT_BLACK);
259-
260-
render.setFontSize(4);
261-
render.rdrawString(String(0).c_str(), 244-wdtOffset, 3, TFT_BLACK);
262-
263-
// Print Hour
264-
render.setFontSize(10);
265-
render.rdrawString(data.currentTime.c_str(), 286-wdtOffset, 1, TFT_BLACK);
270+
// Print Temp + Hour — use native TFT font (DigitalNumbers cant render letters/colons)
271+
background.setFreeFont(FSSB9);
272+
background.setTextSize(1);
273+
background.setTextColor(TFT_BLACK, TFT_BLACK);
274+
background.setTextDatum(TR_DATUM);
275+
background.drawString(data.temp.c_str(), 239-wdtOffset, 2, GFXFF);
276+
background.drawString(data.currentTime.c_str(), 286-wdtOffset, 2, GFXFF);
266277

267278
// Push prepared background to screen
268279
background.pushSprite(190, 0);

0 commit comments

Comments
 (0)