Skip to content

Commit

Permalink
Merge branch 'develop' of https://github.com/lovyan03/LovyanGFX into …
Browse files Browse the repository at this point in the history
…develop
  • Loading branch information
lovyan03 committed Nov 20, 2023
2 parents f0a6073 + 63c52cd commit 2dafea4
Show file tree
Hide file tree
Showing 5 changed files with 178 additions and 7 deletions.
48 changes: 47 additions & 1 deletion .github/workflows/SDLBuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ name: SDLBuild

env:
PROJECT_DIR: examples_for_PC/CMake_SDL
WASM_DIR: examples_for_PC/CMake_WASM


on:
Expand All @@ -20,6 +21,17 @@ on:

workflow_dispatch:

permissions:
contents: write
pages: write
id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false

jobs:

LGFX_SDL2:
Expand Down Expand Up @@ -68,7 +80,6 @@ jobs:
cmake --build build/release --config Release
- name: Build LGFX_SDL2 for Linux
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
Expand All @@ -81,6 +92,28 @@ jobs:
cmake ..
cmake --build .
- name: Build LGFX_SDL2/WASM for Linux
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install latest # any specific version?
./emsdk activate latest
source ./emsdk_env.sh
cd ..
cd ${{env.WASM_DIR}}
mkdir build
cd build
emcmake cmake ..
emmake make
mkdir -p www/WASM
cp index.html www/WASM/index.html
- name: Upload WASM artifact
if: ${{ matrix.os == 'ubuntu-latest' }}
uses: actions/upload-pages-artifact@v2
with:
path: ${{env.WASM_DIR}}/build/www


- name: Build LGFX_SDL2 for Mac
Expand All @@ -94,3 +127,16 @@ jobs:
cmake ..
cmake --build .
deploy:
name: Deploy WASM Example 🚀
if: github.ref == 'refs/heads/master'
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: LGFX_SDL2
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
2 changes: 1 addition & 1 deletion examples_for_PC/CMake_WASM/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.12)
project (lv_wasm)

add_definitions(-DLGFX_SDL)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -s USE_SDL=2")
set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -g -s USE_SDL=2")

include_directories(../../../LovyanGFX/src/)

Expand Down
9 changes: 4 additions & 5 deletions examples_for_PC/CMake_WASM/LGFX_WASM.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,15 @@
void setup(void);
void loop(void);

void loopThread(void *arg)
void loopThread(void)
{
lgfx::Panel_sdl::loop();
loop();
lgfx::Panel_sdl::sdl_event_handler();
}

int monitor_hor_res, monitor_ver_res;

int main(int argc, char **argv)
{
setup();
emscripten_set_main_loop_arg(loopThread, NULL, -1, true);
lgfx::Panel_sdl::setup();
emscripten_set_main_loop(loopThread, -1, true);
}
15 changes: 15 additions & 0 deletions examples_for_PC/CMake_WASM/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,19 @@
2. `cd build`
3. `emcmake cmake ..`
4. `emmake make`
5. `http-server`
5. open `index.html` in your browser.

## Notes
this is a debug build: `set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -g -s USE_SDL=2")`
It uses the SDL2 library bundled with the Emscripten SDK so I think the `Install SDL``
is not necessary

### Debugging
I followed the [Debugging WebAssembly with modern tools](https://developer.chrome.com/blog/wasm-debugging-2020/) tutorial and was able to debug at the C source level just fine


Steps:
1. Install Chrome Canary
2. Install the C/C++ DevTools Support (DWARF) as outline
3. serve `index.html` via `http-server` - opening file//wherever/index.html breaks debugging
111 changes: 111 additions & 0 deletions src/lgfx_user/LGFX_Sunton_ESP32-8048S050.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@

#define LGFX_USE_V1
#include <LovyanGFX.hpp>

#include <lgfx/v1/platforms/esp32s3/Panel_RGB.hpp>
#include <lgfx/v1/platforms/esp32s3/Bus_RGB.hpp>

#include <driver/i2c.h>

class LGFX : public lgfx::LGFX_Device
{
public:

lgfx::Bus_RGB _bus_instance;
lgfx::Panel_RGB _panel_instance;
lgfx::Light_PWM _light_instance;
lgfx::Touch_GT911 _touch_instance;

LGFX(void)
{
{
auto cfg = _panel_instance.config();

cfg.memory_width = 800;
cfg.memory_height = 480;
cfg.panel_width = 800;
cfg.panel_height = 480;

cfg.offset_x = 0;
cfg.offset_y = 0;

_panel_instance.config(cfg);
}

{
auto cfg = _panel_instance.config_detail();

cfg.use_psram = 1;

_panel_instance.config_detail(cfg);
}

{
auto cfg = _bus_instance.config();
cfg.panel = &_panel_instance;
cfg.pin_d0 = GPIO_NUM_8; // B0
cfg.pin_d1 = GPIO_NUM_3; // B1
cfg.pin_d2 = GPIO_NUM_46; // B2
cfg.pin_d3 = GPIO_NUM_9; // B3
cfg.pin_d4 = GPIO_NUM_1; // B4
cfg.pin_d5 = GPIO_NUM_5; // G0
cfg.pin_d6 = GPIO_NUM_6; // G1
cfg.pin_d7 = GPIO_NUM_7; // G2
cfg.pin_d8 = GPIO_NUM_15; // G3
cfg.pin_d9 = GPIO_NUM_16; // G4
cfg.pin_d10 = GPIO_NUM_4; // G5
cfg.pin_d11 = GPIO_NUM_45; // R0
cfg.pin_d12 = GPIO_NUM_48; // R1
cfg.pin_d13 = GPIO_NUM_47; // R2
cfg.pin_d14 = GPIO_NUM_21; // R3
cfg.pin_d15 = GPIO_NUM_14; // R4

cfg.pin_henable = GPIO_NUM_40;
cfg.pin_vsync = GPIO_NUM_41;
cfg.pin_hsync = GPIO_NUM_39;
cfg.pin_pclk = GPIO_NUM_42;
cfg.freq_write = 16000000;

cfg.hsync_polarity = 0;
cfg.hsync_front_porch = 8;
cfg.hsync_pulse_width = 4;
cfg.hsync_back_porch = 8;
cfg.vsync_polarity = 0;
cfg.vsync_front_porch = 8;
cfg.vsync_pulse_width = 4;
cfg.vsync_back_porch = 8;
cfg.pclk_idle_high = 1;
_bus_instance.config(cfg);
}
_panel_instance.setBus(&_bus_instance);

{
auto cfg = _light_instance.config();
cfg.pin_bl = GPIO_NUM_2;
_light_instance.config(cfg);
}
_panel_instance.light(&_light_instance);

{
auto cfg = _touch_instance.config();
cfg.x_min = 0;
cfg.x_max = 800;
cfg.y_min = 0;
cfg.y_max = 480;
cfg.pin_int = GPIO_NUM_NC;
cfg.bus_shared = false;
cfg.offset_rotation = 0;
// I2C接続
cfg.i2c_port = I2C_NUM_1;
cfg.pin_sda = GPIO_NUM_19;
cfg.pin_scl = GPIO_NUM_20;
cfg.pin_rst = GPIO_NUM_38;
cfg.freq = 400000;
cfg.i2c_addr = 0x14; // 0x5D , 0x14
_touch_instance.config(cfg);
_panel_instance.setTouch(&_touch_instance);
}

setPanel(&_panel_instance);
}
};

0 comments on commit 2dafea4

Please sign in to comment.