initial
This commit is contained in:
13
.devcontainer/Dockerfile
Normal file
13
.devcontainer/Dockerfile
Normal file
@ -0,0 +1,13 @@
|
||||
ARG DOCKER_TAG=latest
|
||||
FROM espressif/idf:${DOCKER_TAG}
|
||||
|
||||
ENV LC_ALL=C.UTF-8
|
||||
ENV LANG=C.UTF-8
|
||||
|
||||
RUN apt-get update -y && apt-get install udev -y
|
||||
|
||||
RUN echo "source /opt/esp/idf/export.sh > /dev/null 2>&1" >> ~/.bashrc
|
||||
|
||||
ENTRYPOINT [ "/opt/esp/entrypoint.sh" ]
|
||||
|
||||
CMD ["/bin/bash", "-c"]
|
||||
21
.devcontainer/devcontainer.json
Normal file
21
.devcontainer/devcontainer.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "ESP-IDF QEMU",
|
||||
"build": {
|
||||
"dockerfile": "Dockerfile"
|
||||
},
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"settings": {
|
||||
"terminal.integrated.defaultProfile.linux": "bash",
|
||||
"idf.espIdfPath": "/opt/esp/idf",
|
||||
"idf.toolsPath": "/opt/esp",
|
||||
"idf.gitPath": "/usr/bin/git"
|
||||
},
|
||||
"extensions": [
|
||||
"espressif.esp-idf-extension",
|
||||
"espressif.esp-idf-web"
|
||||
]
|
||||
}
|
||||
},
|
||||
"runArgs": ["--privileged"]
|
||||
}
|
||||
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
build/
|
||||
# sdkconfig
|
||||
# sdkconfig.old
|
||||
|
||||
managed_components/
|
||||
23
.vscode/c_cpp_properties.json
vendored
Normal file
23
.vscode/c_cpp_properties.json
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "ESP-IDF",
|
||||
"compilerPath": "${config:idf.toolsPathWin}\\tools\\xtensa-esp-elf\\esp-14.2.0_20241119\\xtensa-esp-elf\\bin\\xtensa-esp32s3-elf-gcc.exe",
|
||||
"compileCommands": "${config:idf.buildPath}/compile_commands.json",
|
||||
"includePath": [
|
||||
"${config:idf.espIdfPath}/components/**",
|
||||
"${config:idf.espIdfPathWin}/components/**",
|
||||
"${workspaceFolder}/**"
|
||||
],
|
||||
"browse": {
|
||||
"path": [
|
||||
"${config:idf.espIdfPath}/components",
|
||||
"${config:idf.espIdfPathWin}/components",
|
||||
"${workspaceFolder}"
|
||||
],
|
||||
"limitSymbolsToIncludedHeaders": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
||||
15
.vscode/launch.json
vendored
Normal file
15
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "gdbtarget",
|
||||
"request": "attach",
|
||||
"name": "Eclipse CDT GDB Adapter"
|
||||
},
|
||||
{
|
||||
"type": "espidf",
|
||||
"name": "Launch",
|
||||
"request": "launch"
|
||||
}
|
||||
]
|
||||
}
|
||||
36
.vscode/settings.json
vendored
Normal file
36
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"C_Cpp.intelliSenseEngine": "default",
|
||||
"idf.espIdfPathWin": "C:\\Users\\mickl\\esp\\v5.5\\esp-idf",
|
||||
"idf.pythonInstallPath": "C:\\Users\\mickl\\.espressif\\tools\\idf-python\\3.11.2\\python.exe",
|
||||
"idf.openOcdConfigs": [
|
||||
"board/esp32s3-builtin.cfg"
|
||||
],
|
||||
"idf.portWin": "COM5",
|
||||
"idf.toolsPathWin": "C:\\Users\\mickl\\.espressif",
|
||||
"idf.customExtraVars": {
|
||||
"IDF_TARGET": "esp32s3"
|
||||
},
|
||||
"clangd.path": "C:\\Users\\mickl\\.espressif\\tools\\esp-clang\\esp-19.1.2_20250312\\esp-clang\\bin\\clangd.exe",
|
||||
"clangd.arguments": [
|
||||
"--background-index",
|
||||
"--query-driver=C:\\Users\\mickl\\.espressif\\tools\\xtensa-esp-elf\\esp-14.2.0_20241119\\xtensa-esp-elf\\bin\\xtensa-esp32s3-elf-gcc.exe",
|
||||
"--compile-commands-dir=${workspaceFolder}\\build"
|
||||
],
|
||||
"idf.flashType": "UART",
|
||||
"files.associations": {
|
||||
"array": "cpp",
|
||||
"chrono": "cpp",
|
||||
"deque": "cpp",
|
||||
"list": "cpp",
|
||||
"string": "cpp",
|
||||
"unordered_map": "cpp",
|
||||
"unordered_set": "cpp",
|
||||
"vector": "cpp",
|
||||
"string_view": "cpp",
|
||||
"format": "cpp",
|
||||
"initializer_list": "cpp",
|
||||
"span": "cpp",
|
||||
"text_encoding": "cpp",
|
||||
"regex": "cpp"
|
||||
}
|
||||
}
|
||||
11
CMakeLists.txt
Normal file
11
CMakeLists.txt
Normal file
@ -0,0 +1,11 @@
|
||||
# The following lines of boilerplate have to be in your project's
|
||||
# CMakeLists in this exact order for cmake to work correctly
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
add_definitions(
|
||||
-DARDUINO_USB_MODE
|
||||
-DARDUINO_USB_CDC_ON_BOOT
|
||||
)
|
||||
|
||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||
|
||||
project(onkart)
|
||||
483
dependencies.lock
Normal file
483
dependencies.lock
Normal file
@ -0,0 +1,483 @@
|
||||
dependencies:
|
||||
bblanchon/arduinojson:
|
||||
component_hash: b1c2f0b0bc26969af19809cee80b220fb882481d59cc75f8e79ebceecdc69f06
|
||||
dependencies: []
|
||||
source:
|
||||
registry_url: https://components.espressif.com/
|
||||
type: service
|
||||
version: 7.4.2
|
||||
chmorgan/esp-libhelix-mp3:
|
||||
component_hash: cbb76089dc2c5749f7b470e2e70aedc44c9da519e04eb9a67d4c7ec275229e53
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.1.0'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.0.3
|
||||
esp32async/asynctcp:
|
||||
component_hash: 4d7e7bea969db5b06067152117cabf51510c4193063bb61327e55c63484b156d
|
||||
dependencies: []
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 3.4.5
|
||||
esp32async/espasyncwebserver:
|
||||
component_hash: c503fbebd1cb620f2ecd9a35e4d598f946f24ef18a22a533b0661932200efb72
|
||||
dependencies:
|
||||
- name: bblanchon/arduinojson
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ^7.4.2
|
||||
- name: esp32async/asynctcp
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ^3.4.5
|
||||
- name: espressif/arduino-esp32
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ^3.1.1
|
||||
source:
|
||||
registry_url: https://components.espressif.com/
|
||||
type: service
|
||||
version: 3.7.10
|
||||
espressif/arduino-esp32:
|
||||
component_hash: 12ddb10a6cc6b5bc3c700334627f2a1a7a3736bfad9f63a8115199142104ef6d
|
||||
dependencies:
|
||||
- name: chmorgan/esp-libhelix-mp3
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: 1.0.3
|
||||
- name: espressif/cbor
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: target not in [esp32c2, esp32p4]
|
||||
version: 0.6.0~1
|
||||
- name: espressif/esp-dsp
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: target != esp32c2
|
||||
version: ^1.3.4
|
||||
- name: espressif/esp-modbus
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ^1.0.15
|
||||
- name: espressif/esp-sr
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: target in [esp32s3]
|
||||
version: ^1.4.2
|
||||
- name: espressif/esp-zboss-lib
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: target not in [esp32c2, esp32p4]
|
||||
version: ==1.6.4
|
||||
- name: espressif/esp-zigbee-lib
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: target not in [esp32c2, esp32p4]
|
||||
version: ==1.6.5
|
||||
- name: espressif/esp_diag_data_store
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: target not in [esp32c2, esp32p4]
|
||||
version: 1.0.2
|
||||
- name: espressif/esp_diagnostics
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: target not in [esp32c2, esp32p4]
|
||||
version: 1.2.1
|
||||
- name: espressif/esp_hosted
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: target == esp32p4
|
||||
version: ^2.0.12
|
||||
- name: espressif/esp_insights
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: target not in [esp32c2, esp32p4]
|
||||
version: 1.2.2
|
||||
- name: espressif/esp_modem
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ^1.1.0
|
||||
- name: espressif/esp_rainmaker
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: target not in [esp32c2, esp32p4]
|
||||
version: 1.5.2
|
||||
- name: espressif/esp_wifi_remote
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: target == esp32p4
|
||||
version: ^0.13.0
|
||||
- name: espressif/libsodium
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ^1.0.20~1
|
||||
- name: espressif/mdns
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ^1.2.3
|
||||
- name: espressif/network_provisioning
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: target != esp32c2
|
||||
version: 1.0.2
|
||||
- name: espressif/qrcode
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: target not in [esp32c2, esp32p4]
|
||||
version: 0.1.0~2
|
||||
- name: espressif/rmaker_common
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: target not in [esp32c2, esp32p4]
|
||||
version: 1.4.6
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.3,<5.6'
|
||||
- name: joltwallet/littlefs
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ^1.10.2
|
||||
source:
|
||||
registry_url: https://components.espressif.com/
|
||||
type: service
|
||||
targets:
|
||||
- esp32
|
||||
- esp32s2
|
||||
- esp32s3
|
||||
- esp32c2
|
||||
- esp32c3
|
||||
- esp32c6
|
||||
- esp32h2
|
||||
- esp32p4
|
||||
- esp32c5
|
||||
version: 3.3.0~1
|
||||
espressif/cbor:
|
||||
component_hash: 440f4ee4504841cc9b4f3a8ef755776a612ac9dace355514c68b999868f990ff
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.3'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 0.6.0~1
|
||||
espressif/esp-dsp:
|
||||
component_hash: 3e7bbd487f1357a1d4944d0c85966d049501ea281b8a4c7f93f7cfedd5b7f23d
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.2'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.4.12
|
||||
espressif/esp-modbus:
|
||||
component_hash: 5d5e90b9e55721a8a194b301ad8102d4affb647f47b74cd413ff7d1ce2c1169c
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.3'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.0.18
|
||||
espressif/esp-serial-flasher:
|
||||
component_hash: dcc42a16712a1a636509cf0bf90e14032d7f2141784b533613b267b6aa318d52
|
||||
dependencies: []
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 0.0.11
|
||||
espressif/esp-sr:
|
||||
component_hash: 9b41fd5ae5960c393bfd3559cd6e5fa2a95c0bf833915cebafe57fb8c4e4c396
|
||||
dependencies:
|
||||
- name: espressif/esp-dsp
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: <=1.5.0
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.0'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.9.5
|
||||
espressif/esp-zboss-lib:
|
||||
component_hash: 321883d142421f65009972408287441794250057668a11abbdfd8bec77c3309a
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.0'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.6.4
|
||||
espressif/esp-zigbee-lib:
|
||||
component_hash: 947ea40aa95a89b9da238e941bd2950952e7cd422074d0c02d6896e2ff07bad5
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.0'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.6.5
|
||||
espressif/esp_diag_data_store:
|
||||
component_hash: c1e5cf62f545d2b136db299f4df1b228b9840be5bc3410c9ad2d2a882b5c0d64
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.1'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.0.2
|
||||
espressif/esp_diagnostics:
|
||||
component_hash: 5ea8e8da8217ed9ed778db3973139e726e17cd27ef5cf6429c787d19226c79f3
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.1'
|
||||
- name: espressif/rmaker_common
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ~1.4.0
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.2.1
|
||||
espressif/esp_insights:
|
||||
component_hash: 4015c524b9955528f941268cf080174076b195800de910d061efc46113bc2e0c
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.1'
|
||||
- name: espressif/cbor
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: idf_version >=5.0
|
||||
version: ~0.6
|
||||
- name: espressif/esp_diag_data_store
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: 1.0.2
|
||||
- name: espressif/esp_diagnostics
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: 1.2.1
|
||||
- name: espressif/rmaker_common
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ~1.4.0
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.2.2
|
||||
espressif/esp_modem:
|
||||
component_hash: b541c3f5765d3ba062c0d004b9ca6da6d0af908293421c2dbe046c537fb2a011
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.1'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.4.0
|
||||
espressif/esp_rainmaker:
|
||||
component_hash: f6fe458fc7a0102ee2879f0247da4b41419e6c07de12031f66e5e9454d25baaa
|
||||
dependencies:
|
||||
- name: espressif/esp_rcp_update
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: idf_version >= 5.1
|
||||
version: ~1.2.0
|
||||
- name: espressif/esp_schedule
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ~1.2.0
|
||||
- name: espressif/esp_secure_cert_mgr
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: idf_version >=4.3
|
||||
version: ^2.2.1
|
||||
- name: espressif/json_generator
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ~1.1.1
|
||||
- name: espressif/json_parser
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ~1.0.3
|
||||
- name: espressif/mdns
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: idf_version >=5.0
|
||||
version: ^1.2.0
|
||||
- name: espressif/network_provisioning
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: idf_version >= 5.1
|
||||
version: ~1.0.0
|
||||
- name: espressif/rmaker_common
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ~1.4.6
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.5.2
|
||||
espressif/esp_rcp_update:
|
||||
component_hash: c10afbd54a17f27eed880e61262b161656e6d36ad63376c307f9273e99d0abcd
|
||||
dependencies:
|
||||
- name: espressif/esp-serial-flasher
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ~0.0.0
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.0'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.2.0
|
||||
espressif/esp_schedule:
|
||||
component_hash: e202a9c688f7f1ab601efb91d682e4bcfaebc508dcceee1a1e0a0d2d1ca75a26
|
||||
dependencies:
|
||||
- name: espressif/rmaker_common
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ~1.4.2
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.2.0
|
||||
espressif/esp_secure_cert_mgr:
|
||||
component_hash: 95b490db6944b2a6b32d7af172bb52e5045fe1d37ac8e00f9edfdd0535d64f72
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.3'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 2.5.1
|
||||
espressif/jsmn:
|
||||
component_hash: d80350c41bbaa827c98a25b6072df00884e72f54885996fab4a4f0aebce6b6c3
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.3'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.1.0
|
||||
espressif/json_generator:
|
||||
component_hash: 45033e1c199b13f1c8c1b544fb7d4e2df6a8e3071ebdcb1b22582b61a7974ff2
|
||||
dependencies: []
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.1.2
|
||||
espressif/json_parser:
|
||||
component_hash: d74b81729ad06ec11ff5eb5b1b0d7df1d00e6027fc11471f4b139c70dcf1b1e4
|
||||
dependencies:
|
||||
- name: espressif/jsmn
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
rules:
|
||||
- if: idf_version >=5.0
|
||||
version: ~1.1
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.0.3
|
||||
espressif/libsodium:
|
||||
component_hash: 25b968723c584a2742ca36cebe5a7ef049c6767e059f7b1e1eec69946019025d
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.2'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.0.20~2
|
||||
espressif/mdns:
|
||||
component_hash: 3ec0af5f6bce310512e90f482388d21cc7c0e99668172d2f895356165fc6f7c5
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.0'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.8.2
|
||||
espressif/network_provisioning:
|
||||
component_hash: ef2e10182fd1861e68b821491916327c25416ca7ae70e5a6e43313dbc71fe993
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.1'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.0.2
|
||||
espressif/qrcode:
|
||||
component_hash: 3b493771bc5d6ad30cbf87c25bf784aada8a08c941504355b55d6b75518ed7bc
|
||||
dependencies: []
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 0.1.0~2
|
||||
espressif/rmaker_common:
|
||||
component_hash: a3a1df881278d0351fc850b77792fe8a196ddd6dcacbea203d606329cc6a0239
|
||||
dependencies: []
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.4.6
|
||||
idf:
|
||||
source:
|
||||
type: idf
|
||||
version: 5.5.0
|
||||
joltwallet/littlefs:
|
||||
component_hash: 8e12955f47e27e6070b76715a96d6c75fc2b44f069e8c33679332d9bdd3120c4
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.0'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.20.1
|
||||
direct_dependencies:
|
||||
- bblanchon/arduinojson
|
||||
- esp32async/espasyncwebserver
|
||||
- espressif/arduino-esp32
|
||||
- idf
|
||||
manifest_hash: 720a2850c92f575db4f5eada42ebbed6314abacc2d6bd4f1d9107b6e0ec03056
|
||||
target: esp32s3
|
||||
version: 2.0.0
|
||||
4
main/CMakeLists.txt
Normal file
4
main/CMakeLists.txt
Normal file
@ -0,0 +1,4 @@
|
||||
idf_component_register(
|
||||
SRCS "main.cpp" "Config.cpp" "kartSender.cpp" "Detector.cpp"
|
||||
INCLUDE_DIRS ""
|
||||
)
|
||||
63
main/Config.cpp
Normal file
63
main/Config.cpp
Normal file
@ -0,0 +1,63 @@
|
||||
#include "Config.hpp"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include "FS.h"
|
||||
#include "SPIFFS.h"
|
||||
Config config;
|
||||
|
||||
void Config::Init() {
|
||||
SPIFFS.begin(true);
|
||||
File f = SPIFFS.open("/config.json", FILE_READ);
|
||||
if (!f) {
|
||||
SetDefaults();
|
||||
return;
|
||||
}
|
||||
DeserializationError err = deserializeJson(conf_json, f);
|
||||
if (err == DeserializationError::Ok) {
|
||||
Load();
|
||||
} else {
|
||||
SetDefaults();
|
||||
}
|
||||
f.close();
|
||||
}
|
||||
|
||||
void Config::SetDefaults() {
|
||||
Serial.println("Setting default config");
|
||||
// Set default MAC address
|
||||
trackside_mac[0] = 0x34;
|
||||
trackside_mac[1] = 0x85;
|
||||
trackside_mac[2] = 0x18;
|
||||
trackside_mac[3] = 0xa9;
|
||||
trackside_mac[4] = 0x3d;
|
||||
trackside_mac[5] = 0xfc;
|
||||
|
||||
// Set default kart ID
|
||||
kart_id = esp_random();
|
||||
|
||||
// Save the defaults to SPIFFS
|
||||
Save();
|
||||
}
|
||||
|
||||
void Config::Save() {
|
||||
conf_json.to<JsonObject>();
|
||||
JsonArray arr = conf_json["mac"].to<JsonArray>();
|
||||
for (int i = 0; i < 6; i++) {
|
||||
arr.add<int>(trackside_mac[i]);
|
||||
}
|
||||
conf_json["kart_id"] = kart_id;
|
||||
String out;
|
||||
serializeJson(conf_json, out);
|
||||
File f = SPIFFS.open("/config.json", FILE_WRITE, true);
|
||||
f.print(out);
|
||||
f.close();
|
||||
Serial.printf("Config saved: %s\n", out.c_str());
|
||||
}
|
||||
|
||||
void Config::Load() {
|
||||
JsonArray arr = conf_json["mac"];
|
||||
for (int i = 0; i < 6; i++) {
|
||||
trackside_mac[i] = arr[i];
|
||||
}
|
||||
kart_id = conf_json["kart_id"];
|
||||
}
|
||||
22
main/Config.hpp
Normal file
22
main/Config.hpp
Normal file
@ -0,0 +1,22 @@
|
||||
#ifndef CONFIG_HPP
|
||||
#define CONFIG_HPP
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <ArduinoJson.h>
|
||||
|
||||
class Config {
|
||||
public:
|
||||
void Init();
|
||||
void Save();
|
||||
|
||||
uint8_t trackside_mac[6] = {0x34, 0x85, 0x18, 0xa9, 0x3d, 0xfc};
|
||||
uint32_t kart_id = -1;
|
||||
|
||||
private:
|
||||
void Load();
|
||||
void SetDefaults();
|
||||
JsonDocument conf_json;
|
||||
};
|
||||
|
||||
extern Config config;
|
||||
#endif
|
||||
37
main/Detector.cpp
Normal file
37
main/Detector.cpp
Normal file
@ -0,0 +1,37 @@
|
||||
#include "Detector.hpp"
|
||||
|
||||
#include "TimeSync.hpp"
|
||||
#include "kartSender.hpp"
|
||||
|
||||
Detector detector;
|
||||
|
||||
#define PIN_BUTTON 0
|
||||
#define NUM_SAMPLES 100
|
||||
|
||||
void Detector::Init() {
|
||||
pinMode(PIN_BUTTON, INPUT_PULLUP);
|
||||
}
|
||||
|
||||
void Detector::Tasks() {
|
||||
uint32_t avg = 0;
|
||||
for (int i = 0; i < NUM_SAMPLES; i++) {
|
||||
avg += analogRead(1);
|
||||
}
|
||||
float detect = avg / (float)NUM_SAMPLES / 4095.0f;
|
||||
detect -= .37; // idle state
|
||||
// Serial.printf("Button detect: %.2f\n", detect);
|
||||
uint16_t button_state = detect < .02f;
|
||||
if (button_state != last_button_state) {
|
||||
if (!button_state) {
|
||||
falling_edge_time = millis();
|
||||
handled = false;
|
||||
}
|
||||
}
|
||||
last_button_state = button_state;
|
||||
|
||||
if (!button_state && millis() - falling_edge_time > 30 && !handled) {
|
||||
handled = true;
|
||||
// Serial.printf("Timestamp: %llu\n", TimeSync::GetTime());
|
||||
kart_sender.Send();
|
||||
}
|
||||
}
|
||||
18
main/Detector.hpp
Normal file
18
main/Detector.hpp
Normal file
@ -0,0 +1,18 @@
|
||||
#ifndef DETECTOR_HPP
|
||||
#define DETECTOR_HPP
|
||||
|
||||
#include "Arduino.h"
|
||||
|
||||
class Detector {
|
||||
public:
|
||||
void Init();
|
||||
void Tasks();
|
||||
|
||||
private:
|
||||
uint32_t falling_edge_time;
|
||||
bool last_button_state;
|
||||
bool handled;
|
||||
};
|
||||
extern Detector detector;
|
||||
|
||||
#endif
|
||||
37
main/TimeSync.hpp
Normal file
37
main/TimeSync.hpp
Normal file
@ -0,0 +1,37 @@
|
||||
#ifndef TIMESYNC_HPP
|
||||
#define TIMESYNC_HPP
|
||||
|
||||
#include <sys/time.h>
|
||||
|
||||
#include "Arduino.h"
|
||||
#include "WiFi.h"
|
||||
#include "time.h"
|
||||
|
||||
class TimeSync {
|
||||
public:
|
||||
static void Sync() {
|
||||
const char* ssid = "ConnectonRefused";
|
||||
const char* password = "retryconnection";
|
||||
|
||||
const char* ntpServer = "pool.ntp.org";
|
||||
WiFi.begin(ssid, password);
|
||||
while (WiFi.status() != WL_CONNECTED) {
|
||||
delay(500);
|
||||
Serial.print(".");
|
||||
}
|
||||
Serial.println("");
|
||||
Serial.println("WiFi connected.");
|
||||
configTime(0, 0, ntpServer);
|
||||
delay(2000);
|
||||
WiFi.disconnect();
|
||||
}
|
||||
|
||||
static uint64_t GetTime() {
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv, NULL); // gets time in seconds and microseconds
|
||||
uint64_t epochMillis = (uint64_t)tv.tv_sec * 1000 + (tv.tv_usec / 1000);
|
||||
return epochMillis;
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
19
main/idf_component.yml
Normal file
19
main/idf_component.yml
Normal file
@ -0,0 +1,19 @@
|
||||
## IDF Component Manager Manifest File
|
||||
dependencies:
|
||||
## Required IDF version
|
||||
idf:
|
||||
version: '>=4.1.0'
|
||||
# # Put list of dependencies here
|
||||
# # For components maintained by Espressif:
|
||||
# component: "~1.0.0"
|
||||
# # For 3rd party components:
|
||||
# username/component: ">=1.0.0,<2.0.0"
|
||||
# username2/component2:
|
||||
# version: "~1.0.0"
|
||||
# # For transient dependencies `public` flag can be set.
|
||||
# # `public` flag doesn't have an effect dependencies of the `main` component.
|
||||
# # All dependencies of `main` are public by default.
|
||||
# public: true
|
||||
espressif/arduino-esp32: ^3.3.0
|
||||
bblanchon/arduinojson: ^7.4.2
|
||||
esp32async/espasyncwebserver: ^3.7.10
|
||||
10
main/kartMessage.hpp
Normal file
10
main/kartMessage.hpp
Normal file
@ -0,0 +1,10 @@
|
||||
#ifndef KART_MESSAGE_HPP
|
||||
#define KART_MESSAGE_HPP
|
||||
#include "Arduino.h"
|
||||
|
||||
typedef struct {
|
||||
uint32_t kart_id;
|
||||
uint32_t transmision;
|
||||
} kart_msg;
|
||||
|
||||
#endif
|
||||
64
main/kartSender.cpp
Normal file
64
main/kartSender.cpp
Normal file
@ -0,0 +1,64 @@
|
||||
#include "kartSender.hpp"
|
||||
|
||||
#include <esp_now.h>
|
||||
#include <esp_wifi.h>
|
||||
|
||||
#include "Arduino.h"
|
||||
#include "Config.hpp"
|
||||
#include "WiFi.h"
|
||||
#include "kartMessage.hpp"
|
||||
bool tp_state = false;
|
||||
KartSender kart_sender;
|
||||
// callback when data is sent
|
||||
void OnDataSent(const esp_now_send_info_t *tx_info, esp_now_send_status_t status) {
|
||||
if (status == ESP_NOW_SEND_SUCCESS) {
|
||||
// esp_now_deinit();
|
||||
}
|
||||
// Serial.print("\r\nLast Packet Send Status:\t");
|
||||
// Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");
|
||||
}
|
||||
|
||||
esp_now_peer_info_t peerInfo;
|
||||
void KartSender::Send() {
|
||||
tp_state = !tp_state;
|
||||
digitalWrite(21, tp_state);
|
||||
|
||||
kart_msg myData;
|
||||
|
||||
myData.kart_id = config.kart_id;
|
||||
myData.transmision = transmission_counter++;
|
||||
|
||||
// Send message via ESP-NOW
|
||||
esp_err_t result = esp_now_send(config.trackside_mac, (uint8_t *)&myData, sizeof(myData));
|
||||
|
||||
if (result == ESP_OK) {
|
||||
Serial.println("Sent with success");
|
||||
} else {
|
||||
Serial.println("Error sending the data");
|
||||
}
|
||||
}
|
||||
|
||||
void KartSender::Init() {
|
||||
WiFi.mode(WIFI_STA);
|
||||
|
||||
// Init ESP-NOW
|
||||
if (esp_now_init() != ESP_OK) {
|
||||
Serial.println("Error initializing ESP-NOW");
|
||||
return;
|
||||
}
|
||||
|
||||
// Once ESPNow is successfully Init, we will register for Send CB to
|
||||
// get the status of Transmitted packet
|
||||
esp_now_register_send_cb(OnDataSent);
|
||||
|
||||
// Register peer
|
||||
memcpy(peerInfo.peer_addr, config.trackside_mac, 6);
|
||||
peerInfo.channel = 0;
|
||||
peerInfo.encrypt = false;
|
||||
|
||||
// Add peer
|
||||
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
|
||||
Serial.println("Failed to add peer");
|
||||
return;
|
||||
}
|
||||
}
|
||||
17
main/kartSender.hpp
Normal file
17
main/kartSender.hpp
Normal file
@ -0,0 +1,17 @@
|
||||
#ifndef KART_SENDER_HPP
|
||||
#define KART_SENDER_HPP
|
||||
|
||||
#include "Arduino.h"
|
||||
|
||||
class KartSender {
|
||||
public:
|
||||
void Init();
|
||||
void Send();
|
||||
|
||||
private:
|
||||
uint32_t transmission_counter = 0;
|
||||
};
|
||||
|
||||
extern KartSender kart_sender;
|
||||
|
||||
#endif
|
||||
36
main/main.cpp
Normal file
36
main/main.cpp
Normal file
@ -0,0 +1,36 @@
|
||||
#include <esp_now.h>
|
||||
#include <esp_wifi.h>
|
||||
|
||||
#include "Arduino.h"
|
||||
#include "Config.hpp"
|
||||
#include "Detector.hpp"
|
||||
#include "TimeSync.hpp"
|
||||
#include "WiFi.h"
|
||||
#include "kartMessage.hpp"
|
||||
#include "kartSender.hpp"
|
||||
|
||||
// Create a struct_message called myData
|
||||
|
||||
int trans = 0;
|
||||
|
||||
void setup() {
|
||||
// Init Serial Monitor
|
||||
Serial.begin(115200);
|
||||
Serial.setTxBufferSize(255);
|
||||
Serial.setRxBufferSize(255);
|
||||
pinMode(21, OUTPUT);
|
||||
digitalWrite(21, LOW);
|
||||
// Set device as a Wi-Fi Station
|
||||
// TimeSync::Sync();
|
||||
config.Init();
|
||||
kart_sender.Init();
|
||||
detector.Init();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Set values to send
|
||||
// kart_sender.Send();
|
||||
// delay(5000);
|
||||
detector.Tasks();
|
||||
delay(5);
|
||||
}
|
||||
7
partitions.csv
Normal file
7
partitions.csv
Normal file
@ -0,0 +1,7 @@
|
||||
# Name, Type, SubType, Offset, Size, Flags
|
||||
nvs, data, nvs, 0x9000, 0x5000,
|
||||
otadata, data, ota, 0xe000, 0x2000,
|
||||
app0, app, ota_0, 0x10000, 0x330000,
|
||||
app1, app, ota_1, 0x340000,0x330000,
|
||||
spiffs, data, spiffs, 0x670000,0x180000,
|
||||
coredump, data, coredump,0x7F0000,0x10000,
|
||||
|
2929
sdkconfig.old
Normal file
2929
sdkconfig.old
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user