mirror of
https://github.com/EyeTrackVR/OpenIris.git
synced 2025-11-04 15:39:42 +08:00
Add pinout and environments for ESP32S3 Xiao Sense boards (#52)
* Add pinout and environments for ESP32S3 Xiao Sense boards * Add opi memory_type to fix psram issues * fix: multiple typos or copy paste issues * fix: fix the XIAO ESP32S3 board type * fix: xaio crashing when allocating * fix: xaio crashing when allocating * fix: experiment with qio * fix: add some basic logging * fix: add some more logging * fix: add some more logging * fix: add some more logging * fix: add some more logging * fix: add some more logging * fix: add some more logging * fix: add some more logging * fix: add some more logging * fix: try to increase the stack size for the task * chore: enable wifi * ci(ci-gha); fix github actions failing * ci(ci-gha); fix github actions failing * ci(ci-gh): removing update logic from CI - i editing the docker container itself to be up-to-date * ci(ci-test): testing new gh action matrix format * ci(ci-test): testing new gh action matrix format * ci(ci-test): testing new gh action matrix format * ci(ci-test): testing new gh action matrix format * fix: fix esp32s3 xiao wifi - fix LED pin issue - force newest espressif toolchain - clean up pinout defines - add lots of logging - move strings into wifi handler - upgrade to c++17 * fix: fix esp32s3 xiao wifi - fix syntax error in wifihandler * fix: error handling in camera handler * fix: bug in wifi config saving routine - refactor lib - fix bug in wifi config logic - clean up --------- Co-authored-by: Sebastian Fitt <9294002+Blu3u@users.noreply.github.com> Co-authored-by: DaOfficialWizard <45744329+ZanzyTHEbar@users.noreply.github.com>
This commit is contained in:
parent
7e8aab2ed3
commit
2ca0174f0f
23
.github/workflows/build_release_bins.yml
vendored
23
.github/workflows/build_release_bins.yml
vendored
@ -23,13 +23,19 @@ permissions:
|
|||||||
contents: write
|
contents: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
setup:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
||||||
|
steps:
|
||||||
|
- id: set-matrix
|
||||||
|
run: echo "matrix={\"target_name\":[\"esp32AIThinker\",\"esp32M5Stack\",\"esp32Cam\",\"esp_eye\",\"wrover\",\"wrooms3QIO\",\"wrooms3QIOUSB\",\"wrooms3\",\"wrooms3USB\"],\"target_build_type\":[\"\", \"_release\"]}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
build:
|
build:
|
||||||
|
needs: setup
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix: ${{fromJson(needs.setup.outputs.matrix)}}
|
||||||
target_name:
|
|
||||||
[esp32AIThinker, esp32M5Stack, esp32Cam, esp_eye, wrover, wrooms3QIO, wrooms3QIOUSB, wrooms3, wrooms3USB]
|
|
||||||
target_build_type: ["", _release] #, _OTA] # OTA is not needed
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
@ -45,6 +51,7 @@ jobs:
|
|||||||
export OPENIRIS_CI_BUILD=1
|
export OPENIRIS_CI_BUILD=1
|
||||||
mkdir build
|
mkdir build
|
||||||
mkdir build/${{ matrix.target_name }}${{ matrix.target_build_type }}
|
mkdir build/${{ matrix.target_name }}${{ matrix.target_build_type }}
|
||||||
|
echo "::endgroup::"
|
||||||
echo "::group::pio run"
|
echo "::group::pio run"
|
||||||
pio run --environment ${{ matrix.target_name }}${{ matrix.target_build_type }}
|
pio run --environment ${{ matrix.target_name }}${{ matrix.target_build_type }}
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
@ -99,15 +106,11 @@ jobs:
|
|||||||
chmod +x ./repo-tools/scripts/prepareCMD.sh
|
chmod +x ./repo-tools/scripts/prepareCMD.sh
|
||||||
semantic-release
|
semantic-release
|
||||||
cleanup:
|
cleanup:
|
||||||
|
needs: [setup, release-openiris]
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix: ${{fromJson(needs.setup.outputs.matrix)}}
|
||||||
target_name:
|
|
||||||
[esp32AIThinker, esp32M5Stack, esp32Cam, esp_eye, wrover, wrooms3QIO, wrooms3QIOUSB, wrooms3, wrooms3USB]
|
|
||||||
target_build_type: ["", _release]
|
|
||||||
name: Cleanup actions
|
name: Cleanup actions
|
||||||
needs:
|
|
||||||
- release-openiris
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
@ -1,69 +1,99 @@
|
|||||||
{
|
{
|
||||||
"folders": [
|
"folders": [
|
||||||
{
|
{
|
||||||
"path": "ESP"
|
"name": "ESP Source Code",
|
||||||
}
|
"path": "ESP"
|
||||||
],
|
},
|
||||||
"settings": {
|
{
|
||||||
"files.associations": {
|
"name": "Repo Root",
|
||||||
"*.Rmd": "rmd",
|
"path": "."
|
||||||
"array": "cpp",
|
}
|
||||||
"atomic": "cpp",
|
],
|
||||||
"*.tcc": "cpp",
|
"settings": {
|
||||||
"bitset": "cpp",
|
"cSpell.words": [
|
||||||
"cctype": "cpp",
|
"cctype",
|
||||||
"clocale": "cpp",
|
"cinttypes",
|
||||||
"cmath": "cpp",
|
"clocale",
|
||||||
"cstdarg": "cpp",
|
"cmath",
|
||||||
"cstddef": "cpp",
|
"cstdarg",
|
||||||
"cstdint": "cpp",
|
"cstddef",
|
||||||
"cstdio": "cpp",
|
"cstdint",
|
||||||
"cstdlib": "cpp",
|
"cstdio",
|
||||||
"cstring": "cpp",
|
"cstdlib",
|
||||||
"ctime": "cpp",
|
"cstring",
|
||||||
"cwchar": "cpp",
|
"cwchar",
|
||||||
"cwctype": "cpp",
|
"cwctype",
|
||||||
"deque": "cpp",
|
"deque",
|
||||||
"unordered_map": "cpp",
|
"ESPS",
|
||||||
"unordered_set": "cpp",
|
"fstream",
|
||||||
"vector": "cpp",
|
"iomanip",
|
||||||
"exception": "cpp",
|
"iosfwd",
|
||||||
"algorithm": "cpp",
|
"iostream",
|
||||||
"functional": "cpp",
|
"istream",
|
||||||
"iterator": "cpp",
|
"JTAG",
|
||||||
"map": "cpp",
|
"ostream",
|
||||||
"memory": "cpp",
|
"sccb",
|
||||||
"memory_resource": "cpp",
|
"sstream",
|
||||||
"numeric": "cpp",
|
"stdexcept",
|
||||||
"optional": "cpp",
|
"streambuf",
|
||||||
"random": "cpp",
|
"txpower",
|
||||||
"regex": "cpp",
|
"typeinfo",
|
||||||
"set": "cpp",
|
"XIAO"
|
||||||
"string": "cpp",
|
],
|
||||||
"string_view": "cpp",
|
"files.associations": {
|
||||||
"system_error": "cpp",
|
"*.Rmd": "rmd",
|
||||||
"tuple": "cpp",
|
"array": "cpp",
|
||||||
"type_traits": "cpp",
|
"atomic": "cpp",
|
||||||
"utility": "cpp",
|
"*.tcc": "cpp",
|
||||||
"fstream": "cpp",
|
"bitset": "cpp",
|
||||||
"initializer_list": "cpp",
|
"cctype": "cpp",
|
||||||
"iomanip": "cpp",
|
"clocale": "cpp",
|
||||||
"iosfwd": "cpp",
|
"cmath": "cpp",
|
||||||
"istream": "cpp",
|
"cstdarg": "cpp",
|
||||||
"limits": "cpp",
|
"cstddef": "cpp",
|
||||||
"new": "cpp",
|
"cstdint": "cpp",
|
||||||
"ostream": "cpp",
|
"cstdio": "cpp",
|
||||||
"sstream": "cpp",
|
"cstdlib": "cpp",
|
||||||
"stdexcept": "cpp",
|
"cstring": "cpp",
|
||||||
"streambuf": "cpp",
|
"ctime": "cpp",
|
||||||
"cinttypes": "cpp",
|
"cwchar": "cpp",
|
||||||
"typeinfo": "cpp",
|
"cwctype": "cpp",
|
||||||
"iostream": "cpp"
|
"deque": "cpp",
|
||||||
},
|
"unordered_map": "cpp",
|
||||||
"cSpell.words": [
|
"unordered_set": "cpp",
|
||||||
"ESPS",
|
"vector": "cpp",
|
||||||
"JTAG",
|
"exception": "cpp",
|
||||||
"sccb"
|
"algorithm": "cpp",
|
||||||
]
|
"functional": "cpp",
|
||||||
}
|
"iterator": "cpp",
|
||||||
}
|
"map": "cpp",
|
||||||
|
"memory": "cpp",
|
||||||
|
"memory_resource": "cpp",
|
||||||
|
"numeric": "cpp",
|
||||||
|
"optional": "cpp",
|
||||||
|
"random": "cpp",
|
||||||
|
"regex": "cpp",
|
||||||
|
"set": "cpp",
|
||||||
|
"string": "cpp",
|
||||||
|
"string_view": "cpp",
|
||||||
|
"system_error": "cpp",
|
||||||
|
"tuple": "cpp",
|
||||||
|
"type_traits": "cpp",
|
||||||
|
"utility": "cpp",
|
||||||
|
"fstream": "cpp",
|
||||||
|
"initializer_list": "cpp",
|
||||||
|
"iomanip": "cpp",
|
||||||
|
"iosfwd": "cpp",
|
||||||
|
"istream": "cpp",
|
||||||
|
"limits": "cpp",
|
||||||
|
"new": "cpp",
|
||||||
|
"ostream": "cpp",
|
||||||
|
"sstream": "cpp",
|
||||||
|
"stdexcept": "cpp",
|
||||||
|
"streambuf": "cpp",
|
||||||
|
"cinttypes": "cpp",
|
||||||
|
"typeinfo": "cpp",
|
||||||
|
"iostream": "cpp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -98,30 +98,27 @@ build_flags = ${env.build_flags}
|
|||||||
|
|
||||||
[env:wrooms3QIO]
|
[env:wrooms3QIO]
|
||||||
board = esp32-s3-devkitc-1
|
board = esp32-s3-devkitc-1
|
||||||
board_build.arduino.memory_type = qio_opi
|
board_build.flash_mode = qio
|
||||||
build_type = debug
|
build_type = debug
|
||||||
build_flags = ${env.build_flags}
|
build_flags = ${env.build_flags}
|
||||||
-DCORE_DEBUG_LEVEL=4
|
-DCORE_DEBUG_LEVEL=4
|
||||||
-DDEBUG_MODE=1
|
-DDEBUG_MODE=1
|
||||||
-DARDUINO_USB_CDC_ON_BOOT=1
|
|
||||||
-DETVR_EYE_TRACKER_USB_API
|
|
||||||
${pinoutsESPS3WROVER.build_flags}
|
${pinoutsESPS3WROVER.build_flags}
|
||||||
upload_flags = --no-stub
|
upload_flags = --no-stub
|
||||||
|
|
||||||
[env:wrooms3QIO_release]
|
[env:wrooms3QIO_release]
|
||||||
board = esp32-s3-devkitc-1
|
board = esp32-s3-devkitc-1
|
||||||
board_build.arduino.memory_type = qio_opi
|
board_build.flash_mode = qio
|
||||||
build_type = release
|
build_type = release
|
||||||
build_flags = ${env.build_flags}
|
build_flags = ${env.build_flags}
|
||||||
-DDEBUG_MODE=0
|
-DDEBUG_MODE=0
|
||||||
-DCORE_DEBUG_LEVEL=1
|
-DCORE_DEBUG_LEVEL=1
|
||||||
-DARDUINO_USB_CDC_ON_BOOT=1
|
|
||||||
${pinoutsESPS3WROVER.build_flags}
|
${pinoutsESPS3WROVER.build_flags}
|
||||||
upload_flags = --no-stub
|
upload_flags = --no-stub
|
||||||
|
|
||||||
[env:wrooms3QIOUSB]
|
[env:wrooms3QIOUSB]
|
||||||
board = esp32-s3-devkitc-1
|
board = esp32-s3-devkitc-1
|
||||||
board_build.arduino.memory_type = qio_opi
|
board_build.flash_mode = qio
|
||||||
build_type = debug
|
build_type = debug
|
||||||
build_flags = ${env.build_flags}
|
build_flags = ${env.build_flags}
|
||||||
-DCORE_DEBUG_LEVEL=4
|
-DCORE_DEBUG_LEVEL=4
|
||||||
@ -132,7 +129,7 @@ build_flags = ${env.build_flags}
|
|||||||
|
|
||||||
[env:wrooms3QIOUSB_release]
|
[env:wrooms3QIOUSB_release]
|
||||||
board = esp32-s3-devkitc-1
|
board = esp32-s3-devkitc-1
|
||||||
board_build.arduino.memory_type = qio_opi
|
board_build.flash_mode = qio
|
||||||
build_type = release
|
build_type = release
|
||||||
build_flags = ${env.build_flags}
|
build_flags = ${env.build_flags}
|
||||||
-DDEBUG_MODE=0
|
-DDEBUG_MODE=0
|
||||||
@ -176,3 +173,41 @@ build_flags = ${env.build_flags}
|
|||||||
-DETVR_EYE_TRACKER_USB_API
|
-DETVR_EYE_TRACKER_USB_API
|
||||||
${pinoutsESPS3WROOM.build_flags}
|
${pinoutsESPS3WROOM.build_flags}
|
||||||
upload_flags = --no-stub
|
upload_flags = --no-stub
|
||||||
|
|
||||||
|
[env:xiaosenses3]
|
||||||
|
board = seeed_xiao_esp32s3
|
||||||
|
build_type = debug
|
||||||
|
build_flags = ${env.build_flags}
|
||||||
|
-DCORE_DEBUG_LEVEL=4
|
||||||
|
-DDEBUG_MODE=1
|
||||||
|
#-DARDUINO_USB_MODE=1
|
||||||
|
#-DARDUINO_USB_CDC_ON_BOOT=1
|
||||||
|
${pinoutsESPS3XIAOSENSE.build_flags}
|
||||||
|
|
||||||
|
[env:xiaosenses3_USB]
|
||||||
|
board = seeed_xiao_esp32s3
|
||||||
|
build_type = debug
|
||||||
|
build_flags = ${env.build_flags}
|
||||||
|
-DCORE_DEBUG_LEVEL=4
|
||||||
|
-DDEBUG_MODE=1
|
||||||
|
-DETVR_EYE_TRACKER_USB_API
|
||||||
|
${pinoutsESPS3XIAOSENSE.build_flags}
|
||||||
|
upload_flags = --no-stub
|
||||||
|
|
||||||
|
[env:xiaosenses3_release]
|
||||||
|
board = seeed_xiao_esp32s3
|
||||||
|
build_type = release
|
||||||
|
build_flags = ${env.build_flags}
|
||||||
|
-DDEBUG_MODE=0
|
||||||
|
-DCORE_DEBUG_LEVEL=1
|
||||||
|
${pinoutsESPS3XIAOSENSE.build_flags}
|
||||||
|
|
||||||
|
[env:xiaosenses3_USB_release]
|
||||||
|
board = seeed_xiao_esp32s3
|
||||||
|
build_type = release
|
||||||
|
build_flags = ${env.build_flags}
|
||||||
|
-DDEBUG_MODE=0
|
||||||
|
-DCORE_DEBUG_LEVEL=1
|
||||||
|
-DETVR_EYE_TRACKER_USB_API
|
||||||
|
${pinoutsESPS3XIAOSENSE.build_flags}
|
||||||
|
upload_flags = --no-stub
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
# IF YOU ARE A USER DO NOT TOUCH THIS FILE
|
# IF YOU ARE A USER DO NOT TOUCH THIS FILE
|
||||||
|
|
||||||
[env]
|
[env]
|
||||||
platform = espressif32
|
platform = https://github.com/platformio/platform-espressif32.git
|
||||||
framework = arduino
|
framework = arduino
|
||||||
monitor_speed = 115200
|
monitor_speed = 115200
|
||||||
custom_firmware_version = 2.2.3
|
custom_firmware_version = 2.2.3
|
||||||
@ -19,7 +19,7 @@ lib_ldf_mode = deep+
|
|||||||
;115200 is used for compatability - if you are on windows and want the code to flash faster use 921600
|
;115200 is used for compatability - if you are on windows and want the code to flash faster use 921600
|
||||||
upload_speed = 921600
|
upload_speed = 921600
|
||||||
lib_deps =
|
lib_deps =
|
||||||
esp32-camera
|
https://github.com/espressif/esp32-camera
|
||||||
https://github.com/me-no-dev/ESPAsyncWebServer.git
|
https://github.com/me-no-dev/ESPAsyncWebServer.git
|
||||||
https://github.com/me-no-dev/AsyncTCP.git
|
https://github.com/me-no-dev/AsyncTCP.git
|
||||||
extra_scripts =
|
extra_scripts =
|
||||||
@ -29,7 +29,7 @@ build_flags =
|
|||||||
-DENABLE_ADHOC=${wifi.enableadhoc}
|
-DENABLE_ADHOC=${wifi.enableadhoc}
|
||||||
-DADHOC_CHANNEL=${wifi.adhocchannel}
|
-DADHOC_CHANNEL=${wifi.adhocchannel}
|
||||||
-DWIFI_CHANNEL=${wifi.channel}
|
-DWIFI_CHANNEL=${wifi.channel}
|
||||||
-DDEBUG_ESP_PORT=Serial
|
#-DDEBUG_ESP_PORT=Serial
|
||||||
'-DVERSION=""' ; set the debug port
|
'-DVERSION=""' ; set the debug port
|
||||||
'-DMDNS_HOSTNAME=${wifi.mdnsname}' ; Set the OTA password
|
'-DMDNS_HOSTNAME=${wifi.mdnsname}' ; Set the OTA password
|
||||||
'-DWIFI_SSID=${wifi.ssid}'
|
'-DWIFI_SSID=${wifi.ssid}'
|
||||||
@ -48,6 +48,8 @@ build_flags =
|
|||||||
|
|
||||||
# Comment these out if you are not using psram
|
# Comment these out if you are not using psram
|
||||||
-DBOARD_HAS_PSRAM ; enable psram
|
-DBOARD_HAS_PSRAM ; enable psram
|
||||||
|
-std=gnu++17 ; enable c++17
|
||||||
-mfix-esp32-psram-cache-issue ; fix for psram
|
-mfix-esp32-psram-cache-issue ; fix for psram
|
||||||
; Compile with -DHTTP_PARSER_STRICT=0 to make less checks, but run faster
|
; Compile with -DHTTP_PARSER_STRICT=0 to make less checks, but run faster
|
||||||
-DHTTP_PARSER_STRICT=0
|
-DHTTP_PARSER_STRICT=0
|
||||||
|
build_unflags = -std=gnu++11
|
||||||
|
|||||||
@ -203,8 +203,8 @@ vsync_gpio_num = 6
|
|||||||
href_gpio_num = 7
|
href_gpio_num = 7
|
||||||
pclk_gpio_num = 13
|
pclk_gpio_num = 13
|
||||||
build_flags =
|
build_flags =
|
||||||
'-DCAMERA_MODULE_NAME="ESPS3WROVER"'
|
'-DCAMERA_MODULE_NAME="ESP32S3_WROVER"'
|
||||||
-DCONFIG_CAMERA_MODULE_ESPS3WROVER=1
|
-DCONFIG_CAMERA_MODULE_ESPS3_WROVER=1
|
||||||
-DPWDN_GPIO_NUM=${pinoutsESPS3WROVER.PWDN_GPIO_NUM}
|
-DPWDN_GPIO_NUM=${pinoutsESPS3WROVER.PWDN_GPIO_NUM}
|
||||||
-DRESET_GPIO_NUM=${pinoutsESPS3WROVER.RESET_GPIO_NUM}
|
-DRESET_GPIO_NUM=${pinoutsESPS3WROVER.RESET_GPIO_NUM}
|
||||||
-DXCLK_GPIO_NUM=${pinoutsESPS3WROVER.XCLK_GPIO_NUM}
|
-DXCLK_GPIO_NUM=${pinoutsESPS3WROVER.XCLK_GPIO_NUM}
|
||||||
@ -240,21 +240,58 @@ vsync_gpio_num = 6
|
|||||||
href_gpio_num = 7
|
href_gpio_num = 7
|
||||||
pclk_gpio_num = 13
|
pclk_gpio_num = 13
|
||||||
build_flags =
|
build_flags =
|
||||||
'-DCAMERA_MODULE_NAME="ESPS3WROOM"'
|
'-DCAMERA_MODULE_NAME="ESP32S3_WROOM"'
|
||||||
-DCONFIG_CAMERA_MODULE_ESPS3WROOM=1
|
-DCONFIG_CAMERA_MODULE_ESP32S3_WROOM=1
|
||||||
-DPWDN_GPIO_NUM=${pinoutsESPS3WROVER.PWDN_GPIO_NUM}
|
-DPWDN_GPIO_NUM=${pinoutsESPS3WROOM.PWDN_GPIO_NUM}
|
||||||
-DRESET_GPIO_NUM=${pinoutsESPS3WROVER.RESET_GPIO_NUM}
|
-DRESET_GPIO_NUM=${pinoutsESPS3WROOM.RESET_GPIO_NUM}
|
||||||
-DXCLK_GPIO_NUM=${pinoutsESPS3WROVER.XCLK_GPIO_NUM}
|
-DXCLK_GPIO_NUM=${pinoutsESPS3WROOM.XCLK_GPIO_NUM}
|
||||||
-DSIOD_GPIO_NUM=${pinoutsESPS3WROVER.SIOD_GPIO_NUM}
|
-DSIOD_GPIO_NUM=${pinoutsESPS3WROOM.SIOD_GPIO_NUM}
|
||||||
-DSIOC_GPIO_NUM=${pinoutsESPS3WROVER.SIOC_GPIO_NUM}
|
-DSIOC_GPIO_NUM=${pinoutsESPS3WROOM.SIOC_GPIO_NUM}
|
||||||
-DY9_GPIO_NUM=${pinoutsESPS3WROVER.Y9_GPIO_NUM}
|
-DY9_GPIO_NUM=${pinoutsESPS3WROOM.Y9_GPIO_NUM}
|
||||||
-DY8_GPIO_NUM=${pinoutsESPS3WROVER.Y8_GPIO_NUM}
|
-DY8_GPIO_NUM=${pinoutsESPS3WROOM.Y8_GPIO_NUM}
|
||||||
-DY7_GPIO_NUM=${pinoutsESPS3WROVER.Y7_GPIO_NUM}
|
-DY7_GPIO_NUM=${pinoutsESPS3WROOM.Y7_GPIO_NUM}
|
||||||
-DY6_GPIO_NUM=${pinoutsESPS3WROVER.Y6_GPIO_NUM}
|
-DY6_GPIO_NUM=${pinoutsESPS3WROOM.Y6_GPIO_NUM}
|
||||||
-DY5_GPIO_NUM=${pinoutsESPS3WROVER.Y5_GPIO_NUM}
|
-DY5_GPIO_NUM=${pinoutsESPS3WROOM.Y5_GPIO_NUM}
|
||||||
-DY4_GPIO_NUM=${pinoutsESPS3WROVER.Y4_GPIO_NUM}
|
-DY4_GPIO_NUM=${pinoutsESPS3WROOM.Y4_GPIO_NUM}
|
||||||
-DY3_GPIO_NUM=${pinoutsESPS3WROVER.Y3_GPIO_NUM}
|
-DY3_GPIO_NUM=${pinoutsESPS3WROOM.Y3_GPIO_NUM}
|
||||||
-DY2_GPIO_NUM=${pinoutsESPS3WROVER.Y2_GPIO_NUM}
|
-DY2_GPIO_NUM=${pinoutsESPS3WROOM.Y2_GPIO_NUM}
|
||||||
-DVSYNC_GPIO_NUM=${pinoutsESPS3WROVER.VSYNC_GPIO_NUM}
|
-DVSYNC_GPIO_NUM=${pinoutsESPS3WROOM.VSYNC_GPIO_NUM}
|
||||||
-DHREF_GPIO_NUM=${pinoutsESPS3WROVER.HREF_GPIO_NUM}
|
-DHREF_GPIO_NUM=${pinoutsESPS3WROOM.HREF_GPIO_NUM}
|
||||||
-DPCLK_GPIO_NUM=${pinoutsESPS3WROVER.PCLK_GPIO_NUM}
|
-DPCLK_GPIO_NUM=${pinoutsESPS3WROOM.PCLK_GPIO_NUM}
|
||||||
|
|
||||||
|
[pinoutsESPS3XIAOSENSE]
|
||||||
|
pwdn_gpio_num = -1
|
||||||
|
reset_gpio_num = -1
|
||||||
|
xclk_gpio_num = 10
|
||||||
|
siod_gpio_num = 40
|
||||||
|
sioc_gpio_num = 39
|
||||||
|
y9_gpio_num = 48
|
||||||
|
y8_gpio_num = 11
|
||||||
|
y7_gpio_num = 12
|
||||||
|
y6_gpio_num = 14
|
||||||
|
y5_gpio_num = 16
|
||||||
|
y4_gpio_num = 18
|
||||||
|
y3_gpio_num = 17
|
||||||
|
y2_gpio_num = 15
|
||||||
|
vsync_gpio_num = 38
|
||||||
|
href_gpio_num = 47
|
||||||
|
pclk_gpio_num = 13
|
||||||
|
build_flags =
|
||||||
|
'-DCAMERA_MODULE_NAME="ESP32S3_XIAO_SENSE"'
|
||||||
|
-DCONFIG_CAMERA_MODULE_ESP32S3_XIAO_SENSE=1
|
||||||
|
-DPWDN_GPIO_NUM=${pinoutsESPS3XIAOSENSE.PWDN_GPIO_NUM}
|
||||||
|
-DRESET_GPIO_NUM=${pinoutsESPS3XIAOSENSE.RESET_GPIO_NUM}
|
||||||
|
-DXCLK_GPIO_NUM=${pinoutsESPS3XIAOSENSE.XCLK_GPIO_NUM}
|
||||||
|
-DSIOD_GPIO_NUM=${pinoutsESPS3XIAOSENSE.SIOD_GPIO_NUM}
|
||||||
|
-DSIOC_GPIO_NUM=${pinoutsESPS3XIAOSENSE.SIOC_GPIO_NUM}
|
||||||
|
-DY9_GPIO_NUM=${pinoutsESPS3XIAOSENSE.Y9_GPIO_NUM}
|
||||||
|
-DY8_GPIO_NUM=${pinoutsESPS3XIAOSENSE.Y8_GPIO_NUM}
|
||||||
|
-DY7_GPIO_NUM=${pinoutsESPS3XIAOSENSE.Y7_GPIO_NUM}
|
||||||
|
-DY6_GPIO_NUM=${pinoutsESPS3XIAOSENSE.Y6_GPIO_NUM}
|
||||||
|
-DY5_GPIO_NUM=${pinoutsESPS3XIAOSENSE.Y5_GPIO_NUM}
|
||||||
|
-DY4_GPIO_NUM=${pinoutsESPS3XIAOSENSE.Y4_GPIO_NUM}
|
||||||
|
-DY3_GPIO_NUM=${pinoutsESPS3XIAOSENSE.Y3_GPIO_NUM}
|
||||||
|
-DY2_GPIO_NUM=${pinoutsESPS3XIAOSENSE.Y2_GPIO_NUM}
|
||||||
|
-DVSYNC_GPIO_NUM=${pinoutsESPS3XIAOSENSE.VSYNC_GPIO_NUM}
|
||||||
|
-DHREF_GPIO_NUM=${pinoutsESPS3XIAOSENSE.HREF_GPIO_NUM}
|
||||||
|
-DPCLK_GPIO_NUM=${pinoutsESPS3XIAOSENSE.PCLK_GPIO_NUM}
|
||||||
|
|||||||
@ -33,7 +33,7 @@ void ProjectConfig::initConfig() {
|
|||||||
this->config.device = {OTA_LOGIN, OTA_PASSWORD, 3232};
|
this->config.device = {OTA_LOGIN, OTA_PASSWORD, 3232};
|
||||||
|
|
||||||
if (_mdnsName.empty()) {
|
if (_mdnsName.empty()) {
|
||||||
log_e("MDNS name is null\n Autoassigning name to 'openiristracker'");
|
log_e("MDNS name is null\n Auto-assigning name to 'openiristracker'");
|
||||||
_mdnsName = "openiristracker";
|
_mdnsName = "openiristracker";
|
||||||
}
|
}
|
||||||
this->config.mdns = {
|
this->config.mdns = {
|
||||||
@ -146,6 +146,8 @@ void ProjectConfig::load() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
initConfig();
|
||||||
|
|
||||||
/* Device Config */
|
/* Device Config */
|
||||||
this->config.device.OTALogin = getString("OTALogin", "openiris").c_str();
|
this->config.device.OTALogin = getString("OTALogin", "openiris").c_str();
|
||||||
this->config.device.OTAPassword =
|
this->config.device.OTAPassword =
|
||||||
@ -278,7 +280,7 @@ void ProjectConfig::setWifiConfig(const std::string& networkName,
|
|||||||
|
|
||||||
if (shouldNotify) {
|
if (shouldNotify) {
|
||||||
wifiStateManager.setState(WiFiState_e::WiFiState_Disconnected);
|
wifiStateManager.setState(WiFiState_e::WiFiState_Disconnected);
|
||||||
WiFi.disconnect();
|
//WiFi.disconnect();
|
||||||
this->wifiConfigSave();
|
this->wifiConfigSave();
|
||||||
this->notifyAll(ConfigState_e::networksConfigUpdated);
|
this->notifyAll(ConfigState_e::networksConfigUpdated);
|
||||||
}
|
}
|
||||||
@ -307,7 +309,7 @@ void ProjectConfig::setWifiConfig(const std::string& networkName,
|
|||||||
|
|
||||||
if (shouldNotify) {
|
if (shouldNotify) {
|
||||||
wifiStateManager.setState(WiFiState_e::WiFiState_None);
|
wifiStateManager.setState(WiFiState_e::WiFiState_None);
|
||||||
WiFi.disconnect();
|
//WiFi.disconnect();
|
||||||
this->wifiConfigSave();
|
this->wifiConfigSave();
|
||||||
this->notifyAll(ConfigState_e::networksConfigUpdated);
|
this->notifyAll(ConfigState_e::networksConfigUpdated);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,9 +6,9 @@ CameraHandler::CameraHandler(ProjectConfig& configManager)
|
|||||||
void CameraHandler::setupCameraPinout() {
|
void CameraHandler::setupCameraPinout() {
|
||||||
// Workaround for espM5SStack not having a defined camera
|
// Workaround for espM5SStack not having a defined camera
|
||||||
#ifdef CAMERA_MODULE_NAME
|
#ifdef CAMERA_MODULE_NAME
|
||||||
log_i("Camera module is %s", CAMERA_MODULE_NAME);
|
log_i("[Camera]: Camera module is %s", CAMERA_MODULE_NAME);
|
||||||
#else
|
#else
|
||||||
log_i("Camera module is undefined");
|
log_i("[Camera]: Camera module is undefined");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// camera external clock signal frequencies
|
// camera external clock signal frequencies
|
||||||
@ -67,20 +67,23 @@ void CameraHandler::setupBasicResolution() {
|
|||||||
config.frame_size = FRAMESIZE_240X240;
|
config.frame_size = FRAMESIZE_240X240;
|
||||||
|
|
||||||
if (!psramFound()) {
|
if (!psramFound()) {
|
||||||
log_e("Did not find psram, setting lower image quality");
|
log_e("[Camera]: Did not find psram, setting lower image quality");
|
||||||
config.fb_location = CAMERA_FB_IN_DRAM;
|
config.fb_location = CAMERA_FB_IN_DRAM;
|
||||||
config.jpeg_quality = 9;
|
config.jpeg_quality = 9;
|
||||||
config.fb_count = 2;
|
config.fb_count = 2;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
log_d("Found psram, setting the higher image quality");
|
log_d("[Camera]: Found psram, setting the higher image quality");
|
||||||
config.jpeg_quality = 7; // 0-63 lower number = higher quality, more latency
|
config.jpeg_quality = 7; // 0-63 lower number = higher quality, more latency
|
||||||
// and less fps 7 for most fps, 5 for best quality
|
// and less fps 7 for most fps, 5 for best quality
|
||||||
config.fb_count = 3;
|
config.fb_count = 3;
|
||||||
|
log_d("[Camera]: Setting fb_location to CAMERA_FB_IN_PSRAM");
|
||||||
}
|
}
|
||||||
|
|
||||||
void CameraHandler::setupCameraSensor() {
|
void CameraHandler::setupCameraSensor() {
|
||||||
|
log_d("[Camera]: Setting up camera sensor");
|
||||||
|
|
||||||
camera_sensor = esp_camera_sensor_get();
|
camera_sensor = esp_camera_sensor_get();
|
||||||
// fixes corrupted jpegs, https://github.com/espressif/esp32-camera/issues/203
|
// fixes corrupted jpegs, https://github.com/espressif/esp32-camera/issues/203
|
||||||
// documentation https://www.uctronics.com/download/cam_module/OV2640DS.pdf
|
// documentation https://www.uctronics.com/download/cam_module/OV2640DS.pdf
|
||||||
@ -135,18 +138,27 @@ void CameraHandler::setupCameraSensor() {
|
|||||||
camera_sensor,
|
camera_sensor,
|
||||||
2); // 0 to 6 (0 - No Effect, 1 - Negative, 2 - Grayscale, 3 - Red Tint,
|
2); // 0 to 6 (0 - No Effect, 1 - Negative, 2 - Grayscale, 3 - Red Tint,
|
||||||
// 4 - Green Tint, 5 - Blue Tint, 6 - Sepia)
|
// 4 - Green Tint, 5 - Blue Tint, 6 - Sepia)
|
||||||
|
|
||||||
|
log_d("[Camera]: Setting up camera sensor done");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CameraHandler::setupCamera() {
|
bool CameraHandler::setupCamera() {
|
||||||
|
log_d("[Camera]: Setting up camera pinout");
|
||||||
this->setupCameraPinout();
|
this->setupCameraPinout();
|
||||||
|
log_d("[Camera]: Setting up camera with resolution");
|
||||||
this->setupBasicResolution();
|
this->setupBasicResolution();
|
||||||
esp_err_t hasCameraBeenInitialized = esp_camera_init(&config);
|
log_d("[Camera]: Initializing camera...");
|
||||||
|
|
||||||
|
esp_err_t hasCameraBeenInitialized = esp_camera_init(&config);
|
||||||
|
log_d("[Camera]: Camera initialized: %s \r\n",
|
||||||
|
esp_err_to_name(hasCameraBeenInitialized));
|
||||||
if (hasCameraBeenInitialized != ESP_OK) {
|
if (hasCameraBeenInitialized != ESP_OK) {
|
||||||
log_e("Camera initialization failed with error: 0x%x \r\n",
|
log_e("[Camera]: Camera initialization failed with error: %s \r\n",
|
||||||
hasCameraBeenInitialized);
|
esp_err_to_name(hasCameraBeenInitialized));
|
||||||
log_e(
|
log_e(
|
||||||
"Camera most likely not seated properly in the socket. Please fix the "
|
"[Camera]: Camera most likely not seated properly in the socket. "
|
||||||
|
"Please "
|
||||||
|
"fix the "
|
||||||
"camera and reboot the device.\r\n");
|
"camera and reboot the device.\r\n");
|
||||||
ledStateManager.setState(LEDStates_e::_Camera_Error);
|
ledStateManager.setState(LEDStates_e::_Camera_Error);
|
||||||
return false;
|
return false;
|
||||||
@ -157,12 +169,14 @@ bool CameraHandler::setupCamera() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CameraHandler::loadConfigData() {
|
void CameraHandler::loadConfigData() {
|
||||||
|
log_d("[Camera]: Loading camera config data");
|
||||||
ProjectConfig::CameraConfig_t cameraConfig = configManager.getCameraConfig();
|
ProjectConfig::CameraConfig_t cameraConfig = configManager.getCameraConfig();
|
||||||
this->setHFlip(cameraConfig.href);
|
this->setHFlip(cameraConfig.href);
|
||||||
this->setVFlip(cameraConfig.vflip);
|
this->setVFlip(cameraConfig.vflip);
|
||||||
this->setCameraResolution((framesize_t)cameraConfig.framesize);
|
this->setCameraResolution((framesize_t)cameraConfig.framesize);
|
||||||
camera_sensor->set_quality(camera_sensor, cameraConfig.quality);
|
camera_sensor->set_quality(camera_sensor, cameraConfig.quality);
|
||||||
camera_sensor->set_agc_gain(camera_sensor, cameraConfig.brightness);
|
camera_sensor->set_agc_gain(camera_sensor, cameraConfig.brightness);
|
||||||
|
log_d("Loading camera config data done");
|
||||||
}
|
}
|
||||||
|
|
||||||
int CameraHandler::setCameraResolution(framesize_t frameSize) {
|
int CameraHandler::setCameraResolution(framesize_t frameSize) {
|
||||||
|
|||||||
@ -8,8 +8,8 @@ WiFiHandler::WiFiHandler(ProjectConfig& configManager,
|
|||||||
const std::string& password,
|
const std::string& password,
|
||||||
uint8_t channel)
|
uint8_t channel)
|
||||||
: configManager(configManager),
|
: configManager(configManager),
|
||||||
ssid(ssid),
|
ssid(std::move(ssid)),
|
||||||
password(password),
|
password(std::move(password)),
|
||||||
channel(channel),
|
channel(channel),
|
||||||
power(0),
|
power(0),
|
||||||
_enable_adhoc(false) {}
|
_enable_adhoc(false) {}
|
||||||
@ -17,14 +17,23 @@ WiFiHandler::WiFiHandler(ProjectConfig& configManager,
|
|||||||
WiFiHandler::~WiFiHandler() {}
|
WiFiHandler::~WiFiHandler() {}
|
||||||
|
|
||||||
void WiFiHandler::begin() {
|
void WiFiHandler::begin() {
|
||||||
|
log_i("Starting WiFi Handler \n\r");
|
||||||
if (this->_enable_adhoc ||
|
if (this->_enable_adhoc ||
|
||||||
wifiStateManager.getCurrentState() == WiFiState_e::WiFiState_ADHOC) {
|
wifiStateManager.getCurrentState() == WiFiState_e::WiFiState_ADHOC) {
|
||||||
|
log_d("ADHOC is enabled, setting up ADHOC network \n\r");
|
||||||
this->setUpADHOC();
|
this->setUpADHOC();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log_d(
|
||||||
|
"ADHOC is disabled, setting up STA network and checking transmission "
|
||||||
|
"power \n\r");
|
||||||
auto txpower = configManager.getWiFiTxPowerConfig();
|
auto txpower = configManager.getWiFiTxPowerConfig();
|
||||||
WiFi.mode(WIFI_STA);
|
log_d("Setting Wifi Power to: %d", txpower.power);
|
||||||
WiFi.setSleep(WIFI_PS_NONE);
|
// log_d("Enabling STA mode \n\r");
|
||||||
|
// WiFi.mode(WIFI_STA);
|
||||||
|
log_d("Setting WiFi sleep mode to NONE \n\r");
|
||||||
|
WiFi.setSleep(false);
|
||||||
|
|
||||||
log_i("Initializing connection to wifi \n\r");
|
log_i("Initializing connection to wifi \n\r");
|
||||||
wifiStateManager.setState(WiFiState_e::WiFiState_Connecting);
|
wifiStateManager.setState(WiFiState_e::WiFiState_Connecting);
|
||||||
@ -126,12 +135,14 @@ bool WiFiHandler::iniSTA(const std::string& ssid,
|
|||||||
|
|
||||||
wifiStateManager.setState(WiFiState_e::WiFiState_Connecting);
|
wifiStateManager.setState(WiFiState_e::WiFiState_Connecting);
|
||||||
log_i("Trying to connect to: %s \n\r", ssid.c_str());
|
log_i("Trying to connect to: %s \n\r", ssid.c_str());
|
||||||
|
|
||||||
auto mdnsConfig = configManager.getMDNSConfig();
|
auto mdnsConfig = configManager.getMDNSConfig();
|
||||||
|
|
||||||
|
log_d("Setting hostname %s \n\r");
|
||||||
WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE,
|
WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE,
|
||||||
INADDR_NONE); // need to call before setting hostname
|
INADDR_NONE); // need to call before setting hostname
|
||||||
WiFi.setHostname(mdnsConfig.hostname.c_str());
|
WiFi.setHostname(mdnsConfig.hostname.c_str());
|
||||||
WiFi.begin(ssid.c_str(), password.c_str(), channel);
|
WiFi.begin(ssid.c_str(), password.c_str(), channel);
|
||||||
|
log_d("Waiting for WiFi to connect... \n\r");
|
||||||
while (WiFi.status() != WL_CONNECTED) {
|
while (WiFi.status() != WL_CONNECTED) {
|
||||||
progress++;
|
progress++;
|
||||||
currentMillis = millis();
|
currentMillis = millis();
|
||||||
|
|||||||
@ -16,7 +16,6 @@ class WiFiHandler : public IObserver<ConfigState_e> {
|
|||||||
void update(ConfigState_e event) override;
|
void update(ConfigState_e event) override;
|
||||||
std::string getName() override;
|
std::string getName() override;
|
||||||
|
|
||||||
|
|
||||||
bool _enable_adhoc;
|
bool _enable_adhoc;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
20
ESP/lib/src/openiris.hpp
Normal file
20
ESP/lib/src/openiris.hpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#ifndef OPENIRIS_HPP
|
||||||
|
#define OPENIRIS_HPP
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
#include <data/config/project_config.hpp>
|
||||||
|
#include <io/LEDManager/LEDManager.hpp>
|
||||||
|
#include <io/camera/cameraHandler.hpp>
|
||||||
|
#include <logo/logo.hpp>
|
||||||
|
|
||||||
|
#ifndef ETVR_EYE_TRACKER_USB_API
|
||||||
|
#include <network/api/webserverHandler.hpp>
|
||||||
|
#include <network/mDNS/MDNSManager.hpp>
|
||||||
|
#include <network/stream/streamServer.hpp>
|
||||||
|
#include <network/wifihandler/wifihandler.hpp>
|
||||||
|
#else
|
||||||
|
#include <usb/etvr_eye_tracker_usb.hpp>
|
||||||
|
#endif // ETVR_EYE_TRACKER_WEB_API
|
||||||
|
|
||||||
|
#endif // OPENIRIS_HPP
|
||||||
@ -37,11 +37,11 @@ void etvr_eye_tracker_usb_loop() {
|
|||||||
}
|
}
|
||||||
if (err == ESP_OK)
|
if (err == ESP_OK)
|
||||||
Serial.write(ETVR_HEADER, 2);
|
Serial.write(ETVR_HEADER, 2);
|
||||||
Serial.write(ETVR_HEADER_FRAME, 2);
|
Serial.write(ETVR_HEADER_FRAME, 2);
|
||||||
len_bytes[0] = len & 0xFF;
|
len_bytes[0] = len & 0xFF;
|
||||||
len_bytes[1] = (len >> CHAR_BIT) & 0xFF;
|
len_bytes[1] = (len >> CHAR_BIT) & 0xFF;
|
||||||
Serial.write(len_bytes, 2);
|
Serial.write(len_bytes, 2);
|
||||||
Serial.write((const char*)buf, len);
|
Serial.write((const char*)buf, len);
|
||||||
if (fb) {
|
if (fb) {
|
||||||
esp_camera_fb_return(fb);
|
esp_camera_fb_return(fb);
|
||||||
fb = NULL;
|
fb = NULL;
|
||||||
|
|||||||
@ -1,18 +1,4 @@
|
|||||||
#include <Arduino.h>
|
#include <openiris.hpp>
|
||||||
|
|
||||||
#include <data/config/project_config.hpp>
|
|
||||||
#include <io/LEDManager/LEDManager.hpp>
|
|
||||||
#include <io/camera/cameraHandler.hpp>
|
|
||||||
#include <logo/logo.hpp>
|
|
||||||
|
|
||||||
#ifndef ETVR_EYE_TRACKER_USB_API
|
|
||||||
#include <network/api/webserverHandler.hpp>
|
|
||||||
#include <network/mDNS/MDNSManager.hpp>
|
|
||||||
#include <network/stream/streamServer.hpp>
|
|
||||||
#include <network/wifihandler/wifihandler.hpp>
|
|
||||||
#else
|
|
||||||
#include <usb/etvr_eye_tracker_usb.hpp>
|
|
||||||
#endif // ETVR_EYE_TRACKER_WEB_API
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ProjectConfig object
|
* @brief ProjectConfig object
|
||||||
@ -22,7 +8,11 @@
|
|||||||
*/
|
*/
|
||||||
ProjectConfig deviceConfig("openiris", MDNS_HOSTNAME);
|
ProjectConfig deviceConfig("openiris", MDNS_HOSTNAME);
|
||||||
|
|
||||||
|
#ifdef CONFIG_CAMERA_MODULE_ESP32S3_XIAO_SENSE
|
||||||
|
LEDManager ledManager(LED_BUILTIN);
|
||||||
|
#else
|
||||||
LEDManager ledManager(33);
|
LEDManager ledManager(33);
|
||||||
|
#endif // ESP32S3_XIAO_SENSE
|
||||||
|
|
||||||
#ifndef SIM_ENABLED
|
#ifndef SIM_ENABLED
|
||||||
CameraHandler cameraHandler(deviceConfig);
|
CameraHandler cameraHandler(deviceConfig);
|
||||||
@ -39,10 +29,14 @@ StreamServer streamServer;
|
|||||||
#endif // SIM_ENABLED
|
#endif // SIM_ENABLED
|
||||||
|
|
||||||
void etvr_eye_tracker_web_init() {
|
void etvr_eye_tracker_web_init() {
|
||||||
deviceConfig.attach(mdnsHandler);
|
log_d("[SETUP]: Starting Network Handler");
|
||||||
//deviceConfig.attach(wifiHandler);
|
// deviceConfig.attach(wifiHandler);
|
||||||
|
log_d("[SETUP]: Checking ADHOC Settings");
|
||||||
wifiHandler._enable_adhoc = ENABLE_ADHOC;
|
wifiHandler._enable_adhoc = ENABLE_ADHOC;
|
||||||
|
deviceConfig.attach(mdnsHandler);
|
||||||
|
log_d("[SETUP]: Starting WiFi Handler");
|
||||||
wifiHandler.begin();
|
wifiHandler.begin();
|
||||||
|
log_d("[SETUP]: Starting MDNS Handler");
|
||||||
mdnsHandler.startMDNS();
|
mdnsHandler.startMDNS();
|
||||||
|
|
||||||
switch (wifiStateManager.getCurrentState()) {
|
switch (wifiStateManager.getCurrentState()) {
|
||||||
@ -84,14 +78,12 @@ void setup() {
|
|||||||
setCpuFrequencyMhz(240);
|
setCpuFrequencyMhz(240);
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Logo::printASCII();
|
Logo::printASCII();
|
||||||
Serial.flush();
|
// Serial.flush();
|
||||||
ledManager.begin();
|
ledManager.begin();
|
||||||
|
|
||||||
#ifndef SIM_ENABLED
|
#ifndef SIM_ENABLED
|
||||||
deviceConfig.attach(cameraHandler);
|
deviceConfig.attach(cameraHandler);
|
||||||
#endif // SIM_ENABLED
|
#endif // SIM_ENABLED
|
||||||
|
|
||||||
deviceConfig.initConfig();
|
|
||||||
deviceConfig.load();
|
deviceConfig.load();
|
||||||
|
|
||||||
#ifndef ETVR_EYE_TRACKER_USB_API
|
#ifndef ETVR_EYE_TRACKER_USB_API
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user