Skip to content

Commit c3a8241

Browse files
committed
Merge branch 'main' into webui
2 parents 0413d76 + 5ba4ee6 commit c3a8241

192 files changed

Lines changed: 84981 additions & 24053 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build_and_release.yml renamed to .github/workflows/build_and_release_boxpro.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Build Firmware
1+
name: Build BoxPro Firmware
22

33
on: [push, pull_request]
44

@@ -14,27 +14,27 @@ jobs:
1414
- name: Build Firmware
1515
run: |
1616
bash setup.sh
17-
make -C build
17+
make -C build_boxpro
1818
1919
- name: Get Firmware Name
2020
id: vars
21-
run: echo "firmware_name=$(basename out/*bin)" >> $GITHUB_ENV
21+
run: echo "firmware_name=$(basename build_boxpro/out/*bin)" >> $GITHUB_ENV
2222

2323
- name: Upload Firmware Package
2424
uses: actions/upload-artifact@v4
2525
with:
2626
name: ${{ env.firmware_name }}
27-
path: out/${{ env.firmware_name }}
27+
path: build_boxpro/out/${{ env.firmware_name }}
2828

2929
- name: Upload Firmware Binary
3030
uses: actions/upload-artifact@v4
3131
with:
3232
name: HDZGOGGLE
33-
path: out/HDZGOGGLE
33+
path: build_boxpro/out/HDZGOGGLE
3434

3535
- name: Create Release
3636
uses: softprops/action-gh-release@v0.1.15
3737
if: startsWith(github.ref, 'refs/tags/v')
3838
with:
39-
files: out/${{ env.firmware_name }}
39+
files: build_boxpro/out/${{ env.firmware_name }}
4040
draft: true
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: Build Google Firmware
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
build:
7+
runs-on: ubuntu-latest
8+
9+
steps:
10+
- uses: actions/checkout@v4
11+
with:
12+
submodules: true
13+
14+
- name: Build Firmware
15+
run: |
16+
bash setup.sh
17+
make -C build_goggle
18+
19+
- name: Get Firmware Name
20+
id: vars
21+
run: echo "firmware_name=$(basename build_goggle/out/*bin)" >> $GITHUB_ENV
22+
23+
- name: Upload Firmware Package
24+
uses: actions/upload-artifact@v4
25+
with:
26+
name: ${{ env.firmware_name }}
27+
path: build_goggle/out/${{ env.firmware_name }}
28+
29+
- name: Upload Firmware Binary
30+
uses: actions/upload-artifact@v4
31+
with:
32+
name: HDZGOGGLE
33+
path: build_goggle/out/HDZGOGGLE
34+
35+
- name: Create Release
36+
uses: softprops/action-gh-release@v0.1.15
37+
if: startsWith(github.ref, 'refs/tags/v')
38+
with:
39+
files: build_goggle/out/${{ env.firmware_name }}
40+
draft: true

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
/build
22
/build_emu
3+
build_goggle
4+
build_boxpro
35
linux-4.9
46
/media
57
toolchain

.vscode/settings.json

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
{
22
"editor.formatOnSave": true,
33
"files.associations": {
4-
"ui_main_menu.h": "c",
5-
"typeindex": "c",
6-
"typeinfo": "c",
7-
"page_wifi.h": "c",
8-
"record_definitions.h": "c",
9-
"sdcard.h": "c",
10-
"system.h": "c",
11-
"page_storage.h": "c",
12-
"chrono": "c",
134
"self_test.h": "c",
5+
"hardware.h": "c",
6+
"rtc6715.h": "c",
7+
"random": "cpp",
8+
"common.hh": "c",
9+
"ui_statusbar.h": "c",
1410
"page_common.h": "c",
15-
"stdatomic.h": "c",
16-
"common.hh": "c"
11+
"settings.h": "c",
12+
"page_headtracker.h": "c",
13+
"page_imagesettings.h": "c",
14+
"page_record.h": "c",
15+
"typeindex": "c",
16+
"typeinfo": "c",
17+
"targets.h": "c"
1718
}
1819
}

CMakeLists.txt

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,17 @@ if(NOT EMULATOR_BUILD)
1111
set(COMMON_COMPILER_FLAGS "${COMMON_COMPILER_FLAGS} -mfpu=neon -mfloat-abi=hard")
1212
endif()
1313

14+
option(HDZ_GOGGLE "Target Goggles" OFF)
15+
if (HDZ_GOGGLE)
16+
set(COMMON_COMPILER_FLAGS "${COMMON_COMPILER_FLAGS} -DHDZGOGGLE=1")
17+
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/mkapp/app/platform "HDZGOGGLE")
18+
endif()
19+
20+
option(HDZ_BOXPRO "Target BoxPRO" OFF)
21+
if (HDZ_BOXPRO)
22+
set(COMMON_COMPILER_FLAGS "${COMMON_COMPILER_FLAGS} -DHDZBOXPRO=1")
23+
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/mkapp/app/platform "HDZBOXPRO")
24+
endif()
1425

1526
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILER_FLAGS}")
1627
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_COMPILER_FLAGS}")
@@ -21,8 +32,8 @@ set(CMAKE_CXX_FLAGS_DEBUG "-g")
2132
set(CMAKE_C_FLAGS_RELEASE "-Werror -O3 -DNDEBUG")
2233
set(CMAKE_CXX_FLAGS_RELEASE "-Werror -O3 -DNDEBUG")
2334

24-
set(OS_APP_PATH ${PROJECT_SOURCE_DIR}/mkapp/app/app)
25-
set(RECORD_APP_PATH ${PROJECT_SOURCE_DIR}/mkapp/app/app/record)
35+
set(OS_APP_PATH ${CMAKE_CURRENT_BINARY_DIR}/mkapp/app/app)
36+
set(RECORD_APP_PATH ${CMAKE_CURRENT_BINARY_DIR}/mkapp/app/app/record)
2637

2738
# common build settings
2839
set(STANDARD_LIBRARIES
@@ -40,6 +51,7 @@ add_definitions(
4051
-D_GNU_SOURCE
4152
-DUSE_LOG_LIB_GLOG
4253
)
54+
4355
if(EMULATOR_BUILD)
4456
add_definitions(
4557
-DEMULATOR_BUILD
@@ -52,26 +64,31 @@ add_subdirectory(lib/minIni)
5264
add_subdirectory(lib/log)
5365
add_subdirectory(lib/esp-loader)
5466
add_subdirectory(lib/softwinner)
67+
5568
if(EMULATOR_BUILD)
5669
find_package(SDL2 REQUIRED)
5770
else()
5871
add_subdirectory(lib/ffmpeg)
5972
add_subdirectory(lib/live)
6073
endif()
6174

62-
6375
# main application
6476
file(GLOB SRC_FILES_CORE "src/core/*.c" "src/core/*.h")
6577
file(GLOB SRC_FILES_DRIVER "src/driver/*.c" "src/driver/*.h")
6678
file(GLOB SRC_FILES_FONTS "src/fonts/*.c" "src/fonts/*.h")
67-
file(GLOB SRC_FILES_IMAGE "src/image/*.c" "src/image/*.h")
6879
file(GLOB SRC_FILES_UI "src/ui/*.c" "src/ui/*.h")
6980
file(GLOB SRC_FILES_BMI "src/bmi270/*.c" "src/bmi270/*.h")
7081
file(GLOB SRC_FILES_UTIL "src/util/*.c" "src/util/*.h")
7182
file(GLOB SRC_FILES_PLAYER "src/player/*.c" "src/player/*.h")
7283
file(GLOB SRC_FILES_EMULATOR "src/emulator/*.c" "src/emulator/*.h")
7384
file(GLOB SRC_FILES_LANG "src/lang/*.c" "src/lang/*.h")
7485

86+
if(HDZ_GOGGLE)
87+
file(GLOB SRC_FILES_IMAGE "src/image/goggle/*.c" "src/image/goggle/*.h")
88+
elseif(HDZ_BOXPRO)
89+
file(GLOB SRC_FILES_IMAGE "src/image/boxpro/*.c" "src/image/boxpro/*.h")
90+
endif()
91+
7592
set(SRC_FILES
7693
${SRC_FILES_CORE}
7794
${SRC_FILES_DRIVER}
@@ -82,11 +99,13 @@ set(SRC_FILES
8299
${SRC_FILES_UTIL}
83100
${SRC_FILES_LANG}
84101
)
102+
85103
if(EMULATOR_BUILD)
86104
list(APPEND SRC_FILES ${SRC_FILES_EMULATOR})
87105
else()
88106
list(APPEND SRC_FILES ${SRC_FILES_PLAYER})
89107
endif()
108+
90109
add_executable(${PROJECT_NAME} ${SRC_FILES})
91110

92111
target_include_directories(${PROJECT_NAME} PRIVATE
@@ -109,13 +128,14 @@ target_link_libraries(${PROJECT_NAME} PRIVATE
109128
esp-loader
110129
softwinner
111130
)
131+
112132
if(EMULATOR_BUILD)
113133
target_link_libraries(${PROJECT_NAME} PRIVATE ${SDL2_LIBRARIES})
114134
endif()
115135

116136
if(NOT EMULATOR_BUILD)
117137
# record application
118-
file(GLOB SRC_FILES_RECORD "src/record/*.c" "src/record/*.h")
138+
file(GLOB SRC_FILES_RECORD "src/record/*.c" "src/record/*.h")
119139

120140
add_executable(record
121141
${SRC_FILES_RECORD}
@@ -166,20 +186,23 @@ if(NOT EMULATOR_BUILD)
166186
)
167187

168188
# image build
189+
add_custom_target(MKAPP ALL
190+
COMMAND rsync -r ${PROJECT_SOURCE_DIR}/mkapp ${CMAKE_CURRENT_BINARY_DIR}/
191+
)
169192
add_custom_command(
170-
OUTPUT ${PROJECT_SOURCE_DIR}/out/${PROJECT_NAME}
193+
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/out/${PROJECT_NAME}
171194
COMMAND size -A ${PROJECT_NAME}
172-
COMMAND mkdir -p ${PROJECT_SOURCE_DIR}/out/
173-
COMMAND cp ${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/out/
174-
COMMAND cp record ${PROJECT_SOURCE_DIR}/out/
175-
COMMAND cp rtspLive ${PROJECT_SOURCE_DIR}/out/
195+
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/out/
196+
COMMAND cp ${PROJECT_NAME} ${CMAKE_CURRENT_BINARY_DIR}/out/
197+
COMMAND cp record ${CMAKE_CURRENT_BINARY_DIR}/out/
198+
COMMAND cp rtspLive ${CMAKE_CURRENT_BINARY_DIR}/out/
176199
COMMAND cp ${PROJECT_NAME} ${OS_APP_PATH}
177200
COMMAND cp record ${RECORD_APP_PATH}
178201
COMMAND cp rtspLive ${RECORD_APP_PATH}
179-
COMMAND cd ${PROJECT_SOURCE_DIR} && ./mkapp/mkapp_ota.sh
180-
DEPENDS ${PROJECT_NAME} record rtspLive
202+
COMMAND cd ${CMAKE_CURRENT_BINARY_DIR} && ./mkapp/mkapp_ota.sh
203+
DEPENDS MKAPP ${PROJECT_NAME} record rtspLive
181204
)
182205
add_custom_target(${PROJECT_NAME}-OTA ALL
183-
DEPENDS ${PROJECT_SOURCE_DIR}/out/${PROJECT_NAME}
206+
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/out/${PROJECT_NAME}
184207
)
185208
endif()

README.md

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# HDZero Goggle Firmware
1+
# HDZero Goggle/BoxPro Firmware
22

33
## Environment Setup
44

@@ -21,17 +21,27 @@ A bash script is supplied to take care of the bootstrap process:
2121
~/hdzero-goggle$ ./setup.sh
2222
```
2323

24-
## Building the Firmware
24+
## Building Firmware
2525

2626
In either of the above scenarios the firmware can be built via make.
2727
An appropiate vscode build task ships with this repository as well.
2828

29+
Compiling HDZero Goggles:
2930
```
30-
~/hdzero-goggle$ cd build
31-
~/hdzero-goggle/build$ make clean all -j $(nproc)
31+
~/hdzero-goggle$ cd build_goggle
32+
~/hdzero-goggle/build_goggle$ make clean all -j $(nproc)
3233
```
3334

34-
The firmware is generated as hdzero-goggle/out/HDZERO_GOGGLE-x.x.x.bin
35+
The firmware is generated as hdzero-goggle/build_goggle/out/HDZERO_GOGGLE-x.x.x.bin
36+
Where x.x.x is the OTA_VER.RX_VER.VA_VER
37+
38+
Compiling HDZero BoxPro:
39+
```
40+
~/hdzero-goggle$ cd build_boxpro
41+
~/hdzero-goggle/build_boxpro$ make clean all -j $(nproc)
42+
```
43+
44+
The firmware is generated as hdzero-goggle/build_boxpro/out/HDZERO_BOXPRO-x.x.x.bin
3545
Where x.x.x is the OTA_VER.RX_VER.VA_VER
3646

3747
### Building the firmware using nix
@@ -91,10 +101,12 @@ sudo apt-get install build-essential libsdl2-dev
91101

92102
### Build and Run
93103

104+
Emulator support for both Goggle and BoxPro is supported by setting the appropriate compilation switches.
105+
94106
```
95107
~/hdzero-goggle$ mkdir build_emu
96108
~/hdzero-goggle$ cd build_emu
97-
~/hdzero-goggle/build_emu$ cmake .. -DEMULATOR_BUILD=ON -DCMAKE_BUILD_TYPE=Debug
109+
~/hdzero-goggle/build_emu$ cmake .. -DEMULATOR_BUILD=ON -DCMAKE_BUILD_TYPE=Debug -DHDZ_GOGGLE=ON -DHDZ_BOXPRO=OFF
98110
~/hdzero-goggle/build_emu$ make -j $(nproc)
99111
~/hdzero-goggle/build_emu$ ./HDZGOGGLE
100112
```

conf/targets.h

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#pragma once
2+
3+
#ifdef __cplusplus
4+
extern "C" {
5+
#endif
6+
7+
typedef enum {
8+
TARGET_UNKNOWN = 0,
9+
TARGET_GOGGLE,
10+
TARGET_BOXPRO,
11+
} TARGET_TYPES;
12+
13+
#if HDZGOGGLE
14+
15+
#define TARGET_DPI_DEFAULT 130
16+
#define TARGET_FONT_DEFAULT &lv_font_montserrat_26
17+
18+
static inline TARGET_TYPES getTargetType() { return TARGET_GOGGLE; }
19+
20+
#elif HDZBOXPRO
21+
22+
#define TARGET_DPI_DEFAULT 70
23+
#define TARGET_FONT_DEFAULT &lv_font_montserrat_16
24+
25+
static inline TARGET_TYPES getTargetType() { return TARGET_BOXPRO; }
26+
27+
#else
28+
29+
#error "Platform not defined"
30+
31+
#endif
32+
33+
#ifdef __cplusplus
34+
}
35+
#endif

0 commit comments

Comments
 (0)