VGM/RPC: Rework custom colors, smoother config, better rainbow support (#53)

* first poc works

* rainbow mode now works over rpc

still not done refrash rate from flipper change and is slow so the rainbow mode doesnt look good

* transmit VgmMode

* use all the 32bit

* some config stuff

* sync apps

* Change protobuf repo

* Some lib naming changes and cleanup

* Format protobuf

* Update from RGB backlight if enabled

* Remove old expansion toggling

* Update settings UI

* Fix searching previous value

* VGM Tool: Add new RGB firmware

* Update changelog

* These are unused

---------

Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com>
This commit is contained in:
HaxSam
2024-06-02 07:41:47 +00:00
committed by GitHub
parent f17b19ed7d
commit 2319475dd0
17 changed files with 200 additions and 232 deletions

View File

@@ -46,12 +46,20 @@ typedef enum {
} SpiHandle;
typedef enum {
VgmColorModeDefault,
VgmColorModeCustom,
VgmColorModeRainbow,
VgmColorModeRgbBacklight,
VgmColorModeCount,
} VgmColorMode;
ScreenColorModeDefault,
ScreenColorModeCustom,
ScreenColorModeRainbow,
ScreenColorModeRgbBacklight,
ScreenColorModeCount,
} ScreenColorMode;
typedef union __attribute__((packed)) {
struct {
ScreenColorMode mode;
RgbColor rgb;
};
uint32_t value;
} ScreenFrameColor;
typedef struct {
char asset_pack[ASSET_PACKS_NAME_LEN];
@@ -87,10 +95,9 @@ typedef struct {
FuriHalSerialId uart_esp_channel;
FuriHalSerialId uart_nmea_channel;
bool file_naming_prefix_after;
VgmColorMode vgm_color_mode;
Rgb565Color vgm_color_fg;
Rgb565Color vgm_color_bg;
FuriHalVersionColor spoof_color;
ScreenFrameColor rpc_color_fg;
ScreenFrameColor rpc_color_bg;
} MomentumSettings;
typedef struct {

View File

@@ -39,10 +39,9 @@ MomentumSettings momentum_settings = {
.uart_esp_channel = FuriHalSerialIdUsart, // pin 13,14
.uart_nmea_channel = FuriHalSerialIdUsart, // pin 13,14
.file_naming_prefix_after = false, // Before
.vgm_color_mode = VgmColorModeDefault, // Default
.vgm_color_fg.value = 0x0000, // Default Black
.vgm_color_bg.value = 0xFC00, // Default Orange
.spoof_color = FuriHalVersionColorUnknown, // Real
.rpc_color_fg = {{ScreenColorModeDefault, {.value = 0x000000}}}, // Default Black
.rpc_color_bg = {{ScreenColorModeDefault, {.value = 0xFF8200}}}, // Default Orange
};
typedef enum {
@@ -110,10 +109,9 @@ static const struct {
{setting_enum(uart_esp_channel, FuriHalSerialIdMax)},
{setting_enum(uart_nmea_channel, FuriHalSerialIdMax)},
{setting_bool(file_naming_prefix_after)},
{setting_enum(vgm_color_mode, VgmColorModeCount)},
{setting_uint(vgm_color_fg, 0x0000, 0xFFFF)},
{setting_uint(vgm_color_bg, 0x0000, 0xFFFF)},
{setting_enum(spoof_color, FuriHalVersionColorCount)},
{setting_uint(rpc_color_fg, 0x000000, 0xFFFFFF)},
{setting_uint(rpc_color_bg, 0x000000, 0xFFFFFF)},
};
void momentum_settings_load(void) {