From 8ca71c1372422d360bf1173428aad7e1ae05c33e Mon Sep 17 00:00:00 2001 From: Armel FAUVEAU Date: Fri, 10 May 2024 01:35:35 +0200 Subject: [PATCH] Add feature screenshot --- Makefile | 4 ++++ app/action.c | 9 +++++++++ app/spectrum.c | 8 ++++++++ screenshot.h | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 72 insertions(+) create mode 100644 screenshot.h diff --git a/Makefile b/Makefile index 07d0943..d3c7720 100644 --- a/Makefile +++ b/Makefile @@ -42,6 +42,7 @@ ENABLE_BLMIN_TMP_OFF ?= 0 ENABLE_SCAN_RANGES ?= 1 ENABLE_FEAT_F4HWN ?= 1 ENABLE_FEAT_F4HWN_FIXED_PWR ?= 0 +ENABLE_FEAT_F4HWN_SCREENSHOT ?= 0 # ---- DEBUGGING ---- ENABLE_AM_FIX_SHOW_DATA ?= 0 @@ -403,6 +404,9 @@ endif ifeq ($(ENABLE_FEAT_F4HWN_FIXED_PWR),1) CFLAGS += -DENABLE_FEAT_F4HWN_FIXED_PWR endif +ifeq ($(ENABLE_FEAT_F4HWN_SCREENSHOT),1) + CFLAGS += -DENABLE_FEAT_F4HWN_SCREENSHOT +endif LDFLAGS = LDFLAGS += -z noexecstack -mcpu=cortex-m0 -nostartfiles -Wl,-T,firmware.ld -Wl,--gc-sections diff --git a/app/action.c b/app/action.c index c91879b..be5096d 100644 --- a/app/action.c +++ b/app/action.c @@ -43,6 +43,10 @@ #include "ui/inputbox.h" #include "ui/ui.h" +#ifdef ENABLE_FEAT_F4HWN_SCREENSHOT + #include "screenshot.h" +#endif + #if defined(ENABLE_FMRADIO) static void ACTION_Scan_FM(bool bRestart); #endif @@ -314,6 +318,11 @@ void ACTION_Handle(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) { funcShort = funcLong; + // For screenshot + #ifdef ENABLE_FEAT_F4HWN_SCREENSHOT + getScreenShot(); + #endif + if (!bKeyPressed) //ignore release if held return; } diff --git a/app/spectrum.c b/app/spectrum.c index 6d28028..5125ae4 100644 --- a/app/spectrum.c +++ b/app/spectrum.c @@ -27,6 +27,10 @@ #include "ui/helper.h" #include "ui/main.h" +#ifdef ENABLE_FEAT_F4HWN_SCREENSHOT + #include "screenshot.h" +#endif + struct FrequencyBandInfo { uint32_t lower; uint32_t upper; @@ -572,6 +576,10 @@ static void ToggleBacklight() { } else { BACKLIGHT_TurnOff(); } + // For screenshot + #ifdef ENABLE_FEAT_F4HWN_SCREENSHOT + getScreenShot(); + #endif } static void ToggleStepsCount() { diff --git a/screenshot.h b/screenshot.h new file mode 100644 index 0000000..abc2fd9 --- /dev/null +++ b/screenshot.h @@ -0,0 +1,51 @@ +/* Copyright 2024 Armel F4HWN + * https://github.com/armel + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "debugging.h" +#include "driver/st7565.h" + +static inline void getScreenShot(void) +{ + char str[2] = ""; + + LogUart("P1\n"); + LogUart("128 64\n"); + + for(uint8_t b = 0; b < 8; b++) + { + for(uint8_t i = 0; i < 128; i++) + { + sprintf(str, "%d ", ((gStatusLine[i] >> b) & 0x01)); + LogUart(str); + } + LogUart("\n"); + } + + for(uint8_t l = 0; l < 7; l++) + { + for(uint8_t b = 0; b < 8; b++) + { + for(uint8_t i = 0; i < 128; i++) + { + sprintf(str, "%d ", ((gFrameBuffer[l][i] >> b) & 0x01)); + LogUart(str); + } + } + LogUart("\n"); + } + + LogUart("\n----------------\n"); +} \ No newline at end of file