2023-07-01 20:22:27 +00:00
|
|
|
#pragma once
|
|
|
|
#include "system.hpp"
|
|
|
|
#include "uv_k5_display.hpp"
|
|
|
|
|
|
|
|
class CRssiPrinter
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
static constexpr auto ChartStartX = 4*7 + 4;
|
2023-08-01 15:54:30 +00:00
|
|
|
static void Handle(void)
|
2023-07-01 20:22:27 +00:00
|
|
|
{
|
2023-07-01 23:49:41 +00:00
|
|
|
static bool bIsCleared = true;
|
2023-07-01 20:22:27 +00:00
|
|
|
static unsigned char u8ChartPosition = 0;
|
2023-07-01 23:49:41 +00:00
|
|
|
static unsigned char u8SqlDelayCnt = 0xFF;
|
|
|
|
static unsigned char U8ScreenHistory[128 - ChartStartX] = {0};
|
2023-08-01 15:54:30 +00:00
|
|
|
TUV_K5Display DisplayBuff(gDisplayBuffer);
|
|
|
|
const TUV_K5SmallNumbers FontSmallNr(gSmallDigs);
|
2023-07-01 20:22:27 +00:00
|
|
|
CDisplay Display(DisplayBuff);
|
|
|
|
|
2023-07-02 17:03:49 +00:00
|
|
|
if(!(GPIOC->DATA & 0b1))
|
2023-07-02 16:58:56 +00:00
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2023-07-04 17:23:50 +00:00
|
|
|
auto* pMenuCheckData = (unsigned char*)DisplayBuff.GetCoursorData(DisplayBuff.GetCoursorPosition(2, 6*8 + 1));
|
2023-08-01 15:54:30 +00:00
|
|
|
if(BK4819Read(0x0C) & 0b10)
|
2023-07-01 23:49:41 +00:00
|
|
|
{
|
|
|
|
u8SqlDelayCnt = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
if(u8SqlDelayCnt > 20 || *pMenuCheckData == 0xFF)
|
2023-07-01 20:22:27 +00:00
|
|
|
{
|
|
|
|
if(!bIsCleared)
|
|
|
|
{
|
|
|
|
bIsCleared = true;
|
2023-07-04 17:23:50 +00:00
|
|
|
auto* pDData = (unsigned char*)DisplayBuff.GetCoursorData(DisplayBuff.GetCoursorPosition(3, 0));
|
2023-07-01 20:22:27 +00:00
|
|
|
memset(pDData, 0, DisplayBuff.SizeX);
|
2023-07-01 23:49:41 +00:00
|
|
|
memset(U8ScreenHistory, 0, sizeof(U8ScreenHistory));
|
|
|
|
u8ChartPosition = 0;
|
|
|
|
if(*pMenuCheckData != 0xFF)
|
|
|
|
{
|
2023-08-01 15:54:30 +00:00
|
|
|
FlushFramebufferToScreen();
|
2023-07-01 23:49:41 +00:00
|
|
|
}
|
2023-07-01 20:22:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
2023-07-01 23:49:41 +00:00
|
|
|
|
|
|
|
u8SqlDelayCnt++;
|
|
|
|
bIsCleared = false;
|
2023-07-01 20:22:27 +00:00
|
|
|
|
2023-07-04 17:23:50 +00:00
|
|
|
Display.SetCoursor(3, 0);
|
2023-07-01 20:22:27 +00:00
|
|
|
Display.SetFont(&FontSmallNr);
|
|
|
|
|
|
|
|
char C8RssiString[] = "g000";
|
2023-08-01 15:54:30 +00:00
|
|
|
unsigned char u8Rssi = ((BK4819Read(0x67) >> 1) & 0xFF);
|
2023-07-01 20:22:27 +00:00
|
|
|
if(!u8Rssi)
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if(u8Rssi > 160)
|
|
|
|
{
|
|
|
|
u8Rssi -= 160;
|
|
|
|
C8RssiString[0] = ' ';
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
u8Rssi = 160 - u8Rssi;
|
|
|
|
C8RssiString[0] = '-';
|
|
|
|
}
|
|
|
|
|
|
|
|
C8RssiString[1] = '0' + u8Rssi / 100;
|
|
|
|
C8RssiString[2] = '0' + (u8Rssi / 10) % 10;
|
|
|
|
C8RssiString[3] = '0' + u8Rssi % 10;
|
|
|
|
|
|
|
|
Display.Print(C8RssiString);
|
|
|
|
|
|
|
|
if(u8ChartPosition < ChartStartX || u8ChartPosition >= TUV_K5Display::SizeX)
|
|
|
|
u8ChartPosition = ChartStartX;
|
|
|
|
|
|
|
|
unsigned char u8Sub = (u8Rssi * 7) >> 7;
|
|
|
|
unsigned char u8PrintShift = (u8Sub > 7 ? 7 : u8Sub);
|
2023-07-02 01:10:23 +00:00
|
|
|
// Turn the proper pixel on, and the ones below it on as well
|
|
|
|
// The code to turn just the correct pixel on is: U8ScreenHistory[u8ChartPosition - ChartStartX] = (1 << u8PrintShift) & 0xFF;
|
|
|
|
U8ScreenHistory[u8ChartPosition - ChartStartX] = ~(0xFF >> (7 - u8PrintShift));
|
2023-07-01 23:49:41 +00:00
|
|
|
|
2023-07-01 20:22:27 +00:00
|
|
|
if(u8ChartPosition + 4 < DisplayBuff.SizeX)
|
|
|
|
{
|
|
|
|
for(unsigned char i = 0; i < 4; i++)
|
|
|
|
{
|
2023-07-01 23:49:41 +00:00
|
|
|
U8ScreenHistory[u8ChartPosition - ChartStartX + i + 1] = 0;
|
2023-07-01 20:22:27 +00:00
|
|
|
}
|
|
|
|
}
|
2023-07-01 23:49:41 +00:00
|
|
|
|
2023-07-04 17:23:50 +00:00
|
|
|
auto* pDData = (unsigned char*)DisplayBuff.GetCoursorData(DisplayBuff.GetCoursorPosition(3, 0) + ChartStartX);
|
2023-07-01 23:49:41 +00:00
|
|
|
memcpy(pDData, U8ScreenHistory, sizeof(U8ScreenHistory));
|
|
|
|
|
2023-07-01 20:22:27 +00:00
|
|
|
u8ChartPosition++;
|
2023-08-01 15:54:30 +00:00
|
|
|
FlushFramebufferToScreen();
|
2023-07-01 20:22:27 +00:00
|
|
|
}
|
2023-08-01 15:54:30 +00:00
|
|
|
};
|