mirror of
https://github.com/armel/uv-k1-k5v3-firmware-custom.git
synced 2026-10-02 03:15:37 +00:00
Add screenshot state flags
This commit is contained in:
1 parent
bca06e3382
commit
dcbbd744ac
4 files changed
+37
-4
No files matched your search
@@ -411,6 +411,11 @@ void BK4819_ToggleGpioOut(BK4819_GPIO_PIN_t Pin, bool bSet)
|
|||||||
BK4819_WriteRegister(BK4819_REG_33, gBK4819_GpioOutState);
|
BK4819_WriteRegister(BK4819_REG_33, gBK4819_GpioOutState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BK4819_IsGpioOutSet(BK4819_GPIO_PIN_t Pin)
|
||||||
|
{
|
||||||
|
return (gBK4819_GpioOutState & (0x40u >> Pin)) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
void BK4819_SetCDCSSCodeWord(uint32_t CodeWord)
|
void BK4819_SetCDCSSCodeWord(uint32_t CodeWord)
|
||||||
{
|
{
|
||||||
// REG_51
|
// REG_51
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ void BK4819_SetAGC(bool enable);
|
|||||||
void BK4819_InitAGC(bool amModulation);
|
void BK4819_InitAGC(bool amModulation);
|
||||||
|
|
||||||
void BK4819_ToggleGpioOut(BK4819_GPIO_PIN_t Pin, bool bSet);
|
void BK4819_ToggleGpioOut(BK4819_GPIO_PIN_t Pin, bool bSet);
|
||||||
|
bool BK4819_IsGpioOutSet(BK4819_GPIO_PIN_t Pin);
|
||||||
|
|
||||||
void BK4819_SetCDCSSCodeWord(uint32_t CodeWord);
|
void BK4819_SetCDCSSCodeWord(uint32_t CodeWord);
|
||||||
void BK4819_SetCTCSSFrequency(uint32_t BaudRate);
|
void BK4819_SetCTCSSFrequency(uint32_t BaudRate);
|
||||||
|
|||||||
@@ -441,6 +441,11 @@ void BK4819_ToggleGpioOut(BK4819_GPIO_PIN_t Pin, bool bSet)
|
|||||||
BK4819_WriteRegister(BK4819_REG_33, gBK4819_GpioOutState);
|
BK4819_WriteRegister(BK4819_REG_33, gBK4819_GpioOutState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BK4819_IsGpioOutSet(BK4819_GPIO_PIN_t Pin)
|
||||||
|
{
|
||||||
|
return (gBK4819_GpioOutState & (0x40u >> Pin)) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
void BK4819_SetCDCSSCodeWord(uint32_t CodeWord)
|
void BK4819_SetCDCSSCodeWord(uint32_t CodeWord)
|
||||||
{
|
{
|
||||||
// REG_51
|
// REG_51
|
||||||
|
|||||||
+26
-4
@@ -20,6 +20,7 @@
|
|||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "driver/vcp.h"
|
#include "driver/vcp.h"
|
||||||
#include "driver/keyboard.h"
|
#include "driver/keyboard.h"
|
||||||
|
#include "driver/bk4819.h"
|
||||||
|
|
||||||
// SRAM optimization: minimize static allocations
|
// SRAM optimization: minimize static allocations
|
||||||
// - previousHash: one fingerprint per 8-byte chunk instead of a full
|
// - previousHash: one fingerprint per 8-byte chunk instead of a full
|
||||||
@@ -76,8 +77,30 @@ enum {
|
|||||||
SCREENSHOT_CHUNK_SIZE = 8,
|
SCREENSHOT_CHUNK_SIZE = 8,
|
||||||
SCREENSHOT_CHUNKS_PER_LINE = 16,
|
SCREENSHOT_CHUNKS_PER_LINE = 16,
|
||||||
SCREENSHOT_HALF_LINE_COLUMNS = LCD_WIDTH / 2,
|
SCREENSHOT_HALF_LINE_COLUMNS = LCD_WIDTH / 2,
|
||||||
|
SCREENSHOT_MARKER_BASE = 0xF0,
|
||||||
|
SCREENSHOT_FLAG_DEEP_SLEEP = 1 << 0,
|
||||||
|
SCREENSHOT_FLAG_LED_RED = 1 << 1,
|
||||||
|
SCREENSHOT_FLAG_LED_GREEN = 1 << 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static uint8_t SCREENSHOT_StateFlags(void)
|
||||||
|
{
|
||||||
|
uint8_t flags = 0;
|
||||||
|
|
||||||
|
#ifdef ENABLE_FEAT_F4HWN_SLEEP
|
||||||
|
if (gWakeUp)
|
||||||
|
flags |= SCREENSHOT_FLAG_DEEP_SLEEP;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (BK4819_IsGpioOutSet(BK4819_GPIO5_PIN1_RED))
|
||||||
|
flags |= SCREENSHOT_FLAG_LED_RED;
|
||||||
|
|
||||||
|
if (BK4819_IsGpioOutSet(BK4819_GPIO6_PIN2_GREEN))
|
||||||
|
flags |= SCREENSHOT_FLAG_LED_GREEN;
|
||||||
|
|
||||||
|
return flags;
|
||||||
|
}
|
||||||
|
|
||||||
// Compute one 8-byte output chunk directly from the display buffers.
|
// Compute one 8-byte output chunk directly from the display buffers.
|
||||||
// Frame layout: per line (status + 7 frame lines), 8 bit layers of
|
// Frame layout: per line (status + 7 frame lines), 8 bit layers of
|
||||||
// 16 bytes each. Each bit layer is split into two 64-column chunks.
|
// 16 bytes each. Each bit layer is split into two 64-column chunks.
|
||||||
@@ -149,10 +172,9 @@ void SCREENSHOT_Update(bool force)
|
|||||||
if (gKeyReading0 != KEY_INVALID)
|
if (gKeyReading0 != KEY_INVALID)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// ==== Send version marker (for backward compatibility detection) ====
|
// ==== Send version marker and state flags ====
|
||||||
// New format: sends 0xFF before header
|
// 0xF0 keeps a resync-safe marker before the standard AA 55 header.
|
||||||
// Old format: doesn't exist, so viewers can differentiate
|
uint8_t versionMarker = SCREENSHOT_MARKER_BASE | SCREENSHOT_StateFlags();
|
||||||
uint8_t versionMarker = 0xFF;
|
|
||||||
SCREENSHOT_Send(&versionMarker, 1);
|
SCREENSHOT_Send(&versionMarker, 1);
|
||||||
|
|
||||||
// ==== Send header ====
|
// ==== Send header ====
|
||||||
|
|||||||
Reference in new issue
Block a user