fixed entry-exit height difference bug for Multistage Experiment
This commit is contained in:
285
.ccls
Normal file
285
.ccls
Normal file
@@ -0,0 +1,285 @@
|
|||||||
|
clang
|
||||||
|
|
||||||
|
%c -Wno-frame-address -std=gnu99 -Wno-old-style-declaration -Os -mlongcalls -ffunction-sections -fdata-sections -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -ggdb -freorder-blocks -Wwrite-strings -fstack-protector -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -MMD
|
||||||
|
%cpp -Wno-frame-address -std=gnu++11 -fexceptions -fno-rtti -Os -mlongcalls -ffunction-sections -fdata-sections -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -ggdb -freorder-blocks -Wwrite-strings -fstack-protector -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -MMD
|
||||||
|
|
||||||
|
-I/Users/hdh20267/Documents/pecan_ws/usda-platformio/include
|
||||||
|
-I/Users/hdh20267/Documents/pecan_ws/usda-platformio/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src
|
||||||
|
-I/Users/hdh20267/.platformio/lib/ArduinoJson/src
|
||||||
|
-I/Users/hdh20267/Documents/pecan_ws/usda-platformio/.pio/libdeps/esp32/PubSubClient/src
|
||||||
|
-I/Users/hdh20267/Documents/pecan_ws/usda-platformio/.pio/libdeps/esp32/FastAccelStepper/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/include/esp_additions/freertos
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/port/xtensa/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/include/esp_additions
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/esp32
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/port/esp32
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/port/esp32/private_include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/heap/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/log/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/include/apps
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/include/apps/sntp
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/lwip/src/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/port/esp32/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/port/esp32/include/arch
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/soc/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/soc/esp32
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/soc/esp32/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/hal/esp32/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/hal/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/hal/platform_port/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rom/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rom/include/esp32
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rom/esp32
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_common/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_system/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_system/port/soc
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_system/port/public_compat
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/xtensa/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/xtensa/esp32/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/driver/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/driver/esp32/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_pm/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_ringbuf/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/efuse/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/efuse/esp32/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/vfs/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_wifi/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_event/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_netif/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_eth/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/tcpip_adapter/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_phy/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_phy/esp32/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_ipc/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/app_trace/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_timer/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/port/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/mbedtls/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/esp_crt_bundle/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/app_update/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/spi_flash/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bootloader_support/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/nvs_flash/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/pthread/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_gdbstub/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_gdbstub/xtensa
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_gdbstub/esp32
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espcoredump/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espcoredump/include/port/xtensa
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wpa_supplicant/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wpa_supplicant/port/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wpa_supplicant/esp_supplicant/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/ieee802154/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/console
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/asio/asio/asio/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/asio/port/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/osi/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/include/esp32/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/api/include/api
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/btc/profile/esp/blufi/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/btc/profile/esp/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/host/bluedroid/api/include/api
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/tinycrypt/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/storage
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/btc/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/common/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/client/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/server/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/api/core/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/api/models/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/api
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/cbor/port/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/unity/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/unity/unity/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/cmock/CMock/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/coap/port/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/coap/libcoap/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/nghttp/port/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/nghttp/nghttp2/lib/includes
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-tls
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-tls/esp-tls-crypto
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_adc_cal/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hid/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/tcp_transport/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_http_client/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_http_server/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_https_ota/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_https_server/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_lcd/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_lcd/interface
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protobuf-c/protobuf-c
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protocomm/include/common
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protocomm/include/security
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protocomm/include/transports
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mdns/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_local_ctrl/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/sdmmc/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_serial_slave_link/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_websocket_client/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/expat/expat/expat/lib
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/expat/port/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wear_levelling/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fatfs/diskio
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fatfs/vfs
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fatfs/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freemodbus/freemodbus/common/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/idf_test/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/idf_test/include/esp32
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/jsmn/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json/cJSON
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/libsodium/libsodium/src/libsodium/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/libsodium/port_include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mqtt/esp-mqtt/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/openssl/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/perfmon/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/spiffs/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/ulp/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wifi_provisioning/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/rmaker_common/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_diagnostics/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/rtc_store/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_insights/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json_parser/upstream/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json_parser/upstream
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json_generator/upstream
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_schedule/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp_secure_cert_mgr/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rainmaker/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/gpio_button/button/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/qrcode/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/ws2812_led
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_littlefs/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/tool
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/typedef
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/image
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/math
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/nn
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/layer
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/detect
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/model_zoo
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32-camera/driver/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32-camera/conversions/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/dotprod/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/support/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/support/mem/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/hann/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_harris/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_nuttall/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/nuttall/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/flat_top/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/iir/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/fir/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/add/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sub/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mul/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/addc/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mulc/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sqrt/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/matrix/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/fft/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/dct/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/conv/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/common/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf_imu13states/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fb_gfx/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/dio_qspi/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/cores/esp32
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/variants/esp32
|
||||||
|
-I/Users/hdh20267/.platformio/lib/AsyncMqttClient-esphome/src
|
||||||
|
-I/Users/hdh20267/.platformio/lib/AsyncTCP-esphome/src
|
||||||
|
-I/Users/hdh20267/.platformio/lib/Crypto
|
||||||
|
-I/Users/hdh20267/.platformio/lib/Dsmr/src
|
||||||
|
-I/Users/hdh20267/.platformio/lib/ESP32-audioI2S/src
|
||||||
|
-I/Users/hdh20267/.platformio/lib/ESPAsyncWebServer-esphome/src
|
||||||
|
-I/Users/hdh20267/.platformio/lib/FastLED
|
||||||
|
-I/Users/hdh20267/.platformio/lib/HaierProtocol/include
|
||||||
|
-I/Users/hdh20267/.platformio/lib/HaierProtocol/src
|
||||||
|
-I/Users/hdh20267/.platformio/lib/HeatpumpIR
|
||||||
|
-I/Users/hdh20267/.platformio/lib/IRremoteESP8266/src
|
||||||
|
-I/Users/hdh20267/.platformio/lib/Improv/src
|
||||||
|
-I/Users/hdh20267/.platformio/lib/MideaUART/include
|
||||||
|
-I/Users/hdh20267/.platformio/lib/MideaUART/src
|
||||||
|
-I/Users/hdh20267/.platformio/lib/NeoPixelBus/src
|
||||||
|
-I/Users/hdh20267/.platformio/lib/TM1651
|
||||||
|
-I/Users/hdh20267/.platformio/lib/TinyGPSPlus/src
|
||||||
|
-I/Users/hdh20267/.platformio/lib/arduino-MLX90393
|
||||||
|
-I/Users/hdh20267/.platformio/lib/esp_wireguard/include
|
||||||
|
-I/Users/hdh20267/.platformio/lib/esp_wireguard/src
|
||||||
|
-I/Users/hdh20267/.platformio/lib/libsodium/libsodium/src/libsodium/include
|
||||||
|
-I/Users/hdh20267/.platformio/lib/libsodium/libsodium/src/libsodium
|
||||||
|
-I/Users/hdh20267/.platformio/lib/libsodium/libsodium/src/libsodium/include/sodium
|
||||||
|
-I/Users/hdh20267/.platformio/lib/libsodium/port_include
|
||||||
|
-I/Users/hdh20267/.platformio/lib/noise-c/include
|
||||||
|
-I/Users/hdh20267/.platformio/lib/noise-c/src
|
||||||
|
-I/Users/hdh20267/.platformio/lib/noise-c@0.1.1/include
|
||||||
|
-I/Users/hdh20267/.platformio/lib/noise-c@0.1.1/src
|
||||||
|
-I/Users/hdh20267/.platformio/lib/qr-code-generator-library/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/ArduinoOTA/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/AsyncUDP/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/BluetoothSerial/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/DNSServer/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/EEPROM/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/ESP32/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/ESPmDNS/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/Ethernet/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/FFat/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/FS/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdate/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdateServer/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/I2S/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/Insights/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/LittleFS/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/NetBIOS/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/Preferences/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/RainMaker/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/SD/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/SD_MMC/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/SPI/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/SPIFFS/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/SimpleBLE/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/Ticker/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/USB/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/Update/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/WiFiClientSecure/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/WiFiProv/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/Wire/src
|
||||||
|
-I/Users/hdh20267/.platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0
|
||||||
|
-I/Users/hdh20267/.platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0/xtensa-esp32-elf
|
||||||
|
-I/Users/hdh20267/.platformio/packages/toolchain-xtensa-esp32/lib/gcc/xtensa-esp32-elf/8.4.0/include
|
||||||
|
-I/Users/hdh20267/.platformio/packages/toolchain-xtensa-esp32/lib/gcc/xtensa-esp32-elf/8.4.0/include-fixed
|
||||||
|
-I/Users/hdh20267/.platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include
|
||||||
|
|
||||||
|
-DPLATFORMIO=60116
|
||||||
|
-DARDUINO_ESP32_DEV
|
||||||
|
-DHAVE_CONFIG_H
|
||||||
|
-DMBEDTLS_CONFIG_FILE="mbedtls/esp_config.h"
|
||||||
|
-DUNITY_INCLUDE_CONFIG_H
|
||||||
|
-DWITH_POSIX
|
||||||
|
-D_GNU_SOURCE
|
||||||
|
-DIDF_VER="v4.4.6-dirty"
|
||||||
|
-DESP_PLATFORM
|
||||||
|
-D_POSIX_READER_WRITER_LOCKS
|
||||||
|
-DARDUINO_ARCH_ESP32
|
||||||
|
-DESP32
|
||||||
|
-DF_CPU=240000000L
|
||||||
|
-DARDUINO=10812
|
||||||
|
-DARDUINO_VARIANT="esp32"
|
||||||
|
-DARDUINO_BOARD="Espressif ESP32 Dev Module"
|
||||||
|
-DARDUINO_PARTITION_default
|
||||||
19
.clangd
Normal file
19
.clangd
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
CompileFlags:
|
||||||
|
Add:
|
||||||
|
[
|
||||||
|
-mlong-calls,
|
||||||
|
-DSSIZE_MAX,
|
||||||
|
-DLWIP_NO_UNISTD_H=1,
|
||||||
|
-Dssize_t=long,
|
||||||
|
-D_SSIZE_T_DECLARED,
|
||||||
|
]
|
||||||
|
Remove:
|
||||||
|
[
|
||||||
|
-fno-tree-switch-conversion,
|
||||||
|
-f*,
|
||||||
|
-mtext-section-literals,
|
||||||
|
-mlongcalls,
|
||||||
|
-fstrict-volatile-bitfields,
|
||||||
|
-free,
|
||||||
|
-fipa-pta,
|
||||||
|
]
|
||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,5 +1,7 @@
|
|||||||
.pio
|
.pio/
|
||||||
.vscode/.browse.c_cpp.db*
|
.vscode/.browse.c_cpp.db*
|
||||||
.vscode/c_cpp_properties.json
|
.vscode/c_cpp_properties.json
|
||||||
.vscode/launch.json
|
.vscode/launch.json
|
||||||
.vscode/ipch
|
.vscode/ipch
|
||||||
|
build/
|
||||||
|
.cache/
|
||||||
|
|||||||
3
CMakeLists.txt
Normal file
3
CMakeLists.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.16.0)
|
||||||
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
|
project(usda-platformio)
|
||||||
440
compile_commands.json
Normal file
440
compile_commands.json
Normal file
File diff suppressed because one or more lines are too long
@@ -17,4 +17,6 @@ lib_deps =
|
|||||||
PubSubClient
|
PubSubClient
|
||||||
ArduinoJson
|
ArduinoJson
|
||||||
RotaryEncoder
|
RotaryEncoder
|
||||||
|
ArduinoOTA
|
||||||
|
ESPmDNS
|
||||||
|
|
||||||
|
|||||||
1866
sdkconfig.esp32
Normal file
1866
sdkconfig.esp32
Normal file
File diff suppressed because it is too large
Load Diff
6
src/CMakeLists.txt
Normal file
6
src/CMakeLists.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# This file was automatically generated for projects
|
||||||
|
# without default 'CMakeLists.txt' file.
|
||||||
|
|
||||||
|
FILE(GLOB_RECURSE app_sources ${CMAKE_SOURCE_DIR}/src/*.*)
|
||||||
|
|
||||||
|
idf_component_register(SRCS ${app_sources})
|
||||||
243
src/main.cpp
243
src/main.cpp
@@ -5,40 +5,46 @@
|
|||||||
#include <RotaryEncoder.h>
|
#include <RotaryEncoder.h>
|
||||||
#include <EEPROM.h>
|
#include <EEPROM.h>
|
||||||
|
|
||||||
const uint8_t bottom_dir_pin = 5, top_dir_pin = 18;
|
const uint8_t bottom_dir_pin = 5, top_dir_pin = 18;
|
||||||
const uint8_t bottom_step_pin = 4, top_step_pin = 17;
|
const uint8_t bottom_step_pin = 4, top_step_pin = 17;
|
||||||
const uint8_t bottom_en_pin = 12, top_en_pin = 16;
|
const uint8_t bottom_en_pin = 12, top_en_pin = 16;
|
||||||
const uint8_t encoder_a = 19, encoder_b = 21;
|
const uint8_t encoder_a = 19, encoder_b = 21;
|
||||||
|
|
||||||
#define EEPROM_SIZE 18
|
#define EEPROM_SIZE 18
|
||||||
#define EEPROM_BOTTOM_POS_ADDR 0
|
#define EEPROM_BOTTOM_POS_ADDR 0 // 0..3
|
||||||
#define EEPROM_TOP_POS_ADDR 4
|
#define EEPROM_TOP_POS_ADDR 4 // 4..7
|
||||||
#define EEPROM_FLAG_ADDR 8
|
#define EEPROM_FLAG_ADDR 8
|
||||||
#define EEPROM_BOTTOM_MOVING_FLAG_ADDR 9
|
#define EEPROM_BOTTOM_MOVING_FLAG_ADDR 9
|
||||||
#define EEPROM_TOP_MOVING_FLAG_ADDR 10
|
#define EEPROM_TOP_MOVING_FLAG_ADDR 10
|
||||||
#define EEPROM_TOP_BOTTOM_DIFF_ADDR 11
|
#define EEPROM_TOP_BOTTOM_DIFF_ADDR 11 // 11..14 (4 bytes)
|
||||||
|
|
||||||
#define HOMING_FLAG 0x01
|
#define HOMING_FLAG 0x01
|
||||||
#define NORMAL_FLAG 0x00
|
#define NORMAL_FLAG 0x00
|
||||||
#define MOVING_FLAG_SET 0xAA
|
#define MOVING_FLAG_SET 0xAA
|
||||||
#define MOVING_FLAG_CLEAR 0x00
|
#define MOVING_FLAG_CLEAR 0x00
|
||||||
|
|
||||||
const char *ssid = "IOT-pecan";
|
const char *ssid = "IOT-pecan";
|
||||||
const char *password = "aaaaaaaa";
|
const char *password = "aaaaaaaa";
|
||||||
const char *mqttServer = "192.168.1.110";
|
const char *mqttServer = "192.168.1.110";
|
||||||
const int mqttPort = 1883;
|
const int mqttPort = 1883;
|
||||||
const char *mqttHeightTopic = "/jc/height";
|
|
||||||
const char *mqttAngleTopic = "/jc/angle";
|
|
||||||
const char *mqttStopTopic = "/jc/stop";
|
|
||||||
const char *mqttHomingFlagTopic = "/jc/homing_mode";
|
|
||||||
const char *mqttDebugTopic = "/jc/debug";
|
|
||||||
const char *mqttStatusTopic = "/jc/status";
|
|
||||||
|
|
||||||
const char *mqttHeightLogTopic = "/jc/height/log";
|
const char *mqttHeightTopic = "/jc/height";
|
||||||
const char *mqttAngleLogTopic = "/jc/angle/log";
|
const char *mqttAngleTopic = "/jc/angle";
|
||||||
const char *mqttRPMLogTopic = "/jc/rpm/log";
|
const char *mqttStopTopic = "/jc/stop";
|
||||||
|
const char *mqttHomingFlagTopic = "/jc/homing_mode";
|
||||||
|
const char *mqttDebugTopic = "/jc/debug";
|
||||||
|
const char *mqttStatusTopic = "/jc/status";
|
||||||
|
|
||||||
|
const char *mqttHeightLogTopic = "/jc/height/log";
|
||||||
|
const char *mqttAngleLogTopic = "/jc/angle/log";
|
||||||
|
const char *mqttRPMLogTopic = "/jc/rpm/log";
|
||||||
|
|
||||||
const int steps_per_thou = 22;
|
const int steps_per_thou = 22;
|
||||||
|
|
||||||
|
// Mechanical limits in steps (negative = more closed)
|
||||||
|
static const long POS_MAX_STEPS = 0;
|
||||||
|
static const long POS_MIN_STEPS = -1665L * steps_per_thou;
|
||||||
|
|
||||||
FastAccelStepperEngine engine = FastAccelStepperEngine();
|
FastAccelStepperEngine engine = FastAccelStepperEngine();
|
||||||
FastAccelStepper *bottom_stepper = nullptr;
|
FastAccelStepper *bottom_stepper = nullptr;
|
||||||
FastAccelStepper *top_stepper = nullptr;
|
FastAccelStepper *top_stepper = nullptr;
|
||||||
@@ -48,58 +54,116 @@ RotaryEncoder encoder(encoder_a, encoder_b);
|
|||||||
WiFiClient wifiClient;
|
WiFiClient wifiClient;
|
||||||
PubSubClient mqttClient(wifiClient);
|
PubSubClient mqttClient(wifiClient);
|
||||||
|
|
||||||
|
// Commanded goals
|
||||||
volatile long bottom_step_goal = 0, top_step_goal = 0;
|
volatile long bottom_step_goal = 0, top_step_goal = 0;
|
||||||
|
|
||||||
|
// Commanded "crush" meaning: MIN(bottom, top) == crush_min_steps
|
||||||
|
volatile long crush_min_steps = 0;
|
||||||
|
|
||||||
|
// Angle difference (top - bottom) in steps
|
||||||
|
volatile long top_angle_difference_steps = 0;
|
||||||
|
|
||||||
volatile bool bottom_step_done = true, top_step_done = true;
|
volatile bool bottom_step_done = true, top_step_done = true;
|
||||||
volatile bool bottom_step_sent = false, top_step_sent = false;
|
volatile bool bottom_step_sent = false, top_step_sent = false;
|
||||||
volatile bool stop = false;
|
volatile bool stop = false;
|
||||||
bool system_locked = false;
|
bool system_locked = false;
|
||||||
|
|
||||||
void writePositionToEEPROM(int addr, long pos)
|
static void mqttDebugf(const char *fmt, long v) {
|
||||||
{
|
char buf[128];
|
||||||
EEPROM.write(addr, (pos >> 24) & 0xFF);
|
snprintf(buf, sizeof(buf), fmt, v);
|
||||||
EEPROM.write(addr + 1, (pos >> 16) & 0xFF);
|
mqttClient.publish(mqttDebugTopic, buf);
|
||||||
EEPROM.write(addr + 2, (pos >> 8) & 0xFF);
|
|
||||||
EEPROM.write(addr + 3, pos & 0xFF);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
long readPositionFromEEPROM(int addr)
|
static void writePositionToEEPROM(int addr, long pos)
|
||||||
{
|
{
|
||||||
long pos = ((long)EEPROM.read(addr) << 24) |
|
EEPROM.write(addr, (pos >> 24) & 0xFF);
|
||||||
|
EEPROM.write(addr + 1, (pos >> 16) & 0xFF);
|
||||||
|
EEPROM.write(addr + 2, (pos >> 8) & 0xFF);
|
||||||
|
EEPROM.write(addr + 3, (pos ) & 0xFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
static long readPositionFromEEPROM(int addr)
|
||||||
|
{
|
||||||
|
long pos = ((long)EEPROM.read(addr) << 24) |
|
||||||
((long)EEPROM.read(addr + 1) << 16) |
|
((long)EEPROM.read(addr + 1) << 16) |
|
||||||
((long)EEPROM.read(addr + 2) << 8) |
|
((long)EEPROM.read(addr + 2) << 8) |
|
||||||
(long)EEPROM.read(addr + 3);
|
((long)EEPROM.read(addr + 3));
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
volatile long top_angle_difference_steps = readPositionFromEEPROM(EEPROM_TOP_BOTTOM_DIFF_ADDR);
|
static inline long clampLong(long v, long lo, long hi) {
|
||||||
|
if (v < lo) return lo;
|
||||||
|
if (v > hi) return hi;
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recompute bottom_step_goal and top_step_goal so that:
|
||||||
|
// min(bottom, top) == crush_min_steps
|
||||||
|
// top - bottom == top_angle_difference_steps (as much as limits allow)
|
||||||
|
//
|
||||||
|
// After clamping, we update crush_min_steps to the achieved min so later angle
|
||||||
|
// changes don't "resurrect" an impossible crush target.
|
||||||
|
static void recomputeGoalsFromCrushAndDiff()
|
||||||
|
{
|
||||||
|
long diff = top_angle_difference_steps;
|
||||||
|
|
||||||
|
long bottomGoal, topGoal;
|
||||||
|
|
||||||
|
// Ensure crush_min_steps is within physical limits first.
|
||||||
|
crush_min_steps = clampLong(crush_min_steps, POS_MIN_STEPS, POS_MAX_STEPS);
|
||||||
|
|
||||||
|
if (diff >= 0) {
|
||||||
|
// bottom is the min (more crushed)
|
||||||
|
bottomGoal = crush_min_steps;
|
||||||
|
topGoal = crush_min_steps + diff;
|
||||||
|
} else {
|
||||||
|
// top is the min (more crushed)
|
||||||
|
topGoal = crush_min_steps;
|
||||||
|
bottomGoal = crush_min_steps - diff; // subtract negative => add magnitude
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clamp both to physical limits (this can distort diff near bounds).
|
||||||
|
bottomGoal = clampLong(bottomGoal, POS_MIN_STEPS, POS_MAX_STEPS);
|
||||||
|
topGoal = clampLong(topGoal, POS_MIN_STEPS, POS_MAX_STEPS);
|
||||||
|
|
||||||
|
bottom_step_goal = bottomGoal;
|
||||||
|
top_step_goal = topGoal;
|
||||||
|
|
||||||
|
// Update crush_min_steps to what we can actually achieve.
|
||||||
|
crush_min_steps = (bottomGoal < topGoal) ? bottomGoal : topGoal;
|
||||||
|
|
||||||
|
bottom_step_done = false; bottom_step_sent = false;
|
||||||
|
top_step_done = false; top_step_sent = false;
|
||||||
|
}
|
||||||
|
|
||||||
void callback(char *topic, byte *payload, unsigned int length)
|
void callback(char *topic, byte *payload, unsigned int length)
|
||||||
{
|
{
|
||||||
String topic_str = String(topic);
|
String topic_str(topic);
|
||||||
String payload_str = "";
|
String payload_str;
|
||||||
for (unsigned int i = 0; i < length; i++)
|
payload_str.reserve(length);
|
||||||
payload_str += (char)payload[i];
|
for (unsigned int i = 0; i < length; i++) payload_str += (char)payload[i];
|
||||||
int value = payload_str.toInt();
|
|
||||||
|
long value = payload_str.toInt();
|
||||||
|
|
||||||
if (topic_str == mqttHeightTopic && !system_locked)
|
if (topic_str == mqttHeightTopic && !system_locked)
|
||||||
{
|
{
|
||||||
value -= 1875 - 210;
|
// Convert incoming "height" into steps. Keeping your original offset logic.
|
||||||
|
// (If this is wrong, it's wrong consistently, at least.)
|
||||||
|
value -= (1875 - 210);
|
||||||
value *= steps_per_thou;
|
value *= steps_per_thou;
|
||||||
|
|
||||||
stop = false;
|
stop = false;
|
||||||
bottom_step_goal = value;
|
|
||||||
bottom_step_done = false;
|
crush_min_steps = value;
|
||||||
bottom_step_sent = false;
|
recomputeGoalsFromCrushAndDiff();
|
||||||
top_step_goal = value + top_angle_difference_steps;
|
|
||||||
top_step_done = false;
|
|
||||||
top_step_sent = false;
|
|
||||||
}
|
}
|
||||||
else if (topic_str == mqttAngleTopic && !system_locked)
|
else if (topic_str == mqttAngleTopic && !system_locked)
|
||||||
{
|
{
|
||||||
stop = false;
|
stop = false;
|
||||||
|
|
||||||
|
// value is in thou, convert to steps
|
||||||
top_angle_difference_steps = value * steps_per_thou;
|
top_angle_difference_steps = value * steps_per_thou;
|
||||||
top_step_goal = bottom_step_goal + top_angle_difference_steps;
|
recomputeGoalsFromCrushAndDiff();
|
||||||
top_step_done = false;
|
|
||||||
top_step_sent = false;
|
|
||||||
}
|
}
|
||||||
else if (topic_str == mqttStopTopic && !system_locked)
|
else if (topic_str == mqttStopTopic && !system_locked)
|
||||||
{
|
{
|
||||||
@@ -119,23 +183,14 @@ void callback(char *topic, byte *payload, unsigned int length)
|
|||||||
}
|
}
|
||||||
EEPROM.commit();
|
EEPROM.commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (top_step_goal < -1665 * steps_per_thou)
|
|
||||||
top_step_goal = -1665 * steps_per_thou;
|
|
||||||
if (bottom_step_goal < -1665 * steps_per_thou)
|
|
||||||
bottom_step_goal = -1665 * steps_per_thou;
|
|
||||||
if (top_step_goal > 0)
|
|
||||||
top_step_goal = 0;
|
|
||||||
if (bottom_step_goal > 0)
|
|
||||||
bottom_step_goal = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void reconnect()
|
void reconnect()
|
||||||
{
|
{
|
||||||
while (!mqttClient.connected())
|
while (!mqttClient.connected())
|
||||||
{
|
{
|
||||||
if (WiFi.status() != WL_CONNECTED)
|
if (WiFi.status() != WL_CONNECTED) WiFi.reconnect();
|
||||||
WiFi.reconnect();
|
|
||||||
Serial.println("Attempting MQTT connection...");
|
Serial.println("Attempting MQTT connection...");
|
||||||
if (mqttClient.connect("ESP32Client"))
|
if (mqttClient.connect("ESP32Client"))
|
||||||
{
|
{
|
||||||
@@ -160,9 +215,13 @@ long last_publish_time = 0;
|
|||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
Serial.begin(9600);
|
Serial.begin(9600);
|
||||||
|
|
||||||
EEPROM.begin(EEPROM_SIZE);
|
EEPROM.begin(EEPROM_SIZE);
|
||||||
engine.init();
|
engine.init();
|
||||||
|
|
||||||
|
// Now it's legal to read EEPROM-backed values.
|
||||||
|
top_angle_difference_steps = readPositionFromEEPROM(EEPROM_TOP_BOTTOM_DIFF_ADDR);
|
||||||
|
|
||||||
WiFi.begin(ssid, password);
|
WiFi.begin(ssid, password);
|
||||||
while (WiFi.status() != WL_CONNECTED)
|
while (WiFi.status() != WL_CONNECTED)
|
||||||
{
|
{
|
||||||
@@ -174,13 +233,24 @@ void setup()
|
|||||||
mqttClient.setServer(mqttServer, mqttPort);
|
mqttClient.setServer(mqttServer, mqttPort);
|
||||||
mqttClient.setCallback(callback);
|
mqttClient.setCallback(callback);
|
||||||
|
|
||||||
|
// Establish MQTT connection before any publish attempts.
|
||||||
|
reconnect();
|
||||||
|
|
||||||
uint8_t startupFlag = EEPROM.read(EEPROM_FLAG_ADDR);
|
uint8_t startupFlag = EEPROM.read(EEPROM_FLAG_ADDR);
|
||||||
Serial.print("Startup flag: ");
|
Serial.print("Startup flag: ");
|
||||||
Serial.println(startupFlag);
|
Serial.println(startupFlag);
|
||||||
|
if (startupFlag == HOMING_FLAG) {
|
||||||
|
top_angle_difference_steps = 0;
|
||||||
|
writePositionToEEPROM(EEPROM_TOP_BOTTOM_DIFF_ADDR, 0);
|
||||||
|
EEPROM.commit();
|
||||||
|
mqttClient.publish(mqttDebugTopic, "HOMING: angle diff reset to 0");
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t bottomMovingFlag = EEPROM.read(EEPROM_BOTTOM_MOVING_FLAG_ADDR);
|
uint8_t bottomMovingFlag = EEPROM.read(EEPROM_BOTTOM_MOVING_FLAG_ADDR);
|
||||||
uint8_t topMovingFlag = EEPROM.read(EEPROM_TOP_MOVING_FLAG_ADDR);
|
uint8_t topMovingFlag = EEPROM.read(EEPROM_TOP_MOVING_FLAG_ADDR);
|
||||||
if (startupFlag != HOMING_FLAG && (bottomMovingFlag != MOVING_FLAG_CLEAR || topMovingFlag != MOVING_FLAG_CLEAR))
|
|
||||||
|
if (startupFlag != HOMING_FLAG &&
|
||||||
|
(bottomMovingFlag != MOVING_FLAG_CLEAR || topMovingFlag != MOVING_FLAG_CLEAR))
|
||||||
{
|
{
|
||||||
system_locked = true;
|
system_locked = true;
|
||||||
mqttClient.publish(mqttDebugTopic, "FAULT: NEEDS HOMING RESET");
|
mqttClient.publish(mqttDebugTopic, "FAULT: NEEDS HOMING RESET");
|
||||||
@@ -196,6 +266,7 @@ void setup()
|
|||||||
bottom_stepper->setEnablePin(bottom_en_pin, false);
|
bottom_stepper->setEnablePin(bottom_en_pin, false);
|
||||||
bottom_stepper->setSpeedInHz(1000);
|
bottom_stepper->setSpeedInHz(1000);
|
||||||
bottom_stepper->setAcceleration(250);
|
bottom_stepper->setAcceleration(250);
|
||||||
|
|
||||||
if (startupFlag == HOMING_FLAG)
|
if (startupFlag == HOMING_FLAG)
|
||||||
{
|
{
|
||||||
Serial.println("Starting in homing mode (bottom)");
|
Serial.println("Starting in homing mode (bottom)");
|
||||||
@@ -210,9 +281,13 @@ void setup()
|
|||||||
{
|
{
|
||||||
bottom_stepper->setCurrentPosition(readPositionFromEEPROM(EEPROM_BOTTOM_POS_ADDR));
|
bottom_stepper->setCurrentPosition(readPositionFromEEPROM(EEPROM_BOTTOM_POS_ADDR));
|
||||||
mqttClient.publish(mqttDebugTopic, "Started in NORMAL mode");
|
mqttClient.publish(mqttDebugTopic, "Started in NORMAL mode");
|
||||||
mqttClient.publish(mqttDebugTopic, "Bottom stepper loaded %d position from EEPROM", bottom_stepper->getCurrentPosition());
|
mqttDebugf("Bottom stepper loaded %ld position from EEPROM", bottom_stepper->getCurrentPosition());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mqttClient.publish(mqttDebugTopic, "ERROR: bottom_stepper init failed");
|
||||||
|
}
|
||||||
|
|
||||||
top_stepper = engine.stepperConnectToPin(top_step_pin);
|
top_stepper = engine.stepperConnectToPin(top_step_pin);
|
||||||
if (top_stepper)
|
if (top_stepper)
|
||||||
@@ -221,6 +296,7 @@ void setup()
|
|||||||
top_stepper->setEnablePin(top_en_pin, false);
|
top_stepper->setEnablePin(top_en_pin, false);
|
||||||
top_stepper->setSpeedInHz(1000);
|
top_stepper->setSpeedInHz(1000);
|
||||||
top_stepper->setAcceleration(250);
|
top_stepper->setAcceleration(250);
|
||||||
|
|
||||||
if (startupFlag == HOMING_FLAG)
|
if (startupFlag == HOMING_FLAG)
|
||||||
{
|
{
|
||||||
Serial.println("Starting in homing mode (top)");
|
Serial.println("Starting in homing mode (top)");
|
||||||
@@ -232,15 +308,30 @@ void setup()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
top_stepper->setCurrentPosition(readPositionFromEEPROM(EEPROM_TOP_POS_ADDR));
|
top_stepper->setCurrentPosition(readPositionFromEEPROM(EEPROM_TOP_POS_ADDR));
|
||||||
mqttClient.publish(mqttDebugTopic, "Top stepper loaded %d position from EEPROM", top_stepper->getCurrentPosition());
|
mqttDebugf("Top stepper loaded %ld position from EEPROM", top_stepper->getCurrentPosition());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mqttClient.publish(mqttDebugTopic, "ERROR: top_stepper init failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize crush_min_steps to current achieved minimum so angle changes don't jump.
|
||||||
|
if (bottom_stepper && top_stepper) {
|
||||||
|
long b = bottom_stepper->getCurrentPosition();
|
||||||
|
long t = top_stepper->getCurrentPosition();
|
||||||
|
crush_min_steps = (b < t) ? b : t;
|
||||||
|
} else {
|
||||||
|
crush_min_steps = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure goals are consistent with stored diff at startup.
|
||||||
|
recomputeGoalsFromCrushAndDiff();
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
if (!mqttClient.connected())
|
if (!mqttClient.connected()) reconnect();
|
||||||
reconnect();
|
|
||||||
mqttClient.loop();
|
mqttClient.loop();
|
||||||
|
|
||||||
encoder.tick();
|
encoder.tick();
|
||||||
@@ -248,11 +339,23 @@ void loop()
|
|||||||
if (millis() - last_publish_time > 1000)
|
if (millis() - last_publish_time > 1000)
|
||||||
{
|
{
|
||||||
last_publish_time = millis();
|
last_publish_time = millis();
|
||||||
mqttClient.publish(mqttHeightLogTopic, String(1665 + bottom_stepper->getCurrentPosition() / steps_per_thou).c_str());
|
|
||||||
mqttClient.publish(mqttAngleLogTopic, String((top_stepper->getCurrentPosition() - bottom_stepper->getCurrentPosition()) / steps_per_thou).c_str());
|
if (bottom_stepper && top_stepper) {
|
||||||
|
mqttClient.publish(mqttHeightLogTopic,
|
||||||
|
String(1665 + bottom_stepper->getCurrentPosition() / steps_per_thou).c_str());
|
||||||
|
|
||||||
|
mqttClient.publish(mqttAngleLogTopic,
|
||||||
|
String((top_stepper->getCurrentPosition() - bottom_stepper->getCurrentPosition()) / steps_per_thou).c_str());
|
||||||
|
}
|
||||||
|
|
||||||
mqttClient.publish(mqttRPMLogTopic, String(encoder.getRPM()).c_str());
|
mqttClient.publish(mqttRPMLogTopic, String(encoder.getRPM()).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!bottom_stepper || !top_stepper) {
|
||||||
|
// If steppers didn't init, don't crash the MCU trying anyway.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (system_locked)
|
if (system_locked)
|
||||||
{
|
{
|
||||||
bottom_stepper->disableOutputs();
|
bottom_stepper->disableOutputs();
|
||||||
@@ -271,7 +374,8 @@ void loop()
|
|||||||
top_stepper->enableOutputs();
|
top_stepper->enableOutputs();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bottom_stepper->getCurrentPosition() != bottom_step_goal && !bottom_step_done && !bottom_step_sent)
|
if (bottom_stepper->getCurrentPosition() != bottom_step_goal &&
|
||||||
|
!bottom_step_done && !bottom_step_sent)
|
||||||
{
|
{
|
||||||
bottom_stepper->moveTo(bottom_step_goal);
|
bottom_stepper->moveTo(bottom_step_goal);
|
||||||
bottom_step_sent = true;
|
bottom_step_sent = true;
|
||||||
@@ -280,7 +384,8 @@ void loop()
|
|||||||
Serial.println("Moving bottom stepper");
|
Serial.println("Moving bottom stepper");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (top_stepper->getCurrentPosition() != top_step_goal && !top_step_done && !top_step_sent)
|
if (top_stepper->getCurrentPosition() != top_step_goal &&
|
||||||
|
!top_step_done && !top_step_sent)
|
||||||
{
|
{
|
||||||
top_stepper->moveTo(top_step_goal);
|
top_stepper->moveTo(top_step_goal);
|
||||||
top_step_sent = true;
|
top_step_sent = true;
|
||||||
@@ -289,25 +394,31 @@ void loop()
|
|||||||
Serial.println("Moving top stepper");
|
Serial.println("Moving top stepper");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bottom_stepper->getCurrentPosition() == bottom_step_goal && !bottom_step_done && bottom_step_sent)
|
if (bottom_stepper->getCurrentPosition() == bottom_step_goal &&
|
||||||
|
!bottom_step_done && bottom_step_sent)
|
||||||
{
|
{
|
||||||
bottom_step_done = true;
|
bottom_step_done = true;
|
||||||
bottom_step_sent = false;
|
bottom_step_sent = false;
|
||||||
|
|
||||||
writePositionToEEPROM(EEPROM_BOTTOM_POS_ADDR, bottom_stepper->getCurrentPosition());
|
writePositionToEEPROM(EEPROM_BOTTOM_POS_ADDR, bottom_stepper->getCurrentPosition());
|
||||||
writePositionToEEPROM(EEPROM_TOP_BOTTOM_DIFF_ADDR, top_angle_difference_steps);
|
writePositionToEEPROM(EEPROM_TOP_BOTTOM_DIFF_ADDR, top_angle_difference_steps);
|
||||||
EEPROM.write(EEPROM_BOTTOM_MOVING_FLAG_ADDR, MOVING_FLAG_CLEAR);
|
EEPROM.write(EEPROM_BOTTOM_MOVING_FLAG_ADDR, MOVING_FLAG_CLEAR);
|
||||||
EEPROM.commit();
|
EEPROM.commit();
|
||||||
|
|
||||||
Serial.println("Bottom stepper done");
|
Serial.println("Bottom stepper done");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (top_stepper->getCurrentPosition() == top_step_goal && !top_step_done && top_step_sent)
|
if (top_stepper->getCurrentPosition() == top_step_goal &&
|
||||||
|
!top_step_done && top_step_sent)
|
||||||
{
|
{
|
||||||
top_step_done = true;
|
top_step_done = true;
|
||||||
top_step_sent = false;
|
top_step_sent = false;
|
||||||
|
|
||||||
writePositionToEEPROM(EEPROM_TOP_POS_ADDR, top_stepper->getCurrentPosition());
|
writePositionToEEPROM(EEPROM_TOP_POS_ADDR, top_stepper->getCurrentPosition());
|
||||||
writePositionToEEPROM(EEPROM_TOP_BOTTOM_DIFF_ADDR, top_angle_difference_steps);
|
writePositionToEEPROM(EEPROM_TOP_BOTTOM_DIFF_ADDR, top_angle_difference_steps);
|
||||||
EEPROM.write(EEPROM_TOP_MOVING_FLAG_ADDR, MOVING_FLAG_CLEAR);
|
EEPROM.write(EEPROM_TOP_MOVING_FLAG_ADDR, MOVING_FLAG_CLEAR);
|
||||||
EEPROM.commit();
|
EEPROM.commit();
|
||||||
|
|
||||||
Serial.println("Top stepper done");
|
Serial.println("Top stepper done");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user