diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 20ff714e2..37a7d7743 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,6 +19,8 @@ jobs: target: esp32s3 - path: 'components/aw9523/example' target: esp32 + - path: 'components/bldc_haptics/example' + target: esp32s3 - path: 'components/bldc_motor/example' target: esp32s3 - path: 'components/controller/example' diff --git a/components/bldc_driver/include/bldc_driver.hpp b/components/bldc_driver/include/bldc_driver.hpp index eee3f1a17..a465fbbc0 100644 --- a/components/bldc_driver/include/bldc_driver.hpp +++ b/components/bldc_driver/include/bldc_driver.hpp @@ -33,6 +33,7 @@ class BldcDriver { int gpio_c_h; /**< Phase C high side gpio. */ int gpio_c_l; /**< Phase C low side gpio. */ int gpio_enable{-1}; /**< Enable pin for the BLDC driver (if any). */ + int gpio_fault{-1}; /**< Fault pin for the BLDC driver (if any). */ float power_supply_voltage; /**< Voltage of the power supply. */ float limit_voltage{-1}; /**< What voltage the motor should be limited to. Less than 0 means no limit. Will be clamped to power supply voltage. */ @@ -50,7 +51,7 @@ class BldcDriver { : gpio_ah_((gpio_num_t)config.gpio_a_h), gpio_al_((gpio_num_t)config.gpio_a_l), gpio_bh_((gpio_num_t)config.gpio_b_h), gpio_bl_((gpio_num_t)config.gpio_b_l), gpio_ch_((gpio_num_t)config.gpio_c_h), gpio_cl_((gpio_num_t)config.gpio_c_l), - gpio_en_(config.gpio_enable), dead_zone_(config.dead_zone), + gpio_en_(config.gpio_enable), gpio_fault_(config.gpio_fault), dead_zone_(config.dead_zone), logger_({.tag = "BLDC Driver", .level = config.log_level}) { configure_power(config.power_supply_voltage, config.limit_voltage); init(config); @@ -87,8 +88,30 @@ class BldcDriver { // set force level to 0 (gate off), and hold it mcpwm_generator_set_force_level(g, 0, true); } - gpio_set_level((gpio_num_t)gpio_en_, 0); enabled_ = false; + std::lock_guard lock(en_mutex_); + if (gpio_en_ >= 0) { + gpio_set_level((gpio_num_t)gpio_en_, 0); + } + } + + /** + * @brief Check if the driver is enabled. + * @return True if the driver is enabled, false otherwise. + */ + bool is_enabled() const { return enabled_; } + + /** + * @brief Check if the driver is faulted. + * @note If no fault pin was provided, this will always return false. + * @return True if the driver is faulted, false otherwise. + */ + bool is_faulted() { + std::lock_guard lock(fault_mutex_); + if (gpio_fault_ < 0) { + return false; + } + return gpio_get_level((gpio_num_t)gpio_fault_) == 1; } /** @@ -195,6 +218,7 @@ class BldcDriver { protected: void init(const Config &config) { configure_enable_gpio(); + configure_fault_gpio(); configure_timer(); configure_operators(); configure_comparators(); @@ -208,6 +232,7 @@ class BldcDriver { } void configure_enable_gpio() { + std::lock_guard lock(en_mutex_); if (gpio_en_ < 0) { return; } @@ -220,6 +245,21 @@ class BldcDriver { gpio_set_level((gpio_num_t)gpio_en_, 0); } + void configure_fault_gpio() { + std::lock_guard lock(fault_mutex_); + if (gpio_fault_ < 0) { + return; + } + logger_.info("Configure fault pin"); + gpio_config_t drv_fault_config; + memset(&drv_fault_config, 0, sizeof(drv_fault_config)); + drv_fault_config.pin_bit_mask = 1ULL << gpio_fault_; + drv_fault_config.mode = GPIO_MODE_INPUT; + drv_fault_config.pull_up_en = GPIO_PULLUP_DISABLE; + drv_fault_config.pull_down_en = GPIO_PULLDOWN_ENABLE; + ESP_ERROR_CHECK(gpio_config(&drv_fault_config)); + } + void configure_timer() { logger_.info("Create MCPWM timer"); mcpwm_timer_config_t timer_config; @@ -307,7 +347,10 @@ class BldcDriver { gpio_num_t gpio_bl_; gpio_num_t gpio_ch_; gpio_num_t gpio_cl_; + std::mutex en_mutex_; int gpio_en_; + std::mutex fault_mutex_; + int gpio_fault_; std::atomic power_supply_voltage_; std::atomic limit_voltage_; float dead_zone_; diff --git a/components/bldc_haptics/CMakeLists.txt b/components/bldc_haptics/CMakeLists.txt new file mode 100644 index 000000000..cb71043a1 --- /dev/null +++ b/components/bldc_haptics/CMakeLists.txt @@ -0,0 +1,4 @@ +idf_component_register( + INCLUDE_DIRS "include" + REQUIRES logger math pid task bldc_motor + ) diff --git a/components/bldc_haptics/example/CMakeLists.txt b/components/bldc_haptics/example/CMakeLists.txt new file mode 100644 index 000000000..5fc917040 --- /dev/null +++ b/components/bldc_haptics/example/CMakeLists.txt @@ -0,0 +1,21 @@ +# 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) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) + +# add the component directories that we want to use +set(EXTRA_COMPONENT_DIRS + "../../../components/" +) + +set( + COMPONENTS + "main esptool_py filters task monitor mt6701 bldc_motor bldc_driver bldc_haptics" + CACHE STRING + "List of components to include" + ) + +project(bldc_motor_example) + +set(CMAKE_CXX_STANDARD 20) diff --git a/components/bldc_haptics/example/README.md b/components/bldc_haptics/example/README.md new file mode 100644 index 000000000..ffe0beb9d --- /dev/null +++ b/components/bldc_haptics/example/README.md @@ -0,0 +1,67 @@ +_Note that this is a template for an ESP-IDF example README.md file. When using this template, replace all these emphasised placeholders with example-specific content._ + +| Supported Targets | _Supported target, e.g. ESP32_ | _Another supported target, e.g. ESP32-S3_ | +| ----------------- | ------------------------------ | ----------------------------------------- | + +_If the example supports all targets supported by ESP-IDF then the table can be omitted_ +# _Example Title_ + +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +_What is this example? What does it do?_ + +_What features of ESP-IDF does it use?_ + +_What could someone create based on this example? ie applications/use cases/etc_ + +_If there are any acronyms or Espressif-only words used here, explain them or mention where in the datasheet/TRM this information can be found._ + +## How to use example + +### Hardware Required + +_If possible, example should be able to run on any commonly available ESP32 development board. Otherwise, describe what specific hardware should be used._ + +_If any other items (server, BLE device, app, second chip, whatever) are needed, mention them here. Include links if applicable. Explain how to set them up._ + +### Configure the project + +``` +idf.py menuconfig +``` + +* _If there is any project configuration that the user must set for this example, mention this here._ + +### Build and Flash + +Build the project and flash it to the board, then run monitor tool to view serial output: + +``` +idf.py -p PORT flash monitor +``` + +(Replace PORT with the name of the serial port to use.) + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. + +## Example Output + +_Include an example of the console output from the running example, here:_ + +``` +Use this style for pasting the log. +``` + +_If the user is supposed to interact with the example at this point (read/write GATT attribute, send HTTP request, press button, etc. then mention it here)_ + +_For examples where ESP32 is connected with some other hardware, include a table or schematics with connection details._ + +## Troubleshooting + +_If there are any likely problems or errors which many users might encounter, mention them here. Remove this section for very simple examples where nothing is likely to go wrong._ + +## Example Breakdown + +_If the example source code is lengthy, complex, or cannot be easily understood, use this section to break down and explain the source code. This can be done by breaking down the execution path step by step, or explaining what each major function/task/source file does. Add sub titles if necessary. Remove this section for very simple examples where the source code is self explanatory._ \ No newline at end of file diff --git a/components/bldc_haptics/example/main/CMakeLists.txt b/components/bldc_haptics/example/main/CMakeLists.txt new file mode 100644 index 000000000..a941e22ba --- /dev/null +++ b/components/bldc_haptics/example/main/CMakeLists.txt @@ -0,0 +1,2 @@ +idf_component_register(SRC_DIRS "." + INCLUDE_DIRS ".") diff --git a/components/bldc_haptics/example/main/bldc_haptics_example.cpp b/components/bldc_haptics/example/main/bldc_haptics_example.cpp new file mode 100644 index 000000000..e10b89b94 --- /dev/null +++ b/components/bldc_haptics/example/main/bldc_haptics_example.cpp @@ -0,0 +1,235 @@ +#include +#include + +#include "driver/i2c.h" + +#include "bldc_driver.hpp" +#include "bldc_haptics.hpp" +#include "bldc_motor.hpp" +#include "butterworth_filter.hpp" +#include "lowpass_filter.hpp" +#include "mt6701.hpp" +#include "task.hpp" + +using namespace std::chrono_literals; + +// pins for the bldc motor test stand with the TinyS3 +static constexpr auto I2C_NUM = (I2C_NUM_1); +static constexpr auto I2C_SCL_IO = (GPIO_NUM_9); +static constexpr auto I2C_SDA_IO = (GPIO_NUM_8); +static constexpr int I2C_FREQ_HZ = (400 * 1000); +static constexpr int I2C_TIMEOUT_MS = (10); + +extern "C" void app_main(void) { + espp::Logger logger({.tag = "BLDC Haptics Example", .level = espp::Logger::Verbosity::DEBUG}); + constexpr int num_seconds_to_run = 20; + { + logger.info("Running BLDC Haptics example for {} seconds!", num_seconds_to_run); + + // make the I2C that we'll use to communicate with the mt6701 (magnetic encoder) + i2c_config_t i2c_cfg; + logger.info("initializing i2c driver..."); + memset(&i2c_cfg, 0, sizeof(i2c_cfg)); + i2c_cfg.sda_io_num = I2C_SDA_IO; + i2c_cfg.scl_io_num = I2C_SCL_IO; + i2c_cfg.mode = I2C_MODE_MASTER; + i2c_cfg.sda_pullup_en = GPIO_PULLUP_ENABLE; + i2c_cfg.scl_pullup_en = GPIO_PULLUP_ENABLE; + i2c_cfg.master.clk_speed = I2C_FREQ_HZ; + auto err = i2c_param_config(I2C_NUM, &i2c_cfg); + if (err != ESP_OK) + logger.error("config i2c failed"); + err = i2c_driver_install(I2C_NUM, I2C_MODE_MASTER, 0, 0, 0); + if (err != ESP_OK) + logger.error("install i2c driver failed"); + // make some lambda functions we'll use to read/write to the mt6701 + auto i2c_write = [](uint8_t dev_addr, uint8_t *data, size_t len) { + i2c_master_write_to_device(I2C_NUM, dev_addr, data, len, I2C_TIMEOUT_MS / portTICK_PERIOD_MS); + }; + + auto i2c_read = [](uint8_t dev_addr, uint8_t reg_addr, uint8_t *data, size_t len) { + i2c_master_write_read_device(I2C_NUM, dev_addr, ®_addr, 1, data, len, + I2C_TIMEOUT_MS / portTICK_PERIOD_MS); + }; + + // make the velocity filter + static constexpr float core_update_period = 0.001f; // seconds + static constexpr float filter_cutoff_hz = 4.0f; + espp::ButterworthFilter<2, espp::BiquadFilterDf2> bwfilter({ + .normalized_cutoff_frequency = 2.0f * filter_cutoff_hz * 0.01 // core_update_period + }); + espp::LowpassFilter lpfilter( + {.normalized_cutoff_frequency = 2.0f * filter_cutoff_hz * 0.01, // core_update_period, + .q_factor = 1.0f}); + auto filter_fn = [&bwfilter, &lpfilter](float raw) -> float { + // return bwfilter.update(raw); + // return lpfilter.update(raw); + + // NOTE: right now there seems to be something wrong with the filter + // configuration, so we don't filter at all. Either 1) the filtering + // is not actually removing the noise we want, 2) it is adding too + // much delay for the PID to compensate for, or 3) there is a bug in + // the update function which doesn't take previous state into + // account? + return raw; + }; + + // now make the mt6701 which decodes the data + std::shared_ptr mt6701 = std::make_shared( + espp::Mt6701::Config{.write = i2c_write, + .read = i2c_read, + .velocity_filter = filter_fn, + .update_period = std::chrono::duration(core_update_period), + .log_level = espp::Logger::Verbosity::WARN}); + + // now make the bldc driver + std::shared_ptr driver = + std::make_shared(espp::BldcDriver::Config{ + // this pinout is configured for the TinyS3 connected to the + // TMC6300-BOB in the BLDC Motor Test Stand + .gpio_a_h = 1, + .gpio_a_l = 2, + .gpio_b_h = 3, + .gpio_b_l = 4, + .gpio_c_h = 5, + .gpio_c_l = 21, + .gpio_enable = 34, // connected to the VIO/~Stdby pin of TMC6300-BOB + .gpio_fault = 36, // connected to the nFAULT pin of TMC6300-BOB + .power_supply_voltage = 5.0f, + .limit_voltage = 5.0f, + .log_level = espp::Logger::Verbosity::WARN}); + + // now make the bldc motor + using BldcMotor = espp::BldcMotor; + auto motor = BldcMotor(BldcMotor::Config{ + // measured by setting it into ANGLE_OPENLOOP and then counting how many + // spots you feel when rotating it. + .num_pole_pairs = 7, + .phase_resistance = + 5.0f, // tested by running velocity_openloop and seeing if the veloicty is ~correct + .kv_rating = + 320, // tested by running velocity_openloop and seeing if the velocity is ~correct + .current_limit = 1.0f, // Amps + .zero_electric_offset = 2.3914752, // gotten from previously running without providing this + // and it will be logged. + .sensor_direction = espp::detail::SensorDirection::COUNTER_CLOCKWISE, + .foc_type = espp::detail::FocType::SPACE_VECTOR_PWM, + .driver = driver, + .sensor = mt6701, + .velocity_pid_config = + { + .kp = 0.010f, + .ki = 1.000f, + .kd = 0.000f, + .integrator_min = -1.0f, // same scale as output_min (so same scale as current) + .integrator_max = 1.0f, // same scale as output_max (so same scale as current) + .output_min = -1.0, // velocity pid works on current (if we have phase resistance) + .output_max = 1.0, // velocity pid works on current (if we have phase resistance) + }, + .angle_pid_config = + { + .kp = 7.000f, + .ki = 0.300f, + .kd = 0.010f, + .integrator_min = -10.0f, // same scale as output_min (so same scale as velocity) + .integrator_max = 10.0f, // same scale as output_max (so same scale as velocity) + .output_min = -20.0, // angle pid works on velocity (rad/s) + .output_max = 20.0, // angle pid works on velocity (rad/s) + }, + .log_level = espp::Logger::Verbosity::INFO}); + + auto print_detent_config = [&logger](const auto &detent_config) { + if (detent_config == espp::detail::UNBOUNDED_NO_DETENTS) { + logger.info("Setting detent config to UNBOUNDED_NO_DETENTS"); + } + if (detent_config == espp::detail::BOUNDED_NO_DETENTS) { + logger.info("Setting detent config to BOUNDED_NO_DETENTS"); + } + if (detent_config == espp::detail::MULTI_REV_NO_DETENTS) { + logger.info("Setting detent config to MULTI_REV_NO_DETENTS"); + } + if (detent_config == espp::detail::ON_OFF_STRONG_DETENTS) { + logger.info("Setting detent config to ON_OFF_STRONG_DETENTS"); + } + if (detent_config == espp::detail::COARSE_VALUES_STRONG_DETENTS) { + logger.info("Setting detent config to COARSE_VALUES_STRONG_DETENTS"); + } + if (detent_config == espp::detail::FINE_VALUES_NO_DETENTS) { + logger.info("Setting detent config to FINE_VALUES_NO_DETENTS"); + } + if (detent_config == espp::detail::FINE_VALUES_WITH_DETENTS) { + logger.info("Setting detent config to FINE_VALUES_WITH_DETENTS"); + } + if (detent_config == espp::detail::MAGNETIC_DETENTS) { + logger.info("Setting detent config to MAGNETIC_DETENTS"); + } + if (detent_config == espp::detail::RETURN_TO_CENTER_WITH_DETENTS) { + logger.info("Setting detent config to RETURN_TO_CENTER_WITH_DETENTS"); + } + }; + + //! [bldc_haptics_example_1] + using BldcHaptics = espp::BldcHaptics; + + auto haptic_motor = BldcHaptics({.motor = motor, + .kp_factor = 2, + .kd_factor_min = 0.01, + .kd_factor_max = 0.04, + .log_level = espp::Logger::Verbosity::INFO}); + + // auto detent_config = espp::detail::UNBOUNDED_NO_DETENTS; + // auto detent_config = espp::detail::BOUNDED_NO_DETENTS; + // auto detent_config = espp::detail::MULTI_REV_NO_DETENTS; + // auto detent_config = espp::detail::ON_OFF_STRONG_DETENTS; + auto detent_config = espp::detail::COARSE_VALUES_STRONG_DETENTS; + // auto detent_config = espp::detail::FINE_VALUES_NO_DETENTS; + // auto detent_config = espp::detail::FINE_VALUES_WITH_DETENTS; + // auto detent_config = espp::detail::MAGNETIC_DETENTS; + // auto detent_config = espp::detail::RETURN_TO_CENTER_WITH_DETENTS; + + logger.info("{}", detent_config); + + haptic_motor.update_detent_config(detent_config); + // this will start the haptic motor thread which will run in the background. + // If we want to change the detent config we can call update_detent_config() + // and it will update the detent config in the background thread. + haptic_motor.start(); + //! [bldc_haptics_example_1] + print_detent_config(detent_config); + + static auto start = std::chrono::high_resolution_clock::now(); + auto now = std::chrono::high_resolution_clock::now(); + auto seconds = std::chrono::duration(now - start).count(); + while (seconds < num_seconds_to_run) { + now = std::chrono::high_resolution_clock::now(); + seconds = std::chrono::duration(now - start).count(); + std::this_thread::sleep_for(500ms); + if (driver->is_faulted()) { + logger.error("Driver is faulted, cannot continue haptics"); + break; + } + } + + // test the haptic buzz / click + if (!driver->is_faulted()) { + logger.info("Playing haptic click!"); + //! [bldc_haptics_example_2] + haptic_motor.play_haptic(espp::detail::HapticConfig{ + .strength = 5.0f, + .frequency = 200.0f, // Hz, NOTE: frequency is unused for now + .duration = 1s // NOTE: duration is unused for now + }); + //! [bldc_haptics_example_2] + } + + driver->disable(); + } + // now clean up the i2c driver + i2c_driver_delete(I2C_NUM); + + logger.info("BLDC Haptics example complete!"); + + while (true) { + std::this_thread::sleep_for(1s); + } +} diff --git a/components/bldc_haptics/example/sdkconfig.defaults b/components/bldc_haptics/example/sdkconfig.defaults new file mode 100644 index 000000000..253c0a196 --- /dev/null +++ b/components/bldc_haptics/example/sdkconfig.defaults @@ -0,0 +1,25 @@ +CONFIG_IDF_TARGET="esp32s3" + +CONFIG_COMPILER_OPTIMIZATION_PERF=y +# CONFIG_COMPILER_OPTIMIZATION_SIZE=y + +# disable interrupt watchdog +# CONFIG_ESP_INT_WDT=n +# CONFIG_ESP_TASK_WDT_EN=n + +CONFIG_FREERTOS_HZ=1000 + +CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y +CONFIG_ESPTOOLPY_FLASHSIZE="8MB" + +# ESP32-specific +# +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=240 + +# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y + +# Common ESP-related +# +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=4096 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=8192 diff --git a/components/bldc_haptics/include/bldc_haptics.hpp b/components/bldc_haptics/include/bldc_haptics.hpp new file mode 100644 index 000000000..3fc76963b --- /dev/null +++ b/components/bldc_haptics/include/bldc_haptics.hpp @@ -0,0 +1,410 @@ +#pragma once + +#include +#include + +#include "bldc_motor.hpp" +#include "detent_config.hpp" +#include "haptic_config.hpp" +#include "logger.hpp" +#include "task.hpp" + +namespace espp { +/// @brief Concept for a motor that can be used for haptics +template +concept MotorConcept = requires { + static_cast(&FOO::enable); ///< Enable the motor + static_cast(&FOO::disable); ///< Disable the motor + static_cast( + &FOO::move); ///< Move the motor to a new target (position, velocity, or torque depending on + ///< the motor control type) + static_cast( + &FOO::set_motion_control_type); ///< Set the motion control type + static_cast(&FOO::loop_foc); ///< Run the FOC loop + static_cast(&FOO::get_shaft_angle); ///< Get the shaft angle + static_cast(&FOO::get_shaft_velocity); ///< Get the shaft velocity + static_cast(&FOO::get_electrical_angle); ///< Get the electrical angle +}; + +/// @brief Class which creates haptic feedback for the user by vibrating the +/// motor This class is based on the work at +/// https://github.com/scottbez1/smartknob to use a small BLDC gimbal motor as a +/// haptic feedback device. It does so by varying the control type, setpoints, and +/// gains of the motor to create a vibration. The motor is driven using the ESP32's MCPWM +/// peripheral. The motor is driven in a closed loop using the encoder feedback. +/// @note The motor is configured to be driven in an open-loop mode, so that the PID contained +/// in the motor controller does not interfere with the haptic feedback. +/// +/// The haptics provided by this class enable configuration of: +/// - Positions (with non-magnetic detents) - evenly spaced across the allowed range of motion +/// - Number of magnetic detents - where the +/// - Width of the detents +/// - Strength of the detents +/// - Snap point (position at which the motor will snap to the next detent / position) +/// - Bounds on the rotation of the motor - can be unbounded, bounded within a +/// single revolution, or bounded within multiple revolutions +/// +/// The haptics provided by this class provide the following functionality: +/// - Positions: Evenly spaced positions across the allowed range of motion +/// (specified by the min and max position) will have a detent. +/// - Detents: Manually specified detents will be placed at the specified +/// positions. The detents will have a specified width and strength. +/// - End Stops: The motor will vibrate when it is at the min or max position. +/// This is useful for providing feedback when the motor is at the end of its +/// range of motion. The end stops are configured by specifying the strength +/// of the end stops. +/// - Snap point: The snap point is the position at which the motor will snap +/// to the next detent / position. This is useful for providing feedback when +/// the motor is at a certain position. The snap point is configured by +/// specifying the snap point (percentage of the way through the detent) and +/// the snap point bias (percentage of the way through the detent to bias the +/// snap point). +/// +/// Some example configurations are provided as static constexpr in +/// espp::detail. They are: +/// - UNBOUNDED_NO_DETENTS: No detents, no end stops, no snap point, no bounds +/// - BOUNDED_NO_DETENTS: No detents, no end stops, no snap point, bounded +/// within a single revolution +/// - MULTI_REV_NO_DETENTS: No detents, no end stops, no snap point, bounded +/// within multiple revolutions +/// - COARSE_VALUES_STRONG_DETENTS: detents, end stops, snap point, bounded +/// within a single revolution +/// - FINE_VALUES_NO_DETENTS: No detents, end stops, snap point, bounded +/// - FINE_VALUES_WITH_DETENTS: detents, end stops, snap point, bounded +/// - RETURN_TO_CENTER_WITH_DETENTS: 3 detents, end stops, snap point, bounded +/// within a single revolution +/// - RETURN_TO_CENTER_WITH_DETENTS_AND_MULTIPLE_REVOLUTIONS: 3 detents, end +/// stops, snap point, bounded within multiple revolutions +/// +/// Some haptic behaviors that can be implemented with this library are: +/// - Unbounded with no detents +/// - Bounded with no detents +/// - Multiple revolutions +/// - On/off with strong detent +/// - Return to center without detents +/// - Return to center with detents +/// - Fine values with no detents +/// - Fine values with detents +/// - Coarse values with strong detents +/// - Coarse values with weak detents +/// +/// \section bldc_haptics_ex1 Example 1: Basic usage +/// \snippet bldc_haptics_example.cpp bldc_haptics_example_1 +/// \section bldc_haptics_ex2 Example 2: Playing a haptic click / buzz +/// \snippet bldc_haptics_example.cpp bldc_haptics_example_2 +template class BldcHaptics { +public: + /// @brief Configuration for the haptic motor + struct Config { + std::reference_wrapper motor; ///< Pointer to the motor to use for haptics + float kp_factor{2}; ///< Factor to multiply the detent strength by to get kp (default 2). Used + ///< for both detents and end stops. \note Depending on the motor, this may + ///< need to be adjusted to get the desired behavior. + float kd_factor_min{0.01}; ///< Min Factor to multiply the detent strength by to get kd (default + ///< 0.01). \note Depending on the motor, this may need to be + ///< adjusted to get the desired behavior. + float kd_factor_max{0.04}; ///< Max Factor to multiply the detent strength by to get kd (default + ///< 0.04). \note Depending on the motor, this may need to be + ///< adjusted to get the desired behavior. + Logger::Verbosity log_level; ///< Log level to use for the haptics + }; + + /// @brief Constructor for the haptic motor + /// @param config Configuration for the haptic motor + BldcHaptics(const Config &config) + : detent_pid_({.kp = 0, // will be set later (motor_task) + .ki = 0, // not configurable for now + .kd = 0, // will be set later (update_detent_config) + .integrator_min = 0, // not configurable for now + .integrator_max = 0, // not configurable for now + .output_min = -1, // go ahead and set some bounds (operates on current) + .output_max = 1}) // go ahead and set some bounds (operates on current) + , + kp_factor_(config.kp_factor), kd_factor_min_(config.kd_factor_min), + kd_factor_max_(config.kd_factor_max), motor_(config.motor), + logger_({.tag = "BldcHaptics", + .rate_limit = std::chrono::milliseconds(100), + .level = config.log_level}) { + logger_.info("Initializing haptic motor\n" + "\tkp_factor: {}\n" + "\tkd_factor_min: {}\n" + "\tkd_factor_max: {}", + kp_factor_, kd_factor_min_, kd_factor_max_); + // set the motion control type to torque + motor_.get().set_motion_control_type(detail::MotionControlType::TORQUE); + // create the motor task + motor_task_ = + Task::make_unique({.name = "haptic_motor", + .callback = std::bind(&BldcHaptics::motor_task, this, + std::placeholders::_1, std::placeholders::_2), + .stack_size_bytes = 1024 * 6, + .log_level = Logger::Verbosity::WARN}); + } + + /// @brief Start the haptic motor + void start() { motor_task_->start(); } + + /// @brief Stop the haptic motor + void stop() { motor_task_->stop(); } + + /// @brief Get the current position of the haptic motor + /// @return Current position of the haptic motor + float get_position() const { return current_position_; } + + /// @brief Configure the detents for the haptic motor + void update_detent_config(const detail::DetentConfig &config) { + std::unique_lock lk(detent_mutex_); + // update the detent center + current_detent_center_ = motor_.get().get_shaft_angle(); + + if (current_position_ < config.min_position) { + // if the current position is less than the min position, set the current + // position to the min position + current_position_ = config.min_position; + } else if (current_position_ > config.max_position) { + // if the current position is greater than the max position, set the + // current position to the max position + current_position_ = config.max_position; + } + + // update the detent config + detent_config_ = config; + + // Update derivative factor of torque controller based on detent width. If + // the D factor is large on coarse detents, the motor ends up making noise + // because the P&D factors amplify the noise from the sensor. This is a + // piecewise linear function so that fine detents (small width) get a + // higher D factor and coarse detents get a small D factor. Fine detents + // need a nonzero D factor to artificially create "clicks" each time a new + // value is reached (the P factor is small for fine detents due to the + // smaller angular errors, and the existing P factor doesn't work well for + // very small angle changes (easy to get runaway due to sensor noise & + // lag)). + // TODO: consider eliminating this D factor entirely and just "play" a + // hardcoded haptic "click" (e.g. a quick burst of torque in each + // direction) whenever the position changes when the detent width is too + // small for the P factor to work well. + const float derivative_lower_strength = config.detent_strength * kd_factor_max_; + const float derivative_upper_strength = config.detent_strength * kd_factor_min_; + const float derivative_position_width_lower = 3.0f * M_PI / 180.0f; // radians(3); + const float derivative_position_width_upper = 8.0f * M_PI / 180.0f; // radians(8); + const float raw = derivative_lower_strength + + (derivative_upper_strength - derivative_lower_strength) / + (derivative_position_width_upper - derivative_position_width_lower) * + (config.position_width - derivative_position_width_lower); + // When there are intermittent detents (set via detent_positions), disable + // derivative factor as this adds extra "clicks" when nearing a detent. + float new_kd = + config.detent_positions.size() > 0 + ? 0 + : std::clamp( + raw, std::min(derivative_lower_strength, derivative_upper_strength), + std::max(derivative_lower_strength, derivative_upper_strength)); + // update the PID parameters + auto pid_config = detent_pid_.get_config(); + pid_config.kd = new_kd; + // we don't want to clear the PID state when we change the config, so we + // pass false + logger_.info("Updating detent PID config: {}", pid_config); + detent_pid_.set_config(pid_config, false); + } + + /// @brief Play haptic feedback + /// @note Plays a somewhat-configurable haptic "buzz" / "click" for the user + /// @note This is a blocking call that will wait for the haptic feedback to + /// finish before returning. It will also block the motor/detent task + /// from running until the haptic feedback is finished. + /// @param config Configuration for the haptic feedback + void play_haptic(const detail::HapticConfig &config) { + std::unique_lock lk(motor_mutex_); + // TODO: use the config frequency + // TODO: use the config duration + // TODO: convert this to a non-blocking call (put data into a queue and perform the actions in + // the task) + // TODO: Use the PID controller to control the haptics + // Play a hardcoded haptic "click" + float strength = config.strength; // 5 or 1.5 were used in SmartKnob + motor_.get().move(strength); + using namespace std::chrono_literals; + for (uint8_t i = 0; i < 3; i++) { + motor_.get().loop_foc(); + std::this_thread::sleep_for(1ms); + } + motor_.get().move(-strength); + for (uint8_t i = 0; i < 3; i++) { + motor_.get().loop_foc(); + std::this_thread::sleep_for(1ms); + } + motor_.get().move(0); + motor_.get().loop_foc(); + } + +protected: + /// @brief Task which runs the haptic motor + /// @param m Mutex to use for the task + /// @param cv Condition variable to use for the task + /// @return True if the task should be stopped, false otherwise + bool motor_task(std::mutex &m, std::condition_variable &cv) { + auto start = std::chrono::steady_clock::now(); + // if we are not moving, and we're close to the center (but not exactly at + // the center), slowly move back to the center + + // get the current detent config (copy it so we don't hold the mutex for too long) + detail::DetentConfig detent_config; + { + std::unique_lock lk(detent_mutex_); + detent_config = detent_config_; + } + + { + std::unique_lock lk(motor_mutex_); + // manage the haptics (detents, positions, etc.) + // apply motor torque based on angle to the nearest position (strength is + // handled by the PID parameters) + + // The snap point determines the position at which we snap to the next + // detent. If we're close enough to the snap point, we snap to the next + // detent. If we're not close enough to the snap point, we apply a torque + // to move us towards the snap point. + // The snap point is a percentage of the detent width, and is relative to + // the detent center. For example, if the snap point is 1.1, and the detent + // width is 10 degrees, then the snap point is 1.1 * 10 = 11 degrees away + // from the detent center. If the detent center is at 0 degrees, then the + // snap point is at 11 degrees. If the detent center is at 5 degrees, then + // the snap point is at 16 degrees. + + // check our position vs the nearest detent, and update our position if we're + // close enough to snap to another detent + float motor_angle = motor_.get().get_shaft_angle(); + float angle_to_detent_center = motor_angle - current_detent_center_; + + // Handle the snap point - if we're close enough to the snap point, snap + // to the snap point + float snap_point_radians = detent_config.position_width * detent_config.snap_point; + // the bias is the amount of the detent width that we bias the snap point + // by. For example, if the bias is 0.1, and the detent width is 10 degrees, + // then the snap point is 11 degrees away from the detent center. If the + // bias is 0.2, then the snap point is 12 degrees away from the detent + // center. + float bias_radians = detent_config.position_width * detent_config.snap_point_bias; + float snap_point_radians_decrease = + snap_point_radians + (current_position_ <= 0 ? bias_radians : -bias_radians); + float snap_point_radians_increase = + -snap_point_radians + (current_position_ >= 0 ? -bias_radians : bias_radians); + + int32_t num_positions = detent_config.max_position - detent_config.min_position + 1; + // update our position if we're close enough to snap to another detent + // (and we're not at the end of the range) + if (angle_to_detent_center > snap_point_radians_decrease && + (num_positions <= 0 || current_position_ > detent_config.min_position)) { + // we're past the snap point, so snap to the next detent + current_detent_center_ += detent_config.position_width; + angle_to_detent_center -= detent_config.position_width; + current_position_--; + logger_.info("Position: {}", current_position_); + } else if (angle_to_detent_center < snap_point_radians_increase && + (num_positions <= 0 || current_position_ < detent_config.max_position)) { + // we're past the snap point, so snap to the next detent + current_detent_center_ -= detent_config.position_width; + angle_to_detent_center += detent_config.position_width; + current_position_++; + logger_.info("Position: {}", current_position_); + } + + float dead_zone_adjustment = + std::clamp(angle_to_detent_center, + std::max(-detent_config.position_width * detent_config.dead_zone_percent, + -detent_config.dead_zone_abs_max_radians), + std::min(detent_config.position_width * detent_config.dead_zone_percent, + detent_config.dead_zone_abs_max_radians)); + + bool out_of_bounds = + num_positions > 0 && + ((angle_to_detent_center > 0 && current_position_ == detent_config.min_position) || + (angle_to_detent_center < 0 && current_position_ == detent_config.max_position)); + + logger_.debug_rate_limited("\n" + "\tCurrent position: {}\n" + "\tcurrent detent center: {}\n" + "\tmotor angle: {}\n" + "\tangle_to_detent_center: {}\n" + "\tdead_zone_adjustment: {}\n" + "\tout_of_bounds: {}", + current_position_, current_detent_center_, motor_angle, + angle_to_detent_center, dead_zone_adjustment, out_of_bounds); + + // update the PID parameters based on our position + Pid::Config pid_config = detent_pid_.get_config(); + pid_config.kp = out_of_bounds + ? detent_config.end_strength * + kp_factor_ // if we're out of bounds, then we apply end stop force + : detent_config.detent_strength * + kp_factor_; // if we're in bounds, then we apply detent force + // we don't want to clear the PID state when we change the config, so we pass false + detent_pid_.set_config(pid_config, false); + + // Apply motor torque based on our angle to the nearest detent (detent + // strength, etc is handled by the pid parameters) + if (std::abs(motor_.get().get_shaft_velocity()) > 60) { + // Don't apply torque if velocity is too high (helps avoid positive + // feedback loop/runaway) + logger_.info_rate_limited("velocity too high, not applying torque"); + motor_.get().move(0); + } else { + // apply torque based on our angle to the nearest detent + float input = -angle_to_detent_center + dead_zone_adjustment; + // if we're out of bounds, then we apply torque regardless of our + // position + if (!out_of_bounds && detent_config.detent_positions.size() > 0) { + // if there are manually specified detents, then we only apply torque + // if we're in a detent + bool in_detent = false; + for (auto &detent : detent_config.detent_positions) { + if (detent == current_position_) { + in_detent = true; + break; + } + } + // if we're not in a detent, then we don't apply any torque + if (!in_detent) { + input = 0; + } + } + // get the torque from the PID controller + float torque = detent_pid_.update(input); + logger_.debug_rate_limited("angle: {:0.3f}, input: {:0.3f}, torque: {:0.3f}", motor_angle, + input, torque); + // apply the torque to the motor + motor_.get().move(torque); + } // end if std::abs(motor_.get().get_shaft_velocity()) > 60 + motor_.get().loop_foc(); + } // end motor_mutex_ + + // now sleep + { + using namespace std::chrono_literals; + std::unique_lock lk(m); + cv.wait_until(lk, start + 1ms); + } + + // don't want to stop the task + return false; + } + + Pid detent_pid_; ///< PID controller for the detents + float kp_factor_{0}; ///< kp factor for the PID controller + float kd_factor_min_{0}; ///< Minimum kd factor for the PID controller + float kd_factor_max_{0}; ///< Maximum kd factor for the PID controller + std::atomic current_position_{0}; ///< Current position of the motor + std::atomic current_detent_center_{0}; ///< Current center of the detent + std::mutex detent_mutex_; ///< Mutex for accessing the detents + detail::DetentConfig detent_config_; ///< Configuration for the detents + + std::mutex motor_mutex_; ///< Mutex for accessing the motor + std::reference_wrapper motor_; ///< Pointer to the motor to use for haptics + + std::unique_ptr motor_task_; ///< Task which runs the haptic motor + + Logger logger_; ///< Logger for the haptics +}; +} // namespace espp diff --git a/components/bldc_haptics/include/detent_config.hpp b/components/bldc_haptics/include/detent_config.hpp new file mode 100644 index 000000000..3f1cf6a6a --- /dev/null +++ b/components/bldc_haptics/include/detent_config.hpp @@ -0,0 +1,177 @@ +/// @file Defines the detent configuration + +#pragma once + +#include "format.hpp" +#include + +namespace espp::detail { +/// @brief Configuration for the detents +/// @note max_position < min_position indicates no bounds +struct DetentConfig { + float position_width; ///< Width of the positions, in radians + float min_position{0}; ///< Minimum position of motor, there will be an end stop at this position; + ///< There will be (max-min+1) positions between min and max (inclusive). + float max_position{ + 5}; ///< Maximum position of motor, there will be an end stop at this position; There will be + ///< (max-min+1) positions between min and max (inclusive). max < min indicates no bounds + std::vector detent_positions{}; ///< Positions of the detents, an integer value between min + ///< and max position. Optional, if empty / not specified, no + ///< detents will be used. + float detent_strength{1}; ///< Strength of the detents + float end_strength{1}; ///< Strength of the end detents + float snap_point{1.1}; ///< Position of the snap point, in radians, should be >= 0.5 for stability + float snap_point_bias{0}; ///< Bias for the snap point, in radians, should be >= 0 for stability + float dead_zone_percent{0.2f}; ///< Percent of the dead zone to use for the detent + float dead_zone_abs_max_radians{ + M_PI / 180.0f}; ///< Absolute maximum of the dead zone to use for the detent in radians +}; + +/// @brief Equality operator for DetentConfig +/// @param lhs Left hand side of the equality +/// @param rhs Right hand side of the equality +/// @return True if the two DetentConfigs are equal +bool operator==(const DetentConfig &lhs, const DetentConfig &rhs) { + bool vectors_equal = lhs.detent_positions.size() == rhs.detent_positions.size() && + std::equal(lhs.detent_positions.begin(), lhs.detent_positions.end(), + rhs.detent_positions.begin()); + return lhs.position_width == rhs.position_width && lhs.min_position == rhs.min_position && + lhs.max_position == rhs.max_position && vectors_equal && + lhs.detent_strength == rhs.detent_strength && lhs.end_strength == rhs.end_strength && + lhs.snap_point == rhs.snap_point && lhs.snap_point_bias == rhs.snap_point_bias; +} + +/// @brief Unbounded motion, no detents +static const DetentConfig UNBOUNDED_NO_DETENTS = { + .position_width = 10.0 * M_PI / 180.0, + .min_position = 0, + .max_position = -1, // max < min indicates no bounds + .detent_strength = 0, + .end_strength = 1, + .snap_point = 1.1, + .snap_point_bias = 0, +}; + +/// @brief Bounded motion, no detents +static const DetentConfig BOUNDED_NO_DETENTS = { + .position_width = 10.0 * M_PI / 180.0, + .min_position = 0, + .max_position = 10, + .detent_strength = 0, + .end_strength = 1, + .snap_point = 1.1, + .snap_point_bias = 0, +}; + +/// @brief Bounded motion with multiple revolutions, no detents, with end stops +static const DetentConfig MULTI_REV_NO_DETENTS = { + .position_width = 10.0 * M_PI / 180.0, + .min_position = 0, + .max_position = 72, + .detent_strength = 0, + .end_strength = 1, + .snap_point = 1.1, + .snap_point_bias = 0, +}; + +/// @brief On-off with strong detents +static const DetentConfig ON_OFF_STRONG_DETENTS = { + .position_width = 60.0 * M_PI / 180.0, + .min_position = 0, + .max_position = 1, + .detent_strength = 1, + .end_strength = 1, + .snap_point = 0.55, // Note the snap point is slightly past the midpoint (0.5); compare to + // normal detents which use a snap point *past* the next value (i.e. > 1) + .snap_point_bias = 0, +}; + +/// @brief Bounded motion with strong position detents spaced 9 degrees apart +/// (coarse), with end stops +static const DetentConfig COARSE_VALUES_STRONG_DETENTS = { + .position_width = 8.225f * M_PI / 180.0, + .min_position = 0, + .max_position = 31, + .detent_strength = 2, + .end_strength = 1, + .snap_point = 1.1, + .snap_point_bias = 0, +}; + +/// @brief Bounded motion with no detents spaced 1 degree apart (fine), with end +/// stops +static const DetentConfig FINE_VALUES_NO_DETENTS = { + .position_width = 1.0f * M_PI / 180.0, + .min_position = 0, + .max_position = 255, + .detent_strength = 0, + .end_strength = 1, + .snap_point = 1.1, + .snap_point_bias = 0, +}; + +/// @brief Bounded motion with position detents spaced 1 degree apart (fine), +/// with end stops +static const DetentConfig FINE_VALUES_WITH_DETENTS = { + .position_width = 1.0f * M_PI / 180.0, + .min_position = 0, + .max_position = 255, + .detent_strength = 1, + .end_strength = 1, + .snap_point = 1.1, + .snap_point_bias = 0, +}; + +/// @brief Bounded motion with position detents, end stops, and explicit +/// magnetic detents. +static const DetentConfig MAGNETIC_DETENTS = { + .position_width = 7.0 * M_PI / 180.0, + .min_position = 0, + .max_position = 31, + .detent_positions = {2, 10, 21, 22}, + .detent_strength = 2.5, + .end_strength = 1, + .snap_point = 0.7, + .snap_point_bias = 0, +}; + +/// @brief Bounded motion for a return to center rotary encoder with positions +static const DetentConfig RETURN_TO_CENTER_WITH_DETENTS = { + .position_width = 60.0 * M_PI / 180.0, + .min_position = -6, + .max_position = 6, + .detent_strength = 1, + .end_strength = 1, + .snap_point = 0.55, + .snap_point_bias = 0.4, +}; + +} // namespace espp::detail + +// for allowing easy serialization/printing of the +// DetentConfig +template <> struct fmt::formatter { + template constexpr auto parse(ParseContext &ctx) { return ctx.begin(); } + + template + auto format(espp::detail::DetentConfig const &detent_config, FormatContext &ctx) { + return fmt::format_to(ctx.out(), + "DetentConfig:\n" + "\tposition_width: {} radians ({} degrees)\n" + "\tmin_position: {}\n" + "\tmax_position: {}\n" + "\trange of motion: {:.2f} to {:.2f} degrees\n" + "\tdetent_positions: {}\n" + "\tdetent_strength: {}\n" + "\tend_strength: {}\n" + "\tsnap_point: {}\n" + "\tsnap_point_bias: {}", + detent_config.position_width, detent_config.position_width * 180.0 / M_PI, + detent_config.min_position, detent_config.max_position, + detent_config.min_position * detent_config.position_width * 180.0 / M_PI, + detent_config.max_position * detent_config.position_width * 180.0 / M_PI, + detent_config.detent_positions, detent_config.detent_strength, + detent_config.end_strength, detent_config.snap_point, + detent_config.snap_point_bias); + } +}; diff --git a/components/bldc_haptics/include/haptic_config.hpp b/components/bldc_haptics/include/haptic_config.hpp new file mode 100644 index 000000000..80956b8d7 --- /dev/null +++ b/components/bldc_haptics/include/haptic_config.hpp @@ -0,0 +1,12 @@ +#pragma once + +#include + +namespace espp::detail { +/// @brief Configuration for the haptic feedback +struct HapticConfig { + float strength; ///< Strength of the haptic feedback + float frequency; ///< Frequency of the haptic feedback + std::chrono::duration duration; ///< Duration of the haptic feedback +}; +} // namespace espp::detail diff --git a/components/bldc_motor/example/main/bldc_motor_example.cpp b/components/bldc_motor/example/main/bldc_motor_example.cpp index cb365cde2..57c7f0700 100644 --- a/components/bldc_motor/example/main/bldc_motor_example.cpp +++ b/components/bldc_motor/example/main/bldc_motor_example.cpp @@ -6,6 +6,7 @@ #include "bldc_driver.hpp" #include "bldc_motor.hpp" #include "butterworth_filter.hpp" +#include "logger.hpp" #include "lowpass_filter.hpp" #include "mt6701.hpp" #include "task.hpp" @@ -13,20 +14,22 @@ using namespace std::chrono_literals; -#define I2C_NUM (I2C_NUM_1) -#define I2C_SCL_IO (GPIO_NUM_40) -#define I2C_SDA_IO (GPIO_NUM_41) -#define I2C_FREQ_HZ (400 * 1000) -#define I2C_TIMEOUT_MS (10) +// pins for the bldc motor test stand with the TinyS3 +static constexpr auto I2C_NUM = (I2C_NUM_1); +static constexpr auto I2C_SCL_IO = (GPIO_NUM_9); +static constexpr auto I2C_SDA_IO = (GPIO_NUM_8); +static constexpr int I2C_FREQ_HZ = (400 * 1000); +static constexpr int I2C_TIMEOUT_MS = (10); extern "C" void app_main(void) { + espp::Logger logger({.tag = "BLDC Motor example", .level = espp::Logger::Verbosity::DEBUG}); constexpr int num_seconds_to_run = 120; { - fmt::print("Running BLDC Motor (FOC) example for {} seconds!\n", num_seconds_to_run); + logger.info("Running BLDC Motor (FOC) example for {} seconds!", num_seconds_to_run); // make the I2C that we'll use to communicate with the mt6701 (magnetic encoder) i2c_config_t i2c_cfg; - fmt::print("initializing i2c driver...\n"); + logger.info("initializing i2c driver..."); memset(&i2c_cfg, 0, sizeof(i2c_cfg)); i2c_cfg.sda_io_num = I2C_SDA_IO; i2c_cfg.scl_io_num = I2C_SCL_IO; @@ -36,10 +39,10 @@ extern "C" void app_main(void) { i2c_cfg.master.clk_speed = I2C_FREQ_HZ; auto err = i2c_param_config(I2C_NUM, &i2c_cfg); if (err != ESP_OK) - printf("config i2c failed\n"); + logger.error("config i2c failed"); err = i2c_driver_install(I2C_NUM, I2C_MODE_MASTER, 0, 0, 0); if (err != ESP_OK) - printf("install i2c driver failed\n"); + logger.error("install i2c driver failed"); // make some lambda functions we'll use to read/write to the mt6701 auto mt6701_write = [](uint8_t dev_addr, uint8_t *data, size_t data_len) { i2c_master_write_to_device(I2C_NUM, dev_addr, data, data_len, @@ -54,11 +57,10 @@ extern "C" void app_main(void) { // make the velocity filter static constexpr float core_update_period = 0.001f; // seconds static constexpr float filter_cutoff_hz = 4.0f; - espp::ButterworthFilter<2, espp::BiquadFilterDf2> bwfilter({ - .normalized_cutoff_frequency = 2.0f * filter_cutoff_hz * 0.01 // core_update_period - }); + espp::ButterworthFilter<2, espp::BiquadFilterDf2> bwfilter( + {.normalized_cutoff_frequency = 2.0f * filter_cutoff_hz * core_update_period}); espp::LowpassFilter lpfilter( - {.normalized_cutoff_frequency = 2.0f * filter_cutoff_hz * 0.01, // core_update_period, + {.normalized_cutoff_frequency = 2.0f * filter_cutoff_hz * core_update_period, .q_factor = 1.0f}); auto filter_fn = [&bwfilter, &lpfilter](float raw) -> float { // return bwfilter.update(raw); @@ -85,15 +87,18 @@ extern "C" void app_main(void) { // now make the bldc driver std::shared_ptr driver = std::make_shared(espp::BldcDriver::Config{ - .gpio_a_h = 9, - .gpio_a_l = 43, - .gpio_b_h = 44, - .gpio_b_l = 14, - .gpio_c_h = 38, - .gpio_c_l = 39, - .gpio_enable = 42, // connected to the VIO/~Stdby pin of TMC6300-BOB + // this pinout is configured for the TinyS3 connected to the + // TMC6300-BOB in the BLDC Motor Test Stand + .gpio_a_h = 1, + .gpio_a_l = 2, + .gpio_b_h = 3, + .gpio_b_l = 4, + .gpio_c_h = 5, + .gpio_c_l = 21, + .gpio_enable = 34, // connected to the VIO/~Stdby pin of TMC6300-BOB + .gpio_fault = 36, // connected to the nFAULT pin of TMC6300-BOB .power_supply_voltage = 5.0f, - .limit_voltage = 3.5f, + .limit_voltage = 5.0f, .log_level = espp::Logger::Verbosity::WARN}); // now make the bldc motor @@ -106,11 +111,11 @@ extern "C" void app_main(void) { 5.0f, // tested by running velocity_openloop and seeing if the veloicty is ~correct .kv_rating = 320, // tested by running velocity_openloop and seeing if the velocity is ~correct - .current_limit = 1.0f, // Amps - .zero_electric_offset = 1.1784807f, // gotten from previously running without providing this - // and it will be logged. - .sensor_direction = BldcMotor::Direction::CLOCKWISE, - .foc_type = BldcMotor::FocType::SPACE_VECTOR_PWM, + .current_limit = 1.0f, // Amps + .zero_electric_offset = 2.3914752, // gotten from previously running without providing this + // and it will be logged. + .sensor_direction = espp::detail::SensorDirection::COUNTER_CLOCKWISE, + .foc_type = espp::detail::FocType::SPACE_VECTOR_PWM, .driver = driver, .sensor = mt6701, .velocity_pid_config = @@ -135,10 +140,10 @@ extern "C" void app_main(void) { }, .log_level = espp::Logger::Verbosity::INFO}); - // static auto motion_control_type = BldcMotor::MotionControlType::VELOCITY; - static constexpr auto motion_control_type = BldcMotor::MotionControlType::ANGLE; - // static auto motion_control_type = BldcMotor::MotionControlType::VELOCITY_OPENLOOP; - // static auto motion_control_type = BldcMotor::MotionControlType::ANGLE_OPENLOOP; + static const auto motion_control_type = espp::detail::MotionControlType::VELOCITY; + // static const auto motion_control_type = espp::detail::MotionControlType::ANGLE; + // static const auto motion_control_type = espp::detail::MotionControlType::VELOCITY_OPENLOOP; + // static const auto motion_control_type = espp::detail::MotionControlType::ANGLE_OPENLOOP; // Set the motion control type and create a target for the motor (will be // updated in the target update task below) @@ -148,15 +153,15 @@ extern "C" void app_main(void) { auto motor_task_fn = [&motor, &target](std::mutex &m, std::condition_variable &cv) { static auto delay = std::chrono::duration(core_update_period); auto start = std::chrono::high_resolution_clock::now(); - // command the motor - motor.loop_foc(); - if (motion_control_type == BldcMotor::MotionControlType::VELOCITY || - motion_control_type == BldcMotor::MotionControlType::VELOCITY_OPENLOOP) { + if (motion_control_type == espp::detail::MotionControlType::VELOCITY || + motion_control_type == espp::detail::MotionControlType::VELOCITY_OPENLOOP) { // if it's a velocity setpoint, convert it from RPM to rad/s motor.move(target * espp::RPM_TO_RADS); } else { motor.move(target); } + // command the motor + motor.loop_foc(); // NOTE: sleeping in this way allows the sleep to exit early when the // task is being stopped / destroyed { @@ -178,18 +183,18 @@ extern "C" void app_main(void) { // Configure the target enum class IncrementDirection { DOWN = -1, HOLD = 0, UP = 1 }; static IncrementDirection increment_direction = IncrementDirection::UP; - static constexpr bool is_angle = - motion_control_type == BldcMotor::MotionControlType::ANGLE || - motion_control_type == BldcMotor::MotionControlType::ANGLE_OPENLOOP; - static constexpr float max_target = is_angle ? (2.0f * M_PI) : 200.0f; - static constexpr float target_delta = is_angle ? (M_PI / 4.0f) : (50.0f * core_update_period); + static const bool is_angle = + motion_control_type == espp::detail::MotionControlType::ANGLE || + motion_control_type == espp::detail::MotionControlType::ANGLE_OPENLOOP; + static const float max_target = is_angle ? (2.0f * M_PI) : 200.0f; + static const float target_delta = is_angle ? (M_PI / 4.0f) : (50.0f * core_update_period); switch (motion_control_type) { - case BldcMotor::MotionControlType::VELOCITY: - case BldcMotor::MotionControlType::VELOCITY_OPENLOOP: + case espp::detail::MotionControlType::VELOCITY: + case espp::detail::MotionControlType::VELOCITY_OPENLOOP: target = 50.0f; break; - case BldcMotor::MotionControlType::ANGLE: - case BldcMotor::MotionControlType::ANGLE_OPENLOOP: + case espp::detail::MotionControlType::ANGLE: + case espp::detail::MotionControlType::ANGLE_OPENLOOP: target = M_PI; // 180 degrees (whereever that is...) break; default: @@ -232,17 +237,16 @@ extern "C" void app_main(void) { // and finally, make the task to periodically poll the mt6701 and print the // state. NOTE: the Mt6701 runs its own task to maintain state, so we're // just polling the current state. - auto task_fn = [&mt6701, &target, &lpfilter](std::mutex &m, std::condition_variable &cv) { + auto task_fn = [&motor, &target](std::mutex &m, std::condition_variable &cv) { static auto start = std::chrono::high_resolution_clock::now(); auto now = std::chrono::high_resolution_clock::now(); auto seconds = std::chrono::duration(now - start).count(); - auto count = mt6701->get_count(); - auto radians = mt6701->get_radians(); - auto degrees = mt6701->get_degrees(); - auto rpm = mt6701->get_rpm(); + auto radians = motor.get_shaft_angle(); + auto degrees = radians * 180.0f / M_PI; + auto rpm = motor.get_shaft_velocity() * espp::RADS_TO_RPM; auto _target = target.load(); - fmt::print("{:.3f}, {}, {:.3f}, {:.3f}, {:.3f}, {:.3f}\n", seconds, count, radians, degrees, - _target, lpfilter(rpm)); + fmt::print("{:.3f}, {:.3f}, {:.3f}, {:.3f}, {:.3f}\n", seconds, radians, degrees, _target, + rpm); // NOTE: sleeping in this way allows the sleep to exit early when the // task is being stopped / destroyed { @@ -256,30 +260,36 @@ extern "C" void app_main(void) { .callback = task_fn, .stack_size_bytes = 5 * 1024, .log_level = espp::Logger::Verbosity::WARN}); - if (motion_control_type == BldcMotor::MotionControlType::VELOCITY || - motion_control_type == BldcMotor::MotionControlType::VELOCITY_OPENLOOP) { + if (motion_control_type == espp::detail::MotionControlType::VELOCITY || + motion_control_type == espp::detail::MotionControlType::VELOCITY_OPENLOOP) { // if it's a velocity setpoint then target is RPM - fmt::print("%time(s), count, radians, degrees, target velocity (rpm), actual speed (rpm)\n"); + fmt::print("%time(s), radians, degrees, target velocity (rpm), actual speed (rpm)\n"); } else { // if it's an angle setpoint then target is angle (radians) - fmt::print("%time(s), count, radians, degrees, target angle (radians), actual speed (rpm)\n"); + fmt::print("%time(s), radians, degrees, target angle (radians), actual speed (rpm)\n"); } task.start(); static auto start = std::chrono::high_resolution_clock::now(); - auto now = std::chrono::high_resolution_clock::now(); - auto seconds = std::chrono::duration(now - start).count(); - while (seconds < num_seconds_to_run) { - now = std::chrono::high_resolution_clock::now(); - seconds = std::chrono::duration(now - start).count(); - fmt::print("[TM]{}\n", espp::TaskMonitor::get_latest_info()); + while (true) { + // check if the driver is faulted + if (driver->is_faulted()) { + logger.error("Driver faulted!"); + break; + } + auto now = std::chrono::high_resolution_clock::now(); + auto seconds = std::chrono::duration(now - start).count(); + if (seconds > num_seconds_to_run) { + logger.info("Test time passed, stopping..."); + break; + } std::this_thread::sleep_for(500ms); } } // now clean up the i2c driver i2c_driver_delete(I2C_NUM); - fmt::print("BLDC Motor (FOC) example complete!\n"); + logger.info("BLDC Motor (FOC) example complete!"); while (true) { std::this_thread::sleep_for(1s); diff --git a/components/bldc_motor/example/sdkconfig.defaults b/components/bldc_motor/example/sdkconfig.defaults index 585e170f5..253c0a196 100644 --- a/components/bldc_motor/example/sdkconfig.defaults +++ b/components/bldc_motor/example/sdkconfig.defaults @@ -9,8 +9,8 @@ CONFIG_COMPILER_OPTIMIZATION_PERF=y CONFIG_FREERTOS_HZ=1000 -CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y -CONFIG_ESPTOOLPY_FLASHSIZE="16MB" +CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y +CONFIG_ESPTOOLPY_FLASHSIZE="8MB" # ESP32-specific # diff --git a/components/bldc_motor/include/bldc_motor.hpp b/components/bldc_motor/include/bldc_motor.hpp index 19124aad6..5c6461d04 100644 --- a/components/bldc_motor/include/bldc_motor.hpp +++ b/components/bldc_motor/include/bldc_motor.hpp @@ -7,12 +7,14 @@ #include "pid.hpp" #include "task.hpp" +#include "bldc_types.hpp" #include "foc_utils.hpp" +#include "sensor_direction.hpp" namespace espp { /** - * @brief Concept defining the required interfaces for the Driver. + * @brief Concept defining the required interfaces for the Driver for a BLDC Motor. */ template concept DriverConcept = requires { @@ -24,7 +26,7 @@ concept DriverConcept = requires { }; /** - * @brief Concept defining the required interfacese for the Sensor. + * @brief Concept defining the required interfaces for a Sensor on a BLDC Motor. */ template concept SensorConcept = requires { @@ -35,7 +37,7 @@ concept SensorConcept = requires { }; /** - * @brief Concept defining the required interfacese for the Current Sensor. + * @brief Concept defining the required interfaces for a Current Sensor on a BLDC Motor. */ template concept CurrentSensorConcept = requires { @@ -59,54 +61,12 @@ struct DummyCurrentSense { * object/type and optionally a current sensor object / type. * @note This is a port (with some modifications) of the excellent work by * SimpleFOC - https://simplefoc.com + * @section bldc_motor_usage Example Usage + * @snippet bldc_motor_example.cpp bldc_motor example */ template class BldcMotor { public: - /** - * @brief Sensor Direction Configuration - */ - enum class Direction { - CLOCKWISE = 1, /**< The sensor is mounted clockwise (so the positive phase direction leads to - positive angle increase). */ - COUNTER_CLOCKWISE = -1, /**< The sensor is mounted counter-clockwise (so the positive phase - direction leads to negative angle increase). */ - UNKNOWN = 0 /**< The direction is unknown. */ - }; - - /** - * @brief The type of control loop the motor runs. - */ - enum class MotionControlType { - TORQUE, /**< Torque-control (providing constant torque with current feedback). */ - VELOCITY, /**< Velocity closed-loop control, using speed feedback from the sensor. */ - ANGLE, /**< Angle closed-loop control, using angle feedback from the sensor. */ - VELOCITY_OPENLOOP, /**< Velocity open-loop control, without feedback. */ - ANGLE_OPENLOOP /**< Angle open-loop control, without feedback. */ - }; - - /** - * @brief The type of torque control to provide. - * @note VOLTAGE is the only one supported right now, since the other two - * require current sense. - */ - enum class TorqueControlType { - VOLTAGE, /**< Torque control using voltage */ - DC_CURRENT, /**< Torque control using DC current (one current magnitude) */ - FOC_CURRENT /**< Torque control using DQ currents */ - }; - - /** - * @brief How the voltages / pwms are calculated based on the magnitude and - * phase of the drive vector. - */ - enum class FocType { - SINE_PWM, /**< Sinusoidal PWM modulation */ - SPACE_VECTOR_PWM, /**< Space Vector modulation */ - TRAPEZOID_120, - TRAPEZOID_150 - }; - /** * @brief Filter the raw input sample and return it. * @param raw Most recent raw sample measured. @@ -121,15 +81,17 @@ class BldcMotor { size_t num_pole_pairs; /**< Number of pole pairs in the motor. */ float phase_resistance; /**< Motor phase resistance (ohms). */ float kv_rating; /**< Motor KV rating (1/K_bemf) - rpm/V */ + float phase_inductance{0}; /**< Motor phase inductance (Henries). */ float current_limit{1.0f}; /**< Current limit (Amps) for the controller. */ float velocity_limit{1000.0f}; /**< Velocity limit (RPM) for the controller. */ float zero_electric_offset{0.0f}; - Direction sensor_direction{Direction::CLOCKWISE}; - FocType foc_type{ - FocType::SPACE_VECTOR_PWM}; /**< How the voltage for the phases should be calculated. */ - TorqueControlType torque_controller{TorqueControlType::VOLTAGE}; /**< Torque controller type. */ - std::shared_ptr driver; /**< Driver for low-level setting of phase PWMs. */ - std::shared_ptr sensor; /**< Sensor for measuring position / speed. */ + detail::SensorDirection sensor_direction{detail::SensorDirection::CLOCKWISE}; + detail::FocType foc_type{detail::FocType::SPACE_VECTOR_PWM}; /**< How the voltage for the phases + should be calculated. */ + detail::TorqueControlType torque_controller{ + detail::TorqueControlType::VOLTAGE}; /**< Torque controller type. */ + std::shared_ptr driver; /**< Driver for low-level setting of phase PWMs. */ + std::shared_ptr sensor; /**< Sensor for measuring position / speed. */ std::shared_ptr current_sense{ nullptr}; /**< Sensor for measuring current through the motor. */ Pid::Config current_pid_config{ @@ -169,10 +131,11 @@ class BldcMotor { */ BldcMotor(const Config &config) : num_pole_pairs_(config.num_pole_pairs), phase_resistance_(config.phase_resistance), - kv_rating_(config.kv_rating), current_limit_(config.current_limit), - velocity_limit_(config.velocity_limit), sensor_direction_(config.sensor_direction), - foc_type_(config.foc_type), torque_control_type_(config.torque_controller), - driver_(config.driver), sensor_(config.sensor), current_sense_(config.current_sense), + phase_inductance_(config.phase_inductance), kv_rating_(config.kv_rating * _SQRT2), + current_limit_(config.current_limit), velocity_limit_(config.velocity_limit), + sensor_direction_(config.sensor_direction), foc_type_(config.foc_type), + torque_control_type_(config.torque_controller), driver_(config.driver), + sensor_(config.sensor), current_sense_(config.current_sense), pid_current_q_(config.current_pid_config), pid_current_d_(config.current_pid_config), pid_velocity_(config.current_pid_config), pid_angle_(config.current_pid_config), q_current_filter_(config.q_current_filter), d_current_filter_(config.d_current_filter), @@ -190,7 +153,7 @@ class BldcMotor { pid_current_d_.change_gains(current_pid_config); auto velocity_pid_config = config.velocity_pid_config; - if (phase_resistance_ > 0 || torque_control_type_ != TorqueControlType::VOLTAGE) { + if (phase_resistance_ > 0 || torque_control_type_ != detail::TorqueControlType::VOLTAGE) { velocity_pid_config.output_min = -current_limit_; velocity_pid_config.output_max = current_limit_; } else { @@ -236,7 +199,7 @@ class BldcMotor { * @brief Update the motoion control scheme the motor control loop uses. * @param motion_control_type New motion control to use. */ - void set_motion_control_type(MotionControlType motion_control_type) { + void set_motion_control_type(detail::MotionControlType motion_control_type) { motion_control_type_ = motion_control_type; } @@ -253,7 +216,7 @@ class BldcMotor { float _ca, _sa; switch (foc_type_) { - case FocType::TRAPEZOID_120: + case detail::FocType::TRAPEZOID_120: // see https://www.youtube.com/watch?v=InzXA7mWBWE Slide 5 static int trap_120_map[6][3] = { {_HIGH_IMPEDANCE, 1, -1}, @@ -290,7 +253,7 @@ class BldcMotor { } break; - case FocType::TRAPEZOID_150: + case detail::FocType::TRAPEZOID_150: // see https://www.youtube.com/watch?v=InzXA7mWBWE Slide 8 static int trap_150_map[12][3] = { {_HIGH_IMPEDANCE, 1, -1}, @@ -333,7 +296,7 @@ class BldcMotor { } break; - case FocType::SINE_PWM: + case detail::FocType::SINE_PWM: // Sinusoidal PWM modulation // Inverse Park + Clarke transformation @@ -362,7 +325,7 @@ class BldcMotor { break; - case FocType::SPACE_VECTOR_PWM: + case detail::FocType::SPACE_VECTOR_PWM: // Nice video explaining the SpaceVectorModulation (SVPWM) algorithm // https://www.youtube.com/watch?v=QMSWUMEAejg @@ -492,8 +455,8 @@ class BldcMotor { /** * @brief Main FOC loop for implementing the torque control, based on the - * configured TorqueControlType. - * @note Only TorqueControlType::VOLTAGE is supported right now, because the + * configured detail::TorqueControlType. + * @note Only detail::TorqueControlType::VOLTAGE is supported right now, because the * other types require current sense. */ void loop_foc() { @@ -502,8 +465,8 @@ class BldcMotor { } // if open-loop do nothing - if (motion_control_type_ == MotionControlType::ANGLE_OPENLOOP || - motion_control_type_ == MotionControlType::VELOCITY_OPENLOOP) { + if (motion_control_type_ == detail::MotionControlType::ANGLE_OPENLOOP || + motion_control_type_ == detail::MotionControlType::VELOCITY_OPENLOOP) { return; } @@ -511,10 +474,10 @@ class BldcMotor { // which is in range 0-2PI electrical_angle_ = get_electrical_angle(); switch (torque_control_type_) { - case TorqueControlType::VOLTAGE: + case detail::TorqueControlType::VOLTAGE: // no need to do anything really break; - case TorqueControlType::DC_CURRENT: + case detail::TorqueControlType::DC_CURRENT: if (!current_sense_) return; // read overall current magnitude @@ -525,7 +488,7 @@ class BldcMotor { voltage_.q = pid_current_q_(target_current_ - current_.q); voltage_.d = 0; break; - case TorqueControlType::FOC_CURRENT: + case detail::TorqueControlType::FOC_CURRENT: if (!current_sense_) return; // read dq currents @@ -548,12 +511,12 @@ class BldcMotor { /** * @brief Main motion control loop implementing the closed-loop and * open-loop angle & velocity control. - * @param new_target The new target for the configured MotionControlType. - * @note Units are based on the MotionControlType; radians if it's - * MotionControlType::ANGLE or MotionControlType::ANGLE_OPENLOOP, - * radians/second if it's MotionControlType::VELOCITY or - * MotionControlType::VELOCITY_OPENLOOP, Nm if it's - * MotionControlType::TORQUE. + * @param new_target The new target for the configured detail::MotionControlType. + * @note Units are based on the detail::MotionControlType; radians if it's + * detail::MotionControlType::ANGLE or detail::MotionControlType::ANGLE_OPENLOOP, + * radians/second if it's detail::MotionControlType::VELOCITY or + * detail::MotionControlType::VELOCITY_OPENLOOP, Nm if it's + * detail::MotionControlType::TORQUE. */ void move(float new_target) { // if disabled do nothing @@ -569,8 +532,8 @@ class BldcMotor { // angle is a precision issue, and the angle-LPF is a // problem when switching to a 2-component // representation. - if (motion_control_type_ != MotionControlType::ANGLE_OPENLOOP && - motion_control_type_ != MotionControlType::VELOCITY_OPENLOOP) { + if (motion_control_type_ != detail::MotionControlType::ANGLE_OPENLOOP && + motion_control_type_ != detail::MotionControlType::VELOCITY_OPENLOOP) { shaft_angle_ = get_shaft_angle(); } @@ -580,8 +543,7 @@ class BldcMotor { shaft_velocity_ = get_shaft_velocity(); // set internal target variable - if (new_target) - target_ = new_target; + target_ = new_target; // calculate the back-emf voltage if KV_rating available U_bemf = vel*(1/KV) if (kv_rating_) @@ -592,8 +554,8 @@ class BldcMotor { // upgrade the current based voltage limit switch (motion_control_type_) { - case MotionControlType::TORQUE: - if (torque_control_type_ == TorqueControlType::VOLTAGE) { // if voltage torque control + case detail::MotionControlType::TORQUE: + if (torque_control_type_ == detail::TorqueControlType::VOLTAGE) { // if voltage torque control if (!phase_resistance_) voltage_.q = target_; else @@ -604,7 +566,7 @@ class BldcMotor { target_current_ = target_; // if current/foc_current torque control } break; - case MotionControlType::ANGLE: + case detail::MotionControlType::ANGLE: // TODO sensor precision: this calculation is not numerically precise. The // target value cannot express precise positions // when the angles are large. This results in not @@ -621,41 +583,51 @@ class BldcMotor { target_current_ = pid_velocity_(target_shaft_velocity_ - shaft_velocity_); // if voltage torque control // if torque controlled through voltage - if (torque_control_type_ == TorqueControlType::VOLTAGE) { + if (torque_control_type_ == detail::TorqueControlType::VOLTAGE) { // use voltage if phase-resistance not provided if (!phase_resistance_) voltage_.q = target_current_; else voltage_.q = std::clamp(target_current_ * phase_resistance_ + bemf_voltage_, -voltage_limit_, voltage_limit_); - voltage_.d = 0; + if (!phase_inductance_) + voltage_.d = 0; + else + voltage_.d = + std::clamp(-target_current_ * num_pole_pairs_ * phase_inductance_ * shaft_velocity_, + -voltage_limit_, voltage_limit_); } break; - case MotionControlType::VELOCITY: + case detail::MotionControlType::VELOCITY: // velocity set point - sensor precision: this calculation is numerically precise. target_shaft_velocity_ = target_; // calculate the torque command target_current_ = pid_velocity_(target_shaft_velocity_ - shaft_velocity_); // if current/foc_current torque control // if torque controlled through voltage control - if (torque_control_type_ == TorqueControlType::VOLTAGE) { + if (torque_control_type_ == detail::TorqueControlType::VOLTAGE) { // use voltage if phase-resistance not provided if (!phase_resistance_) voltage_.q = target_current_; else voltage_.q = std::clamp(target_current_ * phase_resistance_ + bemf_voltage_, -voltage_limit_, voltage_limit_); - voltage_.d = 0; + if (!phase_inductance_) + voltage_.d = 0; + else + voltage_.d = + std::clamp(-target_current_ * num_pole_pairs_ * phase_inductance_ * shaft_velocity_, + -voltage_limit_, voltage_limit_); } break; - case MotionControlType::VELOCITY_OPENLOOP: + case detail::MotionControlType::VELOCITY_OPENLOOP: // velocity control in open loop - sensor precision: this calculation is numerically precise. target_shaft_velocity_ = target_; voltage_.q = velocity_openloop(target_shaft_velocity_); // returns the voltage that is set to the motor voltage_.d = 0; break; - case MotionControlType::ANGLE_OPENLOOP: + case detail::MotionControlType::ANGLE_OPENLOOP: // angle control in open loop - // TODO sensor precision: this calculation NOT numerically precise, and // subject to the same problems in small set-point @@ -676,7 +648,8 @@ class BldcMotor { status_ = Status::UNCALIBRATED; } - void init_foc(float zero_electric_offset = 0, Direction sensor_direction = Direction::CLOCKWISE) { + void init_foc(float zero_electric_offset = 0, + detail::SensorDirection sensor_direction = detail::SensorDirection::CLOCKWISE) { logger_.info("Init FOC"); status_ = Status::CALIBRATING; // align motor with sensor - necessary for encoders @@ -711,7 +684,7 @@ class BldcMotor { return exit_flag; // if unknown natural direction - if (sensor_direction_ == Direction::UNKNOWN) { + if (sensor_direction_ == detail::SensorDirection::UNKNOWN) { // find natural direction // move one electrical revolution forward @@ -737,10 +710,10 @@ class BldcMotor { return 0; // failed calibration } else if (mid_angle < end_angle) { logger_.debug("sensor_direction==CCW"); - sensor_direction_ = Direction::COUNTER_CLOCKWISE; + sensor_direction_ = detail::SensorDirection::COUNTER_CLOCKWISE; } else { logger_.debug("sensor_direction==CW"); - sensor_direction_ = Direction::CLOCKWISE; + sensor_direction_ = detail::SensorDirection::CLOCKWISE; } // check pole pair number float moved = std::abs(mid_angle - end_angle); @@ -826,7 +799,7 @@ class BldcMotor { auto now = std::chrono::high_resolution_clock::now(); // calculate the sample time from last call float Ts = std::chrono::duration(now - openloop_timestamp).count(); - // quick fix for strange cases (micros overflow + timestamp not defined) + // ensure that the sample time is not too small or too big if (Ts <= 0 || Ts > 0.5f) Ts = 1e-3f; // save timestamp for next call @@ -868,10 +841,9 @@ class BldcMotor { // calculate the necessary angle to move from current position towards target angle // with maximal velocity (velocity_limit_) - // TODO sensor precision: this calculation is not numerically precise. The angle can grow to the - // point - // where small position changes are no longer captured by the precision - // of floats when the total position is large. + // TODO sensor precision: this calculation is not numerically precise. The + // angle can grow to the point where small position changes are no longer + // captured by the precision of floats when the total position is large. if (abs(target_shaft_angle_ - shaft_angle_) > abs(velocity_limit_ * Ts)) { shaft_angle_ += sgn(target_shaft_angle_ - shaft_angle_) * abs(velocity_limit_) * Ts; shaft_velocity_ = velocity_limit_; @@ -926,6 +898,7 @@ class BldcMotor { // motor physical parameters int num_pole_pairs_; float phase_resistance_; + float phase_inductance_; float kv_rating_; // limiting variables @@ -936,11 +909,11 @@ class BldcMotor { // sensor related variables float sensor_offset_{0}; float zero_electrical_angle_{0}; - Direction sensor_direction_{Direction::CLOCKWISE}; + detail::SensorDirection sensor_direction_{detail::SensorDirection::CLOCKWISE}; - FocType foc_type_{FocType::SPACE_VECTOR_PWM}; - MotionControlType motion_control_type_{MotionControlType::VELOCITY_OPENLOOP}; - TorqueControlType torque_control_type_{TorqueControlType::VOLTAGE}; + detail::FocType foc_type_{detail::FocType::SPACE_VECTOR_PWM}; + detail::MotionControlType motion_control_type_{detail::MotionControlType::VELOCITY_OPENLOOP}; + detail::TorqueControlType torque_control_type_{detail::TorqueControlType::VOLTAGE}; bool modulation_centered_{ true}; //!< true: centered modulation around driver limit /2; false: pulled to 0 diff --git a/components/bldc_motor/include/bldc_types.hpp b/components/bldc_motor/include/bldc_types.hpp new file mode 100644 index 000000000..38bfddc3c --- /dev/null +++ b/components/bldc_motor/include/bldc_types.hpp @@ -0,0 +1,39 @@ +/// @file bldc_types.hpp + +#pragma once + +/// @namespace espp +/// @brief espp namespace +namespace espp { +/// @namespace espp::detail +/// @brief detail namespace +namespace detail { + +/// \brief The type of control loop the motor runs. +enum class MotionControlType { + TORQUE, //!< Torque-control (providing constant torque with current feedback). + VELOCITY, //!< Velocity closed-loop control, using speed feedback from the sensor. + ANGLE, //!< Angle closed-loop control, using angle feedback from the sensor. + VELOCITY_OPENLOOP, //!< Velocity open-loop control, without feedback. + ANGLE_OPENLOOP //!< Angle open-loop control, without feedback. +}; + +/// \brief How the torque is controlled. +/// \note VOLTAGE is the only one supported right now, since the other two +/// require current sense. +enum class TorqueControlType { + VOLTAGE, //!< Torque control using voltage + DC_CURRENT, //!< Torque control using DC current (one current magnitude) + FOC_CURRENT //!< Torque control using DQ currents +}; + +/// \brief How the voltages / pwms are calculated based on the magnitude and +/// phase of the drive vector. +enum class FocType { + SINE_PWM, //!< Sinusoidal PWM modulation + SPACE_VECTOR_PWM, //!< Space Vector modulation + TRAPEZOID_120, //!< 120 degree trapezoidal modulation + TRAPEZOID_150 //!< 150 degree trapezoidal modulation +}; +} // namespace detail +} // namespace espp diff --git a/components/bldc_motor/include/foc_utils.hpp b/components/bldc_motor/include/foc_utils.hpp index 265ca1313..103726a1b 100644 --- a/components/bldc_motor/include/foc_utils.hpp +++ b/components/bldc_motor/include/foc_utils.hpp @@ -8,6 +8,11 @@ namespace espp { */ static constexpr float RPM_TO_RADS = (2.0f * M_PI) / 60.0f; +/** + * @brief Conversion factor to go from radians/second to rotations/minute. + */ +static constexpr float RADS_TO_RPM = 60.0f / (2.0f * M_PI); + static constexpr float _2_SQRT3 = 1.15470053838f; static constexpr float _SQRT3 = 1.73205080757f; static constexpr float _1_SQRT3 = 0.57735026919f; diff --git a/components/bldc_motor/include/sensor_direction.hpp b/components/bldc_motor/include/sensor_direction.hpp new file mode 100644 index 000000000..badb71784 --- /dev/null +++ b/components/bldc_motor/include/sensor_direction.hpp @@ -0,0 +1,16 @@ +#pragma once + +/// @brief espp namespace +namespace espp { +/// @brief espp::detail namespace +namespace detail { +/// @brief Sensor Direction Configuration +enum class SensorDirection { + CLOCKWISE = 1, //!< The sensor is mounted clockwise (so the positive phase direction leads to + //!< positive angle increase). + COUNTER_CLOCKWISE = -1, //!< The sensor is mounted counter-clockwise (so the positive phase + //!< direction leads to negative angle increase). + UNKNOWN = 0 //!< The direction is unknown. +}; +} // namespace detail +} // namespace espp diff --git a/components/ftp/include/ftp_client_session.hpp b/components/ftp/include/ftp_client_session.hpp index c3fd72287..e9a0e0e14 100644 --- a/components/ftp/include/ftp_client_session.hpp +++ b/components/ftp/include/ftp_client_session.hpp @@ -212,8 +212,7 @@ class FtpClientSession { /// \details This function sends data to the client. This function uses the /// data socket and not the control socket, and handles both active and /// passive mode. - /// \param buffer The buffer containing the data to send. - /// \param size The size of the buffer. + /// \param data The data to send. /// \return True if the data was sent successfully, false otherwise. bool send_data(std::string_view data) { if (is_passive_data_connection_) { @@ -588,7 +587,7 @@ class FtpClientSession { message += " RNTO\r\n"; message += " NOOP\r\n"; message += " QUIT\r\n"; - bool success = send_response(211, message); + bool success = send_response(211, message, true); return success && send_response(211, "End"); } diff --git a/components/math/include/fast_math.hpp b/components/math/include/fast_math.hpp index 13b325f65..05e33c077 100644 --- a/components/math/include/fast_math.hpp +++ b/components/math/include/fast_math.hpp @@ -70,7 +70,7 @@ float fast_ln(float x) { // bx = * reinterpret_cast (&x); uint32_t ex = bx >> 23; signed int t = (signed int)ex - (signed int)127; - uint32_t s = (t < 0) ? (-t) : t; + [[maybe_unused]] uint32_t s = (t < 0) ? (-t) : t; bx = 1065353216 | (bx & 8388607); // x = * reinterpret_cast(&bx); memcpy(&x, &bx, sizeof(x)); diff --git a/components/pid/include/pid.hpp b/components/pid/include/pid.hpp index b20af9e1b..b42584df8 100644 --- a/components/pid/include/pid.hpp +++ b/components/pid/include/pid.hpp @@ -50,12 +50,23 @@ class Pid { /** * @brief Change the gains and other configuration for the PID controller. * @param config Configuration struct with new gains and sampling time. + * @param reset_state Reset / clear the PID controller state. */ - void change_gains(const Config &config) { + void change_gains(const Config &config, bool reset_state = true) { std::lock_guard lk(mutex_); logger_.info("Updated config: {}", config); config_ = config; - clear(); + if (reset_state) + clear(); // clear the state + } + + /** + * @brief Change the gains and other configuration for the PID controller. + * @param config Configuration struct with new gains and sampling time. + * @param reset_state Reset / clear the PID controller state. + */ + void set_config(const Config &config, bool reset_state = true) { + change_gains(config, reset_state); } /** diff --git a/components/rtsp/include/rtsp_session.hpp b/components/rtsp/include/rtsp_session.hpp index 7aad99826..af559beed 100644 --- a/components/rtsp/include/rtsp_session.hpp +++ b/components/rtsp/include/rtsp_session.hpp @@ -8,504 +8,501 @@ #include "esp_random.h" #include "logger.hpp" +#include "task.hpp" #include "tcp_socket.hpp" #include "udp_socket.hpp" -#include "task.hpp" -#include "rtp_packet.hpp" #include "rtcp_packet.hpp" +#include "rtp_packet.hpp" namespace espp { - /// Class that reepresents an RTSP session, which is uniquely identified by a - /// session id and sends frame data over RTP and RTCP to the client - class RtspSession { - public: - /// Configuration for the RTSP session - struct Config { - std::string server_address; ///< The address of the server - std::string rtsp_path; ///< The RTSP path of the session - Logger::Verbosity log_level = Logger::Verbosity::WARN; ///< The log level of the session - }; - - /// @brief Construct a new RtspSession object - /// @param control_socket The control socket of the session - /// @param config The configuration of the session - explicit RtspSession(std::unique_ptr control_socket, const Config& config) - : control_socket_(std::move(control_socket)) - , rtp_socket_({.log_level = Logger::Verbosity::WARN}) - , rtcp_socket_({.log_level = Logger::Verbosity::WARN}) - , session_id_(generate_session_id()) - , server_address_(config.server_address) - , rtsp_path_(config.rtsp_path) - , client_address_(control_socket_->get_remote_info().address) - , logger_({.tag="RtspSession " + std::to_string(session_id_), .level=config.log_level}) { - // start the session task to handle RTSP commands - using namespace std::placeholders; - control_task_ = std::make_unique(Task::Config{ - .name = "RtspSession " + std::to_string(session_id_), - .callback = std::bind(&RtspSession::control_task_fn, this, _1, _2), - .stack_size_bytes = 6 * 1024, - .log_level = Logger::Verbosity::WARN, - }); - control_task_->start(); - } +/// Class that reepresents an RTSP session, which is uniquely identified by a +/// session id and sends frame data over RTP and RTCP to the client +class RtspSession { +public: + /// Configuration for the RTSP session + struct Config { + std::string server_address; ///< The address of the server + std::string rtsp_path; ///< The RTSP path of the session + Logger::Verbosity log_level = Logger::Verbosity::WARN; ///< The log level of the session + }; - ~RtspSession() { - teardown(); - // stop the session task - if (control_task_ && control_task_->is_started()) { - logger_.info("Stopping control task"); - control_task_->stop(); - } + /// @brief Construct a new RtspSession object + /// @param control_socket The control socket of the session + /// @param config The configuration of the session + explicit RtspSession(std::unique_ptr control_socket, const Config &config) + : control_socket_(std::move(control_socket)), + rtp_socket_({.log_level = Logger::Verbosity::WARN}), + rtcp_socket_({.log_level = Logger::Verbosity::WARN}), session_id_(generate_session_id()), + server_address_(config.server_address), rtsp_path_(config.rtsp_path), + client_address_(control_socket_->get_remote_info().address), + logger_({.tag = "RtspSession " + std::to_string(session_id_), .level = config.log_level}) { + // start the session task to handle RTSP commands + using namespace std::placeholders; + control_task_ = std::make_unique(Task::Config{ + .name = "RtspSession " + std::to_string(session_id_), + .callback = std::bind(&RtspSession::control_task_fn, this, _1, _2), + .stack_size_bytes = 6 * 1024, + .log_level = Logger::Verbosity::WARN, + }); + control_task_->start(); + } + + ~RtspSession() { + teardown(); + // stop the session task + if (control_task_ && control_task_->is_started()) { + logger_.info("Stopping control task"); + control_task_->stop(); } - - /// @brief Get the session id - /// @return The session id - uint32_t get_session_id() const { - return session_id_; + } + + /// @brief Get the session id + /// @return The session id + uint32_t get_session_id() const { return session_id_; } + + /// @brief Check if the session is closed + /// @return True if the session is closed, false otherwise + bool is_closed() const { return closed_; } + + /// Get whether the session is connected + /// @return True if the session is connected, false otherwise + bool is_connected() const { return control_socket_ && control_socket_->is_connected(); } + + /// Get whether the session is active + /// @return True if the session is active, false otherwise + bool is_active() const { return session_active_; } + + /// Mark the session as active + /// This will cause the server to start sending frames to the client + void play() { session_active_ = true; } + + /// Pause the session + /// This will cause the server to stop sending frames to the client + /// @note This does not stop the session, it just pauses it + /// @note This is useful for when the client is buffering + void pause() { session_active_ = false; } + + /// Teardown the session + /// This will cause the server to stop sending frames to the client + /// and close the connection + void teardown() { + session_active_ = false; + closed_ = true; + } + + /// Send an RTP packet to the client + /// @param packet The RTP packet to send + /// @return True if the packet was sent successfully, false otherwise + bool send_rtp_packet(const RtpPacket &packet) { + logger_.debug("Sending RTP packet"); + return rtp_socket_.send(packet.get_data(), { + .ip_address = client_address_, + .port = (size_t)client_rtp_port_, + }); + } + + /// Send an RTCP packet to the client + /// @param packet The RTCP packet to send + /// @return True if the packet was sent successfully, false otherwise + bool send_rtcp_packet(const RtcpPacket &packet) { + logger_.debug("Sending RTCP packet"); + return rtcp_socket_.send(packet.get_data(), { + .ip_address = client_address_, + .port = (size_t)client_rtcp_port_, + }); + } + +protected: + /// Send a response to a RTSP request + /// @param code The response code + /// @param message The response message + /// @param sequence_number The sequence number of the request + /// @param headers The response headers (optional) + /// @param body The response body (optional) + /// @return True if the response was sent successfully, false otherwise + bool send_response(int code, std::string_view message, int sequence_number = -1, + std::string_view headers = "", std::string_view body = "") { + // create a response + std::string response = "RTSP/1.0 " + std::to_string(code) + " " + std::string(message) + "\r\n"; + if (sequence_number != -1) { + response += "CSeq: " + std::to_string(sequence_number) + "\r\n"; } - - /// @brief Check if the session is closed - /// @return True if the session is closed, false otherwise - bool is_closed() const { - return closed_; + if (!headers.empty()) { + response += headers; } - - /// Get whether the session is connected - /// @return True if the session is connected, false otherwise - bool is_connected() const { - return control_socket_ && control_socket_->is_connected(); + if (!body.empty()) { + response += "Content-Length: " + std::to_string(body.size()) + "\r\n"; + response += "\r\n"; + response += body; + } else { + response += "\r\n"; } - - /// Get whether the session is active - /// @return True if the session is active, false otherwise - bool is_active() const { - return session_active_; + logger_.info("Sending RTSP response"); + logger_.debug("{}", response); + // send the response + return control_socket_->transmit(response); + } + + /// Handle a RTSP options request + /// @param request The RTSP request + /// @return True if the request was handled successfully, false otherwise + bool handle_rtsp_options(std::string_view request) { + int sequence_number = 0; + if (!parse_rtsp_command_sequence(request, sequence_number)) { + return handle_rtsp_invalid_request(request); } - - /// Mark the session as active - /// This will cause the server to start sending frames to the client - void play() { - session_active_ = true; + logger_.info("RTSP OPTIONS request"); + // create a response + int code = 200; + std::string message = "OK"; + std::string headers = "Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE\r\n"; + return send_response(code, message, sequence_number, headers); + } + + /// Handle a RTSP describe request + /// Create a SDP description and send it back to the client + /// @param request The RTSP request + /// @return True if the request was handled successfully, false otherwise + bool handle_rtsp_describe(std::string_view request) { + int sequence_number = 0; + if (!parse_rtsp_command_sequence(request, sequence_number)) { + return handle_rtsp_invalid_request(request); } - - /// Pause the session - /// This will cause the server to stop sending frames to the client - /// @note This does not stop the session, it just pauses it - /// @note This is useful for when the client is buffering - void pause() { - session_active_ = false; - } - - /// Teardown the session - /// This will cause the server to stop sending frames to the client - /// and close the connection - void teardown() { - session_active_ = false; - closed_ = true; + logger_.info("RTSP DESCRIBE request"); + // create a response + int code = 200; + std::string message = "OK"; + // SDP description for an MJPEG stream + std::string rtsp_path = "rtsp://" + server_address_ + "/" + rtsp_path_; + std::string body = "v=0\r\n" // version (0) + "o=- " + + std::to_string(session_id_) + " 1 IN IP4 " + server_address_ + + "\r\n" // username (none), session id, version, network type (internet), + // address type, address + "s=MJPEG Stream\r\n" // session name (can be anything) + "i=MJPEG Stream\r\n" // session name (can be anything) + "t=0 0\r\n" // start / stop + "a=control:" + + rtsp_path + + "\r\n" // the RTSP path + "a=mimetype:string;\"video/x-motion-jpeg\"\r\n" // MIME type + "m=video 0 RTP/AVP 26\r\n" // MJPEG + "c=IN IP4 0.0.0.0\r\n" // client will use the RTSP address + "b=AS:256\r\n" // 256kbps + "a=control:" + + rtsp_path + + "\r\n" + "a=udp-only\r\n"; + + std::string headers = "Content-Type: application/sdp\r\n" + "Content-Base: " + + rtsp_path + "\r\n"; + return send_response(code, message, sequence_number, headers, body); + } + + /// Handle a RTSP setup request + /// Create a session and send the RTP port numbers back to the client + /// @param request The RTSP request + /// @return True if the request was handled successfully, false otherwise + bool handle_rtsp_setup(std::string_view request) { + // parse the rtsp path from the request + std::string_view rtsp_path; + int client_rtp_port; + int client_rtcp_port; + if (!parse_rtsp_setup_request(request, rtsp_path, client_rtp_port, client_rtcp_port)) { + // the parse function will send the response, so we just need to return + return false; } - - /// Send an RTP packet to the client - /// @param packet The RTP packet to send - /// @return True if the packet was sent successfully, false otherwise - bool send_rtp_packet(const RtpPacket& packet) { - logger_.debug("Sending RTP packet"); - return rtp_socket_.send(packet.get_data(), { - .ip_address = client_address_, - .port = (size_t)client_rtp_port_, - }); + // parse the sequence number from the request + int sequence_number = 0; + if (!parse_rtsp_command_sequence(request, sequence_number)) { + return handle_rtsp_invalid_request(request); } - - /// Send an RTCP packet to the client - /// @param packet The RTCP packet to send - /// @return True if the packet was sent successfully, false otherwise - bool send_rtcp_packet(const RtcpPacket& packet) { - logger_.debug("Sending RTCP packet"); - return rtcp_socket_.send(packet.get_data(), { - .ip_address = client_address_, - .port = (size_t)client_rtcp_port_, - }); + logger_.info("RTSP SETUP request"); + // save the client port numbers + client_rtp_port_ = client_rtp_port; + client_rtcp_port_ = client_rtcp_port; + // create a response + int code = 200; + std::string message = "OK"; + // flesh out the transport header + std::string headers = + "Session: " + std::to_string(session_id_) + "\r\n" + + "Transport: RTP/AVP;unicast;client_port=" + std::to_string(client_rtp_port) + "-" + + std::to_string(client_rtcp_port) + "\r\n"; + return send_response(code, message, sequence_number, headers); + } + + /// Handle a RTSP play request + /// After responding to the request, the server should start sending RTP + /// packets to the client + /// @param request The request to handle + /// @return True if the request was handled successfully, false otherwise + bool handle_rtsp_play(std::string_view request) { + int sequence_number = 0; + if (!parse_rtsp_command_sequence(request, sequence_number)) { + return handle_rtsp_invalid_request(request); } - - protected: - - /// Send a response to a RTSP request - /// @param code The response code - /// @param message The response message - /// @param sequence_number The sequence number of the request - /// @param body The response body - /// @return True if the response was sent successfully, false otherwise - bool send_response(int code, std::string_view message, int sequence_number=-1, std::string_view headers = "", std::string_view body = "") { - // create a response - std::string response = "RTSP/1.0 " + std::to_string(code) + " " + std::string(message) + "\r\n"; - if (sequence_number != -1) { - response += "CSeq: " + std::to_string(sequence_number) + "\r\n"; - } - if (!headers.empty()) { - response += headers; - } - if (!body.empty()) { - response += "Content-Length: " + std::to_string(body.size()) + "\r\n"; - response += "\r\n"; - response += body; - } else { - response += "\r\n"; - } - logger_.info("Sending RTSP response"); - logger_.debug("{}", response); - // send the response - return control_socket_->transmit(response); + logger_.info("RTSP PLAY request"); + play(); + int code = 200; + std::string message = "OK"; + std::string headers = + "Session: " + std::to_string(session_id_) + "\r\n" + "Range: npt=0.000-\r\n"; + return send_response(code, message, sequence_number, headers); + } + + /// Handle a RTSP pause request + /// After responding to the request, the server should stop sending RTP + /// packets to the client + /// @param request The request to handle + /// @return True if the request was handled successfully, false otherwise + bool handle_rtsp_pause(std::string_view request) { + int sequence_number = 0; + if (!parse_rtsp_command_sequence(request, sequence_number)) { + return handle_rtsp_invalid_request(request); } - - /// Handle a RTSP options request - /// @param request The RTSP request - /// @return True if the request was handled successfully, false otherwise - bool handle_rtsp_options(std::string_view request) { - int sequence_number = 0; - if (!parse_rtsp_command_sequence(request, sequence_number)) { - return handle_rtsp_invalid_request(request); - } - logger_.info("RTSP OPTIONS request"); - // create a response - int code = 200; - std::string message = "OK"; - std::string headers = - "Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE\r\n"; - return send_response(code, message, sequence_number, headers); + logger_.info("RTSP PAUSE request"); + pause(); + int code = 200; + std::string message = "OK"; + std::string headers = "Session: " + std::to_string(session_id_) + "\r\n"; + return send_response(code, message, sequence_number, headers); + } + + /// Handle an RTSP teardown request + /// @param request The request to handle + /// @return True if the request was handled successfully, false otherwise + bool handle_rtsp_teardown(std::string_view request) { + int sequence_number = 0; + if (!parse_rtsp_command_sequence(request, sequence_number)) { + return handle_rtsp_invalid_request(request); } - - /// Handle a RTSP describe request - /// Create a SDP description and send it back to the client - /// @param request The RTSP request - /// @return True if the request was handled successfully, false otherwise - bool handle_rtsp_describe(std::string_view request) { - int sequence_number = 0; - if (!parse_rtsp_command_sequence(request, sequence_number)) { - return handle_rtsp_invalid_request(request); - } - logger_.info("RTSP DESCRIBE request"); - // create a response - int code = 200; - std::string message = "OK"; - // SDP description for an MJPEG stream - std::string rtsp_path = "rtsp://" + server_address_ + "/" + rtsp_path_; - std::string body = - "v=0\r\n" // version (0) - "o=- " + std::to_string(session_id_) + " 1 IN IP4 " + server_address_ + "\r\n" // username (none), session id, version, network type (internet), address type, address - "s=MJPEG Stream\r\n" // session name (can be anything) - "i=MJPEG Stream\r\n" // session name (can be anything) - "t=0 0\r\n" // start / stop - "a=control:" + rtsp_path + "\r\n" // the RTSP path - "a=mimetype:string;\"video/x-motion-jpeg\"\r\n" // MIME type - "m=video 0 RTP/AVP 26\r\n" // MJPEG - "c=IN IP4 0.0.0.0\r\n" // client will use the RTSP address - "b=AS:256\r\n" // 256kbps - "a=control:" + rtsp_path + "\r\n" - "a=udp-only\r\n"; - - std::string headers = - "Content-Type: application/sdp\r\n" - "Content-Base: " + rtsp_path + "\r\n"; - return send_response(code, message, sequence_number, headers, body); + logger_.info("RTSP TEARDOWN request"); + teardown(); + int code = 200; + std::string message = "OK"; + std::string headers = "Session: " + std::to_string(session_id_) + "\r\n"; + return send_response(code, message, sequence_number, headers); + } + + /// Handle an invalid RTSP request + /// @param request The request to handle + /// @return True if the request was handled successfully, false otherwise + bool handle_rtsp_invalid_request(std::string_view request) { + logger_.info("RTSP invalid request"); + // create a response + int code = 400; + std::string message = "Bad Request"; + int sequence_number = 0; + if (!parse_rtsp_command_sequence(request, sequence_number)) { + return send_response(code, message); } - - /// Handle a RTSP setup request - /// Create a session and send the RTP port numbers back to the client - /// @param request The RTSP request - /// @return True if the request was handled successfully, false otherwise - bool handle_rtsp_setup(std::string_view request) { - // parse the rtsp path from the request - std::string_view rtsp_path; - int client_rtp_port; - int client_rtcp_port; - if (!parse_rtsp_setup_request(request, rtsp_path, client_rtp_port, client_rtcp_port)) { - // the parse function will send the response, so we just need to return - return false; - } - // parse the sequence number from the request - int sequence_number = 0; - if (!parse_rtsp_command_sequence(request, sequence_number)) { - return handle_rtsp_invalid_request(request); - } - logger_.info("RTSP SETUP request"); - // save the client port numbers - client_rtp_port_ = client_rtp_port; - client_rtcp_port_ = client_rtcp_port; - // create a response - int code = 200; - std::string message = "OK"; - // flesh out the transport header - std::string headers = - "Session: " + std::to_string(session_id_) + "\r\n" + - "Transport: RTP/AVP;unicast;client_port=" + - std::to_string(client_rtp_port) + "-" + std::to_string(client_rtcp_port) + "\r\n"; - return send_response(code, message, sequence_number, headers); + return send_response(code, message, sequence_number); + } + + /// Handle a single RTSP request + /// @note Requests are of the form "METHOD RTSP_PATH RTSP_VERSION" + /// @param request The request to handle + /// @return True if the request was handled successfully, false otherwise + bool handle_rtsp_request(std::string_view request) { + logger_.debug("RTSP request:\n{}", request); + // store indices of the first and second spaces + // to extract the method and the rtsp path + auto first_space_index = request.find(' '); + auto second_space_index = request.find(' ', first_space_index + 1); + auto end_of_line_index = request.find('\r'); + if (first_space_index == std::string::npos || second_space_index == std::string::npos || + end_of_line_index == std::string::npos) { + return handle_rtsp_invalid_request(request); } - - /// Handle a RTSP play request - /// After responding to the request, the server should start sending RTP - /// packets to the client - /// @param request The request to handle - /// @return True if the request was handled successfully, false otherwise - bool handle_rtsp_play(std::string_view request) { - int sequence_number = 0; - if (!parse_rtsp_command_sequence(request, sequence_number)) { - return handle_rtsp_invalid_request(request); - } - logger_.info("RTSP PLAY request"); - play(); - int code = 200; - std::string message = "OK"; - std::string headers = - "Session: " + std::to_string(session_id_) + "\r\n" + - "Range: npt=0.000-\r\n"; - return send_response(code, message, sequence_number, headers); + // extract the method and the rtsp path + // where the request looks like "METHOD RTSP_PATH RTSP_VERSION" + std::string_view method = request.substr(0, first_space_index); + // TODO: we should probably check that the rtsp path is correct + [[maybe_unused]] std::string_view rtsp_path = + request.substr(first_space_index + 1, second_space_index - first_space_index - 1); + // TODO: we should probably check that the rtsp version is correct + [[maybe_unused]] std::string_view rtsp_version = + request.substr(second_space_index + 1, end_of_line_index - second_space_index - 1); + // extract the request body, which is separated by an empty line (\r\n) + // from the request header + std::string_view request_body = request.substr(end_of_line_index + 2); + + // handle the request + if (method == "OPTIONS") { + return handle_rtsp_options(request_body); + } else if (method == "DESCRIBE") { + return handle_rtsp_describe(request_body); + } else if (method == "SETUP") { + return handle_rtsp_setup(request_body); + } else if (method == "PLAY") { + return handle_rtsp_play(request_body); + } else if (method == "PAUSE") { + return handle_rtsp_pause(request_body); + } else if (method == "TEARDOWN") { + return handle_rtsp_teardown(request_body); } - /// Handle a RTSP pause request - /// After responding to the request, the server should stop sending RTP - /// packets to the client - /// @param request The request to handle - /// @return True if the request was handled successfully, false otherwise - bool handle_rtsp_pause(std::string_view request) { - int sequence_number = 0; - if (!parse_rtsp_command_sequence(request, sequence_number)) { - return handle_rtsp_invalid_request(request); - } - logger_.info("RTSP PAUSE request"); - pause(); - int code = 200; - std::string message = "OK"; - std::string headers = "Session: " + std::to_string(session_id_) + "\r\n"; - return send_response(code, message, sequence_number, headers); + // if the method is not supported, return an error + return handle_rtsp_invalid_request(request_body); + } + + /// @brief The task function for the control thread + /// @param m The mutex to lock when waiting on the condition variable + /// @param cv The condition variable to wait on + /// @return True if the task should stop, false otherwise + bool control_task_fn(std::mutex &m, std::condition_variable &cv) { + if (closed_) { + logger_.info("Session is closed, stopping control task"); + // return true to stop the task + return true; } - - /// Handle an RTSP teardown request - /// @param request The request to handle - /// @return True if the request was handled successfully, false otherwise - bool handle_rtsp_teardown(std::string_view request) { - int sequence_number = 0; - if (!parse_rtsp_command_sequence(request, sequence_number)) { - return handle_rtsp_invalid_request(request); - } - logger_.info("RTSP TEARDOWN request"); + if (!control_socket_) { + logger_.warn("Control socket is no longer valid, stopping control task"); teardown(); - int code = 200; - std::string message = "OK"; - std::string headers = "Session: " + std::to_string(session_id_) + "\r\n"; - return send_response(code, message, sequence_number, headers); + // return true to stop the task + return true; } - - /// Handle an invalid RTSP request - /// @param request The request to handle - /// @return True if the request was handled successfully, false otherwise - bool handle_rtsp_invalid_request(std::string_view request) { - logger_.info("RTSP invalid request"); - // create a response - int code = 400; - std::string message = "Bad Request"; - int sequence_number = 0; - if (!parse_rtsp_command_sequence(request, sequence_number)) { - return send_response(code, message); - } - return send_response(code, message, sequence_number); + if (!control_socket_->is_connected()) { + logger_.warn("Control socket is not connected, stopping control task"); + teardown(); + // if the control socket is not connected, return true to stop the task + return true; } - - /// Handle a single RTSP request - /// @note Requests are of the form "METHOD RTSP_PATH RTSP_VERSION" - /// @param request The request to handle - /// @return True if the request was handled successfully, false otherwise - bool handle_rtsp_request(std::string_view request) { - logger_.debug("RTSP request:\n{}", request); - // store indices of the first and second spaces - // to extract the method and the rtsp path - auto first_space_index = request.find(' '); - auto second_space_index = request.find(' ', first_space_index + 1); - auto end_of_line_index = request.find('\r'); - if (first_space_index == std::string::npos || second_space_index == std::string::npos || end_of_line_index == std::string::npos) { - return handle_rtsp_invalid_request(request); - } - // extract the method and the rtsp path - // where the request looks like "METHOD RTSP_PATH RTSP_VERSION" - std::string_view method = request.substr(0, first_space_index); - // TODO: we should probably check that the rtsp path is correct - [[maybe_unused]] std::string_view rtsp_path = request.substr(first_space_index + 1, second_space_index - first_space_index - 1); - // TODO: we should probably check that the rtsp version is correct - [[maybe_unused]] std::string_view rtsp_version = request.substr(second_space_index + 1, end_of_line_index - second_space_index - 1); - // extract the request body, which is separated by an empty line (\r\n) - // from the request header - std::string_view request_body = request.substr(end_of_line_index + 2); - + static size_t max_request_size = 1024; + std::vector buffer; + logger_.info("Waiting for RTSP request"); + if (control_socket_->receive(buffer, max_request_size)) { + // parse the request + std::string_view request(reinterpret_cast(buffer.data()), buffer.size()); // handle the request - if (method == "OPTIONS") { - return handle_rtsp_options(request_body); - } else if (method == "DESCRIBE") { - return handle_rtsp_describe(request_body); - } else if (method == "SETUP") { - return handle_rtsp_setup(request_body); - } else if (method == "PLAY") { - return handle_rtsp_play(request_body); - } else if (method == "PAUSE") { - return handle_rtsp_pause(request_body); - } else if (method == "TEARDOWN") { - return handle_rtsp_teardown(request_body); + if (!handle_rtsp_request(request)) { + logger_.warn("Failed to handle RTSP request"); } - - // if the method is not supported, return an error - return handle_rtsp_invalid_request(request_body); } - - /// @brief The task function for the control thread - /// @param m The mutex to lock when waiting on the condition variable - /// @param cv The condition variable to wait on - /// @return True if the task should stop, false otherwise - bool control_task_fn(std::mutex& m, std::condition_variable& cv) { - if (closed_) { - logger_.info("Session is closed, stopping control task"); - // return true to stop the task - return true; - } - if (!control_socket_) { - logger_.warn("Control socket is no longer valid, stopping control task"); - teardown(); - // return true to stop the task - return true; - } - if (!control_socket_->is_connected()) { - logger_.warn("Control socket is not connected, stopping control task"); - teardown(); - // if the control socket is not connected, return true to stop the task - return true; - } - static size_t max_request_size = 1024; - std::vector buffer; - logger_.info("Waiting for RTSP request"); - if (control_socket_->receive(buffer, max_request_size)) { - // parse the request - std::string_view request(reinterpret_cast(buffer.data()), buffer.size()); - // handle the request - if (!handle_rtsp_request(request)) { - logger_.warn("Failed to handle RTSP request"); - } - } - // the receive handles most of the blocking, so we don't need to sleep - // here, just return false to keep the task running + // the receive handles most of the blocking, so we don't need to sleep + // here, just return false to keep the task running + return false; + } + + /// Generate a new RTSP session id for the client + /// Session IDs are generated randomly when a client sends a SETUP request and are + /// used to identify the client in subsequent requests when managing the RTP session. + /// @return The new session id + uint32_t generate_session_id() { return esp_random(); } + + /// Parse the RTSP command sequence number from a request + /// @param request The request to parse + /// @param cseq The command sequence number (output) + /// @return True if the request was parsed successfully, false otherwise + bool parse_rtsp_command_sequence(std::string_view request, int &cseq) { + // parse the cseq from the request + auto cseq_index = request.find("CSeq: "); + if (cseq_index == std::string::npos) { return false; } - - /// Generate a new RTSP session id for the client - /// Session IDs are generated randomly when a client sends a SETUP request and are - /// used to identify the client in subsequent requests when managing the RTP session. - /// @return The new session id - uint32_t generate_session_id() { - return esp_random(); + auto cseq_end_index = request.find('\r', cseq_index); + if (cseq_end_index == std::string::npos) { + return false; } - - /// Parse the RTSP command sequence number from a request - /// @param request The request to parse - /// @param cseq The command sequence number (output) - /// @return True if the request was parsed successfully, false otherwise - bool parse_rtsp_command_sequence(std::string_view request, int& cseq) { - // parse the cseq from the request - auto cseq_index = request.find("CSeq: "); - if (cseq_index == std::string::npos) { - return false; - } - auto cseq_end_index = request.find('\r', cseq_index); - if (cseq_end_index == std::string::npos) { - return false; - } - std::string_view cseq_str = request.substr(cseq_index + 6, cseq_end_index - cseq_index - 6); - if (cseq_str.empty()) { - return false; - } - // convert the cseq to an integer - cseq = std::stoi(std::string{cseq_str}); - return true; + std::string_view cseq_str = request.substr(cseq_index + 6, cseq_end_index - cseq_index - 6); + if (cseq_str.empty()) { + return false; } - - /// Parse a RTSP path from a request - /// @param request The request to parse - /// @return The RTSP path - std::string_view parse_rtsp_path(std::string_view request) { - // parse the rtsp path from the request - // where the request looks like "METHOD RTSP_PATH RTSP_VERSION" - std::string_view rtsp_path = request.substr(request.find(' ') + 1, request.find(' ', request.find(' ') + 1) - request.find(' ') - 1); - return rtsp_path; + // convert the cseq to an integer + cseq = std::stoi(std::string{cseq_str}); + return true; + } + + /// Parse a RTSP path from a request + /// @param request The request to parse + /// @return The RTSP path + std::string_view parse_rtsp_path(std::string_view request) { + // parse the rtsp path from the request + // where the request looks like "METHOD RTSP_PATH RTSP_VERSION" + std::string_view rtsp_path = request.substr( + request.find(' ') + 1, request.find(' ', request.find(' ') + 1) - request.find(' ') - 1); + return rtsp_path; + } + + /// Parse a RTSP setup request + /// Looks for the client RTP and RTCP port numbers in the request + /// and returns them + /// @param request The request to parse + /// @param rtsp_path The RTSP path from the request (output) + /// @param client_rtp_port The client RTP port number (output) + /// @param client_rtcp_port The client RTCP port number (output) + /// @return True if the request was parsed successfully, false otherwise + bool parse_rtsp_setup_request(std::string_view request, std::string_view &rtsp_path, + int &client_rtp_port, int &client_rtcp_port) { + // parse the rtsp path from the request + rtsp_path = parse_rtsp_path(request); + if (rtsp_path.empty()) { + return false; + } + logger_.debug("Parsing setup request:\n{}", request); + // parse the transport header from the request + auto transport_index = request.find("Transport: "); + if (transport_index == std::string::npos) { + return false; + } + auto transport_end_index = request.find('\r', transport_index); + if (transport_end_index == std::string::npos) { + return false; + } + std::string_view transport = + request.substr(transport_index + 11, transport_end_index - transport_index - 11); + if (transport.empty()) { + return false; + } + logger_.debug("Transport header: {}", transport); + // we don't support TCP, so return an error if the transport is not RTP/AVP/UDP + if (transport.find("RTP/AVP/TCP") != std::string::npos) { + logger_.error("TCP transport is not supported"); + // TODO: this doesn't send the sequence number back to the client + send_response(461, "Unsupported Transport"); + return false; } - /// Parse a RTSP setup request - /// Looks for the client RTP and RTCP port numbers in the request - /// and returns them - /// @param request The request to parse - /// @param rtsp_path The RTSP path from the request (output) - /// @param client_rtp_port The client RTP port number (output) - /// @param client_rtcp_port The client RTCP port number (output) - /// @return True if the request was parsed successfully, false otherwise - bool parse_rtsp_setup_request(std::string_view request, std::string_view& rtsp_path, int& client_rtp_port, int& client_rtcp_port) { - // parse the rtsp path from the request - rtsp_path = parse_rtsp_path(request); - if (rtsp_path.empty()) { - return false; - } - logger_.debug("Parsing setup request:\n{}", request); - // parse the transport header from the request - auto transport_index = request.find("Transport: "); - if (transport_index == std::string::npos) { - return false; - } - auto transport_end_index = request.find('\r', transport_index); - if (transport_end_index == std::string::npos) { - return false; - } - std::string_view transport = request.substr(transport_index + 11, transport_end_index - transport_index - 11); - if (transport.empty()) { - return false; - } - logger_.debug("Transport header: {}", transport); - // we don't support TCP, so return an error if the transport is not RTP/AVP/UDP - if (transport.find("RTP/AVP/TCP") != std::string::npos) { - logger_.error("TCP transport is not supported"); - // TODO: this doesn't send the sequence number back to the client - send_response(461, "Unsupported Transport"); - return false; - } - - // parse the rtp port from the request - auto client_port_index = request.find("client_port="); - auto dash_index = request.find('-', client_port_index); - std::string_view rtp_port = request.substr(client_port_index + 12, dash_index - client_port_index - 12); - if (rtp_port.empty()) { - return false; - } - // parse the rtcp port from the request - std::string_view rtcp_port = request.substr(dash_index + 1, request.find('\r', client_port_index) - dash_index - 1); - if (rtcp_port.empty()) { - return false; - } - // convert the rtp and rtcp ports to integers - client_rtp_port = std::stoi(std::string{rtp_port}); - client_rtcp_port = std::stoi(std::string{rtcp_port}); - return true; + // parse the rtp port from the request + auto client_port_index = request.find("client_port="); + auto dash_index = request.find('-', client_port_index); + std::string_view rtp_port = + request.substr(client_port_index + 12, dash_index - client_port_index - 12); + if (rtp_port.empty()) { + return false; } + // parse the rtcp port from the request + std::string_view rtcp_port = + request.substr(dash_index + 1, request.find('\r', client_port_index) - dash_index - 1); + if (rtcp_port.empty()) { + return false; + } + // convert the rtp and rtcp ports to integers + client_rtp_port = std::stoi(std::string{rtp_port}); + client_rtcp_port = std::stoi(std::string{rtcp_port}); + return true; + } - std::unique_ptr control_socket_; - espp::UdpSocket rtp_socket_; - espp::UdpSocket rtcp_socket_; + std::unique_ptr control_socket_; + espp::UdpSocket rtp_socket_; + espp::UdpSocket rtcp_socket_; - uint32_t session_id_; - bool closed_ = false; - bool session_active_ = false; + uint32_t session_id_; + bool closed_ = false; + bool session_active_ = false; - std::string server_address_; - std::string rtsp_path_; + std::string server_address_; + std::string rtsp_path_; - std::string client_address_; - int client_rtp_port_; - int client_rtcp_port_; + std::string client_address_; + int client_rtp_port_; + int client_rtcp_port_; - std::unique_ptr control_task_; + std::unique_ptr control_task_; - Logger logger_; - }; + Logger logger_; +}; } // namespace espp diff --git a/doc/Doxyfile b/doc/Doxyfile index 4f3930ba1..ffbf4fc92 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -25,6 +25,7 @@ EXAMPLE_PATH += $(PROJECT_PATH)/components/ads1x15/example/main/ads1x15_example. EXAMPLE_PATH += $(PROJECT_PATH)/components/as5600/example/main/as5600_example.cpp EXAMPLE_PATH += $(PROJECT_PATH)/components/aw9523/example/main/aw9523_example.cpp EXAMPLE_PATH += $(PROJECT_PATH)/components/bldc_motor/example/main/bldc_motor_example.cpp +EXAMPLE_PATH += $(PROJECT_PATH)/components/bldc_haptics/example/main/bldc_haptics_example.cpp EXAMPLE_PATH += $(PROJECT_PATH)/components/controller/example/main/controller_example.cpp EXAMPLE_PATH += $(PROJECT_PATH)/components/cli/example/main/cli_example.cpp EXAMPLE_PATH += $(PROJECT_PATH)/components/color/example/main/color_example.cpp @@ -60,7 +61,7 @@ EXAMPLE_PATH += $(PROJECT_PATH)/components/wifi/example/main/wifi_example.cpp EXTRACT_ALL = YES -INPUT = +INPUT = $(PROJECT_PATH)/README.md INPUT += $(PROJECT_PATH)/components/adc/include/adc_types.hpp INPUT += $(PROJECT_PATH)/components/adc/include/oneshot_adc.hpp INPUT += $(PROJECT_PATH)/components/adc/include/continuous_adc.hpp @@ -68,7 +69,12 @@ INPUT += $(PROJECT_PATH)/components/ads1x15/include/ads1x15.hpp INPUT += $(PROJECT_PATH)/components/as5600/include/as5600.hpp INPUT += $(PROJECT_PATH)/components/aw9523/include/aw9523.hpp INPUT += $(PROJECT_PATH)/components/bldc_driver/include/bldc_driver.hpp +INPUT += $(PROJECT_PATH)/components/bldc_haptics/include/bldc_haptics.hpp +INPUT += $(PROJECT_PATH)/components/bldc_haptics/include/detent_config.hpp +INPUT += $(PROJECT_PATH)/components/bldc_haptics/include/haptic_config.hpp INPUT += $(PROJECT_PATH)/components/bldc_motor/include/bldc_motor.hpp +INPUT += $(PROJECT_PATH)/components/bldc_motor/include/bldc_types.hpp +INPUT += $(PROJECT_PATH)/components/bldc_motor/include/sensor_direction.hpp INPUT += $(PROJECT_PATH)/components/controller/include/controller.hpp INPUT += $(PROJECT_PATH)/components/cli/include/cli.hpp INPUT += $(PROJECT_PATH)/components/cli/include/line_input.hpp @@ -78,6 +84,7 @@ INPUT += $(PROJECT_PATH)/components/display/include/display.hpp INPUT += $(PROJECT_PATH)/components/display_drivers/include/ili9341.hpp INPUT += $(PROJECT_PATH)/components/display_drivers/include/st7789.hpp INPUT += $(PROJECT_PATH)/components/drv2605/include/drv2605.hpp +INPUT += $(PROJECT_PATH)/components/encoder/include/abi_encoder.hpp INPUT += $(PROJECT_PATH)/components/encoder/include/encoder_types.hpp INPUT += $(PROJECT_PATH)/components/event_manager/include/event_manager.hpp INPUT += $(PROJECT_PATH)/components/file_system/include/file_system.hpp @@ -125,7 +132,7 @@ INPUT += $(PROJECT_PATH)/components/task/include/task.hpp INPUT += $(PROJECT_PATH)/components/wifi/include/wifi_ap.hpp INPUT += $(PROJECT_PATH)/components/wifi/include/wifi_sta.hpp -USE_MDFILE_AS_MAINPAGE = ../README.md +USE_MDFILE_AS_MAINPAGE = $(PROJECT_PATH)/README.md ## Get warnings for functions that have no documentation for their parameters or return value ## @@ -143,10 +150,6 @@ EXPAND_ONLY_PREDEF = YES PREDEFINED = \ $(ENV_DOXYGEN_DEFINES) -## Do not complain about not having dot -## -HAVE_DOT = NO - ## Generate XML that is required for Breathe ## GENERATE_XML = YES @@ -154,7 +157,7 @@ XML_OUTPUT = xml GENERATE_HTML = NO HAVE_DOT = NO -GENERATE_LATEX = NO +GENERATE_LATEX = YES GENERATE_MAN = YES GENERATE_RTF = NO @@ -200,3 +203,6 @@ EXTRACT_ALL = YES EXTRACT_STATIC = YES SHOW_NAMESPACES = YES SHOW_FILES = YES +BUILTIN_STL_SUPPORT = YES +HIDE_SCOPE_NAMES = NO +MARKDOWN_SUPPORT = YES diff --git a/doc/conf_common.py b/doc/conf_common.py index cc23eb206..4b4c2fba5 100644 --- a/doc/conf_common.py +++ b/doc/conf_common.py @@ -6,6 +6,8 @@ 'esp_docs.esp_extensions.run_doxygen', ] +exclude_paterns = ['build', '_build'] + # link roles config github_repo = 'esp-cpp/espp' diff --git a/doc/doxygen-known-warnings.txt b/doc/doxygen-known-warnings.txt new file mode 100644 index 000000000..c31b19c30 --- /dev/null +++ b/doc/doxygen-known-warnings.txt @@ -0,0 +1 @@ +internal inconsistency diff --git a/doc/en/bldc/bldc_motor.rst b/doc/en/bldc/bldc_motor.rst index b020232e3..a910d98f0 100644 --- a/doc/en/bldc/bldc_motor.rst +++ b/doc/en/bldc/bldc_motor.rst @@ -25,3 +25,5 @@ API Reference ------------- .. include-build-file:: inc/bldc_motor.inc +.. include-build-file:: inc/bldc_types.inc +.. include-build-file:: inc/sensor_direction.inc diff --git a/doc/en/haptics/bldc_haptics.rst b/doc/en/haptics/bldc_haptics.rst new file mode 100644 index 000000000..d3e6851ba --- /dev/null +++ b/doc/en/haptics/bldc_haptics.rst @@ -0,0 +1,34 @@ +BLDC Haptics +************ + +The `BldcHaptics` class is a high-level interface for controlling a BLDC motor +with a haptic feedback loop. It is designed to be used to provide haptic +feedback as part of a rotary input device (the BLDC motor). The component +provides a `DetentConfig` interface for configuring the input / haptic feedback +profile for the motor dynamically with configuration of: + + - Range of motion (min/max position + width of each position) + - Width of each position in the range (which will be used to calculate the + actual range of motion based on the number of positions) + - Strength of the haptic feedback at each position (detent) + - Strength of the haptic feedback at the edges of the range of motion + - Specific positions to provide haptic feedback at (detents) + - Snap point (percentage of position width which will trigger a snap to the + nearest position) + + +The component also provides a `HapticConfig` interface for configuring the +haptic feedback loop with configuration of: + + - Strength of the haptic feedback + - Frequency of the haptic feedback [currently not implemented] + - Duration of the haptic feedback [currently not implemented] + +.. ---------------------------- API Reference ---------------------------------- + +API Reference +------------- + +.. include-build-file:: inc/detent_config.inc +.. include-build-file:: inc/haptic_config.inc +.. include-build-file:: inc/bldc_haptics.inc diff --git a/doc/en/haptics/index.rst b/doc/en/haptics/index.rst index 06acc45d2..d3a00145d 100644 --- a/doc/en/haptics/index.rst +++ b/doc/en/haptics/index.rst @@ -4,6 +4,7 @@ Haptics APIs .. toctree:: :maxdepth: 1 + bldc_haptics drv2605 There are multiple components which provide haptic feedback functionality, diff --git a/doc/sphinx-known-warnings.txt b/doc/sphinx-known-warnings.txt new file mode 100644 index 000000000..98ba8d7fc --- /dev/null +++ b/doc/sphinx-known-warnings.txt @@ -0,0 +1 @@ +Duplicate ID diff --git a/docs/_sources/bldc/bldc_motor.rst.txt b/docs/_sources/bldc/bldc_motor.rst.txt index b020232e3..a910d98f0 100644 --- a/docs/_sources/bldc/bldc_motor.rst.txt +++ b/docs/_sources/bldc/bldc_motor.rst.txt @@ -25,3 +25,5 @@ API Reference ------------- .. include-build-file:: inc/bldc_motor.inc +.. include-build-file:: inc/bldc_types.inc +.. include-build-file:: inc/sensor_direction.inc diff --git a/docs/_sources/haptics/index.rst.txt b/docs/_sources/haptics/index.rst.txt index 06acc45d2..d3a00145d 100644 --- a/docs/_sources/haptics/index.rst.txt +++ b/docs/_sources/haptics/index.rst.txt @@ -4,6 +4,7 @@ Haptics APIs .. toctree:: :maxdepth: 1 + bldc_haptics drv2605 There are multiple components which provide haptic feedback functionality, diff --git a/docs/adc/adc_types.html b/docs/adc/adc_types.html index 21597e832..cbf86c182 100644 --- a/docs/adc/adc_types.html +++ b/docs/adc/adc_types.html @@ -135,7 +135,7 @@
  • ADC APIs »
  • ADC Types
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/adc/ads1x15.html b/docs/adc/ads1x15.html index 22c28b49b..123b5a59e 100644 --- a/docs/adc/ads1x15.html +++ b/docs/adc/ads1x15.html @@ -136,7 +136,7 @@
  • ADC APIs »
  • ADS1x15 I2C ADC
  • - Edit on GitHub + Edit on GitHub

  • @@ -153,7 +153,7 @@

    API Reference

    Header File

    diff --git a/docs/adc/continuous_adc.html b/docs/adc/continuous_adc.html index e9aa71f3a..342a80bf3 100644 --- a/docs/adc/continuous_adc.html +++ b/docs/adc/continuous_adc.html @@ -136,7 +136,7 @@
  • ADC APIs »
  • Continuous ADC
  • - Edit on GitHub + Edit on GitHub

  • @@ -158,7 +158,7 @@

    API Reference

    Header File

    diff --git a/docs/adc/index.html b/docs/adc/index.html index f6214a443..fcfae2012 100644 --- a/docs/adc/index.html +++ b/docs/adc/index.html @@ -128,7 +128,7 @@
  • »
  • ADC APIs
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/adc/oneshot_adc.html b/docs/adc/oneshot_adc.html index 276fe1fc4..737d93b94 100644 --- a/docs/adc/oneshot_adc.html +++ b/docs/adc/oneshot_adc.html @@ -136,7 +136,7 @@
  • ADC APIs »
  • Oneshot ADC
  • - Edit on GitHub + Edit on GitHub

  • @@ -157,7 +157,7 @@

    API Reference

    Header File

    diff --git a/docs/bldc/bldc_driver.html b/docs/bldc/bldc_driver.html index 932fb0f59..e822a4b93 100644 --- a/docs/bldc/bldc_driver.html +++ b/docs/bldc/bldc_driver.html @@ -134,7 +134,7 @@
  • BLDC APIs »
  • BLDC Driver
  • - Edit on GitHub + Edit on GitHub

  • @@ -151,7 +151,7 @@

    API Reference

    Header File

    @@ -195,6 +195,32 @@

    Classes +
    +inline bool is_enabled() const
    +

    Check if the driver is enabled.

    +
    +
    Returns
    +

    True if the driver is enabled, false otherwise.

    +
    +
    +
    + +
    +
    +inline bool is_faulted()
    +

    Check if the driver is faulted.

    +
    +

    Note

    +

    If no fault pin was provided, this will always return false.

    +
    +
    +
    Returns
    +

    True if the driver is faulted, false otherwise.

    +
    +
    +
    +
    inline void set_phase_state(int state_a, int state_b, int state_c)
    @@ -333,6 +359,12 @@

    Classes +
    +int gpio_fault = {-1}
    +

    Fault pin for the BLDC driver (if any).

    +

    +
    float power_supply_voltage
    diff --git a/docs/bldc/bldc_motor.html b/docs/bldc/bldc_motor.html index 673ecfcd2..3f3d256ae 100644 --- a/docs/bldc/bldc_motor.html +++ b/docs/bldc/bldc_motor.html @@ -82,6 +82,8 @@
  • API Reference
  • @@ -134,7 +136,7 @@
  • BLDC APIs »
  • BLDC Motor
  • - Edit on GitHub + Edit on GitHub

  • @@ -165,7 +167,7 @@

    API Reference

    Header File

    @@ -174,132 +176,120 @@

    Classes template<DriverConcept D, SensorConcept S, CurrentSensorConcept CS = DummyCurrentSense>
    class espp::BldcMotor

    Motor control class for a Brushless DC (BLDC) motor, implementing the field-oriented control (FOC) algorithm. Must be provided a driver object / type, and optionally a position/velocity sensor object/type and optionally a current sensor object / type.

    +
    +

    Example Usage

    +

        // now make the mt6701 which decodes the data
    +    std::shared_ptr<espp::Mt6701> mt6701 = std::make_shared<espp::Mt6701>(
    +        espp::Mt6701::Config{.write = mt6701_write,
    +                             .read = mt6701_read,
    +                             .velocity_filter = filter_fn,
    +                             .update_period = std::chrono::duration<float>(core_update_period),
    +                             .log_level = espp::Logger::Verbosity::WARN});
    +
    +    // now make the bldc driver
    +    std::shared_ptr<espp::BldcDriver> driver =
    +        std::make_shared<espp::BldcDriver>(espp::BldcDriver::Config{
    +            // this pinout is configured for the TinyS3 connected to the
    +            // TMC6300-BOB in the BLDC Motor Test Stand
    +            .gpio_a_h = 1,
    +            .gpio_a_l = 2,
    +            .gpio_b_h = 3,
    +            .gpio_b_l = 4,
    +            .gpio_c_h = 5,
    +            .gpio_c_l = 21,
    +            .gpio_enable = 34, // connected to the VIO/~Stdby pin of TMC6300-BOB
    +            .gpio_fault = 36,  // connected to the nFAULT pin of TMC6300-BOB
    +            .power_supply_voltage = 5.0f,
    +            .limit_voltage = 5.0f,
    +            .log_level = espp::Logger::Verbosity::WARN});
    +
    +    // now make the bldc motor
    +    using BldcMotor = espp::BldcMotor<espp::BldcDriver, espp::Mt6701>;
    +    auto motor = BldcMotor(BldcMotor::Config{
    +        // measured by setting it into ANGLE_OPENLOOP and then counting how many
    +        // spots you feel when rotating it.
    +        .num_pole_pairs = 7,
    +        .phase_resistance =
    +            5.0f, // tested by running velocity_openloop and seeing if the veloicty is ~correct
    +        .kv_rating =
    +            320, // tested by running velocity_openloop and seeing if the velocity is ~correct
    +        .current_limit = 1.0f,             // Amps
    +        .zero_electric_offset = 2.3914752, // gotten from previously running without providing this
    +                                           // and it will be logged.
    +        .sensor_direction = espp::detail::SensorDirection::COUNTER_CLOCKWISE,
    +        .foc_type = espp::detail::FocType::SPACE_VECTOR_PWM,
    +        .driver = driver,
    +        .sensor = mt6701,
    +        .velocity_pid_config =
    +            {
    +                .kp = 0.010f,
    +                .ki = 1.000f,
    +                .kd = 0.000f,
    +                .integrator_min = -1.0f, // same scale as output_min (so same scale as current)
    +                .integrator_max = 1.0f,  // same scale as output_max (so same scale as current)
    +                .output_min = -1.0, // velocity pid works on current (if we have phase resistance)
    +                .output_max = 1.0,  // velocity pid works on current (if we have phase resistance)
    +            },
    +        .angle_pid_config =
    +            {
    +                .kp = 7.000f,
    +                .ki = 0.300f,
    +                .kd = 0.010f,
    +                .integrator_min = -10.0f, // same scale as output_min (so same scale as velocity)
    +                .integrator_max = 10.0f,  // same scale as output_max (so same scale as velocity)
    +                .output_min = -20.0,      // angle pid works on velocity (rad/s)
    +                .output_max = 20.0,       // angle pid works on velocity (rad/s)
    +            },
    +        .log_level = espp::Logger::Verbosity::INFO});
    +
    +    static const auto motion_control_type = espp::detail::MotionControlType::VELOCITY;
    +    // static const auto motion_control_type = espp::detail::MotionControlType::ANGLE;
    +    // static const auto motion_control_type = espp::detail::MotionControlType::VELOCITY_OPENLOOP;
    +    // static const auto motion_control_type = espp::detail::MotionControlType::ANGLE_OPENLOOP;
    +
    +    // Set the motion control type and create a target for the motor (will be
    +    // updated in the target update task below)
    +    motor.set_motion_control_type(motion_control_type);
    +    std::atomic<float> target = 0;
    +
    +    auto motor_task_fn = [&motor, &target](std::mutex &m, std::condition_variable &cv) {
    +      static auto delay = std::chrono::duration<float>(core_update_period);
    +      auto start = std::chrono::high_resolution_clock::now();
    +      if (motion_control_type == espp::detail::MotionControlType::VELOCITY ||
    +          motion_control_type == espp::detail::MotionControlType::VELOCITY_OPENLOOP) {
    +        // if it's a velocity setpoint, convert it from RPM to rad/s
    +        motor.move(target * espp::RPM_TO_RADS);
    +      } else {
    +        motor.move(target);
    +      }
    +      // command the motor
    +      motor.loop_foc();
    +      // NOTE: sleeping in this way allows the sleep to exit early when the
    +      // task is being stopped / destroyed
    +      {
    +        std::unique_lock<std::mutex> lk(m);
    +        cv.wait_until(lk, start + delay);
    +      }
    +      // don't want to stop the task
    +      return false;
    +    };
    +    auto motor_task = espp::Task({.name = "Motor Task",
    +                                  .callback = motor_task_fn,
    +                                  .stack_size_bytes = 5 * 1024,
    +                                  .priority = 20,
    +                                  .core_id = 1,
    +                                  .log_level = espp::Logger::Verbosity::WARN});
    +    motor_task.start();
    +
    +
    +

    +

    Note

    This is a port (with some modifications) of the excellent work by SimpleFOC - https://simplefoc.com

    Public Types

    -
    -
    -enum class Direction
    -

    Sensor Direction Configuration.

    -

    Values:

    -
    -
    -enumerator CLOCKWISE
    -

    The sensor is mounted clockwise (so the positive phase direction leads to positive angle increase).

    -
    - -
    -
    -enumerator COUNTER_CLOCKWISE
    -

    The sensor is mounted counter-clockwise (so the positive phase direction leads to negative angle increase).

    -
    - -
    -
    -enumerator UNKNOWN
    -

    The direction is unknown.

    -
    - -
    - -
    -
    -enum class MotionControlType
    -

    The type of control loop the motor runs.

    -

    Values:

    -
    -
    -enumerator TORQUE
    -

    Torque-control (providing constant torque with current feedback).

    -
    - -
    -
    -enumerator VELOCITY
    -

    Velocity closed-loop control, using speed feedback from the sensor.

    -
    - -
    -
    -enumerator ANGLE
    -

    Angle closed-loop control, using angle feedback from the sensor.

    -
    - -
    -
    -enumerator VELOCITY_OPENLOOP
    -

    Velocity open-loop control, without feedback.

    -
    - -
    -
    -enumerator ANGLE_OPENLOOP
    -

    Angle open-loop control, without feedback.

    -
    - -
    - -
    -
    -enum class TorqueControlType
    -

    The type of torque control to provide.

    -
    -

    Note

    -

    VOLTAGE is the only one supported right now, since the other two require current sense.

    -
    -

    Values:

    -
    -
    -enumerator VOLTAGE
    -

    Torque control using voltage

    -
    - -
    -
    -enumerator DC_CURRENT
    -

    Torque control using DC current (one current magnitude)

    -
    - -
    -
    -enumerator FOC_CURRENT
    -

    Torque control using DQ currents

    -
    - -
    - -
    -
    -enum class FocType
    -

    How the voltages / pwms are calculated based on the magnitude and phase of the drive vector.

    -

    Values:

    -
    -
    -enumerator SINE_PWM
    -

    Sinusoidal PWM modulation

    -
    - -
    -
    -enumerator SPACE_VECTOR_PWM
    -

    Space Vector modulation

    -
    - -
    -
    -enumerator TRAPEZOID_120
    -
    - -
    -
    -enumerator TRAPEZOID_150
    -
    - -
    -
    typedef std::function<float(float raw)> filter_fn
    @@ -342,8 +332,8 @@

    Classes -
    -inline void set_motion_control_type(MotionControlType motion_control_type)
    +
    +inline void set_motion_control_type(detail::MotionControlType motion_control_type)

    Update the motoion control scheme the motor control loop uses.

    Parameters
    @@ -403,10 +393,10 @@

    Classes
    inline void loop_foc()
    -

    Main FOC loop for implementing the torque control, based on the configured TorqueControlType.

    +

    Main FOC loop for implementing the torque control, based on the configured detail::TorqueControlType.

    Note

    -

    Only TorqueControlType::VOLTAGE is supported right now, because the other types require current sense.

    +

    Only detail::TorqueControlType::VOLTAGE is supported right now, because the other types require current sense.

    @@ -416,11 +406,11 @@

    Classes

    Note

    -

    Units are based on the MotionControlType; radians if it’s MotionControlType::ANGLE or MotionControlType::ANGLE_OPENLOOP, radians/second if it’s MotionControlType::VELOCITY or MotionControlType::VELOCITY_OPENLOOP, Nm if it’s MotionControlType::TORQUE.

    +

    Units are based on the detail::MotionControlType; radians if it’s detail::MotionControlType::ANGLE or detail::MotionControlType::ANGLE_OPENLOOP, radians/second if it’s detail::MotionControlType::VELOCITY or detail::MotionControlType::VELOCITY_OPENLOOP, Nm if it’s detail::MotionControlType::TORQUE.

    Parameters
    -

    new_target – The new target for the configured MotionControlType.

    +

    new_target – The new target for the configured detail::MotionControlType.

    @@ -450,6 +440,12 @@

    Classes +
    +float phase_inductance = {0}
    +

    Motor phase inductance (Henries).

    +
    +
    float current_limit = {1.0f}
    @@ -464,13 +460,13 @@

    Classes
    -FocType foc_type = {FocType::SPACE_VECTOR_PWM}
    +detail::FocType foc_type = {detail::FocType::SPACE_VECTOR_PWM}

    How the voltage for the phases should be calculated.

    -TorqueControlType torque_controller = {TorqueControlType::VOLTAGE}
    +detail::TorqueControlType torque_controller = {detail::TorqueControlType::VOLTAGE}

    Torque controller type.

    @@ -545,6 +541,18 @@

    Classes +

    Header File

    + +

    +
    +

    Header File

    +
    diff --git a/docs/bldc/index.html b/docs/bldc/index.html index 1224a58b6..cbe85b410 100644 --- a/docs/bldc/index.html +++ b/docs/bldc/index.html @@ -126,7 +126,7 @@
  • »
  • BLDC APIs
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/cli.html b/docs/cli.html index 6a04db8c9..c20606c8d 100644 --- a/docs/cli.html +++ b/docs/cli.html @@ -132,7 +132,7 @@
  • »
  • Command Line Interface (CLI) APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -175,7 +175,7 @@

    API Reference

    Header File

    @@ -324,7 +324,7 @@

    Oneshot CLI Example

    Header File

    diff --git a/docs/color.html b/docs/color.html index 426e73e5b..5988a7c2a 100644 --- a/docs/color.html +++ b/docs/color.html @@ -129,7 +129,7 @@
  • »
  • Color APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -152,7 +152,7 @@

    API Reference

    Header File

    diff --git a/docs/controller.html b/docs/controller.html index 47f889f98..028d01404 100644 --- a/docs/controller.html +++ b/docs/controller.html @@ -129,7 +129,7 @@
  • »
  • Controller APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -150,7 +150,7 @@

    API Reference

    Header File

    diff --git a/docs/csv.html b/docs/csv.html index 5c1a45b47..09b8ab1bc 100644 --- a/docs/csv.html +++ b/docs/csv.html @@ -130,7 +130,7 @@
  • »
  • CSV APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -150,7 +150,7 @@

    API Reference

    Header File

    diff --git a/docs/display/display.html b/docs/display/display.html index 12564cc29..4523eae33 100644 --- a/docs/display/display.html +++ b/docs/display/display.html @@ -134,7 +134,7 @@
  • Display APIs »
  • Display
  • - Edit on GitHub + Edit on GitHub

  • @@ -152,7 +152,7 @@

    API Reference

    Header File

    diff --git a/docs/display/display_drivers.html b/docs/display/display_drivers.html index 5c8f8eee2..e45ecf60c 100644 --- a/docs/display/display_drivers.html +++ b/docs/display/display_drivers.html @@ -136,7 +136,7 @@
  • Display APIs »
  • Display Drivers
  • - Edit on GitHub + Edit on GitHub

  • @@ -154,7 +154,7 @@

    API Reference

    Header File

    @@ -431,7 +431,7 @@

    ili9341 Example

    Header File

    diff --git a/docs/display/index.html b/docs/display/index.html index 93255171c..2fb6f534e 100644 --- a/docs/display/index.html +++ b/docs/display/index.html @@ -126,7 +126,7 @@
  • »
  • Display APIs
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/encoder/abi_encoder.html b/docs/encoder/abi_encoder.html index 159eda7b6..a139d5e79 100644 --- a/docs/encoder/abi_encoder.html +++ b/docs/encoder/abi_encoder.html @@ -136,7 +136,7 @@
  • Encoder APIs »
  • ABI Encoder
  • - Edit on GitHub + Edit on GitHub

  • @@ -158,15 +158,253 @@

    API Reference

    Header File

    Classes

    -
    -

    Warning

    -

    doxygenclass: Cannot find class “espp::AbiEncoder” in doxygen xml output for project “esp-docs” from directory: /Users/bob/esp-cpp/espp/doc/_build/en/esp32/xml_in/

    +
    +
    +template<EncoderType T = EncoderType::ROTATIONAL>
    class espp::AbiEncoder
    +

    Class providing ABI/Z encoder functionality using the pulse count hardware in the ESP chips. Can be configured to measure purely linear (EncoderType::LINEAR) position or rotational (EncoderType::ROTATIONAL) position.

    +
    +

    AbiEncoder (ROTATIONAL) Example

    +

        espp::AbiEncoder<espp::EncoderType::ROTATIONAL> encoder({
    +        .a_gpio = 9,
    +        .b_gpio = 10,
    +        .high_limit = 8192,
    +        .low_limit = -8192,
    +        .counts_per_revolution = 4096,
    +    });
    +    encoder.start();
    +    auto task_fn = [&encoder](std::mutex &m, std::condition_variable &cv) {
    +      auto count = encoder.get_count();
    +      auto radians = encoder.get_radians();
    +      auto degrees = encoder.get_degrees();
    +      fmt::print("CRD: [{}, {:.3f}, {:.1f}]\n", count, radians, degrees);
    +      // NOTE: sleeping in this way allows the sleep to exit early when the
    +      // task is being stopped / destroyed
    +      {
    +        std::unique_lock<std::mutex> lk(m);
    +        cv.wait_for(lk, 250ms);
    +      }
    +      // don't want to stop the task
    +      return false;
    +    };
    +    auto task = espp::Task(
    +        {.name = "Abi Encoder", .callback = task_fn, .log_level = espp::Logger::Verbosity::INFO});
    +    task.start();
    +
    +

    +
    +
    +

    AbiEncoder (LINEAR) Example

    +

        espp::AbiEncoder<espp::EncoderType::LINEAR> encoder({
    +        .a_gpio = 9,
    +        .b_gpio = 10,
    +        .high_limit = 8192,
    +        .low_limit = -8192,
    +    });
    +    encoder.start();
    +    auto task_fn = [&encoder](std::mutex &m, std::condition_variable &cv) {
    +      // EncoderType::LINEAR only supports get_count
    +      auto count = encoder.get_count();
    +      fmt::print("Count: {}\n", count);
    +      // NOTE: sleeping in this way allows the sleep to exit early when the
    +      // task is being stopped / destroyed
    +      {
    +        std::unique_lock<std::mutex> lk(m);
    +        cv.wait_for(lk, 250ms);
    +      }
    +      // don't want to stop the task
    +      return false;
    +    };
    +    auto task = espp::Task(
    +        {.name = "Abi Encoder", .callback = task_fn, .log_level = espp::Logger::Verbosity::INFO});
    +    task.start();
    +
    +
    +

    +
    +
    +

    Public Functions

    +
    +
    +template<EncoderType type = T>
    inline AbiEncoder(const Config &config)
    +

    Initialize the pulse count hardware for the ABI encoder.

    +
    +

    Note

    +

    This does not start the pulse count hardware, for that you must call the start() method at least once.

    +
    +
    + +
    +
    +inline ~AbiEncoder()
    +

    Stop the pulse count hardware then disable and delete the channels / units associated with this AbiEncoder.

    +
    + +
    +
    +inline int get_count()
    +

    Get the total count (including under/overflows) since it was created or clear()-ed last.

    +
    +
    Returns
    +

    Total count as a signed integer.

    +
    +
    +
    + +
    +
    +template<EncoderType type = T>
    inline std::enable_if<type == EncoderType::ROTATIONAL, float>::type get_revolutions()
    +

    Get the total number of revolutions this ABI encoder has measured since it was created or clear()-ed last.

    +
    +

    Note

    +

    This is only available if the AbiEncoder is EncoderType::ROTATIONAL.

    +
    +
    +
    Returns
    +

    Number of revolutions, as a floating point number.

    +
    +
    +
    + +
    +
    +template<EncoderType type = T>
    inline std::enable_if<type == EncoderType::ROTATIONAL, float>::type get_radians()
    +

    Get the total number of radians this ABI encoder has measured since it was created or clear()-ed last.

    +
    +

    Note

    +

    This is only available if the AbiEncoder is EncoderType::ROTATIONAL.

    +
    +
    +
    Returns
    +

    Number of radians, as a floating point number.

    +
    +
    +
    + +
    +
    +template<EncoderType type = T>
    inline std::enable_if<type == EncoderType::ROTATIONAL, float>::type get_degrees()
    +

    Get the total number of degrees this ABI encoder has measured since it was created or clear()-ed last.

    +
    +

    Note

    +

    This is only available if the AbiEncoder is EncoderType::ROTATIONAL.

    +
    +
    +
    Returns
    +

    Number of degrees, as a floating point number.

    +
    +
    +
    + +
    +
    +inline bool start()
    +

    Start the pulse count hardware.

    +
    +
    Returns
    +

    True if it was successfully started.

    +
    +
    +
    + +
    +
    +inline bool stop()
    +

    Stop the pulse count hardware.

    +
    +

    Note

    +

    This does not clear the counter so calling start() later will allow it to pick up where it left off.

    +
    +
    +
    Returns
    +

    True if it was successfully stopped.

    +
    +
    +
    + +
    +
    +inline bool clear()
    +

    Clear the hardware counter and internal accumulator.

    +
    +
    Returns
    +

    True if the pulse count hardware was cleared.

    +
    +
    +
    + +
    +
    +
    +struct Config
    +
    +

    Public Members

    +
    +
    +int a_gpio
    +

    GPIO number for the a channel pulse.

    +
    + +
    +
    +int b_gpio
    +

    GPIO number for the b channel pulse.

    +
    + +
    +
    +int i_gpio = {-1}
    +

    GPIO number for the index (I/Z) pulse).

    +
    +

    Note

    +

    This is currently unused.

    +
    +
    + +
    +
    +int16_t high_limit
    +

    High limit for the hardware counter before it resets to 0. Lowering (to zero) this value increases the number of interrupts / overflows of the counter.

    +
    + +
    +
    +int16_t low_limit
    +

    Low limit for the hardware counter before it resets to 0. Lowering (to zero) this value increases the number of interrupts / overflows of the counter.

    +
    + +
    +
    +size_t counts_per_revolution = {0}
    +

    How many counts equate to a single revolution.

    +
    +

    Note

    +

    this unused if the type is not EncoderType::ROTATIONAL.

    +
    +
    + +
    +
    +size_t max_glitch_ns = {1000}
    +

    Max glitch witdth in nanoseconds that is ignored. 0 will disable the glitch filter.

    +
    + +
    +
    +espp::Logger::Verbosity log_level = {espp::Logger::Verbosity::WARN}
    +

    Verbosity for the adc logger.

    +
    + +
    +
    + +
    +
    diff --git a/docs/encoder/as5600.html b/docs/encoder/as5600.html index 920edf7b6..8371075cd 100644 --- a/docs/encoder/as5600.html +++ b/docs/encoder/as5600.html @@ -136,7 +136,7 @@
  • Encoder APIs »
  • AS5600 Magnetic Encoder
  • - Edit on GitHub + Edit on GitHub

  • @@ -169,7 +169,7 @@

    API Reference

    Header File

    diff --git a/docs/encoder/encoder_types.html b/docs/encoder/encoder_types.html index ffced63eb..96b6ceb64 100644 --- a/docs/encoder/encoder_types.html +++ b/docs/encoder/encoder_types.html @@ -135,7 +135,7 @@
  • Encoder APIs »
  • Encoder Types
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/encoder/index.html b/docs/encoder/index.html index 81bcde7fd..84d40b94f 100644 --- a/docs/encoder/index.html +++ b/docs/encoder/index.html @@ -128,7 +128,7 @@
  • »
  • Encoder APIs
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/encoder/mt6701.html b/docs/encoder/mt6701.html index fa5e472b3..7f9f1e77f 100644 --- a/docs/encoder/mt6701.html +++ b/docs/encoder/mt6701.html @@ -136,7 +136,7 @@
  • Encoder APIs »
  • MT6701 Magnetic Encoder
  • - Edit on GitHub + Edit on GitHub

  • @@ -169,7 +169,7 @@

    API Reference

    Header File

    diff --git a/docs/event_manager.html b/docs/event_manager.html index bc4d55125..67a495a7c 100644 --- a/docs/event_manager.html +++ b/docs/event_manager.html @@ -129,7 +129,7 @@
  • »
  • Event Manager APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -155,7 +155,7 @@

    API Reference

    Header File

    diff --git a/docs/file_system.html b/docs/file_system.html index e1da0b924..b14f244cd 100644 --- a/docs/file_system.html +++ b/docs/file_system.html @@ -129,7 +129,7 @@
  • »
  • File System APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -152,7 +152,7 @@

    API Reference

    Header File

    diff --git a/docs/filters/biquad.html b/docs/filters/biquad.html index 4439751de..fd7c737fb 100644 --- a/docs/filters/biquad.html +++ b/docs/filters/biquad.html @@ -138,7 +138,7 @@
  • Filter APIs »
  • Biquad Filter
  • - Edit on GitHub + Edit on GitHub

  • @@ -155,7 +155,7 @@

    API Reference

    Header File

    diff --git a/docs/filters/butterworth.html b/docs/filters/butterworth.html index 0696690bd..f94b96fcd 100644 --- a/docs/filters/butterworth.html +++ b/docs/filters/butterworth.html @@ -137,7 +137,7 @@
  • Filter APIs »
  • Butterworth Filter
  • - Edit on GitHub + Edit on GitHub

  • @@ -155,7 +155,7 @@

    API Reference

    Header File

    diff --git a/docs/filters/index.html b/docs/filters/index.html index ad59d368b..ee927445b 100644 --- a/docs/filters/index.html +++ b/docs/filters/index.html @@ -129,7 +129,7 @@
  • »
  • Filter APIs
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/filters/lowpass.html b/docs/filters/lowpass.html index a09e5368b..ccd3d3eaa 100644 --- a/docs/filters/lowpass.html +++ b/docs/filters/lowpass.html @@ -137,7 +137,7 @@
  • Filter APIs »
  • Lowpass Filter
  • - Edit on GitHub + Edit on GitHub

  • @@ -156,7 +156,7 @@

    API Reference

    Header File

    diff --git a/docs/filters/sos.html b/docs/filters/sos.html index e7e6b17ec..e8f456b9c 100644 --- a/docs/filters/sos.html +++ b/docs/filters/sos.html @@ -137,7 +137,7 @@
  • Filter APIs »
  • Second Order Sections (SoS) Filter
  • - Edit on GitHub + Edit on GitHub

  • @@ -155,7 +155,7 @@

    API Reference

    Header File

    diff --git a/docs/filters/transfer_function.html b/docs/filters/transfer_function.html index 1a408c75f..1ea192600 100644 --- a/docs/filters/transfer_function.html +++ b/docs/filters/transfer_function.html @@ -136,7 +136,7 @@
  • Filter APIs »
  • Transfer Function API
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/ftp/ftp_server.html b/docs/ftp/ftp_server.html index a2654cd65..a53051b26 100644 --- a/docs/ftp/ftp_server.html +++ b/docs/ftp/ftp_server.html @@ -136,7 +136,7 @@
  • FTP APIs »
  • FTP Server
  • - Edit on GitHub + Edit on GitHub

  • @@ -158,7 +158,7 @@

    API Reference

    Header File

    @@ -218,7 +218,7 @@

    Classes

    Header File

    diff --git a/docs/ftp/index.html b/docs/ftp/index.html index a733dc8a7..2e96edd2e 100644 --- a/docs/ftp/index.html +++ b/docs/ftp/index.html @@ -125,7 +125,7 @@
  • »
  • FTP APIs
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/genindex.html b/docs/genindex.html index 38c9918e4..3f8f04b95 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -119,7 +119,7 @@
  • »
  • Index
  • - Edit on GitHub + Edit on GitHub

  • @@ -157,6 +157,44 @@

    E

  • espp::__serialization_documentation__ (C++ class)
  • espp::__state_machine_documentation__ (C++ class) +
  • +
  • espp::AbiEncoder (C++ class) +
  • +
  • espp::AbiEncoder::AbiEncoder (C++ function) +
  • +
  • espp::AbiEncoder::clear (C++ function) +
  • +
  • espp::AbiEncoder::Config (C++ struct) +
  • +
  • espp::AbiEncoder::Config::a_gpio (C++ member) +
  • +
  • espp::AbiEncoder::Config::b_gpio (C++ member) +
  • +
  • espp::AbiEncoder::Config::counts_per_revolution (C++ member) +
  • +
  • espp::AbiEncoder::Config::high_limit (C++ member) +
  • +
  • espp::AbiEncoder::Config::i_gpio (C++ member) +
  • +
  • espp::AbiEncoder::Config::log_level (C++ member) +
  • +
  • espp::AbiEncoder::Config::low_limit (C++ member) +
  • +
  • espp::AbiEncoder::Config::max_glitch_ns (C++ member) +
  • +
  • espp::AbiEncoder::get_count (C++ function) +
  • +
  • espp::AbiEncoder::get_degrees (C++ function) +
  • +
  • espp::AbiEncoder::get_radians (C++ function) +
  • +
  • espp::AbiEncoder::get_revolutions (C++ function) +
  • +
  • espp::AbiEncoder::start (C++ function) +
  • +
  • espp::AbiEncoder::stop (C++ function) +
  • +
  • espp::AbiEncoder::~AbiEncoder (C++ function)
  • espp::Ads1x15 (C++ class)
  • @@ -411,6 +449,8 @@

    E

  • espp::BldcDriver::Config::gpio_c_l (C++ member)
  • espp::BldcDriver::Config::gpio_enable (C++ member) +
  • +
  • espp::BldcDriver::Config::gpio_fault (C++ member)
  • espp::BldcDriver::Config::limit_voltage (C++ member)
  • @@ -427,6 +467,10 @@

    E

  • espp::BldcDriver::get_power_supply_limit (C++ function)
  • espp::BldcDriver::get_voltage_limit (C++ function) +
  • +
  • espp::BldcDriver::is_enabled (C++ function) +
  • +
  • espp::BldcDriver::is_faulted (C++ function)
  • espp::BldcDriver::set_phase_state (C++ function)
  • @@ -435,6 +479,32 @@

    E

  • espp::BldcDriver::set_voltage (C++ function)
  • espp::BldcDriver::~BldcDriver (C++ function) +
  • +
  • espp::BldcHaptics (C++ class) +
  • +
  • espp::BldcHaptics::BldcHaptics (C++ function) +
  • +
  • espp::BldcHaptics::Config (C++ struct) +
  • +
  • espp::BldcHaptics::Config::kd_factor_max (C++ member) +
  • +
  • espp::BldcHaptics::Config::kd_factor_min (C++ member) +
  • +
  • espp::BldcHaptics::Config::kp_factor (C++ member) +
  • +
  • espp::BldcHaptics::Config::log_level (C++ member) +
  • +
  • espp::BldcHaptics::Config::motor (C++ member) +
  • +
  • espp::BldcHaptics::get_position (C++ function) +
  • +
  • espp::BldcHaptics::play_haptic (C++ function) +
  • +
  • espp::BldcHaptics::start (C++ function) +
  • +
  • espp::BldcHaptics::stop (C++ function) +
  • +
  • espp::BldcHaptics::update_detent_config (C++ function)
  • espp::BldcMotor (C++ class)
  • @@ -459,6 +529,8 @@

    E

  • espp::BldcMotor::Config::log_level (C++ member)
  • espp::BldcMotor::Config::num_pole_pairs (C++ member) +
  • +
  • espp::BldcMotor::Config::phase_inductance (C++ member)
  • espp::BldcMotor::Config::phase_resistance (C++ member)
  • @@ -471,30 +543,12 @@

    E

  • espp::BldcMotor::Config::velocity_filter (C++ member)
  • espp::BldcMotor::Config::velocity_limit (C++ member) -
  • -
  • espp::BldcMotor::Direction (C++ enum) -
  • -
  • espp::BldcMotor::Direction::CLOCKWISE (C++ enumerator) -
  • -
  • espp::BldcMotor::Direction::COUNTER_CLOCKWISE (C++ enumerator) -
  • -
  • espp::BldcMotor::Direction::UNKNOWN (C++ enumerator)
  • espp::BldcMotor::disable (C++ function)
  • espp::BldcMotor::enable (C++ function)
  • espp::BldcMotor::filter_fn (C++ type) -
  • -
  • espp::BldcMotor::FocType (C++ enum) -
  • -
  • espp::BldcMotor::FocType::SINE_PWM (C++ enumerator) -
  • -
  • espp::BldcMotor::FocType::SPACE_VECTOR_PWM (C++ enumerator) -
  • -
  • espp::BldcMotor::FocType::TRAPEZOID_120 (C++ enumerator) -
  • -
  • espp::BldcMotor::FocType::TRAPEZOID_150 (C++ enumerator)
  • espp::BldcMotor::get_electrical_angle (C++ function)
  • @@ -503,32 +557,12 @@

    E

  • espp::BldcMotor::get_shaft_velocity (C++ function)
  • espp::BldcMotor::loop_foc (C++ function) -
  • -
  • espp::BldcMotor::MotionControlType (C++ enum) -
  • -
  • espp::BldcMotor::MotionControlType::ANGLE (C++ enumerator) -
  • -
  • espp::BldcMotor::MotionControlType::ANGLE_OPENLOOP (C++ enumerator) -
  • -
  • espp::BldcMotor::MotionControlType::TORQUE (C++ enumerator) -
  • -
  • espp::BldcMotor::MotionControlType::VELOCITY (C++ enumerator) -
  • -
  • espp::BldcMotor::MotionControlType::VELOCITY_OPENLOOP (C++ enumerator)
  • espp::BldcMotor::move (C++ function)
  • -
  • espp::BldcMotor::set_motion_control_type (C++ function) +
  • espp::BldcMotor::set_motion_control_type (C++ function)
  • espp::BldcMotor::set_phase_voltage (C++ function) -
  • -
  • espp::BldcMotor::TorqueControlType (C++ enum) -
  • -
  • espp::BldcMotor::TorqueControlType::DC_CURRENT (C++ enumerator) -
  • -
  • espp::BldcMotor::TorqueControlType::FOC_CURRENT (C++ enumerator) -
  • -
  • espp::BldcMotor::TorqueControlType::VOLTAGE (C++ enumerator)
  • espp::BldcMotor::~BldcMotor (C++ function)
  • @@ -1248,6 +1282,8 @@

    E

  • espp::Mcp23x17::DEFAULT_ADDRESS (C++ member)
  • + + -
    @@ -177,19 +177,19 @@

    API Reference

    Header File

    Header File

    Header File

    @@ -240,36 +240,25 @@

    Classes -

    Example 1: Bounded with magnetic detents

    +

    Example 1: Basic usage

        using BldcHaptics = espp::BldcHaptics<BldcMotor>;
     
         auto haptic_motor = BldcHaptics({.motor = motor,
    -                                     .kp_factor = 1,
    -                                     .kd_factor_min = 0.1,
    -                                     .kd_factor_max = 0.5,
    +                                     .kp_factor = 2,
    +                                     .kd_factor_min = 0.01,
    +                                     .kd_factor_max = 0.04,
                                          .log_level = espp::Logger::Verbosity::INFO});
     
    +    // auto detent_config = espp::detail::UNBOUNDED_NO_DETENTS;
         // auto detent_config = espp::detail::BOUNDED_NO_DETENTS;
         // auto detent_config = espp::detail::MULTI_REV_NO_DETENTS;
    -    // auto detent_config = espp::detail::COARSE_VALUES_STRONG_DETENTS;
    -    auto detent_config = espp::detail::MAGNETIC_DETENTS;
    +    // auto detent_config = espp::detail::ON_OFF_STRONG_DETENTS;
    +    auto detent_config = espp::detail::COARSE_VALUES_STRONG_DETENTS;
    +    // auto detent_config = espp::detail::FINE_VALUES_NO_DETENTS;
    +    // auto detent_config = espp::detail::FINE_VALUES_WITH_DETENTS;
    +    // auto detent_config = espp::detail::MAGNETIC_DETENTS;
         // auto detent_config = espp::detail::RETURN_TO_CENTER_WITH_DETENTS;
     
    -    if (detent_config == espp::detail::BOUNDED_NO_DETENTS) {
    -      logger.info("Setting detent config to BOUNDED_NO_DETENTS");
    -    }
    -    if (detent_config == espp::detail::MULTI_REV_NO_DETENTS) {
    -      logger.info("Setting detent config to MULTI_REV_NO_DETENTS");
    -    }
    -    if (detent_config == espp::detail::COARSE_VALUES_STRONG_DETENTS) {
    -      logger.info("Setting detent config to COARSE_VALUES_STRONG_DETENTS");
    -    }
    -    if (detent_config == espp::detail::MAGNETIC_DETENTS) {
    -      logger.info("Setting detent config to MAGNETIC_DETENTS");
    -    }
    -    if (detent_config == espp::detail::RETURN_TO_CENTER_WITH_DETENTS) {
    -      logger.info("Setting detent config to RETURN_TO_CENTER_WITH_DETENTS");
    -    }
         logger.info("{}", detent_config);
     
         haptic_motor.update_detent_config(detent_config);
    @@ -277,16 +266,17 @@ 

    Example 1: Bounded with magnetic detents // If we want to change the detent config we can call update_detent_config() // and it will update the detent config in the background thread. haptic_motor.start(); - - // TODO: test the haptic buzz / click - if (0) { - logger.info("Playing haptic buzz for 1 second"); - haptic_motor.play_haptic(espp::detail::HapticConfig{ +

    +
    +

    +
    +
    +

    Example 2: Playing a haptic click / buzz

    +

          haptic_motor.play_haptic(espp::detail::HapticConfig{
               .strength = 5.0f,
               .frequency = 200.0f, // Hz, NOTE: frequency is unused for now
               .duration = 1s       // NOTE: duration is unused for now
           });
    -    }
     

    @@ -320,6 +310,17 @@

    Example 1: Bounded with magnetic detents +
    +inline float get_position() const
    +

    Get the current position of the haptic motor.

    +
    +
    Returns
    +

    Current position of the haptic motor

    +
    +
    +
    +
    inline void update_detent_config(const detail::DetentConfig &config)
    @@ -360,8 +361,8 @@

    Example 1: Bounded with magnetic detents
    -float kp_factor = {4}
    -

    Factor to multiply the detent strength by to get kp (default 4). Used for both detents and end stops.

    +float kp_factor = {2}
    +

    Factor to multiply the detent strength by to get kp (default 2). Used for both detents and end stops.

    Note

    Depending on the motor, this may need to be adjusted to get the desired behavior.

    @@ -370,8 +371,8 @@

    Example 1: Bounded with magnetic detents
    -float kd_factor_min = {0.02}
    -

    Min Factor to multiply the detent strength by to get kd (default 0.02).

    +float kd_factor_min = {0.01}
    +

    Min Factor to multiply the detent strength by to get kd (default 0.01).

    Note

    Depending on the motor, this may need to be adjusted to get the desired behavior.

    @@ -380,8 +381,8 @@

    Example 1: Bounded with magnetic detents
    -float kd_factor_max = {0.08}
    -

    Max Factor to multiply the detent strength by to get kd (default 0.08).

    +float kd_factor_max = {0.04}
    +

    Max Factor to multiply the detent strength by to get kd (default 0.04).

    Note

    Depending on the motor, this may need to be adjusted to get the desired behavior.

    diff --git a/docs/haptics/drv2605.html b/docs/haptics/drv2605.html index 439f4992d..86d65feac 100644 --- a/docs/haptics/drv2605.html +++ b/docs/haptics/drv2605.html @@ -39,7 +39,7 @@ - + @@ -88,6 +88,7 @@
  • Filter APIs
  • FTP APIs
  • Haptics APIs
  • @@ -577,7 +578,7 @@

    DRV2605 Example - + diff --git a/docs/haptics/index.html b/docs/haptics/index.html index dbf90dea1..d654bf44f 100644 --- a/docs/haptics/index.html +++ b/docs/haptics/index.html @@ -38,7 +38,7 @@ - + @@ -88,6 +88,7 @@
  • Filter APIs
  • FTP APIs
  • Haptics APIs
  • @@ -125,7 +126,7 @@
  • »
  • Haptics APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -137,6 +138,7 @@

    Haptics APIs

    @@ -151,7 +153,7 @@

    Haptics APIs - +
    diff --git a/docs/index.html b/docs/index.html index c47be6208..0e2f655db 100644 --- a/docs/index.html +++ b/docs/index.html @@ -121,7 +121,7 @@
  • »
  • ESPP Documentation
  • - Edit on GitHub + Edit on GitHub

  • @@ -196,6 +196,7 @@

    ESPP DocumentationHaptics APIs diff --git a/docs/input/index.html b/docs/input/index.html index 8cfa05d1a..021c4123a 100644 --- a/docs/input/index.html +++ b/docs/input/index.html @@ -125,7 +125,7 @@
  • »
  • Input APIs
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/input/touchpad_input.html b/docs/input/touchpad_input.html index 1affadd50..780657341 100644 --- a/docs/input/touchpad_input.html +++ b/docs/input/touchpad_input.html @@ -133,7 +133,7 @@
  • Input APIs »
  • Touchpad Input
  • - Edit on GitHub + Edit on GitHub

  • @@ -151,7 +151,7 @@

    API Reference

    Header File

    diff --git a/docs/io_expander/aw9523.html b/docs/io_expander/aw9523.html index 9effe0e84..75f9ca8b8 100644 --- a/docs/io_expander/aw9523.html +++ b/docs/io_expander/aw9523.html @@ -134,7 +134,7 @@
  • IO Expander APIs »
  • AW9523 I/O Expander
  • - Edit on GitHub + Edit on GitHub

  • @@ -153,7 +153,7 @@

    API Reference

    Header File

    diff --git a/docs/io_expander/index.html b/docs/io_expander/index.html index 2c5595a73..959717fed 100644 --- a/docs/io_expander/index.html +++ b/docs/io_expander/index.html @@ -126,7 +126,7 @@
  • »
  • IO Expander APIs
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/io_expander/mcp23x17.html b/docs/io_expander/mcp23x17.html index 890e92436..628f19aab 100644 --- a/docs/io_expander/mcp23x17.html +++ b/docs/io_expander/mcp23x17.html @@ -134,7 +134,7 @@
  • IO Expander APIs »
  • MCP23x17 I/O Expander
  • - Edit on GitHub + Edit on GitHub

  • @@ -151,7 +151,7 @@

    API Reference

    Header File

    diff --git a/docs/joystick.html b/docs/joystick.html index a880f1552..39458186f 100644 --- a/docs/joystick.html +++ b/docs/joystick.html @@ -130,7 +130,7 @@
  • »
  • Joystick APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -153,7 +153,7 @@

    API Reference

    Header File

    diff --git a/docs/led.html b/docs/led.html index 2a83f294c..331bb221b 100644 --- a/docs/led.html +++ b/docs/led.html @@ -130,7 +130,7 @@
  • »
  • LED APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -152,7 +152,7 @@

    API Reference

    Header File

    diff --git a/docs/logger.html b/docs/logger.html index 5211059e1..dddf4e98f 100644 --- a/docs/logger.html +++ b/docs/logger.html @@ -131,7 +131,7 @@
  • »
  • Logging APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -158,7 +158,7 @@

    API Reference

    Header File

    @@ -194,8 +194,10 @@

    Basic Example

    Threaded Logging and Verbosity Example

        // create loggers
    -    auto logger1 = espp::Logger({.tag = "Thread 1", .rate_limit = 500ms, .level = espp::Logger::Verbosity::INFO});
    -    auto logger2 = espp::Logger({.tag = "Thread 2", .rate_limit = 1s, .level = espp::Logger::Verbosity::DEBUG});
    +    auto logger1 = espp::Logger(
    +        {.tag = "Thread 1", .rate_limit = 500ms, .level = espp::Logger::Verbosity::INFO});
    +    auto logger2 = espp::Logger(
    +        {.tag = "Thread 2", .rate_limit = 1s, .level = espp::Logger::Verbosity::DEBUG});
         // lambda for logging to those two loggers from multiple threads
         auto logger_fn = [](espp::Logger *logger) {
           size_t loop_iteration{0};
    @@ -446,7 +448,7 @@ 

    Threaded Logging and Verbosity Example
    -std::chrono::duration<float> rate_limit = {0}
    +std::chrono::duration<float> rate_limit{0}

    The rate limit for the logger. Optional, if <= 0 no rate limit.

    Note

    diff --git a/docs/math/bezier.html b/docs/math/bezier.html index 5209efa9e..e573bd593 100644 --- a/docs/math/bezier.html +++ b/docs/math/bezier.html @@ -137,7 +137,7 @@
  • Math APIs »
  • Bezier
  • - Edit on GitHub + Edit on GitHub

  • @@ -155,7 +155,7 @@

    API Reference

    Header File

    diff --git a/docs/math/fast_math.html b/docs/math/fast_math.html index 387c71dbb..e8149a084 100644 --- a/docs/math/fast_math.html +++ b/docs/math/fast_math.html @@ -136,7 +136,7 @@
  • Math APIs »
  • Fast Math
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/math/gaussian.html b/docs/math/gaussian.html index a8b4fc603..6665c3bae 100644 --- a/docs/math/gaussian.html +++ b/docs/math/gaussian.html @@ -138,7 +138,7 @@
  • Math APIs »
  • Gaussian
  • - Edit on GitHub + Edit on GitHub

  • @@ -158,7 +158,7 @@

    API Reference

    Header File

    diff --git a/docs/math/index.html b/docs/math/index.html index 99e08258b..b3ea2ad0f 100644 --- a/docs/math/index.html +++ b/docs/math/index.html @@ -129,7 +129,7 @@
  • »
  • Math APIs
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/math/range_mapper.html b/docs/math/range_mapper.html index 94fa3d22c..d4f8da871 100644 --- a/docs/math/range_mapper.html +++ b/docs/math/range_mapper.html @@ -137,7 +137,7 @@
  • Math APIs »
  • Range Mapper
  • - Edit on GitHub + Edit on GitHub

  • @@ -154,7 +154,7 @@

    API Reference

    Header File

    diff --git a/docs/math/vector2d.html b/docs/math/vector2d.html index f9bdee28f..27a81f055 100644 --- a/docs/math/vector2d.html +++ b/docs/math/vector2d.html @@ -137,7 +137,7 @@
  • Math APIs »
  • Vector2d
  • - Edit on GitHub + Edit on GitHub

  • @@ -154,7 +154,7 @@

    API Reference

    Header File

    diff --git a/docs/monitor.html b/docs/monitor.html index 0b21b2966..f0715cc09 100644 --- a/docs/monitor.html +++ b/docs/monitor.html @@ -130,7 +130,7 @@
  • »
  • Monitoring APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -155,7 +155,7 @@

    API Reference

    Header File

    diff --git a/docs/network/index.html b/docs/network/index.html index 889f64e66..a73e1571d 100644 --- a/docs/network/index.html +++ b/docs/network/index.html @@ -127,7 +127,7 @@
  • »
  • Network APIs
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/network/socket.html b/docs/network/socket.html index eff4d013d..c3858330f 100644 --- a/docs/network/socket.html +++ b/docs/network/socket.html @@ -135,7 +135,7 @@
  • Network APIs »
  • Sockets
  • - Edit on GitHub + Edit on GitHub

  • @@ -153,7 +153,7 @@

    API Reference

    Header File

    diff --git a/docs/network/tcp_socket.html b/docs/network/tcp_socket.html index f5e52377d..a20faab28 100644 --- a/docs/network/tcp_socket.html +++ b/docs/network/tcp_socket.html @@ -135,7 +135,7 @@
  • Network APIs »
  • TCP Sockets
  • - Edit on GitHub + Edit on GitHub

  • @@ -154,7 +154,7 @@

    API Reference

    Header File

    diff --git a/docs/network/udp_socket.html b/docs/network/udp_socket.html index 6977b32f7..f471c74ba 100644 --- a/docs/network/udp_socket.html +++ b/docs/network/udp_socket.html @@ -135,7 +135,7 @@
  • Network APIs »
  • UDP Sockets
  • - Edit on GitHub + Edit on GitHub

  • @@ -153,7 +153,7 @@

    API Reference

    Header File

    diff --git a/docs/nfc/index.html b/docs/nfc/index.html index 319e002d7..ba7d38c62 100644 --- a/docs/nfc/index.html +++ b/docs/nfc/index.html @@ -126,7 +126,7 @@
  • »
  • NFC APIs
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/nfc/ndef.html b/docs/nfc/ndef.html index 14abc90cb..48c225026 100644 --- a/docs/nfc/ndef.html +++ b/docs/nfc/ndef.html @@ -135,7 +135,7 @@
  • NFC APIs »
  • NDEF
  • - Edit on GitHub + Edit on GitHub

  • @@ -152,7 +152,7 @@

    API Reference

    Header File

    diff --git a/docs/nfc/st25dv.html b/docs/nfc/st25dv.html index 9d5a28ee6..056748e74 100644 --- a/docs/nfc/st25dv.html +++ b/docs/nfc/st25dv.html @@ -135,7 +135,7 @@
  • NFC APIs »
  • ST25DV
  • - Edit on GitHub + Edit on GitHub

  • @@ -156,7 +156,7 @@

    API Reference

    Header File

    diff --git a/docs/objects.inv b/docs/objects.inv index 21022acd0..38d05ab1a 100644 Binary files a/docs/objects.inv and b/docs/objects.inv differ diff --git a/docs/pid.html b/docs/pid.html index 1284bb669..616766bc6 100644 --- a/docs/pid.html +++ b/docs/pid.html @@ -130,7 +130,7 @@
  • »
  • PID APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -152,7 +152,7 @@

    API Reference

    Header File

    @@ -160,7 +160,7 @@

    Classes
    class espp::Pid
    -

    Simple PID (proportional, integral, derivative) controller class with integrator clamping, output clamping, and prevention of integrator windup during output saturation. This class is thread-safe, so you can update(), clear(), and change_gains() from multiple threads if needed.

    +

    Simple PID (proportional, integral, derivative) controller class with integrator clamping, output clamping, and prevention of integrator windup during output saturation. This class is thread-safe, so you can update(), clear(), and change_gains() from multiple threads if needed.

    Basic PID Example

        espp::Pid pid({.kp = 1.0f,
    @@ -229,12 +229,29 @@ 

    Complex PID Example
    -
    -inline void change_gains(const Config &config)
    +
    +inline void change_gains(const Config &config, bool reset_state = true)

    Change the gains and other configuration for the PID controller.

    Parameters
    -

    config – Configuration struct with new gains and sampling time.

    +
      +
    • config – Configuration struct with new gains and sampling time.

    • +
    • reset_state – Reset / clear the PID controller state.

    • +
    +
    +
    +
    + +
    +
    +inline void set_config(const Config &config, bool reset_state = true)
    +

    Change the gains and other configuration for the PID controller.

    +
    +
    Parameters
    +
      +
    • config – Configuration struct with new gains and sampling time.

    • +
    • reset_state – Reset / clear the PID controller state.

    • +
    diff --git a/docs/rmt.html b/docs/rmt.html index 13ab577a4..67dc2f0f5 100644 --- a/docs/rmt.html +++ b/docs/rmt.html @@ -131,7 +131,7 @@
  • »
  • Remote Control Transceiver (RMT)
  • - Edit on GitHub + Edit on GitHub

  • @@ -158,7 +158,7 @@

    API Reference

    Header File

    @@ -321,7 +321,7 @@

    Example 1: Transmitting data

    Header File

    diff --git a/docs/rtsp.html b/docs/rtsp.html index 5989c2828..7d3bda201 100644 --- a/docs/rtsp.html +++ b/docs/rtsp.html @@ -145,7 +145,7 @@
  • »
  • RTSP APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -185,7 +185,7 @@

    API Reference

    Header File

    @@ -444,7 +444,7 @@

    Example

    Header File

    @@ -602,7 +602,7 @@

    example

    Header File

    @@ -759,7 +759,7 @@

    Classes

    Header File

    @@ -901,7 +901,7 @@

    Classes

    Header File

    @@ -1200,7 +1200,7 @@

    Classes

    Header File

    @@ -1216,7 +1216,7 @@

    Classes

    Header File

    @@ -1303,7 +1303,7 @@

    Classes

    Header File

    diff --git a/docs/searchindex.js b/docs/searchindex.js index e30a1b9bd..018fa56ee 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["adc/adc_types","adc/ads1x15","adc/continuous_adc","adc/index","adc/oneshot_adc","bldc/bldc_driver","bldc/bldc_motor","bldc/index","cli","color","controller","csv","display/display","display/display_drivers","display/index","encoder/abi_encoder","encoder/as5600","encoder/encoder_types","encoder/index","encoder/mt6701","event_manager","file_system","filters/biquad","filters/butterworth","filters/index","filters/lowpass","filters/sos","filters/transfer_function","ftp/ftp_server","ftp/index","haptics/drv2605","haptics/index","index","input/index","input/touchpad_input","io_expander/aw9523","io_expander/index","io_expander/mcp23x17","joystick","led","logger","math/bezier","math/fast_math","math/gaussian","math/index","math/range_mapper","math/vector2d","monitor","network/index","network/socket","network/tcp_socket","network/udp_socket","nfc/index","nfc/ndef","nfc/st25dv","pid","rmt","rtsp","serialization","state_machine","task","wifi/index","wifi/wifi_ap","wifi/wifi_sta"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.todo":2,sphinx:56},filenames:["adc/adc_types.rst","adc/ads1x15.rst","adc/continuous_adc.rst","adc/index.rst","adc/oneshot_adc.rst","bldc/bldc_driver.rst","bldc/bldc_motor.rst","bldc/index.rst","cli.rst","color.rst","controller.rst","csv.rst","display/display.rst","display/display_drivers.rst","display/index.rst","encoder/abi_encoder.rst","encoder/as5600.rst","encoder/encoder_types.rst","encoder/index.rst","encoder/mt6701.rst","event_manager.rst","file_system.rst","filters/biquad.rst","filters/butterworth.rst","filters/index.rst","filters/lowpass.rst","filters/sos.rst","filters/transfer_function.rst","ftp/ftp_server.rst","ftp/index.rst","haptics/drv2605.rst","haptics/index.rst","index.rst","input/index.rst","input/touchpad_input.rst","io_expander/aw9523.rst","io_expander/index.rst","io_expander/mcp23x17.rst","joystick.rst","led.rst","logger.rst","math/bezier.rst","math/fast_math.rst","math/gaussian.rst","math/index.rst","math/range_mapper.rst","math/vector2d.rst","monitor.rst","network/index.rst","network/socket.rst","network/tcp_socket.rst","network/udp_socket.rst","nfc/index.rst","nfc/ndef.rst","nfc/st25dv.rst","pid.rst","rmt.rst","rtsp.rst","serialization.rst","state_machine.rst","task.rst","wifi/index.rst","wifi/wifi_ap.rst","wifi/wifi_sta.rst"],objects:{"":[[59,0,1,"c.MAGIC_ENUM_NO_CHECK_SUPPORT","MAGIC_ENUM_NO_CHECK_SUPPORT"],[11,0,1,"c.__gnu_linux__","__gnu_linux__"],[58,0,1,"c.__gnu_linux__","__gnu_linux__"],[8,0,1,"c.__linux__","__linux__"],[53,1,1,"_CPPv4N19PhonyNameDueToError3rawE","PhonyNameDueToError::raw"],[54,1,1,"_CPPv4N19PhonyNameDueToError3rawE","PhonyNameDueToError::raw"],[1,2,1,"_CPPv4N4espp7Ads1x15E","espp::Ads1x15"],[1,2,1,"_CPPv4N4espp7Ads1x1513Ads1015ConfigE","espp::Ads1x15::Ads1015Config"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1015Config14device_addressE","espp::Ads1x15::Ads1015Config::device_address"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1015Config4gainE","espp::Ads1x15::Ads1015Config::gain"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1015Config9log_levelE","espp::Ads1x15::Ads1015Config::log_level"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1015Config4readE","espp::Ads1x15::Ads1015Config::read"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1015Config11sample_rateE","espp::Ads1x15::Ads1015Config::sample_rate"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1015Config5writeE","espp::Ads1x15::Ads1015Config::write"],[1,3,1,"_CPPv4N4espp7Ads1x1511Ads1015RateE","espp::Ads1x15::Ads1015Rate"],[1,4,1,"_CPPv4N4espp7Ads1x1511Ads1015Rate6SPS128E","espp::Ads1x15::Ads1015Rate::SPS128"],[1,4,1,"_CPPv4N4espp7Ads1x1511Ads1015Rate7SPS1600E","espp::Ads1x15::Ads1015Rate::SPS1600"],[1,4,1,"_CPPv4N4espp7Ads1x1511Ads1015Rate7SPS2400E","espp::Ads1x15::Ads1015Rate::SPS2400"],[1,4,1,"_CPPv4N4espp7Ads1x1511Ads1015Rate6SPS250E","espp::Ads1x15::Ads1015Rate::SPS250"],[1,4,1,"_CPPv4N4espp7Ads1x1511Ads1015Rate7SPS3300E","espp::Ads1x15::Ads1015Rate::SPS3300"],[1,4,1,"_CPPv4N4espp7Ads1x1511Ads1015Rate6SPS490E","espp::Ads1x15::Ads1015Rate::SPS490"],[1,4,1,"_CPPv4N4espp7Ads1x1511Ads1015Rate6SPS920E","espp::Ads1x15::Ads1015Rate::SPS920"],[1,2,1,"_CPPv4N4espp7Ads1x1513Ads1115ConfigE","espp::Ads1x15::Ads1115Config"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1115Config14device_addressE","espp::Ads1x15::Ads1115Config::device_address"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1115Config4gainE","espp::Ads1x15::Ads1115Config::gain"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1115Config9log_levelE","espp::Ads1x15::Ads1115Config::log_level"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1115Config4readE","espp::Ads1x15::Ads1115Config::read"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1115Config11sample_rateE","espp::Ads1x15::Ads1115Config::sample_rate"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1115Config5writeE","espp::Ads1x15::Ads1115Config::write"],[1,3,1,"_CPPv4N4espp7Ads1x1511Ads1115RateE","espp::Ads1x15::Ads1115Rate"],[1,4,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate6SPS128E","espp::Ads1x15::Ads1115Rate::SPS128"],[1,4,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate5SPS16E","espp::Ads1x15::Ads1115Rate::SPS16"],[1,4,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate6SPS250E","espp::Ads1x15::Ads1115Rate::SPS250"],[1,4,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate5SPS32E","espp::Ads1x15::Ads1115Rate::SPS32"],[1,4,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate6SPS475E","espp::Ads1x15::Ads1115Rate::SPS475"],[1,4,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate5SPS64E","espp::Ads1x15::Ads1115Rate::SPS64"],[1,4,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate4SPS8E","espp::Ads1x15::Ads1115Rate::SPS8"],[1,4,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate6SPS860E","espp::Ads1x15::Ads1115Rate::SPS860"],[1,5,1,"_CPPv4N4espp7Ads1x157Ads1x15ERK13Ads1015Config","espp::Ads1x15::Ads1x15"],[1,5,1,"_CPPv4N4espp7Ads1x157Ads1x15ERK13Ads1115Config","espp::Ads1x15::Ads1x15"],[1,6,1,"_CPPv4N4espp7Ads1x157Ads1x15ERK13Ads1015Config","espp::Ads1x15::Ads1x15::config"],[1,6,1,"_CPPv4N4espp7Ads1x157Ads1x15ERK13Ads1115Config","espp::Ads1x15::Ads1x15::config"],[1,1,1,"_CPPv4N4espp7Ads1x1515DEFAULT_ADDRESSE","espp::Ads1x15::DEFAULT_ADDRESS"],[1,3,1,"_CPPv4N4espp7Ads1x154GainE","espp::Ads1x15::Gain"],[1,4,1,"_CPPv4N4espp7Ads1x154Gain5EIGHTE","espp::Ads1x15::Gain::EIGHT"],[1,4,1,"_CPPv4N4espp7Ads1x154Gain4FOURE","espp::Ads1x15::Gain::FOUR"],[1,4,1,"_CPPv4N4espp7Ads1x154Gain3ONEE","espp::Ads1x15::Gain::ONE"],[1,4,1,"_CPPv4N4espp7Ads1x154Gain7SIXTEENE","espp::Ads1x15::Gain::SIXTEEN"],[1,4,1,"_CPPv4N4espp7Ads1x154Gain3TWOE","espp::Ads1x15::Gain::TWO"],[1,4,1,"_CPPv4N4espp7Ads1x154Gain9TWOTHIRDSE","espp::Ads1x15::Gain::TWOTHIRDS"],[1,7,1,"_CPPv4N4espp7Ads1x157read_fnE","espp::Ads1x15::read_fn"],[1,5,1,"_CPPv4N4espp7Ads1x159sample_mvEi","espp::Ads1x15::sample_mv"],[1,6,1,"_CPPv4N4espp7Ads1x159sample_mvEi","espp::Ads1x15::sample_mv::channel"],[1,7,1,"_CPPv4N4espp7Ads1x158write_fnE","espp::Ads1x15::write_fn"],[16,2,1,"_CPPv4N4espp6As5600E","espp::As5600"],[16,5,1,"_CPPv4N4espp6As56006As5600ERK6Config","espp::As5600::As5600"],[16,6,1,"_CPPv4N4espp6As56006As5600ERK6Config","espp::As5600::As5600::config"],[16,1,1,"_CPPv4N4espp6As560021COUNTS_PER_REVOLUTIONE","espp::As5600::COUNTS_PER_REVOLUTION"],[16,1,1,"_CPPv4N4espp6As560023COUNTS_PER_REVOLUTION_FE","espp::As5600::COUNTS_PER_REVOLUTION_F"],[16,1,1,"_CPPv4N4espp6As560017COUNTS_TO_DEGREESE","espp::As5600::COUNTS_TO_DEGREES"],[16,1,1,"_CPPv4N4espp6As560017COUNTS_TO_RADIANSE","espp::As5600::COUNTS_TO_RADIANS"],[16,2,1,"_CPPv4N4espp6As56006ConfigE","espp::As5600::Config"],[16,1,1,"_CPPv4N4espp6As56006Config14device_addressE","espp::As5600::Config::device_address"],[16,1,1,"_CPPv4N4espp6As56006Config4readE","espp::As5600::Config::read"],[16,1,1,"_CPPv4N4espp6As56006Config13update_periodE","espp::As5600::Config::update_period"],[16,1,1,"_CPPv4N4espp6As56006Config15velocity_filterE","espp::As5600::Config::velocity_filter"],[16,1,1,"_CPPv4N4espp6As56006Config5writeE","espp::As5600::Config::write"],[16,1,1,"_CPPv4N4espp6As560015DEFAULT_ADDRESSE","espp::As5600::DEFAULT_ADDRESS"],[16,1,1,"_CPPv4N4espp6As560018SECONDS_PER_MINUTEE","espp::As5600::SECONDS_PER_MINUTE"],[16,5,1,"_CPPv4NK4espp6As560015get_accumulatorEv","espp::As5600::get_accumulator"],[16,5,1,"_CPPv4NK4espp6As56009get_countEv","espp::As5600::get_count"],[16,5,1,"_CPPv4NK4espp6As560011get_degreesEv","espp::As5600::get_degrees"],[16,5,1,"_CPPv4NK4espp6As560022get_mechanical_degreesEv","espp::As5600::get_mechanical_degrees"],[16,5,1,"_CPPv4NK4espp6As560022get_mechanical_radiansEv","espp::As5600::get_mechanical_radians"],[16,5,1,"_CPPv4NK4espp6As560011get_radiansEv","espp::As5600::get_radians"],[16,5,1,"_CPPv4NK4espp6As56007get_rpmEv","espp::As5600::get_rpm"],[16,5,1,"_CPPv4NK4espp6As560017needs_zero_searchEv","espp::As5600::needs_zero_search"],[16,7,1,"_CPPv4N4espp6As56007read_fnE","espp::As5600::read_fn"],[16,7,1,"_CPPv4N4espp6As560018velocity_filter_fnE","espp::As5600::velocity_filter_fn"],[16,7,1,"_CPPv4N4espp6As56008write_fnE","espp::As5600::write_fn"],[35,2,1,"_CPPv4N4espp6Aw9523E","espp::Aw9523"],[35,5,1,"_CPPv4N4espp6Aw95236Aw9523ERK6Config","espp::Aw9523::Aw9523"],[35,6,1,"_CPPv4N4espp6Aw95236Aw9523ERK6Config","espp::Aw9523::Aw9523::config"],[35,2,1,"_CPPv4N4espp6Aw95236ConfigE","espp::Aw9523::Config"],[35,1,1,"_CPPv4N4espp6Aw95236Config14device_addressE","espp::Aw9523::Config::device_address"],[35,1,1,"_CPPv4N4espp6Aw95236Config9log_levelE","espp::Aw9523::Config::log_level"],[35,1,1,"_CPPv4N4espp6Aw95236Config15max_led_currentE","espp::Aw9523::Config::max_led_current"],[35,1,1,"_CPPv4N4espp6Aw95236Config20output_drive_mode_p0E","espp::Aw9523::Config::output_drive_mode_p0"],[35,1,1,"_CPPv4N4espp6Aw95236Config21port_0_direction_maskE","espp::Aw9523::Config::port_0_direction_mask"],[35,1,1,"_CPPv4N4espp6Aw95236Config21port_0_interrupt_maskE","espp::Aw9523::Config::port_0_interrupt_mask"],[35,1,1,"_CPPv4N4espp6Aw95236Config21port_1_direction_maskE","espp::Aw9523::Config::port_1_direction_mask"],[35,1,1,"_CPPv4N4espp6Aw95236Config21port_1_interrupt_maskE","espp::Aw9523::Config::port_1_interrupt_mask"],[35,1,1,"_CPPv4N4espp6Aw95236Config4readE","espp::Aw9523::Config::read"],[35,1,1,"_CPPv4N4espp6Aw95236Config5writeE","espp::Aw9523::Config::write"],[35,1,1,"_CPPv4N4espp6Aw952315DEFAULT_ADDRESSE","espp::Aw9523::DEFAULT_ADDRESS"],[35,3,1,"_CPPv4N4espp6Aw952313MaxLedCurrentE","espp::Aw9523::MaxLedCurrent"],[35,4,1,"_CPPv4N4espp6Aw952313MaxLedCurrent4IMAXE","espp::Aw9523::MaxLedCurrent::IMAX"],[35,4,1,"_CPPv4N4espp6Aw952313MaxLedCurrent7IMAX_25E","espp::Aw9523::MaxLedCurrent::IMAX_25"],[35,4,1,"_CPPv4N4espp6Aw952313MaxLedCurrent7IMAX_50E","espp::Aw9523::MaxLedCurrent::IMAX_50"],[35,4,1,"_CPPv4N4espp6Aw952313MaxLedCurrent7IMAX_75E","espp::Aw9523::MaxLedCurrent::IMAX_75"],[35,3,1,"_CPPv4N4espp6Aw952317OutputDriveModeP0E","espp::Aw9523::OutputDriveModeP0"],[35,4,1,"_CPPv4N4espp6Aw952317OutputDriveModeP010OPEN_DRAINE","espp::Aw9523::OutputDriveModeP0::OPEN_DRAIN"],[35,4,1,"_CPPv4N4espp6Aw952317OutputDriveModeP09PUSH_PUSHE","espp::Aw9523::OutputDriveModeP0::PUSH_PUSH"],[35,3,1,"_CPPv4N4espp6Aw95234PortE","espp::Aw9523::Port"],[35,4,1,"_CPPv4N4espp6Aw95234Port5PORT0E","espp::Aw9523::Port::PORT0"],[35,4,1,"_CPPv4N4espp6Aw95234Port5PORT1E","espp::Aw9523::Port::PORT1"],[35,5,1,"_CPPv4N4espp6Aw952324configure_global_controlE17OutputDriveModeP013MaxLedCurrent","espp::Aw9523::configure_global_control"],[35,6,1,"_CPPv4N4espp6Aw952324configure_global_controlE17OutputDriveModeP013MaxLedCurrent","espp::Aw9523::configure_global_control::max_led_current"],[35,6,1,"_CPPv4N4espp6Aw952324configure_global_controlE17OutputDriveModeP013MaxLedCurrent","espp::Aw9523::configure_global_control::output_drive_mode_p0"],[35,5,1,"_CPPv4N4espp6Aw952313configure_ledE4Port7uint8_t","espp::Aw9523::configure_led"],[35,5,1,"_CPPv4N4espp6Aw952313configure_ledE7uint8_t7uint8_t","espp::Aw9523::configure_led"],[35,5,1,"_CPPv4N4espp6Aw952313configure_ledE8uint16_t","espp::Aw9523::configure_led"],[35,6,1,"_CPPv4N4espp6Aw952313configure_ledE4Port7uint8_t","espp::Aw9523::configure_led::mask"],[35,6,1,"_CPPv4N4espp6Aw952313configure_ledE8uint16_t","espp::Aw9523::configure_led::mask"],[35,6,1,"_CPPv4N4espp6Aw952313configure_ledE7uint8_t7uint8_t","espp::Aw9523::configure_led::p0"],[35,6,1,"_CPPv4N4espp6Aw952313configure_ledE7uint8_t7uint8_t","espp::Aw9523::configure_led::p1"],[35,6,1,"_CPPv4N4espp6Aw952313configure_ledE4Port7uint8_t","espp::Aw9523::configure_led::port"],[35,5,1,"_CPPv4N4espp6Aw95238get_pinsE4Port","espp::Aw9523::get_pins"],[35,5,1,"_CPPv4N4espp6Aw95238get_pinsEv","espp::Aw9523::get_pins"],[35,6,1,"_CPPv4N4espp6Aw95238get_pinsE4Port","espp::Aw9523::get_pins::port"],[35,5,1,"_CPPv4N4espp6Aw95233ledE8uint16_t7uint8_t","espp::Aw9523::led"],[35,6,1,"_CPPv4N4espp6Aw95233ledE8uint16_t7uint8_t","espp::Aw9523::led::brightness"],[35,6,1,"_CPPv4N4espp6Aw95233ledE8uint16_t7uint8_t","espp::Aw9523::led::pin"],[35,7,1,"_CPPv4N4espp6Aw95237read_fnE","espp::Aw9523::read_fn"],[35,5,1,"_CPPv4N4espp6Aw952313set_directionE4Port7uint8_t","espp::Aw9523::set_direction"],[35,5,1,"_CPPv4N4espp6Aw952313set_directionE7uint8_t7uint8_t","espp::Aw9523::set_direction"],[35,6,1,"_CPPv4N4espp6Aw952313set_directionE4Port7uint8_t","espp::Aw9523::set_direction::mask"],[35,6,1,"_CPPv4N4espp6Aw952313set_directionE7uint8_t7uint8_t","espp::Aw9523::set_direction::p0"],[35,6,1,"_CPPv4N4espp6Aw952313set_directionE7uint8_t7uint8_t","espp::Aw9523::set_direction::p1"],[35,6,1,"_CPPv4N4espp6Aw952313set_directionE4Port7uint8_t","espp::Aw9523::set_direction::port"],[35,5,1,"_CPPv4N4espp6Aw952313set_interruptE4Port7uint8_t","espp::Aw9523::set_interrupt"],[35,5,1,"_CPPv4N4espp6Aw952313set_interruptE7uint8_t7uint8_t","espp::Aw9523::set_interrupt"],[35,6,1,"_CPPv4N4espp6Aw952313set_interruptE4Port7uint8_t","espp::Aw9523::set_interrupt::mask"],[35,6,1,"_CPPv4N4espp6Aw952313set_interruptE7uint8_t7uint8_t","espp::Aw9523::set_interrupt::p0"],[35,6,1,"_CPPv4N4espp6Aw952313set_interruptE7uint8_t7uint8_t","espp::Aw9523::set_interrupt::p1"],[35,6,1,"_CPPv4N4espp6Aw952313set_interruptE4Port7uint8_t","espp::Aw9523::set_interrupt::port"],[35,5,1,"_CPPv4N4espp6Aw95238set_pinsE4Port7uint8_t","espp::Aw9523::set_pins"],[35,5,1,"_CPPv4N4espp6Aw95238set_pinsE7uint8_t7uint8_t","espp::Aw9523::set_pins"],[35,6,1,"_CPPv4N4espp6Aw95238set_pinsE4Port7uint8_t","espp::Aw9523::set_pins::output"],[35,6,1,"_CPPv4N4espp6Aw95238set_pinsE7uint8_t7uint8_t","espp::Aw9523::set_pins::p0"],[35,6,1,"_CPPv4N4espp6Aw95238set_pinsE7uint8_t7uint8_t","espp::Aw9523::set_pins::p1"],[35,6,1,"_CPPv4N4espp6Aw95238set_pinsE4Port7uint8_t","espp::Aw9523::set_pins::port"],[35,7,1,"_CPPv4N4espp6Aw95238write_fnE","espp::Aw9523::write_fn"],[41,2,1,"_CPPv4I0EN4espp6BezierE","espp::Bezier"],[41,5,1,"_CPPv4N4espp6Bezier6BezierERK14WeightedConfig","espp::Bezier::Bezier"],[41,5,1,"_CPPv4N4espp6Bezier6BezierERK6Config","espp::Bezier::Bezier"],[41,6,1,"_CPPv4N4espp6Bezier6BezierERK14WeightedConfig","espp::Bezier::Bezier::config"],[41,6,1,"_CPPv4N4espp6Bezier6BezierERK6Config","espp::Bezier::Bezier::config"],[41,2,1,"_CPPv4N4espp6Bezier6ConfigE","espp::Bezier::Config"],[41,1,1,"_CPPv4N4espp6Bezier6Config14control_pointsE","espp::Bezier::Config::control_points"],[41,8,1,"_CPPv4I0EN4espp6BezierE","espp::Bezier::T"],[41,2,1,"_CPPv4N4espp6Bezier14WeightedConfigE","espp::Bezier::WeightedConfig"],[41,1,1,"_CPPv4N4espp6Bezier14WeightedConfig14control_pointsE","espp::Bezier::WeightedConfig::control_points"],[41,1,1,"_CPPv4N4espp6Bezier14WeightedConfig7weightsE","espp::Bezier::WeightedConfig::weights"],[41,5,1,"_CPPv4NK4espp6Bezier2atEf","espp::Bezier::at"],[41,6,1,"_CPPv4NK4espp6Bezier2atEf","espp::Bezier::at::t"],[41,5,1,"_CPPv4NK4espp6BezierclEf","espp::Bezier::operator()"],[41,6,1,"_CPPv4NK4espp6BezierclEf","espp::Bezier::operator()::t"],[22,2,1,"_CPPv4N4espp15BiquadFilterDf1E","espp::BiquadFilterDf1"],[22,5,1,"_CPPv4N4espp15BiquadFilterDf16updateEf","espp::BiquadFilterDf1::update"],[22,6,1,"_CPPv4N4espp15BiquadFilterDf16updateEf","espp::BiquadFilterDf1::update::input"],[22,2,1,"_CPPv4N4espp15BiquadFilterDf2E","espp::BiquadFilterDf2"],[22,5,1,"_CPPv4N4espp15BiquadFilterDf26updateEKf","espp::BiquadFilterDf2::update"],[22,5,1,"_CPPv4N4espp15BiquadFilterDf26updateEPKfPf6size_t","espp::BiquadFilterDf2::update"],[22,6,1,"_CPPv4N4espp15BiquadFilterDf26updateEKf","espp::BiquadFilterDf2::update::input"],[22,6,1,"_CPPv4N4espp15BiquadFilterDf26updateEPKfPf6size_t","espp::BiquadFilterDf2::update::input"],[22,6,1,"_CPPv4N4espp15BiquadFilterDf26updateEPKfPf6size_t","espp::BiquadFilterDf2::update::length"],[22,6,1,"_CPPv4N4espp15BiquadFilterDf26updateEPKfPf6size_t","espp::BiquadFilterDf2::update::output"],[5,2,1,"_CPPv4N4espp10BldcDriverE","espp::BldcDriver"],[5,5,1,"_CPPv4N4espp10BldcDriver10BldcDriverERK6Config","espp::BldcDriver::BldcDriver"],[5,6,1,"_CPPv4N4espp10BldcDriver10BldcDriverERK6Config","espp::BldcDriver::BldcDriver::config"],[5,2,1,"_CPPv4N4espp10BldcDriver6ConfigE","espp::BldcDriver::Config"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config9dead_zoneE","espp::BldcDriver::Config::dead_zone"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config8gpio_a_hE","espp::BldcDriver::Config::gpio_a_h"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config8gpio_a_lE","espp::BldcDriver::Config::gpio_a_l"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config8gpio_b_hE","espp::BldcDriver::Config::gpio_b_h"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config8gpio_b_lE","espp::BldcDriver::Config::gpio_b_l"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config8gpio_c_hE","espp::BldcDriver::Config::gpio_c_h"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config8gpio_c_lE","espp::BldcDriver::Config::gpio_c_l"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config11gpio_enableE","espp::BldcDriver::Config::gpio_enable"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config13limit_voltageE","espp::BldcDriver::Config::limit_voltage"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config9log_levelE","espp::BldcDriver::Config::log_level"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config20power_supply_voltageE","espp::BldcDriver::Config::power_supply_voltage"],[5,5,1,"_CPPv4N4espp10BldcDriver15configure_powerEff","espp::BldcDriver::configure_power"],[5,6,1,"_CPPv4N4espp10BldcDriver15configure_powerEff","espp::BldcDriver::configure_power::power_supply_voltage"],[5,6,1,"_CPPv4N4espp10BldcDriver15configure_powerEff","espp::BldcDriver::configure_power::voltage_limit"],[5,5,1,"_CPPv4N4espp10BldcDriver7disableEv","espp::BldcDriver::disable"],[5,5,1,"_CPPv4N4espp10BldcDriver6enableEv","espp::BldcDriver::enable"],[5,5,1,"_CPPv4NK4espp10BldcDriver22get_power_supply_limitEv","espp::BldcDriver::get_power_supply_limit"],[5,5,1,"_CPPv4NK4espp10BldcDriver17get_voltage_limitEv","espp::BldcDriver::get_voltage_limit"],[5,5,1,"_CPPv4N4espp10BldcDriver15set_phase_stateEiii","espp::BldcDriver::set_phase_state"],[5,6,1,"_CPPv4N4espp10BldcDriver15set_phase_stateEiii","espp::BldcDriver::set_phase_state::state_a"],[5,6,1,"_CPPv4N4espp10BldcDriver15set_phase_stateEiii","espp::BldcDriver::set_phase_state::state_b"],[5,6,1,"_CPPv4N4espp10BldcDriver15set_phase_stateEiii","espp::BldcDriver::set_phase_state::state_c"],[5,5,1,"_CPPv4N4espp10BldcDriver7set_pwmEfff","espp::BldcDriver::set_pwm"],[5,6,1,"_CPPv4N4espp10BldcDriver7set_pwmEfff","espp::BldcDriver::set_pwm::duty_a"],[5,6,1,"_CPPv4N4espp10BldcDriver7set_pwmEfff","espp::BldcDriver::set_pwm::duty_b"],[5,6,1,"_CPPv4N4espp10BldcDriver7set_pwmEfff","espp::BldcDriver::set_pwm::duty_c"],[5,5,1,"_CPPv4N4espp10BldcDriver11set_voltageEfff","espp::BldcDriver::set_voltage"],[5,6,1,"_CPPv4N4espp10BldcDriver11set_voltageEfff","espp::BldcDriver::set_voltage::ua"],[5,6,1,"_CPPv4N4espp10BldcDriver11set_voltageEfff","espp::BldcDriver::set_voltage::ub"],[5,6,1,"_CPPv4N4espp10BldcDriver11set_voltageEfff","espp::BldcDriver::set_voltage::uc"],[5,5,1,"_CPPv4N4espp10BldcDriverD0Ev","espp::BldcDriver::~BldcDriver"],[6,2,1,"_CPPv4I_13DriverConcept_13SensorConcept_20CurrentSensorConceptEN4espp9BldcMotorE","espp::BldcMotor"],[6,5,1,"_CPPv4N4espp9BldcMotor9BldcMotorERK6Config","espp::BldcMotor::BldcMotor"],[6,6,1,"_CPPv4N4espp9BldcMotor9BldcMotorERK6Config","espp::BldcMotor::BldcMotor::config"],[6,8,1,"_CPPv4I_13DriverConcept_13SensorConcept_20CurrentSensorConceptEN4espp9BldcMotorE","espp::BldcMotor::CS"],[6,2,1,"_CPPv4N4espp9BldcMotor6ConfigE","espp::BldcMotor::Config"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config12angle_filterE","espp::BldcMotor::Config::angle_filter"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config13current_limitE","espp::BldcMotor::Config::current_limit"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config13current_senseE","espp::BldcMotor::Config::current_sense"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config16d_current_filterE","espp::BldcMotor::Config::d_current_filter"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config6driverE","espp::BldcMotor::Config::driver"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config8foc_typeE","espp::BldcMotor::Config::foc_type"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config9kv_ratingE","espp::BldcMotor::Config::kv_rating"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config9log_levelE","espp::BldcMotor::Config::log_level"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config14num_pole_pairsE","espp::BldcMotor::Config::num_pole_pairs"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config16phase_resistanceE","espp::BldcMotor::Config::phase_resistance"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config16q_current_filterE","espp::BldcMotor::Config::q_current_filter"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config6sensorE","espp::BldcMotor::Config::sensor"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config17torque_controllerE","espp::BldcMotor::Config::torque_controller"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config15velocity_filterE","espp::BldcMotor::Config::velocity_filter"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config14velocity_limitE","espp::BldcMotor::Config::velocity_limit"],[6,8,1,"_CPPv4I_13DriverConcept_13SensorConcept_20CurrentSensorConceptEN4espp9BldcMotorE","espp::BldcMotor::D"],[6,3,1,"_CPPv4N4espp9BldcMotor9DirectionE","espp::BldcMotor::Direction"],[6,4,1,"_CPPv4N4espp9BldcMotor9Direction9CLOCKWISEE","espp::BldcMotor::Direction::CLOCKWISE"],[6,4,1,"_CPPv4N4espp9BldcMotor9Direction17COUNTER_CLOCKWISEE","espp::BldcMotor::Direction::COUNTER_CLOCKWISE"],[6,4,1,"_CPPv4N4espp9BldcMotor9Direction7UNKNOWNE","espp::BldcMotor::Direction::UNKNOWN"],[6,3,1,"_CPPv4N4espp9BldcMotor7FocTypeE","espp::BldcMotor::FocType"],[6,4,1,"_CPPv4N4espp9BldcMotor7FocType8SINE_PWME","espp::BldcMotor::FocType::SINE_PWM"],[6,4,1,"_CPPv4N4espp9BldcMotor7FocType16SPACE_VECTOR_PWME","espp::BldcMotor::FocType::SPACE_VECTOR_PWM"],[6,4,1,"_CPPv4N4espp9BldcMotor7FocType13TRAPEZOID_120E","espp::BldcMotor::FocType::TRAPEZOID_120"],[6,4,1,"_CPPv4N4espp9BldcMotor7FocType13TRAPEZOID_150E","espp::BldcMotor::FocType::TRAPEZOID_150"],[6,3,1,"_CPPv4N4espp9BldcMotor17MotionControlTypeE","espp::BldcMotor::MotionControlType"],[6,4,1,"_CPPv4N4espp9BldcMotor17MotionControlType5ANGLEE","espp::BldcMotor::MotionControlType::ANGLE"],[6,4,1,"_CPPv4N4espp9BldcMotor17MotionControlType14ANGLE_OPENLOOPE","espp::BldcMotor::MotionControlType::ANGLE_OPENLOOP"],[6,4,1,"_CPPv4N4espp9BldcMotor17MotionControlType6TORQUEE","espp::BldcMotor::MotionControlType::TORQUE"],[6,4,1,"_CPPv4N4espp9BldcMotor17MotionControlType8VELOCITYE","espp::BldcMotor::MotionControlType::VELOCITY"],[6,4,1,"_CPPv4N4espp9BldcMotor17MotionControlType17VELOCITY_OPENLOOPE","espp::BldcMotor::MotionControlType::VELOCITY_OPENLOOP"],[6,8,1,"_CPPv4I_13DriverConcept_13SensorConcept_20CurrentSensorConceptEN4espp9BldcMotorE","espp::BldcMotor::S"],[6,3,1,"_CPPv4N4espp9BldcMotor17TorqueControlTypeE","espp::BldcMotor::TorqueControlType"],[6,4,1,"_CPPv4N4espp9BldcMotor17TorqueControlType10DC_CURRENTE","espp::BldcMotor::TorqueControlType::DC_CURRENT"],[6,4,1,"_CPPv4N4espp9BldcMotor17TorqueControlType11FOC_CURRENTE","espp::BldcMotor::TorqueControlType::FOC_CURRENT"],[6,4,1,"_CPPv4N4espp9BldcMotor17TorqueControlType7VOLTAGEE","espp::BldcMotor::TorqueControlType::VOLTAGE"],[6,5,1,"_CPPv4N4espp9BldcMotor7disableEv","espp::BldcMotor::disable"],[6,5,1,"_CPPv4N4espp9BldcMotor6enableEv","espp::BldcMotor::enable"],[6,7,1,"_CPPv4N4espp9BldcMotor9filter_fnE","espp::BldcMotor::filter_fn"],[6,5,1,"_CPPv4N4espp9BldcMotor20get_electrical_angleEv","espp::BldcMotor::get_electrical_angle"],[6,5,1,"_CPPv4N4espp9BldcMotor15get_shaft_angleEv","espp::BldcMotor::get_shaft_angle"],[6,5,1,"_CPPv4N4espp9BldcMotor18get_shaft_velocityEv","espp::BldcMotor::get_shaft_velocity"],[6,5,1,"_CPPv4N4espp9BldcMotor8loop_focEv","espp::BldcMotor::loop_foc"],[6,5,1,"_CPPv4N4espp9BldcMotor4moveEf","espp::BldcMotor::move"],[6,6,1,"_CPPv4N4espp9BldcMotor4moveEf","espp::BldcMotor::move::new_target"],[6,5,1,"_CPPv4N4espp9BldcMotor23set_motion_control_typeE17MotionControlType","espp::BldcMotor::set_motion_control_type"],[6,6,1,"_CPPv4N4espp9BldcMotor23set_motion_control_typeE17MotionControlType","espp::BldcMotor::set_motion_control_type::motion_control_type"],[6,5,1,"_CPPv4N4espp9BldcMotor17set_phase_voltageEfff","espp::BldcMotor::set_phase_voltage"],[6,6,1,"_CPPv4N4espp9BldcMotor17set_phase_voltageEfff","espp::BldcMotor::set_phase_voltage::el_angle"],[6,6,1,"_CPPv4N4espp9BldcMotor17set_phase_voltageEfff","espp::BldcMotor::set_phase_voltage::ud"],[6,6,1,"_CPPv4N4espp9BldcMotor17set_phase_voltageEfff","espp::BldcMotor::set_phase_voltage::uq"],[6,5,1,"_CPPv4N4espp9BldcMotorD0Ev","espp::BldcMotor::~BldcMotor"],[23,2,1,"_CPPv4I_6size_t0EN4espp17ButterworthFilterE","espp::ButterworthFilter"],[23,5,1,"_CPPv4N4espp17ButterworthFilter17ButterworthFilterERK6Config","espp::ButterworthFilter::ButterworthFilter"],[23,6,1,"_CPPv4N4espp17ButterworthFilter17ButterworthFilterERK6Config","espp::ButterworthFilter::ButterworthFilter::config"],[23,2,1,"_CPPv4N4espp17ButterworthFilter6ConfigE","espp::ButterworthFilter::Config"],[23,1,1,"_CPPv4N4espp17ButterworthFilter6Config27normalized_cutoff_frequencyE","espp::ButterworthFilter::Config::normalized_cutoff_frequency"],[23,8,1,"_CPPv4I_6size_t0EN4espp17ButterworthFilterE","espp::ButterworthFilter::Impl"],[23,8,1,"_CPPv4I_6size_t0EN4espp17ButterworthFilterE","espp::ButterworthFilter::ORDER"],[23,5,1,"_CPPv4N4espp17ButterworthFilterclEf","espp::ButterworthFilter::operator()"],[23,6,1,"_CPPv4N4espp17ButterworthFilterclEf","espp::ButterworthFilter::operator()::input"],[23,5,1,"_CPPv4N4espp17ButterworthFilter6updateEf","espp::ButterworthFilter::update"],[23,6,1,"_CPPv4N4espp17ButterworthFilter6updateEf","espp::ButterworthFilter::update::input"],[8,2,1,"_CPPv4N4espp3CliE","espp::Cli"],[8,5,1,"_CPPv4N4espp3Cli3CliERN3cli3CliERNSt7istreamERNSt7ostreamE","espp::Cli::Cli"],[8,6,1,"_CPPv4N4espp3Cli3CliERN3cli3CliERNSt7istreamERNSt7ostreamE","espp::Cli::Cli::_cli"],[8,6,1,"_CPPv4N4espp3Cli3CliERN3cli3CliERNSt7istreamERNSt7ostreamE","espp::Cli::Cli::_in"],[8,6,1,"_CPPv4N4espp3Cli3CliERN3cli3CliERNSt7istreamERNSt7ostreamE","espp::Cli::Cli::_out"],[8,5,1,"_CPPv4NK4espp3Cli15GetInputHistoryEv","espp::Cli::GetInputHistory"],[8,5,1,"_CPPv4N4espp3Cli15SetInputHistoryERKN9LineInput7HistoryE","espp::Cli::SetInputHistory"],[8,6,1,"_CPPv4N4espp3Cli15SetInputHistoryERKN9LineInput7HistoryE","espp::Cli::SetInputHistory::history"],[8,5,1,"_CPPv4N4espp3Cli19SetInputHistorySizeE6size_t","espp::Cli::SetInputHistorySize"],[8,6,1,"_CPPv4N4espp3Cli19SetInputHistorySizeE6size_t","espp::Cli::SetInputHistorySize::history_size"],[8,5,1,"_CPPv4N4espp3Cli5StartEv","espp::Cli::Start"],[8,5,1,"_CPPv4N4espp3Cli22configure_stdin_stdoutEv","espp::Cli::configure_stdin_stdout"],[2,2,1,"_CPPv4N4espp13ContinuousAdcE","espp::ContinuousAdc"],[2,2,1,"_CPPv4N4espp13ContinuousAdc6ConfigE","espp::ContinuousAdc::Config"],[2,1,1,"_CPPv4N4espp13ContinuousAdc6Config8channelsE","espp::ContinuousAdc::Config::channels"],[2,1,1,"_CPPv4N4espp13ContinuousAdc6Config12convert_modeE","espp::ContinuousAdc::Config::convert_mode"],[2,1,1,"_CPPv4N4espp13ContinuousAdc6Config9log_levelE","espp::ContinuousAdc::Config::log_level"],[2,1,1,"_CPPv4N4espp13ContinuousAdc6Config14sample_rate_hzE","espp::ContinuousAdc::Config::sample_rate_hz"],[2,1,1,"_CPPv4N4espp13ContinuousAdc6Config13task_priorityE","espp::ContinuousAdc::Config::task_priority"],[2,1,1,"_CPPv4N4espp13ContinuousAdc6Config17window_size_bytesE","espp::ContinuousAdc::Config::window_size_bytes"],[2,5,1,"_CPPv4N4espp13ContinuousAdc13ContinuousAdcERK6Config","espp::ContinuousAdc::ContinuousAdc"],[2,6,1,"_CPPv4N4espp13ContinuousAdc13ContinuousAdcERK6Config","espp::ContinuousAdc::ContinuousAdc::config"],[2,5,1,"_CPPv4N4espp13ContinuousAdc6get_mvE13adc_channel_t","espp::ContinuousAdc::get_mv"],[2,6,1,"_CPPv4N4espp13ContinuousAdc6get_mvE13adc_channel_t","espp::ContinuousAdc::get_mv::channel"],[2,5,1,"_CPPv4N4espp13ContinuousAdc8get_rateE13adc_channel_t","espp::ContinuousAdc::get_rate"],[2,6,1,"_CPPv4N4espp13ContinuousAdc8get_rateE13adc_channel_t","espp::ContinuousAdc::get_rate::channel"],[2,5,1,"_CPPv4N4espp13ContinuousAdcD0Ev","espp::ContinuousAdc::~ContinuousAdc"],[10,2,1,"_CPPv4N4espp10ControllerE","espp::Controller"],[10,2,1,"_CPPv4N4espp10Controller20AnalogJoystickConfigE","espp::Controller::AnalogJoystickConfig"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig10active_lowE","espp::Controller::AnalogJoystickConfig::active_low"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig6gpio_aE","espp::Controller::AnalogJoystickConfig::gpio_a"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig6gpio_bE","espp::Controller::AnalogJoystickConfig::gpio_b"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig20gpio_joystick_selectE","espp::Controller::AnalogJoystickConfig::gpio_joystick_select"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig11gpio_selectE","espp::Controller::AnalogJoystickConfig::gpio_select"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig10gpio_startE","espp::Controller::AnalogJoystickConfig::gpio_start"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig6gpio_xE","espp::Controller::AnalogJoystickConfig::gpio_x"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig6gpio_yE","espp::Controller::AnalogJoystickConfig::gpio_y"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig15joystick_configE","espp::Controller::AnalogJoystickConfig::joystick_config"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig9log_levelE","espp::Controller::AnalogJoystickConfig::log_level"],[10,3,1,"_CPPv4N4espp10Controller6ButtonE","espp::Controller::Button"],[10,4,1,"_CPPv4N4espp10Controller6Button1AE","espp::Controller::Button::A"],[10,4,1,"_CPPv4N4espp10Controller6Button1BE","espp::Controller::Button::B"],[10,4,1,"_CPPv4N4espp10Controller6Button4DOWNE","espp::Controller::Button::DOWN"],[10,4,1,"_CPPv4N4espp10Controller6Button15JOYSTICK_SELECTE","espp::Controller::Button::JOYSTICK_SELECT"],[10,4,1,"_CPPv4N4espp10Controller6Button11LAST_UNUSEDE","espp::Controller::Button::LAST_UNUSED"],[10,4,1,"_CPPv4N4espp10Controller6Button4LEFTE","espp::Controller::Button::LEFT"],[10,4,1,"_CPPv4N4espp10Controller6Button5RIGHTE","espp::Controller::Button::RIGHT"],[10,4,1,"_CPPv4N4espp10Controller6Button6SELECTE","espp::Controller::Button::SELECT"],[10,4,1,"_CPPv4N4espp10Controller6Button5STARTE","espp::Controller::Button::START"],[10,4,1,"_CPPv4N4espp10Controller6Button2UPE","espp::Controller::Button::UP"],[10,4,1,"_CPPv4N4espp10Controller6Button1XE","espp::Controller::Button::X"],[10,4,1,"_CPPv4N4espp10Controller6Button1YE","espp::Controller::Button::Y"],[10,5,1,"_CPPv4N4espp10Controller10ControllerERK10DualConfig","espp::Controller::Controller"],[10,5,1,"_CPPv4N4espp10Controller10ControllerERK13DigitalConfig","espp::Controller::Controller"],[10,5,1,"_CPPv4N4espp10Controller10ControllerERK20AnalogJoystickConfig","espp::Controller::Controller"],[10,6,1,"_CPPv4N4espp10Controller10ControllerERK10DualConfig","espp::Controller::Controller::config"],[10,6,1,"_CPPv4N4espp10Controller10ControllerERK13DigitalConfig","espp::Controller::Controller::config"],[10,6,1,"_CPPv4N4espp10Controller10ControllerERK20AnalogJoystickConfig","espp::Controller::Controller::config"],[10,2,1,"_CPPv4N4espp10Controller13DigitalConfigE","espp::Controller::DigitalConfig"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig10active_lowE","espp::Controller::DigitalConfig::active_low"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig6gpio_aE","espp::Controller::DigitalConfig::gpio_a"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig6gpio_bE","espp::Controller::DigitalConfig::gpio_b"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig9gpio_downE","espp::Controller::DigitalConfig::gpio_down"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig9gpio_leftE","espp::Controller::DigitalConfig::gpio_left"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig10gpio_rightE","espp::Controller::DigitalConfig::gpio_right"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig11gpio_selectE","espp::Controller::DigitalConfig::gpio_select"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig10gpio_startE","espp::Controller::DigitalConfig::gpio_start"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig7gpio_upE","espp::Controller::DigitalConfig::gpio_up"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig6gpio_xE","espp::Controller::DigitalConfig::gpio_x"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig6gpio_yE","espp::Controller::DigitalConfig::gpio_y"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig9log_levelE","espp::Controller::DigitalConfig::log_level"],[10,2,1,"_CPPv4N4espp10Controller10DualConfigE","espp::Controller::DualConfig"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig10active_lowE","espp::Controller::DualConfig::active_low"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig6gpio_aE","espp::Controller::DualConfig::gpio_a"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig6gpio_bE","espp::Controller::DualConfig::gpio_b"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig9gpio_downE","espp::Controller::DualConfig::gpio_down"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig20gpio_joystick_selectE","espp::Controller::DualConfig::gpio_joystick_select"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig9gpio_leftE","espp::Controller::DualConfig::gpio_left"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig10gpio_rightE","espp::Controller::DualConfig::gpio_right"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig11gpio_selectE","espp::Controller::DualConfig::gpio_select"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig10gpio_startE","espp::Controller::DualConfig::gpio_start"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig7gpio_upE","espp::Controller::DualConfig::gpio_up"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig6gpio_xE","espp::Controller::DualConfig::gpio_x"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig6gpio_yE","espp::Controller::DualConfig::gpio_y"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig9log_levelE","espp::Controller::DualConfig::log_level"],[10,2,1,"_CPPv4N4espp10Controller5StateE","espp::Controller::State"],[10,1,1,"_CPPv4N4espp10Controller5State1aE","espp::Controller::State::a"],[10,1,1,"_CPPv4N4espp10Controller5State1bE","espp::Controller::State::b"],[10,1,1,"_CPPv4N4espp10Controller5State4downE","espp::Controller::State::down"],[10,1,1,"_CPPv4N4espp10Controller5State15joystick_selectE","espp::Controller::State::joystick_select"],[10,1,1,"_CPPv4N4espp10Controller5State4leftE","espp::Controller::State::left"],[10,1,1,"_CPPv4N4espp10Controller5State5rightE","espp::Controller::State::right"],[10,1,1,"_CPPv4N4espp10Controller5State6selectE","espp::Controller::State::select"],[10,1,1,"_CPPv4N4espp10Controller5State5startE","espp::Controller::State::start"],[10,1,1,"_CPPv4N4espp10Controller5State2upE","espp::Controller::State::up"],[10,1,1,"_CPPv4N4espp10Controller5State1xE","espp::Controller::State::x"],[10,1,1,"_CPPv4N4espp10Controller5State1yE","espp::Controller::State::y"],[10,5,1,"_CPPv4N4espp10Controller9get_stateEv","espp::Controller::get_state"],[10,5,1,"_CPPv4N4espp10Controller10is_pressedEK6Button","espp::Controller::is_pressed"],[10,6,1,"_CPPv4N4espp10Controller10is_pressedEK6Button","espp::Controller::is_pressed::input"],[10,5,1,"_CPPv4N4espp10Controller6updateEv","espp::Controller::update"],[10,5,1,"_CPPv4N4espp10ControllerD0Ev","espp::Controller::~Controller"],[12,2,1,"_CPPv4N4espp7DisplayE","espp::Display"],[12,2,1,"_CPPv4N4espp7Display16AllocatingConfigE","espp::Display::AllocatingConfig"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig16allocation_flagsE","espp::Display::AllocatingConfig::allocation_flags"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig15double_bufferedE","espp::Display::AllocatingConfig::double_buffered"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig14flush_callbackE","espp::Display::AllocatingConfig::flush_callback"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig6heightE","espp::Display::AllocatingConfig::height"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig9log_levelE","espp::Display::AllocatingConfig::log_level"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig17pixel_buffer_sizeE","espp::Display::AllocatingConfig::pixel_buffer_size"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig8rotationE","espp::Display::AllocatingConfig::rotation"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig25software_rotation_enabledE","espp::Display::AllocatingConfig::software_rotation_enabled"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig13update_periodE","espp::Display::AllocatingConfig::update_period"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig5widthE","espp::Display::AllocatingConfig::width"],[12,5,1,"_CPPv4N4espp7Display7DisplayERK16AllocatingConfig","espp::Display::Display"],[12,5,1,"_CPPv4N4espp7Display7DisplayERK19NonAllocatingConfig","espp::Display::Display"],[12,6,1,"_CPPv4N4espp7Display7DisplayERK16AllocatingConfig","espp::Display::Display::config"],[12,6,1,"_CPPv4N4espp7Display7DisplayERK19NonAllocatingConfig","espp::Display::Display::config"],[12,2,1,"_CPPv4N4espp7Display19NonAllocatingConfigE","espp::Display::NonAllocatingConfig"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig14flush_callbackE","espp::Display::NonAllocatingConfig::flush_callback"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig6heightE","espp::Display::NonAllocatingConfig::height"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig9log_levelE","espp::Display::NonAllocatingConfig::log_level"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig17pixel_buffer_sizeE","espp::Display::NonAllocatingConfig::pixel_buffer_size"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig8rotationE","espp::Display::NonAllocatingConfig::rotation"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig25software_rotation_enabledE","espp::Display::NonAllocatingConfig::software_rotation_enabled"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig13update_periodE","espp::Display::NonAllocatingConfig::update_period"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig5vram0E","espp::Display::NonAllocatingConfig::vram0"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig5vram1E","espp::Display::NonAllocatingConfig::vram1"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig5widthE","espp::Display::NonAllocatingConfig::width"],[12,3,1,"_CPPv4N4espp7Display8RotationE","espp::Display::Rotation"],[12,4,1,"_CPPv4N4espp7Display8Rotation9LANDSCAPEE","espp::Display::Rotation::LANDSCAPE"],[12,4,1,"_CPPv4N4espp7Display8Rotation18LANDSCAPE_INVERTEDE","espp::Display::Rotation::LANDSCAPE_INVERTED"],[12,4,1,"_CPPv4N4espp7Display8Rotation8PORTRAITE","espp::Display::Rotation::PORTRAIT"],[12,4,1,"_CPPv4N4espp7Display8Rotation17PORTRAIT_INVERTEDE","espp::Display::Rotation::PORTRAIT_INVERTED"],[12,3,1,"_CPPv4N4espp7Display6SignalE","espp::Display::Signal"],[12,4,1,"_CPPv4N4espp7Display6Signal5FLUSHE","espp::Display::Signal::FLUSH"],[12,4,1,"_CPPv4N4espp7Display6Signal4NONEE","espp::Display::Signal::NONE"],[12,7,1,"_CPPv4N4espp7Display8flush_fnE","espp::Display::flush_fn"],[12,5,1,"_CPPv4N4espp7Display13force_refreshEv","espp::Display::force_refresh"],[12,5,1,"_CPPv4NK4espp7Display6heightEv","espp::Display::height"],[12,5,1,"_CPPv4N4espp7Display5pauseEv","espp::Display::pause"],[12,5,1,"_CPPv4N4espp7Display6resumeEv","espp::Display::resume"],[12,5,1,"_CPPv4N4espp7Display5vram0Ev","espp::Display::vram0"],[12,5,1,"_CPPv4N4espp7Display5vram1Ev","espp::Display::vram1"],[12,5,1,"_CPPv4N4espp7Display15vram_size_bytesEv","espp::Display::vram_size_bytes"],[12,5,1,"_CPPv4N4espp7Display12vram_size_pxEv","espp::Display::vram_size_px"],[12,5,1,"_CPPv4NK4espp7Display5widthEv","espp::Display::width"],[12,5,1,"_CPPv4N4espp7DisplayD0Ev","espp::Display::~Display"],[30,2,1,"_CPPv4N4espp7Drv2605E","espp::Drv2605"],[30,2,1,"_CPPv4N4espp7Drv26056ConfigE","espp::Drv2605::Config"],[30,1,1,"_CPPv4N4espp7Drv26056Config14device_addressE","espp::Drv2605::Config::device_address"],[30,1,1,"_CPPv4N4espp7Drv26056Config9log_levelE","espp::Drv2605::Config::log_level"],[30,1,1,"_CPPv4N4espp7Drv26056Config10motor_typeE","espp::Drv2605::Config::motor_type"],[30,1,1,"_CPPv4N4espp7Drv26056Config4readE","espp::Drv2605::Config::read"],[30,1,1,"_CPPv4N4espp7Drv26056Config5writeE","espp::Drv2605::Config::write"],[30,5,1,"_CPPv4N4espp7Drv26057Drv2605ERK6Config","espp::Drv2605::Drv2605"],[30,6,1,"_CPPv4N4espp7Drv26057Drv2605ERK6Config","espp::Drv2605::Drv2605::config"],[30,3,1,"_CPPv4N4espp7Drv26054ModeE","espp::Drv2605::Mode"],[30,4,1,"_CPPv4N4espp7Drv26054Mode9AUDIOVIBEE","espp::Drv2605::Mode::AUDIOVIBE"],[30,4,1,"_CPPv4N4espp7Drv26054Mode7AUTOCALE","espp::Drv2605::Mode::AUTOCAL"],[30,4,1,"_CPPv4N4espp7Drv26054Mode7DIAGNOSE","espp::Drv2605::Mode::DIAGNOS"],[30,4,1,"_CPPv4N4espp7Drv26054Mode11EXTTRIGEDGEE","espp::Drv2605::Mode::EXTTRIGEDGE"],[30,4,1,"_CPPv4N4espp7Drv26054Mode10EXTTRIGLVLE","espp::Drv2605::Mode::EXTTRIGLVL"],[30,4,1,"_CPPv4N4espp7Drv26054Mode7INTTRIGE","espp::Drv2605::Mode::INTTRIG"],[30,4,1,"_CPPv4N4espp7Drv26054Mode9PWMANALOGE","espp::Drv2605::Mode::PWMANALOG"],[30,4,1,"_CPPv4N4espp7Drv26054Mode8REALTIMEE","espp::Drv2605::Mode::REALTIME"],[30,3,1,"_CPPv4N4espp7Drv26059MotorTypeE","espp::Drv2605::MotorType"],[30,4,1,"_CPPv4N4espp7Drv26059MotorType3ERME","espp::Drv2605::MotorType::ERM"],[30,4,1,"_CPPv4N4espp7Drv26059MotorType3LRAE","espp::Drv2605::MotorType::LRA"],[30,3,1,"_CPPv4N4espp7Drv26058WaveformE","espp::Drv2605::Waveform"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform12ALERT_1000MSE","espp::Drv2605::Waveform::ALERT_1000MS"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform11ALERT_750MSE","espp::Drv2605::Waveform::ALERT_750MS"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform5BUZZ1E","espp::Drv2605::Waveform::BUZZ1"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform5BUZZ2E","espp::Drv2605::Waveform::BUZZ2"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform5BUZZ3E","espp::Drv2605::Waveform::BUZZ3"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform5BUZZ4E","espp::Drv2605::Waveform::BUZZ4"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform5BUZZ5E","espp::Drv2605::Waveform::BUZZ5"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform12DOUBLE_CLICKE","espp::Drv2605::Waveform::DOUBLE_CLICK"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform3ENDE","espp::Drv2605::Waveform::END"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform3MAXE","espp::Drv2605::Waveform::MAX"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform16PULSING_STRONG_1E","espp::Drv2605::Waveform::PULSING_STRONG_1"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform16PULSING_STRONG_2E","espp::Drv2605::Waveform::PULSING_STRONG_2"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform11SHARP_CLICKE","espp::Drv2605::Waveform::SHARP_CLICK"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform9SOFT_BUMPE","espp::Drv2605::Waveform::SOFT_BUMP"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform9SOFT_FUZZE","espp::Drv2605::Waveform::SOFT_FUZZ"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform11STRONG_BUZZE","espp::Drv2605::Waveform::STRONG_BUZZ"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform12STRONG_CLICKE","espp::Drv2605::Waveform::STRONG_CLICK"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform18TRANSITION_CLICK_1E","espp::Drv2605::Waveform::TRANSITION_CLICK_1"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform16TRANSITION_HUM_1E","espp::Drv2605::Waveform::TRANSITION_HUM_1"],[30,4,1,"_CPPv4N4espp7Drv26058Waveform12TRIPLE_CLICKE","espp::Drv2605::Waveform::TRIPLE_CLICK"],[30,7,1,"_CPPv4N4espp7Drv26057read_fnE","espp::Drv2605::read_fn"],[30,5,1,"_CPPv4N4espp7Drv260514select_libraryE7uint8_t","espp::Drv2605::select_library"],[30,6,1,"_CPPv4N4espp7Drv260514select_libraryE7uint8_t","espp::Drv2605::select_library::lib"],[30,5,1,"_CPPv4N4espp7Drv26058set_modeE4Mode","espp::Drv2605::set_mode"],[30,6,1,"_CPPv4N4espp7Drv26058set_modeE4Mode","espp::Drv2605::set_mode::mode"],[30,5,1,"_CPPv4N4espp7Drv260512set_waveformE7uint8_t8Waveform","espp::Drv2605::set_waveform"],[30,6,1,"_CPPv4N4espp7Drv260512set_waveformE7uint8_t8Waveform","espp::Drv2605::set_waveform::slot"],[30,6,1,"_CPPv4N4espp7Drv260512set_waveformE7uint8_t8Waveform","espp::Drv2605::set_waveform::w"],[30,5,1,"_CPPv4N4espp7Drv26055startEv","espp::Drv2605::start"],[30,5,1,"_CPPv4N4espp7Drv26054stopEv","espp::Drv2605::stop"],[30,7,1,"_CPPv4N4espp7Drv26058write_fnE","espp::Drv2605::write_fn"],[20,2,1,"_CPPv4N4espp12EventManagerE","espp::EventManager"],[20,5,1,"_CPPv4N4espp12EventManager13add_publisherERKNSt6stringERKNSt6stringE","espp::EventManager::add_publisher"],[20,6,1,"_CPPv4N4espp12EventManager13add_publisherERKNSt6stringERKNSt6stringE","espp::EventManager::add_publisher::component"],[20,6,1,"_CPPv4N4espp12EventManager13add_publisherERKNSt6stringERKNSt6stringE","espp::EventManager::add_publisher::topic"],[20,5,1,"_CPPv4N4espp12EventManager14add_subscriberERKNSt6stringERKNSt6stringERK17event_callback_fn","espp::EventManager::add_subscriber"],[20,6,1,"_CPPv4N4espp12EventManager14add_subscriberERKNSt6stringERKNSt6stringERK17event_callback_fn","espp::EventManager::add_subscriber::callback"],[20,6,1,"_CPPv4N4espp12EventManager14add_subscriberERKNSt6stringERKNSt6stringERK17event_callback_fn","espp::EventManager::add_subscriber::component"],[20,6,1,"_CPPv4N4espp12EventManager14add_subscriberERKNSt6stringERKNSt6stringERK17event_callback_fn","espp::EventManager::add_subscriber::topic"],[20,7,1,"_CPPv4N4espp12EventManager17event_callback_fnE","espp::EventManager::event_callback_fn"],[20,5,1,"_CPPv4N4espp12EventManager3getEv","espp::EventManager::get"],[20,5,1,"_CPPv4N4espp12EventManager7publishERKNSt6stringERKNSt6stringE","espp::EventManager::publish"],[20,6,1,"_CPPv4N4espp12EventManager7publishERKNSt6stringERKNSt6stringE","espp::EventManager::publish::data"],[20,6,1,"_CPPv4N4espp12EventManager7publishERKNSt6stringERKNSt6stringE","espp::EventManager::publish::topic"],[20,5,1,"_CPPv4N4espp12EventManager16remove_publisherERKNSt6stringERKNSt6stringE","espp::EventManager::remove_publisher"],[20,6,1,"_CPPv4N4espp12EventManager16remove_publisherERKNSt6stringERKNSt6stringE","espp::EventManager::remove_publisher::component"],[20,6,1,"_CPPv4N4espp12EventManager16remove_publisherERKNSt6stringERKNSt6stringE","espp::EventManager::remove_publisher::topic"],[20,5,1,"_CPPv4N4espp12EventManager17remove_subscriberERKNSt6stringERKNSt6stringE","espp::EventManager::remove_subscriber"],[20,6,1,"_CPPv4N4espp12EventManager17remove_subscriberERKNSt6stringERKNSt6stringE","espp::EventManager::remove_subscriber::component"],[20,6,1,"_CPPv4N4espp12EventManager17remove_subscriberERKNSt6stringERKNSt6stringE","espp::EventManager::remove_subscriber::topic"],[20,5,1,"_CPPv4N4espp12EventManager13set_log_levelEN6Logger9VerbosityE","espp::EventManager::set_log_level"],[20,6,1,"_CPPv4N4espp12EventManager13set_log_levelEN6Logger9VerbosityE","espp::EventManager::set_log_level::level"],[21,2,1,"_CPPv4N4espp10FileSystemE","espp::FileSystem"],[21,2,1,"_CPPv4N4espp10FileSystem10ListConfigE","espp::FileSystem::ListConfig"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig9date_timeE","espp::FileSystem::ListConfig::date_time"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig5groupE","espp::FileSystem::ListConfig::group"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig15number_of_linksE","espp::FileSystem::ListConfig::number_of_links"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig5ownerE","espp::FileSystem::ListConfig::owner"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig11permissionsE","espp::FileSystem::ListConfig::permissions"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig9recursiveE","espp::FileSystem::ListConfig::recursive"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig4sizeE","espp::FileSystem::ListConfig::size"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig4typeE","espp::FileSystem::ListConfig::type"],[21,5,1,"_CPPv4N4espp10FileSystem3getEv","espp::FileSystem::get"],[21,5,1,"_CPPv4N4espp10FileSystem14get_free_spaceEv","espp::FileSystem::get_free_space"],[21,5,1,"_CPPv4N4espp10FileSystem15get_mount_pointEv","espp::FileSystem::get_mount_point"],[21,5,1,"_CPPv4N4espp10FileSystem19get_partition_labelEv","espp::FileSystem::get_partition_label"],[21,5,1,"_CPPv4N4espp10FileSystem13get_root_pathEv","espp::FileSystem::get_root_path"],[21,5,1,"_CPPv4N4espp10FileSystem15get_total_spaceEv","espp::FileSystem::get_total_space"],[21,5,1,"_CPPv4N4espp10FileSystem14get_used_spaceEv","espp::FileSystem::get_used_space"],[21,5,1,"_CPPv4N4espp10FileSystem14human_readableE6size_t","espp::FileSystem::human_readable"],[21,6,1,"_CPPv4N4espp10FileSystem14human_readableE6size_t","espp::FileSystem::human_readable::bytes"],[21,5,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt10filesystem4pathERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory"],[21,5,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt6stringERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory"],[21,6,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt10filesystem4pathERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory::config"],[21,6,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt6stringERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory::config"],[21,6,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt10filesystem4pathERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory::path"],[21,6,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt6stringERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory::path"],[21,6,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt10filesystem4pathERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory::prefix"],[21,6,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt6stringERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory::prefix"],[21,5,1,"_CPPv4I0EN4espp10FileSystem9to_time_tENSt6time_tE2TP","espp::FileSystem::to_time_t"],[21,8,1,"_CPPv4I0EN4espp10FileSystem9to_time_tENSt6time_tE2TP","espp::FileSystem::to_time_t::TP"],[21,6,1,"_CPPv4I0EN4espp10FileSystem9to_time_tENSt6time_tE2TP","espp::FileSystem::to_time_t::tp"],[28,2,1,"_CPPv4N4espp16FtpClientSessionE","espp::FtpClientSession"],[28,5,1,"_CPPv4NK4espp16FtpClientSession17current_directoryEv","espp::FtpClientSession::current_directory"],[28,5,1,"_CPPv4NK4espp16FtpClientSession2idEv","espp::FtpClientSession::id"],[28,5,1,"_CPPv4NK4espp16FtpClientSession8is_aliveEv","espp::FtpClientSession::is_alive"],[28,5,1,"_CPPv4NK4espp16FtpClientSession12is_connectedEv","espp::FtpClientSession::is_connected"],[28,5,1,"_CPPv4NK4espp16FtpClientSession26is_passive_data_connectionEv","espp::FtpClientSession::is_passive_data_connection"],[28,2,1,"_CPPv4N4espp9FtpServerE","espp::FtpServer"],[28,5,1,"_CPPv4N4espp9FtpServer9FtpServerENSt11string_viewE8uint16_tRKNSt10filesystem4pathE","espp::FtpServer::FtpServer"],[28,6,1,"_CPPv4N4espp9FtpServer9FtpServerENSt11string_viewE8uint16_tRKNSt10filesystem4pathE","espp::FtpServer::FtpServer::ip_address"],[28,6,1,"_CPPv4N4espp9FtpServer9FtpServerENSt11string_viewE8uint16_tRKNSt10filesystem4pathE","espp::FtpServer::FtpServer::port"],[28,6,1,"_CPPv4N4espp9FtpServer9FtpServerENSt11string_viewE8uint16_tRKNSt10filesystem4pathE","espp::FtpServer::FtpServer::root"],[28,5,1,"_CPPv4N4espp9FtpServer5startEv","espp::FtpServer::start"],[28,5,1,"_CPPv4N4espp9FtpServer4stopEv","espp::FtpServer::stop"],[28,5,1,"_CPPv4N4espp9FtpServerD0Ev","espp::FtpServer::~FtpServer"],[43,2,1,"_CPPv4N4espp8GaussianE","espp::Gaussian"],[43,2,1,"_CPPv4N4espp8Gaussian6ConfigE","espp::Gaussian::Config"],[43,1,1,"_CPPv4N4espp8Gaussian6Config5alphaE","espp::Gaussian::Config::alpha"],[43,1,1,"_CPPv4N4espp8Gaussian6Config4betaE","espp::Gaussian::Config::beta"],[43,1,1,"_CPPv4N4espp8Gaussian6Config5gammaE","espp::Gaussian::Config::gamma"],[43,5,1,"_CPPv4N4espp8Gaussian8GaussianERK6Config","espp::Gaussian::Gaussian"],[43,6,1,"_CPPv4N4espp8Gaussian8GaussianERK6Config","espp::Gaussian::Gaussian::config"],[43,5,1,"_CPPv4N4espp8Gaussian5alphaEf","espp::Gaussian::alpha"],[43,5,1,"_CPPv4NK4espp8Gaussian5alphaEv","espp::Gaussian::alpha"],[43,6,1,"_CPPv4N4espp8Gaussian5alphaEf","espp::Gaussian::alpha::a"],[43,5,1,"_CPPv4NK4espp8Gaussian2atEf","espp::Gaussian::at"],[43,6,1,"_CPPv4NK4espp8Gaussian2atEf","espp::Gaussian::at::t"],[43,5,1,"_CPPv4N4espp8Gaussian4betaEf","espp::Gaussian::beta"],[43,5,1,"_CPPv4NK4espp8Gaussian4betaEv","espp::Gaussian::beta"],[43,6,1,"_CPPv4N4espp8Gaussian4betaEf","espp::Gaussian::beta::b"],[43,5,1,"_CPPv4N4espp8Gaussian5gammaEf","espp::Gaussian::gamma"],[43,5,1,"_CPPv4NK4espp8Gaussian5gammaEv","espp::Gaussian::gamma"],[43,6,1,"_CPPv4N4espp8Gaussian5gammaEf","espp::Gaussian::gamma::g"],[43,5,1,"_CPPv4NK4espp8GaussianclEf","espp::Gaussian::operator()"],[43,6,1,"_CPPv4NK4espp8GaussianclEf","espp::Gaussian::operator()::t"],[9,2,1,"_CPPv4N4espp3HsvE","espp::Hsv"],[9,5,1,"_CPPv4N4espp3Hsv3HsvERK3Hsv","espp::Hsv::Hsv"],[9,5,1,"_CPPv4N4espp3Hsv3HsvERK3Rgb","espp::Hsv::Hsv"],[9,5,1,"_CPPv4N4espp3Hsv3HsvERKfRKfRKf","espp::Hsv::Hsv"],[9,6,1,"_CPPv4N4espp3Hsv3HsvERKfRKfRKf","espp::Hsv::Hsv::h"],[9,6,1,"_CPPv4N4espp3Hsv3HsvERK3Hsv","espp::Hsv::Hsv::hsv"],[9,6,1,"_CPPv4N4espp3Hsv3HsvERK3Rgb","espp::Hsv::Hsv::rgb"],[9,6,1,"_CPPv4N4espp3Hsv3HsvERKfRKfRKf","espp::Hsv::Hsv::s"],[9,6,1,"_CPPv4N4espp3Hsv3HsvERKfRKfRKf","espp::Hsv::Hsv::v"],[9,1,1,"_CPPv4N4espp3Hsv1hE","espp::Hsv::h"],[9,5,1,"_CPPv4NK4espp3Hsv3rgbEv","espp::Hsv::rgb"],[9,1,1,"_CPPv4N4espp3Hsv1sE","espp::Hsv::s"],[9,1,1,"_CPPv4N4espp3Hsv1vE","espp::Hsv::v"],[13,2,1,"_CPPv4N4espp7Ili9341E","espp::Ili9341"],[13,5,1,"_CPPv4N4espp7Ili93415clearE6size_t6size_t6size_t6size_t8uint16_t","espp::Ili9341::clear"],[13,6,1,"_CPPv4N4espp7Ili93415clearE6size_t6size_t6size_t6size_t8uint16_t","espp::Ili9341::clear::color"],[13,6,1,"_CPPv4N4espp7Ili93415clearE6size_t6size_t6size_t6size_t8uint16_t","espp::Ili9341::clear::height"],[13,6,1,"_CPPv4N4espp7Ili93415clearE6size_t6size_t6size_t6size_t8uint16_t","espp::Ili9341::clear::width"],[13,6,1,"_CPPv4N4espp7Ili93415clearE6size_t6size_t6size_t6size_t8uint16_t","espp::Ili9341::clear::x"],[13,6,1,"_CPPv4N4espp7Ili93415clearE6size_t6size_t6size_t6size_t8uint16_t","espp::Ili9341::clear::y"],[13,5,1,"_CPPv4N4espp7Ili93414fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::Ili9341::fill"],[13,6,1,"_CPPv4N4espp7Ili93414fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::Ili9341::fill::area"],[13,6,1,"_CPPv4N4espp7Ili93414fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::Ili9341::fill::color_map"],[13,6,1,"_CPPv4N4espp7Ili93414fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::Ili9341::fill::drv"],[13,6,1,"_CPPv4N4espp7Ili93414fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::Ili9341::fill::flags"],[13,5,1,"_CPPv4N4espp7Ili93415flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::Ili9341::flush"],[13,6,1,"_CPPv4N4espp7Ili93415flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::Ili9341::flush::area"],[13,6,1,"_CPPv4N4espp7Ili93415flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::Ili9341::flush::color_map"],[13,6,1,"_CPPv4N4espp7Ili93415flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::Ili9341::flush::drv"],[13,5,1,"_CPPv4N4espp7Ili934110get_offsetERiRi","espp::Ili9341::get_offset"],[13,6,1,"_CPPv4N4espp7Ili934110get_offsetERiRi","espp::Ili9341::get_offset::x"],[13,6,1,"_CPPv4N4espp7Ili934110get_offsetERiRi","espp::Ili9341::get_offset::y"],[13,5,1,"_CPPv4N4espp7Ili934110initializeERKN15display_drivers6ConfigE","espp::Ili9341::initialize"],[13,6,1,"_CPPv4N4espp7Ili934110initializeERKN15display_drivers6ConfigE","espp::Ili9341::initialize::config"],[13,5,1,"_CPPv4N4espp7Ili934112send_commandE7uint8_t","espp::Ili9341::send_command"],[13,6,1,"_CPPv4N4espp7Ili934112send_commandE7uint8_t","espp::Ili9341::send_command::command"],[13,5,1,"_CPPv4N4espp7Ili93419send_dataEPK7uint8_t6size_t8uint32_t","espp::Ili9341::send_data"],[13,6,1,"_CPPv4N4espp7Ili93419send_dataEPK7uint8_t6size_t8uint32_t","espp::Ili9341::send_data::data"],[13,6,1,"_CPPv4N4espp7Ili93419send_dataEPK7uint8_t6size_t8uint32_t","espp::Ili9341::send_data::flags"],[13,6,1,"_CPPv4N4espp7Ili93419send_dataEPK7uint8_t6size_t8uint32_t","espp::Ili9341::send_data::length"],[13,5,1,"_CPPv4N4espp7Ili934116set_drawing_areaE6size_t6size_t6size_t6size_t","espp::Ili9341::set_drawing_area"],[13,5,1,"_CPPv4N4espp7Ili934116set_drawing_areaEPK9lv_area_t","espp::Ili9341::set_drawing_area"],[13,6,1,"_CPPv4N4espp7Ili934116set_drawing_areaEPK9lv_area_t","espp::Ili9341::set_drawing_area::area"],[13,6,1,"_CPPv4N4espp7Ili934116set_drawing_areaE6size_t6size_t6size_t6size_t","espp::Ili9341::set_drawing_area::xe"],[13,6,1,"_CPPv4N4espp7Ili934116set_drawing_areaE6size_t6size_t6size_t6size_t","espp::Ili9341::set_drawing_area::xs"],[13,6,1,"_CPPv4N4espp7Ili934116set_drawing_areaE6size_t6size_t6size_t6size_t","espp::Ili9341::set_drawing_area::ye"],[13,6,1,"_CPPv4N4espp7Ili934116set_drawing_areaE6size_t6size_t6size_t6size_t","espp::Ili9341::set_drawing_area::ys"],[13,5,1,"_CPPv4N4espp7Ili934110set_offsetEii","espp::Ili9341::set_offset"],[13,6,1,"_CPPv4N4espp7Ili934110set_offsetEii","espp::Ili9341::set_offset::x"],[13,6,1,"_CPPv4N4espp7Ili934110set_offsetEii","espp::Ili9341::set_offset::y"],[38,2,1,"_CPPv4N4espp8JoystickE","espp::Joystick"],[38,2,1,"_CPPv4N4espp8Joystick6ConfigE","espp::Joystick::Config"],[38,1,1,"_CPPv4N4espp8Joystick6Config8deadzoneE","espp::Joystick::Config::deadzone"],[38,1,1,"_CPPv4N4espp8Joystick6Config15deadzone_radiusE","espp::Joystick::Config::deadzone_radius"],[38,1,1,"_CPPv4N4espp8Joystick6Config10get_valuesE","espp::Joystick::Config::get_values"],[38,1,1,"_CPPv4N4espp8Joystick6Config9log_levelE","espp::Joystick::Config::log_level"],[38,1,1,"_CPPv4N4espp8Joystick6Config13x_calibrationE","espp::Joystick::Config::x_calibration"],[38,1,1,"_CPPv4N4espp8Joystick6Config13y_calibrationE","espp::Joystick::Config::y_calibration"],[38,3,1,"_CPPv4N4espp8Joystick8DeadzoneE","espp::Joystick::Deadzone"],[38,4,1,"_CPPv4N4espp8Joystick8Deadzone8CIRCULARE","espp::Joystick::Deadzone::CIRCULAR"],[38,4,1,"_CPPv4N4espp8Joystick8Deadzone11RECTANGULARE","espp::Joystick::Deadzone::RECTANGULAR"],[38,5,1,"_CPPv4N4espp8Joystick8JoystickERK6Config","espp::Joystick::Joystick"],[38,6,1,"_CPPv4N4espp8Joystick8JoystickERK6Config","espp::Joystick::Joystick::config"],[38,7,1,"_CPPv4N4espp8Joystick13get_values_fnE","espp::Joystick::get_values_fn"],[38,5,1,"_CPPv4NK4espp8Joystick8positionEv","espp::Joystick::position"],[38,5,1,"_CPPv4NK4espp8Joystick3rawEv","espp::Joystick::raw"],[38,5,1,"_CPPv4N4espp8Joystick15set_calibrationERKN16FloatRangeMapper6ConfigERKN16FloatRangeMapper6ConfigE","espp::Joystick::set_calibration"],[38,6,1,"_CPPv4N4espp8Joystick15set_calibrationERKN16FloatRangeMapper6ConfigERKN16FloatRangeMapper6ConfigE","espp::Joystick::set_calibration::x_calibration"],[38,6,1,"_CPPv4N4espp8Joystick15set_calibrationERKN16FloatRangeMapper6ConfigERKN16FloatRangeMapper6ConfigE","espp::Joystick::set_calibration::y_calibration"],[38,5,1,"_CPPv4N4espp8Joystick12set_deadzoneE8Deadzonef","espp::Joystick::set_deadzone"],[38,6,1,"_CPPv4N4espp8Joystick12set_deadzoneE8Deadzonef","espp::Joystick::set_deadzone::deadzone"],[38,6,1,"_CPPv4N4espp8Joystick12set_deadzoneE8Deadzonef","espp::Joystick::set_deadzone::radius"],[38,5,1,"_CPPv4N4espp8Joystick6updateEv","espp::Joystick::update"],[38,5,1,"_CPPv4NK4espp8Joystick1xEv","espp::Joystick::x"],[38,5,1,"_CPPv4NK4espp8Joystick1yEv","espp::Joystick::y"],[57,2,1,"_CPPv4N4espp9JpegFrameE","espp::JpegFrame"],[57,5,1,"_CPPv4N4espp9JpegFrame9JpegFrameEPKc6size_t","espp::JpegFrame::JpegFrame"],[57,5,1,"_CPPv4N4espp9JpegFrame9JpegFrameERK13RtpJpegPacket","espp::JpegFrame::JpegFrame"],[57,6,1,"_CPPv4N4espp9JpegFrame9JpegFrameEPKc6size_t","espp::JpegFrame::JpegFrame::data"],[57,6,1,"_CPPv4N4espp9JpegFrame9JpegFrameERK13RtpJpegPacket","espp::JpegFrame::JpegFrame::packet"],[57,6,1,"_CPPv4N4espp9JpegFrame9JpegFrameEPKc6size_t","espp::JpegFrame::JpegFrame::size"],[57,5,1,"_CPPv4N4espp9JpegFrame8add_scanERK13RtpJpegPacket","espp::JpegFrame::add_scan"],[57,6,1,"_CPPv4N4espp9JpegFrame8add_scanERK13RtpJpegPacket","espp::JpegFrame::add_scan::packet"],[57,5,1,"_CPPv4N4espp9JpegFrame6appendERK13RtpJpegPacket","espp::JpegFrame::append"],[57,6,1,"_CPPv4N4espp9JpegFrame6appendERK13RtpJpegPacket","espp::JpegFrame::append::packet"],[57,5,1,"_CPPv4NK4espp9JpegFrame8get_dataEv","espp::JpegFrame::get_data"],[57,5,1,"_CPPv4NK4espp9JpegFrame10get_headerEv","espp::JpegFrame::get_header"],[57,5,1,"_CPPv4NK4espp9JpegFrame10get_heightEv","espp::JpegFrame::get_height"],[57,5,1,"_CPPv4NK4espp9JpegFrame13get_scan_dataEv","espp::JpegFrame::get_scan_data"],[57,5,1,"_CPPv4NK4espp9JpegFrame9get_widthEv","espp::JpegFrame::get_width"],[57,5,1,"_CPPv4NK4espp9JpegFrame11is_completeEv","espp::JpegFrame::is_complete"],[57,2,1,"_CPPv4N4espp10JpegHeaderE","espp::JpegHeader"],[57,5,1,"_CPPv4N4espp10JpegHeader10JpegHeaderENSt11string_viewE","espp::JpegHeader::JpegHeader"],[57,5,1,"_CPPv4N4espp10JpegHeader10JpegHeaderEiiNSt11string_viewENSt11string_viewE","espp::JpegHeader::JpegHeader"],[57,6,1,"_CPPv4N4espp10JpegHeader10JpegHeaderENSt11string_viewE","espp::JpegHeader::JpegHeader::data"],[57,6,1,"_CPPv4N4espp10JpegHeader10JpegHeaderEiiNSt11string_viewENSt11string_viewE","espp::JpegHeader::JpegHeader::height"],[57,6,1,"_CPPv4N4espp10JpegHeader10JpegHeaderEiiNSt11string_viewENSt11string_viewE","espp::JpegHeader::JpegHeader::q0_table"],[57,6,1,"_CPPv4N4espp10JpegHeader10JpegHeaderEiiNSt11string_viewENSt11string_viewE","espp::JpegHeader::JpegHeader::q1_table"],[57,6,1,"_CPPv4N4espp10JpegHeader10JpegHeaderEiiNSt11string_viewENSt11string_viewE","espp::JpegHeader::JpegHeader::width"],[57,5,1,"_CPPv4NK4espp10JpegHeader8get_dataEv","espp::JpegHeader::get_data"],[57,5,1,"_CPPv4NK4espp10JpegHeader10get_heightEv","espp::JpegHeader::get_height"],[57,5,1,"_CPPv4NK4espp10JpegHeader22get_quantization_tableEi","espp::JpegHeader::get_quantization_table"],[57,6,1,"_CPPv4NK4espp10JpegHeader22get_quantization_tableEi","espp::JpegHeader::get_quantization_table::index"],[57,5,1,"_CPPv4NK4espp10JpegHeader9get_widthEv","espp::JpegHeader::get_width"],[39,2,1,"_CPPv4N4espp3LedE","espp::Led"],[39,2,1,"_CPPv4N4espp3Led13ChannelConfigE","espp::Led::ChannelConfig"],[39,1,1,"_CPPv4N4espp3Led13ChannelConfig7channelE","espp::Led::ChannelConfig::channel"],[39,1,1,"_CPPv4N4espp3Led13ChannelConfig4dutyE","espp::Led::ChannelConfig::duty"],[39,1,1,"_CPPv4N4espp3Led13ChannelConfig4gpioE","espp::Led::ChannelConfig::gpio"],[39,1,1,"_CPPv4N4espp3Led13ChannelConfig13output_invertE","espp::Led::ChannelConfig::output_invert"],[39,1,1,"_CPPv4N4espp3Led13ChannelConfig10speed_modeE","espp::Led::ChannelConfig::speed_mode"],[39,1,1,"_CPPv4N4espp3Led13ChannelConfig5timerE","espp::Led::ChannelConfig::timer"],[39,2,1,"_CPPv4N4espp3Led6ConfigE","espp::Led::Config"],[39,1,1,"_CPPv4N4espp3Led6Config8channelsE","espp::Led::Config::channels"],[39,1,1,"_CPPv4N4espp3Led6Config15duty_resolutionE","espp::Led::Config::duty_resolution"],[39,1,1,"_CPPv4N4espp3Led6Config12frequency_hzE","espp::Led::Config::frequency_hz"],[39,1,1,"_CPPv4N4espp3Led6Config9log_levelE","espp::Led::Config::log_level"],[39,1,1,"_CPPv4N4espp3Led6Config10speed_modeE","espp::Led::Config::speed_mode"],[39,1,1,"_CPPv4N4espp3Led6Config5timerE","espp::Led::Config::timer"],[39,5,1,"_CPPv4N4espp3Led3LedERK6Config","espp::Led::Led"],[39,6,1,"_CPPv4N4espp3Led3LedERK6Config","espp::Led::Led::config"],[39,5,1,"_CPPv4N4espp3Led10can_changeE14ledc_channel_t","espp::Led::can_change"],[39,6,1,"_CPPv4N4espp3Led10can_changeE14ledc_channel_t","espp::Led::can_change::channel"],[39,5,1,"_CPPv4N4espp3Led8get_dutyE14ledc_channel_t","espp::Led::get_duty"],[39,6,1,"_CPPv4N4espp3Led8get_dutyE14ledc_channel_t","espp::Led::get_duty::channel"],[39,5,1,"_CPPv4N4espp3Led8set_dutyE14ledc_channel_tf","espp::Led::set_duty"],[39,6,1,"_CPPv4N4espp3Led8set_dutyE14ledc_channel_tf","espp::Led::set_duty::channel"],[39,6,1,"_CPPv4N4espp3Led8set_dutyE14ledc_channel_tf","espp::Led::set_duty::duty_percent"],[39,5,1,"_CPPv4N4espp3Led18set_fade_with_timeE14ledc_channel_tf8uint32_t","espp::Led::set_fade_with_time"],[39,6,1,"_CPPv4N4espp3Led18set_fade_with_timeE14ledc_channel_tf8uint32_t","espp::Led::set_fade_with_time::channel"],[39,6,1,"_CPPv4N4espp3Led18set_fade_with_timeE14ledc_channel_tf8uint32_t","espp::Led::set_fade_with_time::duty_percent"],[39,6,1,"_CPPv4N4espp3Led18set_fade_with_timeE14ledc_channel_tf8uint32_t","espp::Led::set_fade_with_time::fade_time_ms"],[39,5,1,"_CPPv4N4espp3LedD0Ev","espp::Led::~Led"],[8,2,1,"_CPPv4N4espp9LineInputE","espp::LineInput"],[8,7,1,"_CPPv4N4espp9LineInput7HistoryE","espp::LineInput::History"],[8,5,1,"_CPPv4N4espp9LineInput9LineInputEv","espp::LineInput::LineInput"],[8,5,1,"_CPPv4NK4espp9LineInput11get_historyEv","espp::LineInput::get_history"],[8,5,1,"_CPPv4N4espp9LineInput14get_user_inputERNSt7istreamE9prompt_fn","espp::LineInput::get_user_input"],[8,6,1,"_CPPv4N4espp9LineInput14get_user_inputERNSt7istreamE9prompt_fn","espp::LineInput::get_user_input::is"],[8,6,1,"_CPPv4N4espp9LineInput14get_user_inputERNSt7istreamE9prompt_fn","espp::LineInput::get_user_input::prompt"],[8,7,1,"_CPPv4N4espp9LineInput9prompt_fnE","espp::LineInput::prompt_fn"],[8,5,1,"_CPPv4N4espp9LineInput11set_historyERK7History","espp::LineInput::set_history"],[8,6,1,"_CPPv4N4espp9LineInput11set_historyERK7History","espp::LineInput::set_history::history"],[8,5,1,"_CPPv4N4espp9LineInput16set_history_sizeE6size_t","espp::LineInput::set_history_size"],[8,6,1,"_CPPv4N4espp9LineInput16set_history_sizeE6size_t","espp::LineInput::set_history_size::new_size"],[8,5,1,"_CPPv4N4espp9LineInputD0Ev","espp::LineInput::~LineInput"],[40,2,1,"_CPPv4N4espp6LoggerE","espp::Logger"],[40,2,1,"_CPPv4N4espp6Logger6ConfigE","espp::Logger::Config"],[40,1,1,"_CPPv4N4espp6Logger6Config5levelE","espp::Logger::Config::level"],[40,1,1,"_CPPv4N4espp6Logger6Config10rate_limitE","espp::Logger::Config::rate_limit"],[40,1,1,"_CPPv4N4espp6Logger6Config3tagE","espp::Logger::Config::tag"],[40,5,1,"_CPPv4N4espp6Logger6LoggerERK6Config","espp::Logger::Logger"],[40,6,1,"_CPPv4N4espp6Logger6LoggerERK6Config","espp::Logger::Logger::config"],[40,3,1,"_CPPv4N4espp6Logger9VerbosityE","espp::Logger::Verbosity"],[40,4,1,"_CPPv4N4espp6Logger9Verbosity5DEBUGE","espp::Logger::Verbosity::DEBUG"],[40,4,1,"_CPPv4N4espp6Logger9Verbosity5ERRORE","espp::Logger::Verbosity::ERROR"],[40,4,1,"_CPPv4N4espp6Logger9Verbosity4INFOE","espp::Logger::Verbosity::INFO"],[40,4,1,"_CPPv4N4espp6Logger9Verbosity4NONEE","espp::Logger::Verbosity::NONE"],[40,4,1,"_CPPv4N4espp6Logger9Verbosity4WARNE","espp::Logger::Verbosity::WARN"],[40,5,1,"_CPPv4IDpEN4espp6Logger5debugEvNSt11string_viewEDpRR4Args","espp::Logger::debug"],[40,8,1,"_CPPv4IDpEN4espp6Logger5debugEvNSt11string_viewEDpRR4Args","espp::Logger::debug::Args"],[40,6,1,"_CPPv4IDpEN4espp6Logger5debugEvNSt11string_viewEDpRR4Args","espp::Logger::debug::args"],[40,6,1,"_CPPv4IDpEN4espp6Logger5debugEvNSt11string_viewEDpRR4Args","espp::Logger::debug::rt_fmt_str"],[40,5,1,"_CPPv4IDpEN4espp6Logger18debug_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::debug_rate_limited"],[40,8,1,"_CPPv4IDpEN4espp6Logger18debug_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::debug_rate_limited::Args"],[40,6,1,"_CPPv4IDpEN4espp6Logger18debug_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::debug_rate_limited::args"],[40,6,1,"_CPPv4IDpEN4espp6Logger18debug_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::debug_rate_limited::rt_fmt_str"],[40,5,1,"_CPPv4IDpEN4espp6Logger5errorEvNSt11string_viewEDpRR4Args","espp::Logger::error"],[40,8,1,"_CPPv4IDpEN4espp6Logger5errorEvNSt11string_viewEDpRR4Args","espp::Logger::error::Args"],[40,6,1,"_CPPv4IDpEN4espp6Logger5errorEvNSt11string_viewEDpRR4Args","espp::Logger::error::args"],[40,6,1,"_CPPv4IDpEN4espp6Logger5errorEvNSt11string_viewEDpRR4Args","espp::Logger::error::rt_fmt_str"],[40,5,1,"_CPPv4IDpEN4espp6Logger18error_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::error_rate_limited"],[40,8,1,"_CPPv4IDpEN4espp6Logger18error_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::error_rate_limited::Args"],[40,6,1,"_CPPv4IDpEN4espp6Logger18error_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::error_rate_limited::args"],[40,6,1,"_CPPv4IDpEN4espp6Logger18error_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::error_rate_limited::rt_fmt_str"],[40,5,1,"_CPPv4IDpEN4espp6Logger6formatENSt6stringENSt11string_viewEDpRR4Args","espp::Logger::format"],[40,8,1,"_CPPv4IDpEN4espp6Logger6formatENSt6stringENSt11string_viewEDpRR4Args","espp::Logger::format::Args"],[40,6,1,"_CPPv4IDpEN4espp6Logger6formatENSt6stringENSt11string_viewEDpRR4Args","espp::Logger::format::args"],[40,6,1,"_CPPv4IDpEN4espp6Logger6formatENSt6stringENSt11string_viewEDpRR4Args","espp::Logger::format::rt_fmt_str"],[40,5,1,"_CPPv4IDpEN4espp6Logger4infoEvNSt11string_viewEDpRR4Args","espp::Logger::info"],[40,8,1,"_CPPv4IDpEN4espp6Logger4infoEvNSt11string_viewEDpRR4Args","espp::Logger::info::Args"],[40,6,1,"_CPPv4IDpEN4espp6Logger4infoEvNSt11string_viewEDpRR4Args","espp::Logger::info::args"],[40,6,1,"_CPPv4IDpEN4espp6Logger4infoEvNSt11string_viewEDpRR4Args","espp::Logger::info::rt_fmt_str"],[40,5,1,"_CPPv4IDpEN4espp6Logger17info_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::info_rate_limited"],[40,8,1,"_CPPv4IDpEN4espp6Logger17info_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::info_rate_limited::Args"],[40,6,1,"_CPPv4IDpEN4espp6Logger17info_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::info_rate_limited::args"],[40,6,1,"_CPPv4IDpEN4espp6Logger17info_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::info_rate_limited::rt_fmt_str"],[40,5,1,"_CPPv4N4espp6Logger13set_verbosityEK9Verbosity","espp::Logger::set_verbosity"],[40,6,1,"_CPPv4N4espp6Logger13set_verbosityEK9Verbosity","espp::Logger::set_verbosity::level"],[40,5,1,"_CPPv4IDpEN4espp6Logger4warnEvNSt11string_viewEDpRR4Args","espp::Logger::warn"],[40,8,1,"_CPPv4IDpEN4espp6Logger4warnEvNSt11string_viewEDpRR4Args","espp::Logger::warn::Args"],[40,6,1,"_CPPv4IDpEN4espp6Logger4warnEvNSt11string_viewEDpRR4Args","espp::Logger::warn::args"],[40,6,1,"_CPPv4IDpEN4espp6Logger4warnEvNSt11string_viewEDpRR4Args","espp::Logger::warn::rt_fmt_str"],[40,5,1,"_CPPv4IDpEN4espp6Logger17warn_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::warn_rate_limited"],[40,8,1,"_CPPv4IDpEN4espp6Logger17warn_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::warn_rate_limited::Args"],[40,6,1,"_CPPv4IDpEN4espp6Logger17warn_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::warn_rate_limited::args"],[40,6,1,"_CPPv4IDpEN4espp6Logger17warn_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::warn_rate_limited::rt_fmt_str"],[25,2,1,"_CPPv4N4espp13LowpassFilterE","espp::LowpassFilter"],[25,2,1,"_CPPv4N4espp13LowpassFilter6ConfigE","espp::LowpassFilter::Config"],[25,1,1,"_CPPv4N4espp13LowpassFilter6Config27normalized_cutoff_frequencyE","espp::LowpassFilter::Config::normalized_cutoff_frequency"],[25,1,1,"_CPPv4N4espp13LowpassFilter6Config8q_factorE","espp::LowpassFilter::Config::q_factor"],[25,5,1,"_CPPv4N4espp13LowpassFilter13LowpassFilterERK6Config","espp::LowpassFilter::LowpassFilter"],[25,6,1,"_CPPv4N4espp13LowpassFilter13LowpassFilterERK6Config","espp::LowpassFilter::LowpassFilter::config"],[25,5,1,"_CPPv4N4espp13LowpassFilterclEf","espp::LowpassFilter::operator()"],[25,6,1,"_CPPv4N4espp13LowpassFilterclEf","espp::LowpassFilter::operator()::input"],[25,5,1,"_CPPv4N4espp13LowpassFilter6updateEKf","espp::LowpassFilter::update"],[25,5,1,"_CPPv4N4espp13LowpassFilter6updateEPKfPf6size_t","espp::LowpassFilter::update"],[25,6,1,"_CPPv4N4espp13LowpassFilter6updateEKf","espp::LowpassFilter::update::input"],[25,6,1,"_CPPv4N4espp13LowpassFilter6updateEPKfPf6size_t","espp::LowpassFilter::update::input"],[25,6,1,"_CPPv4N4espp13LowpassFilter6updateEPKfPf6size_t","espp::LowpassFilter::update::length"],[25,6,1,"_CPPv4N4espp13LowpassFilter6updateEPKfPf6size_t","espp::LowpassFilter::update::output"],[37,2,1,"_CPPv4N4espp8Mcp23x17E","espp::Mcp23x17"],[37,2,1,"_CPPv4N4espp8Mcp23x176ConfigE","espp::Mcp23x17::Config"],[37,1,1,"_CPPv4N4espp8Mcp23x176Config14device_addressE","espp::Mcp23x17::Config::device_address"],[37,1,1,"_CPPv4N4espp8Mcp23x176Config9log_levelE","espp::Mcp23x17::Config::log_level"],[37,1,1,"_CPPv4N4espp8Mcp23x176Config21port_a_direction_maskE","espp::Mcp23x17::Config::port_a_direction_mask"],[37,1,1,"_CPPv4N4espp8Mcp23x176Config21port_a_interrupt_maskE","espp::Mcp23x17::Config::port_a_interrupt_mask"],[37,1,1,"_CPPv4N4espp8Mcp23x176Config21port_b_direction_maskE","espp::Mcp23x17::Config::port_b_direction_mask"],[37,1,1,"_CPPv4N4espp8Mcp23x176Config21port_b_interrupt_maskE","espp::Mcp23x17::Config::port_b_interrupt_mask"],[37,1,1,"_CPPv4N4espp8Mcp23x176Config4readE","espp::Mcp23x17::Config::read"],[37,1,1,"_CPPv4N4espp8Mcp23x176Config5writeE","espp::Mcp23x17::Config::write"],[37,1,1,"_CPPv4N4espp8Mcp23x1715DEFAULT_ADDRESSE","espp::Mcp23x17::DEFAULT_ADDRESS"],[37,5,1,"_CPPv4N4espp8Mcp23x178Mcp23x17ERK6Config","espp::Mcp23x17::Mcp23x17"],[37,6,1,"_CPPv4N4espp8Mcp23x178Mcp23x17ERK6Config","espp::Mcp23x17::Mcp23x17::config"],[37,3,1,"_CPPv4N4espp8Mcp23x174PortE","espp::Mcp23x17::Port"],[37,4,1,"_CPPv4N4espp8Mcp23x174Port1AE","espp::Mcp23x17::Port::A"],[37,4,1,"_CPPv4N4espp8Mcp23x174Port1BE","espp::Mcp23x17::Port::B"],[37,5,1,"_CPPv4N4espp8Mcp23x1721get_interrupt_captureE4Port","espp::Mcp23x17::get_interrupt_capture"],[37,6,1,"_CPPv4N4espp8Mcp23x1721get_interrupt_captureE4Port","espp::Mcp23x17::get_interrupt_capture::port"],[37,5,1,"_CPPv4N4espp8Mcp23x178get_pinsE4Port","espp::Mcp23x17::get_pins"],[37,6,1,"_CPPv4N4espp8Mcp23x178get_pinsE4Port","espp::Mcp23x17::get_pins::port"],[37,7,1,"_CPPv4N4espp8Mcp23x177read_fnE","espp::Mcp23x17::read_fn"],[37,5,1,"_CPPv4N4espp8Mcp23x1713set_directionE4Port7uint8_t","espp::Mcp23x17::set_direction"],[37,6,1,"_CPPv4N4espp8Mcp23x1713set_directionE4Port7uint8_t","espp::Mcp23x17::set_direction::mask"],[37,6,1,"_CPPv4N4espp8Mcp23x1713set_directionE4Port7uint8_t","espp::Mcp23x17::set_direction::port"],[37,5,1,"_CPPv4N4espp8Mcp23x1718set_input_polarityE4Port7uint8_t","espp::Mcp23x17::set_input_polarity"],[37,6,1,"_CPPv4N4espp8Mcp23x1718set_input_polarityE4Port7uint8_t","espp::Mcp23x17::set_input_polarity::mask"],[37,6,1,"_CPPv4N4espp8Mcp23x1718set_input_polarityE4Port7uint8_t","espp::Mcp23x17::set_input_polarity::port"],[37,5,1,"_CPPv4N4espp8Mcp23x1720set_interrupt_mirrorEb","espp::Mcp23x17::set_interrupt_mirror"],[37,6,1,"_CPPv4N4espp8Mcp23x1720set_interrupt_mirrorEb","espp::Mcp23x17::set_interrupt_mirror::mirror"],[37,5,1,"_CPPv4N4espp8Mcp23x1723set_interrupt_on_changeE4Port7uint8_t","espp::Mcp23x17::set_interrupt_on_change"],[37,6,1,"_CPPv4N4espp8Mcp23x1723set_interrupt_on_changeE4Port7uint8_t","espp::Mcp23x17::set_interrupt_on_change::mask"],[37,6,1,"_CPPv4N4espp8Mcp23x1723set_interrupt_on_changeE4Port7uint8_t","espp::Mcp23x17::set_interrupt_on_change::port"],[37,5,1,"_CPPv4N4espp8Mcp23x1722set_interrupt_on_valueE4Port7uint8_t7uint8_t","espp::Mcp23x17::set_interrupt_on_value"],[37,6,1,"_CPPv4N4espp8Mcp23x1722set_interrupt_on_valueE4Port7uint8_t7uint8_t","espp::Mcp23x17::set_interrupt_on_value::pin_mask"],[37,6,1,"_CPPv4N4espp8Mcp23x1722set_interrupt_on_valueE4Port7uint8_t7uint8_t","espp::Mcp23x17::set_interrupt_on_value::port"],[37,6,1,"_CPPv4N4espp8Mcp23x1722set_interrupt_on_valueE4Port7uint8_t7uint8_t","espp::Mcp23x17::set_interrupt_on_value::val_mask"],[37,5,1,"_CPPv4N4espp8Mcp23x1722set_interrupt_polarityEb","espp::Mcp23x17::set_interrupt_polarity"],[37,6,1,"_CPPv4N4espp8Mcp23x1722set_interrupt_polarityEb","espp::Mcp23x17::set_interrupt_polarity::active_high"],[37,5,1,"_CPPv4N4espp8Mcp23x178set_pinsE4Port7uint8_t","espp::Mcp23x17::set_pins"],[37,6,1,"_CPPv4N4espp8Mcp23x178set_pinsE4Port7uint8_t","espp::Mcp23x17::set_pins::output"],[37,6,1,"_CPPv4N4espp8Mcp23x178set_pinsE4Port7uint8_t","espp::Mcp23x17::set_pins::port"],[37,5,1,"_CPPv4N4espp8Mcp23x1711set_pull_upE4Port7uint8_t","espp::Mcp23x17::set_pull_up"],[37,6,1,"_CPPv4N4espp8Mcp23x1711set_pull_upE4Port7uint8_t","espp::Mcp23x17::set_pull_up::mask"],[37,6,1,"_CPPv4N4espp8Mcp23x1711set_pull_upE4Port7uint8_t","espp::Mcp23x17::set_pull_up::port"],[37,7,1,"_CPPv4N4espp8Mcp23x178write_fnE","espp::Mcp23x17::write_fn"],[19,2,1,"_CPPv4N4espp6Mt6701E","espp::Mt6701"],[19,1,1,"_CPPv4N4espp6Mt670121COUNTS_PER_REVOLUTIONE","espp::Mt6701::COUNTS_PER_REVOLUTION"],[19,1,1,"_CPPv4N4espp6Mt670123COUNTS_PER_REVOLUTION_FE","espp::Mt6701::COUNTS_PER_REVOLUTION_F"],[19,1,1,"_CPPv4N4espp6Mt670117COUNTS_TO_DEGREESE","espp::Mt6701::COUNTS_TO_DEGREES"],[19,1,1,"_CPPv4N4espp6Mt670117COUNTS_TO_RADIANSE","espp::Mt6701::COUNTS_TO_RADIANS"],[19,2,1,"_CPPv4N4espp6Mt67016ConfigE","espp::Mt6701::Config"],[19,1,1,"_CPPv4N4espp6Mt67016Config14device_addressE","espp::Mt6701::Config::device_address"],[19,1,1,"_CPPv4N4espp6Mt67016Config4readE","espp::Mt6701::Config::read"],[19,1,1,"_CPPv4N4espp6Mt67016Config13update_periodE","espp::Mt6701::Config::update_period"],[19,1,1,"_CPPv4N4espp6Mt67016Config15velocity_filterE","espp::Mt6701::Config::velocity_filter"],[19,1,1,"_CPPv4N4espp6Mt67016Config5writeE","espp::Mt6701::Config::write"],[19,1,1,"_CPPv4N4espp6Mt670115DEFAULT_ADDRESSE","espp::Mt6701::DEFAULT_ADDRESS"],[19,5,1,"_CPPv4N4espp6Mt67016Mt6701ERK6Config","espp::Mt6701::Mt6701"],[19,6,1,"_CPPv4N4espp6Mt67016Mt6701ERK6Config","espp::Mt6701::Mt6701::config"],[19,1,1,"_CPPv4N4espp6Mt670118SECONDS_PER_MINUTEE","espp::Mt6701::SECONDS_PER_MINUTE"],[19,5,1,"_CPPv4NK4espp6Mt670115get_accumulatorEv","espp::Mt6701::get_accumulator"],[19,5,1,"_CPPv4NK4espp6Mt67019get_countEv","espp::Mt6701::get_count"],[19,5,1,"_CPPv4NK4espp6Mt670111get_degreesEv","espp::Mt6701::get_degrees"],[19,5,1,"_CPPv4NK4espp6Mt670122get_mechanical_degreesEv","espp::Mt6701::get_mechanical_degrees"],[19,5,1,"_CPPv4NK4espp6Mt670122get_mechanical_radiansEv","espp::Mt6701::get_mechanical_radians"],[19,5,1,"_CPPv4NK4espp6Mt670111get_radiansEv","espp::Mt6701::get_radians"],[19,5,1,"_CPPv4NK4espp6Mt67017get_rpmEv","espp::Mt6701::get_rpm"],[19,5,1,"_CPPv4NK4espp6Mt670117needs_zero_searchEv","espp::Mt6701::needs_zero_search"],[19,7,1,"_CPPv4N4espp6Mt67017read_fnE","espp::Mt6701::read_fn"],[19,7,1,"_CPPv4N4espp6Mt670118velocity_filter_fnE","espp::Mt6701::velocity_filter_fn"],[19,7,1,"_CPPv4N4espp6Mt67018write_fnE","espp::Mt6701::write_fn"],[53,2,1,"_CPPv4N4espp4NdefE","espp::Ndef"],[53,3,1,"_CPPv4N4espp4Ndef7BleRoleE","espp::Ndef::BleRole"],[53,4,1,"_CPPv4N4espp4Ndef7BleRole12CENTRAL_ONLYE","espp::Ndef::BleRole::CENTRAL_ONLY"],[53,4,1,"_CPPv4N4espp4Ndef7BleRole18CENTRAL_PERIPHERALE","espp::Ndef::BleRole::CENTRAL_PERIPHERAL"],[53,4,1,"_CPPv4N4espp4Ndef7BleRole18PERIPHERAL_CENTRALE","espp::Ndef::BleRole::PERIPHERAL_CENTRAL"],[53,4,1,"_CPPv4N4espp4Ndef7BleRole15PERIPHERAL_ONLYE","espp::Ndef::BleRole::PERIPHERAL_ONLY"],[53,3,1,"_CPPv4N4espp4Ndef12BtAppearanceE","espp::Ndef::BtAppearance"],[53,4,1,"_CPPv4N4espp4Ndef12BtAppearance5CLOCKE","espp::Ndef::BtAppearance::CLOCK"],[53,4,1,"_CPPv4N4espp4Ndef12BtAppearance8COMPUTERE","espp::Ndef::BtAppearance::COMPUTER"],[53,4,1,"_CPPv4N4espp4Ndef12BtAppearance7DISPLAYE","espp::Ndef::BtAppearance::DISPLAY"],[53,4,1,"_CPPv4N4espp4Ndef12BtAppearance7GAMEPADE","espp::Ndef::BtAppearance::GAMEPAD"],[53,4,1,"_CPPv4N4espp4Ndef12BtAppearance6GAMINGE","espp::Ndef::BtAppearance::GAMING"],[53,4,1,"_CPPv4N4espp4Ndef12BtAppearance11GENERIC_HIDE","espp::Ndef::BtAppearance::GENERIC_HID"],[53,4,1,"_CPPv4N4espp4Ndef12BtAppearance8JOYSTICKE","espp::Ndef::BtAppearance::JOYSTICK"],[53,4,1,"_CPPv4N4espp4Ndef12BtAppearance8KEYBOARDE","espp::Ndef::BtAppearance::KEYBOARD"],[53,4,1,"_CPPv4N4espp4Ndef12BtAppearance5MOUSEE","espp::Ndef::BtAppearance::MOUSE"],[53,4,1,"_CPPv4N4espp4Ndef12BtAppearance5PHONEE","espp::Ndef::BtAppearance::PHONE"],[53,4,1,"_CPPv4N4espp4Ndef12BtAppearance14REMOTE_CONTROLE","espp::Ndef::BtAppearance::REMOTE_CONTROL"],[53,4,1,"_CPPv4N4espp4Ndef12BtAppearance8TOUCHPADE","espp::Ndef::BtAppearance::TOUCHPAD"],[53,4,1,"_CPPv4N4espp4Ndef12BtAppearance7UNKNOWNE","espp::Ndef::BtAppearance::UNKNOWN"],[53,4,1,"_CPPv4N4espp4Ndef12BtAppearance5WATCHE","espp::Ndef::BtAppearance::WATCH"],[53,3,1,"_CPPv4N4espp4Ndef5BtEirE","espp::Ndef::BtEir"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir10APPEARANCEE","espp::Ndef::BtEir::APPEARANCE"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir15CLASS_OF_DEVICEE","espp::Ndef::BtEir::CLASS_OF_DEVICE"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir5FLAGSE","espp::Ndef::BtEir::FLAGS"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir7LE_ROLEE","espp::Ndef::BtEir::LE_ROLE"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir18LE_SC_CONFIRMATIONE","espp::Ndef::BtEir::LE_SC_CONFIRMATION"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir12LE_SC_RANDOME","espp::Ndef::BtEir::LE_SC_RANDOM"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir15LONG_LOCAL_NAMEE","espp::Ndef::BtEir::LONG_LOCAL_NAME"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir3MACE","espp::Ndef::BtEir::MAC"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir22SECURITY_MANAGER_FLAGSE","espp::Ndef::BtEir::SECURITY_MANAGER_FLAGS"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir19SECURITY_MANAGER_TKE","espp::Ndef::BtEir::SECURITY_MANAGER_TK"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir16SHORT_LOCAL_NAMEE","espp::Ndef::BtEir::SHORT_LOCAL_NAME"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir12SP_HASH_C192E","espp::Ndef::BtEir::SP_HASH_C192"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir12SP_HASH_C256E","espp::Ndef::BtEir::SP_HASH_C256"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir12SP_HASH_R256E","espp::Ndef::BtEir::SP_HASH_R256"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir14SP_RANDOM_R192E","espp::Ndef::BtEir::SP_RANDOM_R192"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir14TX_POWER_LEVELE","espp::Ndef::BtEir::TX_POWER_LEVEL"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir22UUIDS_128_BIT_COMPLETEE","espp::Ndef::BtEir::UUIDS_128_BIT_COMPLETE"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir21UUIDS_128_BIT_PARTIALE","espp::Ndef::BtEir::UUIDS_128_BIT_PARTIAL"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir21UUIDS_16_BIT_COMPLETEE","espp::Ndef::BtEir::UUIDS_16_BIT_COMPLETE"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir20UUIDS_16_BIT_PARTIALE","espp::Ndef::BtEir::UUIDS_16_BIT_PARTIAL"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir21UUIDS_32_BIT_COMPLETEE","espp::Ndef::BtEir::UUIDS_32_BIT_COMPLETE"],[53,4,1,"_CPPv4N4espp4Ndef5BtEir20UUIDS_32_BIT_PARTIALE","espp::Ndef::BtEir::UUIDS_32_BIT_PARTIAL"],[53,3,1,"_CPPv4N4espp4Ndef6BtTypeE","espp::Ndef::BtType"],[53,4,1,"_CPPv4N4espp4Ndef6BtType3BLEE","espp::Ndef::BtType::BLE"],[53,4,1,"_CPPv4N4espp4Ndef6BtType5BREDRE","espp::Ndef::BtType::BREDR"],[53,5,1,"_CPPv4N4espp4Ndef4NdefE3TNFNSt11string_viewENSt11string_viewE","espp::Ndef::Ndef"],[53,6,1,"_CPPv4N4espp4Ndef4NdefE3TNFNSt11string_viewENSt11string_viewE","espp::Ndef::Ndef::payload"],[53,6,1,"_CPPv4N4espp4Ndef4NdefE3TNFNSt11string_viewENSt11string_viewE","espp::Ndef::Ndef::tnf"],[53,6,1,"_CPPv4N4espp4Ndef4NdefE3TNFNSt11string_viewENSt11string_viewE","espp::Ndef::Ndef::type"],[53,3,1,"_CPPv4N4espp4Ndef3TNFE","espp::Ndef::TNF"],[53,4,1,"_CPPv4N4espp4Ndef3TNF12ABSOLUTE_URIE","espp::Ndef::TNF::ABSOLUTE_URI"],[53,4,1,"_CPPv4N4espp4Ndef3TNF5EMPTYE","espp::Ndef::TNF::EMPTY"],[53,4,1,"_CPPv4N4espp4Ndef3TNF13EXTERNAL_TYPEE","espp::Ndef::TNF::EXTERNAL_TYPE"],[53,4,1,"_CPPv4N4espp4Ndef3TNF10MIME_MEDIAE","espp::Ndef::TNF::MIME_MEDIA"],[53,4,1,"_CPPv4N4espp4Ndef3TNF8RESERVEDE","espp::Ndef::TNF::RESERVED"],[53,4,1,"_CPPv4N4espp4Ndef3TNF9UNCHANGEDE","espp::Ndef::TNF::UNCHANGED"],[53,4,1,"_CPPv4N4espp4Ndef3TNF7UNKNOWNE","espp::Ndef::TNF::UNKNOWN"],[53,4,1,"_CPPv4N4espp4Ndef3TNF10WELL_KNOWNE","espp::Ndef::TNF::WELL_KNOWN"],[53,3,1,"_CPPv4N4espp4Ndef3UicE","espp::Ndef::Uic"],[53,4,1,"_CPPv4N4espp4Ndef3Uic6BTGOEPE","espp::Ndef::Uic::BTGOEP"],[53,4,1,"_CPPv4N4espp4Ndef3Uic7BTL2CAPE","espp::Ndef::Uic::BTL2CAP"],[53,4,1,"_CPPv4N4espp4Ndef3Uic5BTSPPE","espp::Ndef::Uic::BTSPP"],[53,4,1,"_CPPv4N4espp4Ndef3Uic3DAVE","espp::Ndef::Uic::DAV"],[53,4,1,"_CPPv4N4espp4Ndef3Uic4FILEE","espp::Ndef::Uic::FILE"],[53,4,1,"_CPPv4N4espp4Ndef3Uic3FTPE","espp::Ndef::Uic::FTP"],[53,4,1,"_CPPv4N4espp4Ndef3Uic4FTPSE","espp::Ndef::Uic::FTPS"],[53,4,1,"_CPPv4N4espp4Ndef3Uic8FTP_ANONE","espp::Ndef::Uic::FTP_ANON"],[53,4,1,"_CPPv4N4espp4Ndef3Uic7FTP_FTPE","espp::Ndef::Uic::FTP_FTP"],[53,4,1,"_CPPv4N4espp4Ndef3Uic4HTTPE","espp::Ndef::Uic::HTTP"],[53,4,1,"_CPPv4N4espp4Ndef3Uic5HTTPSE","espp::Ndef::Uic::HTTPS"],[53,4,1,"_CPPv4N4espp4Ndef3Uic9HTTPS_WWWE","espp::Ndef::Uic::HTTPS_WWW"],[53,4,1,"_CPPv4N4espp4Ndef3Uic8HTTP_WWWE","espp::Ndef::Uic::HTTP_WWW"],[53,4,1,"_CPPv4N4espp4Ndef3Uic4IMAPE","espp::Ndef::Uic::IMAP"],[53,4,1,"_CPPv4N4espp4Ndef3Uic8IRDAOBEXE","espp::Ndef::Uic::IRDAOBEX"],[53,4,1,"_CPPv4N4espp4Ndef3Uic6MAILTOE","espp::Ndef::Uic::MAILTO"],[53,4,1,"_CPPv4N4espp4Ndef3Uic4NEWSE","espp::Ndef::Uic::NEWS"],[53,4,1,"_CPPv4N4espp4Ndef3Uic3NFSE","espp::Ndef::Uic::NFS"],[53,4,1,"_CPPv4N4espp4Ndef3Uic4NONEE","espp::Ndef::Uic::NONE"],[53,4,1,"_CPPv4N4espp4Ndef3Uic3POPE","espp::Ndef::Uic::POP"],[53,4,1,"_CPPv4N4espp4Ndef3Uic4RSTPE","espp::Ndef::Uic::RSTP"],[53,4,1,"_CPPv4N4espp4Ndef3Uic4SFTPE","espp::Ndef::Uic::SFTP"],[53,4,1,"_CPPv4N4espp4Ndef3Uic3SIPE","espp::Ndef::Uic::SIP"],[53,4,1,"_CPPv4N4espp4Ndef3Uic4SIPSE","espp::Ndef::Uic::SIPS"],[53,4,1,"_CPPv4N4espp4Ndef3Uic3SMBE","espp::Ndef::Uic::SMB"],[53,4,1,"_CPPv4N4espp4Ndef3Uic7TCPOBEXE","espp::Ndef::Uic::TCPOBEX"],[53,4,1,"_CPPv4N4espp4Ndef3Uic3TELE","espp::Ndef::Uic::TEL"],[53,4,1,"_CPPv4N4espp4Ndef3Uic6TELNETE","espp::Ndef::Uic::TELNET"],[53,4,1,"_CPPv4N4espp4Ndef3Uic4TFTPE","espp::Ndef::Uic::TFTP"],[53,4,1,"_CPPv4N4espp4Ndef3Uic3URNE","espp::Ndef::Uic::URN"],[53,4,1,"_CPPv4N4espp4Ndef3Uic7URN_EPCE","espp::Ndef::Uic::URN_EPC"],[53,4,1,"_CPPv4N4espp4Ndef3Uic10URN_EPC_IDE","espp::Ndef::Uic::URN_EPC_ID"],[53,4,1,"_CPPv4N4espp4Ndef3Uic11URN_EPC_PATE","espp::Ndef::Uic::URN_EPC_PAT"],[53,4,1,"_CPPv4N4espp4Ndef3Uic11URN_EPC_RAWE","espp::Ndef::Uic::URN_EPC_RAW"],[53,4,1,"_CPPv4N4espp4Ndef3Uic11URN_EPC_TAGE","espp::Ndef::Uic::URN_EPC_TAG"],[53,4,1,"_CPPv4N4espp4Ndef3Uic7URN_NFCE","espp::Ndef::Uic::URN_NFC"],[53,3,1,"_CPPv4N4espp4Ndef22WifiAuthenticationTypeE","espp::Ndef::WifiAuthenticationType"],[53,4,1,"_CPPv4N4espp4Ndef22WifiAuthenticationType4OPENE","espp::Ndef::WifiAuthenticationType::OPEN"],[53,4,1,"_CPPv4N4espp4Ndef22WifiAuthenticationType6SHAREDE","espp::Ndef::WifiAuthenticationType::SHARED"],[53,4,1,"_CPPv4N4espp4Ndef22WifiAuthenticationType15WPA2_ENTERPRISEE","espp::Ndef::WifiAuthenticationType::WPA2_ENTERPRISE"],[53,4,1,"_CPPv4N4espp4Ndef22WifiAuthenticationType13WPA2_PERSONALE","espp::Ndef::WifiAuthenticationType::WPA2_PERSONAL"],[53,4,1,"_CPPv4N4espp4Ndef22WifiAuthenticationType14WPA_ENTERPRISEE","espp::Ndef::WifiAuthenticationType::WPA_ENTERPRISE"],[53,4,1,"_CPPv4N4espp4Ndef22WifiAuthenticationType12WPA_PERSONALE","espp::Ndef::WifiAuthenticationType::WPA_PERSONAL"],[53,4,1,"_CPPv4N4espp4Ndef22WifiAuthenticationType17WPA_WPA2_PERSONALE","espp::Ndef::WifiAuthenticationType::WPA_WPA2_PERSONAL"],[53,2,1,"_CPPv4N4espp4Ndef10WifiConfigE","espp::Ndef::WifiConfig"],[53,1,1,"_CPPv4N4espp4Ndef10WifiConfig14authenticationE","espp::Ndef::WifiConfig::authentication"],[53,1,1,"_CPPv4N4espp4Ndef10WifiConfig10encryptionE","espp::Ndef::WifiConfig::encryption"],[53,1,1,"_CPPv4N4espp4Ndef10WifiConfig3keyE","espp::Ndef::WifiConfig::key"],[53,1,1,"_CPPv4N4espp4Ndef10WifiConfig11mac_addressE","espp::Ndef::WifiConfig::mac_address"],[53,1,1,"_CPPv4N4espp4Ndef10WifiConfig4ssidE","espp::Ndef::WifiConfig::ssid"],[53,3,1,"_CPPv4N4espp4Ndef18WifiEncryptionTypeE","espp::Ndef::WifiEncryptionType"],[53,4,1,"_CPPv4N4espp4Ndef18WifiEncryptionType3AESE","espp::Ndef::WifiEncryptionType::AES"],[53,4,1,"_CPPv4N4espp4Ndef18WifiEncryptionType4NONEE","espp::Ndef::WifiEncryptionType::NONE"],[53,4,1,"_CPPv4N4espp4Ndef18WifiEncryptionType4TKIPE","espp::Ndef::WifiEncryptionType::TKIP"],[53,4,1,"_CPPv4N4espp4Ndef18WifiEncryptionType3WEPE","espp::Ndef::WifiEncryptionType::WEP"],[53,5,1,"_CPPv4NK4espp4Ndef8get_sizeEv","espp::Ndef::get_size"],[53,5,1,"_CPPv4N4espp4Ndef21make_android_launcherENSt11string_viewE","espp::Ndef::make_android_launcher"],[53,6,1,"_CPPv4N4espp4Ndef21make_android_launcherENSt11string_viewE","espp::Ndef::make_android_launcher::uri"],[53,5,1,"_CPPv4N4espp4Ndef19make_le_oob_pairingE8uint64_t7BleRoleNSt11string_viewE12BtAppearance","espp::Ndef::make_le_oob_pairing"],[53,6,1,"_CPPv4N4espp4Ndef19make_le_oob_pairingE8uint64_t7BleRoleNSt11string_viewE12BtAppearance","espp::Ndef::make_le_oob_pairing::appearance"],[53,6,1,"_CPPv4N4espp4Ndef19make_le_oob_pairingE8uint64_t7BleRoleNSt11string_viewE12BtAppearance","espp::Ndef::make_le_oob_pairing::mac_addr"],[53,6,1,"_CPPv4N4espp4Ndef19make_le_oob_pairingE8uint64_t7BleRoleNSt11string_viewE12BtAppearance","espp::Ndef::make_le_oob_pairing::name"],[53,6,1,"_CPPv4N4espp4Ndef19make_le_oob_pairingE8uint64_t7BleRoleNSt11string_viewE12BtAppearance","espp::Ndef::make_le_oob_pairing::role"],[53,5,1,"_CPPv4N4espp4Ndef16make_oob_pairingE8uint64_t8uint32_tNSt11string_viewE","espp::Ndef::make_oob_pairing"],[53,6,1,"_CPPv4N4espp4Ndef16make_oob_pairingE8uint64_t8uint32_tNSt11string_viewE","espp::Ndef::make_oob_pairing::device_class"],[53,6,1,"_CPPv4N4espp4Ndef16make_oob_pairingE8uint64_t8uint32_tNSt11string_viewE","espp::Ndef::make_oob_pairing::mac_addr"],[53,6,1,"_CPPv4N4espp4Ndef16make_oob_pairingE8uint64_t8uint32_tNSt11string_viewE","espp::Ndef::make_oob_pairing::name"],[53,5,1,"_CPPv4N4espp4Ndef9make_textENSt11string_viewE","espp::Ndef::make_text"],[53,6,1,"_CPPv4N4espp4Ndef9make_textENSt11string_viewE","espp::Ndef::make_text::text"],[53,5,1,"_CPPv4N4espp4Ndef8make_uriENSt11string_viewE3Uic","espp::Ndef::make_uri"],[53,6,1,"_CPPv4N4espp4Ndef8make_uriENSt11string_viewE3Uic","espp::Ndef::make_uri::uic"],[53,6,1,"_CPPv4N4espp4Ndef8make_uriENSt11string_viewE3Uic","espp::Ndef::make_uri::uri"],[53,5,1,"_CPPv4N4espp4Ndef16make_wifi_configERK10WifiConfig","espp::Ndef::make_wifi_config"],[53,6,1,"_CPPv4N4espp4Ndef16make_wifi_configERK10WifiConfig","espp::Ndef::make_wifi_config::config"],[53,5,1,"_CPPv4N4espp4Ndef7payloadEv","espp::Ndef::payload"],[53,5,1,"_CPPv4N4espp4Ndef9serializeEv","espp::Ndef::serialize"],[4,2,1,"_CPPv4N4espp10OneshotAdcE","espp::OneshotAdc"],[4,2,1,"_CPPv4N4espp10OneshotAdc6ConfigE","espp::OneshotAdc::Config"],[4,1,1,"_CPPv4N4espp10OneshotAdc6Config8channelsE","espp::OneshotAdc::Config::channels"],[4,1,1,"_CPPv4N4espp10OneshotAdc6Config9log_levelE","espp::OneshotAdc::Config::log_level"],[4,1,1,"_CPPv4N4espp10OneshotAdc6Config4unitE","espp::OneshotAdc::Config::unit"],[4,5,1,"_CPPv4N4espp10OneshotAdc10OneshotAdcERK6Config","espp::OneshotAdc::OneshotAdc"],[4,6,1,"_CPPv4N4espp10OneshotAdc10OneshotAdcERK6Config","espp::OneshotAdc::OneshotAdc::config"],[4,5,1,"_CPPv4N4espp10OneshotAdc7read_mvE13adc_channel_t","espp::OneshotAdc::read_mv"],[4,6,1,"_CPPv4N4espp10OneshotAdc7read_mvE13adc_channel_t","espp::OneshotAdc::read_mv::channel"],[4,5,1,"_CPPv4N4espp10OneshotAdc8read_rawE13adc_channel_t","espp::OneshotAdc::read_raw"],[4,6,1,"_CPPv4N4espp10OneshotAdc8read_rawE13adc_channel_t","espp::OneshotAdc::read_raw::channel"],[4,5,1,"_CPPv4N4espp10OneshotAdcD0Ev","espp::OneshotAdc::~OneshotAdc"],[55,2,1,"_CPPv4N4espp3PidE","espp::Pid"],[55,2,1,"_CPPv4N4espp3Pid6ConfigE","espp::Pid::Config"],[55,1,1,"_CPPv4N4espp3Pid6Config14integrator_maxE","espp::Pid::Config::integrator_max"],[55,1,1,"_CPPv4N4espp3Pid6Config14integrator_minE","espp::Pid::Config::integrator_min"],[55,1,1,"_CPPv4N4espp3Pid6Config2kdE","espp::Pid::Config::kd"],[55,1,1,"_CPPv4N4espp3Pid6Config2kiE","espp::Pid::Config::ki"],[55,1,1,"_CPPv4N4espp3Pid6Config2kpE","espp::Pid::Config::kp"],[55,1,1,"_CPPv4N4espp3Pid6Config9log_levelE","espp::Pid::Config::log_level"],[55,1,1,"_CPPv4N4espp3Pid6Config10output_maxE","espp::Pid::Config::output_max"],[55,1,1,"_CPPv4N4espp3Pid6Config10output_minE","espp::Pid::Config::output_min"],[55,5,1,"_CPPv4N4espp3Pid3PidERK6Config","espp::Pid::Pid"],[55,6,1,"_CPPv4N4espp3Pid3PidERK6Config","espp::Pid::Pid::config"],[55,5,1,"_CPPv4N4espp3Pid12change_gainsERK6Config","espp::Pid::change_gains"],[55,6,1,"_CPPv4N4espp3Pid12change_gainsERK6Config","espp::Pid::change_gains::config"],[55,5,1,"_CPPv4N4espp3Pid5clearEv","espp::Pid::clear"],[55,5,1,"_CPPv4NK4espp3Pid10get_configEv","espp::Pid::get_config"],[55,5,1,"_CPPv4NK4espp3Pid9get_errorEv","espp::Pid::get_error"],[55,5,1,"_CPPv4NK4espp3Pid14get_integratorEv","espp::Pid::get_integrator"],[55,5,1,"_CPPv4N4espp3PidclEf","espp::Pid::operator()"],[55,6,1,"_CPPv4N4espp3PidclEf","espp::Pid::operator()::error"],[55,5,1,"_CPPv4N4espp3Pid6updateEf","espp::Pid::update"],[55,6,1,"_CPPv4N4espp3Pid6updateEf","espp::Pid::update::error"],[45,2,1,"_CPPv4I0EN4espp11RangeMapperE","espp::RangeMapper"],[45,2,1,"_CPPv4N4espp11RangeMapper6ConfigE","espp::RangeMapper::Config"],[45,1,1,"_CPPv4N4espp11RangeMapper6Config6centerE","espp::RangeMapper::Config::center"],[45,1,1,"_CPPv4N4espp11RangeMapper6Config8deadbandE","espp::RangeMapper::Config::deadband"],[45,1,1,"_CPPv4N4espp11RangeMapper6Config12invert_inputE","espp::RangeMapper::Config::invert_input"],[45,1,1,"_CPPv4N4espp11RangeMapper6Config13invert_outputE","espp::RangeMapper::Config::invert_output"],[45,1,1,"_CPPv4N4espp11RangeMapper6Config7maximumE","espp::RangeMapper::Config::maximum"],[45,1,1,"_CPPv4N4espp11RangeMapper6Config7minimumE","espp::RangeMapper::Config::minimum"],[45,1,1,"_CPPv4N4espp11RangeMapper6Config13output_centerE","espp::RangeMapper::Config::output_center"],[45,1,1,"_CPPv4N4espp11RangeMapper6Config12output_rangeE","espp::RangeMapper::Config::output_range"],[45,5,1,"_CPPv4N4espp11RangeMapper11RangeMapperERK6Config","espp::RangeMapper::RangeMapper"],[45,6,1,"_CPPv4N4espp11RangeMapper11RangeMapperERK6Config","espp::RangeMapper::RangeMapper::config"],[45,8,1,"_CPPv4I0EN4espp11RangeMapperE","espp::RangeMapper::T"],[45,5,1,"_CPPv4N4espp11RangeMapper9configureERK6Config","espp::RangeMapper::configure"],[45,6,1,"_CPPv4N4espp11RangeMapper9configureERK6Config","espp::RangeMapper::configure::config"],[45,5,1,"_CPPv4NK4espp11RangeMapper17get_output_centerEv","espp::RangeMapper::get_output_center"],[45,5,1,"_CPPv4NK4espp11RangeMapper14get_output_maxEv","espp::RangeMapper::get_output_max"],[45,5,1,"_CPPv4NK4espp11RangeMapper14get_output_minEv","espp::RangeMapper::get_output_min"],[45,5,1,"_CPPv4NK4espp11RangeMapper16get_output_rangeEv","espp::RangeMapper::get_output_range"],[45,5,1,"_CPPv4N4espp11RangeMapper3mapERK1T","espp::RangeMapper::map"],[45,6,1,"_CPPv4N4espp11RangeMapper3mapERK1T","espp::RangeMapper::map::v"],[9,2,1,"_CPPv4N4espp3RgbE","espp::Rgb"],[9,5,1,"_CPPv4N4espp3Rgb3RgbERK3Hsv","espp::Rgb::Rgb"],[9,5,1,"_CPPv4N4espp3Rgb3RgbERK3Rgb","espp::Rgb::Rgb"],[9,5,1,"_CPPv4N4espp3Rgb3RgbERKfRKfRKf","espp::Rgb::Rgb"],[9,6,1,"_CPPv4N4espp3Rgb3RgbERKfRKfRKf","espp::Rgb::Rgb::b"],[9,6,1,"_CPPv4N4espp3Rgb3RgbERKfRKfRKf","espp::Rgb::Rgb::g"],[9,6,1,"_CPPv4N4espp3Rgb3RgbERK3Hsv","espp::Rgb::Rgb::hsv"],[9,6,1,"_CPPv4N4espp3Rgb3RgbERKfRKfRKf","espp::Rgb::Rgb::r"],[9,6,1,"_CPPv4N4espp3Rgb3RgbERK3Rgb","espp::Rgb::Rgb::rgb"],[9,1,1,"_CPPv4N4espp3Rgb1bE","espp::Rgb::b"],[9,1,1,"_CPPv4N4espp3Rgb1gE","espp::Rgb::g"],[9,5,1,"_CPPv4NK4espp3Rgb3hsvEv","espp::Rgb::hsv"],[9,5,1,"_CPPv4NK4espp3RgbplERK3Rgb","espp::Rgb::operator+"],[9,6,1,"_CPPv4NK4espp3RgbplERK3Rgb","espp::Rgb::operator+::rhs"],[9,5,1,"_CPPv4N4espp3RgbpLERK3Rgb","espp::Rgb::operator+="],[9,6,1,"_CPPv4N4espp3RgbpLERK3Rgb","espp::Rgb::operator+=::rhs"],[9,1,1,"_CPPv4N4espp3Rgb1rE","espp::Rgb::r"],[56,2,1,"_CPPv4N4espp3RmtE","espp::Rmt"],[56,2,1,"_CPPv4N4espp3Rmt6ConfigE","espp::Rmt::Config"],[56,1,1,"_CPPv4N4espp3Rmt6Config10block_sizeE","espp::Rmt::Config::block_size"],[56,1,1,"_CPPv4N4espp3Rmt6Config9clock_srcE","espp::Rmt::Config::clock_src"],[56,1,1,"_CPPv4N4espp3Rmt6Config11dma_enabledE","espp::Rmt::Config::dma_enabled"],[56,1,1,"_CPPv4N4espp3Rmt6Config8gpio_numE","espp::Rmt::Config::gpio_num"],[56,1,1,"_CPPv4N4espp3Rmt6Config9log_levelE","espp::Rmt::Config::log_level"],[56,1,1,"_CPPv4N4espp3Rmt6Config13resolution_hzE","espp::Rmt::Config::resolution_hz"],[56,1,1,"_CPPv4N4espp3Rmt6Config23transaction_queue_depthE","espp::Rmt::Config::transaction_queue_depth"],[56,5,1,"_CPPv4N4espp3Rmt3RmtERK6Config","espp::Rmt::Rmt"],[56,6,1,"_CPPv4N4espp3Rmt3RmtERK6Config","espp::Rmt::Rmt::config"],[56,5,1,"_CPPv4N4espp3Rmt8transmitEPK7uint8_t6size_t","espp::Rmt::transmit"],[56,6,1,"_CPPv4N4espp3Rmt8transmitEPK7uint8_t6size_t","espp::Rmt::transmit::data"],[56,6,1,"_CPPv4N4espp3Rmt8transmitEPK7uint8_t6size_t","espp::Rmt::transmit::length"],[56,5,1,"_CPPv4N4espp3RmtD0Ev","espp::Rmt::~Rmt"],[56,2,1,"_CPPv4N4espp10RmtEncoderE","espp::RmtEncoder"],[56,2,1,"_CPPv4N4espp10RmtEncoder6ConfigE","espp::RmtEncoder::Config"],[56,1,1,"_CPPv4N4espp10RmtEncoder6Config20bytes_encoder_configE","espp::RmtEncoder::Config::bytes_encoder_config"],[56,1,1,"_CPPv4N4espp10RmtEncoder6Config3delE","espp::RmtEncoder::Config::del"],[56,1,1,"_CPPv4N4espp10RmtEncoder6Config6encodeE","espp::RmtEncoder::Config::encode"],[56,1,1,"_CPPv4N4espp10RmtEncoder6Config5resetE","espp::RmtEncoder::Config::reset"],[56,5,1,"_CPPv4N4espp10RmtEncoder10RmtEncoderERK6Config","espp::RmtEncoder::RmtEncoder"],[56,6,1,"_CPPv4N4espp10RmtEncoder10RmtEncoderERK6Config","espp::RmtEncoder::RmtEncoder::config"],[56,7,1,"_CPPv4N4espp10RmtEncoder9delete_fnE","espp::RmtEncoder::delete_fn"],[56,7,1,"_CPPv4N4espp10RmtEncoder9encode_fnE","espp::RmtEncoder::encode_fn"],[56,5,1,"_CPPv4NK4espp10RmtEncoder6handleEv","espp::RmtEncoder::handle"],[56,7,1,"_CPPv4N4espp10RmtEncoder8reset_fnE","espp::RmtEncoder::reset_fn"],[56,5,1,"_CPPv4N4espp10RmtEncoderD0Ev","espp::RmtEncoder::~RmtEncoder"],[57,2,1,"_CPPv4N4espp10RtcpPacketE","espp::RtcpPacket"],[57,2,1,"_CPPv4N4espp13RtpJpegPacketE","espp::RtpJpegPacket"],[57,5,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket"],[57,5,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket"],[57,5,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::data"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::frag_type"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::frag_type"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::height"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::height"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::offset"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::q"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::q"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::q0"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::q1"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::scan_data"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::scan_data"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::type_specific"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::type_specific"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::width"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::width"],[57,5,1,"_CPPv4NK4espp13RtpJpegPacket8get_dataEv","espp::RtpJpegPacket::get_data"],[57,5,1,"_CPPv4NK4espp13RtpJpegPacket10get_heightEv","espp::RtpJpegPacket::get_height"],[57,5,1,"_CPPv4NK4espp13RtpJpegPacket13get_jpeg_dataEv","espp::RtpJpegPacket::get_jpeg_data"],[57,5,1,"_CPPv4N4espp13RtpJpegPacket16get_mjpeg_headerEv","espp::RtpJpegPacket::get_mjpeg_header"],[57,5,1,"_CPPv4NK4espp13RtpJpegPacket16get_num_q_tablesEv","espp::RtpJpegPacket::get_num_q_tables"],[57,5,1,"_CPPv4NK4espp13RtpJpegPacket10get_offsetEv","espp::RtpJpegPacket::get_offset"],[57,5,1,"_CPPv4N4espp13RtpJpegPacket10get_packetEv","espp::RtpJpegPacket::get_packet"],[57,5,1,"_CPPv4NK4espp13RtpJpegPacket11get_payloadEv","espp::RtpJpegPacket::get_payload"],[57,5,1,"_CPPv4NK4espp13RtpJpegPacket5get_qEv","espp::RtpJpegPacket::get_q"],[57,5,1,"_CPPv4NK4espp13RtpJpegPacket11get_q_tableEi","espp::RtpJpegPacket::get_q_table"],[57,6,1,"_CPPv4NK4espp13RtpJpegPacket11get_q_tableEi","espp::RtpJpegPacket::get_q_table::index"],[57,5,1,"_CPPv4NK4espp13RtpJpegPacket14get_rpt_headerEv","espp::RtpJpegPacket::get_rpt_header"],[57,5,1,"_CPPv4NK4espp13RtpJpegPacket19get_rtp_header_sizeEv","espp::RtpJpegPacket::get_rtp_header_size"],[57,5,1,"_CPPv4NK4espp13RtpJpegPacket17get_type_specificEv","espp::RtpJpegPacket::get_type_specific"],[57,5,1,"_CPPv4NK4espp13RtpJpegPacket11get_versionEv","espp::RtpJpegPacket::get_version"],[57,5,1,"_CPPv4NK4espp13RtpJpegPacket9get_widthEv","espp::RtpJpegPacket::get_width"],[57,5,1,"_CPPv4NK4espp13RtpJpegPacket12has_q_tablesEv","espp::RtpJpegPacket::has_q_tables"],[57,5,1,"_CPPv4N4espp13RtpJpegPacket9serializeEv","espp::RtpJpegPacket::serialize"],[57,5,1,"_CPPv4N4espp13RtpJpegPacket11set_payloadENSt11string_viewE","espp::RtpJpegPacket::set_payload"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket11set_payloadENSt11string_viewE","espp::RtpJpegPacket::set_payload::payload"],[57,5,1,"_CPPv4N4espp13RtpJpegPacket11set_versionEi","espp::RtpJpegPacket::set_version"],[57,6,1,"_CPPv4N4espp13RtpJpegPacket11set_versionEi","espp::RtpJpegPacket::set_version::version"],[57,2,1,"_CPPv4N4espp9RtpPacketE","espp::RtpPacket"],[57,5,1,"_CPPv4N4espp9RtpPacket9RtpPacketE6size_t","espp::RtpPacket::RtpPacket"],[57,5,1,"_CPPv4N4espp9RtpPacket9RtpPacketENSt11string_viewE","espp::RtpPacket::RtpPacket"],[57,5,1,"_CPPv4N4espp9RtpPacket9RtpPacketEv","espp::RtpPacket::RtpPacket"],[57,6,1,"_CPPv4N4espp9RtpPacket9RtpPacketENSt11string_viewE","espp::RtpPacket::RtpPacket::data"],[57,6,1,"_CPPv4N4espp9RtpPacket9RtpPacketE6size_t","espp::RtpPacket::RtpPacket::payload_size"],[57,5,1,"_CPPv4NK4espp9RtpPacket8get_dataEv","espp::RtpPacket::get_data"],[57,5,1,"_CPPv4N4espp9RtpPacket10get_packetEv","espp::RtpPacket::get_packet"],[57,5,1,"_CPPv4NK4espp9RtpPacket11get_payloadEv","espp::RtpPacket::get_payload"],[57,5,1,"_CPPv4NK4espp9RtpPacket14get_rpt_headerEv","espp::RtpPacket::get_rpt_header"],[57,5,1,"_CPPv4NK4espp9RtpPacket19get_rtp_header_sizeEv","espp::RtpPacket::get_rtp_header_size"],[57,5,1,"_CPPv4NK4espp9RtpPacket11get_versionEv","espp::RtpPacket::get_version"],[57,5,1,"_CPPv4N4espp9RtpPacket9serializeEv","espp::RtpPacket::serialize"],[57,5,1,"_CPPv4N4espp9RtpPacket11set_payloadENSt11string_viewE","espp::RtpPacket::set_payload"],[57,6,1,"_CPPv4N4espp9RtpPacket11set_payloadENSt11string_viewE","espp::RtpPacket::set_payload::payload"],[57,5,1,"_CPPv4N4espp9RtpPacket11set_versionEi","espp::RtpPacket::set_version"],[57,6,1,"_CPPv4N4espp9RtpPacket11set_versionEi","espp::RtpPacket::set_version::version"],[57,2,1,"_CPPv4N4espp10RtspClientE","espp::RtspClient"],[57,2,1,"_CPPv4N4espp10RtspClient6ConfigE","espp::RtspClient::Config"],[57,1,1,"_CPPv4N4espp10RtspClient6Config9log_levelE","espp::RtspClient::Config::log_level"],[57,1,1,"_CPPv4N4espp10RtspClient6Config13on_jpeg_frameE","espp::RtspClient::Config::on_jpeg_frame"],[57,1,1,"_CPPv4N4espp10RtspClient6Config4pathE","espp::RtspClient::Config::path"],[57,1,1,"_CPPv4N4espp10RtspClient6Config9rtsp_portE","espp::RtspClient::Config::rtsp_port"],[57,1,1,"_CPPv4N4espp10RtspClient6Config14server_addressE","espp::RtspClient::Config::server_address"],[57,5,1,"_CPPv4N4espp10RtspClient10RtspClientERK6Config","espp::RtspClient::RtspClient"],[57,6,1,"_CPPv4N4espp10RtspClient10RtspClientERK6Config","espp::RtspClient::RtspClient::config"],[57,5,1,"_CPPv4N4espp10RtspClient7connectERNSt10error_codeE","espp::RtspClient::connect"],[57,6,1,"_CPPv4N4espp10RtspClient7connectERNSt10error_codeE","espp::RtspClient::connect::ec"],[57,5,1,"_CPPv4N4espp10RtspClient8describeERNSt10error_codeE","espp::RtspClient::describe"],[57,6,1,"_CPPv4N4espp10RtspClient8describeERNSt10error_codeE","espp::RtspClient::describe::ec"],[57,5,1,"_CPPv4N4espp10RtspClient10disconnectERNSt10error_codeE","espp::RtspClient::disconnect"],[57,6,1,"_CPPv4N4espp10RtspClient10disconnectERNSt10error_codeE","espp::RtspClient::disconnect::ec"],[57,7,1,"_CPPv4N4espp10RtspClient21jpeg_frame_callback_tE","espp::RtspClient::jpeg_frame_callback_t"],[57,5,1,"_CPPv4N4espp10RtspClient5pauseERNSt10error_codeE","espp::RtspClient::pause"],[57,6,1,"_CPPv4N4espp10RtspClient5pauseERNSt10error_codeE","espp::RtspClient::pause::ec"],[57,5,1,"_CPPv4N4espp10RtspClient4playERNSt10error_codeE","espp::RtspClient::play"],[57,6,1,"_CPPv4N4espp10RtspClient4playERNSt10error_codeE","espp::RtspClient::play::ec"],[57,5,1,"_CPPv4N4espp10RtspClient12send_requestERKNSt6stringERKNSt6stringERKNSt13unordered_mapINSt6stringENSt6stringEEERNSt10error_codeE","espp::RtspClient::send_request"],[57,6,1,"_CPPv4N4espp10RtspClient12send_requestERKNSt6stringERKNSt6stringERKNSt13unordered_mapINSt6stringENSt6stringEEERNSt10error_codeE","espp::RtspClient::send_request::ec"],[57,6,1,"_CPPv4N4espp10RtspClient12send_requestERKNSt6stringERKNSt6stringERKNSt13unordered_mapINSt6stringENSt6stringEEERNSt10error_codeE","espp::RtspClient::send_request::extra_headers"],[57,6,1,"_CPPv4N4espp10RtspClient12send_requestERKNSt6stringERKNSt6stringERKNSt13unordered_mapINSt6stringENSt6stringEEERNSt10error_codeE","espp::RtspClient::send_request::method"],[57,6,1,"_CPPv4N4espp10RtspClient12send_requestERKNSt6stringERKNSt6stringERKNSt13unordered_mapINSt6stringENSt6stringEEERNSt10error_codeE","espp::RtspClient::send_request::path"],[57,5,1,"_CPPv4N4espp10RtspClient5setupE6size_t6size_tRNSt10error_codeE","espp::RtspClient::setup"],[57,5,1,"_CPPv4N4espp10RtspClient5setupERNSt10error_codeE","espp::RtspClient::setup"],[57,6,1,"_CPPv4N4espp10RtspClient5setupE6size_t6size_tRNSt10error_codeE","espp::RtspClient::setup::ec"],[57,6,1,"_CPPv4N4espp10RtspClient5setupERNSt10error_codeE","espp::RtspClient::setup::ec"],[57,6,1,"_CPPv4N4espp10RtspClient5setupE6size_t6size_tRNSt10error_codeE","espp::RtspClient::setup::rtcp_port"],[57,6,1,"_CPPv4N4espp10RtspClient5setupE6size_t6size_tRNSt10error_codeE","espp::RtspClient::setup::rtp_port"],[57,5,1,"_CPPv4N4espp10RtspClient8teardownERNSt10error_codeE","espp::RtspClient::teardown"],[57,6,1,"_CPPv4N4espp10RtspClient8teardownERNSt10error_codeE","espp::RtspClient::teardown::ec"],[57,5,1,"_CPPv4N4espp10RtspClientD0Ev","espp::RtspClient::~RtspClient"],[57,2,1,"_CPPv4N4espp10RtspServerE","espp::RtspServer"],[57,2,1,"_CPPv4N4espp10RtspServer6ConfigE","espp::RtspServer::Config"],[57,1,1,"_CPPv4N4espp10RtspServer6Config9log_levelE","espp::RtspServer::Config::log_level"],[57,1,1,"_CPPv4N4espp10RtspServer6Config13max_data_sizeE","espp::RtspServer::Config::max_data_size"],[57,1,1,"_CPPv4N4espp10RtspServer6Config4pathE","espp::RtspServer::Config::path"],[57,1,1,"_CPPv4N4espp10RtspServer6Config4portE","espp::RtspServer::Config::port"],[57,1,1,"_CPPv4N4espp10RtspServer6Config14server_addressE","espp::RtspServer::Config::server_address"],[57,5,1,"_CPPv4N4espp10RtspServer10RtspServerERK6Config","espp::RtspServer::RtspServer"],[57,6,1,"_CPPv4N4espp10RtspServer10RtspServerERK6Config","espp::RtspServer::RtspServer::config"],[57,5,1,"_CPPv4N4espp10RtspServer10send_frameERK9JpegFrame","espp::RtspServer::send_frame"],[57,6,1,"_CPPv4N4espp10RtspServer10send_frameERK9JpegFrame","espp::RtspServer::send_frame::frame"],[57,5,1,"_CPPv4N4espp10RtspServer21set_session_log_levelEN6Logger9VerbosityE","espp::RtspServer::set_session_log_level"],[57,6,1,"_CPPv4N4espp10RtspServer21set_session_log_levelEN6Logger9VerbosityE","espp::RtspServer::set_session_log_level::log_level"],[57,5,1,"_CPPv4N4espp10RtspServer5startEv","espp::RtspServer::start"],[57,5,1,"_CPPv4N4espp10RtspServer4stopEv","espp::RtspServer::stop"],[57,5,1,"_CPPv4N4espp10RtspServerD0Ev","espp::RtspServer::~RtspServer"],[57,2,1,"_CPPv4N4espp11RtspSessionE","espp::RtspSession"],[57,2,1,"_CPPv4N4espp11RtspSession6ConfigE","espp::RtspSession::Config"],[57,1,1,"_CPPv4N4espp11RtspSession6Config9log_levelE","espp::RtspSession::Config::log_level"],[57,1,1,"_CPPv4N4espp11RtspSession6Config9rtsp_pathE","espp::RtspSession::Config::rtsp_path"],[57,1,1,"_CPPv4N4espp11RtspSession6Config14server_addressE","espp::RtspSession::Config::server_address"],[57,5,1,"_CPPv4N4espp11RtspSession11RtspSessionENSt10unique_ptrI9TcpSocketEERK6Config","espp::RtspSession::RtspSession"],[57,6,1,"_CPPv4N4espp11RtspSession11RtspSessionENSt10unique_ptrI9TcpSocketEERK6Config","espp::RtspSession::RtspSession::config"],[57,6,1,"_CPPv4N4espp11RtspSession11RtspSessionENSt10unique_ptrI9TcpSocketEERK6Config","espp::RtspSession::RtspSession::control_socket"],[57,5,1,"_CPPv4NK4espp11RtspSession14get_session_idEv","espp::RtspSession::get_session_id"],[57,5,1,"_CPPv4NK4espp11RtspSession9is_activeEv","espp::RtspSession::is_active"],[57,5,1,"_CPPv4NK4espp11RtspSession9is_closedEv","espp::RtspSession::is_closed"],[57,5,1,"_CPPv4NK4espp11RtspSession12is_connectedEv","espp::RtspSession::is_connected"],[57,5,1,"_CPPv4N4espp11RtspSession5pauseEv","espp::RtspSession::pause"],[57,5,1,"_CPPv4N4espp11RtspSession4playEv","espp::RtspSession::play"],[57,5,1,"_CPPv4N4espp11RtspSession16send_rtcp_packetERK10RtcpPacket","espp::RtspSession::send_rtcp_packet"],[57,6,1,"_CPPv4N4espp11RtspSession16send_rtcp_packetERK10RtcpPacket","espp::RtspSession::send_rtcp_packet::packet"],[57,5,1,"_CPPv4N4espp11RtspSession15send_rtp_packetERK9RtpPacket","espp::RtspSession::send_rtp_packet"],[57,6,1,"_CPPv4N4espp11RtspSession15send_rtp_packetERK9RtpPacket","espp::RtspSession::send_rtp_packet::packet"],[57,5,1,"_CPPv4N4espp11RtspSession8teardownEv","espp::RtspSession::teardown"],[49,2,1,"_CPPv4N4espp6SocketE","espp::Socket"],[49,2,1,"_CPPv4N4espp6Socket4InfoE","espp::Socket::Info"],[49,1,1,"_CPPv4N4espp6Socket4Info7addressE","espp::Socket::Info::address"],[49,5,1,"_CPPv4N4espp6Socket4Info13from_sockaddrERK11sockaddr_in","espp::Socket::Info::from_sockaddr"],[49,5,1,"_CPPv4N4espp6Socket4Info13from_sockaddrERK12sockaddr_in6","espp::Socket::Info::from_sockaddr"],[49,5,1,"_CPPv4N4espp6Socket4Info13from_sockaddrERK16sockaddr_storage","espp::Socket::Info::from_sockaddr"],[49,6,1,"_CPPv4N4espp6Socket4Info13from_sockaddrERK11sockaddr_in","espp::Socket::Info::from_sockaddr::source_address"],[49,6,1,"_CPPv4N4espp6Socket4Info13from_sockaddrERK12sockaddr_in6","espp::Socket::Info::from_sockaddr::source_address"],[49,6,1,"_CPPv4N4espp6Socket4Info13from_sockaddrERK16sockaddr_storage","espp::Socket::Info::from_sockaddr::source_address"],[49,5,1,"_CPPv4N4espp6Socket4Info9init_ipv4ERKNSt6stringE6size_t","espp::Socket::Info::init_ipv4"],[49,6,1,"_CPPv4N4espp6Socket4Info9init_ipv4ERKNSt6stringE6size_t","espp::Socket::Info::init_ipv4::addr"],[49,6,1,"_CPPv4N4espp6Socket4Info9init_ipv4ERKNSt6stringE6size_t","espp::Socket::Info::init_ipv4::prt"],[49,5,1,"_CPPv4N4espp6Socket4Info8ipv4_ptrEv","espp::Socket::Info::ipv4_ptr"],[49,5,1,"_CPPv4N4espp6Socket4Info8ipv6_ptrEv","espp::Socket::Info::ipv6_ptr"],[49,1,1,"_CPPv4N4espp6Socket4Info4portE","espp::Socket::Info::port"],[49,5,1,"_CPPv4N4espp6Socket4Info6updateEv","espp::Socket::Info::update"],[49,5,1,"_CPPv4N4espp6Socket6SocketE4TypeRKN6Logger6ConfigE","espp::Socket::Socket"],[49,5,1,"_CPPv4N4espp6Socket6SocketEiRKN6Logger6ConfigE","espp::Socket::Socket"],[49,6,1,"_CPPv4N4espp6Socket6SocketE4TypeRKN6Logger6ConfigE","espp::Socket::Socket::logger_config"],[49,6,1,"_CPPv4N4espp6Socket6SocketEiRKN6Logger6ConfigE","espp::Socket::Socket::logger_config"],[49,6,1,"_CPPv4N4espp6Socket6SocketEiRKN6Logger6ConfigE","espp::Socket::Socket::socket_fd"],[49,6,1,"_CPPv4N4espp6Socket6SocketE4TypeRKN6Logger6ConfigE","espp::Socket::Socket::type"],[49,5,1,"_CPPv4N4espp6Socket19add_multicast_groupERKNSt6stringE","espp::Socket::add_multicast_group"],[49,6,1,"_CPPv4N4espp6Socket19add_multicast_groupERKNSt6stringE","espp::Socket::add_multicast_group::multicast_group"],[49,5,1,"_CPPv4N4espp6Socket12enable_reuseEv","espp::Socket::enable_reuse"],[49,5,1,"_CPPv4N4espp6Socket13get_ipv4_infoEv","espp::Socket::get_ipv4_info"],[49,5,1,"_CPPv4N4espp6Socket8is_validEi","espp::Socket::is_valid"],[49,5,1,"_CPPv4NK4espp6Socket8is_validEv","espp::Socket::is_valid"],[49,6,1,"_CPPv4N4espp6Socket8is_validEi","espp::Socket::is_valid::socket_fd"],[49,5,1,"_CPPv4N4espp6Socket14make_multicastE7uint8_t7uint8_t","espp::Socket::make_multicast"],[49,6,1,"_CPPv4N4espp6Socket14make_multicastE7uint8_t7uint8_t","espp::Socket::make_multicast::loopback_enabled"],[49,6,1,"_CPPv4N4espp6Socket14make_multicastE7uint8_t7uint8_t","espp::Socket::make_multicast::time_to_live"],[49,7,1,"_CPPv4N4espp6Socket19receive_callback_fnE","espp::Socket::receive_callback_fn"],[49,7,1,"_CPPv4N4espp6Socket20response_callback_fnE","espp::Socket::response_callback_fn"],[49,5,1,"_CPPv4N4espp6Socket19set_receive_timeoutERKNSt6chrono8durationIfEE","espp::Socket::set_receive_timeout"],[49,6,1,"_CPPv4N4espp6Socket19set_receive_timeoutERKNSt6chrono8durationIfEE","espp::Socket::set_receive_timeout::timeout"],[49,5,1,"_CPPv4N4espp6SocketD0Ev","espp::Socket::~Socket"],[26,2,1,"_CPPv4I_6size_t0EN4espp9SosFilterE","espp::SosFilter"],[26,8,1,"_CPPv4I_6size_t0EN4espp9SosFilterE","espp::SosFilter::N"],[26,8,1,"_CPPv4I_6size_t0EN4espp9SosFilterE","espp::SosFilter::SectionImpl"],[26,5,1,"_CPPv4N4espp9SosFilter9SosFilterERKNSt5arrayI16TransferFunctionIXL3EEE1NEE","espp::SosFilter::SosFilter"],[26,6,1,"_CPPv4N4espp9SosFilter9SosFilterERKNSt5arrayI16TransferFunctionIXL3EEE1NEE","espp::SosFilter::SosFilter::config"],[26,5,1,"_CPPv4N4espp9SosFilterclEf","espp::SosFilter::operator()"],[26,6,1,"_CPPv4N4espp9SosFilterclEf","espp::SosFilter::operator()::input"],[26,5,1,"_CPPv4N4espp9SosFilter6updateEf","espp::SosFilter::update"],[26,6,1,"_CPPv4N4espp9SosFilter6updateEf","espp::SosFilter::update::input"],[54,2,1,"_CPPv4N4espp6St25dvE","espp::St25dv"],[54,2,1,"_CPPv4N4espp6St25dv6ConfigE","espp::St25dv::Config"],[54,1,1,"_CPPv4N4espp6St25dv6Config9log_levelE","espp::St25dv::Config::log_level"],[54,1,1,"_CPPv4N4espp6St25dv6Config4readE","espp::St25dv::Config::read"],[54,1,1,"_CPPv4N4espp6St25dv6Config5writeE","espp::St25dv::Config::write"],[54,1,1,"_CPPv4N4espp6St25dv12DATA_ADDRESSE","espp::St25dv::DATA_ADDRESS"],[54,2,1,"_CPPv4N4espp6St25dv7EH_CTRLE","espp::St25dv::EH_CTRL"],[54,2,1,"_CPPv4N4espp6St25dv3GPOE","espp::St25dv::GPO"],[54,2,1,"_CPPv4N4espp6St25dv6IT_STSE","espp::St25dv::IT_STS"],[54,2,1,"_CPPv4N4espp6St25dv6IT_STSE","espp::St25dv::IT_STS"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS13FIELD_FALLINGE","espp::St25dv::IT_STS::FIELD_FALLING"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS13FIELD_FALLINGE","espp::St25dv::IT_STS::FIELD_FALLING"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS12FIELD_RISINGE","espp::St25dv::IT_STS::FIELD_RISING"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS12FIELD_RISINGE","espp::St25dv::IT_STS::FIELD_RISING"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS11RF_ACTIVITYE","espp::St25dv::IT_STS::RF_ACTIVITY"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS11RF_ACTIVITYE","espp::St25dv::IT_STS::RF_ACTIVITY"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS10RF_GET_MSGE","espp::St25dv::IT_STS::RF_GET_MSG"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS10RF_GET_MSGE","espp::St25dv::IT_STS::RF_GET_MSG"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS12RF_INTTERUPTE","espp::St25dv::IT_STS::RF_INTTERUPT"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS12RF_INTTERUPTE","espp::St25dv::IT_STS::RF_INTTERUPT"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS10RF_PUT_MSGE","espp::St25dv::IT_STS::RF_PUT_MSG"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS10RF_PUT_MSGE","espp::St25dv::IT_STS::RF_PUT_MSG"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS7RF_USERE","espp::St25dv::IT_STS::RF_USER"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS7RF_USERE","espp::St25dv::IT_STS::RF_USER"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS8RF_WRITEE","espp::St25dv::IT_STS::RF_WRITE"],[54,1,1,"_CPPv4N4espp6St25dv6IT_STS8RF_WRITEE","espp::St25dv::IT_STS::RF_WRITE"],[54,2,1,"_CPPv4N4espp6St25dv7MB_CTRLE","espp::St25dv::MB_CTRL"],[54,1,1,"_CPPv4N4espp6St25dv19PhonyNameDueToError6lengthE","espp::St25dv::PhonyNameDueToError::length"],[54,1,1,"_CPPv4N4espp6St25dv19PhonyNameDueToError8length16E","espp::St25dv::PhonyNameDueToError::length16"],[54,1,1,"_CPPv4N4espp6St25dv19PhonyNameDueToError4typeE","espp::St25dv::PhonyNameDueToError::type"],[54,1,1,"_CPPv4N4espp6St25dv12SYST_ADDRESSE","espp::St25dv::SYST_ADDRESS"],[54,5,1,"_CPPv4N4espp6St25dv6St25dvERK6Config","espp::St25dv::St25dv"],[54,6,1,"_CPPv4N4espp6St25dv6St25dvERK6Config","espp::St25dv::St25dv::config"],[54,5,1,"_CPPv4N4espp6St25dv14get_ftm_lengthEv","espp::St25dv::get_ftm_length"],[54,5,1,"_CPPv4N4espp6St25dv20get_interrupt_statusEv","espp::St25dv::get_interrupt_status"],[54,5,1,"_CPPv4N4espp6St25dv4readEP7uint8_t7uint8_t8uint16_t","espp::St25dv::read"],[54,6,1,"_CPPv4N4espp6St25dv4readEP7uint8_t7uint8_t8uint16_t","espp::St25dv::read::data"],[54,6,1,"_CPPv4N4espp6St25dv4readEP7uint8_t7uint8_t8uint16_t","espp::St25dv::read::length"],[54,6,1,"_CPPv4N4espp6St25dv4readEP7uint8_t7uint8_t8uint16_t","espp::St25dv::read::offset"],[54,7,1,"_CPPv4N4espp6St25dv7read_fnE","espp::St25dv::read_fn"],[54,5,1,"_CPPv4N4espp6St25dv7receiveEP7uint8_t7uint8_t","espp::St25dv::receive"],[54,6,1,"_CPPv4N4espp6St25dv7receiveEP7uint8_t7uint8_t","espp::St25dv::receive::data"],[54,6,1,"_CPPv4N4espp6St25dv7receiveEP7uint8_t7uint8_t","espp::St25dv::receive::length"],[54,5,1,"_CPPv4N4espp6St25dv10set_recordER4Ndef","espp::St25dv::set_record"],[54,6,1,"_CPPv4N4espp6St25dv10set_recordER4Ndef","espp::St25dv::set_record::record"],[54,5,1,"_CPPv4N4espp6St25dv24start_fast_transfer_modeEv","espp::St25dv::start_fast_transfer_mode"],[54,5,1,"_CPPv4N4espp6St25dv23stop_fast_transfer_modeEv","espp::St25dv::stop_fast_transfer_mode"],[54,5,1,"_CPPv4N4espp6St25dv8transferEP7uint8_t7uint8_t","espp::St25dv::transfer"],[54,6,1,"_CPPv4N4espp6St25dv8transferEP7uint8_t7uint8_t","espp::St25dv::transfer::data"],[54,6,1,"_CPPv4N4espp6St25dv8transferEP7uint8_t7uint8_t","espp::St25dv::transfer::length"],[54,5,1,"_CPPv4N4espp6St25dv5writeENSt11string_viewE","espp::St25dv::write"],[54,6,1,"_CPPv4N4espp6St25dv5writeENSt11string_viewE","espp::St25dv::write::payload"],[54,7,1,"_CPPv4N4espp6St25dv8write_fnE","espp::St25dv::write_fn"],[13,2,1,"_CPPv4N4espp6St7789E","espp::St7789"],[13,5,1,"_CPPv4N4espp6St77895clearE6size_t6size_t6size_t6size_t8uint16_t","espp::St7789::clear"],[13,6,1,"_CPPv4N4espp6St77895clearE6size_t6size_t6size_t6size_t8uint16_t","espp::St7789::clear::color"],[13,6,1,"_CPPv4N4espp6St77895clearE6size_t6size_t6size_t6size_t8uint16_t","espp::St7789::clear::height"],[13,6,1,"_CPPv4N4espp6St77895clearE6size_t6size_t6size_t6size_t8uint16_t","espp::St7789::clear::width"],[13,6,1,"_CPPv4N4espp6St77895clearE6size_t6size_t6size_t6size_t8uint16_t","espp::St7789::clear::x"],[13,6,1,"_CPPv4N4espp6St77895clearE6size_t6size_t6size_t6size_t8uint16_t","espp::St7789::clear::y"],[13,5,1,"_CPPv4N4espp6St77894fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::St7789::fill"],[13,6,1,"_CPPv4N4espp6St77894fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::St7789::fill::area"],[13,6,1,"_CPPv4N4espp6St77894fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::St7789::fill::color_map"],[13,6,1,"_CPPv4N4espp6St77894fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::St7789::fill::drv"],[13,6,1,"_CPPv4N4espp6St77894fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::St7789::fill::flags"],[13,5,1,"_CPPv4N4espp6St77895flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::St7789::flush"],[13,6,1,"_CPPv4N4espp6St77895flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::St7789::flush::area"],[13,6,1,"_CPPv4N4espp6St77895flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::St7789::flush::color_map"],[13,6,1,"_CPPv4N4espp6St77895flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::St7789::flush::drv"],[13,5,1,"_CPPv4N4espp6St778910get_offsetERiRi","espp::St7789::get_offset"],[13,6,1,"_CPPv4N4espp6St778910get_offsetERiRi","espp::St7789::get_offset::x"],[13,6,1,"_CPPv4N4espp6St778910get_offsetERiRi","espp::St7789::get_offset::y"],[13,5,1,"_CPPv4N4espp6St778910initializeERKN15display_drivers6ConfigE","espp::St7789::initialize"],[13,6,1,"_CPPv4N4espp6St778910initializeERKN15display_drivers6ConfigE","espp::St7789::initialize::config"],[13,5,1,"_CPPv4N4espp6St778912send_commandE7uint8_t","espp::St7789::send_command"],[13,6,1,"_CPPv4N4espp6St778912send_commandE7uint8_t","espp::St7789::send_command::command"],[13,5,1,"_CPPv4N4espp6St77899send_dataEPK7uint8_t6size_t8uint32_t","espp::St7789::send_data"],[13,6,1,"_CPPv4N4espp6St77899send_dataEPK7uint8_t6size_t8uint32_t","espp::St7789::send_data::data"],[13,6,1,"_CPPv4N4espp6St77899send_dataEPK7uint8_t6size_t8uint32_t","espp::St7789::send_data::flags"],[13,6,1,"_CPPv4N4espp6St77899send_dataEPK7uint8_t6size_t8uint32_t","espp::St7789::send_data::length"],[13,5,1,"_CPPv4N4espp6St778916set_drawing_areaE6size_t6size_t6size_t6size_t","espp::St7789::set_drawing_area"],[13,5,1,"_CPPv4N4espp6St778916set_drawing_areaEPK9lv_area_t","espp::St7789::set_drawing_area"],[13,6,1,"_CPPv4N4espp6St778916set_drawing_areaEPK9lv_area_t","espp::St7789::set_drawing_area::area"],[13,6,1,"_CPPv4N4espp6St778916set_drawing_areaE6size_t6size_t6size_t6size_t","espp::St7789::set_drawing_area::xe"],[13,6,1,"_CPPv4N4espp6St778916set_drawing_areaE6size_t6size_t6size_t6size_t","espp::St7789::set_drawing_area::xs"],[13,6,1,"_CPPv4N4espp6St778916set_drawing_areaE6size_t6size_t6size_t6size_t","espp::St7789::set_drawing_area::ye"],[13,6,1,"_CPPv4N4espp6St778916set_drawing_areaE6size_t6size_t6size_t6size_t","espp::St7789::set_drawing_area::ys"],[13,5,1,"_CPPv4N4espp6St778910set_offsetEii","espp::St7789::set_offset"],[13,6,1,"_CPPv4N4espp6St778910set_offsetEii","espp::St7789::set_offset::x"],[13,6,1,"_CPPv4N4espp6St778910set_offsetEii","espp::St7789::set_offset::y"],[60,2,1,"_CPPv4N4espp4TaskE","espp::Task"],[60,2,1,"_CPPv4N4espp4Task6ConfigE","espp::Task::Config"],[60,1,1,"_CPPv4N4espp4Task6Config8callbackE","espp::Task::Config::callback"],[60,1,1,"_CPPv4N4espp4Task6Config7core_idE","espp::Task::Config::core_id"],[60,1,1,"_CPPv4N4espp4Task6Config9log_levelE","espp::Task::Config::log_level"],[60,1,1,"_CPPv4N4espp4Task6Config4nameE","espp::Task::Config::name"],[60,1,1,"_CPPv4N4espp4Task6Config8priorityE","espp::Task::Config::priority"],[60,1,1,"_CPPv4N4espp4Task6Config16stack_size_bytesE","espp::Task::Config::stack_size_bytes"],[60,7,1,"_CPPv4N4espp4Task11callback_fnE","espp::Task::callback_fn"],[60,5,1,"_CPPv4N4espp4Task10is_startedEv","espp::Task::is_started"],[60,5,1,"_CPPv4N4espp4Task11make_uniqueERK6Config","espp::Task::make_unique"],[60,6,1,"_CPPv4N4espp4Task11make_uniqueERK6Config","espp::Task::make_unique::config"],[60,5,1,"_CPPv4N4espp4Task5startEv","espp::Task::start"],[60,5,1,"_CPPv4N4espp4Task4stopEv","espp::Task::stop"],[60,5,1,"_CPPv4N4espp4TaskD0Ev","espp::Task::~Task"],[47,2,1,"_CPPv4N4espp11TaskMonitorE","espp::TaskMonitor"],[47,2,1,"_CPPv4N4espp11TaskMonitor6ConfigE","espp::TaskMonitor::Config"],[47,1,1,"_CPPv4N4espp11TaskMonitor6Config6periodE","espp::TaskMonitor::Config::period"],[47,1,1,"_CPPv4N4espp11TaskMonitor6Config21task_stack_size_bytesE","espp::TaskMonitor::Config::task_stack_size_bytes"],[47,5,1,"_CPPv4N4espp11TaskMonitor15get_latest_infoEv","espp::TaskMonitor::get_latest_info"],[50,2,1,"_CPPv4N4espp9TcpSocketE","espp::TcpSocket"],[50,2,1,"_CPPv4N4espp9TcpSocket6ConfigE","espp::TcpSocket::Config"],[50,1,1,"_CPPv4N4espp9TcpSocket6Config9log_levelE","espp::TcpSocket::Config::log_level"],[50,2,1,"_CPPv4N4espp9TcpSocket13ConnectConfigE","espp::TcpSocket::ConnectConfig"],[50,1,1,"_CPPv4N4espp9TcpSocket13ConnectConfig10ip_addressE","espp::TcpSocket::ConnectConfig::ip_address"],[50,1,1,"_CPPv4N4espp9TcpSocket13ConnectConfig4portE","espp::TcpSocket::ConnectConfig::port"],[50,5,1,"_CPPv4N4espp9TcpSocket9TcpSocketERK6Config","espp::TcpSocket::TcpSocket"],[50,6,1,"_CPPv4N4espp9TcpSocket9TcpSocketERK6Config","espp::TcpSocket::TcpSocket::config"],[50,5,1,"_CPPv4N4espp9TcpSocket6acceptEv","espp::TcpSocket::accept"],[50,5,1,"_CPPv4N4espp9TcpSocket19add_multicast_groupERKNSt6stringE","espp::TcpSocket::add_multicast_group"],[50,6,1,"_CPPv4N4espp9TcpSocket19add_multicast_groupERKNSt6stringE","espp::TcpSocket::add_multicast_group::multicast_group"],[50,5,1,"_CPPv4N4espp9TcpSocket4bindEi","espp::TcpSocket::bind"],[50,6,1,"_CPPv4N4espp9TcpSocket4bindEi","espp::TcpSocket::bind::port"],[50,5,1,"_CPPv4N4espp9TcpSocket5closeEv","espp::TcpSocket::close"],[50,5,1,"_CPPv4N4espp9TcpSocket7connectERK13ConnectConfig","espp::TcpSocket::connect"],[50,6,1,"_CPPv4N4espp9TcpSocket7connectERK13ConnectConfig","espp::TcpSocket::connect::connect_config"],[50,5,1,"_CPPv4N4espp9TcpSocket12enable_reuseEv","espp::TcpSocket::enable_reuse"],[50,5,1,"_CPPv4N4espp9TcpSocket13get_ipv4_infoEv","espp::TcpSocket::get_ipv4_info"],[50,5,1,"_CPPv4NK4espp9TcpSocket15get_remote_infoEv","espp::TcpSocket::get_remote_info"],[50,5,1,"_CPPv4NK4espp9TcpSocket12is_connectedEv","espp::TcpSocket::is_connected"],[50,5,1,"_CPPv4N4espp9TcpSocket8is_validEi","espp::TcpSocket::is_valid"],[50,5,1,"_CPPv4NK4espp9TcpSocket8is_validEv","espp::TcpSocket::is_valid"],[50,6,1,"_CPPv4N4espp9TcpSocket8is_validEi","espp::TcpSocket::is_valid::socket_fd"],[50,5,1,"_CPPv4N4espp9TcpSocket6listenEi","espp::TcpSocket::listen"],[50,6,1,"_CPPv4N4espp9TcpSocket6listenEi","espp::TcpSocket::listen::max_pending_connections"],[50,5,1,"_CPPv4N4espp9TcpSocket14make_multicastE7uint8_t7uint8_t","espp::TcpSocket::make_multicast"],[50,6,1,"_CPPv4N4espp9TcpSocket14make_multicastE7uint8_t7uint8_t","espp::TcpSocket::make_multicast::loopback_enabled"],[50,6,1,"_CPPv4N4espp9TcpSocket14make_multicastE7uint8_t7uint8_t","espp::TcpSocket::make_multicast::time_to_live"],[50,5,1,"_CPPv4N4espp9TcpSocket7receiveEP7uint8_t6size_t","espp::TcpSocket::receive"],[50,5,1,"_CPPv4N4espp9TcpSocket7receiveERNSt6vectorI7uint8_tEE6size_t","espp::TcpSocket::receive"],[50,6,1,"_CPPv4N4espp9TcpSocket7receiveEP7uint8_t6size_t","espp::TcpSocket::receive::data"],[50,6,1,"_CPPv4N4espp9TcpSocket7receiveERNSt6vectorI7uint8_tEE6size_t","espp::TcpSocket::receive::data"],[50,6,1,"_CPPv4N4espp9TcpSocket7receiveEP7uint8_t6size_t","espp::TcpSocket::receive::max_num_bytes"],[50,6,1,"_CPPv4N4espp9TcpSocket7receiveERNSt6vectorI7uint8_tEE6size_t","espp::TcpSocket::receive::max_num_bytes"],[50,7,1,"_CPPv4N4espp9TcpSocket19receive_callback_fnE","espp::TcpSocket::receive_callback_fn"],[50,5,1,"_CPPv4N4espp9TcpSocket6reinitEv","espp::TcpSocket::reinit"],[50,7,1,"_CPPv4N4espp9TcpSocket20response_callback_fnE","espp::TcpSocket::response_callback_fn"],[50,5,1,"_CPPv4N4espp9TcpSocket19set_receive_timeoutERKNSt6chrono8durationIfEE","espp::TcpSocket::set_receive_timeout"],[50,6,1,"_CPPv4N4espp9TcpSocket19set_receive_timeoutERKNSt6chrono8durationIfEE","espp::TcpSocket::set_receive_timeout::timeout"],[50,5,1,"_CPPv4N4espp9TcpSocket8transmitENSt11string_viewERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit"],[50,5,1,"_CPPv4N4espp9TcpSocket8transmitERKNSt6vectorI7uint8_tEERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit"],[50,5,1,"_CPPv4N4espp9TcpSocket8transmitERKNSt6vectorIcEERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit"],[50,6,1,"_CPPv4N4espp9TcpSocket8transmitENSt11string_viewERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit::data"],[50,6,1,"_CPPv4N4espp9TcpSocket8transmitERKNSt6vectorI7uint8_tEERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit::data"],[50,6,1,"_CPPv4N4espp9TcpSocket8transmitERKNSt6vectorIcEERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit::data"],[50,6,1,"_CPPv4N4espp9TcpSocket8transmitENSt11string_viewERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit::transmit_config"],[50,6,1,"_CPPv4N4espp9TcpSocket8transmitERKNSt6vectorI7uint8_tEERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit::transmit_config"],[50,6,1,"_CPPv4N4espp9TcpSocket8transmitERKNSt6vectorIcEERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit::transmit_config"],[50,5,1,"_CPPv4N4espp9TcpSocketD0Ev","espp::TcpSocket::~TcpSocket"],[34,2,1,"_CPPv4N4espp13TouchpadInputE","espp::TouchpadInput"],[34,2,1,"_CPPv4N4espp13TouchpadInput6ConfigE","espp::TouchpadInput::Config"],[34,1,1,"_CPPv4N4espp13TouchpadInput6Config8invert_xE","espp::TouchpadInput::Config::invert_x"],[34,1,1,"_CPPv4N4espp13TouchpadInput6Config8invert_yE","espp::TouchpadInput::Config::invert_y"],[34,1,1,"_CPPv4N4espp13TouchpadInput6Config9log_levelE","espp::TouchpadInput::Config::log_level"],[34,1,1,"_CPPv4N4espp13TouchpadInput6Config7swap_xyE","espp::TouchpadInput::Config::swap_xy"],[34,1,1,"_CPPv4N4espp13TouchpadInput6Config13touchpad_readE","espp::TouchpadInput::Config::touchpad_read"],[34,5,1,"_CPPv4N4espp13TouchpadInput13TouchpadInputERK6Config","espp::TouchpadInput::TouchpadInput"],[34,6,1,"_CPPv4N4espp13TouchpadInput13TouchpadInputERK6Config","espp::TouchpadInput::TouchpadInput::config"],[34,7,1,"_CPPv4N4espp13TouchpadInput16touchpad_read_fnE","espp::TouchpadInput::touchpad_read_fn"],[34,5,1,"_CPPv4N4espp13TouchpadInputD0Ev","espp::TouchpadInput::~TouchpadInput"],[51,2,1,"_CPPv4N4espp9UdpSocketE","espp::UdpSocket"],[51,2,1,"_CPPv4N4espp9UdpSocket6ConfigE","espp::UdpSocket::Config"],[51,1,1,"_CPPv4N4espp9UdpSocket6Config9log_levelE","espp::UdpSocket::Config::log_level"],[51,2,1,"_CPPv4N4espp9UdpSocket13ReceiveConfigE","espp::UdpSocket::ReceiveConfig"],[51,1,1,"_CPPv4N4espp9UdpSocket13ReceiveConfig11buffer_sizeE","espp::UdpSocket::ReceiveConfig::buffer_size"],[51,1,1,"_CPPv4N4espp9UdpSocket13ReceiveConfig21is_multicast_endpointE","espp::UdpSocket::ReceiveConfig::is_multicast_endpoint"],[51,1,1,"_CPPv4N4espp9UdpSocket13ReceiveConfig15multicast_groupE","espp::UdpSocket::ReceiveConfig::multicast_group"],[51,1,1,"_CPPv4N4espp9UdpSocket13ReceiveConfig19on_receive_callbackE","espp::UdpSocket::ReceiveConfig::on_receive_callback"],[51,1,1,"_CPPv4N4espp9UdpSocket13ReceiveConfig4portE","espp::UdpSocket::ReceiveConfig::port"],[51,2,1,"_CPPv4N4espp9UdpSocket10SendConfigE","espp::UdpSocket::SendConfig"],[51,1,1,"_CPPv4N4espp9UdpSocket10SendConfig10ip_addressE","espp::UdpSocket::SendConfig::ip_address"],[51,1,1,"_CPPv4N4espp9UdpSocket10SendConfig21is_multicast_endpointE","espp::UdpSocket::SendConfig::is_multicast_endpoint"],[51,1,1,"_CPPv4N4espp9UdpSocket10SendConfig20on_response_callbackE","espp::UdpSocket::SendConfig::on_response_callback"],[51,1,1,"_CPPv4N4espp9UdpSocket10SendConfig4portE","espp::UdpSocket::SendConfig::port"],[51,1,1,"_CPPv4N4espp9UdpSocket10SendConfig13response_sizeE","espp::UdpSocket::SendConfig::response_size"],[51,1,1,"_CPPv4N4espp9UdpSocket10SendConfig16response_timeoutE","espp::UdpSocket::SendConfig::response_timeout"],[51,1,1,"_CPPv4N4espp9UdpSocket10SendConfig17wait_for_responseE","espp::UdpSocket::SendConfig::wait_for_response"],[51,5,1,"_CPPv4N4espp9UdpSocket9UdpSocketERK6Config","espp::UdpSocket::UdpSocket"],[51,6,1,"_CPPv4N4espp9UdpSocket9UdpSocketERK6Config","espp::UdpSocket::UdpSocket::config"],[51,5,1,"_CPPv4N4espp9UdpSocket19add_multicast_groupERKNSt6stringE","espp::UdpSocket::add_multicast_group"],[51,6,1,"_CPPv4N4espp9UdpSocket19add_multicast_groupERKNSt6stringE","espp::UdpSocket::add_multicast_group::multicast_group"],[51,5,1,"_CPPv4N4espp9UdpSocket12enable_reuseEv","espp::UdpSocket::enable_reuse"],[51,5,1,"_CPPv4N4espp9UdpSocket13get_ipv4_infoEv","espp::UdpSocket::get_ipv4_info"],[51,5,1,"_CPPv4N4espp9UdpSocket8is_validEi","espp::UdpSocket::is_valid"],[51,5,1,"_CPPv4NK4espp9UdpSocket8is_validEv","espp::UdpSocket::is_valid"],[51,6,1,"_CPPv4N4espp9UdpSocket8is_validEi","espp::UdpSocket::is_valid::socket_fd"],[51,5,1,"_CPPv4N4espp9UdpSocket14make_multicastE7uint8_t7uint8_t","espp::UdpSocket::make_multicast"],[51,6,1,"_CPPv4N4espp9UdpSocket14make_multicastE7uint8_t7uint8_t","espp::UdpSocket::make_multicast::loopback_enabled"],[51,6,1,"_CPPv4N4espp9UdpSocket14make_multicastE7uint8_t7uint8_t","espp::UdpSocket::make_multicast::time_to_live"],[51,5,1,"_CPPv4N4espp9UdpSocket7receiveE6size_tRNSt6vectorI7uint8_tEERN6Socket4InfoE","espp::UdpSocket::receive"],[51,6,1,"_CPPv4N4espp9UdpSocket7receiveE6size_tRNSt6vectorI7uint8_tEERN6Socket4InfoE","espp::UdpSocket::receive::data"],[51,6,1,"_CPPv4N4espp9UdpSocket7receiveE6size_tRNSt6vectorI7uint8_tEERN6Socket4InfoE","espp::UdpSocket::receive::max_num_bytes"],[51,6,1,"_CPPv4N4espp9UdpSocket7receiveE6size_tRNSt6vectorI7uint8_tEERN6Socket4InfoE","espp::UdpSocket::receive::remote_info"],[51,7,1,"_CPPv4N4espp9UdpSocket19receive_callback_fnE","espp::UdpSocket::receive_callback_fn"],[51,7,1,"_CPPv4N4espp9UdpSocket20response_callback_fnE","espp::UdpSocket::response_callback_fn"],[51,5,1,"_CPPv4N4espp9UdpSocket4sendENSt11string_viewERK10SendConfig","espp::UdpSocket::send"],[51,5,1,"_CPPv4N4espp9UdpSocket4sendERKNSt6vectorI7uint8_tEERK10SendConfig","espp::UdpSocket::send"],[51,6,1,"_CPPv4N4espp9UdpSocket4sendENSt11string_viewERK10SendConfig","espp::UdpSocket::send::data"],[51,6,1,"_CPPv4N4espp9UdpSocket4sendERKNSt6vectorI7uint8_tEERK10SendConfig","espp::UdpSocket::send::data"],[51,6,1,"_CPPv4N4espp9UdpSocket4sendENSt11string_viewERK10SendConfig","espp::UdpSocket::send::send_config"],[51,6,1,"_CPPv4N4espp9UdpSocket4sendERKNSt6vectorI7uint8_tEERK10SendConfig","espp::UdpSocket::send::send_config"],[51,5,1,"_CPPv4N4espp9UdpSocket19set_receive_timeoutERKNSt6chrono8durationIfEE","espp::UdpSocket::set_receive_timeout"],[51,6,1,"_CPPv4N4espp9UdpSocket19set_receive_timeoutERKNSt6chrono8durationIfEE","espp::UdpSocket::set_receive_timeout::timeout"],[51,5,1,"_CPPv4N4espp9UdpSocket15start_receivingERN4Task6ConfigERK13ReceiveConfig","espp::UdpSocket::start_receiving"],[51,6,1,"_CPPv4N4espp9UdpSocket15start_receivingERN4Task6ConfigERK13ReceiveConfig","espp::UdpSocket::start_receiving::receive_config"],[51,6,1,"_CPPv4N4espp9UdpSocket15start_receivingERN4Task6ConfigERK13ReceiveConfig","espp::UdpSocket::start_receiving::task_config"],[51,5,1,"_CPPv4N4espp9UdpSocketD0Ev","espp::UdpSocket::~UdpSocket"],[46,2,1,"_CPPv4I0EN4espp8Vector2dE","espp::Vector2d"],[46,8,1,"_CPPv4I0EN4espp8Vector2dE","espp::Vector2d::T"],[46,5,1,"_CPPv4N4espp8Vector2d8Vector2dE1T1T","espp::Vector2d::Vector2d"],[46,5,1,"_CPPv4N4espp8Vector2d8Vector2dERK8Vector2d","espp::Vector2d::Vector2d"],[46,6,1,"_CPPv4N4espp8Vector2d8Vector2dERK8Vector2d","espp::Vector2d::Vector2d::other"],[46,6,1,"_CPPv4N4espp8Vector2d8Vector2dE1T1T","espp::Vector2d::Vector2d::x"],[46,6,1,"_CPPv4N4espp8Vector2d8Vector2dE1T1T","espp::Vector2d::Vector2d::y"],[46,5,1,"_CPPv4NK4espp8Vector2d3dotERK8Vector2d","espp::Vector2d::dot"],[46,6,1,"_CPPv4NK4espp8Vector2d3dotERK8Vector2d","espp::Vector2d::dot::other"],[46,5,1,"_CPPv4NK4espp8Vector2d9magnitudeEv","espp::Vector2d::magnitude"],[46,5,1,"_CPPv4NK4espp8Vector2d17magnitude_squaredEv","espp::Vector2d::magnitude_squared"],[46,5,1,"_CPPv4NK4espp8Vector2d10normalizedEv","espp::Vector2d::normalized"],[46,5,1,"_CPPv4NK4espp8Vector2dmlERK1T","espp::Vector2d::operator*"],[46,6,1,"_CPPv4NK4espp8Vector2dmlERK1T","espp::Vector2d::operator*::v"],[46,5,1,"_CPPv4N4espp8Vector2dmLERK1T","espp::Vector2d::operator*="],[46,6,1,"_CPPv4N4espp8Vector2dmLERK1T","espp::Vector2d::operator*=::v"],[46,5,1,"_CPPv4NK4espp8Vector2dplERK8Vector2d","espp::Vector2d::operator+"],[46,6,1,"_CPPv4NK4espp8Vector2dplERK8Vector2d","espp::Vector2d::operator+::rhs"],[46,5,1,"_CPPv4N4espp8Vector2dpLERK8Vector2d","espp::Vector2d::operator+="],[46,6,1,"_CPPv4N4espp8Vector2dpLERK8Vector2d","espp::Vector2d::operator+=::rhs"],[46,5,1,"_CPPv4NK4espp8Vector2dmiERK8Vector2d","espp::Vector2d::operator-"],[46,5,1,"_CPPv4NK4espp8Vector2dmiEv","espp::Vector2d::operator-"],[46,6,1,"_CPPv4NK4espp8Vector2dmiERK8Vector2d","espp::Vector2d::operator-::rhs"],[46,5,1,"_CPPv4N4espp8Vector2dmIERK8Vector2d","espp::Vector2d::operator-="],[46,6,1,"_CPPv4N4espp8Vector2dmIERK8Vector2d","espp::Vector2d::operator-=::rhs"],[46,5,1,"_CPPv4NK4espp8Vector2ddvERK1T","espp::Vector2d::operator/"],[46,5,1,"_CPPv4NK4espp8Vector2ddvERK8Vector2d","espp::Vector2d::operator/"],[46,6,1,"_CPPv4NK4espp8Vector2ddvERK1T","espp::Vector2d::operator/::v"],[46,6,1,"_CPPv4NK4espp8Vector2ddvERK8Vector2d","espp::Vector2d::operator/::v"],[46,5,1,"_CPPv4N4espp8Vector2ddVERK1T","espp::Vector2d::operator/="],[46,5,1,"_CPPv4N4espp8Vector2ddVERK8Vector2d","espp::Vector2d::operator/="],[46,6,1,"_CPPv4N4espp8Vector2ddVERK1T","espp::Vector2d::operator/=::v"],[46,6,1,"_CPPv4N4espp8Vector2ddVERK8Vector2d","espp::Vector2d::operator/=::v"],[46,5,1,"_CPPv4N4espp8Vector2daSERK8Vector2d","espp::Vector2d::operator="],[46,6,1,"_CPPv4N4espp8Vector2daSERK8Vector2d","espp::Vector2d::operator=::other"],[46,5,1,"_CPPv4N4espp8Vector2dixEi","espp::Vector2d::operator[]"],[46,6,1,"_CPPv4N4espp8Vector2dixEi","espp::Vector2d::operator[]::index"],[46,5,1,"_CPPv4I0_PNSt9enable_ifINSt17is_floating_pointI1UE5valueEE4typeEENK4espp8Vector2d7rotatedE8Vector2d1T","espp::Vector2d::rotated"],[46,8,1,"_CPPv4I0_PNSt9enable_ifINSt17is_floating_pointI1UE5valueEE4typeEENK4espp8Vector2d7rotatedE8Vector2d1T","espp::Vector2d::rotated::U"],[46,6,1,"_CPPv4I0_PNSt9enable_ifINSt17is_floating_pointI1UE5valueEE4typeEENK4espp8Vector2d7rotatedE8Vector2d1T","espp::Vector2d::rotated::radians"],[46,5,1,"_CPPv4N4espp8Vector2d1xE1T","espp::Vector2d::x"],[46,5,1,"_CPPv4NK4espp8Vector2d1xEv","espp::Vector2d::x"],[46,6,1,"_CPPv4N4espp8Vector2d1xE1T","espp::Vector2d::x::v"],[46,5,1,"_CPPv4N4espp8Vector2d1yE1T","espp::Vector2d::y"],[46,5,1,"_CPPv4NK4espp8Vector2d1yEv","espp::Vector2d::y"],[46,6,1,"_CPPv4N4espp8Vector2d1yE1T","espp::Vector2d::y::v"],[62,2,1,"_CPPv4N4espp6WifiApE","espp::WifiAp"],[62,2,1,"_CPPv4N4espp6WifiAp6ConfigE","espp::WifiAp::Config"],[62,1,1,"_CPPv4N4espp6WifiAp6Config7channelE","espp::WifiAp::Config::channel"],[62,1,1,"_CPPv4N4espp6WifiAp6Config9log_levelE","espp::WifiAp::Config::log_level"],[62,1,1,"_CPPv4N4espp6WifiAp6Config22max_number_of_stationsE","espp::WifiAp::Config::max_number_of_stations"],[62,1,1,"_CPPv4N4espp6WifiAp6Config8passwordE","espp::WifiAp::Config::password"],[62,1,1,"_CPPv4N4espp6WifiAp6Config4ssidE","espp::WifiAp::Config::ssid"],[62,5,1,"_CPPv4N4espp6WifiAp6WifiApERK6Config","espp::WifiAp::WifiAp"],[62,6,1,"_CPPv4N4espp6WifiAp6WifiApERK6Config","espp::WifiAp::WifiAp::config"],[63,2,1,"_CPPv4N4espp7WifiStaE","espp::WifiSta"],[63,2,1,"_CPPv4N4espp7WifiSta6ConfigE","espp::WifiSta::Config"],[63,1,1,"_CPPv4N4espp7WifiSta6Config6ap_macE","espp::WifiSta::Config::ap_mac"],[63,1,1,"_CPPv4N4espp7WifiSta6Config7channelE","espp::WifiSta::Config::channel"],[63,1,1,"_CPPv4N4espp7WifiSta6Config9log_levelE","espp::WifiSta::Config::log_level"],[63,1,1,"_CPPv4N4espp7WifiSta6Config19num_connect_retriesE","espp::WifiSta::Config::num_connect_retries"],[63,1,1,"_CPPv4N4espp7WifiSta6Config12on_connectedE","espp::WifiSta::Config::on_connected"],[63,1,1,"_CPPv4N4espp7WifiSta6Config15on_disconnectedE","espp::WifiSta::Config::on_disconnected"],[63,1,1,"_CPPv4N4espp7WifiSta6Config9on_got_ipE","espp::WifiSta::Config::on_got_ip"],[63,1,1,"_CPPv4N4espp7WifiSta6Config8passwordE","espp::WifiSta::Config::password"],[63,1,1,"_CPPv4N4espp7WifiSta6Config10set_ap_macE","espp::WifiSta::Config::set_ap_mac"],[63,1,1,"_CPPv4N4espp7WifiSta6Config4ssidE","espp::WifiSta::Config::ssid"],[63,5,1,"_CPPv4N4espp7WifiSta7WifiStaERK6Config","espp::WifiSta::WifiSta"],[63,6,1,"_CPPv4N4espp7WifiSta7WifiStaERK6Config","espp::WifiSta::WifiSta::config"],[63,7,1,"_CPPv4N4espp7WifiSta16connect_callbackE","espp::WifiSta::connect_callback"],[63,7,1,"_CPPv4N4espp7WifiSta19disconnect_callbackE","espp::WifiSta::disconnect_callback"],[63,7,1,"_CPPv4N4espp7WifiSta11ip_callbackE","espp::WifiSta::ip_callback"],[63,5,1,"_CPPv4N4espp7WifiSta12is_connectedEv","espp::WifiSta::is_connected"],[63,5,1,"_CPPv4N4espp7WifiStaD0Ev","espp::WifiSta::~WifiSta"],[11,2,1,"_CPPv4N4espp21__csv_documentation__E","espp::__csv_documentation__"],[58,2,1,"_CPPv4N4espp31__serialization_documentation__E","espp::__serialization_documentation__"],[59,2,1,"_CPPv4N4espp31__state_machine_documentation__E","espp::__state_machine_documentation__"],[59,2,1,"_CPPv4N4espp13state_machine16DeepHistoryStateE","espp::state_machine::DeepHistoryState"],[59,5,1,"_CPPv4N4espp13state_machine16DeepHistoryState5entryEv","espp::state_machine::DeepHistoryState::entry"],[59,5,1,"_CPPv4N4espp13state_machine16DeepHistoryState4exitEv","espp::state_machine::DeepHistoryState::exit"],[59,5,1,"_CPPv4N4espp13state_machine16DeepHistoryState12exitChildrenEv","espp::state_machine::DeepHistoryState::exitChildren"],[59,5,1,"_CPPv4N4espp13state_machine16DeepHistoryState14getActiveChildEv","espp::state_machine::DeepHistoryState::getActiveChild"],[59,5,1,"_CPPv4N4espp13state_machine16DeepHistoryState13getActiveLeafEv","espp::state_machine::DeepHistoryState::getActiveLeaf"],[59,5,1,"_CPPv4N4espp13state_machine16DeepHistoryState10getInitialEv","espp::state_machine::DeepHistoryState::getInitial"],[59,5,1,"_CPPv4N4espp13state_machine16DeepHistoryState14getParentStateEv","espp::state_machine::DeepHistoryState::getParentState"],[59,5,1,"_CPPv4N4espp13state_machine16DeepHistoryState11handleEventEP9EventBase","espp::state_machine::DeepHistoryState::handleEvent"],[59,6,1,"_CPPv4N4espp13state_machine16DeepHistoryState11handleEventEP9EventBase","espp::state_machine::DeepHistoryState::handleEvent::event"],[59,5,1,"_CPPv4N4espp13state_machine16DeepHistoryState10initializeEv","espp::state_machine::DeepHistoryState::initialize"],[59,5,1,"_CPPv4N4espp13state_machine16DeepHistoryState10makeActiveEv","espp::state_machine::DeepHistoryState::makeActive"],[59,5,1,"_CPPv4N4espp13state_machine16DeepHistoryState14setActiveChildEP9StateBase","espp::state_machine::DeepHistoryState::setActiveChild"],[59,6,1,"_CPPv4N4espp13state_machine16DeepHistoryState14setActiveChildEP9StateBase","espp::state_machine::DeepHistoryState::setActiveChild::childState"],[59,5,1,"_CPPv4N4espp13state_machine16DeepHistoryState14setDeepHistoryEv","espp::state_machine::DeepHistoryState::setDeepHistory"],[59,5,1,"_CPPv4N4espp13state_machine16DeepHistoryState14setParentStateEP9StateBase","espp::state_machine::DeepHistoryState::setParentState"],[59,6,1,"_CPPv4N4espp13state_machine16DeepHistoryState14setParentStateEP9StateBase","espp::state_machine::DeepHistoryState::setParentState::parent"],[59,5,1,"_CPPv4N4espp13state_machine16DeepHistoryState17setShallowHistoryEv","espp::state_machine::DeepHistoryState::setShallowHistory"],[59,5,1,"_CPPv4N4espp13state_machine16DeepHistoryState4tickEv","espp::state_machine::DeepHistoryState::tick"],[59,2,1,"_CPPv4N4espp13state_machine9EventBaseE","espp::state_machine::EventBase"],[59,2,1,"_CPPv4N4espp13state_machine19ShallowHistoryStateE","espp::state_machine::ShallowHistoryState"],[59,5,1,"_CPPv4N4espp13state_machine19ShallowHistoryState5entryEv","espp::state_machine::ShallowHistoryState::entry"],[59,5,1,"_CPPv4N4espp13state_machine19ShallowHistoryState4exitEv","espp::state_machine::ShallowHistoryState::exit"],[59,5,1,"_CPPv4N4espp13state_machine19ShallowHistoryState12exitChildrenEv","espp::state_machine::ShallowHistoryState::exitChildren"],[59,5,1,"_CPPv4N4espp13state_machine19ShallowHistoryState14getActiveChildEv","espp::state_machine::ShallowHistoryState::getActiveChild"],[59,5,1,"_CPPv4N4espp13state_machine19ShallowHistoryState13getActiveLeafEv","espp::state_machine::ShallowHistoryState::getActiveLeaf"],[59,5,1,"_CPPv4N4espp13state_machine19ShallowHistoryState10getInitialEv","espp::state_machine::ShallowHistoryState::getInitial"],[59,5,1,"_CPPv4N4espp13state_machine19ShallowHistoryState14getParentStateEv","espp::state_machine::ShallowHistoryState::getParentState"],[59,5,1,"_CPPv4N4espp13state_machine19ShallowHistoryState11handleEventEP9EventBase","espp::state_machine::ShallowHistoryState::handleEvent"],[59,6,1,"_CPPv4N4espp13state_machine19ShallowHistoryState11handleEventEP9EventBase","espp::state_machine::ShallowHistoryState::handleEvent::event"],[59,5,1,"_CPPv4N4espp13state_machine19ShallowHistoryState10initializeEv","espp::state_machine::ShallowHistoryState::initialize"],[59,5,1,"_CPPv4N4espp13state_machine19ShallowHistoryState10makeActiveEv","espp::state_machine::ShallowHistoryState::makeActive"],[59,5,1,"_CPPv4N4espp13state_machine19ShallowHistoryState14setActiveChildEP9StateBase","espp::state_machine::ShallowHistoryState::setActiveChild"],[59,6,1,"_CPPv4N4espp13state_machine19ShallowHistoryState14setActiveChildEP9StateBase","espp::state_machine::ShallowHistoryState::setActiveChild::childState"],[59,5,1,"_CPPv4N4espp13state_machine19ShallowHistoryState14setDeepHistoryEv","espp::state_machine::ShallowHistoryState::setDeepHistory"],[59,5,1,"_CPPv4N4espp13state_machine19ShallowHistoryState14setParentStateEP9StateBase","espp::state_machine::ShallowHistoryState::setParentState"],[59,6,1,"_CPPv4N4espp13state_machine19ShallowHistoryState14setParentStateEP9StateBase","espp::state_machine::ShallowHistoryState::setParentState::parent"],[59,5,1,"_CPPv4N4espp13state_machine19ShallowHistoryState17setShallowHistoryEv","espp::state_machine::ShallowHistoryState::setShallowHistory"],[59,5,1,"_CPPv4N4espp13state_machine19ShallowHistoryState4tickEv","espp::state_machine::ShallowHistoryState::tick"],[59,2,1,"_CPPv4N4espp13state_machine9StateBaseE","espp::state_machine::StateBase"],[59,5,1,"_CPPv4N4espp13state_machine9StateBase5entryEv","espp::state_machine::StateBase::entry"],[59,5,1,"_CPPv4N4espp13state_machine9StateBase4exitEv","espp::state_machine::StateBase::exit"],[59,5,1,"_CPPv4N4espp13state_machine9StateBase12exitChildrenEv","espp::state_machine::StateBase::exitChildren"],[59,5,1,"_CPPv4N4espp13state_machine9StateBase14getActiveChildEv","espp::state_machine::StateBase::getActiveChild"],[59,5,1,"_CPPv4N4espp13state_machine9StateBase13getActiveLeafEv","espp::state_machine::StateBase::getActiveLeaf"],[59,5,1,"_CPPv4N4espp13state_machine9StateBase10getInitialEv","espp::state_machine::StateBase::getInitial"],[59,5,1,"_CPPv4N4espp13state_machine9StateBase14getParentStateEv","espp::state_machine::StateBase::getParentState"],[59,5,1,"_CPPv4N4espp13state_machine9StateBase11handleEventEP9EventBase","espp::state_machine::StateBase::handleEvent"],[59,6,1,"_CPPv4N4espp13state_machine9StateBase11handleEventEP9EventBase","espp::state_machine::StateBase::handleEvent::event"],[59,5,1,"_CPPv4N4espp13state_machine9StateBase10initializeEv","espp::state_machine::StateBase::initialize"],[59,5,1,"_CPPv4N4espp13state_machine9StateBase10makeActiveEv","espp::state_machine::StateBase::makeActive"],[59,5,1,"_CPPv4N4espp13state_machine9StateBase14setActiveChildEP9StateBase","espp::state_machine::StateBase::setActiveChild"],[59,6,1,"_CPPv4N4espp13state_machine9StateBase14setActiveChildEP9StateBase","espp::state_machine::StateBase::setActiveChild::childState"],[59,5,1,"_CPPv4N4espp13state_machine9StateBase14setDeepHistoryEv","espp::state_machine::StateBase::setDeepHistory"],[59,5,1,"_CPPv4N4espp13state_machine9StateBase14setParentStateEP9StateBase","espp::state_machine::StateBase::setParentState"],[59,6,1,"_CPPv4N4espp13state_machine9StateBase14setParentStateEP9StateBase","espp::state_machine::StateBase::setParentState::parent"],[59,5,1,"_CPPv4N4espp13state_machine9StateBase17setShallowHistoryEv","espp::state_machine::StateBase::setShallowHistory"],[59,5,1,"_CPPv4N4espp13state_machine9StateBase4tickEv","espp::state_machine::StateBase::tick"]]},objnames:{"0":["c","macro","C macro"],"1":["cpp","member","C++ member"],"2":["cpp","class","C++ class"],"3":["cpp","enum","C++ enum"],"4":["cpp","enumerator","C++ enumerator"],"5":["cpp","function","C++ function"],"6":["cpp","functionParam","C++ function parameter"],"7":["cpp","type","C++ type"],"8":["cpp","templateParam","C++ template parameter"]},objtypes:{"0":"c:macro","1":"cpp:member","2":"cpp:class","3":"cpp:enum","4":"cpp:enumerator","5":"cpp:function","6":"cpp:functionParam","7":"cpp:type","8":"cpp:templateParam"},terms:{"0":[1,5,6,8,9,10,11,12,13,16,19,21,22,23,25,30,35,37,38,39,40,41,43,45,46,47,49,50,51,53,54,55,56,57,60,63],"00":16,"000f":[],"00b":53,"01":12,"010f":[],"01f":[16,19],"02":5,"024v":1,"02x":54,"03":[40,47],"048v":1,"05":[],"06f":60,"0755":21,"08":[],"096v":1,"0b00000001":54,"0b00000010":54,"0b00000011":35,"0b00000100":54,"0b00001000":54,"0b0000110":19,"0b00010000":54,"0b00100000":54,"0b00111111":35,"0b0100000":37,"0b01000000":54,"0b0110110":16,"0b10000000":54,"0b11":35,"0f":[5,6,10,16,19,38,39,40,41,43,47,55,56],"0s":39,"0x00":[35,37,54],"0x0000":13,"0x000000":54,"0x060504030201":54,"0x48":1,"0x58":35,"0xa6":54,"0xae":54,"0xff":54,"0xffffffffffff":53,"1":[1,2,5,6,8,9,10,11,12,13,16,19,20,21,22,23,30,35,37,38,39,40,41,43,45,49,50,51,53,54,55,57,58,60,62],"10":[8,12,39,40,47,58,60],"100":[13,37,38,39,55],"1000":[2,6,13,39,55,57],"1000000":56,"10000000":56,"100m":[13,39,47,55,60,63],"1024":[1,2,10,16,19,30,35,37,47,50,51,54,56,60],"10m":[39,50,60],"123":30,"127":[50,51,53],"128":[1,50,51,53,57],"12800":13,"13":[35,62],"135":13,"14":35,"144v":1,"15":[35,58],"1500":57,"16":[1,13,35,53,54],"1600":1,"16384":[13,16,19],"1678892742599":30,"16kb":54,"1700":[10,38],"1784807f":[],"18":56,"192":53,"1b":53,"1f":[38,39,55],"1s":[30,40,47,50,51,55,57,59,60],"2":[1,2,10,11,12,16,19,20,21,22,23,25,35,38,39,40,43,46,47,50,51,53,54,55,56,57],"20":[2,13,21],"200":57,"200m":[1,54,60],"20143":16,"2046":53,"20df":16,"20m":10,"21":10,"224":[49,50,51],"23017":37,"239":[49,50,51],"23s17":37,"240":13,"2400":1,"2435":57,"24b":54,"25":35,"250":1,"250m":[],"255":[9,35,49,50,51,53,54,56],"256":[2,53,56,57],"256v":1,"264":57,"265":57,"2f":10,"2pi":[16,19],"3":[1,5,10,11,12,26,35,37,39,50,51,53,56,58],"300f":[],"300m":40,"31":10,"32":[1,10,53],"320":13,"33":10,"3300":[1,38],"34":[],"36":10,"360":[9,16,19,56],"36005":16,"37":10,"37ma":35,"38":10,"39":10,"3986":53,"3f":[1,16,19,30,35,37,40,55],"4":[1,10,11,16,19,30,41,50,51,53,54,56,60,62],"40":13,"4096":[],"42":[10,58],"43173a3eb323":16,"475":1,"48":53,"4886":35,"48b":54,"490":1,"4b":53,"4kb":54,"5":[1,2,10,11,16,19,23,25,30,35,37,43,47,50,51,53,54,56,58],"50":[13,35,39,54,56],"5000":[39,50,51,57],"5001":57,"500m":[2,4,10,20,38,40,47,60],"50m":[16,19,35,37,56],"50u":56,"512v":1,"53":13,"5f":[16,19,39,43,51,56],"5m":55,"5s":20,"6":[1,5,9,10,11,30,50,51,53,63],"60":[13,16,19],"61067330":21,"61622309":54,"64":[1,56],"649ee61c":16,"64kb":54,"7":[37,53,58],"720":[16,19],"72593":30,"75":35,"8":[1,9,12,30,35,37,47,53,54],"8192":[],"8554":57,"860":1,"8f9a":16,"9":[35,56],"920":1,"9692":8,"9781449324094":53,"9e10":16,"abstract":[32,48,49,60],"boolean":21,"break":59,"byte":[1,2,12,13,16,19,21,30,35,37,47,49,50,51,53,54,56,57],"case":[16,19,51,56],"char":[21,50,57,60],"class":24,"const":[1,2,4,5,6,8,9,10,11,12,13,16,19,20,21,22,23,25,26,28,30,34,35,37,38,39,40,41,43,45,46,49,50,51,53,54,55,56,57,60,62,63],"default":[1,8,10,12,13,30,35,37,41,43,45,46,47,56,57,58,62,63],"do":[4,10,11,30,47,57,58,59,60],"enum":[1,6,10,12,30,35,37,38,40,53],"final":[10,16,19,35,37,47,53,54,57,59],"float":[1,2,4,5,6,9,10,12,16,19,22,23,25,26,30,35,37,38,39,40,41,42,43,46,47,49,50,51,54,55,56,59,60],"function":[1,2,4,5,6,8,9,10,12,13,16,19,20,21,22,23,24,25,26,30,31,32,34,35,37,38,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,57,59,60,62,63],"goto":56,"int":[1,2,4,5,8,10,13,16,19,21,28,35,39,46,47,49,50,51,53,54,55,56,57,58,59,60],"long":57,"new":[4,5,6,8,13,20,22,23,25,26,28,35,38,39,40,43,45,46,53,54,55,57,59,60],"public":[1,2,4,5,6,8,9,10,12,13,16,19,20,21,22,23,25,26,28,30,34,35,37,38,39,40,41,43,45,46,47,49,50,51,53,54,55,56,57,59,60,62,63],"return":[1,2,4,5,6,8,9,10,12,13,16,19,20,21,22,23,25,26,28,30,35,37,38,39,40,41,43,45,46,47,49,50,51,53,54,55,56,57,59,60,63],"short":[10,53],"static":[1,8,13,16,19,20,21,30,35,37,39,42,47,49,50,51,53,54,56,59,60],"super":11,"switch":[12,56],"throw":[8,21],"true":[10,11,12,13,16,19,20,21,28,34,37,38,39,40,45,49,50,51,56,57,59,60,63],"void":[1,5,6,8,10,12,13,16,19,20,22,25,28,30,34,35,37,38,39,40,43,45,46,49,50,51,54,55,56,57,59,63],"while":[8,13,20,39,40,47,57,59,60,63],A:[5,10,20,27,28,37,50,53,57],As:20,By:8,For:[12,26,30,57,60],IN:30,IT:[21,54],If:[4,8,9,34,39,45,49,50,51,57,59,60,62,63],In:[10,20,35],Is:[49,50,51],It:[2,4,6,8,10,11,16,19,20,21,28,30,35,39,55,56,57,59,60],NOT:10,No:[40,53],Not:21,ON:8,ONE:1,On:[],The:[1,2,4,5,6,7,8,9,10,11,12,15,16,19,20,21,22,23,25,26,27,28,29,30,35,37,38,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,57,58,59,60,62,63],There:[16,18,19,24,31,36,47,59],These:[7,57],To:[20,57],Will:[5,16,19,45,47,49,54,57,59],With:38,_1:47,_2:47,_:11,__csv_documentation__:11,__gnu_linux__:[11,58],__linux__:8,__serialization_documentation__:58,__state_machine_documentation__:59,__unnamed11__:54,__unnamed13__:54,__unnamed7__:53,__unnamed9__:53,_activest:59,_build:[15,28],_cli:8,_event_data:59,_in:8,_out:8,_parentst:59,_rate_limit:40,a0:[37,38],a1:38,a2:37,a_0:22,a_1:22,a_2:22,a_gpio:[],a_pin:37,ab:45,abi:[18,32],abi_encod:15,abiencod:15,abil:[40,47],abl:[28,38,50],about:[8,11,47,51,53,54,56,59],abov:[8,16,19,20,35,56],absolut:[16,19,21,53],absolute_uri:53,abxi:10,ac:53,acceler:25,accept:[28,50,57],access:[15,21,32,49,54,59,61,63],accord:[21,35,37,38,39,40,57],accordingli:10,accumul:[16,19],accur:55,acknowledg:50,across:2,act:53,action:[59,60],activ:[5,10,37,54,57,59],active_high:37,active_low:10,activeleaf:59,actual:[1,10,13,20,30,57,59],actuat:[30,31],ad0:35,ad1:35,ad:[1,6,10,20,46,57],adafruit:[10,30,35,53],adc:[10,30,32,55],adc_atten_db_11:[2,4,10,38],adc_channel_1:[2,4,10],adc_channel_2:[2,4,10],adc_channel_8:38,adc_channel_9:38,adc_channel_t:[2,4],adc_conv_single_unit_2:2,adc_digi_convert_mode_t:2,adc_typ:0,adc_unit_2:[2,4,10,38],adc_unit_t:4,adcconfig:[2,4,10,38],add:[5,9,13,46,49,50,51,57],add_multicast_group:[49,50,51],add_publish:20,add_scan:57,add_subscrib:20,addit:[2,9,12,32,38,46,60],addition:[8,57],addr:[1,10,30,49,54],address:[1,13,16,19,28,30,35,37,49,50,51,53,54,57,63],adjust:50,ads1015:1,ads1015config:[1,10],ads1015rat:1,ads1115:1,ads1115config:1,ads1115rat:1,ads1x15:[3,10,32],ads_read:[1,10],ads_read_task_fn:[1,10],ads_task:[1,10],ads_writ:[1,10],adventur:11,advis:45,ae:53,affect:[16,19,57],affin:60,after:[12,38,45,49,50,51,54,56,57,63],again:[20,54],against:54,agent:57,alert_1000m:30,alert_750m:30,algorithm:[5,6,7,9],alias:[16,19],aliv:28,all:[4,5,8,20,21,30,40,45,47,51,56,57,59],alloc:[2,12,47,60],allocatingconfig:[12,13],allocation_flag:12,allow:[1,2,4,5,8,10,12,15,16,19,30,35,37,38,39,43,45,48,49,50,51,54,55,56,57,59,60],along:[42,54],alow:43,alpaca:[20,32],alpha:[39,43],alreadi:[20,21,22,50,51,57,60],also:[8,10,11,12,13,16,19,20,21,30,35,47,56,57,59,60],alter_unit:2,altern:[2,21,53],alwai:[2,4,16,19,21,30,45,47,57,59],am:16,amount:[2,21,45,46],amp:6,amplitud:43,an:[0,4,5,8,9,10,15,16,19,21,22,23,25,26,27,29,30,34,35,37,38,41,43,45,47,49,50,51,53,56,57,59,60,63],analog:[2,4,30,38],analogjoystickconfig:10,analyz:47,anaolg:10,android:[53,54],angl:[6,16,19],angle_filt:6,angle_openloop:6,angle_pid_config:6,ani:[4,5,6,8,11,16,19,28,49,50,51,56,57,59,60],anonym:[20,53],anoth:[8,20,21,46],answer:8,anyth:[11,40,47,58,59],anywher:8,ap:[32,61,63],ap_mac:63,apa:53,api:32,app:[53,54],app_main:47,appear:53,append:57,appli:[2,38],applic:[32,57],appropri:[5,50,51],approxim:[38,42],ar:[3,5,6,7,8,10,13,14,15,18,20,21,24,30,31,35,36,37,38,40,45,47,48,50,53,54,55,57,58,59,60,61],arari:58,arbitrari:8,area:[12,13],arg:40,argument:[28,40],arithmet:22,around:[2,4,5,8,11,12,21,34,38,39,40,41,43,45,49,56,58,59,60],arrai:[1,13,16,19,22,25,26,30,35,37,41,49,50,51,54,58],arrow:8,artifact:56,as5600:[18,32],as5600_ds000365_5:16,as5600_read:16,as5600_writ:16,asid:39,ask:60,aspect:8,asset:30,assign:46,associ:[0,2,4,10,12,13,20,34,35,37,38,39,41,46,47,49,50,51,60],associt:[49,50,51],assum:[8,50,51],assumpt:[16,19],asymmetr:55,ate:21,atom:10,attach:[13,35],attenu:[0,2,4,10,38],attribut:[1,16,19,35,37,54,56],audio:30,audiovib:30,authent:[28,53],auto:[1,2,4,8,10,11,13,16,19,20,21,30,35,37,38,39,40,47,50,51,54,55,56,58,59,60],autoc:30,automat:[8,9,57,60],autostop:60,avail:[2,20,46,54],averag:9,aw9523:[32,36],aw9523_read:35,aw9523_writ:35,aw9523b:35,awaken:11,ax:[10,38],axi:[6,10,38],b0:53,b1:53,b2:53,b3:53,b4:53,b7:37,b:[5,9,10,11,27,35,37,43,47,53,54,56,58,60],b_0:22,b_1:22,b_2:22,b_bright:35,b_down:35,b_gpio:[],b_led:35,b_pin:37,b_up:35,back:[12,21,50,51,56],background:[],backlight:13,backlight_on_valu:13,backlight_pin:13,backspac:8,bad:9,band:53,bandwidth:50,base:[6,9,16,19,22,23,24,25,26,39,47,49,54,55,56,57,59],base_encod:56,basic:8,batteri:20,becaus:[6,16,19,21,56],been:[8,22,30,50,51,54,56,57,60],befor:[21,50,57,59,60,63],beg:21,begin:[8,21,50,51,53,60],behavior:55,being:[1,2,4,8,10,16,19,20,30,35,37,38,54,55,56,59,60],belong:51,below:59,beta:[39,43],better:[25,55],between:[9,20,29,41,45,54],beyond:[8,11,56],bezier:[32,44],bezierinfo:41,bi:54,bia:[],biequad:22,binari:21,bind:[28,40,47,50,51,57],biquad:[23,24,26,32],biquad_filt:22,biquadfilt:22,biquadfilterdf1:22,biquadfilterdf2:[16,19,22,23,26],biquadrat:22,bit0:56,bit1:56,bit:[10,13,35,37,39,53,54],bldc:[31,32],bldc_driver:5,bldc_haptic:[],bldc_motor:[6,7],bldc_type:[],bldcdriver:[5,6],bldchaptic:[],bldcmotor:[6,16,19],ble:[53,54],ble_appear:54,ble_oob_record:54,ble_radio_nam:54,ble_rol:54,blend:9,blerol:[53,54],blob:[8,13],block:[2,4,8,39,50,51,56,57,60],block_siz:56,blue:[9,11,56],bluetooth:53,board:13,bob:[15,28],bodmer:13,bool:[10,12,13,16,19,20,21,28,34,37,38,39,45,49,50,51,56,57,59,60,63],both:[2,10,11,22,35,38,39,45,53],both_unit:2,bound:[50,56],bounded_no_det:[],box:[10,54],boxart:11,br:53,breathing_period:39,breathing_start:39,bredr:53,bright:35,bro:11,broadcast:[51,53],broken:57,brushless:[5,6,7],bsp:13,bt:[53,54],bt_device_class:54,bt_oob_record:54,bt_radio_nam:54,btappear:[53,54],bteir:53,btgoep:53,btl2cap:53,btspp:53,bttype:53,bu:13,bufer:60,buffer:[2,12,50,56,57,58,60],buffer_s:51,build:[24,32,57],built:[11,50,58,59],bundl:10,buscfg:13,busi:51,butterworth:[24,32],butterworth_filt:23,butterworthfilt:[16,19,23,26],button:[10,34,35],buzz1:30,buzz2:30,buzz3:30,buzz4:30,buzz5:30,buzz:[],bytes_encod:56,bytes_encoder_config:56,bytes_written:58,c:[5,8,11,13,20,21,32,53,56,58],c_str:21,cach:57,calcul:6,calibr:[4,6,30,38],call:[2,4,8,9,10,12,16,19,20,30,38,40,47,49,50,51,54,55,56,57,59,60,62,63],call_onc:20,callback:[1,2,4,10,12,16,19,20,30,35,37,38,39,47,48,49,50,51,54,55,56,57,59,60],callback_fn:60,camera:57,can:[5,6,7,8,9,10,12,13,15,16,19,21,28,29,30,38,39,40,41,45,47,50,51,53,54,55,56,57,58,59,60,62],can_chang:39,cannot:[15,21,50,54,57,58],capabl:[35,53,54],captur:37,carrier:53,caus:[57,59],cb:[13,20,57],cc:54,cdn:35,cell:11,center:[10,38,45],central:53,central_onli:53,central_peripher:53,certain:59,cf:53,ch04:53,chang:[6,9,35,37,39,40,43,55,57,59],change_gain:55,channel:[0,1,2,4,5,9,10,38,39,56,57,62,63],channelconfig:39,charact:8,chart:47,chdir:21,check:[21,28,39,49,50,54,57,63],child:59,childstat:59,chip:[1,2,18,35,36,37,54],choos:5,chrono:[1,12,16,19,30,35,37,39,40,47,49,50,51,54,55,56,59,60],chrono_liter:[1,10,30],chunk:53,cin:[8,59],circl:38,circular:38,clamp:[5,9,55,56],class_of_devic:53,classic:53,clean:[21,50,60],cleanup:[21,49],clear:[13,54,55,57],cli:[32,59],click:[],client:[28,29,32,48,49],client_socket:[50,51],client_task:[50,51],client_task_fn:[50,51],clifilesesson:8,clisess:8,clk_speed:[1,10,16,19,30,35,37,54],clock:[53,56],clock_spe:13,clock_speed_hz:13,clock_src:56,clockwis:6,close:[6,7,16,19,21,50,57],co:56,coars:[],coarse_values_strong_det:[],code:[3,6,7,8,13,14,15,20,21,38,40,47,48,53,55,56,57,58,59,60,61],coeffici:[22,25,27,43],collect:57,color:[8,12,13,32,56],color_data:12,color_map:13,com:[5,6,8,11,13,16,21,22,26,30,35,40,51,53,54,56,57,59,62,63],combin:[49,50,51],combo:49,come:51,comma:11,command:[13,28,32],common:[10,13,30,53],common_compon:8,commun:[1,10,16,19,30,35,37,50,51,54],compat:57,complet:[8,11,30,39,53,57,60],complex:60,complex_root:59,compon:[0,1,2,4,5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,23,25,26,27,28,30,31,32,34,35,36,37,38,39,40,41,42,43,45,46,47,49,50,51,53,54,55,56,57,58,59,60,62,63],compos:53,comput:[9,16,19,29,45,53,55],condit:[15,39,60],condition_vari:[1,2,4,10,16,19,30,35,37,38,54,55,56,59,60],conf:[2,4],config:[1,2,4,5,6,10,12,16,19,21,23,25,26,30,34,35,37,38,39,40,41,43,45,47,49,50,51,53,54,55,56,57,60,62,63],config_esp32_wifi_nvs_en:[62,63],config_esp_maximum_retri:63,config_esp_wifi_password:[54,62,63],config_esp_wifi_ssid:[54,62,63],config_freertos_generate_run_time_stat:47,config_freertos_use_trace_facil:47,config_hardware_box:13,config_hardware_ttgo:13,config_hardware_wrover_kit:13,config_rtsp_server_port:57,configur:[0,1,2,4,5,6,8,10,12,13,15,16,19,21,23,25,26,30,34,35,37,38,39,40,41,43,45,47,49,50,51,53,54,55,56,57,58,59,60,63],configure_global_control:35,configure_l:35,configure_pow:5,configure_stdin_stdout:[8,59],confirm:53,connect:[10,28,30,37,39,50,53,57,62,63],connect_callback:63,connect_config:50,connectconfig:50,constant:[6,55],constexpr:[1,13,16,19,35,37,54,56,58],construct:[1,8,9,16,17,19,23,26,30,35,37,40,41,43,47,49,54,57],constructor:[8,9,20,40,46,49,56,57],consum:59,contain:[0,8,9,10,12,13,15,20,21,27,34,41,46,47,51,53,54,55,57,58,59,63],content:21,context:[20,59],continu:[3,21,30,32,51,60],continuous_adc:2,continuousadc:2,control:[5,6,7,13,16,19,20,28,30,32,35,37,39,41,53,55,57],control_point:41,control_socket:57,controller_driv:13,conveni:[8,10,11,16,19,39,49,58,59],convers:[1,2,9,16,19,38,49],convert:[4,5,9,10,16,19,21,38,45,49,57],convert_mod:2,convieni:[41,43],cool:40,coordin:[13,34],copi:[8,9,21,46,56,59,60],copy_encod:56,core:60,core_id:60,core_update_period:[],corner:13,correct:59,correspond:[13,30,35],could:[9,11,16,21,55,58,59],couldn:21,count:[1,15,16,19,30,35,37,39,40,47,54,55,56,60],counter:[6,16,19],counter_clockwis:6,counts_per_revolut:[16,19],counts_per_revolution_f:[16,19],counts_to_degre:[16,19],counts_to_radian:[16,19],coupl:[20,38],cout:8,cplusplu:8,cpp:[15,21,28,32,40,54,57],cpprefer:[21,40],cpu:47,cr:57,crd:[],creat:[6,8,9,10,11,13,16,19,21,28,38,40,45,47,50,51,53,54,55,56,57,59,60,62,63],create_directori:21,creation:[16,19],credenti:53,cross:[40,60],cs:6,cseq:57,csv2:11,csv:[21,32],csv_data:11,ctrl:8,cubic:41,curent:[49,59],current:[5,6,8,10,13,15,16,19,28,29,34,35,39,40,43,46,47,48,55,56,57,63],current_directori:28,current_duti:39,current_hfsm_period:59,current_limit:6,current_pid_config:6,current_sens:6,currentlyact:59,currentsensor:6,currentsensorconcept:6,cursor:[8,13],curv:41,custom:[12,20,21,30,56,58],cutoff:[6,23,25],cv:[1,2,4,10,16,19,20,30,35,37,38,39,50,54,55,56,59,60],cv_retval:60,cv_statu:60,cycl:[5,30,39,56],d2:10,d3:10,d4:10,d5:10,d6:10,d:[6,10,40,49,50,51],d_current_filt:6,daniele77:8,data:[0,1,2,4,9,10,11,12,13,16,19,20,21,22,23,25,26,28,30,34,35,37,38,47,49,50,51,53,54,57,58,59,63],data_address:54,data_command_pin:13,data_len:[1,10,16,19,30,35,37],data_s:56,datasheet:[16,30,35,54],date:[2,21],date_tim:21,dav:53,dbm:53,dc:[5,6,7,13],dc_current:6,dc_level_bit:13,dc_pin:13,dc_pin_num:13,de:20,dead_zon:5,deadband:[10,38,45],deadzon:38,deadzone_radiu:38,deal:53,debug:[40,54,59,60],debug_rate_limit:40,decod:[16,19,54,57],dedic:10,deep:59,deep_history_st:59,deephistoryst:59,default_address:[1,16,19,30,35,37],defautl:43,defin:[20,45,56,57,58,59],definit:[17,20],degre:[16,19],deinit:[2,63],del:56,delai:22,delet:[4,8,10,21,56],delete_fn:56,delimit:11,demo:[8,13],depend:[2,45,56,59],depth:56,dequ:8,deriv:[55,59],describ:[12,13,45,50,53,57],descriptor:[49,50,51],deseri:[20,53,58],design:[10,16,19,31,34,57,59],desir:[0,5],destin:21,destroi:[1,2,4,5,6,10,16,19,28,30,35,37,38,54,55,56,57,59,60],destruct:60,destructor:[8,20,56,57],detail:50,detent_config:[],detentconfig:[],determin:[16,19],determinist:2,dev:13,dev_addr:[1,10,16,19,30,35,37],dev_kit:13,devcfg:13,develop:[6,13,53,59],devic:[1,13,16,19,30,34,35,37,53,54,62],device_address:[1,16,19,30,35,37],device_class:53,devkit:13,diagno:30,diagnost:30,did_pub:20,did_sub:20,differ:[13,16,17,18,19,20,22,24,30,36,39,40,54,55,56,59],digial:25,digit:[22,23,26],digital_biquad_filt:[22,26],digitalconfig:10,dim:35,dimension:46,dir_entri:21,direct:[4,6,10,22,35,37,54],directli:[5,7,18,30,31,41],directori:[15,21,28],directory_iter:21,directory_list:21,disabl:[5,6,8,16,35,54,56],disconnect:[57,63],disconnect_callback:63,discontinu:45,discover:53,discuss:[8,54],displai:[11,32,53,57],display_driv:[13,14],display_event_menu:59,distinguish:58,distribut:[20,45],divid:[9,22,46,55],dma:[2,56],dma_en:56,doc:[5,8,12,15,28,56,62,63],document:[8,11,16,54,56,58,59],doe:[2,4,5,11,16,19,21,28,35,37,49,57,58,59],doesn:21,don:[1,2,4,6,10,16,19,20,30,35,37,38,47,50,51,54,55,56,60],done:[20,39,49,50,51],dot:46,doubl:[8,12],double_buff:12,double_click:30,down:[8,10,49,50,51,55,59,60],doxygen:[15,28],doxygenclass:15,doxygenfunct:28,dq:6,draw:[12,13],drive:[6,20,30,31,35,56],driven:31,driver:[1,6,7,8,10,12,14,16,19,31,32,34,35,37,54,57],driverconcept:6,drv2605:[31,32],drv:13,ds:30,dsiplai:12,dsp:[22,25],dsprelat:[22,26],dual:[10,53],dualconfig:10,dummycurrentsens:6,durat:[1,12,16,19,30,35,37,39,40,47,49,50,51,54,55,56,59,60],duration0:56,duration1:56,dure:[55,59],duti:[5,39],duty_a:5,duty_b:5,duty_c:5,duty_perc:39,duty_resolut:39,dx:11,dynam:[6,43,54,55],dynamictask:60,e:[8,21,30,43,56,59],each:[2,4,5,9,10,20,21,26,28,35,38,40,47,57,58],earli:[1,2,4,10,16,19,30,35,37,38,54,55,56,59,60],easili:[16,48,60],ec:[21,57,58],eccentr:[30,31],ecm:30,ed:[],edg:[16,19,30,56],edit:8,edr:53,eeprom:54,effici:11,eh_ctrl:54,eight:1,eir:53,either:[10,15,47],el_angl:6,elaps:[1,30,39,40,55,60],electr:6,element:[4,46],els:[2,4,21,35,37,58,59],em:20,empti:[30,53,57,62,63],en:[5,8,15,21,22,23,26,28,40,49,50,51,53,54,56,62,63],enabl:[2,4,5,6,8,10,12,20,35,47,48,50,54,60,62,63],enable_if:46,enable_reus:[49,50,51],encapsul:54,encod:[32,57],encode_fn:56,encoded_symbol:56,encoder_typ:17,encoder_update_period:[16,19],encodertyp:[],encrypt:53,end:[8,13,21,30,50,51,53,54,59],endev:59,endif:13,endl:8,endpoint:[49,50,51],energi:53,enforc:59,english:[35,53],enough:60,ensur:[6,8,45,56,62,63],enter:[8,59],enterpris:53,entri:[47,59],enumer:[1,6,10,12,30,35,37,38,40,53],eoi:57,epc:53,equal:8,equat:22,equival:[8,11,35],erm:[30,31],err:[1,10,16,19,21,30,35,37,54],error:[1,21,30,35,40,55,56,57],error_cod:[21,57,58],error_rate_limit:40,esp32:[2,5,8,10,15,21,28,38,56,57,62,63],esp32s2:2,esp32s3:2,esp:[2,4,5,8,13,15,22,25,28,32,39,40,51,54,56,57,60,62,63],esp_err_t:[13,56],esp_err_to_nam:[1,30,35],esp_error_check:13,esp_lcd_ili9341:13,esp_log:40,esp_ok:[1,10,16,19,30,35,37,54,56],esphom:13,espp:[1,2,4,5,6,8,9,10,12,13,15,16,19,20,21,22,23,25,26,28,29,30,34,35,37,38,39,40,41,43,45,46,47,49,50,51,53,54,55,56,57,58,59,60,62,63],espressif:[5,8,13,25,51,56,62,63],etc:[21,35,37,55,56,58],evalu:[41,43],even:[54,58],evenli:[],event1:20,event2:20,event:[32,54,59,63],event_callback_fn:20,event_manag:20,eventbas:59,eventdata:63,eventmanag:20,everi:[12,16,19,40],everybodi:8,everyth:8,exactli:53,exampl:[3,7,14,15,48,61],exceed:63,excel:6,except:[8,21],exchang:53,execut:[8,20,59,60],exis:63,exist:[5,8,11,21,57,58,59],exit:[1,2,4,8,10,16,19,30,35,37,38,54,55,56,59,60],exitact:8,exitchildren:59,exitselect:59,exp:[43,47],expand:32,explicit:[8,49,57],explicitli:8,expos:[8,11,40],extend:53,extern:[8,30,38,53,59],external_typ:53,extra:[56,57],extra_head:57,exttrigedg:30,exttriglvl:30,f:21,f_cutoff:[23,25],f_sampl:[23,25],facil:47,factor:[16,19,25],fade:39,fade_time_m:39,fail:[1,10,16,19,30,35,37,54,58,63],fake:60,fall:[54,56],fals:[1,2,4,10,13,16,19,20,21,28,30,34,35,37,38,39,45,47,50,51,54,55,56,57,59,60,63],famili:1,far:8,fast:[32,44,54],fast_co:42,fast_ln:42,fast_math:42,fast_sin:42,fast_sqrt:42,fastest:[16,19],fault:[],fclose:21,feedback:[6,30,31],feel:[],few:[8,13,20,59],ff:53,fi:[62,63],field:[6,21,38,53,54,57],field_fal:54,field_ris:54,figur:[11,21,58,59],file2:21,file:[29,32],file_byt:21,file_cont:21,file_s:21,file_str:21,file_system:21,filenam:11,filesystem:28,fill:[13,22,25,34,38,49,50,51,54],filter:[2,4,6,16,19,27,32],filter_cutoff_hz:[16,19],filter_fn:[6,16,19],find:15,fine:[],fine_values_no_det:[],fine_values_with_det:[],finger563:59,finish:[8,56],first:[6,20,50,51,53,54,57],first_row_is_head:11,fish:8,fit:12,fixed_length_encod:58,flag:[13,20,53,54,56],flip:45,floatrangemapp:38,flush:[12,13,21],flush_callback:[12,13],flush_cb:13,flush_fn:12,fmod:39,fmt:[2,4,8,10,11,13,16,19,20,35,37,38,39,47,50,51,54,55,56,57,58,60,63],foc:[5,6],foc_curr:6,foc_typ:6,foctyp:6,folder:[3,7,8,11,14,15,38,40,47,48,55,58,59,60,61],follow:[6,22,30,42,47,53,54,56,59],fopen:21,forc:[5,12],force_refresh:12,form:[22,23,57],format:[11,13,21,32,47,53,57,60],forum:53,found:[16,19,30,53,54],four:1,frac:[22,43],frag_typ:57,fragment:57,frame:57,fread:21,free:[12,21,39,56],free_spac:21,freebook:[22,26],freerto:[47,60],frequenc:[2,4,16,19,23,25,39],frequency_hz:39,frequent:[12,55],from:[1,2,4,5,6,8,9,10,12,13,15,16,19,20,21,24,28,30,31,32,34,35,37,38,39,40,43,45,46,49,50,51,53,54,55,56,57,58,59,60,63],from_sockaddr:49,fs:21,fseek:21,ftell:21,fthat:9,ftm:54,ftp:[32,53,57],ftp_anon:53,ftp_client_sess:28,ftp_ftp:53,ftp_server:28,ftpclientsess:28,ftpserver:28,fulfil:[16,19],full:[5,35,57],fulli:[30,59,60],fun:20,further:57,futur:[40,53,57],fwrite:21,g:[9,21,30,35,43,56],g_bright:35,g_down:35,g_led:35,g_up:35,gain:[1,55],game:53,gamepad:[53,54],gamma:[39,43],gate:5,gaussian:[32,39,44],gb:11,gbc:11,gener:[16,19,24,49,53,56,57,62,63],generatedeventbas:59,generic_hid:53,geometr:9,get:[1,2,5,6,8,9,10,11,12,13,16,19,20,21,28,34,37,38,39,43,47,49,50,51,53,54,55,56,57,58,59,60,63],get_accumul:[16,19],get_config:55,get_count:[16,19],get_data:57,get_degre:[16,19],get_duti:39,get_electrical_angl:6,get_error:55,get_free_spac:21,get_ftm_length:54,get_head:57,get_height:57,get_histori:8,get_info:60,get_integr:55,get_interrupt_captur:37,get_interrupt_statu:54,get_ipv4_info:[49,50,51],get_jpeg_data:57,get_mechanical_degre:[16,19],get_mechanical_radian:[16,19],get_mjpeg_head:57,get_mount_point:21,get_mv:2,get_num_q_t:57,get_offset:[13,57],get_output_cent:45,get_output_max:45,get_output_min:45,get_output_rang:45,get_packet:57,get_partition_label:21,get_payload:57,get_pin:[35,37],get_power_supply_limit:5,get_q:57,get_q_tabl:57,get_quantization_t:57,get_radian:[16,19],get_rat:2,get_remote_info:50,get_revolut:[],get_root_path:21,get_rpm:[16,19],get_rpt_head:57,get_rtp_header_s:57,get_scan_data:57,get_session_id:57,get_shaft_angl:6,get_shaft_veloc:6,get_siz:53,get_stat:10,get_total_spac:21,get_type_specif:57,get_used_spac:21,get_user_input:8,get_user_select:59,get_valu:[10,38],get_values_fn:38,get_vers:57,get_voltage_limit:5,get_width:57,getactivechild:59,getactiveleaf:59,getiniti:59,getinputhistori:8,getlin:8,getparentst:59,getsocknam:[49,50,51],getter:[46,57],gettimerperiod:59,gettin:38,gimbal:[],github:[8,11,13,41,51,54,56,57,59],give:[49,59,60],given:[20,23,57,59],glitch:[],global:[2,35],go:[20,21,59],gone:60,goodby:8,googl:54,got:[20,57,63],gotten:[8,63],gpio:[5,10,35,37,39,56],gpio_a:10,gpio_a_h:5,gpio_a_l:5,gpio_b:10,gpio_b_h:5,gpio_b_l:5,gpio_c_h:5,gpio_c_l:5,gpio_down:10,gpio_en:5,gpio_fault:[],gpio_i:10,gpio_joystick_select:10,gpio_left:10,gpio_num:56,gpio_num_18:13,gpio_num_19:13,gpio_num_22:13,gpio_num_23:13,gpio_num_45:13,gpio_num_48:13,gpio_num_4:13,gpio_num_5:13,gpio_num_6:13,gpio_num_7:13,gpio_num_t:13,gpio_pullup:10,gpio_pullup_en:[1,10,16,19,30,35,37,54],gpio_right:10,gpio_select:10,gpio_start:10,gpio_up:10,gpio_x:10,gpo:54,grab:38,gradient:9,grai:40,graphic:9,greater:40,green:[9,40,56],ground:10,group:[21,49,50,51,53],guard:59,gui:[12,13,47],guid:[8,62,63],h:[8,9,13,40,57],ha:[6,8,10,16,19,20,21,28,30,35,37,39,47,50,51,53,54,56,57,59,60,63],half:[16,19,22],handl:[8,28,35,37,50,51,56,59,60],handle_all_ev:59,handleev:59,handler:51,handov:53,happen:20,haptic:32,haptic_config:[],haptic_motor:[],hapticconfig:[],hardawr:39,hardwar:[6,25,35,39,57],has_q_tabl:57,has_stop:59,has_valu:[2,4,10,38,39],hash:53,have:[6,8,11,12,20,22,30,35,38,39,40,47,50,55,56,57,59,60,62,63],hc:53,heart:6,height:[12,13,57],hello:[8,54],hello_everysess:8,help:53,helper:49,here:[8,11,16,20,30,35,37,54,55],hid:53,high:[2,5,12,37,47,56],high_limit:[],high_resolution_clock:[1,16,19,30,35,37,39,40,47,54,55,56,60],high_water_mark:47,higher:[22,25],histori:[8,22,23,25,26,59],history_s:8,hmi:13,hold:[12,53,54],home:34,hop:[49,50,51],host:[13,35,53,62],how:[6,11,12,55,58,59],howev:22,hpp:[0,1,2,4,5,6,8,9,10,11,12,13,15,16,17,19,20,21,22,23,25,26,27,28,30,34,35,37,38,39,40,41,42,43,45,46,47,49,50,51,53,54,55,56,57,58,59,60,62,63],hr:53,hs:53,hsfm:59,hsv:[9,56],html:[5,8,12,13,22,26,53,56,62,63],http:[5,6,8,11,12,13,16,21,22,23,26,30,35,40,41,49,50,51,53,54,56,57,59,62,63],http_www:53,https_www:53,hue:[9,56],human:[11,21],human_read:21,hz:2,i2c:[3,16,18,19,30,32,35,36,37,54],i2c_cfg:[1,10,16,19,30,35,37,54],i2c_config_t:[1,10,16,19,30,35,37,54],i2c_driver_instal:[1,10,16,19,30,35,37,54],i2c_freq_hz:[1,10,16,19,30,35,37,54],i2c_master_write_read_devic:[1,10,16,19,30,35,37,54],i2c_master_write_to_devic:[1,10,16,19,30,35,37,54],i2c_mode_mast:[1,10,16,19,30,35,37,54],i2c_num:[1,10,16,19,30,35,37,54],i2c_param_config:[1,10,16,19,30,35,37,54],i2c_read:30,i2c_scl_io:[1,10,16,19,30,35,37,54],i2c_sda_io:[1,10,16,19,30,35,37,54],i2c_timeout_m:[1,10,16,19,30,35,37,54],i2c_writ:30,i:[6,11,32,36,47,55,58,59,60],i_gpio:[],id:[28,30,53,57,60],ident:8,identifi:[30,53,57],idf:[2,4,5,8,32,39,40,51,56,62,63],ifs:21,ifstream:21,ignor:[],iir:25,il:53,imag:57,imap:53,imax:35,imax_25:35,imax_50:35,imax_75:35,immedi:[59,60],imped:5,impl:[23,26],implement:[5,6,7,8,9,22,23,25,26,28,29,41,42,43,46,53,57,59],implicit:[16,19],impuls:25,includ:[0,1,2,4,5,6,8,9,10,11,12,13,15,16,17,19,20,21,22,23,25,26,27,28,30,34,35,37,38,39,40,41,42,43,45,46,47,49,50,51,53,54,55,56,57,58,59,60,62,63],incom:50,incomplet:53,increas:[6,40,55],increment:[15,35],incur:12,independ:[38,46],index:[46,57],indic:[35,37,50,51,53,54,60],individu:[38,41],infinit:25,info:[1,2,4,10,30,38,40,47,49,50,51,55,56,57],info_rate_limit:40,inform:[9,12,16,19,23,26,35,37,38,41,47,49,50,51,53,54,56,59,62,63],infrar:56,inherit:8,init:[38,49,50],init_ipv4:49,initail:2,initi:[1,2,4,5,6,10,12,13,16,19,25,30,34,35,37,38,39,43,45,49,50,51,54,56,59,60,62,63],inlin:[1,2,4,5,6,8,10,12,13,16,19,20,21,22,23,25,26,28,30,34,35,37,38,39,40,41,43,45,46,47,49,50,51,53,54,55,56,57,59,60,62,63],input:[6,8,10,16,19,22,23,25,26,30,32,35,37,38,45],input_delay_n:13,input_driv:34,inquiri:53,insert:8,instal:[1,10,16,19,30,35,37,54],instanc:[20,21],instant:39,instanti:47,instead:[8,28,45,58,59],instruct:25,instrument:30,int16_t:[],int8_t:58,integ:[5,42,49],integr:55,integrator_max:[6,55],integrator_min:[6,55],intend:[41,59,60],interact:[8,18,20,21,36,57],interest:[10,20],interfac:[5,7,12,18,21,28,30,32,35,36,37,56,57],interfer:[],intermedi:53,intern:[8,10,13,22,23,25,26,30,35,37,49,59],interpol:9,interrupt:[35,37,54,60],introduc:45,inttrig:30,invalid:[8,9],invalid_argu:8,invers:39,invert:[10,34,35,37,39,45],invert_color:13,invert_i:34,invert_input:45,invert_output:45,invert_x:34,invoc:55,io:[12,13,21,32,41,53],ip2str:63,ip:[28,49,50,51,57,63],ip_add_membership:[49,50,51],ip_address:[28,50,51,57],ip_callback:63,ip_event_got_ip_t:63,ip_evt:63,ip_info:63,ip_multicast_loop:[49,50,51],ip_multicast_ttl:[49,50,51],ipv4:49,ipv4_ptr:49,ipv6:49,ipv6_ptr:49,ir:56,irdaobex:53,is_a_press:10,is_act:57,is_al:28,is_b_press:10,is_clos:57,is_complet:57,is_connect:[28,50,57,63],is_dir:21,is_directori:21,is_down_press:10,is_en:[],is_fault:[],is_floating_point:46,is_left_press:10,is_multicast_endpoint:51,is_passive_data_connect:28,is_press:10,is_right_press:10,is_select_press:10,is_start:60,is_start_press:10,is_up_press:10,is_valid:[49,50,51],issu:8,istream:8,it_st:54,item:[11,21],iter:[13,21,50,51,60],its:[2,16,19,20,28,35,37,43,47,49,50,51,54,55,59,62],itself:[12,20,34,57,60],join:[49,50,51],joybonnet:[1,10],joystick:[10,32,53],joystick_config:10,joystick_i:10,joystick_select:10,joystick_x:10,jpeg:57,jpeg_data:57,jpeg_fram:57,jpeg_frame_callback_t:57,jpeg_head:57,jpegfram:57,jpeghead:57,jpg:11,js1:38,js2:38,jump:45,just:[10,16,19,20,53,56,57,58,59],k:8,k_bemf:6,kbit:54,kd:[6,55],kd_factor_max:[],kd_factor_min:[],keepal:50,kei:[8,53,54,57],keyboard:[8,53],ki:[6,55],kind:[17,59],know:[12,16,19,60],known:[53,59],kohm:37,kp:[6,55],kp_factor:[],kv:6,kv_rate:6,label:[13,21],lack:21,lambda:[1,10,16,19,30,35,37,40,54],landscap:[12,13],landscape_invert:12,larg:57,larger:[2,8,57],last:[10,38,53,55,59],last_unus:10,latch:56,later:[5,13],latest:[2,5,8,34,38,47,55,56,62,63],launch:53,launcher:54,launcher_record:54,lazi:11,lcd:13,lcd_send_lin:13,lcd_spi_post_transfer_callback:13,lcd_spi_pre_transfer_callback:13,lcd_write:13,le:53,le_rol:53,le_sc_confirm:53,le_sc_random:53,lead:[2,6,9],leaf:59,learn:[30,53],least:50,led:[32,35,56],led_callback:39,led_channel:39,led_encod:56,led_encoder_st:56,led_fade_time_m:39,led_reset_cod:56,led_stip:56,led_strip:56,led_task:39,ledc:39,ledc_channel_5:39,ledc_channel_t:39,ledc_high_speed_mod:39,ledc_mode_t:39,ledc_timer_10_bit:39,ledc_timer_13_bit:39,ledc_timer_2:39,ledc_timer_bit_t:39,ledc_timer_t:39,left:[10,13],legaci:53,legend:11,length16:54,length:[13,22,25,46,53,54,56],less:[5,38,53,54,60],let:[8,12,20,47],level0:56,level1:56,level:[5,6,7,20,30,37,40,49,50,51,53,56,57,59],leverag:25,lh:[],lib:30,libarari:58,libfmt:40,librari:[8,20,21,30,32,53,58],life:[8,58],lifecycl:12,light:[9,34,40,58,59],like:[20,49],limit:[5,6,8,40,53,55],limit_voltag:5,line:32,line_input:8,linear:[15,30,31],lineinput:8,link:[11,21],links_awaken:11,list:[21,30,53],list_directori:21,listconfig:21,listen:[28,50,57],lit:30,littl:[20,39],littlef:21,lk:[1,2,4,10,16,19,20,30,35,37,38,39,54,55,56,59,60],ll:[1,10,16,19,20,30,35,37,54],load:[10,11,53],local:53,lock:[50,60],log:[6,20,30,32,34,35,37,39,47,54,56,57,60],log_level:[1,2,4,5,6,10,12,16,19,30,34,35,37,38,39,50,51,54,55,56,57,59,60,62,63],logger1:40,logger1_thread:40,logger2:40,logger2_thread:40,logger:[1,2,4,5,6,10,12,16,19,20,21,30,32,34,35,37,38,39,49,50,51,54,55,56,57,59,60,62,63],logger_:[12,38],logger_config:49,logger_fn:40,logic:[10,51,53],long_local_nam:53,longer:8,loop:[6,7,8,16,19,21,40,60],loop_foc:6,loop_iter:40,loopback_en:[49,50,51],loos:20,lose:8,low:[4,5,6,7,10,20,37,49,53,56],low_limit:[],lower:[35,37],lowest:60,lowpass:[24,32],lowpass_filt:25,lowpassfilt:25,lra:[30,31],lsb:35,lv_area_t:[12,13],lv_color_t:[12,13],lv_disp_drv_t:[12,13],lv_disp_flush_readi:12,lv_tick_inc:12,lvgl:[12,13,34],lvgl_esp32_driv:13,lvgl_tft:13,m:[1,2,4,10,16,19,20,30,35,37,38,39,40,50,54,55,56,59,60],m_pi:[16,19,47],mac:[53,63],mac_addr:53,mac_address:53,machin:32,macro:40,made:54,magic_enum_no_check_support:59,magnet:[18,32],magnetic_det:[],magnitud:[6,38,46,55],magnitude_squar:46,mai:[2,53,54,59],mailbox:54,mailto:53,main:[6,12,56],mainli:12,maintain:[12,16,19,54],make:[1,6,10,16,19,20,21,30,35,37,49,53,54,57,59],make_android_launch:[53,54],make_ev:59,make_le_oob_pair:[53,54],make_multicast:[49,50,51],make_oob_pair:[53,54],make_shar:13,make_text:[53,54],make_uniqu:[1,8,10,30,39,47,50,51,56,60],make_uri:[53,54],make_wifi_config:[53,54],makeact:59,malloc_cap_8bit:12,malloc_cap_dma:12,manag:[4,9,10,11,12,21,32,35,37,39,50,51,53,54],mani:[20,50,51,63],manual:[8,57,59],map:[10,38,45,57],mapper:[32,38,44],mario:11,mark:[47,57],marker:57,mask:[35,37],maskaravivek:53,mass:[30,31],master:[1,8,10,13,16,19,30,35,37,51,54,56],match:[21,28],math:[32,41,43,45,46],max:[5,30,35,43,45,50,51,55,62],max_connect:50,max_data_s:57,max_glitch_n:[],max_led_curr:35,max_num_byt:[50,51],max_number_of_st:62,max_pending_connect:50,max_receive_s:50,max_transfer_sz:13,maximum:[5,10,16,19,35,38,45,50,51,55,57],maxledcurr:35,maybe_duti:39,maybe_mv:[2,4],maybe_r:2,maybe_x_mv:[10,38],maybe_y_mv:[10,38],mb:[21,53],mb_ctrl:54,mcp23x17:[32,36],mcp23x17_read:37,mcp23x17_write:37,mcpwm:5,me:53,mean:[5,9,16,19,22,38,45,47,56,58,60],measur:[2,4,6,16,19,38,55],mechan:[2,6,16,19,20,28],media:53,mega_man:11,megaman1:11,megaman:11,member:[1,2,4,5,6,9,10,12,16,19,21,23,25,30,34,35,37,38,39,40,41,43,45,47,49,50,51,53,54,55,56,57,60,62,63],memori:[8,12,22,25,39,54,56,60],memset:[1,10,13,16,19,30,35,37,54],mention:8,menu:8,menuconfig:21,mere:5,messag:[21,53,54,57,58],method:[6,21,41,43,55,57,58],metroid1:11,metroid:11,micro:13,middl:53,millisecond:39,mime_media:53,min:45,minimum:[10,38,45,55],minu:57,minut:[16,19],mireq:13,mirror:37,mirror_i:13,mirror_x:13,miso_io_num:13,mix:9,mjepg:57,mjpeg:57,mkdir:21,mode:[1,2,10,13,16,19,30,35,37,39,53,54],model:[9,59],moder:4,modif:6,modifi:[13,35,57],modul:6,modulo:[16,19],monitor:32,more:[2,8,9,12,23,24,26,30,38,39,40,43,49,50,51,56,59],mosi:13,mosi_io_num:13,most:[2,6,10,16,19,38,55],motion:6,motion_control_typ:6,motioncontroltyp:6,motoion:6,motor:[5,7,16,19,31,32],motor_task:[],motor_task_fn:[],motor_typ:30,motorconcept:[],motortyp:30,mount:[6,21],mount_point:21,mous:53,move:[6,8,47,56,60],movement:8,ms:12,msb:35,msb_first:56,mt6701:[18,32],mt6701_read:19,mt6701_write:19,much:22,multi_rev_no_det:[],multicast:[49,50],multicast_address:[49,50,51],multicast_group:[49,50,51],multipl:[2,4,6,10,30,31,40,55,57],multipli:[46,55],must:[4,6,8,20,21,47,49,50,51,53,54,58,59,60,62,63],mutabl:[46,60],mutat:60,mutex:[1,2,4,10,16,19,20,30,35,37,38,39,50,54,55,56,59,60],mv:[1,2,4,38],mystruct:58,n:[2,4,8,10,11,16,19,20,21,22,26,27,35,37,38,39,47,50,51,54,55,56,57,58,60,63],name:[1,2,4,10,11,16,19,20,30,35,37,38,39,47,50,51,53,54,55,56,57,58,59,60],namespac:[1,10,21,30],nanosecond:[],navig:8,ndef:[32,52,54],ndeflib:53,ndefmessag:53,ne:11,nearest:42,necessari:[6,60],need:[2,4,8,16,19,20,21,22,35,47,53,55,56,59,60],needs_zero_search:[16,19],neg:[6,46,55],negat:[10,46],network:[32,50,51,53,62],new_duti:39,new_object:58,new_siz:8,new_target:6,newli:60,newlin:47,next:[8,56],nf:53,nfault:[],nfc:[32,53,54],nicer:40,nm:6,no_timeout:60,nocolor:8,node:[49,50,51,59],nois:45,non:[2,45,54],nonallocatingconfig:12,none:[12,28,40,53,59],normal:[12,20,22,46],normalizd:[23,25],normalized_cutoff_frequ:[16,19,23,25],note:[1,2,4,6,8,10,16,19,20,21,28,30,35,37,38,40,50,51,54,55,56,58,59,60],noth:[5,47],notifi:[57,60],now:[1,6,11,16,19,20,30,35,37,39,40,47,50,51,54,55,56,60],nthe:63,nullopt:[39,51],nullptr:[6,8,16,19,21,46,50,51,59,63],num:57,num_connect_retri:63,num_periods_to_run:39,num_pole_pair:6,num_seconds_to_run:[39,40,55,60],num_steps_per_iter:60,num_task:[47,60],num_touch:34,number:[1,2,6,8,12,13,16,19,21,22,25,30,34,35,37,39,42,49,50,51,53,54,56,57,62,63],number_of_link:21,nvs_flash_init:[62,63],o:[32,36],object:[6,8,9,11,20,40,43,47,53,56,57,58,59],occur:[20,57,59],off:[5,8,35,40,57],offset:[13,54,57],offset_i:13,offset_x:13,ofs:21,ofstream:21,ohm:6,ok:57,oldest:8,on_connect:63,on_disconnect:63,on_got_ip:63,on_jpeg_fram:57,on_receive_callback:51,on_response_callback:[50,51],onc:[10,16,19,20,57],once_flag:20,one:[6,8,16,19,20,28,39,50,51,54,56,59],oneshot:[3,32],oneshot_adc:4,oneshotadc:[4,10,38],onli:[6,10,11,16,19,20,22,38,40,46,51,53,54,56,57,58,59],oob:[53,54],open:[6,7,8,21,50,53,62,63],open_drain:35,oper:[9,21,23,25,26,41,43,46,55],oppos:9,opposit:39,optim:[6,22,42],option:[2,4,5,6,8,10,12,13,16,19,34,38,39,40,45,49,50,51,54,57,58,60],order:[22,23,24,27,32,40,50],oreilli:53,org:[22,23,26,49,50,51],orient:[6,12],origin:21,oscil:45,ostream:8,ostringstream:11,other:[6,8,9,12,46,49,50,51,54,55,58,59,60,62],otherwis:[10,20,28,37,38,39,50,51,53,56,57,59,60,63],our:[39,49,50,51,60],out:[8,11,21,47,49,50,51,53,54,56,58,59],output:[6,7,8,15,20,21,22,23,25,26,28,34,35,37,39,40,43,45,47,54,55],output_cent:45,output_drive_mode_p0:35,output_invert:39,output_max:[6,45,55],output_min:[6,45,55],output_rang:45,outputdrivemodep0:35,outsid:[8,9],over:[5,18,21,36,39,48,50,51,57,60],overflow:[15,22],overhead:[12,20],overload:21,overstai:40,overwrit:57,own:[2,12,16,19,28,35,37,49,50,51,62],owner:21,p0:35,p0_0:35,p0_1:35,p0_2:35,p0_3:35,p0_5:35,p1:35,p1_0:35,p1_1:35,p1_5:35,p1_6:35,p1_7:35,p1_8:35,p:[8,11,55],pack:10,packag:53,packet:[49,50,51,53,57],packet_:57,pad:10,page:21,pair:[6,53,54],panel:34,param:[1,6,12,16,19,20,30,34,35,37,38,49,50,51,54,56,60,63],paramet:[1,2,4,5,6,8,9,10,12,13,17,20,21,22,23,25,26,28,30,34,35,37,38,39,40,41,43,45,46,49,50,51,53,54,55,56,57,59,60,62,63],parent:59,pars:[11,47,57],part:[5,13,34],parti:58,partit:21,partition_label:21,pass:[13,20,28,40,45],passiv:28,password:[28,53,62,63],pasv:28,pat:53,path:[21,28,57],paus:[12,57],payload:[53,54,57],payload_s:57,pdf:[16,30,35,54],pend:50,per:[1,2,6,16,19],perceiv:9,percent:39,percentag:[5,39],perform:[2,4,9,21,38,60],perhipher:39,period:[10,12,16,19,20,35,37,47,54,59],peripher:[5,15,31,39,53,56],peripheral_centr:53,peripheral_onli:[53,54],permiss:21,person:53,phase:[5,6],phase_resist:6,phone:[53,54],photo:54,pick:[],pico:38,pid:[6,32],pid_config:55,pin:[1,5,10,13,30,35,37,39,56,60],pin_mask:37,pinout:[],pixel:[12,13,57],pixel_buffer_s:[12,13],place:20,plai:[30,57],platform:[40,60],play_hapt:[],playback:30,pleas:[8,9,11,26,30,59],pn532:53,point:[9,21,22,25,32,34,39,41,42,46,50,51,53,61,63],pointer:[1,12,13,16,19,22,25,30,34,35,37,38,49,50,54,56,57,59,60,63],pokemon:11,pokemon_blu:11,pokemon_r:11,pokemon_yellow:11,polar:37,pole:6,poll:[10,16,19,35,37,54],pomax:41,pop:53,popul:51,port0:35,port1:35,port:[6,12,28,35,37,49,50,51,57],port_0_direction_mask:35,port_0_interrupt_mask:35,port_1_direction_mask:35,port_1_interrupt_mask:35,port_a:37,port_a_direction_mask:37,port_a_interrupt_mask:37,port_b:37,port_b_direction_mask:37,port_b_interrupt_mask:37,portrait:[12,13],portrait_invert:12,porttick_period_m:[1,10,16,19,30,35,37,54],pos_typ:21,posit:[6,13,16,19,34,38,45],posix:[48,49],possibl:[5,12,45,53],post:53,post_cb:13,post_transfer_callback:12,poster:53,potenti:[2,22,28],power:[5,6,53],power_supply_voltag:5,pranav:11,pre:[13,55],pre_cb:13,precis:56,preconfigur:30,prefer:53,prefix:21,prepend:40,present:[53,57],preset:30,press:[10,34],prevent:[12,55],previou:[8,39],previous:[5,45],primari:56,primarili:8,primary_data:56,print:[2,4,8,10,11,16,19,20,35,37,38,39,40,47,50,51,54,55,56,57,58,60,63],printf:[10,16,19,35,37,54],prior:[54,62,63],prioriti:[2,12,40,47,60],privat:8,process:[39,50,51,60],processor:[25,60],produc:9,product:[35,46,59],profil:[],programmed_data:54,project:[5,8,15,28,56,57,62,63],prompt:8,prompt_fn:8,proper:[9,59],properli:[4,57],proport:55,protocol:[28,50,51,56],protocol_examples_common:8,prototyp:[20,34],provid:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20,21,22,23,24,25,26,27,29,31,32,34,35,36,37,38,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,57,58,59,60,61,63],prt:49,pseudost:59,pub:20,publish:20,pull:[35,37],puls:[15,56],pulsing_strong_1:30,pulsing_strong_2:30,pure:59,push_push:35,put:54,pwm:[5,6,7,30,39],pwmanalog:30,py:38,python:47,q0:57,q0_tabl:57,q1:57,q1_tabl:57,q:[6,25,57],q_current_filt:6,q_factor:25,qt:38,quadhd_io_num:13,quadratur:15,quadwp_io_num:13,qualiti:25,quantiz:57,question:[8,11,39,54],queu:56,queue:[8,56],queue_siz:13,quickli:59,quit:54,quit_test:[10,16,19,37,54],quote_charact:11,r:[9,21,35,45,53,56],r_bright:35,r_down:35,r_led:35,r_up:35,race:39,rad:6,radian:[6,16,19,46],radio:[53,54],radio_mac_addr:54,radiu:38,rainbow:56,ram:12,ranav:11,random:53,rang:[1,5,9,16,19,21,23,25,31,32,38,43,44,62],range_mapp:45,rangemapp:[38,45],rate:[1,2,6,16,19,35,37,40],rate_limit:40,ration:41,raw:[1,4,6,10,16,19,38,41,49,53,54],rb:21,re:[8,10,16,19,30,49,50,51,59],reach:[30,50,54,59],read:[1,2,4,8,10,16,19,21,30,34,35,37,38,50,54],read_fn:[1,16,19,30,35,37,54],read_joystick:[10,38],read_mv:[4,10,38],read_raw:4,read_valu:11,readabl:[11,21],reader:[2,4,38],readthedoc:53,real:[20,30],realli:[11,58,59],realtim:30,reason:[58,60],receic:20,receiv:[13,49,50,51,54,57],receive_callback_fn:[49,50,51],receive_config:51,receiveconfig:51,recent:[2,6,10,16,19,38,55],recommend:[16,19,20,38],record:[53,54],rectangular:38,recurs:[21,59],recursive_directory_iter:21,recvfrom:[49,51],red:[9,11,40,56],redraw:12,reepres:57,refer:32,reference_wrapp:[],refresh:12,reg:54,reg_addr:[1,10,16,19,30,35,37,54],regard:[16,19],regardless:38,regist:[1,16,19,20,30,34,35,37,54,57],registr:20,registri:20,reinit:50,reiniti:50,reistor:35,rel:45,relat:[8,39],relev:21,reli:59,reliabl:[16,19,50],remain:40,remot:[32,50,51,53],remote_control:53,remote_info:51,remov:[5,8,20,21],remove_publish:20,remove_subscrib:20,renam:21,render:[12,47],repeatedli:[56,60],replac:8,report:54,repres:[9,16,19,28,39,46,53,54,55,56,57],represent:9,request:[28,49,50,51,53,54,57],requir:[6,54],rescal:9,reserv:53,reset:[13,54,56],reset_fn:56,reset_pin:13,reset_st:[],reset_tick:56,resist:6,resistor:35,resiz:[8,21,47,60],resolut:[39,56],resolution_hz:56,resolv:28,reson:[30,31],resourc:[4,49,50,51,54,56],respect:[57,59],respond:[49,50,51],respons:[12,21,25,28,53,55,57],response_callback_fn:[49,50,51],response_s:[50,51],response_timeout:51,restart:59,restartselect:59,restrict:[16,19],result:[2,9,46,57],resum:12,ret:13,ret_stat:56,retri:[57,63],retriev:[2,10,34,38],return_to_center_with_det:[],return_to_center_with_detents_and_multiple_revolut:[],reusabl:[8,32],revers:[50,51],revolut:[16,19],rf:54,rf_activ:54,rf_get_msg:54,rf_intterupt:54,rf_put_msg:54,rf_user:54,rf_write:54,rfc:[53,57],rfid:[53,54],rgb:[9,56],rh:[9,46],right:[6,10,28,54],rise:[30,54,56],risk:22,rmdir:21,rmt:32,rmt_bytes_encoder_config_t:56,rmt_channel_handle_t:56,rmt_clk_src_default:56,rmt_clock_source_t:56,rmt_encod:56,rmt_encode_state_t:56,rmt_encoder_handle_t:56,rmt_encoder_t:56,rmt_encoding_complet:56,rmt_encoding_mem_ful:56,rmt_encoding_reset:56,rmt_symbol_word_t:56,rmtencod:56,robust:40,robustli:45,role:53,root:[21,28,59],root_list:21,root_menu:8,root_path:21,rotari:[],rotat:[12,13,15,16,19,30,31,46,56],round:42,routin:38,row:11,row_index:11,rpm:[6,16,19],rpm_to_rad:[],rstp:53,rt_fmt_str:40,rtcp:57,rtcp_packet:57,rtcp_port:57,rtcppacket:57,rtd:53,rtp:[30,57],rtp_jpeg_packet:57,rtp_packet:57,rtp_port:57,rtpjpegpacket:57,rtppacket:57,rtsp:[32,53],rtsp_client:57,rtsp_path:57,rtsp_port:57,rtsp_server:57,rtsp_session:57,rtspclient:57,rtspserver:57,rtspsession:57,run:[2,6,8,12,16,19,20,28,39,40,47],runtim:40,s2:[2,13],s3:[2,10],s:[6,7,8,9,11,16,19,20,28,35,37,38,39,40,45,47,51,56,58,59,60],s_isdir:21,safe:[39,55],same:[4,20,53,55],sampl:[1,2,6,8,16,19,22,23,25,26,54,55],sample_mv:[1,10],sample_r:1,sample_rate_hz:2,sandbox:21,sarch:[16,19],satisfi:59,satur:[9,55],sbu:20,scalar:46,scale:[43,46,55],scaler:43,scan:[57,63],scan_data:57,scenario:[62,63],scheme:6,scl_io_num:[1,10,16,19,30,35,37,54],scl_pullup_en:[1,10,16,19,30,35,37,54],sclk:13,sclk_io_num:13,scottbez1:[],screen:13,sda_io_num:[1,10,16,19,30,35,37,54],sda_pullup_en:[1,10,16,19,30,35,37,54],sdp:57,search:[16,19],second:[1,2,6,16,19,23,24,32,35,37,39,40,46,54,57,60],secondari:12,seconds_per_minut:[16,19],seconds_since_start:47,section:[9,23,24,32],sectionimpl:26,secur:[53,62,63],security_manager_flag:53,security_manager_tk:53,see:[8,9,11,12,13,15,22,23,26,30,38,41,47,49,50,51,53,54,56,59,62,63],seek_end:21,seek_set:21,seekg:21,seem:[21,57],segment:12,select:[2,10,28,30,53,59],select_librari:30,send:[12,13,28,50,51,54,56,57],send_command:13,send_config:[50,51],send_data:13,send_fram:57,send_request:57,send_rtcp_packet:57,send_rtp_packet:57,sendconfig:51,sender:[49,50,51],sender_info:[49,50,51],sendto:49,sens:6,sensor:[6,16,19],sensor_direct:[],sensorconcept:6,sensordirect:[],sent:[13,28,50,51,56,57],separ:[10,11,12,47],sequenc:[20,30,47,53,54,59],seri:[26,57],serial:[18,20,30,32,35,36,37,53,54,57],serializa:58,series_second_order_sect:[22,26],serizalizt:11,server:[29,32,48,49],server_address:[50,51,57],server_config:51,server_port:57,server_socket:[50,51],server_task:50,server_task_config:[50,51],server_task_fn:50,server_uri:57,servic:53,session:[8,28,56,57],session_st:56,set:[5,6,8,13,20,30,35,37,38,39,42,43,45,47,49,50,51,53,54,56,57,59,62,63],set_ap_mac:63,set_calibr:38,set_config:[],set_deadzon:38,set_direct:[35,37],set_drawing_area:13,set_duti:39,set_encod:56,set_fade_with_tim:39,set_histori:8,set_history_s:8,set_input_polar:37,set_interrupt:35,set_interrupt_mirror:37,set_interrupt_on_chang:37,set_interrupt_on_valu:37,set_interrupt_polar:37,set_label:13,set_log_level:20,set_met:13,set_mod:30,set_motion_control_typ:6,set_offset:13,set_payload:57,set_phase_st:5,set_phase_voltag:6,set_pin:[35,37],set_pull_up:37,set_pwm:5,set_receive_timeout:[49,50,51],set_record:54,set_session_log_level:57,set_verbos:40,set_vers:57,set_voltag:5,set_waveform:30,setactivechild:59,setcolor:8,setdeephistori:59,setinputhistori:8,setinputhistorys:8,setnocolor:8,setparentst:59,setpoint:[],setshallowhistori:59,setter:[46,57],setup:57,sever:[18,24,36],sftp:53,sgn:42,shaft:[6,16,19],shallow:59,shallow_history_st:59,shallowhistoryst:59,shape:43,share:53,shared_ptr:6,sharp_click:30,shield:10,shift:43,shifter:43,shop:35,short_local_nam:53,shorten:53,should:[5,6,8,9,10,12,13,21,22,25,37,38,39,46,49,50,51,55,56,57,59,60],shouldn:[21,40],show:[8,59],showcas:20,shown:40,shut:60,side:[5,29],sign:[42,45],signal:[10,12,22,23,25,26,30,55,56],signatur:60,similar:56,simpl:[0,4,21,27,28,40,53,55,58],simplefoc:6,simpler:[39,56],simpli:[2,8,16],simplifi:57,simultan:[8,53],sin:47,sinc:[6,16,19,20,21,35,57,60],sine_pwm:6,singl:[4,40],single_unit_1:2,singleton:[20,21],sinusoid:6,sip:53,sixteen:1,size:[1,8,10,12,21,30,47,50,51,53,54,56,57,58,60],size_t:[1,2,6,8,10,11,12,13,16,19,21,22,23,25,26,30,35,37,39,40,47,49,50,51,56,57,58,60,63],sizeof:[1,10,13,16,19,30,35,37,54,56,57],sleep:[1,2,4,10,16,19,20,30,35,37,38,39,40,47,54,55,56,59,60],sleep_for:[13,20,39,40,47,50,51,55,57,59,60,63],sleep_until:60,slope:43,slot:30,slow:4,small:43,smart:53,smartknob:[],smb:53,snap:[],snprintf:60,so:[1,4,6,8,10,11,13,16,19,20,21,24,28,30,32,35,37,45,47,54,55,56,57,59,60],so_recvtimeo:[49,50,51],so_reuseaddr:[49,50,51],so_reuseport:[49,50,51],sockaddr:49,sockaddr_in6:49,sockaddr_in:49,sockaddr_storag:[49,50,51],socket:[28,32,48,57],socket_fd:[49,50,51],soft_bump:30,soft_fuzz:30,softwar:[12,20],software_rotation_en:[12,13],some:[1,6,8,10,16,18,19,20,21,24,30,35,37,40,42,47,49,53,54,56,59,60],someth:[12,60],somewhat:[],sos_filt:26,sosfilt:[23,26],sourc:[51,56],source_address:49,sp:53,sp_hash_c192:53,sp_hash_c256:53,sp_hash_r256:53,sp_random_r192:53,space:[6,9,21,56],space_vector_pwm:6,sparignli:45,sparkfun:10,spawn:[16,19,28,57,59,60],spawn_endevent_ev:59,spawn_event1_ev:59,spawn_event2_ev:59,spawn_event3_ev:59,spawn_event4_ev:59,specfici:1,special:[17,30,35,56],specif:[9,31,34,57,59,60],specifi:[16,19,21,40,51,57],speed:[6,16,19,39,50],speed_mod:39,spi2_host:13,spi:[13,16,19,37],spi_bus_add_devic:13,spi_bus_config_t:13,spi_bus_initi:13,spi_device_interface_config_t:13,spi_dma_ch_auto:13,spi_num:13,spi_queue_s:13,spic:13,spics_io_num:13,spike:43,sporad:4,spot:[],sps128:1,sps1600:1,sps16:1,sps2400:1,sps250:1,sps32:1,sps3300:1,sps475:1,sps490:1,sps64:1,sps860:1,sps8:1,sps920:1,squar:46,sr:53,ssid:[53,54,62,63],st25dv04k:54,st25dv:[32,52],st25dv_read:54,st25dv_write:54,st7789_defin:13,st7789v_8h_sourc:13,st:[21,54],st_mode:21,st_size:21,sta:[32,61],stabl:53,stack:[47,60],stack_size_byt:[1,10,16,19,30,35,37,47,50,51,54,56,60],stackoverflow:[21,54],stand:[],standalon:[18,36],standard:[21,40,45,57],star:30,start:[1,2,4,8,10,12,13,16,19,20,28,30,35,37,38,39,40,46,47,48,50,51,54,55,56,57,59,60],start_fast_transfer_mod:54,start_receiv:51,startup:[16,19],stat:[21,47],state:[5,10,16,19,20,22,23,25,26,30,32,34,35,37,47,54,55,56],state_a:5,state_b:5,state_bas:59,state_c:5,state_machin:59,statebas:59,static_cast:[40,56],station:[32,61,62],statu:54,std:[1,2,4,6,8,10,11,12,13,16,19,20,26,28,30,34,35,37,38,39,40,41,45,46,47,48,49,50,51,53,54,55,56,57,58,59,60,62,63],stdby:[],stdin:59,stdin_out:8,stdout:59,step:60,still:38,stop:[1,2,4,10,12,16,19,20,28,30,35,37,38,39,47,50,51,54,55,56,57,59,63],stop_fast_transfer_mod:54,storag:[8,49],store:[8,10,13,21,27,43,53,54,57],str:11,strcutur:13,stream:[8,11,57],streamer:57,strength:[],strictli:58,string:[8,11,20,21,40,47,49,50,51,53,57,58,60,62,63],string_view:[13,21,28,40,50,51,53,54,57,60],strip:56,strong:[],strong_buzz:30,strong_click:30,strongli:58,struct:[1,2,4,5,6,9,10,12,16,19,21,23,25,27,30,34,35,37,38,39,40,41,43,45,47,49,50,51,53,54,55,56,57,58,60,62,63],structur:[1,6,10,12,13,20,30,34,35,37,38,39,41,43,49,50,51,53,55,59,62,63],sub:[8,20],sub_menu:8,sub_sub_menu:8,subclass:[26,49,57,59],subdirectori:21,submenu:8,submodul:8,subscib:20,subscrib:20,subscript:20,subsequ:53,subset:10,substat:59,subsub:8,subsubmenu:8,subsystem:[2,4,12,39],subtract:46,subystem:63,success:57,successfulli:[20,49,50,51,56,57,58],suffix:40,suggest:56,suit:9,super_mario_1:11,super_mario_3:11,super_mario_bros_1:11,super_mario_bros_3:11,suppli:5,support:[6,8,9,10,17,21,30,35,48,53,54,57],sure:[6,57],swap:34,swap_xi:34,symlink:30,symmetr:43,syst_address:54,system:[8,11,20,32,47,54,58,59,60],sytl:58,t5t:54,t:[1,2,4,6,10,11,13,16,19,20,21,30,35,37,38,39,40,41,43,45,46,47,50,51,53,54,55,56,60],ta:10,tabl:[21,47,53,57],tag:[40,53,54],take:[4,21],taken:21,talk:35,target:[6,63],task1:20,task2:20,task:[1,2,4,10,12,16,19,20,28,30,32,35,37,38,39,50,51,54,55,56,57,59],task_1_fn:20,task_2_fn:20,task_callback:47,task_config:51,task_fn:[2,4,10,16,19,30,35,37,38,47,54,55,56,59,60],task_id:47,task_iter:60,task_monitor:47,task_nam:[47,60],task_prior:2,task_stack_size_byt:47,taskmonitor:47,tb:10,tcp:[32,48,57],tcp_socket:50,tcpclientsess:50,tcpobex:53,tcpserver:50,tcpsocket:[49,50,57],tcptransmitconfig:50,tdata:58,tdown:10,tear:[49,50,51,60],teardown:57,tel:53,tell:56,tellg:21,telnet:53,templat:[6,17,21,23,26,28,40,41,45,46,60],termin:[8,59,60],test2:21,test:[],test_dir:21,test_fil:21,test_start:60,texa:30,text:[53,54],text_record:54,tflite:13,tft_driver:13,tft_espi:13,tftp:53,th:[12,27],than:[5,8,12,38,40,54,57],thank:8,thei:[8,10,57,59,60],them:[9,10,20,43,54,56,57,59,60],therefor:[2,4,8,9,16,19,30,45,60],thi:[1,2,4,5,6,8,9,10,11,12,13,16,19,20,21,22,28,30,32,35,37,38,39,40,45,46,47,49,50,51,53,54,55,56,57,58,59,60,62,63],thin:43,thing:47,third:58,this_thread:[13,20,39,40,47,50,51,55,57,59,60,63],those:[20,35,40,47,59],though:20,thread:[20,28,39,47,50,51,55,57,60],through:[6,30,45,56,59],throughput:2,ti:30,tick:59,tickselect:59,time:[4,5,10,16,19,20,21,30,35,37,39,40,47,51,54,55,56,59,60,63],time_point:21,time_t:[21,28],time_to_l:[49,50,51],timeout:[49,50,51,60],timer:39,tinys3:56,tk:53,tkip:53,tleft:10,tloz_links_awaken:11,tloz_links_awakening_dx:11,tlv:54,tm:47,tmc6300:[],tname:58,tnf:53,to_time_t:[21,28],todo:[],too:57,top:59,topic:20,torqu:6,torque_control:6,torquecontroltyp:6,total:21,total_spac:21,touch:34,touchpad:[32,33,53],touchpad_input:34,touchpad_read:34,touchpad_read_fn:34,touchpadinput:34,tp:[21,28],trace:47,track:55,transact:56,transaction_queue_depth:56,transceiv:32,transfer:[13,24,29,32,54],transfer_funct:27,transferfunct:[26,27],transform:[6,20],transit:59,transition_click_1:30,transition_hum_1:30,transmiss:[50,56],transmit:[20,49,50,51,53],transmit_config:50,transmitt:56,transport:57,trapezoid_120:6,trapezoid_150:6,tree:[51,56,59],trigger:[4,30,37,54],tright:10,trim_polici:11,trim_whitespac:11,triple_click:30,truncat:8,ts:30,tselect:10,tstart:10,ttl:[49,50,51],tup:10,turn:40,tvalu:58,two:[1,6,9,10,12,35,37,40,47,56],twothird:1,tx:53,tx_power_level:53,type5tagtyp:54,type:[1,3,6,8,10,12,16,18,19,20,21,24,30,32,34,35,36,37,38,40,46,49,50,51,53,54,56,57,58,60,63],type_specif:57,typedef:[1,6,8,12,16,19,20,30,34,35,37,38,49,50,51,54,56,60,63],typenam:[21,28,40,41,45,46],u:[46,53],ua:5,uart:8,ub:5,uc:5,ud:6,udp:[32,48,57],udp_multicast:51,udp_socket:51,udpserv:51,udpsocket:[49,51],uic:[53,54],uint16_t:[1,12,13,28,34,35,53,54,56],uint32_t:[10,12,13,39,53,54,57,58],uint64_t:[53,54],uint8_t:[1,10,12,13,16,19,30,34,35,37,40,49,50,51,53,54,56,58,62,63],uint:56,unabl:28,unbound:[],unbounded_no_det:[],uncalibr:[10,38],uncent:45,unchang:53,under:21,underflow:15,understand:53,unicast:51,uniqu:[50,57,60],unique_lock:[1,2,4,10,16,19,20,30,35,37,38,39,50,54,55,56,59,60],unique_ptr:[47,50,57,60],unit:[0,2,4,6,10,21,22,38,46],univers:8,unknown:[6,53,63],unless:20,unlimit:8,unlink:21,unmap:38,unord:51,unordered_map:57,unregist:34,unreli:51,until:[8,20,21,30,39,50,51,56,59,60],unus:10,unweight:41,unwind:59,up:[2,8,10,12,21,30,35,37,43,50,54,55,57,59,60],upat:12,updat:[5,6,10,12,16,19,22,23,25,26,35,37,38,39,40,43,45,46,49,54,55,59],update_detent_config:[],update_period:[12,16,19],upper:13,uq:6,uri:[53,54,57],uri_record:54,urn:53,urn_epc:53,urn_epc_id:53,urn_epc_pat:53,urn_epc_raw:53,urn_epc_tag:53,urn_nfc:53,us:[1,2,4,5,6,7,8,9,10,12,13,16,17,19,20,21,22,23,28,29,30,31,35,37,38,39,40,41,43,45,47,48,49,50,51,53,54,56,57,58,59,60],usag:[8,11],used_spac:21,user:[2,4,7,8,13,15,16,19,28,30,35,37,56,57,60],usernam:28,ust:20,util:[21,38,40,42,46,47,49,53,54],uuid:53,uuids_128_bit_complet:53,uuids_128_bit_parti:53,uuids_16_bit_complet:53,uuids_16_bit_parti:53,uuids_32_bit_complet:53,uuids_32_bit_parti:53,v:[6,9,45,46],val_mask:37,valid:[28,30,49,50,51,57],valu:[1,2,4,6,9,10,11,12,16,19,21,25,30,35,37,38,39,40,41,42,43,45,46,53,54,55,57,58,60],vari:[],variabl:[13,38,40,60],ve:[8,21,60],vector2d:[32,41,44],vector2f:38,vector:[2,4,6,10,11,21,25,38,39,46,47,49,50,51,53,57,58,60],veloc:[6,16,19],velocity_filt:[6,16,19],velocity_filter_fn:[16,19],velocity_limit:6,velocity_openloop:6,velocity_pid_config:6,veloicti:[],veolciti:[16,19],verbos:[1,2,4,5,6,10,12,16,19,20,30,34,35,37,38,39,50,51,54,55,56,57,59,60,62,63],version:[8,46,57],via:[21,30,35,37],vibe:30,vibrat:30,video:[12,57],view:[50,51,53],vio:[],virtual:[10,59],visual:47,volt:5,voltag:[1,2,4,5,6,7],voltage_limit:5,vram0:12,vram1:12,vram:12,vram_size_byt:12,vram_size_px:12,vtaskgetinfo:47,w:[21,30,40,45],wa:[2,4,5,8,10,13,16,19,20,28,38,49,50,51,56,57,59,60],wai:[1,2,4,8,10,11,16,19,21,30,35,37,38,53,54,55,56,58,59,60],wait:[20,50,51,60],wait_for:[1,2,4,10,16,19,20,30,35,37,38,39,50,54,55,56,59,60],wait_for_respons:[50,51],wait_tim:39,wait_until:60,want:[1,2,4,8,10,12,16,19,20,30,35,37,38,39,47,50,51,54,55,56,60],warn:[1,2,4,5,6,10,12,16,19,20,21,30,34,35,37,38,39,40,50,51,54,55,56,57,60,62,63],warn_rate_limit:40,watch:53,water:47,wave:43,waveform:30,we:[1,5,8,10,16,19,20,21,30,35,37,39,49,50,51,54,56,59,60],weak:[],webgm:59,weight:41,weightedconfig:41,welcom:40,well:[10,18,20,24,26,30,43,47,50,53,54,57,59,60],well_known:53,wep:53,were:[5,8,38,49,50,51,55,60],what:[4,5,56,59],whatev:[35,37],whe:63,when:[1,2,4,8,10,13,16,17,19,20,30,35,37,38,45,49,50,51,54,55,56,57,58,59,60,63],whenev:59,where:[7,47,51,59],whether:[2,10,12,16,19,21,39,45,49,50,51,56,57,60,63],which:[1,2,4,6,7,8,9,10,11,12,16,19,20,21,22,23,24,25,30,31,35,36,37,39,40,41,42,45,46,47,50,51,53,54,56,57,59,60,62,63],who:13,whole:[57,59],wi:[62,63],width:[12,13,57],wifi:[32,53,54],wifi_ap:62,wifi_record:54,wifi_sta:63,wifiap:62,wifiauthenticationtyp:53,wificonfig:53,wifiencryptiontyp:53,wifista:63,wiki:[22,23,26,49,50,51],wikipedia:[15,22,23,26,49,50,51],wind:55,window_size_byt:2,windup:55,wire:56,wireless:54,wish:[8,10],witdth:[],within:[9,16,18,19,20,40,45,51,60],without:[2,6,8,47,54,56,57],work:[6,8,21,47,57,60],world:8,would:[15,20,59,60],wpa2:53,wpa2_enterpris:53,wpa2_person:53,wpa:53,wpa_enterpris:53,wpa_person:53,wpa_wpa2_person:53,wrap:[5,15,20,35,56],wrapper:[2,4,8,11,12,21,34,38,39,40,41,43,56,58,59],write:[1,8,10,12,13,16,19,21,25,30,35,37,54],write_fn:[1,16,19,30,35,37,54],write_row:11,written:[53,54,59],wrote:[11,21],ws2812_bytes_encoder_config:56,ws2812b:56,www:[22,26,30,53,54],x1:46,x2:46,x:[8,10,13,22,34,35,37,38,46,47,54,57],x_calibr:[10,38],x_mv:[1,10,38],xe:13,xml:[15,28],xml_in:[15,28],xs:13,y1:46,y2:46,y:[10,13,22,34,38,40,43,46,57,62,63],y_calibr:[10,38],y_mv:[1,10,38],ye:[13,63],yellow:[11,40],yet:[6,16,19,29,60],yield:56,you:[2,8,10,11,12,20,21,39,40,43,45,47,54,55,56,57,58,59,62,63],your:[20,40,47],yourself:59,ys:13,z:[],zelda1:11,zelda2:11,zelda:11,zelda_2:11,zero:[6,45,54],zero_electric_offset:[]},titles:["ADC Types","ADS1x15 I2C ADC","Continuous ADC","ADC APIs","Oneshot ADC","BLDC Driver","BLDC Motor","BLDC APIs","Command Line Interface (CLI) APIs","Color APIs","Controller APIs","CSV APIs","Display","Display Drivers","Display APIs","ABI Encoder","AS5600 Magnetic Encoder","Encoder Types","Encoder APIs","MT6701 Magnetic Encoder","Event Manager APIs","File System APIs","Biquad Filter","Butterworth Filter","Filter APIs","Lowpass Filter","Second Order Sections (SoS) Filter","Transfer Function API","FTP Server","FTP APIs","DRV2605 Haptic Motor Driver","Haptics APIs","ESPP Documentation","Input APIs","Touchpad Input","AW9523 I/O Expander","IO Expander APIs","MCP23x17 I/O Expander","Joystick APIs","LED APIs","Logging APIs","Bezier","Fast Math","Gaussian","Math APIs","Range Mapper","Vector2d","Monitoring APIs","Network APIs","Sockets","TCP Sockets","UDP Sockets","NFC APIs","NDEF","ST25DV","PID APIs","Remote Control Transceiver (RMT)","RTSP APIs","Serialization APIs","State Machine APIs","Task APIs","WiFi APIs","WiFi Access Point (AP)","WiFi Station (STA)"],titleterms:{"1":56,"class":[1,2,4,5,6,8,9,10,11,12,13,15,16,19,20,21,22,23,25,26,28,30,34,35,37,38,39,40,41,43,45,46,47,49,50,51,53,54,55,56,57,58,59,60,62,63],"function":[27,28],"long":60,abi:15,abiencod:[],access:62,adc:[0,1,2,3,4,38],ads1x15:1,alpaca:58,analog:10,ap:62,api:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63],as5600:16,aw9523:35,basic:[40,47,55,60],bench:59,bezier:41,biquad:22,bldc:[5,6,7],bound:[],box:13,breath:39,butterworth:23,cli:8,client:[50,51,57],color:9,command:8,complex:[11,55,58,59],config:13,continu:2,control:[10,56],csv:11,data:56,de:58,detent:[],devic:59,digit:10,displai:[12,13,14],document:32,driver:[5,13,30],drv2605:30,encod:[15,16,17,18,19,56],esp32:13,espp:32,event:20,exampl:[1,2,4,8,10,11,13,16,19,20,21,30,35,37,38,39,40,47,50,51,54,55,56,57,58,59,60,62,63],expand:[35,36,37],fast:42,file:[0,1,2,4,5,6,8,9,10,11,12,13,15,16,17,19,20,21,22,23,25,26,27,28,30,34,35,37,38,39,40,41,42,43,45,46,47,49,50,51,53,54,55,56,57,58,59,60,62,63],filesystem:21,filter:[22,23,24,25,26],format:40,ftp:[28,29],gaussian:43,gener:59,get_latest_info:47,haptic:[30,31],header:[0,1,2,4,5,6,8,9,10,11,12,13,15,16,17,19,20,21,22,23,25,26,27,28,30,34,35,37,38,39,40,41,42,43,45,46,47,49,50,51,53,54,55,56,57,58,59,60,62,63],hfsm:59,i2c:[1,10],i:[35,37],ili9341:13,info:[21,60],input:[33,34],interfac:8,io:36,joystick:38,kit:13,led:39,line:8,linear:39,log:40,logger:40,lowpass:25,machin:59,macro:[8,11,58,59],magnet:[16,19],manag:20,mani:60,mapper:45,math:[42,44],mcp23x17:37,monitor:47,motor:[6,30],mt6701:19,multicast:51,ndef:53,network:48,newlib:21,nfc:52,o:[35,37],oneshot:[4,8],order:26,pid:55,point:62,posix:21,rang:45,reader:11,real:59,refer:[0,1,2,4,5,6,8,9,10,11,12,13,15,16,17,19,20,21,22,23,25,26,27,28,30,34,35,37,38,39,40,41,42,43,45,46,47,49,50,51,53,54,55,56,57,58,59,60,62,63],remot:56,request:60,respons:[50,51],rmt:56,rotat:[],rtsp:57,run:[59,60],s3:13,second:26,section:26,serial:58,server:[28,50,51,57],so:26,socket:[49,50,51],st25dv:54,st7789:13,sta:63,state:59,station:63,std:21,stop:60,structur:58,system:21,task:[47,60],tcp:50,test:59,thread:40,touchpad:34,transceiv:56,transfer:27,transmit:56,ttgo:13,type:[0,17],udp:51,union:[53,54],usag:[],vector2d:46,verbos:40,wifi:[61,62,63],writer:11,wrover:13,ws2812:56}}) \ No newline at end of file +Search.setIndex({docnames:["adc/adc_types","adc/ads1x15","adc/continuous_adc","adc/index","adc/oneshot_adc","bldc/bldc_driver","bldc/bldc_motor","bldc/index","cli","color","controller","csv","display/display","display/display_drivers","display/index","encoder/abi_encoder","encoder/as5600","encoder/encoder_types","encoder/index","encoder/mt6701","event_manager","file_system","filters/biquad","filters/butterworth","filters/index","filters/lowpass","filters/sos","filters/transfer_function","ftp/ftp_server","ftp/index","haptics/bldc_haptics","haptics/drv2605","haptics/index","index","input/index","input/touchpad_input","io_expander/aw9523","io_expander/index","io_expander/mcp23x17","joystick","led","logger","math/bezier","math/fast_math","math/gaussian","math/index","math/range_mapper","math/vector2d","monitor","network/index","network/socket","network/tcp_socket","network/udp_socket","nfc/index","nfc/ndef","nfc/st25dv","pid","rmt","rtsp","serialization","state_machine","task","wifi/index","wifi/wifi_ap","wifi/wifi_sta"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.todo":2,sphinx:56},filenames:["adc/adc_types.rst","adc/ads1x15.rst","adc/continuous_adc.rst","adc/index.rst","adc/oneshot_adc.rst","bldc/bldc_driver.rst","bldc/bldc_motor.rst","bldc/index.rst","cli.rst","color.rst","controller.rst","csv.rst","display/display.rst","display/display_drivers.rst","display/index.rst","encoder/abi_encoder.rst","encoder/as5600.rst","encoder/encoder_types.rst","encoder/index.rst","encoder/mt6701.rst","event_manager.rst","file_system.rst","filters/biquad.rst","filters/butterworth.rst","filters/index.rst","filters/lowpass.rst","filters/sos.rst","filters/transfer_function.rst","ftp/ftp_server.rst","ftp/index.rst","haptics/bldc_haptics.rst","haptics/drv2605.rst","haptics/index.rst","index.rst","input/index.rst","input/touchpad_input.rst","io_expander/aw9523.rst","io_expander/index.rst","io_expander/mcp23x17.rst","joystick.rst","led.rst","logger.rst","math/bezier.rst","math/fast_math.rst","math/gaussian.rst","math/index.rst","math/range_mapper.rst","math/vector2d.rst","monitor.rst","network/index.rst","network/socket.rst","network/tcp_socket.rst","network/udp_socket.rst","nfc/index.rst","nfc/ndef.rst","nfc/st25dv.rst","pid.rst","rmt.rst","rtsp.rst","serialization.rst","state_machine.rst","task.rst","wifi/index.rst","wifi/wifi_ap.rst","wifi/wifi_sta.rst"],objects:{"":[[60,0,1,"c.MAGIC_ENUM_NO_CHECK_SUPPORT","MAGIC_ENUM_NO_CHECK_SUPPORT"],[11,0,1,"c.__gnu_linux__","__gnu_linux__"],[59,0,1,"c.__gnu_linux__","__gnu_linux__"],[8,0,1,"c.__linux__","__linux__"],[54,1,1,"_CPPv4N19PhonyNameDueToError3rawE","PhonyNameDueToError::raw"],[55,1,1,"_CPPv4N19PhonyNameDueToError3rawE","PhonyNameDueToError::raw"],[15,2,1,"_CPPv4I_11EncoderTypeEN4espp10AbiEncoderE","espp::AbiEncoder"],[15,3,1,"_CPPv4I_11EncoderTypeEN4espp10AbiEncoder10AbiEncoderERK6Config","espp::AbiEncoder::AbiEncoder"],[15,4,1,"_CPPv4I_11EncoderTypeEN4espp10AbiEncoder10AbiEncoderERK6Config","espp::AbiEncoder::AbiEncoder::config"],[15,5,1,"_CPPv4I_11EncoderTypeEN4espp10AbiEncoder10AbiEncoderERK6Config","espp::AbiEncoder::AbiEncoder::type"],[15,2,1,"_CPPv4N4espp10AbiEncoder6ConfigE","espp::AbiEncoder::Config"],[15,1,1,"_CPPv4N4espp10AbiEncoder6Config6a_gpioE","espp::AbiEncoder::Config::a_gpio"],[15,1,1,"_CPPv4N4espp10AbiEncoder6Config6b_gpioE","espp::AbiEncoder::Config::b_gpio"],[15,1,1,"_CPPv4N4espp10AbiEncoder6Config21counts_per_revolutionE","espp::AbiEncoder::Config::counts_per_revolution"],[15,1,1,"_CPPv4N4espp10AbiEncoder6Config10high_limitE","espp::AbiEncoder::Config::high_limit"],[15,1,1,"_CPPv4N4espp10AbiEncoder6Config6i_gpioE","espp::AbiEncoder::Config::i_gpio"],[15,1,1,"_CPPv4N4espp10AbiEncoder6Config9log_levelE","espp::AbiEncoder::Config::log_level"],[15,1,1,"_CPPv4N4espp10AbiEncoder6Config9low_limitE","espp::AbiEncoder::Config::low_limit"],[15,1,1,"_CPPv4N4espp10AbiEncoder6Config13max_glitch_nsE","espp::AbiEncoder::Config::max_glitch_ns"],[15,5,1,"_CPPv4I_11EncoderTypeEN4espp10AbiEncoderE","espp::AbiEncoder::T"],[15,3,1,"_CPPv4N4espp10AbiEncoder5clearEv","espp::AbiEncoder::clear"],[15,3,1,"_CPPv4N4espp10AbiEncoder9get_countEv","espp::AbiEncoder::get_count"],[15,3,1,"_CPPv4I_11EncoderTypeEN4espp10AbiEncoder11get_degreesENSt9enable_ifIXeq4typeN11EncoderType10ROTATIONALEEfE4typeEv","espp::AbiEncoder::get_degrees"],[15,5,1,"_CPPv4I_11EncoderTypeEN4espp10AbiEncoder11get_degreesENSt9enable_ifIXeq4typeN11EncoderType10ROTATIONALEEfE4typeEv","espp::AbiEncoder::get_degrees::type"],[15,3,1,"_CPPv4I_11EncoderTypeEN4espp10AbiEncoder11get_radiansENSt9enable_ifIXeq4typeN11EncoderType10ROTATIONALEEfE4typeEv","espp::AbiEncoder::get_radians"],[15,5,1,"_CPPv4I_11EncoderTypeEN4espp10AbiEncoder11get_radiansENSt9enable_ifIXeq4typeN11EncoderType10ROTATIONALEEfE4typeEv","espp::AbiEncoder::get_radians::type"],[15,3,1,"_CPPv4I_11EncoderTypeEN4espp10AbiEncoder15get_revolutionsENSt9enable_ifIXeq4typeN11EncoderType10ROTATIONALEEfE4typeEv","espp::AbiEncoder::get_revolutions"],[15,5,1,"_CPPv4I_11EncoderTypeEN4espp10AbiEncoder15get_revolutionsENSt9enable_ifIXeq4typeN11EncoderType10ROTATIONALEEfE4typeEv","espp::AbiEncoder::get_revolutions::type"],[15,3,1,"_CPPv4N4espp10AbiEncoder5startEv","espp::AbiEncoder::start"],[15,3,1,"_CPPv4N4espp10AbiEncoder4stopEv","espp::AbiEncoder::stop"],[15,3,1,"_CPPv4N4espp10AbiEncoderD0Ev","espp::AbiEncoder::~AbiEncoder"],[1,2,1,"_CPPv4N4espp7Ads1x15E","espp::Ads1x15"],[1,2,1,"_CPPv4N4espp7Ads1x1513Ads1015ConfigE","espp::Ads1x15::Ads1015Config"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1015Config14device_addressE","espp::Ads1x15::Ads1015Config::device_address"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1015Config4gainE","espp::Ads1x15::Ads1015Config::gain"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1015Config9log_levelE","espp::Ads1x15::Ads1015Config::log_level"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1015Config4readE","espp::Ads1x15::Ads1015Config::read"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1015Config11sample_rateE","espp::Ads1x15::Ads1015Config::sample_rate"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1015Config5writeE","espp::Ads1x15::Ads1015Config::write"],[1,6,1,"_CPPv4N4espp7Ads1x1511Ads1015RateE","espp::Ads1x15::Ads1015Rate"],[1,7,1,"_CPPv4N4espp7Ads1x1511Ads1015Rate6SPS128E","espp::Ads1x15::Ads1015Rate::SPS128"],[1,7,1,"_CPPv4N4espp7Ads1x1511Ads1015Rate7SPS1600E","espp::Ads1x15::Ads1015Rate::SPS1600"],[1,7,1,"_CPPv4N4espp7Ads1x1511Ads1015Rate7SPS2400E","espp::Ads1x15::Ads1015Rate::SPS2400"],[1,7,1,"_CPPv4N4espp7Ads1x1511Ads1015Rate6SPS250E","espp::Ads1x15::Ads1015Rate::SPS250"],[1,7,1,"_CPPv4N4espp7Ads1x1511Ads1015Rate7SPS3300E","espp::Ads1x15::Ads1015Rate::SPS3300"],[1,7,1,"_CPPv4N4espp7Ads1x1511Ads1015Rate6SPS490E","espp::Ads1x15::Ads1015Rate::SPS490"],[1,7,1,"_CPPv4N4espp7Ads1x1511Ads1015Rate6SPS920E","espp::Ads1x15::Ads1015Rate::SPS920"],[1,2,1,"_CPPv4N4espp7Ads1x1513Ads1115ConfigE","espp::Ads1x15::Ads1115Config"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1115Config14device_addressE","espp::Ads1x15::Ads1115Config::device_address"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1115Config4gainE","espp::Ads1x15::Ads1115Config::gain"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1115Config9log_levelE","espp::Ads1x15::Ads1115Config::log_level"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1115Config4readE","espp::Ads1x15::Ads1115Config::read"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1115Config11sample_rateE","espp::Ads1x15::Ads1115Config::sample_rate"],[1,1,1,"_CPPv4N4espp7Ads1x1513Ads1115Config5writeE","espp::Ads1x15::Ads1115Config::write"],[1,6,1,"_CPPv4N4espp7Ads1x1511Ads1115RateE","espp::Ads1x15::Ads1115Rate"],[1,7,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate6SPS128E","espp::Ads1x15::Ads1115Rate::SPS128"],[1,7,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate5SPS16E","espp::Ads1x15::Ads1115Rate::SPS16"],[1,7,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate6SPS250E","espp::Ads1x15::Ads1115Rate::SPS250"],[1,7,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate5SPS32E","espp::Ads1x15::Ads1115Rate::SPS32"],[1,7,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate6SPS475E","espp::Ads1x15::Ads1115Rate::SPS475"],[1,7,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate5SPS64E","espp::Ads1x15::Ads1115Rate::SPS64"],[1,7,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate4SPS8E","espp::Ads1x15::Ads1115Rate::SPS8"],[1,7,1,"_CPPv4N4espp7Ads1x1511Ads1115Rate6SPS860E","espp::Ads1x15::Ads1115Rate::SPS860"],[1,3,1,"_CPPv4N4espp7Ads1x157Ads1x15ERK13Ads1015Config","espp::Ads1x15::Ads1x15"],[1,3,1,"_CPPv4N4espp7Ads1x157Ads1x15ERK13Ads1115Config","espp::Ads1x15::Ads1x15"],[1,4,1,"_CPPv4N4espp7Ads1x157Ads1x15ERK13Ads1015Config","espp::Ads1x15::Ads1x15::config"],[1,4,1,"_CPPv4N4espp7Ads1x157Ads1x15ERK13Ads1115Config","espp::Ads1x15::Ads1x15::config"],[1,1,1,"_CPPv4N4espp7Ads1x1515DEFAULT_ADDRESSE","espp::Ads1x15::DEFAULT_ADDRESS"],[1,6,1,"_CPPv4N4espp7Ads1x154GainE","espp::Ads1x15::Gain"],[1,7,1,"_CPPv4N4espp7Ads1x154Gain5EIGHTE","espp::Ads1x15::Gain::EIGHT"],[1,7,1,"_CPPv4N4espp7Ads1x154Gain4FOURE","espp::Ads1x15::Gain::FOUR"],[1,7,1,"_CPPv4N4espp7Ads1x154Gain3ONEE","espp::Ads1x15::Gain::ONE"],[1,7,1,"_CPPv4N4espp7Ads1x154Gain7SIXTEENE","espp::Ads1x15::Gain::SIXTEEN"],[1,7,1,"_CPPv4N4espp7Ads1x154Gain3TWOE","espp::Ads1x15::Gain::TWO"],[1,7,1,"_CPPv4N4espp7Ads1x154Gain9TWOTHIRDSE","espp::Ads1x15::Gain::TWOTHIRDS"],[1,8,1,"_CPPv4N4espp7Ads1x157read_fnE","espp::Ads1x15::read_fn"],[1,3,1,"_CPPv4N4espp7Ads1x159sample_mvEi","espp::Ads1x15::sample_mv"],[1,4,1,"_CPPv4N4espp7Ads1x159sample_mvEi","espp::Ads1x15::sample_mv::channel"],[1,8,1,"_CPPv4N4espp7Ads1x158write_fnE","espp::Ads1x15::write_fn"],[16,2,1,"_CPPv4N4espp6As5600E","espp::As5600"],[16,3,1,"_CPPv4N4espp6As56006As5600ERK6Config","espp::As5600::As5600"],[16,4,1,"_CPPv4N4espp6As56006As5600ERK6Config","espp::As5600::As5600::config"],[16,1,1,"_CPPv4N4espp6As560021COUNTS_PER_REVOLUTIONE","espp::As5600::COUNTS_PER_REVOLUTION"],[16,1,1,"_CPPv4N4espp6As560023COUNTS_PER_REVOLUTION_FE","espp::As5600::COUNTS_PER_REVOLUTION_F"],[16,1,1,"_CPPv4N4espp6As560017COUNTS_TO_DEGREESE","espp::As5600::COUNTS_TO_DEGREES"],[16,1,1,"_CPPv4N4espp6As560017COUNTS_TO_RADIANSE","espp::As5600::COUNTS_TO_RADIANS"],[16,2,1,"_CPPv4N4espp6As56006ConfigE","espp::As5600::Config"],[16,1,1,"_CPPv4N4espp6As56006Config14device_addressE","espp::As5600::Config::device_address"],[16,1,1,"_CPPv4N4espp6As56006Config4readE","espp::As5600::Config::read"],[16,1,1,"_CPPv4N4espp6As56006Config13update_periodE","espp::As5600::Config::update_period"],[16,1,1,"_CPPv4N4espp6As56006Config15velocity_filterE","espp::As5600::Config::velocity_filter"],[16,1,1,"_CPPv4N4espp6As56006Config5writeE","espp::As5600::Config::write"],[16,1,1,"_CPPv4N4espp6As560015DEFAULT_ADDRESSE","espp::As5600::DEFAULT_ADDRESS"],[16,1,1,"_CPPv4N4espp6As560018SECONDS_PER_MINUTEE","espp::As5600::SECONDS_PER_MINUTE"],[16,3,1,"_CPPv4NK4espp6As560015get_accumulatorEv","espp::As5600::get_accumulator"],[16,3,1,"_CPPv4NK4espp6As56009get_countEv","espp::As5600::get_count"],[16,3,1,"_CPPv4NK4espp6As560011get_degreesEv","espp::As5600::get_degrees"],[16,3,1,"_CPPv4NK4espp6As560022get_mechanical_degreesEv","espp::As5600::get_mechanical_degrees"],[16,3,1,"_CPPv4NK4espp6As560022get_mechanical_radiansEv","espp::As5600::get_mechanical_radians"],[16,3,1,"_CPPv4NK4espp6As560011get_radiansEv","espp::As5600::get_radians"],[16,3,1,"_CPPv4NK4espp6As56007get_rpmEv","espp::As5600::get_rpm"],[16,3,1,"_CPPv4NK4espp6As560017needs_zero_searchEv","espp::As5600::needs_zero_search"],[16,8,1,"_CPPv4N4espp6As56007read_fnE","espp::As5600::read_fn"],[16,8,1,"_CPPv4N4espp6As560018velocity_filter_fnE","espp::As5600::velocity_filter_fn"],[16,8,1,"_CPPv4N4espp6As56008write_fnE","espp::As5600::write_fn"],[36,2,1,"_CPPv4N4espp6Aw9523E","espp::Aw9523"],[36,3,1,"_CPPv4N4espp6Aw95236Aw9523ERK6Config","espp::Aw9523::Aw9523"],[36,4,1,"_CPPv4N4espp6Aw95236Aw9523ERK6Config","espp::Aw9523::Aw9523::config"],[36,2,1,"_CPPv4N4espp6Aw95236ConfigE","espp::Aw9523::Config"],[36,1,1,"_CPPv4N4espp6Aw95236Config14device_addressE","espp::Aw9523::Config::device_address"],[36,1,1,"_CPPv4N4espp6Aw95236Config9log_levelE","espp::Aw9523::Config::log_level"],[36,1,1,"_CPPv4N4espp6Aw95236Config15max_led_currentE","espp::Aw9523::Config::max_led_current"],[36,1,1,"_CPPv4N4espp6Aw95236Config20output_drive_mode_p0E","espp::Aw9523::Config::output_drive_mode_p0"],[36,1,1,"_CPPv4N4espp6Aw95236Config21port_0_direction_maskE","espp::Aw9523::Config::port_0_direction_mask"],[36,1,1,"_CPPv4N4espp6Aw95236Config21port_0_interrupt_maskE","espp::Aw9523::Config::port_0_interrupt_mask"],[36,1,1,"_CPPv4N4espp6Aw95236Config21port_1_direction_maskE","espp::Aw9523::Config::port_1_direction_mask"],[36,1,1,"_CPPv4N4espp6Aw95236Config21port_1_interrupt_maskE","espp::Aw9523::Config::port_1_interrupt_mask"],[36,1,1,"_CPPv4N4espp6Aw95236Config4readE","espp::Aw9523::Config::read"],[36,1,1,"_CPPv4N4espp6Aw95236Config5writeE","espp::Aw9523::Config::write"],[36,1,1,"_CPPv4N4espp6Aw952315DEFAULT_ADDRESSE","espp::Aw9523::DEFAULT_ADDRESS"],[36,6,1,"_CPPv4N4espp6Aw952313MaxLedCurrentE","espp::Aw9523::MaxLedCurrent"],[36,7,1,"_CPPv4N4espp6Aw952313MaxLedCurrent4IMAXE","espp::Aw9523::MaxLedCurrent::IMAX"],[36,7,1,"_CPPv4N4espp6Aw952313MaxLedCurrent7IMAX_25E","espp::Aw9523::MaxLedCurrent::IMAX_25"],[36,7,1,"_CPPv4N4espp6Aw952313MaxLedCurrent7IMAX_50E","espp::Aw9523::MaxLedCurrent::IMAX_50"],[36,7,1,"_CPPv4N4espp6Aw952313MaxLedCurrent7IMAX_75E","espp::Aw9523::MaxLedCurrent::IMAX_75"],[36,6,1,"_CPPv4N4espp6Aw952317OutputDriveModeP0E","espp::Aw9523::OutputDriveModeP0"],[36,7,1,"_CPPv4N4espp6Aw952317OutputDriveModeP010OPEN_DRAINE","espp::Aw9523::OutputDriveModeP0::OPEN_DRAIN"],[36,7,1,"_CPPv4N4espp6Aw952317OutputDriveModeP09PUSH_PUSHE","espp::Aw9523::OutputDriveModeP0::PUSH_PUSH"],[36,6,1,"_CPPv4N4espp6Aw95234PortE","espp::Aw9523::Port"],[36,7,1,"_CPPv4N4espp6Aw95234Port5PORT0E","espp::Aw9523::Port::PORT0"],[36,7,1,"_CPPv4N4espp6Aw95234Port5PORT1E","espp::Aw9523::Port::PORT1"],[36,3,1,"_CPPv4N4espp6Aw952324configure_global_controlE17OutputDriveModeP013MaxLedCurrent","espp::Aw9523::configure_global_control"],[36,4,1,"_CPPv4N4espp6Aw952324configure_global_controlE17OutputDriveModeP013MaxLedCurrent","espp::Aw9523::configure_global_control::max_led_current"],[36,4,1,"_CPPv4N4espp6Aw952324configure_global_controlE17OutputDriveModeP013MaxLedCurrent","espp::Aw9523::configure_global_control::output_drive_mode_p0"],[36,3,1,"_CPPv4N4espp6Aw952313configure_ledE4Port7uint8_t","espp::Aw9523::configure_led"],[36,3,1,"_CPPv4N4espp6Aw952313configure_ledE7uint8_t7uint8_t","espp::Aw9523::configure_led"],[36,3,1,"_CPPv4N4espp6Aw952313configure_ledE8uint16_t","espp::Aw9523::configure_led"],[36,4,1,"_CPPv4N4espp6Aw952313configure_ledE4Port7uint8_t","espp::Aw9523::configure_led::mask"],[36,4,1,"_CPPv4N4espp6Aw952313configure_ledE8uint16_t","espp::Aw9523::configure_led::mask"],[36,4,1,"_CPPv4N4espp6Aw952313configure_ledE7uint8_t7uint8_t","espp::Aw9523::configure_led::p0"],[36,4,1,"_CPPv4N4espp6Aw952313configure_ledE7uint8_t7uint8_t","espp::Aw9523::configure_led::p1"],[36,4,1,"_CPPv4N4espp6Aw952313configure_ledE4Port7uint8_t","espp::Aw9523::configure_led::port"],[36,3,1,"_CPPv4N4espp6Aw95238get_pinsE4Port","espp::Aw9523::get_pins"],[36,3,1,"_CPPv4N4espp6Aw95238get_pinsEv","espp::Aw9523::get_pins"],[36,4,1,"_CPPv4N4espp6Aw95238get_pinsE4Port","espp::Aw9523::get_pins::port"],[36,3,1,"_CPPv4N4espp6Aw95233ledE8uint16_t7uint8_t","espp::Aw9523::led"],[36,4,1,"_CPPv4N4espp6Aw95233ledE8uint16_t7uint8_t","espp::Aw9523::led::brightness"],[36,4,1,"_CPPv4N4espp6Aw95233ledE8uint16_t7uint8_t","espp::Aw9523::led::pin"],[36,8,1,"_CPPv4N4espp6Aw95237read_fnE","espp::Aw9523::read_fn"],[36,3,1,"_CPPv4N4espp6Aw952313set_directionE4Port7uint8_t","espp::Aw9523::set_direction"],[36,3,1,"_CPPv4N4espp6Aw952313set_directionE7uint8_t7uint8_t","espp::Aw9523::set_direction"],[36,4,1,"_CPPv4N4espp6Aw952313set_directionE4Port7uint8_t","espp::Aw9523::set_direction::mask"],[36,4,1,"_CPPv4N4espp6Aw952313set_directionE7uint8_t7uint8_t","espp::Aw9523::set_direction::p0"],[36,4,1,"_CPPv4N4espp6Aw952313set_directionE7uint8_t7uint8_t","espp::Aw9523::set_direction::p1"],[36,4,1,"_CPPv4N4espp6Aw952313set_directionE4Port7uint8_t","espp::Aw9523::set_direction::port"],[36,3,1,"_CPPv4N4espp6Aw952313set_interruptE4Port7uint8_t","espp::Aw9523::set_interrupt"],[36,3,1,"_CPPv4N4espp6Aw952313set_interruptE7uint8_t7uint8_t","espp::Aw9523::set_interrupt"],[36,4,1,"_CPPv4N4espp6Aw952313set_interruptE4Port7uint8_t","espp::Aw9523::set_interrupt::mask"],[36,4,1,"_CPPv4N4espp6Aw952313set_interruptE7uint8_t7uint8_t","espp::Aw9523::set_interrupt::p0"],[36,4,1,"_CPPv4N4espp6Aw952313set_interruptE7uint8_t7uint8_t","espp::Aw9523::set_interrupt::p1"],[36,4,1,"_CPPv4N4espp6Aw952313set_interruptE4Port7uint8_t","espp::Aw9523::set_interrupt::port"],[36,3,1,"_CPPv4N4espp6Aw95238set_pinsE4Port7uint8_t","espp::Aw9523::set_pins"],[36,3,1,"_CPPv4N4espp6Aw95238set_pinsE7uint8_t7uint8_t","espp::Aw9523::set_pins"],[36,4,1,"_CPPv4N4espp6Aw95238set_pinsE4Port7uint8_t","espp::Aw9523::set_pins::output"],[36,4,1,"_CPPv4N4espp6Aw95238set_pinsE7uint8_t7uint8_t","espp::Aw9523::set_pins::p0"],[36,4,1,"_CPPv4N4espp6Aw95238set_pinsE7uint8_t7uint8_t","espp::Aw9523::set_pins::p1"],[36,4,1,"_CPPv4N4espp6Aw95238set_pinsE4Port7uint8_t","espp::Aw9523::set_pins::port"],[36,8,1,"_CPPv4N4espp6Aw95238write_fnE","espp::Aw9523::write_fn"],[42,2,1,"_CPPv4I0EN4espp6BezierE","espp::Bezier"],[42,3,1,"_CPPv4N4espp6Bezier6BezierERK14WeightedConfig","espp::Bezier::Bezier"],[42,3,1,"_CPPv4N4espp6Bezier6BezierERK6Config","espp::Bezier::Bezier"],[42,4,1,"_CPPv4N4espp6Bezier6BezierERK14WeightedConfig","espp::Bezier::Bezier::config"],[42,4,1,"_CPPv4N4espp6Bezier6BezierERK6Config","espp::Bezier::Bezier::config"],[42,2,1,"_CPPv4N4espp6Bezier6ConfigE","espp::Bezier::Config"],[42,1,1,"_CPPv4N4espp6Bezier6Config14control_pointsE","espp::Bezier::Config::control_points"],[42,5,1,"_CPPv4I0EN4espp6BezierE","espp::Bezier::T"],[42,2,1,"_CPPv4N4espp6Bezier14WeightedConfigE","espp::Bezier::WeightedConfig"],[42,1,1,"_CPPv4N4espp6Bezier14WeightedConfig14control_pointsE","espp::Bezier::WeightedConfig::control_points"],[42,1,1,"_CPPv4N4espp6Bezier14WeightedConfig7weightsE","espp::Bezier::WeightedConfig::weights"],[42,3,1,"_CPPv4NK4espp6Bezier2atEf","espp::Bezier::at"],[42,4,1,"_CPPv4NK4espp6Bezier2atEf","espp::Bezier::at::t"],[42,3,1,"_CPPv4NK4espp6BezierclEf","espp::Bezier::operator()"],[42,4,1,"_CPPv4NK4espp6BezierclEf","espp::Bezier::operator()::t"],[22,2,1,"_CPPv4N4espp15BiquadFilterDf1E","espp::BiquadFilterDf1"],[22,3,1,"_CPPv4N4espp15BiquadFilterDf16updateEf","espp::BiquadFilterDf1::update"],[22,4,1,"_CPPv4N4espp15BiquadFilterDf16updateEf","espp::BiquadFilterDf1::update::input"],[22,2,1,"_CPPv4N4espp15BiquadFilterDf2E","espp::BiquadFilterDf2"],[22,3,1,"_CPPv4N4espp15BiquadFilterDf26updateEKf","espp::BiquadFilterDf2::update"],[22,3,1,"_CPPv4N4espp15BiquadFilterDf26updateEPKfPf6size_t","espp::BiquadFilterDf2::update"],[22,4,1,"_CPPv4N4espp15BiquadFilterDf26updateEKf","espp::BiquadFilterDf2::update::input"],[22,4,1,"_CPPv4N4espp15BiquadFilterDf26updateEPKfPf6size_t","espp::BiquadFilterDf2::update::input"],[22,4,1,"_CPPv4N4espp15BiquadFilterDf26updateEPKfPf6size_t","espp::BiquadFilterDf2::update::length"],[22,4,1,"_CPPv4N4espp15BiquadFilterDf26updateEPKfPf6size_t","espp::BiquadFilterDf2::update::output"],[5,2,1,"_CPPv4N4espp10BldcDriverE","espp::BldcDriver"],[5,3,1,"_CPPv4N4espp10BldcDriver10BldcDriverERK6Config","espp::BldcDriver::BldcDriver"],[5,4,1,"_CPPv4N4espp10BldcDriver10BldcDriverERK6Config","espp::BldcDriver::BldcDriver::config"],[5,2,1,"_CPPv4N4espp10BldcDriver6ConfigE","espp::BldcDriver::Config"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config9dead_zoneE","espp::BldcDriver::Config::dead_zone"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config8gpio_a_hE","espp::BldcDriver::Config::gpio_a_h"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config8gpio_a_lE","espp::BldcDriver::Config::gpio_a_l"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config8gpio_b_hE","espp::BldcDriver::Config::gpio_b_h"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config8gpio_b_lE","espp::BldcDriver::Config::gpio_b_l"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config8gpio_c_hE","espp::BldcDriver::Config::gpio_c_h"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config8gpio_c_lE","espp::BldcDriver::Config::gpio_c_l"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config11gpio_enableE","espp::BldcDriver::Config::gpio_enable"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config10gpio_faultE","espp::BldcDriver::Config::gpio_fault"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config13limit_voltageE","espp::BldcDriver::Config::limit_voltage"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config9log_levelE","espp::BldcDriver::Config::log_level"],[5,1,1,"_CPPv4N4espp10BldcDriver6Config20power_supply_voltageE","espp::BldcDriver::Config::power_supply_voltage"],[5,3,1,"_CPPv4N4espp10BldcDriver15configure_powerEff","espp::BldcDriver::configure_power"],[5,4,1,"_CPPv4N4espp10BldcDriver15configure_powerEff","espp::BldcDriver::configure_power::power_supply_voltage"],[5,4,1,"_CPPv4N4espp10BldcDriver15configure_powerEff","espp::BldcDriver::configure_power::voltage_limit"],[5,3,1,"_CPPv4N4espp10BldcDriver7disableEv","espp::BldcDriver::disable"],[5,3,1,"_CPPv4N4espp10BldcDriver6enableEv","espp::BldcDriver::enable"],[5,3,1,"_CPPv4NK4espp10BldcDriver22get_power_supply_limitEv","espp::BldcDriver::get_power_supply_limit"],[5,3,1,"_CPPv4NK4espp10BldcDriver17get_voltage_limitEv","espp::BldcDriver::get_voltage_limit"],[5,3,1,"_CPPv4NK4espp10BldcDriver10is_enabledEv","espp::BldcDriver::is_enabled"],[5,3,1,"_CPPv4N4espp10BldcDriver10is_faultedEv","espp::BldcDriver::is_faulted"],[5,3,1,"_CPPv4N4espp10BldcDriver15set_phase_stateEiii","espp::BldcDriver::set_phase_state"],[5,4,1,"_CPPv4N4espp10BldcDriver15set_phase_stateEiii","espp::BldcDriver::set_phase_state::state_a"],[5,4,1,"_CPPv4N4espp10BldcDriver15set_phase_stateEiii","espp::BldcDriver::set_phase_state::state_b"],[5,4,1,"_CPPv4N4espp10BldcDriver15set_phase_stateEiii","espp::BldcDriver::set_phase_state::state_c"],[5,3,1,"_CPPv4N4espp10BldcDriver7set_pwmEfff","espp::BldcDriver::set_pwm"],[5,4,1,"_CPPv4N4espp10BldcDriver7set_pwmEfff","espp::BldcDriver::set_pwm::duty_a"],[5,4,1,"_CPPv4N4espp10BldcDriver7set_pwmEfff","espp::BldcDriver::set_pwm::duty_b"],[5,4,1,"_CPPv4N4espp10BldcDriver7set_pwmEfff","espp::BldcDriver::set_pwm::duty_c"],[5,3,1,"_CPPv4N4espp10BldcDriver11set_voltageEfff","espp::BldcDriver::set_voltage"],[5,4,1,"_CPPv4N4espp10BldcDriver11set_voltageEfff","espp::BldcDriver::set_voltage::ua"],[5,4,1,"_CPPv4N4espp10BldcDriver11set_voltageEfff","espp::BldcDriver::set_voltage::ub"],[5,4,1,"_CPPv4N4espp10BldcDriver11set_voltageEfff","espp::BldcDriver::set_voltage::uc"],[5,3,1,"_CPPv4N4espp10BldcDriverD0Ev","espp::BldcDriver::~BldcDriver"],[30,2,1,"_CPPv4I_12MotorConceptEN4espp11BldcHapticsE","espp::BldcHaptics"],[30,3,1,"_CPPv4N4espp11BldcHaptics11BldcHapticsERK6Config","espp::BldcHaptics::BldcHaptics"],[30,4,1,"_CPPv4N4espp11BldcHaptics11BldcHapticsERK6Config","espp::BldcHaptics::BldcHaptics::config"],[30,2,1,"_CPPv4N4espp11BldcHaptics6ConfigE","espp::BldcHaptics::Config"],[30,1,1,"_CPPv4N4espp11BldcHaptics6Config13kd_factor_maxE","espp::BldcHaptics::Config::kd_factor_max"],[30,1,1,"_CPPv4N4espp11BldcHaptics6Config13kd_factor_minE","espp::BldcHaptics::Config::kd_factor_min"],[30,1,1,"_CPPv4N4espp11BldcHaptics6Config9kp_factorE","espp::BldcHaptics::Config::kp_factor"],[30,1,1,"_CPPv4N4espp11BldcHaptics6Config9log_levelE","espp::BldcHaptics::Config::log_level"],[30,1,1,"_CPPv4N4espp11BldcHaptics6Config5motorE","espp::BldcHaptics::Config::motor"],[30,5,1,"_CPPv4I_12MotorConceptEN4espp11BldcHapticsE","espp::BldcHaptics::M"],[30,3,1,"_CPPv4NK4espp11BldcHaptics12get_positionEv","espp::BldcHaptics::get_position"],[30,3,1,"_CPPv4N4espp11BldcHaptics11play_hapticERKN6detail12HapticConfigE","espp::BldcHaptics::play_haptic"],[30,4,1,"_CPPv4N4espp11BldcHaptics11play_hapticERKN6detail12HapticConfigE","espp::BldcHaptics::play_haptic::config"],[30,3,1,"_CPPv4N4espp11BldcHaptics5startEv","espp::BldcHaptics::start"],[30,3,1,"_CPPv4N4espp11BldcHaptics4stopEv","espp::BldcHaptics::stop"],[30,3,1,"_CPPv4N4espp11BldcHaptics20update_detent_configERKN6detail12DetentConfigE","espp::BldcHaptics::update_detent_config"],[30,4,1,"_CPPv4N4espp11BldcHaptics20update_detent_configERKN6detail12DetentConfigE","espp::BldcHaptics::update_detent_config::config"],[6,2,1,"_CPPv4I_13DriverConcept_13SensorConcept_20CurrentSensorConceptEN4espp9BldcMotorE","espp::BldcMotor"],[6,3,1,"_CPPv4N4espp9BldcMotor9BldcMotorERK6Config","espp::BldcMotor::BldcMotor"],[6,4,1,"_CPPv4N4espp9BldcMotor9BldcMotorERK6Config","espp::BldcMotor::BldcMotor::config"],[6,5,1,"_CPPv4I_13DriverConcept_13SensorConcept_20CurrentSensorConceptEN4espp9BldcMotorE","espp::BldcMotor::CS"],[6,2,1,"_CPPv4N4espp9BldcMotor6ConfigE","espp::BldcMotor::Config"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config12angle_filterE","espp::BldcMotor::Config::angle_filter"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config13current_limitE","espp::BldcMotor::Config::current_limit"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config13current_senseE","espp::BldcMotor::Config::current_sense"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config16d_current_filterE","espp::BldcMotor::Config::d_current_filter"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config6driverE","espp::BldcMotor::Config::driver"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config8foc_typeE","espp::BldcMotor::Config::foc_type"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config9kv_ratingE","espp::BldcMotor::Config::kv_rating"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config9log_levelE","espp::BldcMotor::Config::log_level"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config14num_pole_pairsE","espp::BldcMotor::Config::num_pole_pairs"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config16phase_inductanceE","espp::BldcMotor::Config::phase_inductance"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config16phase_resistanceE","espp::BldcMotor::Config::phase_resistance"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config16q_current_filterE","espp::BldcMotor::Config::q_current_filter"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config6sensorE","espp::BldcMotor::Config::sensor"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config17torque_controllerE","espp::BldcMotor::Config::torque_controller"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config15velocity_filterE","espp::BldcMotor::Config::velocity_filter"],[6,1,1,"_CPPv4N4espp9BldcMotor6Config14velocity_limitE","espp::BldcMotor::Config::velocity_limit"],[6,5,1,"_CPPv4I_13DriverConcept_13SensorConcept_20CurrentSensorConceptEN4espp9BldcMotorE","espp::BldcMotor::D"],[6,5,1,"_CPPv4I_13DriverConcept_13SensorConcept_20CurrentSensorConceptEN4espp9BldcMotorE","espp::BldcMotor::S"],[6,3,1,"_CPPv4N4espp9BldcMotor7disableEv","espp::BldcMotor::disable"],[6,3,1,"_CPPv4N4espp9BldcMotor6enableEv","espp::BldcMotor::enable"],[6,8,1,"_CPPv4N4espp9BldcMotor9filter_fnE","espp::BldcMotor::filter_fn"],[6,3,1,"_CPPv4N4espp9BldcMotor20get_electrical_angleEv","espp::BldcMotor::get_electrical_angle"],[6,3,1,"_CPPv4N4espp9BldcMotor15get_shaft_angleEv","espp::BldcMotor::get_shaft_angle"],[6,3,1,"_CPPv4N4espp9BldcMotor18get_shaft_velocityEv","espp::BldcMotor::get_shaft_velocity"],[6,3,1,"_CPPv4N4espp9BldcMotor8loop_focEv","espp::BldcMotor::loop_foc"],[6,3,1,"_CPPv4N4espp9BldcMotor4moveEf","espp::BldcMotor::move"],[6,4,1,"_CPPv4N4espp9BldcMotor4moveEf","espp::BldcMotor::move::new_target"],[6,3,1,"_CPPv4N4espp9BldcMotor23set_motion_control_typeEN6detail17MotionControlTypeE","espp::BldcMotor::set_motion_control_type"],[6,4,1,"_CPPv4N4espp9BldcMotor23set_motion_control_typeEN6detail17MotionControlTypeE","espp::BldcMotor::set_motion_control_type::motion_control_type"],[6,3,1,"_CPPv4N4espp9BldcMotor17set_phase_voltageEfff","espp::BldcMotor::set_phase_voltage"],[6,4,1,"_CPPv4N4espp9BldcMotor17set_phase_voltageEfff","espp::BldcMotor::set_phase_voltage::el_angle"],[6,4,1,"_CPPv4N4espp9BldcMotor17set_phase_voltageEfff","espp::BldcMotor::set_phase_voltage::ud"],[6,4,1,"_CPPv4N4espp9BldcMotor17set_phase_voltageEfff","espp::BldcMotor::set_phase_voltage::uq"],[6,3,1,"_CPPv4N4espp9BldcMotorD0Ev","espp::BldcMotor::~BldcMotor"],[23,2,1,"_CPPv4I_6size_t0EN4espp17ButterworthFilterE","espp::ButterworthFilter"],[23,3,1,"_CPPv4N4espp17ButterworthFilter17ButterworthFilterERK6Config","espp::ButterworthFilter::ButterworthFilter"],[23,4,1,"_CPPv4N4espp17ButterworthFilter17ButterworthFilterERK6Config","espp::ButterworthFilter::ButterworthFilter::config"],[23,2,1,"_CPPv4N4espp17ButterworthFilter6ConfigE","espp::ButterworthFilter::Config"],[23,1,1,"_CPPv4N4espp17ButterworthFilter6Config27normalized_cutoff_frequencyE","espp::ButterworthFilter::Config::normalized_cutoff_frequency"],[23,5,1,"_CPPv4I_6size_t0EN4espp17ButterworthFilterE","espp::ButterworthFilter::Impl"],[23,5,1,"_CPPv4I_6size_t0EN4espp17ButterworthFilterE","espp::ButterworthFilter::ORDER"],[23,3,1,"_CPPv4N4espp17ButterworthFilterclEf","espp::ButterworthFilter::operator()"],[23,4,1,"_CPPv4N4espp17ButterworthFilterclEf","espp::ButterworthFilter::operator()::input"],[23,3,1,"_CPPv4N4espp17ButterworthFilter6updateEf","espp::ButterworthFilter::update"],[23,4,1,"_CPPv4N4espp17ButterworthFilter6updateEf","espp::ButterworthFilter::update::input"],[8,2,1,"_CPPv4N4espp3CliE","espp::Cli"],[8,3,1,"_CPPv4N4espp3Cli3CliERN3cli3CliERNSt7istreamERNSt7ostreamE","espp::Cli::Cli"],[8,4,1,"_CPPv4N4espp3Cli3CliERN3cli3CliERNSt7istreamERNSt7ostreamE","espp::Cli::Cli::_cli"],[8,4,1,"_CPPv4N4espp3Cli3CliERN3cli3CliERNSt7istreamERNSt7ostreamE","espp::Cli::Cli::_in"],[8,4,1,"_CPPv4N4espp3Cli3CliERN3cli3CliERNSt7istreamERNSt7ostreamE","espp::Cli::Cli::_out"],[8,3,1,"_CPPv4NK4espp3Cli15GetInputHistoryEv","espp::Cli::GetInputHistory"],[8,3,1,"_CPPv4N4espp3Cli15SetInputHistoryERKN9LineInput7HistoryE","espp::Cli::SetInputHistory"],[8,4,1,"_CPPv4N4espp3Cli15SetInputHistoryERKN9LineInput7HistoryE","espp::Cli::SetInputHistory::history"],[8,3,1,"_CPPv4N4espp3Cli19SetInputHistorySizeE6size_t","espp::Cli::SetInputHistorySize"],[8,4,1,"_CPPv4N4espp3Cli19SetInputHistorySizeE6size_t","espp::Cli::SetInputHistorySize::history_size"],[8,3,1,"_CPPv4N4espp3Cli5StartEv","espp::Cli::Start"],[8,3,1,"_CPPv4N4espp3Cli22configure_stdin_stdoutEv","espp::Cli::configure_stdin_stdout"],[2,2,1,"_CPPv4N4espp13ContinuousAdcE","espp::ContinuousAdc"],[2,2,1,"_CPPv4N4espp13ContinuousAdc6ConfigE","espp::ContinuousAdc::Config"],[2,1,1,"_CPPv4N4espp13ContinuousAdc6Config8channelsE","espp::ContinuousAdc::Config::channels"],[2,1,1,"_CPPv4N4espp13ContinuousAdc6Config12convert_modeE","espp::ContinuousAdc::Config::convert_mode"],[2,1,1,"_CPPv4N4espp13ContinuousAdc6Config9log_levelE","espp::ContinuousAdc::Config::log_level"],[2,1,1,"_CPPv4N4espp13ContinuousAdc6Config14sample_rate_hzE","espp::ContinuousAdc::Config::sample_rate_hz"],[2,1,1,"_CPPv4N4espp13ContinuousAdc6Config13task_priorityE","espp::ContinuousAdc::Config::task_priority"],[2,1,1,"_CPPv4N4espp13ContinuousAdc6Config17window_size_bytesE","espp::ContinuousAdc::Config::window_size_bytes"],[2,3,1,"_CPPv4N4espp13ContinuousAdc13ContinuousAdcERK6Config","espp::ContinuousAdc::ContinuousAdc"],[2,4,1,"_CPPv4N4espp13ContinuousAdc13ContinuousAdcERK6Config","espp::ContinuousAdc::ContinuousAdc::config"],[2,3,1,"_CPPv4N4espp13ContinuousAdc6get_mvE13adc_channel_t","espp::ContinuousAdc::get_mv"],[2,4,1,"_CPPv4N4espp13ContinuousAdc6get_mvE13adc_channel_t","espp::ContinuousAdc::get_mv::channel"],[2,3,1,"_CPPv4N4espp13ContinuousAdc8get_rateE13adc_channel_t","espp::ContinuousAdc::get_rate"],[2,4,1,"_CPPv4N4espp13ContinuousAdc8get_rateE13adc_channel_t","espp::ContinuousAdc::get_rate::channel"],[2,3,1,"_CPPv4N4espp13ContinuousAdcD0Ev","espp::ContinuousAdc::~ContinuousAdc"],[10,2,1,"_CPPv4N4espp10ControllerE","espp::Controller"],[10,2,1,"_CPPv4N4espp10Controller20AnalogJoystickConfigE","espp::Controller::AnalogJoystickConfig"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig10active_lowE","espp::Controller::AnalogJoystickConfig::active_low"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig6gpio_aE","espp::Controller::AnalogJoystickConfig::gpio_a"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig6gpio_bE","espp::Controller::AnalogJoystickConfig::gpio_b"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig20gpio_joystick_selectE","espp::Controller::AnalogJoystickConfig::gpio_joystick_select"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig11gpio_selectE","espp::Controller::AnalogJoystickConfig::gpio_select"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig10gpio_startE","espp::Controller::AnalogJoystickConfig::gpio_start"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig6gpio_xE","espp::Controller::AnalogJoystickConfig::gpio_x"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig6gpio_yE","espp::Controller::AnalogJoystickConfig::gpio_y"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig15joystick_configE","espp::Controller::AnalogJoystickConfig::joystick_config"],[10,1,1,"_CPPv4N4espp10Controller20AnalogJoystickConfig9log_levelE","espp::Controller::AnalogJoystickConfig::log_level"],[10,6,1,"_CPPv4N4espp10Controller6ButtonE","espp::Controller::Button"],[10,7,1,"_CPPv4N4espp10Controller6Button1AE","espp::Controller::Button::A"],[10,7,1,"_CPPv4N4espp10Controller6Button1BE","espp::Controller::Button::B"],[10,7,1,"_CPPv4N4espp10Controller6Button4DOWNE","espp::Controller::Button::DOWN"],[10,7,1,"_CPPv4N4espp10Controller6Button15JOYSTICK_SELECTE","espp::Controller::Button::JOYSTICK_SELECT"],[10,7,1,"_CPPv4N4espp10Controller6Button11LAST_UNUSEDE","espp::Controller::Button::LAST_UNUSED"],[10,7,1,"_CPPv4N4espp10Controller6Button4LEFTE","espp::Controller::Button::LEFT"],[10,7,1,"_CPPv4N4espp10Controller6Button5RIGHTE","espp::Controller::Button::RIGHT"],[10,7,1,"_CPPv4N4espp10Controller6Button6SELECTE","espp::Controller::Button::SELECT"],[10,7,1,"_CPPv4N4espp10Controller6Button5STARTE","espp::Controller::Button::START"],[10,7,1,"_CPPv4N4espp10Controller6Button2UPE","espp::Controller::Button::UP"],[10,7,1,"_CPPv4N4espp10Controller6Button1XE","espp::Controller::Button::X"],[10,7,1,"_CPPv4N4espp10Controller6Button1YE","espp::Controller::Button::Y"],[10,3,1,"_CPPv4N4espp10Controller10ControllerERK10DualConfig","espp::Controller::Controller"],[10,3,1,"_CPPv4N4espp10Controller10ControllerERK13DigitalConfig","espp::Controller::Controller"],[10,3,1,"_CPPv4N4espp10Controller10ControllerERK20AnalogJoystickConfig","espp::Controller::Controller"],[10,4,1,"_CPPv4N4espp10Controller10ControllerERK10DualConfig","espp::Controller::Controller::config"],[10,4,1,"_CPPv4N4espp10Controller10ControllerERK13DigitalConfig","espp::Controller::Controller::config"],[10,4,1,"_CPPv4N4espp10Controller10ControllerERK20AnalogJoystickConfig","espp::Controller::Controller::config"],[10,2,1,"_CPPv4N4espp10Controller13DigitalConfigE","espp::Controller::DigitalConfig"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig10active_lowE","espp::Controller::DigitalConfig::active_low"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig6gpio_aE","espp::Controller::DigitalConfig::gpio_a"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig6gpio_bE","espp::Controller::DigitalConfig::gpio_b"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig9gpio_downE","espp::Controller::DigitalConfig::gpio_down"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig9gpio_leftE","espp::Controller::DigitalConfig::gpio_left"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig10gpio_rightE","espp::Controller::DigitalConfig::gpio_right"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig11gpio_selectE","espp::Controller::DigitalConfig::gpio_select"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig10gpio_startE","espp::Controller::DigitalConfig::gpio_start"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig7gpio_upE","espp::Controller::DigitalConfig::gpio_up"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig6gpio_xE","espp::Controller::DigitalConfig::gpio_x"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig6gpio_yE","espp::Controller::DigitalConfig::gpio_y"],[10,1,1,"_CPPv4N4espp10Controller13DigitalConfig9log_levelE","espp::Controller::DigitalConfig::log_level"],[10,2,1,"_CPPv4N4espp10Controller10DualConfigE","espp::Controller::DualConfig"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig10active_lowE","espp::Controller::DualConfig::active_low"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig6gpio_aE","espp::Controller::DualConfig::gpio_a"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig6gpio_bE","espp::Controller::DualConfig::gpio_b"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig9gpio_downE","espp::Controller::DualConfig::gpio_down"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig20gpio_joystick_selectE","espp::Controller::DualConfig::gpio_joystick_select"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig9gpio_leftE","espp::Controller::DualConfig::gpio_left"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig10gpio_rightE","espp::Controller::DualConfig::gpio_right"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig11gpio_selectE","espp::Controller::DualConfig::gpio_select"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig10gpio_startE","espp::Controller::DualConfig::gpio_start"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig7gpio_upE","espp::Controller::DualConfig::gpio_up"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig6gpio_xE","espp::Controller::DualConfig::gpio_x"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig6gpio_yE","espp::Controller::DualConfig::gpio_y"],[10,1,1,"_CPPv4N4espp10Controller10DualConfig9log_levelE","espp::Controller::DualConfig::log_level"],[10,2,1,"_CPPv4N4espp10Controller5StateE","espp::Controller::State"],[10,1,1,"_CPPv4N4espp10Controller5State1aE","espp::Controller::State::a"],[10,1,1,"_CPPv4N4espp10Controller5State1bE","espp::Controller::State::b"],[10,1,1,"_CPPv4N4espp10Controller5State4downE","espp::Controller::State::down"],[10,1,1,"_CPPv4N4espp10Controller5State15joystick_selectE","espp::Controller::State::joystick_select"],[10,1,1,"_CPPv4N4espp10Controller5State4leftE","espp::Controller::State::left"],[10,1,1,"_CPPv4N4espp10Controller5State5rightE","espp::Controller::State::right"],[10,1,1,"_CPPv4N4espp10Controller5State6selectE","espp::Controller::State::select"],[10,1,1,"_CPPv4N4espp10Controller5State5startE","espp::Controller::State::start"],[10,1,1,"_CPPv4N4espp10Controller5State2upE","espp::Controller::State::up"],[10,1,1,"_CPPv4N4espp10Controller5State1xE","espp::Controller::State::x"],[10,1,1,"_CPPv4N4espp10Controller5State1yE","espp::Controller::State::y"],[10,3,1,"_CPPv4N4espp10Controller9get_stateEv","espp::Controller::get_state"],[10,3,1,"_CPPv4N4espp10Controller10is_pressedEK6Button","espp::Controller::is_pressed"],[10,4,1,"_CPPv4N4espp10Controller10is_pressedEK6Button","espp::Controller::is_pressed::input"],[10,3,1,"_CPPv4N4espp10Controller6updateEv","espp::Controller::update"],[10,3,1,"_CPPv4N4espp10ControllerD0Ev","espp::Controller::~Controller"],[12,2,1,"_CPPv4N4espp7DisplayE","espp::Display"],[12,2,1,"_CPPv4N4espp7Display16AllocatingConfigE","espp::Display::AllocatingConfig"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig16allocation_flagsE","espp::Display::AllocatingConfig::allocation_flags"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig15double_bufferedE","espp::Display::AllocatingConfig::double_buffered"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig14flush_callbackE","espp::Display::AllocatingConfig::flush_callback"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig6heightE","espp::Display::AllocatingConfig::height"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig9log_levelE","espp::Display::AllocatingConfig::log_level"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig17pixel_buffer_sizeE","espp::Display::AllocatingConfig::pixel_buffer_size"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig8rotationE","espp::Display::AllocatingConfig::rotation"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig25software_rotation_enabledE","espp::Display::AllocatingConfig::software_rotation_enabled"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig13update_periodE","espp::Display::AllocatingConfig::update_period"],[12,1,1,"_CPPv4N4espp7Display16AllocatingConfig5widthE","espp::Display::AllocatingConfig::width"],[12,3,1,"_CPPv4N4espp7Display7DisplayERK16AllocatingConfig","espp::Display::Display"],[12,3,1,"_CPPv4N4espp7Display7DisplayERK19NonAllocatingConfig","espp::Display::Display"],[12,4,1,"_CPPv4N4espp7Display7DisplayERK16AllocatingConfig","espp::Display::Display::config"],[12,4,1,"_CPPv4N4espp7Display7DisplayERK19NonAllocatingConfig","espp::Display::Display::config"],[12,2,1,"_CPPv4N4espp7Display19NonAllocatingConfigE","espp::Display::NonAllocatingConfig"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig14flush_callbackE","espp::Display::NonAllocatingConfig::flush_callback"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig6heightE","espp::Display::NonAllocatingConfig::height"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig9log_levelE","espp::Display::NonAllocatingConfig::log_level"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig17pixel_buffer_sizeE","espp::Display::NonAllocatingConfig::pixel_buffer_size"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig8rotationE","espp::Display::NonAllocatingConfig::rotation"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig25software_rotation_enabledE","espp::Display::NonAllocatingConfig::software_rotation_enabled"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig13update_periodE","espp::Display::NonAllocatingConfig::update_period"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig5vram0E","espp::Display::NonAllocatingConfig::vram0"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig5vram1E","espp::Display::NonAllocatingConfig::vram1"],[12,1,1,"_CPPv4N4espp7Display19NonAllocatingConfig5widthE","espp::Display::NonAllocatingConfig::width"],[12,6,1,"_CPPv4N4espp7Display8RotationE","espp::Display::Rotation"],[12,7,1,"_CPPv4N4espp7Display8Rotation9LANDSCAPEE","espp::Display::Rotation::LANDSCAPE"],[12,7,1,"_CPPv4N4espp7Display8Rotation18LANDSCAPE_INVERTEDE","espp::Display::Rotation::LANDSCAPE_INVERTED"],[12,7,1,"_CPPv4N4espp7Display8Rotation8PORTRAITE","espp::Display::Rotation::PORTRAIT"],[12,7,1,"_CPPv4N4espp7Display8Rotation17PORTRAIT_INVERTEDE","espp::Display::Rotation::PORTRAIT_INVERTED"],[12,6,1,"_CPPv4N4espp7Display6SignalE","espp::Display::Signal"],[12,7,1,"_CPPv4N4espp7Display6Signal5FLUSHE","espp::Display::Signal::FLUSH"],[12,7,1,"_CPPv4N4espp7Display6Signal4NONEE","espp::Display::Signal::NONE"],[12,8,1,"_CPPv4N4espp7Display8flush_fnE","espp::Display::flush_fn"],[12,3,1,"_CPPv4N4espp7Display13force_refreshEv","espp::Display::force_refresh"],[12,3,1,"_CPPv4NK4espp7Display6heightEv","espp::Display::height"],[12,3,1,"_CPPv4N4espp7Display5pauseEv","espp::Display::pause"],[12,3,1,"_CPPv4N4espp7Display6resumeEv","espp::Display::resume"],[12,3,1,"_CPPv4N4espp7Display5vram0Ev","espp::Display::vram0"],[12,3,1,"_CPPv4N4espp7Display5vram1Ev","espp::Display::vram1"],[12,3,1,"_CPPv4N4espp7Display15vram_size_bytesEv","espp::Display::vram_size_bytes"],[12,3,1,"_CPPv4N4espp7Display12vram_size_pxEv","espp::Display::vram_size_px"],[12,3,1,"_CPPv4NK4espp7Display5widthEv","espp::Display::width"],[12,3,1,"_CPPv4N4espp7DisplayD0Ev","espp::Display::~Display"],[31,2,1,"_CPPv4N4espp7Drv2605E","espp::Drv2605"],[31,2,1,"_CPPv4N4espp7Drv26056ConfigE","espp::Drv2605::Config"],[31,1,1,"_CPPv4N4espp7Drv26056Config14device_addressE","espp::Drv2605::Config::device_address"],[31,1,1,"_CPPv4N4espp7Drv26056Config9log_levelE","espp::Drv2605::Config::log_level"],[31,1,1,"_CPPv4N4espp7Drv26056Config10motor_typeE","espp::Drv2605::Config::motor_type"],[31,1,1,"_CPPv4N4espp7Drv26056Config4readE","espp::Drv2605::Config::read"],[31,1,1,"_CPPv4N4espp7Drv26056Config5writeE","espp::Drv2605::Config::write"],[31,3,1,"_CPPv4N4espp7Drv26057Drv2605ERK6Config","espp::Drv2605::Drv2605"],[31,4,1,"_CPPv4N4espp7Drv26057Drv2605ERK6Config","espp::Drv2605::Drv2605::config"],[31,6,1,"_CPPv4N4espp7Drv26054ModeE","espp::Drv2605::Mode"],[31,7,1,"_CPPv4N4espp7Drv26054Mode9AUDIOVIBEE","espp::Drv2605::Mode::AUDIOVIBE"],[31,7,1,"_CPPv4N4espp7Drv26054Mode7AUTOCALE","espp::Drv2605::Mode::AUTOCAL"],[31,7,1,"_CPPv4N4espp7Drv26054Mode7DIAGNOSE","espp::Drv2605::Mode::DIAGNOS"],[31,7,1,"_CPPv4N4espp7Drv26054Mode11EXTTRIGEDGEE","espp::Drv2605::Mode::EXTTRIGEDGE"],[31,7,1,"_CPPv4N4espp7Drv26054Mode10EXTTRIGLVLE","espp::Drv2605::Mode::EXTTRIGLVL"],[31,7,1,"_CPPv4N4espp7Drv26054Mode7INTTRIGE","espp::Drv2605::Mode::INTTRIG"],[31,7,1,"_CPPv4N4espp7Drv26054Mode9PWMANALOGE","espp::Drv2605::Mode::PWMANALOG"],[31,7,1,"_CPPv4N4espp7Drv26054Mode8REALTIMEE","espp::Drv2605::Mode::REALTIME"],[31,6,1,"_CPPv4N4espp7Drv26059MotorTypeE","espp::Drv2605::MotorType"],[31,7,1,"_CPPv4N4espp7Drv26059MotorType3ERME","espp::Drv2605::MotorType::ERM"],[31,7,1,"_CPPv4N4espp7Drv26059MotorType3LRAE","espp::Drv2605::MotorType::LRA"],[31,6,1,"_CPPv4N4espp7Drv26058WaveformE","espp::Drv2605::Waveform"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform12ALERT_1000MSE","espp::Drv2605::Waveform::ALERT_1000MS"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform11ALERT_750MSE","espp::Drv2605::Waveform::ALERT_750MS"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform5BUZZ1E","espp::Drv2605::Waveform::BUZZ1"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform5BUZZ2E","espp::Drv2605::Waveform::BUZZ2"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform5BUZZ3E","espp::Drv2605::Waveform::BUZZ3"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform5BUZZ4E","espp::Drv2605::Waveform::BUZZ4"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform5BUZZ5E","espp::Drv2605::Waveform::BUZZ5"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform12DOUBLE_CLICKE","espp::Drv2605::Waveform::DOUBLE_CLICK"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform3ENDE","espp::Drv2605::Waveform::END"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform3MAXE","espp::Drv2605::Waveform::MAX"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform16PULSING_STRONG_1E","espp::Drv2605::Waveform::PULSING_STRONG_1"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform16PULSING_STRONG_2E","espp::Drv2605::Waveform::PULSING_STRONG_2"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform11SHARP_CLICKE","espp::Drv2605::Waveform::SHARP_CLICK"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform9SOFT_BUMPE","espp::Drv2605::Waveform::SOFT_BUMP"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform9SOFT_FUZZE","espp::Drv2605::Waveform::SOFT_FUZZ"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform11STRONG_BUZZE","espp::Drv2605::Waveform::STRONG_BUZZ"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform12STRONG_CLICKE","espp::Drv2605::Waveform::STRONG_CLICK"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform18TRANSITION_CLICK_1E","espp::Drv2605::Waveform::TRANSITION_CLICK_1"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform16TRANSITION_HUM_1E","espp::Drv2605::Waveform::TRANSITION_HUM_1"],[31,7,1,"_CPPv4N4espp7Drv26058Waveform12TRIPLE_CLICKE","espp::Drv2605::Waveform::TRIPLE_CLICK"],[31,8,1,"_CPPv4N4espp7Drv26057read_fnE","espp::Drv2605::read_fn"],[31,3,1,"_CPPv4N4espp7Drv260514select_libraryE7uint8_t","espp::Drv2605::select_library"],[31,4,1,"_CPPv4N4espp7Drv260514select_libraryE7uint8_t","espp::Drv2605::select_library::lib"],[31,3,1,"_CPPv4N4espp7Drv26058set_modeE4Mode","espp::Drv2605::set_mode"],[31,4,1,"_CPPv4N4espp7Drv26058set_modeE4Mode","espp::Drv2605::set_mode::mode"],[31,3,1,"_CPPv4N4espp7Drv260512set_waveformE7uint8_t8Waveform","espp::Drv2605::set_waveform"],[31,4,1,"_CPPv4N4espp7Drv260512set_waveformE7uint8_t8Waveform","espp::Drv2605::set_waveform::slot"],[31,4,1,"_CPPv4N4espp7Drv260512set_waveformE7uint8_t8Waveform","espp::Drv2605::set_waveform::w"],[31,3,1,"_CPPv4N4espp7Drv26055startEv","espp::Drv2605::start"],[31,3,1,"_CPPv4N4espp7Drv26054stopEv","espp::Drv2605::stop"],[31,8,1,"_CPPv4N4espp7Drv26058write_fnE","espp::Drv2605::write_fn"],[20,2,1,"_CPPv4N4espp12EventManagerE","espp::EventManager"],[20,3,1,"_CPPv4N4espp12EventManager13add_publisherERKNSt6stringERKNSt6stringE","espp::EventManager::add_publisher"],[20,4,1,"_CPPv4N4espp12EventManager13add_publisherERKNSt6stringERKNSt6stringE","espp::EventManager::add_publisher::component"],[20,4,1,"_CPPv4N4espp12EventManager13add_publisherERKNSt6stringERKNSt6stringE","espp::EventManager::add_publisher::topic"],[20,3,1,"_CPPv4N4espp12EventManager14add_subscriberERKNSt6stringERKNSt6stringERK17event_callback_fn","espp::EventManager::add_subscriber"],[20,4,1,"_CPPv4N4espp12EventManager14add_subscriberERKNSt6stringERKNSt6stringERK17event_callback_fn","espp::EventManager::add_subscriber::callback"],[20,4,1,"_CPPv4N4espp12EventManager14add_subscriberERKNSt6stringERKNSt6stringERK17event_callback_fn","espp::EventManager::add_subscriber::component"],[20,4,1,"_CPPv4N4espp12EventManager14add_subscriberERKNSt6stringERKNSt6stringERK17event_callback_fn","espp::EventManager::add_subscriber::topic"],[20,8,1,"_CPPv4N4espp12EventManager17event_callback_fnE","espp::EventManager::event_callback_fn"],[20,3,1,"_CPPv4N4espp12EventManager3getEv","espp::EventManager::get"],[20,3,1,"_CPPv4N4espp12EventManager7publishERKNSt6stringERKNSt6stringE","espp::EventManager::publish"],[20,4,1,"_CPPv4N4espp12EventManager7publishERKNSt6stringERKNSt6stringE","espp::EventManager::publish::data"],[20,4,1,"_CPPv4N4espp12EventManager7publishERKNSt6stringERKNSt6stringE","espp::EventManager::publish::topic"],[20,3,1,"_CPPv4N4espp12EventManager16remove_publisherERKNSt6stringERKNSt6stringE","espp::EventManager::remove_publisher"],[20,4,1,"_CPPv4N4espp12EventManager16remove_publisherERKNSt6stringERKNSt6stringE","espp::EventManager::remove_publisher::component"],[20,4,1,"_CPPv4N4espp12EventManager16remove_publisherERKNSt6stringERKNSt6stringE","espp::EventManager::remove_publisher::topic"],[20,3,1,"_CPPv4N4espp12EventManager17remove_subscriberERKNSt6stringERKNSt6stringE","espp::EventManager::remove_subscriber"],[20,4,1,"_CPPv4N4espp12EventManager17remove_subscriberERKNSt6stringERKNSt6stringE","espp::EventManager::remove_subscriber::component"],[20,4,1,"_CPPv4N4espp12EventManager17remove_subscriberERKNSt6stringERKNSt6stringE","espp::EventManager::remove_subscriber::topic"],[20,3,1,"_CPPv4N4espp12EventManager13set_log_levelEN6Logger9VerbosityE","espp::EventManager::set_log_level"],[20,4,1,"_CPPv4N4espp12EventManager13set_log_levelEN6Logger9VerbosityE","espp::EventManager::set_log_level::level"],[21,2,1,"_CPPv4N4espp10FileSystemE","espp::FileSystem"],[21,2,1,"_CPPv4N4espp10FileSystem10ListConfigE","espp::FileSystem::ListConfig"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig9date_timeE","espp::FileSystem::ListConfig::date_time"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig5groupE","espp::FileSystem::ListConfig::group"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig15number_of_linksE","espp::FileSystem::ListConfig::number_of_links"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig5ownerE","espp::FileSystem::ListConfig::owner"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig11permissionsE","espp::FileSystem::ListConfig::permissions"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig9recursiveE","espp::FileSystem::ListConfig::recursive"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig4sizeE","espp::FileSystem::ListConfig::size"],[21,1,1,"_CPPv4N4espp10FileSystem10ListConfig4typeE","espp::FileSystem::ListConfig::type"],[21,3,1,"_CPPv4N4espp10FileSystem3getEv","espp::FileSystem::get"],[21,3,1,"_CPPv4N4espp10FileSystem14get_free_spaceEv","espp::FileSystem::get_free_space"],[21,3,1,"_CPPv4N4espp10FileSystem15get_mount_pointEv","espp::FileSystem::get_mount_point"],[21,3,1,"_CPPv4N4espp10FileSystem19get_partition_labelEv","espp::FileSystem::get_partition_label"],[21,3,1,"_CPPv4N4espp10FileSystem13get_root_pathEv","espp::FileSystem::get_root_path"],[21,3,1,"_CPPv4N4espp10FileSystem15get_total_spaceEv","espp::FileSystem::get_total_space"],[21,3,1,"_CPPv4N4espp10FileSystem14get_used_spaceEv","espp::FileSystem::get_used_space"],[21,3,1,"_CPPv4N4espp10FileSystem14human_readableE6size_t","espp::FileSystem::human_readable"],[21,4,1,"_CPPv4N4espp10FileSystem14human_readableE6size_t","espp::FileSystem::human_readable::bytes"],[21,3,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt10filesystem4pathERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory"],[21,3,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt6stringERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory"],[21,4,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt10filesystem4pathERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory::config"],[21,4,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt6stringERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory::config"],[21,4,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt10filesystem4pathERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory::path"],[21,4,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt6stringERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory::path"],[21,4,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt10filesystem4pathERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory::prefix"],[21,4,1,"_CPPv4N4espp10FileSystem14list_directoryERKNSt6stringERK10ListConfigRKNSt6stringE","espp::FileSystem::list_directory::prefix"],[21,3,1,"_CPPv4I0EN4espp10FileSystem9to_time_tENSt6time_tE2TP","espp::FileSystem::to_time_t"],[21,5,1,"_CPPv4I0EN4espp10FileSystem9to_time_tENSt6time_tE2TP","espp::FileSystem::to_time_t::TP"],[21,4,1,"_CPPv4I0EN4espp10FileSystem9to_time_tENSt6time_tE2TP","espp::FileSystem::to_time_t::tp"],[28,2,1,"_CPPv4N4espp16FtpClientSessionE","espp::FtpClientSession"],[28,3,1,"_CPPv4NK4espp16FtpClientSession17current_directoryEv","espp::FtpClientSession::current_directory"],[28,3,1,"_CPPv4NK4espp16FtpClientSession2idEv","espp::FtpClientSession::id"],[28,3,1,"_CPPv4NK4espp16FtpClientSession8is_aliveEv","espp::FtpClientSession::is_alive"],[28,3,1,"_CPPv4NK4espp16FtpClientSession12is_connectedEv","espp::FtpClientSession::is_connected"],[28,3,1,"_CPPv4NK4espp16FtpClientSession26is_passive_data_connectionEv","espp::FtpClientSession::is_passive_data_connection"],[28,2,1,"_CPPv4N4espp9FtpServerE","espp::FtpServer"],[28,3,1,"_CPPv4N4espp9FtpServer9FtpServerENSt11string_viewE8uint16_tRKNSt10filesystem4pathE","espp::FtpServer::FtpServer"],[28,4,1,"_CPPv4N4espp9FtpServer9FtpServerENSt11string_viewE8uint16_tRKNSt10filesystem4pathE","espp::FtpServer::FtpServer::ip_address"],[28,4,1,"_CPPv4N4espp9FtpServer9FtpServerENSt11string_viewE8uint16_tRKNSt10filesystem4pathE","espp::FtpServer::FtpServer::port"],[28,4,1,"_CPPv4N4espp9FtpServer9FtpServerENSt11string_viewE8uint16_tRKNSt10filesystem4pathE","espp::FtpServer::FtpServer::root"],[28,3,1,"_CPPv4N4espp9FtpServer5startEv","espp::FtpServer::start"],[28,3,1,"_CPPv4N4espp9FtpServer4stopEv","espp::FtpServer::stop"],[28,3,1,"_CPPv4N4espp9FtpServerD0Ev","espp::FtpServer::~FtpServer"],[44,2,1,"_CPPv4N4espp8GaussianE","espp::Gaussian"],[44,2,1,"_CPPv4N4espp8Gaussian6ConfigE","espp::Gaussian::Config"],[44,1,1,"_CPPv4N4espp8Gaussian6Config5alphaE","espp::Gaussian::Config::alpha"],[44,1,1,"_CPPv4N4espp8Gaussian6Config4betaE","espp::Gaussian::Config::beta"],[44,1,1,"_CPPv4N4espp8Gaussian6Config5gammaE","espp::Gaussian::Config::gamma"],[44,3,1,"_CPPv4N4espp8Gaussian8GaussianERK6Config","espp::Gaussian::Gaussian"],[44,4,1,"_CPPv4N4espp8Gaussian8GaussianERK6Config","espp::Gaussian::Gaussian::config"],[44,3,1,"_CPPv4N4espp8Gaussian5alphaEf","espp::Gaussian::alpha"],[44,3,1,"_CPPv4NK4espp8Gaussian5alphaEv","espp::Gaussian::alpha"],[44,4,1,"_CPPv4N4espp8Gaussian5alphaEf","espp::Gaussian::alpha::a"],[44,3,1,"_CPPv4NK4espp8Gaussian2atEf","espp::Gaussian::at"],[44,4,1,"_CPPv4NK4espp8Gaussian2atEf","espp::Gaussian::at::t"],[44,3,1,"_CPPv4N4espp8Gaussian4betaEf","espp::Gaussian::beta"],[44,3,1,"_CPPv4NK4espp8Gaussian4betaEv","espp::Gaussian::beta"],[44,4,1,"_CPPv4N4espp8Gaussian4betaEf","espp::Gaussian::beta::b"],[44,3,1,"_CPPv4N4espp8Gaussian5gammaEf","espp::Gaussian::gamma"],[44,3,1,"_CPPv4NK4espp8Gaussian5gammaEv","espp::Gaussian::gamma"],[44,4,1,"_CPPv4N4espp8Gaussian5gammaEf","espp::Gaussian::gamma::g"],[44,3,1,"_CPPv4NK4espp8GaussianclEf","espp::Gaussian::operator()"],[44,4,1,"_CPPv4NK4espp8GaussianclEf","espp::Gaussian::operator()::t"],[9,2,1,"_CPPv4N4espp3HsvE","espp::Hsv"],[9,3,1,"_CPPv4N4espp3Hsv3HsvERK3Hsv","espp::Hsv::Hsv"],[9,3,1,"_CPPv4N4espp3Hsv3HsvERK3Rgb","espp::Hsv::Hsv"],[9,3,1,"_CPPv4N4espp3Hsv3HsvERKfRKfRKf","espp::Hsv::Hsv"],[9,4,1,"_CPPv4N4espp3Hsv3HsvERKfRKfRKf","espp::Hsv::Hsv::h"],[9,4,1,"_CPPv4N4espp3Hsv3HsvERK3Hsv","espp::Hsv::Hsv::hsv"],[9,4,1,"_CPPv4N4espp3Hsv3HsvERK3Rgb","espp::Hsv::Hsv::rgb"],[9,4,1,"_CPPv4N4espp3Hsv3HsvERKfRKfRKf","espp::Hsv::Hsv::s"],[9,4,1,"_CPPv4N4espp3Hsv3HsvERKfRKfRKf","espp::Hsv::Hsv::v"],[9,1,1,"_CPPv4N4espp3Hsv1hE","espp::Hsv::h"],[9,3,1,"_CPPv4NK4espp3Hsv3rgbEv","espp::Hsv::rgb"],[9,1,1,"_CPPv4N4espp3Hsv1sE","espp::Hsv::s"],[9,1,1,"_CPPv4N4espp3Hsv1vE","espp::Hsv::v"],[13,2,1,"_CPPv4N4espp7Ili9341E","espp::Ili9341"],[13,3,1,"_CPPv4N4espp7Ili93415clearE6size_t6size_t6size_t6size_t8uint16_t","espp::Ili9341::clear"],[13,4,1,"_CPPv4N4espp7Ili93415clearE6size_t6size_t6size_t6size_t8uint16_t","espp::Ili9341::clear::color"],[13,4,1,"_CPPv4N4espp7Ili93415clearE6size_t6size_t6size_t6size_t8uint16_t","espp::Ili9341::clear::height"],[13,4,1,"_CPPv4N4espp7Ili93415clearE6size_t6size_t6size_t6size_t8uint16_t","espp::Ili9341::clear::width"],[13,4,1,"_CPPv4N4espp7Ili93415clearE6size_t6size_t6size_t6size_t8uint16_t","espp::Ili9341::clear::x"],[13,4,1,"_CPPv4N4espp7Ili93415clearE6size_t6size_t6size_t6size_t8uint16_t","espp::Ili9341::clear::y"],[13,3,1,"_CPPv4N4espp7Ili93414fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::Ili9341::fill"],[13,4,1,"_CPPv4N4espp7Ili93414fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::Ili9341::fill::area"],[13,4,1,"_CPPv4N4espp7Ili93414fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::Ili9341::fill::color_map"],[13,4,1,"_CPPv4N4espp7Ili93414fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::Ili9341::fill::drv"],[13,4,1,"_CPPv4N4espp7Ili93414fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::Ili9341::fill::flags"],[13,3,1,"_CPPv4N4espp7Ili93415flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::Ili9341::flush"],[13,4,1,"_CPPv4N4espp7Ili93415flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::Ili9341::flush::area"],[13,4,1,"_CPPv4N4espp7Ili93415flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::Ili9341::flush::color_map"],[13,4,1,"_CPPv4N4espp7Ili93415flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::Ili9341::flush::drv"],[13,3,1,"_CPPv4N4espp7Ili934110get_offsetERiRi","espp::Ili9341::get_offset"],[13,4,1,"_CPPv4N4espp7Ili934110get_offsetERiRi","espp::Ili9341::get_offset::x"],[13,4,1,"_CPPv4N4espp7Ili934110get_offsetERiRi","espp::Ili9341::get_offset::y"],[13,3,1,"_CPPv4N4espp7Ili934110initializeERKN15display_drivers6ConfigE","espp::Ili9341::initialize"],[13,4,1,"_CPPv4N4espp7Ili934110initializeERKN15display_drivers6ConfigE","espp::Ili9341::initialize::config"],[13,3,1,"_CPPv4N4espp7Ili934112send_commandE7uint8_t","espp::Ili9341::send_command"],[13,4,1,"_CPPv4N4espp7Ili934112send_commandE7uint8_t","espp::Ili9341::send_command::command"],[13,3,1,"_CPPv4N4espp7Ili93419send_dataEPK7uint8_t6size_t8uint32_t","espp::Ili9341::send_data"],[13,4,1,"_CPPv4N4espp7Ili93419send_dataEPK7uint8_t6size_t8uint32_t","espp::Ili9341::send_data::data"],[13,4,1,"_CPPv4N4espp7Ili93419send_dataEPK7uint8_t6size_t8uint32_t","espp::Ili9341::send_data::flags"],[13,4,1,"_CPPv4N4espp7Ili93419send_dataEPK7uint8_t6size_t8uint32_t","espp::Ili9341::send_data::length"],[13,3,1,"_CPPv4N4espp7Ili934116set_drawing_areaE6size_t6size_t6size_t6size_t","espp::Ili9341::set_drawing_area"],[13,3,1,"_CPPv4N4espp7Ili934116set_drawing_areaEPK9lv_area_t","espp::Ili9341::set_drawing_area"],[13,4,1,"_CPPv4N4espp7Ili934116set_drawing_areaEPK9lv_area_t","espp::Ili9341::set_drawing_area::area"],[13,4,1,"_CPPv4N4espp7Ili934116set_drawing_areaE6size_t6size_t6size_t6size_t","espp::Ili9341::set_drawing_area::xe"],[13,4,1,"_CPPv4N4espp7Ili934116set_drawing_areaE6size_t6size_t6size_t6size_t","espp::Ili9341::set_drawing_area::xs"],[13,4,1,"_CPPv4N4espp7Ili934116set_drawing_areaE6size_t6size_t6size_t6size_t","espp::Ili9341::set_drawing_area::ye"],[13,4,1,"_CPPv4N4espp7Ili934116set_drawing_areaE6size_t6size_t6size_t6size_t","espp::Ili9341::set_drawing_area::ys"],[13,3,1,"_CPPv4N4espp7Ili934110set_offsetEii","espp::Ili9341::set_offset"],[13,4,1,"_CPPv4N4espp7Ili934110set_offsetEii","espp::Ili9341::set_offset::x"],[13,4,1,"_CPPv4N4espp7Ili934110set_offsetEii","espp::Ili9341::set_offset::y"],[39,2,1,"_CPPv4N4espp8JoystickE","espp::Joystick"],[39,2,1,"_CPPv4N4espp8Joystick6ConfigE","espp::Joystick::Config"],[39,1,1,"_CPPv4N4espp8Joystick6Config8deadzoneE","espp::Joystick::Config::deadzone"],[39,1,1,"_CPPv4N4espp8Joystick6Config15deadzone_radiusE","espp::Joystick::Config::deadzone_radius"],[39,1,1,"_CPPv4N4espp8Joystick6Config10get_valuesE","espp::Joystick::Config::get_values"],[39,1,1,"_CPPv4N4espp8Joystick6Config9log_levelE","espp::Joystick::Config::log_level"],[39,1,1,"_CPPv4N4espp8Joystick6Config13x_calibrationE","espp::Joystick::Config::x_calibration"],[39,1,1,"_CPPv4N4espp8Joystick6Config13y_calibrationE","espp::Joystick::Config::y_calibration"],[39,6,1,"_CPPv4N4espp8Joystick8DeadzoneE","espp::Joystick::Deadzone"],[39,7,1,"_CPPv4N4espp8Joystick8Deadzone8CIRCULARE","espp::Joystick::Deadzone::CIRCULAR"],[39,7,1,"_CPPv4N4espp8Joystick8Deadzone11RECTANGULARE","espp::Joystick::Deadzone::RECTANGULAR"],[39,3,1,"_CPPv4N4espp8Joystick8JoystickERK6Config","espp::Joystick::Joystick"],[39,4,1,"_CPPv4N4espp8Joystick8JoystickERK6Config","espp::Joystick::Joystick::config"],[39,8,1,"_CPPv4N4espp8Joystick13get_values_fnE","espp::Joystick::get_values_fn"],[39,3,1,"_CPPv4NK4espp8Joystick8positionEv","espp::Joystick::position"],[39,3,1,"_CPPv4NK4espp8Joystick3rawEv","espp::Joystick::raw"],[39,3,1,"_CPPv4N4espp8Joystick15set_calibrationERKN16FloatRangeMapper6ConfigERKN16FloatRangeMapper6ConfigE","espp::Joystick::set_calibration"],[39,4,1,"_CPPv4N4espp8Joystick15set_calibrationERKN16FloatRangeMapper6ConfigERKN16FloatRangeMapper6ConfigE","espp::Joystick::set_calibration::x_calibration"],[39,4,1,"_CPPv4N4espp8Joystick15set_calibrationERKN16FloatRangeMapper6ConfigERKN16FloatRangeMapper6ConfigE","espp::Joystick::set_calibration::y_calibration"],[39,3,1,"_CPPv4N4espp8Joystick12set_deadzoneE8Deadzonef","espp::Joystick::set_deadzone"],[39,4,1,"_CPPv4N4espp8Joystick12set_deadzoneE8Deadzonef","espp::Joystick::set_deadzone::deadzone"],[39,4,1,"_CPPv4N4espp8Joystick12set_deadzoneE8Deadzonef","espp::Joystick::set_deadzone::radius"],[39,3,1,"_CPPv4N4espp8Joystick6updateEv","espp::Joystick::update"],[39,3,1,"_CPPv4NK4espp8Joystick1xEv","espp::Joystick::x"],[39,3,1,"_CPPv4NK4espp8Joystick1yEv","espp::Joystick::y"],[58,2,1,"_CPPv4N4espp9JpegFrameE","espp::JpegFrame"],[58,3,1,"_CPPv4N4espp9JpegFrame9JpegFrameEPKc6size_t","espp::JpegFrame::JpegFrame"],[58,3,1,"_CPPv4N4espp9JpegFrame9JpegFrameERK13RtpJpegPacket","espp::JpegFrame::JpegFrame"],[58,4,1,"_CPPv4N4espp9JpegFrame9JpegFrameEPKc6size_t","espp::JpegFrame::JpegFrame::data"],[58,4,1,"_CPPv4N4espp9JpegFrame9JpegFrameERK13RtpJpegPacket","espp::JpegFrame::JpegFrame::packet"],[58,4,1,"_CPPv4N4espp9JpegFrame9JpegFrameEPKc6size_t","espp::JpegFrame::JpegFrame::size"],[58,3,1,"_CPPv4N4espp9JpegFrame8add_scanERK13RtpJpegPacket","espp::JpegFrame::add_scan"],[58,4,1,"_CPPv4N4espp9JpegFrame8add_scanERK13RtpJpegPacket","espp::JpegFrame::add_scan::packet"],[58,3,1,"_CPPv4N4espp9JpegFrame6appendERK13RtpJpegPacket","espp::JpegFrame::append"],[58,4,1,"_CPPv4N4espp9JpegFrame6appendERK13RtpJpegPacket","espp::JpegFrame::append::packet"],[58,3,1,"_CPPv4NK4espp9JpegFrame8get_dataEv","espp::JpegFrame::get_data"],[58,3,1,"_CPPv4NK4espp9JpegFrame10get_headerEv","espp::JpegFrame::get_header"],[58,3,1,"_CPPv4NK4espp9JpegFrame10get_heightEv","espp::JpegFrame::get_height"],[58,3,1,"_CPPv4NK4espp9JpegFrame13get_scan_dataEv","espp::JpegFrame::get_scan_data"],[58,3,1,"_CPPv4NK4espp9JpegFrame9get_widthEv","espp::JpegFrame::get_width"],[58,3,1,"_CPPv4NK4espp9JpegFrame11is_completeEv","espp::JpegFrame::is_complete"],[58,2,1,"_CPPv4N4espp10JpegHeaderE","espp::JpegHeader"],[58,3,1,"_CPPv4N4espp10JpegHeader10JpegHeaderENSt11string_viewE","espp::JpegHeader::JpegHeader"],[58,3,1,"_CPPv4N4espp10JpegHeader10JpegHeaderEiiNSt11string_viewENSt11string_viewE","espp::JpegHeader::JpegHeader"],[58,4,1,"_CPPv4N4espp10JpegHeader10JpegHeaderENSt11string_viewE","espp::JpegHeader::JpegHeader::data"],[58,4,1,"_CPPv4N4espp10JpegHeader10JpegHeaderEiiNSt11string_viewENSt11string_viewE","espp::JpegHeader::JpegHeader::height"],[58,4,1,"_CPPv4N4espp10JpegHeader10JpegHeaderEiiNSt11string_viewENSt11string_viewE","espp::JpegHeader::JpegHeader::q0_table"],[58,4,1,"_CPPv4N4espp10JpegHeader10JpegHeaderEiiNSt11string_viewENSt11string_viewE","espp::JpegHeader::JpegHeader::q1_table"],[58,4,1,"_CPPv4N4espp10JpegHeader10JpegHeaderEiiNSt11string_viewENSt11string_viewE","espp::JpegHeader::JpegHeader::width"],[58,3,1,"_CPPv4NK4espp10JpegHeader8get_dataEv","espp::JpegHeader::get_data"],[58,3,1,"_CPPv4NK4espp10JpegHeader10get_heightEv","espp::JpegHeader::get_height"],[58,3,1,"_CPPv4NK4espp10JpegHeader22get_quantization_tableEi","espp::JpegHeader::get_quantization_table"],[58,4,1,"_CPPv4NK4espp10JpegHeader22get_quantization_tableEi","espp::JpegHeader::get_quantization_table::index"],[58,3,1,"_CPPv4NK4espp10JpegHeader9get_widthEv","espp::JpegHeader::get_width"],[40,2,1,"_CPPv4N4espp3LedE","espp::Led"],[40,2,1,"_CPPv4N4espp3Led13ChannelConfigE","espp::Led::ChannelConfig"],[40,1,1,"_CPPv4N4espp3Led13ChannelConfig7channelE","espp::Led::ChannelConfig::channel"],[40,1,1,"_CPPv4N4espp3Led13ChannelConfig4dutyE","espp::Led::ChannelConfig::duty"],[40,1,1,"_CPPv4N4espp3Led13ChannelConfig4gpioE","espp::Led::ChannelConfig::gpio"],[40,1,1,"_CPPv4N4espp3Led13ChannelConfig13output_invertE","espp::Led::ChannelConfig::output_invert"],[40,1,1,"_CPPv4N4espp3Led13ChannelConfig10speed_modeE","espp::Led::ChannelConfig::speed_mode"],[40,1,1,"_CPPv4N4espp3Led13ChannelConfig5timerE","espp::Led::ChannelConfig::timer"],[40,2,1,"_CPPv4N4espp3Led6ConfigE","espp::Led::Config"],[40,1,1,"_CPPv4N4espp3Led6Config8channelsE","espp::Led::Config::channels"],[40,1,1,"_CPPv4N4espp3Led6Config15duty_resolutionE","espp::Led::Config::duty_resolution"],[40,1,1,"_CPPv4N4espp3Led6Config12frequency_hzE","espp::Led::Config::frequency_hz"],[40,1,1,"_CPPv4N4espp3Led6Config9log_levelE","espp::Led::Config::log_level"],[40,1,1,"_CPPv4N4espp3Led6Config10speed_modeE","espp::Led::Config::speed_mode"],[40,1,1,"_CPPv4N4espp3Led6Config5timerE","espp::Led::Config::timer"],[40,3,1,"_CPPv4N4espp3Led3LedERK6Config","espp::Led::Led"],[40,4,1,"_CPPv4N4espp3Led3LedERK6Config","espp::Led::Led::config"],[40,3,1,"_CPPv4N4espp3Led10can_changeE14ledc_channel_t","espp::Led::can_change"],[40,4,1,"_CPPv4N4espp3Led10can_changeE14ledc_channel_t","espp::Led::can_change::channel"],[40,3,1,"_CPPv4N4espp3Led8get_dutyE14ledc_channel_t","espp::Led::get_duty"],[40,4,1,"_CPPv4N4espp3Led8get_dutyE14ledc_channel_t","espp::Led::get_duty::channel"],[40,3,1,"_CPPv4N4espp3Led8set_dutyE14ledc_channel_tf","espp::Led::set_duty"],[40,4,1,"_CPPv4N4espp3Led8set_dutyE14ledc_channel_tf","espp::Led::set_duty::channel"],[40,4,1,"_CPPv4N4espp3Led8set_dutyE14ledc_channel_tf","espp::Led::set_duty::duty_percent"],[40,3,1,"_CPPv4N4espp3Led18set_fade_with_timeE14ledc_channel_tf8uint32_t","espp::Led::set_fade_with_time"],[40,4,1,"_CPPv4N4espp3Led18set_fade_with_timeE14ledc_channel_tf8uint32_t","espp::Led::set_fade_with_time::channel"],[40,4,1,"_CPPv4N4espp3Led18set_fade_with_timeE14ledc_channel_tf8uint32_t","espp::Led::set_fade_with_time::duty_percent"],[40,4,1,"_CPPv4N4espp3Led18set_fade_with_timeE14ledc_channel_tf8uint32_t","espp::Led::set_fade_with_time::fade_time_ms"],[40,3,1,"_CPPv4N4espp3LedD0Ev","espp::Led::~Led"],[8,2,1,"_CPPv4N4espp9LineInputE","espp::LineInput"],[8,8,1,"_CPPv4N4espp9LineInput7HistoryE","espp::LineInput::History"],[8,3,1,"_CPPv4N4espp9LineInput9LineInputEv","espp::LineInput::LineInput"],[8,3,1,"_CPPv4NK4espp9LineInput11get_historyEv","espp::LineInput::get_history"],[8,3,1,"_CPPv4N4espp9LineInput14get_user_inputERNSt7istreamE9prompt_fn","espp::LineInput::get_user_input"],[8,4,1,"_CPPv4N4espp9LineInput14get_user_inputERNSt7istreamE9prompt_fn","espp::LineInput::get_user_input::is"],[8,4,1,"_CPPv4N4espp9LineInput14get_user_inputERNSt7istreamE9prompt_fn","espp::LineInput::get_user_input::prompt"],[8,8,1,"_CPPv4N4espp9LineInput9prompt_fnE","espp::LineInput::prompt_fn"],[8,3,1,"_CPPv4N4espp9LineInput11set_historyERK7History","espp::LineInput::set_history"],[8,4,1,"_CPPv4N4espp9LineInput11set_historyERK7History","espp::LineInput::set_history::history"],[8,3,1,"_CPPv4N4espp9LineInput16set_history_sizeE6size_t","espp::LineInput::set_history_size"],[8,4,1,"_CPPv4N4espp9LineInput16set_history_sizeE6size_t","espp::LineInput::set_history_size::new_size"],[8,3,1,"_CPPv4N4espp9LineInputD0Ev","espp::LineInput::~LineInput"],[41,2,1,"_CPPv4N4espp6LoggerE","espp::Logger"],[41,2,1,"_CPPv4N4espp6Logger6ConfigE","espp::Logger::Config"],[41,1,1,"_CPPv4N4espp6Logger6Config5levelE","espp::Logger::Config::level"],[41,1,1,"_CPPv4N4espp6Logger6Config10rate_limitE","espp::Logger::Config::rate_limit"],[41,1,1,"_CPPv4N4espp6Logger6Config3tagE","espp::Logger::Config::tag"],[41,3,1,"_CPPv4N4espp6Logger6LoggerERK6Config","espp::Logger::Logger"],[41,4,1,"_CPPv4N4espp6Logger6LoggerERK6Config","espp::Logger::Logger::config"],[41,6,1,"_CPPv4N4espp6Logger9VerbosityE","espp::Logger::Verbosity"],[41,7,1,"_CPPv4N4espp6Logger9Verbosity5DEBUGE","espp::Logger::Verbosity::DEBUG"],[41,7,1,"_CPPv4N4espp6Logger9Verbosity5ERRORE","espp::Logger::Verbosity::ERROR"],[41,7,1,"_CPPv4N4espp6Logger9Verbosity4INFOE","espp::Logger::Verbosity::INFO"],[41,7,1,"_CPPv4N4espp6Logger9Verbosity4NONEE","espp::Logger::Verbosity::NONE"],[41,7,1,"_CPPv4N4espp6Logger9Verbosity4WARNE","espp::Logger::Verbosity::WARN"],[41,3,1,"_CPPv4IDpEN4espp6Logger5debugEvNSt11string_viewEDpRR4Args","espp::Logger::debug"],[41,5,1,"_CPPv4IDpEN4espp6Logger5debugEvNSt11string_viewEDpRR4Args","espp::Logger::debug::Args"],[41,4,1,"_CPPv4IDpEN4espp6Logger5debugEvNSt11string_viewEDpRR4Args","espp::Logger::debug::args"],[41,4,1,"_CPPv4IDpEN4espp6Logger5debugEvNSt11string_viewEDpRR4Args","espp::Logger::debug::rt_fmt_str"],[41,3,1,"_CPPv4IDpEN4espp6Logger18debug_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::debug_rate_limited"],[41,5,1,"_CPPv4IDpEN4espp6Logger18debug_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::debug_rate_limited::Args"],[41,4,1,"_CPPv4IDpEN4espp6Logger18debug_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::debug_rate_limited::args"],[41,4,1,"_CPPv4IDpEN4espp6Logger18debug_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::debug_rate_limited::rt_fmt_str"],[41,3,1,"_CPPv4IDpEN4espp6Logger5errorEvNSt11string_viewEDpRR4Args","espp::Logger::error"],[41,5,1,"_CPPv4IDpEN4espp6Logger5errorEvNSt11string_viewEDpRR4Args","espp::Logger::error::Args"],[41,4,1,"_CPPv4IDpEN4espp6Logger5errorEvNSt11string_viewEDpRR4Args","espp::Logger::error::args"],[41,4,1,"_CPPv4IDpEN4espp6Logger5errorEvNSt11string_viewEDpRR4Args","espp::Logger::error::rt_fmt_str"],[41,3,1,"_CPPv4IDpEN4espp6Logger18error_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::error_rate_limited"],[41,5,1,"_CPPv4IDpEN4espp6Logger18error_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::error_rate_limited::Args"],[41,4,1,"_CPPv4IDpEN4espp6Logger18error_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::error_rate_limited::args"],[41,4,1,"_CPPv4IDpEN4espp6Logger18error_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::error_rate_limited::rt_fmt_str"],[41,3,1,"_CPPv4IDpEN4espp6Logger6formatENSt6stringENSt11string_viewEDpRR4Args","espp::Logger::format"],[41,5,1,"_CPPv4IDpEN4espp6Logger6formatENSt6stringENSt11string_viewEDpRR4Args","espp::Logger::format::Args"],[41,4,1,"_CPPv4IDpEN4espp6Logger6formatENSt6stringENSt11string_viewEDpRR4Args","espp::Logger::format::args"],[41,4,1,"_CPPv4IDpEN4espp6Logger6formatENSt6stringENSt11string_viewEDpRR4Args","espp::Logger::format::rt_fmt_str"],[41,3,1,"_CPPv4IDpEN4espp6Logger4infoEvNSt11string_viewEDpRR4Args","espp::Logger::info"],[41,5,1,"_CPPv4IDpEN4espp6Logger4infoEvNSt11string_viewEDpRR4Args","espp::Logger::info::Args"],[41,4,1,"_CPPv4IDpEN4espp6Logger4infoEvNSt11string_viewEDpRR4Args","espp::Logger::info::args"],[41,4,1,"_CPPv4IDpEN4espp6Logger4infoEvNSt11string_viewEDpRR4Args","espp::Logger::info::rt_fmt_str"],[41,3,1,"_CPPv4IDpEN4espp6Logger17info_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::info_rate_limited"],[41,5,1,"_CPPv4IDpEN4espp6Logger17info_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::info_rate_limited::Args"],[41,4,1,"_CPPv4IDpEN4espp6Logger17info_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::info_rate_limited::args"],[41,4,1,"_CPPv4IDpEN4espp6Logger17info_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::info_rate_limited::rt_fmt_str"],[41,3,1,"_CPPv4N4espp6Logger13set_verbosityEK9Verbosity","espp::Logger::set_verbosity"],[41,4,1,"_CPPv4N4espp6Logger13set_verbosityEK9Verbosity","espp::Logger::set_verbosity::level"],[41,3,1,"_CPPv4IDpEN4espp6Logger4warnEvNSt11string_viewEDpRR4Args","espp::Logger::warn"],[41,5,1,"_CPPv4IDpEN4espp6Logger4warnEvNSt11string_viewEDpRR4Args","espp::Logger::warn::Args"],[41,4,1,"_CPPv4IDpEN4espp6Logger4warnEvNSt11string_viewEDpRR4Args","espp::Logger::warn::args"],[41,4,1,"_CPPv4IDpEN4espp6Logger4warnEvNSt11string_viewEDpRR4Args","espp::Logger::warn::rt_fmt_str"],[41,3,1,"_CPPv4IDpEN4espp6Logger17warn_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::warn_rate_limited"],[41,5,1,"_CPPv4IDpEN4espp6Logger17warn_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::warn_rate_limited::Args"],[41,4,1,"_CPPv4IDpEN4espp6Logger17warn_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::warn_rate_limited::args"],[41,4,1,"_CPPv4IDpEN4espp6Logger17warn_rate_limitedEvNSt11string_viewEDpRR4Args","espp::Logger::warn_rate_limited::rt_fmt_str"],[25,2,1,"_CPPv4N4espp13LowpassFilterE","espp::LowpassFilter"],[25,2,1,"_CPPv4N4espp13LowpassFilter6ConfigE","espp::LowpassFilter::Config"],[25,1,1,"_CPPv4N4espp13LowpassFilter6Config27normalized_cutoff_frequencyE","espp::LowpassFilter::Config::normalized_cutoff_frequency"],[25,1,1,"_CPPv4N4espp13LowpassFilter6Config8q_factorE","espp::LowpassFilter::Config::q_factor"],[25,3,1,"_CPPv4N4espp13LowpassFilter13LowpassFilterERK6Config","espp::LowpassFilter::LowpassFilter"],[25,4,1,"_CPPv4N4espp13LowpassFilter13LowpassFilterERK6Config","espp::LowpassFilter::LowpassFilter::config"],[25,3,1,"_CPPv4N4espp13LowpassFilterclEf","espp::LowpassFilter::operator()"],[25,4,1,"_CPPv4N4espp13LowpassFilterclEf","espp::LowpassFilter::operator()::input"],[25,3,1,"_CPPv4N4espp13LowpassFilter6updateEKf","espp::LowpassFilter::update"],[25,3,1,"_CPPv4N4espp13LowpassFilter6updateEPKfPf6size_t","espp::LowpassFilter::update"],[25,4,1,"_CPPv4N4espp13LowpassFilter6updateEKf","espp::LowpassFilter::update::input"],[25,4,1,"_CPPv4N4espp13LowpassFilter6updateEPKfPf6size_t","espp::LowpassFilter::update::input"],[25,4,1,"_CPPv4N4espp13LowpassFilter6updateEPKfPf6size_t","espp::LowpassFilter::update::length"],[25,4,1,"_CPPv4N4espp13LowpassFilter6updateEPKfPf6size_t","espp::LowpassFilter::update::output"],[38,2,1,"_CPPv4N4espp8Mcp23x17E","espp::Mcp23x17"],[38,2,1,"_CPPv4N4espp8Mcp23x176ConfigE","espp::Mcp23x17::Config"],[38,1,1,"_CPPv4N4espp8Mcp23x176Config14device_addressE","espp::Mcp23x17::Config::device_address"],[38,1,1,"_CPPv4N4espp8Mcp23x176Config9log_levelE","espp::Mcp23x17::Config::log_level"],[38,1,1,"_CPPv4N4espp8Mcp23x176Config21port_a_direction_maskE","espp::Mcp23x17::Config::port_a_direction_mask"],[38,1,1,"_CPPv4N4espp8Mcp23x176Config21port_a_interrupt_maskE","espp::Mcp23x17::Config::port_a_interrupt_mask"],[38,1,1,"_CPPv4N4espp8Mcp23x176Config21port_b_direction_maskE","espp::Mcp23x17::Config::port_b_direction_mask"],[38,1,1,"_CPPv4N4espp8Mcp23x176Config21port_b_interrupt_maskE","espp::Mcp23x17::Config::port_b_interrupt_mask"],[38,1,1,"_CPPv4N4espp8Mcp23x176Config4readE","espp::Mcp23x17::Config::read"],[38,1,1,"_CPPv4N4espp8Mcp23x176Config5writeE","espp::Mcp23x17::Config::write"],[38,1,1,"_CPPv4N4espp8Mcp23x1715DEFAULT_ADDRESSE","espp::Mcp23x17::DEFAULT_ADDRESS"],[38,3,1,"_CPPv4N4espp8Mcp23x178Mcp23x17ERK6Config","espp::Mcp23x17::Mcp23x17"],[38,4,1,"_CPPv4N4espp8Mcp23x178Mcp23x17ERK6Config","espp::Mcp23x17::Mcp23x17::config"],[38,6,1,"_CPPv4N4espp8Mcp23x174PortE","espp::Mcp23x17::Port"],[38,7,1,"_CPPv4N4espp8Mcp23x174Port1AE","espp::Mcp23x17::Port::A"],[38,7,1,"_CPPv4N4espp8Mcp23x174Port1BE","espp::Mcp23x17::Port::B"],[38,3,1,"_CPPv4N4espp8Mcp23x1721get_interrupt_captureE4Port","espp::Mcp23x17::get_interrupt_capture"],[38,4,1,"_CPPv4N4espp8Mcp23x1721get_interrupt_captureE4Port","espp::Mcp23x17::get_interrupt_capture::port"],[38,3,1,"_CPPv4N4espp8Mcp23x178get_pinsE4Port","espp::Mcp23x17::get_pins"],[38,4,1,"_CPPv4N4espp8Mcp23x178get_pinsE4Port","espp::Mcp23x17::get_pins::port"],[38,8,1,"_CPPv4N4espp8Mcp23x177read_fnE","espp::Mcp23x17::read_fn"],[38,3,1,"_CPPv4N4espp8Mcp23x1713set_directionE4Port7uint8_t","espp::Mcp23x17::set_direction"],[38,4,1,"_CPPv4N4espp8Mcp23x1713set_directionE4Port7uint8_t","espp::Mcp23x17::set_direction::mask"],[38,4,1,"_CPPv4N4espp8Mcp23x1713set_directionE4Port7uint8_t","espp::Mcp23x17::set_direction::port"],[38,3,1,"_CPPv4N4espp8Mcp23x1718set_input_polarityE4Port7uint8_t","espp::Mcp23x17::set_input_polarity"],[38,4,1,"_CPPv4N4espp8Mcp23x1718set_input_polarityE4Port7uint8_t","espp::Mcp23x17::set_input_polarity::mask"],[38,4,1,"_CPPv4N4espp8Mcp23x1718set_input_polarityE4Port7uint8_t","espp::Mcp23x17::set_input_polarity::port"],[38,3,1,"_CPPv4N4espp8Mcp23x1720set_interrupt_mirrorEb","espp::Mcp23x17::set_interrupt_mirror"],[38,4,1,"_CPPv4N4espp8Mcp23x1720set_interrupt_mirrorEb","espp::Mcp23x17::set_interrupt_mirror::mirror"],[38,3,1,"_CPPv4N4espp8Mcp23x1723set_interrupt_on_changeE4Port7uint8_t","espp::Mcp23x17::set_interrupt_on_change"],[38,4,1,"_CPPv4N4espp8Mcp23x1723set_interrupt_on_changeE4Port7uint8_t","espp::Mcp23x17::set_interrupt_on_change::mask"],[38,4,1,"_CPPv4N4espp8Mcp23x1723set_interrupt_on_changeE4Port7uint8_t","espp::Mcp23x17::set_interrupt_on_change::port"],[38,3,1,"_CPPv4N4espp8Mcp23x1722set_interrupt_on_valueE4Port7uint8_t7uint8_t","espp::Mcp23x17::set_interrupt_on_value"],[38,4,1,"_CPPv4N4espp8Mcp23x1722set_interrupt_on_valueE4Port7uint8_t7uint8_t","espp::Mcp23x17::set_interrupt_on_value::pin_mask"],[38,4,1,"_CPPv4N4espp8Mcp23x1722set_interrupt_on_valueE4Port7uint8_t7uint8_t","espp::Mcp23x17::set_interrupt_on_value::port"],[38,4,1,"_CPPv4N4espp8Mcp23x1722set_interrupt_on_valueE4Port7uint8_t7uint8_t","espp::Mcp23x17::set_interrupt_on_value::val_mask"],[38,3,1,"_CPPv4N4espp8Mcp23x1722set_interrupt_polarityEb","espp::Mcp23x17::set_interrupt_polarity"],[38,4,1,"_CPPv4N4espp8Mcp23x1722set_interrupt_polarityEb","espp::Mcp23x17::set_interrupt_polarity::active_high"],[38,3,1,"_CPPv4N4espp8Mcp23x178set_pinsE4Port7uint8_t","espp::Mcp23x17::set_pins"],[38,4,1,"_CPPv4N4espp8Mcp23x178set_pinsE4Port7uint8_t","espp::Mcp23x17::set_pins::output"],[38,4,1,"_CPPv4N4espp8Mcp23x178set_pinsE4Port7uint8_t","espp::Mcp23x17::set_pins::port"],[38,3,1,"_CPPv4N4espp8Mcp23x1711set_pull_upE4Port7uint8_t","espp::Mcp23x17::set_pull_up"],[38,4,1,"_CPPv4N4espp8Mcp23x1711set_pull_upE4Port7uint8_t","espp::Mcp23x17::set_pull_up::mask"],[38,4,1,"_CPPv4N4espp8Mcp23x1711set_pull_upE4Port7uint8_t","espp::Mcp23x17::set_pull_up::port"],[38,8,1,"_CPPv4N4espp8Mcp23x178write_fnE","espp::Mcp23x17::write_fn"],[19,2,1,"_CPPv4N4espp6Mt6701E","espp::Mt6701"],[19,1,1,"_CPPv4N4espp6Mt670121COUNTS_PER_REVOLUTIONE","espp::Mt6701::COUNTS_PER_REVOLUTION"],[19,1,1,"_CPPv4N4espp6Mt670123COUNTS_PER_REVOLUTION_FE","espp::Mt6701::COUNTS_PER_REVOLUTION_F"],[19,1,1,"_CPPv4N4espp6Mt670117COUNTS_TO_DEGREESE","espp::Mt6701::COUNTS_TO_DEGREES"],[19,1,1,"_CPPv4N4espp6Mt670117COUNTS_TO_RADIANSE","espp::Mt6701::COUNTS_TO_RADIANS"],[19,2,1,"_CPPv4N4espp6Mt67016ConfigE","espp::Mt6701::Config"],[19,1,1,"_CPPv4N4espp6Mt67016Config14device_addressE","espp::Mt6701::Config::device_address"],[19,1,1,"_CPPv4N4espp6Mt67016Config4readE","espp::Mt6701::Config::read"],[19,1,1,"_CPPv4N4espp6Mt67016Config13update_periodE","espp::Mt6701::Config::update_period"],[19,1,1,"_CPPv4N4espp6Mt67016Config15velocity_filterE","espp::Mt6701::Config::velocity_filter"],[19,1,1,"_CPPv4N4espp6Mt67016Config5writeE","espp::Mt6701::Config::write"],[19,1,1,"_CPPv4N4espp6Mt670115DEFAULT_ADDRESSE","espp::Mt6701::DEFAULT_ADDRESS"],[19,3,1,"_CPPv4N4espp6Mt67016Mt6701ERK6Config","espp::Mt6701::Mt6701"],[19,4,1,"_CPPv4N4espp6Mt67016Mt6701ERK6Config","espp::Mt6701::Mt6701::config"],[19,1,1,"_CPPv4N4espp6Mt670118SECONDS_PER_MINUTEE","espp::Mt6701::SECONDS_PER_MINUTE"],[19,3,1,"_CPPv4NK4espp6Mt670115get_accumulatorEv","espp::Mt6701::get_accumulator"],[19,3,1,"_CPPv4NK4espp6Mt67019get_countEv","espp::Mt6701::get_count"],[19,3,1,"_CPPv4NK4espp6Mt670111get_degreesEv","espp::Mt6701::get_degrees"],[19,3,1,"_CPPv4NK4espp6Mt670122get_mechanical_degreesEv","espp::Mt6701::get_mechanical_degrees"],[19,3,1,"_CPPv4NK4espp6Mt670122get_mechanical_radiansEv","espp::Mt6701::get_mechanical_radians"],[19,3,1,"_CPPv4NK4espp6Mt670111get_radiansEv","espp::Mt6701::get_radians"],[19,3,1,"_CPPv4NK4espp6Mt67017get_rpmEv","espp::Mt6701::get_rpm"],[19,3,1,"_CPPv4NK4espp6Mt670117needs_zero_searchEv","espp::Mt6701::needs_zero_search"],[19,8,1,"_CPPv4N4espp6Mt67017read_fnE","espp::Mt6701::read_fn"],[19,8,1,"_CPPv4N4espp6Mt670118velocity_filter_fnE","espp::Mt6701::velocity_filter_fn"],[19,8,1,"_CPPv4N4espp6Mt67018write_fnE","espp::Mt6701::write_fn"],[54,2,1,"_CPPv4N4espp4NdefE","espp::Ndef"],[54,6,1,"_CPPv4N4espp4Ndef7BleRoleE","espp::Ndef::BleRole"],[54,7,1,"_CPPv4N4espp4Ndef7BleRole12CENTRAL_ONLYE","espp::Ndef::BleRole::CENTRAL_ONLY"],[54,7,1,"_CPPv4N4espp4Ndef7BleRole18CENTRAL_PERIPHERALE","espp::Ndef::BleRole::CENTRAL_PERIPHERAL"],[54,7,1,"_CPPv4N4espp4Ndef7BleRole18PERIPHERAL_CENTRALE","espp::Ndef::BleRole::PERIPHERAL_CENTRAL"],[54,7,1,"_CPPv4N4espp4Ndef7BleRole15PERIPHERAL_ONLYE","espp::Ndef::BleRole::PERIPHERAL_ONLY"],[54,6,1,"_CPPv4N4espp4Ndef12BtAppearanceE","espp::Ndef::BtAppearance"],[54,7,1,"_CPPv4N4espp4Ndef12BtAppearance5CLOCKE","espp::Ndef::BtAppearance::CLOCK"],[54,7,1,"_CPPv4N4espp4Ndef12BtAppearance8COMPUTERE","espp::Ndef::BtAppearance::COMPUTER"],[54,7,1,"_CPPv4N4espp4Ndef12BtAppearance7DISPLAYE","espp::Ndef::BtAppearance::DISPLAY"],[54,7,1,"_CPPv4N4espp4Ndef12BtAppearance7GAMEPADE","espp::Ndef::BtAppearance::GAMEPAD"],[54,7,1,"_CPPv4N4espp4Ndef12BtAppearance6GAMINGE","espp::Ndef::BtAppearance::GAMING"],[54,7,1,"_CPPv4N4espp4Ndef12BtAppearance11GENERIC_HIDE","espp::Ndef::BtAppearance::GENERIC_HID"],[54,7,1,"_CPPv4N4espp4Ndef12BtAppearance8JOYSTICKE","espp::Ndef::BtAppearance::JOYSTICK"],[54,7,1,"_CPPv4N4espp4Ndef12BtAppearance8KEYBOARDE","espp::Ndef::BtAppearance::KEYBOARD"],[54,7,1,"_CPPv4N4espp4Ndef12BtAppearance5MOUSEE","espp::Ndef::BtAppearance::MOUSE"],[54,7,1,"_CPPv4N4espp4Ndef12BtAppearance5PHONEE","espp::Ndef::BtAppearance::PHONE"],[54,7,1,"_CPPv4N4espp4Ndef12BtAppearance14REMOTE_CONTROLE","espp::Ndef::BtAppearance::REMOTE_CONTROL"],[54,7,1,"_CPPv4N4espp4Ndef12BtAppearance8TOUCHPADE","espp::Ndef::BtAppearance::TOUCHPAD"],[54,7,1,"_CPPv4N4espp4Ndef12BtAppearance7UNKNOWNE","espp::Ndef::BtAppearance::UNKNOWN"],[54,7,1,"_CPPv4N4espp4Ndef12BtAppearance5WATCHE","espp::Ndef::BtAppearance::WATCH"],[54,6,1,"_CPPv4N4espp4Ndef5BtEirE","espp::Ndef::BtEir"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir10APPEARANCEE","espp::Ndef::BtEir::APPEARANCE"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir15CLASS_OF_DEVICEE","espp::Ndef::BtEir::CLASS_OF_DEVICE"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir5FLAGSE","espp::Ndef::BtEir::FLAGS"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir7LE_ROLEE","espp::Ndef::BtEir::LE_ROLE"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir18LE_SC_CONFIRMATIONE","espp::Ndef::BtEir::LE_SC_CONFIRMATION"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir12LE_SC_RANDOME","espp::Ndef::BtEir::LE_SC_RANDOM"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir15LONG_LOCAL_NAMEE","espp::Ndef::BtEir::LONG_LOCAL_NAME"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir3MACE","espp::Ndef::BtEir::MAC"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir22SECURITY_MANAGER_FLAGSE","espp::Ndef::BtEir::SECURITY_MANAGER_FLAGS"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir19SECURITY_MANAGER_TKE","espp::Ndef::BtEir::SECURITY_MANAGER_TK"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir16SHORT_LOCAL_NAMEE","espp::Ndef::BtEir::SHORT_LOCAL_NAME"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir12SP_HASH_C192E","espp::Ndef::BtEir::SP_HASH_C192"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir12SP_HASH_C256E","espp::Ndef::BtEir::SP_HASH_C256"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir12SP_HASH_R256E","espp::Ndef::BtEir::SP_HASH_R256"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir14SP_RANDOM_R192E","espp::Ndef::BtEir::SP_RANDOM_R192"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir14TX_POWER_LEVELE","espp::Ndef::BtEir::TX_POWER_LEVEL"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir22UUIDS_128_BIT_COMPLETEE","espp::Ndef::BtEir::UUIDS_128_BIT_COMPLETE"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir21UUIDS_128_BIT_PARTIALE","espp::Ndef::BtEir::UUIDS_128_BIT_PARTIAL"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir21UUIDS_16_BIT_COMPLETEE","espp::Ndef::BtEir::UUIDS_16_BIT_COMPLETE"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir20UUIDS_16_BIT_PARTIALE","espp::Ndef::BtEir::UUIDS_16_BIT_PARTIAL"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir21UUIDS_32_BIT_COMPLETEE","espp::Ndef::BtEir::UUIDS_32_BIT_COMPLETE"],[54,7,1,"_CPPv4N4espp4Ndef5BtEir20UUIDS_32_BIT_PARTIALE","espp::Ndef::BtEir::UUIDS_32_BIT_PARTIAL"],[54,6,1,"_CPPv4N4espp4Ndef6BtTypeE","espp::Ndef::BtType"],[54,7,1,"_CPPv4N4espp4Ndef6BtType3BLEE","espp::Ndef::BtType::BLE"],[54,7,1,"_CPPv4N4espp4Ndef6BtType5BREDRE","espp::Ndef::BtType::BREDR"],[54,3,1,"_CPPv4N4espp4Ndef4NdefE3TNFNSt11string_viewENSt11string_viewE","espp::Ndef::Ndef"],[54,4,1,"_CPPv4N4espp4Ndef4NdefE3TNFNSt11string_viewENSt11string_viewE","espp::Ndef::Ndef::payload"],[54,4,1,"_CPPv4N4espp4Ndef4NdefE3TNFNSt11string_viewENSt11string_viewE","espp::Ndef::Ndef::tnf"],[54,4,1,"_CPPv4N4espp4Ndef4NdefE3TNFNSt11string_viewENSt11string_viewE","espp::Ndef::Ndef::type"],[54,6,1,"_CPPv4N4espp4Ndef3TNFE","espp::Ndef::TNF"],[54,7,1,"_CPPv4N4espp4Ndef3TNF12ABSOLUTE_URIE","espp::Ndef::TNF::ABSOLUTE_URI"],[54,7,1,"_CPPv4N4espp4Ndef3TNF5EMPTYE","espp::Ndef::TNF::EMPTY"],[54,7,1,"_CPPv4N4espp4Ndef3TNF13EXTERNAL_TYPEE","espp::Ndef::TNF::EXTERNAL_TYPE"],[54,7,1,"_CPPv4N4espp4Ndef3TNF10MIME_MEDIAE","espp::Ndef::TNF::MIME_MEDIA"],[54,7,1,"_CPPv4N4espp4Ndef3TNF8RESERVEDE","espp::Ndef::TNF::RESERVED"],[54,7,1,"_CPPv4N4espp4Ndef3TNF9UNCHANGEDE","espp::Ndef::TNF::UNCHANGED"],[54,7,1,"_CPPv4N4espp4Ndef3TNF7UNKNOWNE","espp::Ndef::TNF::UNKNOWN"],[54,7,1,"_CPPv4N4espp4Ndef3TNF10WELL_KNOWNE","espp::Ndef::TNF::WELL_KNOWN"],[54,6,1,"_CPPv4N4espp4Ndef3UicE","espp::Ndef::Uic"],[54,7,1,"_CPPv4N4espp4Ndef3Uic6BTGOEPE","espp::Ndef::Uic::BTGOEP"],[54,7,1,"_CPPv4N4espp4Ndef3Uic7BTL2CAPE","espp::Ndef::Uic::BTL2CAP"],[54,7,1,"_CPPv4N4espp4Ndef3Uic5BTSPPE","espp::Ndef::Uic::BTSPP"],[54,7,1,"_CPPv4N4espp4Ndef3Uic3DAVE","espp::Ndef::Uic::DAV"],[54,7,1,"_CPPv4N4espp4Ndef3Uic4FILEE","espp::Ndef::Uic::FILE"],[54,7,1,"_CPPv4N4espp4Ndef3Uic3FTPE","espp::Ndef::Uic::FTP"],[54,7,1,"_CPPv4N4espp4Ndef3Uic4FTPSE","espp::Ndef::Uic::FTPS"],[54,7,1,"_CPPv4N4espp4Ndef3Uic8FTP_ANONE","espp::Ndef::Uic::FTP_ANON"],[54,7,1,"_CPPv4N4espp4Ndef3Uic7FTP_FTPE","espp::Ndef::Uic::FTP_FTP"],[54,7,1,"_CPPv4N4espp4Ndef3Uic4HTTPE","espp::Ndef::Uic::HTTP"],[54,7,1,"_CPPv4N4espp4Ndef3Uic5HTTPSE","espp::Ndef::Uic::HTTPS"],[54,7,1,"_CPPv4N4espp4Ndef3Uic9HTTPS_WWWE","espp::Ndef::Uic::HTTPS_WWW"],[54,7,1,"_CPPv4N4espp4Ndef3Uic8HTTP_WWWE","espp::Ndef::Uic::HTTP_WWW"],[54,7,1,"_CPPv4N4espp4Ndef3Uic4IMAPE","espp::Ndef::Uic::IMAP"],[54,7,1,"_CPPv4N4espp4Ndef3Uic8IRDAOBEXE","espp::Ndef::Uic::IRDAOBEX"],[54,7,1,"_CPPv4N4espp4Ndef3Uic6MAILTOE","espp::Ndef::Uic::MAILTO"],[54,7,1,"_CPPv4N4espp4Ndef3Uic4NEWSE","espp::Ndef::Uic::NEWS"],[54,7,1,"_CPPv4N4espp4Ndef3Uic3NFSE","espp::Ndef::Uic::NFS"],[54,7,1,"_CPPv4N4espp4Ndef3Uic4NONEE","espp::Ndef::Uic::NONE"],[54,7,1,"_CPPv4N4espp4Ndef3Uic3POPE","espp::Ndef::Uic::POP"],[54,7,1,"_CPPv4N4espp4Ndef3Uic4RSTPE","espp::Ndef::Uic::RSTP"],[54,7,1,"_CPPv4N4espp4Ndef3Uic4SFTPE","espp::Ndef::Uic::SFTP"],[54,7,1,"_CPPv4N4espp4Ndef3Uic3SIPE","espp::Ndef::Uic::SIP"],[54,7,1,"_CPPv4N4espp4Ndef3Uic4SIPSE","espp::Ndef::Uic::SIPS"],[54,7,1,"_CPPv4N4espp4Ndef3Uic3SMBE","espp::Ndef::Uic::SMB"],[54,7,1,"_CPPv4N4espp4Ndef3Uic7TCPOBEXE","espp::Ndef::Uic::TCPOBEX"],[54,7,1,"_CPPv4N4espp4Ndef3Uic3TELE","espp::Ndef::Uic::TEL"],[54,7,1,"_CPPv4N4espp4Ndef3Uic6TELNETE","espp::Ndef::Uic::TELNET"],[54,7,1,"_CPPv4N4espp4Ndef3Uic4TFTPE","espp::Ndef::Uic::TFTP"],[54,7,1,"_CPPv4N4espp4Ndef3Uic3URNE","espp::Ndef::Uic::URN"],[54,7,1,"_CPPv4N4espp4Ndef3Uic7URN_EPCE","espp::Ndef::Uic::URN_EPC"],[54,7,1,"_CPPv4N4espp4Ndef3Uic10URN_EPC_IDE","espp::Ndef::Uic::URN_EPC_ID"],[54,7,1,"_CPPv4N4espp4Ndef3Uic11URN_EPC_PATE","espp::Ndef::Uic::URN_EPC_PAT"],[54,7,1,"_CPPv4N4espp4Ndef3Uic11URN_EPC_RAWE","espp::Ndef::Uic::URN_EPC_RAW"],[54,7,1,"_CPPv4N4espp4Ndef3Uic11URN_EPC_TAGE","espp::Ndef::Uic::URN_EPC_TAG"],[54,7,1,"_CPPv4N4espp4Ndef3Uic7URN_NFCE","espp::Ndef::Uic::URN_NFC"],[54,6,1,"_CPPv4N4espp4Ndef22WifiAuthenticationTypeE","espp::Ndef::WifiAuthenticationType"],[54,7,1,"_CPPv4N4espp4Ndef22WifiAuthenticationType4OPENE","espp::Ndef::WifiAuthenticationType::OPEN"],[54,7,1,"_CPPv4N4espp4Ndef22WifiAuthenticationType6SHAREDE","espp::Ndef::WifiAuthenticationType::SHARED"],[54,7,1,"_CPPv4N4espp4Ndef22WifiAuthenticationType15WPA2_ENTERPRISEE","espp::Ndef::WifiAuthenticationType::WPA2_ENTERPRISE"],[54,7,1,"_CPPv4N4espp4Ndef22WifiAuthenticationType13WPA2_PERSONALE","espp::Ndef::WifiAuthenticationType::WPA2_PERSONAL"],[54,7,1,"_CPPv4N4espp4Ndef22WifiAuthenticationType14WPA_ENTERPRISEE","espp::Ndef::WifiAuthenticationType::WPA_ENTERPRISE"],[54,7,1,"_CPPv4N4espp4Ndef22WifiAuthenticationType12WPA_PERSONALE","espp::Ndef::WifiAuthenticationType::WPA_PERSONAL"],[54,7,1,"_CPPv4N4espp4Ndef22WifiAuthenticationType17WPA_WPA2_PERSONALE","espp::Ndef::WifiAuthenticationType::WPA_WPA2_PERSONAL"],[54,2,1,"_CPPv4N4espp4Ndef10WifiConfigE","espp::Ndef::WifiConfig"],[54,1,1,"_CPPv4N4espp4Ndef10WifiConfig14authenticationE","espp::Ndef::WifiConfig::authentication"],[54,1,1,"_CPPv4N4espp4Ndef10WifiConfig10encryptionE","espp::Ndef::WifiConfig::encryption"],[54,1,1,"_CPPv4N4espp4Ndef10WifiConfig3keyE","espp::Ndef::WifiConfig::key"],[54,1,1,"_CPPv4N4espp4Ndef10WifiConfig11mac_addressE","espp::Ndef::WifiConfig::mac_address"],[54,1,1,"_CPPv4N4espp4Ndef10WifiConfig4ssidE","espp::Ndef::WifiConfig::ssid"],[54,6,1,"_CPPv4N4espp4Ndef18WifiEncryptionTypeE","espp::Ndef::WifiEncryptionType"],[54,7,1,"_CPPv4N4espp4Ndef18WifiEncryptionType3AESE","espp::Ndef::WifiEncryptionType::AES"],[54,7,1,"_CPPv4N4espp4Ndef18WifiEncryptionType4NONEE","espp::Ndef::WifiEncryptionType::NONE"],[54,7,1,"_CPPv4N4espp4Ndef18WifiEncryptionType4TKIPE","espp::Ndef::WifiEncryptionType::TKIP"],[54,7,1,"_CPPv4N4espp4Ndef18WifiEncryptionType3WEPE","espp::Ndef::WifiEncryptionType::WEP"],[54,3,1,"_CPPv4NK4espp4Ndef8get_sizeEv","espp::Ndef::get_size"],[54,3,1,"_CPPv4N4espp4Ndef21make_android_launcherENSt11string_viewE","espp::Ndef::make_android_launcher"],[54,4,1,"_CPPv4N4espp4Ndef21make_android_launcherENSt11string_viewE","espp::Ndef::make_android_launcher::uri"],[54,3,1,"_CPPv4N4espp4Ndef19make_le_oob_pairingE8uint64_t7BleRoleNSt11string_viewE12BtAppearance","espp::Ndef::make_le_oob_pairing"],[54,4,1,"_CPPv4N4espp4Ndef19make_le_oob_pairingE8uint64_t7BleRoleNSt11string_viewE12BtAppearance","espp::Ndef::make_le_oob_pairing::appearance"],[54,4,1,"_CPPv4N4espp4Ndef19make_le_oob_pairingE8uint64_t7BleRoleNSt11string_viewE12BtAppearance","espp::Ndef::make_le_oob_pairing::mac_addr"],[54,4,1,"_CPPv4N4espp4Ndef19make_le_oob_pairingE8uint64_t7BleRoleNSt11string_viewE12BtAppearance","espp::Ndef::make_le_oob_pairing::name"],[54,4,1,"_CPPv4N4espp4Ndef19make_le_oob_pairingE8uint64_t7BleRoleNSt11string_viewE12BtAppearance","espp::Ndef::make_le_oob_pairing::role"],[54,3,1,"_CPPv4N4espp4Ndef16make_oob_pairingE8uint64_t8uint32_tNSt11string_viewE","espp::Ndef::make_oob_pairing"],[54,4,1,"_CPPv4N4espp4Ndef16make_oob_pairingE8uint64_t8uint32_tNSt11string_viewE","espp::Ndef::make_oob_pairing::device_class"],[54,4,1,"_CPPv4N4espp4Ndef16make_oob_pairingE8uint64_t8uint32_tNSt11string_viewE","espp::Ndef::make_oob_pairing::mac_addr"],[54,4,1,"_CPPv4N4espp4Ndef16make_oob_pairingE8uint64_t8uint32_tNSt11string_viewE","espp::Ndef::make_oob_pairing::name"],[54,3,1,"_CPPv4N4espp4Ndef9make_textENSt11string_viewE","espp::Ndef::make_text"],[54,4,1,"_CPPv4N4espp4Ndef9make_textENSt11string_viewE","espp::Ndef::make_text::text"],[54,3,1,"_CPPv4N4espp4Ndef8make_uriENSt11string_viewE3Uic","espp::Ndef::make_uri"],[54,4,1,"_CPPv4N4espp4Ndef8make_uriENSt11string_viewE3Uic","espp::Ndef::make_uri::uic"],[54,4,1,"_CPPv4N4espp4Ndef8make_uriENSt11string_viewE3Uic","espp::Ndef::make_uri::uri"],[54,3,1,"_CPPv4N4espp4Ndef16make_wifi_configERK10WifiConfig","espp::Ndef::make_wifi_config"],[54,4,1,"_CPPv4N4espp4Ndef16make_wifi_configERK10WifiConfig","espp::Ndef::make_wifi_config::config"],[54,3,1,"_CPPv4N4espp4Ndef7payloadEv","espp::Ndef::payload"],[54,3,1,"_CPPv4N4espp4Ndef9serializeEv","espp::Ndef::serialize"],[4,2,1,"_CPPv4N4espp10OneshotAdcE","espp::OneshotAdc"],[4,2,1,"_CPPv4N4espp10OneshotAdc6ConfigE","espp::OneshotAdc::Config"],[4,1,1,"_CPPv4N4espp10OneshotAdc6Config8channelsE","espp::OneshotAdc::Config::channels"],[4,1,1,"_CPPv4N4espp10OneshotAdc6Config9log_levelE","espp::OneshotAdc::Config::log_level"],[4,1,1,"_CPPv4N4espp10OneshotAdc6Config4unitE","espp::OneshotAdc::Config::unit"],[4,3,1,"_CPPv4N4espp10OneshotAdc10OneshotAdcERK6Config","espp::OneshotAdc::OneshotAdc"],[4,4,1,"_CPPv4N4espp10OneshotAdc10OneshotAdcERK6Config","espp::OneshotAdc::OneshotAdc::config"],[4,3,1,"_CPPv4N4espp10OneshotAdc7read_mvE13adc_channel_t","espp::OneshotAdc::read_mv"],[4,4,1,"_CPPv4N4espp10OneshotAdc7read_mvE13adc_channel_t","espp::OneshotAdc::read_mv::channel"],[4,3,1,"_CPPv4N4espp10OneshotAdc8read_rawE13adc_channel_t","espp::OneshotAdc::read_raw"],[4,4,1,"_CPPv4N4espp10OneshotAdc8read_rawE13adc_channel_t","espp::OneshotAdc::read_raw::channel"],[4,3,1,"_CPPv4N4espp10OneshotAdcD0Ev","espp::OneshotAdc::~OneshotAdc"],[56,2,1,"_CPPv4N4espp3PidE","espp::Pid"],[56,2,1,"_CPPv4N4espp3Pid6ConfigE","espp::Pid::Config"],[56,1,1,"_CPPv4N4espp3Pid6Config14integrator_maxE","espp::Pid::Config::integrator_max"],[56,1,1,"_CPPv4N4espp3Pid6Config14integrator_minE","espp::Pid::Config::integrator_min"],[56,1,1,"_CPPv4N4espp3Pid6Config2kdE","espp::Pid::Config::kd"],[56,1,1,"_CPPv4N4espp3Pid6Config2kiE","espp::Pid::Config::ki"],[56,1,1,"_CPPv4N4espp3Pid6Config2kpE","espp::Pid::Config::kp"],[56,1,1,"_CPPv4N4espp3Pid6Config9log_levelE","espp::Pid::Config::log_level"],[56,1,1,"_CPPv4N4espp3Pid6Config10output_maxE","espp::Pid::Config::output_max"],[56,1,1,"_CPPv4N4espp3Pid6Config10output_minE","espp::Pid::Config::output_min"],[56,3,1,"_CPPv4N4espp3Pid3PidERK6Config","espp::Pid::Pid"],[56,4,1,"_CPPv4N4espp3Pid3PidERK6Config","espp::Pid::Pid::config"],[56,3,1,"_CPPv4N4espp3Pid12change_gainsERK6Configb","espp::Pid::change_gains"],[56,4,1,"_CPPv4N4espp3Pid12change_gainsERK6Configb","espp::Pid::change_gains::config"],[56,4,1,"_CPPv4N4espp3Pid12change_gainsERK6Configb","espp::Pid::change_gains::reset_state"],[56,3,1,"_CPPv4N4espp3Pid5clearEv","espp::Pid::clear"],[56,3,1,"_CPPv4NK4espp3Pid10get_configEv","espp::Pid::get_config"],[56,3,1,"_CPPv4NK4espp3Pid9get_errorEv","espp::Pid::get_error"],[56,3,1,"_CPPv4NK4espp3Pid14get_integratorEv","espp::Pid::get_integrator"],[56,3,1,"_CPPv4N4espp3PidclEf","espp::Pid::operator()"],[56,4,1,"_CPPv4N4espp3PidclEf","espp::Pid::operator()::error"],[56,3,1,"_CPPv4N4espp3Pid10set_configERK6Configb","espp::Pid::set_config"],[56,4,1,"_CPPv4N4espp3Pid10set_configERK6Configb","espp::Pid::set_config::config"],[56,4,1,"_CPPv4N4espp3Pid10set_configERK6Configb","espp::Pid::set_config::reset_state"],[56,3,1,"_CPPv4N4espp3Pid6updateEf","espp::Pid::update"],[56,4,1,"_CPPv4N4espp3Pid6updateEf","espp::Pid::update::error"],[46,2,1,"_CPPv4I0EN4espp11RangeMapperE","espp::RangeMapper"],[46,2,1,"_CPPv4N4espp11RangeMapper6ConfigE","espp::RangeMapper::Config"],[46,1,1,"_CPPv4N4espp11RangeMapper6Config6centerE","espp::RangeMapper::Config::center"],[46,1,1,"_CPPv4N4espp11RangeMapper6Config8deadbandE","espp::RangeMapper::Config::deadband"],[46,1,1,"_CPPv4N4espp11RangeMapper6Config12invert_inputE","espp::RangeMapper::Config::invert_input"],[46,1,1,"_CPPv4N4espp11RangeMapper6Config13invert_outputE","espp::RangeMapper::Config::invert_output"],[46,1,1,"_CPPv4N4espp11RangeMapper6Config7maximumE","espp::RangeMapper::Config::maximum"],[46,1,1,"_CPPv4N4espp11RangeMapper6Config7minimumE","espp::RangeMapper::Config::minimum"],[46,1,1,"_CPPv4N4espp11RangeMapper6Config13output_centerE","espp::RangeMapper::Config::output_center"],[46,1,1,"_CPPv4N4espp11RangeMapper6Config12output_rangeE","espp::RangeMapper::Config::output_range"],[46,3,1,"_CPPv4N4espp11RangeMapper11RangeMapperERK6Config","espp::RangeMapper::RangeMapper"],[46,4,1,"_CPPv4N4espp11RangeMapper11RangeMapperERK6Config","espp::RangeMapper::RangeMapper::config"],[46,5,1,"_CPPv4I0EN4espp11RangeMapperE","espp::RangeMapper::T"],[46,3,1,"_CPPv4N4espp11RangeMapper9configureERK6Config","espp::RangeMapper::configure"],[46,4,1,"_CPPv4N4espp11RangeMapper9configureERK6Config","espp::RangeMapper::configure::config"],[46,3,1,"_CPPv4NK4espp11RangeMapper17get_output_centerEv","espp::RangeMapper::get_output_center"],[46,3,1,"_CPPv4NK4espp11RangeMapper14get_output_maxEv","espp::RangeMapper::get_output_max"],[46,3,1,"_CPPv4NK4espp11RangeMapper14get_output_minEv","espp::RangeMapper::get_output_min"],[46,3,1,"_CPPv4NK4espp11RangeMapper16get_output_rangeEv","espp::RangeMapper::get_output_range"],[46,3,1,"_CPPv4N4espp11RangeMapper3mapERK1T","espp::RangeMapper::map"],[46,4,1,"_CPPv4N4espp11RangeMapper3mapERK1T","espp::RangeMapper::map::v"],[9,2,1,"_CPPv4N4espp3RgbE","espp::Rgb"],[9,3,1,"_CPPv4N4espp3Rgb3RgbERK3Hsv","espp::Rgb::Rgb"],[9,3,1,"_CPPv4N4espp3Rgb3RgbERK3Rgb","espp::Rgb::Rgb"],[9,3,1,"_CPPv4N4espp3Rgb3RgbERKfRKfRKf","espp::Rgb::Rgb"],[9,4,1,"_CPPv4N4espp3Rgb3RgbERKfRKfRKf","espp::Rgb::Rgb::b"],[9,4,1,"_CPPv4N4espp3Rgb3RgbERKfRKfRKf","espp::Rgb::Rgb::g"],[9,4,1,"_CPPv4N4espp3Rgb3RgbERK3Hsv","espp::Rgb::Rgb::hsv"],[9,4,1,"_CPPv4N4espp3Rgb3RgbERKfRKfRKf","espp::Rgb::Rgb::r"],[9,4,1,"_CPPv4N4espp3Rgb3RgbERK3Rgb","espp::Rgb::Rgb::rgb"],[9,1,1,"_CPPv4N4espp3Rgb1bE","espp::Rgb::b"],[9,1,1,"_CPPv4N4espp3Rgb1gE","espp::Rgb::g"],[9,3,1,"_CPPv4NK4espp3Rgb3hsvEv","espp::Rgb::hsv"],[9,3,1,"_CPPv4NK4espp3RgbplERK3Rgb","espp::Rgb::operator+"],[9,4,1,"_CPPv4NK4espp3RgbplERK3Rgb","espp::Rgb::operator+::rhs"],[9,3,1,"_CPPv4N4espp3RgbpLERK3Rgb","espp::Rgb::operator+="],[9,4,1,"_CPPv4N4espp3RgbpLERK3Rgb","espp::Rgb::operator+=::rhs"],[9,1,1,"_CPPv4N4espp3Rgb1rE","espp::Rgb::r"],[57,2,1,"_CPPv4N4espp3RmtE","espp::Rmt"],[57,2,1,"_CPPv4N4espp3Rmt6ConfigE","espp::Rmt::Config"],[57,1,1,"_CPPv4N4espp3Rmt6Config10block_sizeE","espp::Rmt::Config::block_size"],[57,1,1,"_CPPv4N4espp3Rmt6Config9clock_srcE","espp::Rmt::Config::clock_src"],[57,1,1,"_CPPv4N4espp3Rmt6Config11dma_enabledE","espp::Rmt::Config::dma_enabled"],[57,1,1,"_CPPv4N4espp3Rmt6Config8gpio_numE","espp::Rmt::Config::gpio_num"],[57,1,1,"_CPPv4N4espp3Rmt6Config9log_levelE","espp::Rmt::Config::log_level"],[57,1,1,"_CPPv4N4espp3Rmt6Config13resolution_hzE","espp::Rmt::Config::resolution_hz"],[57,1,1,"_CPPv4N4espp3Rmt6Config23transaction_queue_depthE","espp::Rmt::Config::transaction_queue_depth"],[57,3,1,"_CPPv4N4espp3Rmt3RmtERK6Config","espp::Rmt::Rmt"],[57,4,1,"_CPPv4N4espp3Rmt3RmtERK6Config","espp::Rmt::Rmt::config"],[57,3,1,"_CPPv4N4espp3Rmt8transmitEPK7uint8_t6size_t","espp::Rmt::transmit"],[57,4,1,"_CPPv4N4espp3Rmt8transmitEPK7uint8_t6size_t","espp::Rmt::transmit::data"],[57,4,1,"_CPPv4N4espp3Rmt8transmitEPK7uint8_t6size_t","espp::Rmt::transmit::length"],[57,3,1,"_CPPv4N4espp3RmtD0Ev","espp::Rmt::~Rmt"],[57,2,1,"_CPPv4N4espp10RmtEncoderE","espp::RmtEncoder"],[57,2,1,"_CPPv4N4espp10RmtEncoder6ConfigE","espp::RmtEncoder::Config"],[57,1,1,"_CPPv4N4espp10RmtEncoder6Config20bytes_encoder_configE","espp::RmtEncoder::Config::bytes_encoder_config"],[57,1,1,"_CPPv4N4espp10RmtEncoder6Config3delE","espp::RmtEncoder::Config::del"],[57,1,1,"_CPPv4N4espp10RmtEncoder6Config6encodeE","espp::RmtEncoder::Config::encode"],[57,1,1,"_CPPv4N4espp10RmtEncoder6Config5resetE","espp::RmtEncoder::Config::reset"],[57,3,1,"_CPPv4N4espp10RmtEncoder10RmtEncoderERK6Config","espp::RmtEncoder::RmtEncoder"],[57,4,1,"_CPPv4N4espp10RmtEncoder10RmtEncoderERK6Config","espp::RmtEncoder::RmtEncoder::config"],[57,8,1,"_CPPv4N4espp10RmtEncoder9delete_fnE","espp::RmtEncoder::delete_fn"],[57,8,1,"_CPPv4N4espp10RmtEncoder9encode_fnE","espp::RmtEncoder::encode_fn"],[57,3,1,"_CPPv4NK4espp10RmtEncoder6handleEv","espp::RmtEncoder::handle"],[57,8,1,"_CPPv4N4espp10RmtEncoder8reset_fnE","espp::RmtEncoder::reset_fn"],[57,3,1,"_CPPv4N4espp10RmtEncoderD0Ev","espp::RmtEncoder::~RmtEncoder"],[58,2,1,"_CPPv4N4espp10RtcpPacketE","espp::RtcpPacket"],[58,2,1,"_CPPv4N4espp13RtpJpegPacketE","espp::RtpJpegPacket"],[58,3,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket"],[58,3,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket"],[58,3,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::data"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::frag_type"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::frag_type"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::height"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::height"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::offset"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::q"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::q"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::q0"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::q1"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::scan_data"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::scan_data"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::type_specific"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::type_specific"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiKiNSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::width"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket13RtpJpegPacketEKiKiKiKiKiNSt11string_viewENSt11string_viewENSt11string_viewE","espp::RtpJpegPacket::RtpJpegPacket::width"],[58,3,1,"_CPPv4NK4espp13RtpJpegPacket8get_dataEv","espp::RtpJpegPacket::get_data"],[58,3,1,"_CPPv4NK4espp13RtpJpegPacket10get_heightEv","espp::RtpJpegPacket::get_height"],[58,3,1,"_CPPv4NK4espp13RtpJpegPacket13get_jpeg_dataEv","espp::RtpJpegPacket::get_jpeg_data"],[58,3,1,"_CPPv4N4espp13RtpJpegPacket16get_mjpeg_headerEv","espp::RtpJpegPacket::get_mjpeg_header"],[58,3,1,"_CPPv4NK4espp13RtpJpegPacket16get_num_q_tablesEv","espp::RtpJpegPacket::get_num_q_tables"],[58,3,1,"_CPPv4NK4espp13RtpJpegPacket10get_offsetEv","espp::RtpJpegPacket::get_offset"],[58,3,1,"_CPPv4N4espp13RtpJpegPacket10get_packetEv","espp::RtpJpegPacket::get_packet"],[58,3,1,"_CPPv4NK4espp13RtpJpegPacket11get_payloadEv","espp::RtpJpegPacket::get_payload"],[58,3,1,"_CPPv4NK4espp13RtpJpegPacket5get_qEv","espp::RtpJpegPacket::get_q"],[58,3,1,"_CPPv4NK4espp13RtpJpegPacket11get_q_tableEi","espp::RtpJpegPacket::get_q_table"],[58,4,1,"_CPPv4NK4espp13RtpJpegPacket11get_q_tableEi","espp::RtpJpegPacket::get_q_table::index"],[58,3,1,"_CPPv4NK4espp13RtpJpegPacket14get_rpt_headerEv","espp::RtpJpegPacket::get_rpt_header"],[58,3,1,"_CPPv4NK4espp13RtpJpegPacket19get_rtp_header_sizeEv","espp::RtpJpegPacket::get_rtp_header_size"],[58,3,1,"_CPPv4NK4espp13RtpJpegPacket17get_type_specificEv","espp::RtpJpegPacket::get_type_specific"],[58,3,1,"_CPPv4NK4espp13RtpJpegPacket11get_versionEv","espp::RtpJpegPacket::get_version"],[58,3,1,"_CPPv4NK4espp13RtpJpegPacket9get_widthEv","espp::RtpJpegPacket::get_width"],[58,3,1,"_CPPv4NK4espp13RtpJpegPacket12has_q_tablesEv","espp::RtpJpegPacket::has_q_tables"],[58,3,1,"_CPPv4N4espp13RtpJpegPacket9serializeEv","espp::RtpJpegPacket::serialize"],[58,3,1,"_CPPv4N4espp13RtpJpegPacket11set_payloadENSt11string_viewE","espp::RtpJpegPacket::set_payload"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket11set_payloadENSt11string_viewE","espp::RtpJpegPacket::set_payload::payload"],[58,3,1,"_CPPv4N4espp13RtpJpegPacket11set_versionEi","espp::RtpJpegPacket::set_version"],[58,4,1,"_CPPv4N4espp13RtpJpegPacket11set_versionEi","espp::RtpJpegPacket::set_version::version"],[58,2,1,"_CPPv4N4espp9RtpPacketE","espp::RtpPacket"],[58,3,1,"_CPPv4N4espp9RtpPacket9RtpPacketE6size_t","espp::RtpPacket::RtpPacket"],[58,3,1,"_CPPv4N4espp9RtpPacket9RtpPacketENSt11string_viewE","espp::RtpPacket::RtpPacket"],[58,3,1,"_CPPv4N4espp9RtpPacket9RtpPacketEv","espp::RtpPacket::RtpPacket"],[58,4,1,"_CPPv4N4espp9RtpPacket9RtpPacketENSt11string_viewE","espp::RtpPacket::RtpPacket::data"],[58,4,1,"_CPPv4N4espp9RtpPacket9RtpPacketE6size_t","espp::RtpPacket::RtpPacket::payload_size"],[58,3,1,"_CPPv4NK4espp9RtpPacket8get_dataEv","espp::RtpPacket::get_data"],[58,3,1,"_CPPv4N4espp9RtpPacket10get_packetEv","espp::RtpPacket::get_packet"],[58,3,1,"_CPPv4NK4espp9RtpPacket11get_payloadEv","espp::RtpPacket::get_payload"],[58,3,1,"_CPPv4NK4espp9RtpPacket14get_rpt_headerEv","espp::RtpPacket::get_rpt_header"],[58,3,1,"_CPPv4NK4espp9RtpPacket19get_rtp_header_sizeEv","espp::RtpPacket::get_rtp_header_size"],[58,3,1,"_CPPv4NK4espp9RtpPacket11get_versionEv","espp::RtpPacket::get_version"],[58,3,1,"_CPPv4N4espp9RtpPacket9serializeEv","espp::RtpPacket::serialize"],[58,3,1,"_CPPv4N4espp9RtpPacket11set_payloadENSt11string_viewE","espp::RtpPacket::set_payload"],[58,4,1,"_CPPv4N4espp9RtpPacket11set_payloadENSt11string_viewE","espp::RtpPacket::set_payload::payload"],[58,3,1,"_CPPv4N4espp9RtpPacket11set_versionEi","espp::RtpPacket::set_version"],[58,4,1,"_CPPv4N4espp9RtpPacket11set_versionEi","espp::RtpPacket::set_version::version"],[58,2,1,"_CPPv4N4espp10RtspClientE","espp::RtspClient"],[58,2,1,"_CPPv4N4espp10RtspClient6ConfigE","espp::RtspClient::Config"],[58,1,1,"_CPPv4N4espp10RtspClient6Config9log_levelE","espp::RtspClient::Config::log_level"],[58,1,1,"_CPPv4N4espp10RtspClient6Config13on_jpeg_frameE","espp::RtspClient::Config::on_jpeg_frame"],[58,1,1,"_CPPv4N4espp10RtspClient6Config4pathE","espp::RtspClient::Config::path"],[58,1,1,"_CPPv4N4espp10RtspClient6Config9rtsp_portE","espp::RtspClient::Config::rtsp_port"],[58,1,1,"_CPPv4N4espp10RtspClient6Config14server_addressE","espp::RtspClient::Config::server_address"],[58,3,1,"_CPPv4N4espp10RtspClient10RtspClientERK6Config","espp::RtspClient::RtspClient"],[58,4,1,"_CPPv4N4espp10RtspClient10RtspClientERK6Config","espp::RtspClient::RtspClient::config"],[58,3,1,"_CPPv4N4espp10RtspClient7connectERNSt10error_codeE","espp::RtspClient::connect"],[58,4,1,"_CPPv4N4espp10RtspClient7connectERNSt10error_codeE","espp::RtspClient::connect::ec"],[58,3,1,"_CPPv4N4espp10RtspClient8describeERNSt10error_codeE","espp::RtspClient::describe"],[58,4,1,"_CPPv4N4espp10RtspClient8describeERNSt10error_codeE","espp::RtspClient::describe::ec"],[58,3,1,"_CPPv4N4espp10RtspClient10disconnectERNSt10error_codeE","espp::RtspClient::disconnect"],[58,4,1,"_CPPv4N4espp10RtspClient10disconnectERNSt10error_codeE","espp::RtspClient::disconnect::ec"],[58,8,1,"_CPPv4N4espp10RtspClient21jpeg_frame_callback_tE","espp::RtspClient::jpeg_frame_callback_t"],[58,3,1,"_CPPv4N4espp10RtspClient5pauseERNSt10error_codeE","espp::RtspClient::pause"],[58,4,1,"_CPPv4N4espp10RtspClient5pauseERNSt10error_codeE","espp::RtspClient::pause::ec"],[58,3,1,"_CPPv4N4espp10RtspClient4playERNSt10error_codeE","espp::RtspClient::play"],[58,4,1,"_CPPv4N4espp10RtspClient4playERNSt10error_codeE","espp::RtspClient::play::ec"],[58,3,1,"_CPPv4N4espp10RtspClient12send_requestERKNSt6stringERKNSt6stringERKNSt13unordered_mapINSt6stringENSt6stringEEERNSt10error_codeE","espp::RtspClient::send_request"],[58,4,1,"_CPPv4N4espp10RtspClient12send_requestERKNSt6stringERKNSt6stringERKNSt13unordered_mapINSt6stringENSt6stringEEERNSt10error_codeE","espp::RtspClient::send_request::ec"],[58,4,1,"_CPPv4N4espp10RtspClient12send_requestERKNSt6stringERKNSt6stringERKNSt13unordered_mapINSt6stringENSt6stringEEERNSt10error_codeE","espp::RtspClient::send_request::extra_headers"],[58,4,1,"_CPPv4N4espp10RtspClient12send_requestERKNSt6stringERKNSt6stringERKNSt13unordered_mapINSt6stringENSt6stringEEERNSt10error_codeE","espp::RtspClient::send_request::method"],[58,4,1,"_CPPv4N4espp10RtspClient12send_requestERKNSt6stringERKNSt6stringERKNSt13unordered_mapINSt6stringENSt6stringEEERNSt10error_codeE","espp::RtspClient::send_request::path"],[58,3,1,"_CPPv4N4espp10RtspClient5setupE6size_t6size_tRNSt10error_codeE","espp::RtspClient::setup"],[58,3,1,"_CPPv4N4espp10RtspClient5setupERNSt10error_codeE","espp::RtspClient::setup"],[58,4,1,"_CPPv4N4espp10RtspClient5setupE6size_t6size_tRNSt10error_codeE","espp::RtspClient::setup::ec"],[58,4,1,"_CPPv4N4espp10RtspClient5setupERNSt10error_codeE","espp::RtspClient::setup::ec"],[58,4,1,"_CPPv4N4espp10RtspClient5setupE6size_t6size_tRNSt10error_codeE","espp::RtspClient::setup::rtcp_port"],[58,4,1,"_CPPv4N4espp10RtspClient5setupE6size_t6size_tRNSt10error_codeE","espp::RtspClient::setup::rtp_port"],[58,3,1,"_CPPv4N4espp10RtspClient8teardownERNSt10error_codeE","espp::RtspClient::teardown"],[58,4,1,"_CPPv4N4espp10RtspClient8teardownERNSt10error_codeE","espp::RtspClient::teardown::ec"],[58,3,1,"_CPPv4N4espp10RtspClientD0Ev","espp::RtspClient::~RtspClient"],[58,2,1,"_CPPv4N4espp10RtspServerE","espp::RtspServer"],[58,2,1,"_CPPv4N4espp10RtspServer6ConfigE","espp::RtspServer::Config"],[58,1,1,"_CPPv4N4espp10RtspServer6Config9log_levelE","espp::RtspServer::Config::log_level"],[58,1,1,"_CPPv4N4espp10RtspServer6Config13max_data_sizeE","espp::RtspServer::Config::max_data_size"],[58,1,1,"_CPPv4N4espp10RtspServer6Config4pathE","espp::RtspServer::Config::path"],[58,1,1,"_CPPv4N4espp10RtspServer6Config4portE","espp::RtspServer::Config::port"],[58,1,1,"_CPPv4N4espp10RtspServer6Config14server_addressE","espp::RtspServer::Config::server_address"],[58,3,1,"_CPPv4N4espp10RtspServer10RtspServerERK6Config","espp::RtspServer::RtspServer"],[58,4,1,"_CPPv4N4espp10RtspServer10RtspServerERK6Config","espp::RtspServer::RtspServer::config"],[58,3,1,"_CPPv4N4espp10RtspServer10send_frameERK9JpegFrame","espp::RtspServer::send_frame"],[58,4,1,"_CPPv4N4espp10RtspServer10send_frameERK9JpegFrame","espp::RtspServer::send_frame::frame"],[58,3,1,"_CPPv4N4espp10RtspServer21set_session_log_levelEN6Logger9VerbosityE","espp::RtspServer::set_session_log_level"],[58,4,1,"_CPPv4N4espp10RtspServer21set_session_log_levelEN6Logger9VerbosityE","espp::RtspServer::set_session_log_level::log_level"],[58,3,1,"_CPPv4N4espp10RtspServer5startEv","espp::RtspServer::start"],[58,3,1,"_CPPv4N4espp10RtspServer4stopEv","espp::RtspServer::stop"],[58,3,1,"_CPPv4N4espp10RtspServerD0Ev","espp::RtspServer::~RtspServer"],[58,2,1,"_CPPv4N4espp11RtspSessionE","espp::RtspSession"],[58,2,1,"_CPPv4N4espp11RtspSession6ConfigE","espp::RtspSession::Config"],[58,1,1,"_CPPv4N4espp11RtspSession6Config9log_levelE","espp::RtspSession::Config::log_level"],[58,1,1,"_CPPv4N4espp11RtspSession6Config9rtsp_pathE","espp::RtspSession::Config::rtsp_path"],[58,1,1,"_CPPv4N4espp11RtspSession6Config14server_addressE","espp::RtspSession::Config::server_address"],[58,3,1,"_CPPv4N4espp11RtspSession11RtspSessionENSt10unique_ptrI9TcpSocketEERK6Config","espp::RtspSession::RtspSession"],[58,4,1,"_CPPv4N4espp11RtspSession11RtspSessionENSt10unique_ptrI9TcpSocketEERK6Config","espp::RtspSession::RtspSession::config"],[58,4,1,"_CPPv4N4espp11RtspSession11RtspSessionENSt10unique_ptrI9TcpSocketEERK6Config","espp::RtspSession::RtspSession::control_socket"],[58,3,1,"_CPPv4NK4espp11RtspSession14get_session_idEv","espp::RtspSession::get_session_id"],[58,3,1,"_CPPv4NK4espp11RtspSession9is_activeEv","espp::RtspSession::is_active"],[58,3,1,"_CPPv4NK4espp11RtspSession9is_closedEv","espp::RtspSession::is_closed"],[58,3,1,"_CPPv4NK4espp11RtspSession12is_connectedEv","espp::RtspSession::is_connected"],[58,3,1,"_CPPv4N4espp11RtspSession5pauseEv","espp::RtspSession::pause"],[58,3,1,"_CPPv4N4espp11RtspSession4playEv","espp::RtspSession::play"],[58,3,1,"_CPPv4N4espp11RtspSession16send_rtcp_packetERK10RtcpPacket","espp::RtspSession::send_rtcp_packet"],[58,4,1,"_CPPv4N4espp11RtspSession16send_rtcp_packetERK10RtcpPacket","espp::RtspSession::send_rtcp_packet::packet"],[58,3,1,"_CPPv4N4espp11RtspSession15send_rtp_packetERK9RtpPacket","espp::RtspSession::send_rtp_packet"],[58,4,1,"_CPPv4N4espp11RtspSession15send_rtp_packetERK9RtpPacket","espp::RtspSession::send_rtp_packet::packet"],[58,3,1,"_CPPv4N4espp11RtspSession8teardownEv","espp::RtspSession::teardown"],[50,2,1,"_CPPv4N4espp6SocketE","espp::Socket"],[50,2,1,"_CPPv4N4espp6Socket4InfoE","espp::Socket::Info"],[50,1,1,"_CPPv4N4espp6Socket4Info7addressE","espp::Socket::Info::address"],[50,3,1,"_CPPv4N4espp6Socket4Info13from_sockaddrERK11sockaddr_in","espp::Socket::Info::from_sockaddr"],[50,3,1,"_CPPv4N4espp6Socket4Info13from_sockaddrERK12sockaddr_in6","espp::Socket::Info::from_sockaddr"],[50,3,1,"_CPPv4N4espp6Socket4Info13from_sockaddrERK16sockaddr_storage","espp::Socket::Info::from_sockaddr"],[50,4,1,"_CPPv4N4espp6Socket4Info13from_sockaddrERK11sockaddr_in","espp::Socket::Info::from_sockaddr::source_address"],[50,4,1,"_CPPv4N4espp6Socket4Info13from_sockaddrERK12sockaddr_in6","espp::Socket::Info::from_sockaddr::source_address"],[50,4,1,"_CPPv4N4espp6Socket4Info13from_sockaddrERK16sockaddr_storage","espp::Socket::Info::from_sockaddr::source_address"],[50,3,1,"_CPPv4N4espp6Socket4Info9init_ipv4ERKNSt6stringE6size_t","espp::Socket::Info::init_ipv4"],[50,4,1,"_CPPv4N4espp6Socket4Info9init_ipv4ERKNSt6stringE6size_t","espp::Socket::Info::init_ipv4::addr"],[50,4,1,"_CPPv4N4espp6Socket4Info9init_ipv4ERKNSt6stringE6size_t","espp::Socket::Info::init_ipv4::prt"],[50,3,1,"_CPPv4N4espp6Socket4Info8ipv4_ptrEv","espp::Socket::Info::ipv4_ptr"],[50,3,1,"_CPPv4N4espp6Socket4Info8ipv6_ptrEv","espp::Socket::Info::ipv6_ptr"],[50,1,1,"_CPPv4N4espp6Socket4Info4portE","espp::Socket::Info::port"],[50,3,1,"_CPPv4N4espp6Socket4Info6updateEv","espp::Socket::Info::update"],[50,3,1,"_CPPv4N4espp6Socket6SocketE4TypeRKN6Logger6ConfigE","espp::Socket::Socket"],[50,3,1,"_CPPv4N4espp6Socket6SocketEiRKN6Logger6ConfigE","espp::Socket::Socket"],[50,4,1,"_CPPv4N4espp6Socket6SocketE4TypeRKN6Logger6ConfigE","espp::Socket::Socket::logger_config"],[50,4,1,"_CPPv4N4espp6Socket6SocketEiRKN6Logger6ConfigE","espp::Socket::Socket::logger_config"],[50,4,1,"_CPPv4N4espp6Socket6SocketEiRKN6Logger6ConfigE","espp::Socket::Socket::socket_fd"],[50,4,1,"_CPPv4N4espp6Socket6SocketE4TypeRKN6Logger6ConfigE","espp::Socket::Socket::type"],[50,3,1,"_CPPv4N4espp6Socket19add_multicast_groupERKNSt6stringE","espp::Socket::add_multicast_group"],[50,4,1,"_CPPv4N4espp6Socket19add_multicast_groupERKNSt6stringE","espp::Socket::add_multicast_group::multicast_group"],[50,3,1,"_CPPv4N4espp6Socket12enable_reuseEv","espp::Socket::enable_reuse"],[50,3,1,"_CPPv4N4espp6Socket13get_ipv4_infoEv","espp::Socket::get_ipv4_info"],[50,3,1,"_CPPv4N4espp6Socket8is_validEi","espp::Socket::is_valid"],[50,3,1,"_CPPv4NK4espp6Socket8is_validEv","espp::Socket::is_valid"],[50,4,1,"_CPPv4N4espp6Socket8is_validEi","espp::Socket::is_valid::socket_fd"],[50,3,1,"_CPPv4N4espp6Socket14make_multicastE7uint8_t7uint8_t","espp::Socket::make_multicast"],[50,4,1,"_CPPv4N4espp6Socket14make_multicastE7uint8_t7uint8_t","espp::Socket::make_multicast::loopback_enabled"],[50,4,1,"_CPPv4N4espp6Socket14make_multicastE7uint8_t7uint8_t","espp::Socket::make_multicast::time_to_live"],[50,8,1,"_CPPv4N4espp6Socket19receive_callback_fnE","espp::Socket::receive_callback_fn"],[50,8,1,"_CPPv4N4espp6Socket20response_callback_fnE","espp::Socket::response_callback_fn"],[50,3,1,"_CPPv4N4espp6Socket19set_receive_timeoutERKNSt6chrono8durationIfEE","espp::Socket::set_receive_timeout"],[50,4,1,"_CPPv4N4espp6Socket19set_receive_timeoutERKNSt6chrono8durationIfEE","espp::Socket::set_receive_timeout::timeout"],[50,3,1,"_CPPv4N4espp6SocketD0Ev","espp::Socket::~Socket"],[26,2,1,"_CPPv4I_6size_t0EN4espp9SosFilterE","espp::SosFilter"],[26,5,1,"_CPPv4I_6size_t0EN4espp9SosFilterE","espp::SosFilter::N"],[26,5,1,"_CPPv4I_6size_t0EN4espp9SosFilterE","espp::SosFilter::SectionImpl"],[26,3,1,"_CPPv4N4espp9SosFilter9SosFilterERKNSt5arrayI16TransferFunctionIXL3EEE1NEE","espp::SosFilter::SosFilter"],[26,4,1,"_CPPv4N4espp9SosFilter9SosFilterERKNSt5arrayI16TransferFunctionIXL3EEE1NEE","espp::SosFilter::SosFilter::config"],[26,3,1,"_CPPv4N4espp9SosFilterclEf","espp::SosFilter::operator()"],[26,4,1,"_CPPv4N4espp9SosFilterclEf","espp::SosFilter::operator()::input"],[26,3,1,"_CPPv4N4espp9SosFilter6updateEf","espp::SosFilter::update"],[26,4,1,"_CPPv4N4espp9SosFilter6updateEf","espp::SosFilter::update::input"],[55,2,1,"_CPPv4N4espp6St25dvE","espp::St25dv"],[55,2,1,"_CPPv4N4espp6St25dv6ConfigE","espp::St25dv::Config"],[55,1,1,"_CPPv4N4espp6St25dv6Config9log_levelE","espp::St25dv::Config::log_level"],[55,1,1,"_CPPv4N4espp6St25dv6Config4readE","espp::St25dv::Config::read"],[55,1,1,"_CPPv4N4espp6St25dv6Config5writeE","espp::St25dv::Config::write"],[55,1,1,"_CPPv4N4espp6St25dv12DATA_ADDRESSE","espp::St25dv::DATA_ADDRESS"],[55,2,1,"_CPPv4N4espp6St25dv7EH_CTRLE","espp::St25dv::EH_CTRL"],[55,2,1,"_CPPv4N4espp6St25dv3GPOE","espp::St25dv::GPO"],[55,2,1,"_CPPv4N4espp6St25dv6IT_STSE","espp::St25dv::IT_STS"],[55,2,1,"_CPPv4N4espp6St25dv6IT_STSE","espp::St25dv::IT_STS"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS13FIELD_FALLINGE","espp::St25dv::IT_STS::FIELD_FALLING"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS13FIELD_FALLINGE","espp::St25dv::IT_STS::FIELD_FALLING"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS12FIELD_RISINGE","espp::St25dv::IT_STS::FIELD_RISING"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS12FIELD_RISINGE","espp::St25dv::IT_STS::FIELD_RISING"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS11RF_ACTIVITYE","espp::St25dv::IT_STS::RF_ACTIVITY"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS11RF_ACTIVITYE","espp::St25dv::IT_STS::RF_ACTIVITY"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS10RF_GET_MSGE","espp::St25dv::IT_STS::RF_GET_MSG"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS10RF_GET_MSGE","espp::St25dv::IT_STS::RF_GET_MSG"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS12RF_INTTERUPTE","espp::St25dv::IT_STS::RF_INTTERUPT"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS12RF_INTTERUPTE","espp::St25dv::IT_STS::RF_INTTERUPT"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS10RF_PUT_MSGE","espp::St25dv::IT_STS::RF_PUT_MSG"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS10RF_PUT_MSGE","espp::St25dv::IT_STS::RF_PUT_MSG"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS7RF_USERE","espp::St25dv::IT_STS::RF_USER"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS7RF_USERE","espp::St25dv::IT_STS::RF_USER"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS8RF_WRITEE","espp::St25dv::IT_STS::RF_WRITE"],[55,1,1,"_CPPv4N4espp6St25dv6IT_STS8RF_WRITEE","espp::St25dv::IT_STS::RF_WRITE"],[55,2,1,"_CPPv4N4espp6St25dv7MB_CTRLE","espp::St25dv::MB_CTRL"],[55,1,1,"_CPPv4N4espp6St25dv19PhonyNameDueToError6lengthE","espp::St25dv::PhonyNameDueToError::length"],[55,1,1,"_CPPv4N4espp6St25dv19PhonyNameDueToError8length16E","espp::St25dv::PhonyNameDueToError::length16"],[55,1,1,"_CPPv4N4espp6St25dv19PhonyNameDueToError4typeE","espp::St25dv::PhonyNameDueToError::type"],[55,1,1,"_CPPv4N4espp6St25dv12SYST_ADDRESSE","espp::St25dv::SYST_ADDRESS"],[55,3,1,"_CPPv4N4espp6St25dv6St25dvERK6Config","espp::St25dv::St25dv"],[55,4,1,"_CPPv4N4espp6St25dv6St25dvERK6Config","espp::St25dv::St25dv::config"],[55,3,1,"_CPPv4N4espp6St25dv14get_ftm_lengthEv","espp::St25dv::get_ftm_length"],[55,3,1,"_CPPv4N4espp6St25dv20get_interrupt_statusEv","espp::St25dv::get_interrupt_status"],[55,3,1,"_CPPv4N4espp6St25dv4readEP7uint8_t7uint8_t8uint16_t","espp::St25dv::read"],[55,4,1,"_CPPv4N4espp6St25dv4readEP7uint8_t7uint8_t8uint16_t","espp::St25dv::read::data"],[55,4,1,"_CPPv4N4espp6St25dv4readEP7uint8_t7uint8_t8uint16_t","espp::St25dv::read::length"],[55,4,1,"_CPPv4N4espp6St25dv4readEP7uint8_t7uint8_t8uint16_t","espp::St25dv::read::offset"],[55,8,1,"_CPPv4N4espp6St25dv7read_fnE","espp::St25dv::read_fn"],[55,3,1,"_CPPv4N4espp6St25dv7receiveEP7uint8_t7uint8_t","espp::St25dv::receive"],[55,4,1,"_CPPv4N4espp6St25dv7receiveEP7uint8_t7uint8_t","espp::St25dv::receive::data"],[55,4,1,"_CPPv4N4espp6St25dv7receiveEP7uint8_t7uint8_t","espp::St25dv::receive::length"],[55,3,1,"_CPPv4N4espp6St25dv10set_recordER4Ndef","espp::St25dv::set_record"],[55,4,1,"_CPPv4N4espp6St25dv10set_recordER4Ndef","espp::St25dv::set_record::record"],[55,3,1,"_CPPv4N4espp6St25dv24start_fast_transfer_modeEv","espp::St25dv::start_fast_transfer_mode"],[55,3,1,"_CPPv4N4espp6St25dv23stop_fast_transfer_modeEv","espp::St25dv::stop_fast_transfer_mode"],[55,3,1,"_CPPv4N4espp6St25dv8transferEP7uint8_t7uint8_t","espp::St25dv::transfer"],[55,4,1,"_CPPv4N4espp6St25dv8transferEP7uint8_t7uint8_t","espp::St25dv::transfer::data"],[55,4,1,"_CPPv4N4espp6St25dv8transferEP7uint8_t7uint8_t","espp::St25dv::transfer::length"],[55,3,1,"_CPPv4N4espp6St25dv5writeENSt11string_viewE","espp::St25dv::write"],[55,4,1,"_CPPv4N4espp6St25dv5writeENSt11string_viewE","espp::St25dv::write::payload"],[55,8,1,"_CPPv4N4espp6St25dv8write_fnE","espp::St25dv::write_fn"],[13,2,1,"_CPPv4N4espp6St7789E","espp::St7789"],[13,3,1,"_CPPv4N4espp6St77895clearE6size_t6size_t6size_t6size_t8uint16_t","espp::St7789::clear"],[13,4,1,"_CPPv4N4espp6St77895clearE6size_t6size_t6size_t6size_t8uint16_t","espp::St7789::clear::color"],[13,4,1,"_CPPv4N4espp6St77895clearE6size_t6size_t6size_t6size_t8uint16_t","espp::St7789::clear::height"],[13,4,1,"_CPPv4N4espp6St77895clearE6size_t6size_t6size_t6size_t8uint16_t","espp::St7789::clear::width"],[13,4,1,"_CPPv4N4espp6St77895clearE6size_t6size_t6size_t6size_t8uint16_t","espp::St7789::clear::x"],[13,4,1,"_CPPv4N4espp6St77895clearE6size_t6size_t6size_t6size_t8uint16_t","espp::St7789::clear::y"],[13,3,1,"_CPPv4N4espp6St77894fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::St7789::fill"],[13,4,1,"_CPPv4N4espp6St77894fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::St7789::fill::area"],[13,4,1,"_CPPv4N4espp6St77894fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::St7789::fill::color_map"],[13,4,1,"_CPPv4N4espp6St77894fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::St7789::fill::drv"],[13,4,1,"_CPPv4N4espp6St77894fillEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t8uint32_t","espp::St7789::fill::flags"],[13,3,1,"_CPPv4N4espp6St77895flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::St7789::flush"],[13,4,1,"_CPPv4N4espp6St77895flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::St7789::flush::area"],[13,4,1,"_CPPv4N4espp6St77895flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::St7789::flush::color_map"],[13,4,1,"_CPPv4N4espp6St77895flushEP13lv_disp_drv_tPK9lv_area_tP10lv_color_t","espp::St7789::flush::drv"],[13,3,1,"_CPPv4N4espp6St778910get_offsetERiRi","espp::St7789::get_offset"],[13,4,1,"_CPPv4N4espp6St778910get_offsetERiRi","espp::St7789::get_offset::x"],[13,4,1,"_CPPv4N4espp6St778910get_offsetERiRi","espp::St7789::get_offset::y"],[13,3,1,"_CPPv4N4espp6St778910initializeERKN15display_drivers6ConfigE","espp::St7789::initialize"],[13,4,1,"_CPPv4N4espp6St778910initializeERKN15display_drivers6ConfigE","espp::St7789::initialize::config"],[13,3,1,"_CPPv4N4espp6St778912send_commandE7uint8_t","espp::St7789::send_command"],[13,4,1,"_CPPv4N4espp6St778912send_commandE7uint8_t","espp::St7789::send_command::command"],[13,3,1,"_CPPv4N4espp6St77899send_dataEPK7uint8_t6size_t8uint32_t","espp::St7789::send_data"],[13,4,1,"_CPPv4N4espp6St77899send_dataEPK7uint8_t6size_t8uint32_t","espp::St7789::send_data::data"],[13,4,1,"_CPPv4N4espp6St77899send_dataEPK7uint8_t6size_t8uint32_t","espp::St7789::send_data::flags"],[13,4,1,"_CPPv4N4espp6St77899send_dataEPK7uint8_t6size_t8uint32_t","espp::St7789::send_data::length"],[13,3,1,"_CPPv4N4espp6St778916set_drawing_areaE6size_t6size_t6size_t6size_t","espp::St7789::set_drawing_area"],[13,3,1,"_CPPv4N4espp6St778916set_drawing_areaEPK9lv_area_t","espp::St7789::set_drawing_area"],[13,4,1,"_CPPv4N4espp6St778916set_drawing_areaEPK9lv_area_t","espp::St7789::set_drawing_area::area"],[13,4,1,"_CPPv4N4espp6St778916set_drawing_areaE6size_t6size_t6size_t6size_t","espp::St7789::set_drawing_area::xe"],[13,4,1,"_CPPv4N4espp6St778916set_drawing_areaE6size_t6size_t6size_t6size_t","espp::St7789::set_drawing_area::xs"],[13,4,1,"_CPPv4N4espp6St778916set_drawing_areaE6size_t6size_t6size_t6size_t","espp::St7789::set_drawing_area::ye"],[13,4,1,"_CPPv4N4espp6St778916set_drawing_areaE6size_t6size_t6size_t6size_t","espp::St7789::set_drawing_area::ys"],[13,3,1,"_CPPv4N4espp6St778910set_offsetEii","espp::St7789::set_offset"],[13,4,1,"_CPPv4N4espp6St778910set_offsetEii","espp::St7789::set_offset::x"],[13,4,1,"_CPPv4N4espp6St778910set_offsetEii","espp::St7789::set_offset::y"],[61,2,1,"_CPPv4N4espp4TaskE","espp::Task"],[61,2,1,"_CPPv4N4espp4Task6ConfigE","espp::Task::Config"],[61,1,1,"_CPPv4N4espp4Task6Config8callbackE","espp::Task::Config::callback"],[61,1,1,"_CPPv4N4espp4Task6Config7core_idE","espp::Task::Config::core_id"],[61,1,1,"_CPPv4N4espp4Task6Config9log_levelE","espp::Task::Config::log_level"],[61,1,1,"_CPPv4N4espp4Task6Config4nameE","espp::Task::Config::name"],[61,1,1,"_CPPv4N4espp4Task6Config8priorityE","espp::Task::Config::priority"],[61,1,1,"_CPPv4N4espp4Task6Config16stack_size_bytesE","espp::Task::Config::stack_size_bytes"],[61,8,1,"_CPPv4N4espp4Task11callback_fnE","espp::Task::callback_fn"],[61,3,1,"_CPPv4N4espp4Task10is_startedEv","espp::Task::is_started"],[61,3,1,"_CPPv4N4espp4Task11make_uniqueERK6Config","espp::Task::make_unique"],[61,4,1,"_CPPv4N4espp4Task11make_uniqueERK6Config","espp::Task::make_unique::config"],[61,3,1,"_CPPv4N4espp4Task5startEv","espp::Task::start"],[61,3,1,"_CPPv4N4espp4Task4stopEv","espp::Task::stop"],[61,3,1,"_CPPv4N4espp4TaskD0Ev","espp::Task::~Task"],[48,2,1,"_CPPv4N4espp11TaskMonitorE","espp::TaskMonitor"],[48,2,1,"_CPPv4N4espp11TaskMonitor6ConfigE","espp::TaskMonitor::Config"],[48,1,1,"_CPPv4N4espp11TaskMonitor6Config6periodE","espp::TaskMonitor::Config::period"],[48,1,1,"_CPPv4N4espp11TaskMonitor6Config21task_stack_size_bytesE","espp::TaskMonitor::Config::task_stack_size_bytes"],[48,3,1,"_CPPv4N4espp11TaskMonitor15get_latest_infoEv","espp::TaskMonitor::get_latest_info"],[51,2,1,"_CPPv4N4espp9TcpSocketE","espp::TcpSocket"],[51,2,1,"_CPPv4N4espp9TcpSocket6ConfigE","espp::TcpSocket::Config"],[51,1,1,"_CPPv4N4espp9TcpSocket6Config9log_levelE","espp::TcpSocket::Config::log_level"],[51,2,1,"_CPPv4N4espp9TcpSocket13ConnectConfigE","espp::TcpSocket::ConnectConfig"],[51,1,1,"_CPPv4N4espp9TcpSocket13ConnectConfig10ip_addressE","espp::TcpSocket::ConnectConfig::ip_address"],[51,1,1,"_CPPv4N4espp9TcpSocket13ConnectConfig4portE","espp::TcpSocket::ConnectConfig::port"],[51,3,1,"_CPPv4N4espp9TcpSocket9TcpSocketERK6Config","espp::TcpSocket::TcpSocket"],[51,4,1,"_CPPv4N4espp9TcpSocket9TcpSocketERK6Config","espp::TcpSocket::TcpSocket::config"],[51,3,1,"_CPPv4N4espp9TcpSocket6acceptEv","espp::TcpSocket::accept"],[51,3,1,"_CPPv4N4espp9TcpSocket19add_multicast_groupERKNSt6stringE","espp::TcpSocket::add_multicast_group"],[51,4,1,"_CPPv4N4espp9TcpSocket19add_multicast_groupERKNSt6stringE","espp::TcpSocket::add_multicast_group::multicast_group"],[51,3,1,"_CPPv4N4espp9TcpSocket4bindEi","espp::TcpSocket::bind"],[51,4,1,"_CPPv4N4espp9TcpSocket4bindEi","espp::TcpSocket::bind::port"],[51,3,1,"_CPPv4N4espp9TcpSocket5closeEv","espp::TcpSocket::close"],[51,3,1,"_CPPv4N4espp9TcpSocket7connectERK13ConnectConfig","espp::TcpSocket::connect"],[51,4,1,"_CPPv4N4espp9TcpSocket7connectERK13ConnectConfig","espp::TcpSocket::connect::connect_config"],[51,3,1,"_CPPv4N4espp9TcpSocket12enable_reuseEv","espp::TcpSocket::enable_reuse"],[51,3,1,"_CPPv4N4espp9TcpSocket13get_ipv4_infoEv","espp::TcpSocket::get_ipv4_info"],[51,3,1,"_CPPv4NK4espp9TcpSocket15get_remote_infoEv","espp::TcpSocket::get_remote_info"],[51,3,1,"_CPPv4NK4espp9TcpSocket12is_connectedEv","espp::TcpSocket::is_connected"],[51,3,1,"_CPPv4N4espp9TcpSocket8is_validEi","espp::TcpSocket::is_valid"],[51,3,1,"_CPPv4NK4espp9TcpSocket8is_validEv","espp::TcpSocket::is_valid"],[51,4,1,"_CPPv4N4espp9TcpSocket8is_validEi","espp::TcpSocket::is_valid::socket_fd"],[51,3,1,"_CPPv4N4espp9TcpSocket6listenEi","espp::TcpSocket::listen"],[51,4,1,"_CPPv4N4espp9TcpSocket6listenEi","espp::TcpSocket::listen::max_pending_connections"],[51,3,1,"_CPPv4N4espp9TcpSocket14make_multicastE7uint8_t7uint8_t","espp::TcpSocket::make_multicast"],[51,4,1,"_CPPv4N4espp9TcpSocket14make_multicastE7uint8_t7uint8_t","espp::TcpSocket::make_multicast::loopback_enabled"],[51,4,1,"_CPPv4N4espp9TcpSocket14make_multicastE7uint8_t7uint8_t","espp::TcpSocket::make_multicast::time_to_live"],[51,3,1,"_CPPv4N4espp9TcpSocket7receiveEP7uint8_t6size_t","espp::TcpSocket::receive"],[51,3,1,"_CPPv4N4espp9TcpSocket7receiveERNSt6vectorI7uint8_tEE6size_t","espp::TcpSocket::receive"],[51,4,1,"_CPPv4N4espp9TcpSocket7receiveEP7uint8_t6size_t","espp::TcpSocket::receive::data"],[51,4,1,"_CPPv4N4espp9TcpSocket7receiveERNSt6vectorI7uint8_tEE6size_t","espp::TcpSocket::receive::data"],[51,4,1,"_CPPv4N4espp9TcpSocket7receiveEP7uint8_t6size_t","espp::TcpSocket::receive::max_num_bytes"],[51,4,1,"_CPPv4N4espp9TcpSocket7receiveERNSt6vectorI7uint8_tEE6size_t","espp::TcpSocket::receive::max_num_bytes"],[51,8,1,"_CPPv4N4espp9TcpSocket19receive_callback_fnE","espp::TcpSocket::receive_callback_fn"],[51,3,1,"_CPPv4N4espp9TcpSocket6reinitEv","espp::TcpSocket::reinit"],[51,8,1,"_CPPv4N4espp9TcpSocket20response_callback_fnE","espp::TcpSocket::response_callback_fn"],[51,3,1,"_CPPv4N4espp9TcpSocket19set_receive_timeoutERKNSt6chrono8durationIfEE","espp::TcpSocket::set_receive_timeout"],[51,4,1,"_CPPv4N4espp9TcpSocket19set_receive_timeoutERKNSt6chrono8durationIfEE","espp::TcpSocket::set_receive_timeout::timeout"],[51,3,1,"_CPPv4N4espp9TcpSocket8transmitENSt11string_viewERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit"],[51,3,1,"_CPPv4N4espp9TcpSocket8transmitERKNSt6vectorI7uint8_tEERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit"],[51,3,1,"_CPPv4N4espp9TcpSocket8transmitERKNSt6vectorIcEERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit"],[51,4,1,"_CPPv4N4espp9TcpSocket8transmitENSt11string_viewERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit::data"],[51,4,1,"_CPPv4N4espp9TcpSocket8transmitERKNSt6vectorI7uint8_tEERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit::data"],[51,4,1,"_CPPv4N4espp9TcpSocket8transmitERKNSt6vectorIcEERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit::data"],[51,4,1,"_CPPv4N4espp9TcpSocket8transmitENSt11string_viewERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit::transmit_config"],[51,4,1,"_CPPv4N4espp9TcpSocket8transmitERKNSt6vectorI7uint8_tEERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit::transmit_config"],[51,4,1,"_CPPv4N4espp9TcpSocket8transmitERKNSt6vectorIcEERKN6detail17TcpTransmitConfigE","espp::TcpSocket::transmit::transmit_config"],[51,3,1,"_CPPv4N4espp9TcpSocketD0Ev","espp::TcpSocket::~TcpSocket"],[35,2,1,"_CPPv4N4espp13TouchpadInputE","espp::TouchpadInput"],[35,2,1,"_CPPv4N4espp13TouchpadInput6ConfigE","espp::TouchpadInput::Config"],[35,1,1,"_CPPv4N4espp13TouchpadInput6Config8invert_xE","espp::TouchpadInput::Config::invert_x"],[35,1,1,"_CPPv4N4espp13TouchpadInput6Config8invert_yE","espp::TouchpadInput::Config::invert_y"],[35,1,1,"_CPPv4N4espp13TouchpadInput6Config9log_levelE","espp::TouchpadInput::Config::log_level"],[35,1,1,"_CPPv4N4espp13TouchpadInput6Config7swap_xyE","espp::TouchpadInput::Config::swap_xy"],[35,1,1,"_CPPv4N4espp13TouchpadInput6Config13touchpad_readE","espp::TouchpadInput::Config::touchpad_read"],[35,3,1,"_CPPv4N4espp13TouchpadInput13TouchpadInputERK6Config","espp::TouchpadInput::TouchpadInput"],[35,4,1,"_CPPv4N4espp13TouchpadInput13TouchpadInputERK6Config","espp::TouchpadInput::TouchpadInput::config"],[35,8,1,"_CPPv4N4espp13TouchpadInput16touchpad_read_fnE","espp::TouchpadInput::touchpad_read_fn"],[35,3,1,"_CPPv4N4espp13TouchpadInputD0Ev","espp::TouchpadInput::~TouchpadInput"],[52,2,1,"_CPPv4N4espp9UdpSocketE","espp::UdpSocket"],[52,2,1,"_CPPv4N4espp9UdpSocket6ConfigE","espp::UdpSocket::Config"],[52,1,1,"_CPPv4N4espp9UdpSocket6Config9log_levelE","espp::UdpSocket::Config::log_level"],[52,2,1,"_CPPv4N4espp9UdpSocket13ReceiveConfigE","espp::UdpSocket::ReceiveConfig"],[52,1,1,"_CPPv4N4espp9UdpSocket13ReceiveConfig11buffer_sizeE","espp::UdpSocket::ReceiveConfig::buffer_size"],[52,1,1,"_CPPv4N4espp9UdpSocket13ReceiveConfig21is_multicast_endpointE","espp::UdpSocket::ReceiveConfig::is_multicast_endpoint"],[52,1,1,"_CPPv4N4espp9UdpSocket13ReceiveConfig15multicast_groupE","espp::UdpSocket::ReceiveConfig::multicast_group"],[52,1,1,"_CPPv4N4espp9UdpSocket13ReceiveConfig19on_receive_callbackE","espp::UdpSocket::ReceiveConfig::on_receive_callback"],[52,1,1,"_CPPv4N4espp9UdpSocket13ReceiveConfig4portE","espp::UdpSocket::ReceiveConfig::port"],[52,2,1,"_CPPv4N4espp9UdpSocket10SendConfigE","espp::UdpSocket::SendConfig"],[52,1,1,"_CPPv4N4espp9UdpSocket10SendConfig10ip_addressE","espp::UdpSocket::SendConfig::ip_address"],[52,1,1,"_CPPv4N4espp9UdpSocket10SendConfig21is_multicast_endpointE","espp::UdpSocket::SendConfig::is_multicast_endpoint"],[52,1,1,"_CPPv4N4espp9UdpSocket10SendConfig20on_response_callbackE","espp::UdpSocket::SendConfig::on_response_callback"],[52,1,1,"_CPPv4N4espp9UdpSocket10SendConfig4portE","espp::UdpSocket::SendConfig::port"],[52,1,1,"_CPPv4N4espp9UdpSocket10SendConfig13response_sizeE","espp::UdpSocket::SendConfig::response_size"],[52,1,1,"_CPPv4N4espp9UdpSocket10SendConfig16response_timeoutE","espp::UdpSocket::SendConfig::response_timeout"],[52,1,1,"_CPPv4N4espp9UdpSocket10SendConfig17wait_for_responseE","espp::UdpSocket::SendConfig::wait_for_response"],[52,3,1,"_CPPv4N4espp9UdpSocket9UdpSocketERK6Config","espp::UdpSocket::UdpSocket"],[52,4,1,"_CPPv4N4espp9UdpSocket9UdpSocketERK6Config","espp::UdpSocket::UdpSocket::config"],[52,3,1,"_CPPv4N4espp9UdpSocket19add_multicast_groupERKNSt6stringE","espp::UdpSocket::add_multicast_group"],[52,4,1,"_CPPv4N4espp9UdpSocket19add_multicast_groupERKNSt6stringE","espp::UdpSocket::add_multicast_group::multicast_group"],[52,3,1,"_CPPv4N4espp9UdpSocket12enable_reuseEv","espp::UdpSocket::enable_reuse"],[52,3,1,"_CPPv4N4espp9UdpSocket13get_ipv4_infoEv","espp::UdpSocket::get_ipv4_info"],[52,3,1,"_CPPv4N4espp9UdpSocket8is_validEi","espp::UdpSocket::is_valid"],[52,3,1,"_CPPv4NK4espp9UdpSocket8is_validEv","espp::UdpSocket::is_valid"],[52,4,1,"_CPPv4N4espp9UdpSocket8is_validEi","espp::UdpSocket::is_valid::socket_fd"],[52,3,1,"_CPPv4N4espp9UdpSocket14make_multicastE7uint8_t7uint8_t","espp::UdpSocket::make_multicast"],[52,4,1,"_CPPv4N4espp9UdpSocket14make_multicastE7uint8_t7uint8_t","espp::UdpSocket::make_multicast::loopback_enabled"],[52,4,1,"_CPPv4N4espp9UdpSocket14make_multicastE7uint8_t7uint8_t","espp::UdpSocket::make_multicast::time_to_live"],[52,3,1,"_CPPv4N4espp9UdpSocket7receiveE6size_tRNSt6vectorI7uint8_tEERN6Socket4InfoE","espp::UdpSocket::receive"],[52,4,1,"_CPPv4N4espp9UdpSocket7receiveE6size_tRNSt6vectorI7uint8_tEERN6Socket4InfoE","espp::UdpSocket::receive::data"],[52,4,1,"_CPPv4N4espp9UdpSocket7receiveE6size_tRNSt6vectorI7uint8_tEERN6Socket4InfoE","espp::UdpSocket::receive::max_num_bytes"],[52,4,1,"_CPPv4N4espp9UdpSocket7receiveE6size_tRNSt6vectorI7uint8_tEERN6Socket4InfoE","espp::UdpSocket::receive::remote_info"],[52,8,1,"_CPPv4N4espp9UdpSocket19receive_callback_fnE","espp::UdpSocket::receive_callback_fn"],[52,8,1,"_CPPv4N4espp9UdpSocket20response_callback_fnE","espp::UdpSocket::response_callback_fn"],[52,3,1,"_CPPv4N4espp9UdpSocket4sendENSt11string_viewERK10SendConfig","espp::UdpSocket::send"],[52,3,1,"_CPPv4N4espp9UdpSocket4sendERKNSt6vectorI7uint8_tEERK10SendConfig","espp::UdpSocket::send"],[52,4,1,"_CPPv4N4espp9UdpSocket4sendENSt11string_viewERK10SendConfig","espp::UdpSocket::send::data"],[52,4,1,"_CPPv4N4espp9UdpSocket4sendERKNSt6vectorI7uint8_tEERK10SendConfig","espp::UdpSocket::send::data"],[52,4,1,"_CPPv4N4espp9UdpSocket4sendENSt11string_viewERK10SendConfig","espp::UdpSocket::send::send_config"],[52,4,1,"_CPPv4N4espp9UdpSocket4sendERKNSt6vectorI7uint8_tEERK10SendConfig","espp::UdpSocket::send::send_config"],[52,3,1,"_CPPv4N4espp9UdpSocket19set_receive_timeoutERKNSt6chrono8durationIfEE","espp::UdpSocket::set_receive_timeout"],[52,4,1,"_CPPv4N4espp9UdpSocket19set_receive_timeoutERKNSt6chrono8durationIfEE","espp::UdpSocket::set_receive_timeout::timeout"],[52,3,1,"_CPPv4N4espp9UdpSocket15start_receivingERN4Task6ConfigERK13ReceiveConfig","espp::UdpSocket::start_receiving"],[52,4,1,"_CPPv4N4espp9UdpSocket15start_receivingERN4Task6ConfigERK13ReceiveConfig","espp::UdpSocket::start_receiving::receive_config"],[52,4,1,"_CPPv4N4espp9UdpSocket15start_receivingERN4Task6ConfigERK13ReceiveConfig","espp::UdpSocket::start_receiving::task_config"],[52,3,1,"_CPPv4N4espp9UdpSocketD0Ev","espp::UdpSocket::~UdpSocket"],[47,2,1,"_CPPv4I0EN4espp8Vector2dE","espp::Vector2d"],[47,5,1,"_CPPv4I0EN4espp8Vector2dE","espp::Vector2d::T"],[47,3,1,"_CPPv4N4espp8Vector2d8Vector2dE1T1T","espp::Vector2d::Vector2d"],[47,3,1,"_CPPv4N4espp8Vector2d8Vector2dERK8Vector2d","espp::Vector2d::Vector2d"],[47,4,1,"_CPPv4N4espp8Vector2d8Vector2dERK8Vector2d","espp::Vector2d::Vector2d::other"],[47,4,1,"_CPPv4N4espp8Vector2d8Vector2dE1T1T","espp::Vector2d::Vector2d::x"],[47,4,1,"_CPPv4N4espp8Vector2d8Vector2dE1T1T","espp::Vector2d::Vector2d::y"],[47,3,1,"_CPPv4NK4espp8Vector2d3dotERK8Vector2d","espp::Vector2d::dot"],[47,4,1,"_CPPv4NK4espp8Vector2d3dotERK8Vector2d","espp::Vector2d::dot::other"],[47,3,1,"_CPPv4NK4espp8Vector2d9magnitudeEv","espp::Vector2d::magnitude"],[47,3,1,"_CPPv4NK4espp8Vector2d17magnitude_squaredEv","espp::Vector2d::magnitude_squared"],[47,3,1,"_CPPv4NK4espp8Vector2d10normalizedEv","espp::Vector2d::normalized"],[47,3,1,"_CPPv4NK4espp8Vector2dmlERK1T","espp::Vector2d::operator*"],[47,4,1,"_CPPv4NK4espp8Vector2dmlERK1T","espp::Vector2d::operator*::v"],[47,3,1,"_CPPv4N4espp8Vector2dmLERK1T","espp::Vector2d::operator*="],[47,4,1,"_CPPv4N4espp8Vector2dmLERK1T","espp::Vector2d::operator*=::v"],[47,3,1,"_CPPv4NK4espp8Vector2dplERK8Vector2d","espp::Vector2d::operator+"],[47,4,1,"_CPPv4NK4espp8Vector2dplERK8Vector2d","espp::Vector2d::operator+::rhs"],[47,3,1,"_CPPv4N4espp8Vector2dpLERK8Vector2d","espp::Vector2d::operator+="],[47,4,1,"_CPPv4N4espp8Vector2dpLERK8Vector2d","espp::Vector2d::operator+=::rhs"],[47,3,1,"_CPPv4NK4espp8Vector2dmiERK8Vector2d","espp::Vector2d::operator-"],[47,3,1,"_CPPv4NK4espp8Vector2dmiEv","espp::Vector2d::operator-"],[47,4,1,"_CPPv4NK4espp8Vector2dmiERK8Vector2d","espp::Vector2d::operator-::rhs"],[47,3,1,"_CPPv4N4espp8Vector2dmIERK8Vector2d","espp::Vector2d::operator-="],[47,4,1,"_CPPv4N4espp8Vector2dmIERK8Vector2d","espp::Vector2d::operator-=::rhs"],[47,3,1,"_CPPv4NK4espp8Vector2ddvERK1T","espp::Vector2d::operator/"],[47,3,1,"_CPPv4NK4espp8Vector2ddvERK8Vector2d","espp::Vector2d::operator/"],[47,4,1,"_CPPv4NK4espp8Vector2ddvERK1T","espp::Vector2d::operator/::v"],[47,4,1,"_CPPv4NK4espp8Vector2ddvERK8Vector2d","espp::Vector2d::operator/::v"],[47,3,1,"_CPPv4N4espp8Vector2ddVERK1T","espp::Vector2d::operator/="],[47,3,1,"_CPPv4N4espp8Vector2ddVERK8Vector2d","espp::Vector2d::operator/="],[47,4,1,"_CPPv4N4espp8Vector2ddVERK1T","espp::Vector2d::operator/=::v"],[47,4,1,"_CPPv4N4espp8Vector2ddVERK8Vector2d","espp::Vector2d::operator/=::v"],[47,3,1,"_CPPv4N4espp8Vector2daSERK8Vector2d","espp::Vector2d::operator="],[47,4,1,"_CPPv4N4espp8Vector2daSERK8Vector2d","espp::Vector2d::operator=::other"],[47,3,1,"_CPPv4N4espp8Vector2dixEi","espp::Vector2d::operator[]"],[47,4,1,"_CPPv4N4espp8Vector2dixEi","espp::Vector2d::operator[]::index"],[47,3,1,"_CPPv4I0_PNSt9enable_ifINSt17is_floating_pointI1UE5valueEE4typeEENK4espp8Vector2d7rotatedE8Vector2d1T","espp::Vector2d::rotated"],[47,5,1,"_CPPv4I0_PNSt9enable_ifINSt17is_floating_pointI1UE5valueEE4typeEENK4espp8Vector2d7rotatedE8Vector2d1T","espp::Vector2d::rotated::U"],[47,4,1,"_CPPv4I0_PNSt9enable_ifINSt17is_floating_pointI1UE5valueEE4typeEENK4espp8Vector2d7rotatedE8Vector2d1T","espp::Vector2d::rotated::radians"],[47,3,1,"_CPPv4N4espp8Vector2d1xE1T","espp::Vector2d::x"],[47,3,1,"_CPPv4NK4espp8Vector2d1xEv","espp::Vector2d::x"],[47,4,1,"_CPPv4N4espp8Vector2d1xE1T","espp::Vector2d::x::v"],[47,3,1,"_CPPv4N4espp8Vector2d1yE1T","espp::Vector2d::y"],[47,3,1,"_CPPv4NK4espp8Vector2d1yEv","espp::Vector2d::y"],[47,4,1,"_CPPv4N4espp8Vector2d1yE1T","espp::Vector2d::y::v"],[63,2,1,"_CPPv4N4espp6WifiApE","espp::WifiAp"],[63,2,1,"_CPPv4N4espp6WifiAp6ConfigE","espp::WifiAp::Config"],[63,1,1,"_CPPv4N4espp6WifiAp6Config7channelE","espp::WifiAp::Config::channel"],[63,1,1,"_CPPv4N4espp6WifiAp6Config9log_levelE","espp::WifiAp::Config::log_level"],[63,1,1,"_CPPv4N4espp6WifiAp6Config22max_number_of_stationsE","espp::WifiAp::Config::max_number_of_stations"],[63,1,1,"_CPPv4N4espp6WifiAp6Config8passwordE","espp::WifiAp::Config::password"],[63,1,1,"_CPPv4N4espp6WifiAp6Config4ssidE","espp::WifiAp::Config::ssid"],[63,3,1,"_CPPv4N4espp6WifiAp6WifiApERK6Config","espp::WifiAp::WifiAp"],[63,4,1,"_CPPv4N4espp6WifiAp6WifiApERK6Config","espp::WifiAp::WifiAp::config"],[64,2,1,"_CPPv4N4espp7WifiStaE","espp::WifiSta"],[64,2,1,"_CPPv4N4espp7WifiSta6ConfigE","espp::WifiSta::Config"],[64,1,1,"_CPPv4N4espp7WifiSta6Config6ap_macE","espp::WifiSta::Config::ap_mac"],[64,1,1,"_CPPv4N4espp7WifiSta6Config7channelE","espp::WifiSta::Config::channel"],[64,1,1,"_CPPv4N4espp7WifiSta6Config9log_levelE","espp::WifiSta::Config::log_level"],[64,1,1,"_CPPv4N4espp7WifiSta6Config19num_connect_retriesE","espp::WifiSta::Config::num_connect_retries"],[64,1,1,"_CPPv4N4espp7WifiSta6Config12on_connectedE","espp::WifiSta::Config::on_connected"],[64,1,1,"_CPPv4N4espp7WifiSta6Config15on_disconnectedE","espp::WifiSta::Config::on_disconnected"],[64,1,1,"_CPPv4N4espp7WifiSta6Config9on_got_ipE","espp::WifiSta::Config::on_got_ip"],[64,1,1,"_CPPv4N4espp7WifiSta6Config8passwordE","espp::WifiSta::Config::password"],[64,1,1,"_CPPv4N4espp7WifiSta6Config10set_ap_macE","espp::WifiSta::Config::set_ap_mac"],[64,1,1,"_CPPv4N4espp7WifiSta6Config4ssidE","espp::WifiSta::Config::ssid"],[64,3,1,"_CPPv4N4espp7WifiSta7WifiStaERK6Config","espp::WifiSta::WifiSta"],[64,4,1,"_CPPv4N4espp7WifiSta7WifiStaERK6Config","espp::WifiSta::WifiSta::config"],[64,8,1,"_CPPv4N4espp7WifiSta16connect_callbackE","espp::WifiSta::connect_callback"],[64,8,1,"_CPPv4N4espp7WifiSta19disconnect_callbackE","espp::WifiSta::disconnect_callback"],[64,8,1,"_CPPv4N4espp7WifiSta11ip_callbackE","espp::WifiSta::ip_callback"],[64,3,1,"_CPPv4N4espp7WifiSta12is_connectedEv","espp::WifiSta::is_connected"],[64,3,1,"_CPPv4N4espp7WifiStaD0Ev","espp::WifiSta::~WifiSta"],[11,2,1,"_CPPv4N4espp21__csv_documentation__E","espp::__csv_documentation__"],[59,2,1,"_CPPv4N4espp31__serialization_documentation__E","espp::__serialization_documentation__"],[60,2,1,"_CPPv4N4espp31__state_machine_documentation__E","espp::__state_machine_documentation__"],[60,2,1,"_CPPv4N4espp13state_machine16DeepHistoryStateE","espp::state_machine::DeepHistoryState"],[60,3,1,"_CPPv4N4espp13state_machine16DeepHistoryState5entryEv","espp::state_machine::DeepHistoryState::entry"],[60,3,1,"_CPPv4N4espp13state_machine16DeepHistoryState4exitEv","espp::state_machine::DeepHistoryState::exit"],[60,3,1,"_CPPv4N4espp13state_machine16DeepHistoryState12exitChildrenEv","espp::state_machine::DeepHistoryState::exitChildren"],[60,3,1,"_CPPv4N4espp13state_machine16DeepHistoryState14getActiveChildEv","espp::state_machine::DeepHistoryState::getActiveChild"],[60,3,1,"_CPPv4N4espp13state_machine16DeepHistoryState13getActiveLeafEv","espp::state_machine::DeepHistoryState::getActiveLeaf"],[60,3,1,"_CPPv4N4espp13state_machine16DeepHistoryState10getInitialEv","espp::state_machine::DeepHistoryState::getInitial"],[60,3,1,"_CPPv4N4espp13state_machine16DeepHistoryState14getParentStateEv","espp::state_machine::DeepHistoryState::getParentState"],[60,3,1,"_CPPv4N4espp13state_machine16DeepHistoryState11handleEventEP9EventBase","espp::state_machine::DeepHistoryState::handleEvent"],[60,4,1,"_CPPv4N4espp13state_machine16DeepHistoryState11handleEventEP9EventBase","espp::state_machine::DeepHistoryState::handleEvent::event"],[60,3,1,"_CPPv4N4espp13state_machine16DeepHistoryState10initializeEv","espp::state_machine::DeepHistoryState::initialize"],[60,3,1,"_CPPv4N4espp13state_machine16DeepHistoryState10makeActiveEv","espp::state_machine::DeepHistoryState::makeActive"],[60,3,1,"_CPPv4N4espp13state_machine16DeepHistoryState14setActiveChildEP9StateBase","espp::state_machine::DeepHistoryState::setActiveChild"],[60,4,1,"_CPPv4N4espp13state_machine16DeepHistoryState14setActiveChildEP9StateBase","espp::state_machine::DeepHistoryState::setActiveChild::childState"],[60,3,1,"_CPPv4N4espp13state_machine16DeepHistoryState14setDeepHistoryEv","espp::state_machine::DeepHistoryState::setDeepHistory"],[60,3,1,"_CPPv4N4espp13state_machine16DeepHistoryState14setParentStateEP9StateBase","espp::state_machine::DeepHistoryState::setParentState"],[60,4,1,"_CPPv4N4espp13state_machine16DeepHistoryState14setParentStateEP9StateBase","espp::state_machine::DeepHistoryState::setParentState::parent"],[60,3,1,"_CPPv4N4espp13state_machine16DeepHistoryState17setShallowHistoryEv","espp::state_machine::DeepHistoryState::setShallowHistory"],[60,3,1,"_CPPv4N4espp13state_machine16DeepHistoryState4tickEv","espp::state_machine::DeepHistoryState::tick"],[60,2,1,"_CPPv4N4espp13state_machine9EventBaseE","espp::state_machine::EventBase"],[60,2,1,"_CPPv4N4espp13state_machine19ShallowHistoryStateE","espp::state_machine::ShallowHistoryState"],[60,3,1,"_CPPv4N4espp13state_machine19ShallowHistoryState5entryEv","espp::state_machine::ShallowHistoryState::entry"],[60,3,1,"_CPPv4N4espp13state_machine19ShallowHistoryState4exitEv","espp::state_machine::ShallowHistoryState::exit"],[60,3,1,"_CPPv4N4espp13state_machine19ShallowHistoryState12exitChildrenEv","espp::state_machine::ShallowHistoryState::exitChildren"],[60,3,1,"_CPPv4N4espp13state_machine19ShallowHistoryState14getActiveChildEv","espp::state_machine::ShallowHistoryState::getActiveChild"],[60,3,1,"_CPPv4N4espp13state_machine19ShallowHistoryState13getActiveLeafEv","espp::state_machine::ShallowHistoryState::getActiveLeaf"],[60,3,1,"_CPPv4N4espp13state_machine19ShallowHistoryState10getInitialEv","espp::state_machine::ShallowHistoryState::getInitial"],[60,3,1,"_CPPv4N4espp13state_machine19ShallowHistoryState14getParentStateEv","espp::state_machine::ShallowHistoryState::getParentState"],[60,3,1,"_CPPv4N4espp13state_machine19ShallowHistoryState11handleEventEP9EventBase","espp::state_machine::ShallowHistoryState::handleEvent"],[60,4,1,"_CPPv4N4espp13state_machine19ShallowHistoryState11handleEventEP9EventBase","espp::state_machine::ShallowHistoryState::handleEvent::event"],[60,3,1,"_CPPv4N4espp13state_machine19ShallowHistoryState10initializeEv","espp::state_machine::ShallowHistoryState::initialize"],[60,3,1,"_CPPv4N4espp13state_machine19ShallowHistoryState10makeActiveEv","espp::state_machine::ShallowHistoryState::makeActive"],[60,3,1,"_CPPv4N4espp13state_machine19ShallowHistoryState14setActiveChildEP9StateBase","espp::state_machine::ShallowHistoryState::setActiveChild"],[60,4,1,"_CPPv4N4espp13state_machine19ShallowHistoryState14setActiveChildEP9StateBase","espp::state_machine::ShallowHistoryState::setActiveChild::childState"],[60,3,1,"_CPPv4N4espp13state_machine19ShallowHistoryState14setDeepHistoryEv","espp::state_machine::ShallowHistoryState::setDeepHistory"],[60,3,1,"_CPPv4N4espp13state_machine19ShallowHistoryState14setParentStateEP9StateBase","espp::state_machine::ShallowHistoryState::setParentState"],[60,4,1,"_CPPv4N4espp13state_machine19ShallowHistoryState14setParentStateEP9StateBase","espp::state_machine::ShallowHistoryState::setParentState::parent"],[60,3,1,"_CPPv4N4espp13state_machine19ShallowHistoryState17setShallowHistoryEv","espp::state_machine::ShallowHistoryState::setShallowHistory"],[60,3,1,"_CPPv4N4espp13state_machine19ShallowHistoryState4tickEv","espp::state_machine::ShallowHistoryState::tick"],[60,2,1,"_CPPv4N4espp13state_machine9StateBaseE","espp::state_machine::StateBase"],[60,3,1,"_CPPv4N4espp13state_machine9StateBase5entryEv","espp::state_machine::StateBase::entry"],[60,3,1,"_CPPv4N4espp13state_machine9StateBase4exitEv","espp::state_machine::StateBase::exit"],[60,3,1,"_CPPv4N4espp13state_machine9StateBase12exitChildrenEv","espp::state_machine::StateBase::exitChildren"],[60,3,1,"_CPPv4N4espp13state_machine9StateBase14getActiveChildEv","espp::state_machine::StateBase::getActiveChild"],[60,3,1,"_CPPv4N4espp13state_machine9StateBase13getActiveLeafEv","espp::state_machine::StateBase::getActiveLeaf"],[60,3,1,"_CPPv4N4espp13state_machine9StateBase10getInitialEv","espp::state_machine::StateBase::getInitial"],[60,3,1,"_CPPv4N4espp13state_machine9StateBase14getParentStateEv","espp::state_machine::StateBase::getParentState"],[60,3,1,"_CPPv4N4espp13state_machine9StateBase11handleEventEP9EventBase","espp::state_machine::StateBase::handleEvent"],[60,4,1,"_CPPv4N4espp13state_machine9StateBase11handleEventEP9EventBase","espp::state_machine::StateBase::handleEvent::event"],[60,3,1,"_CPPv4N4espp13state_machine9StateBase10initializeEv","espp::state_machine::StateBase::initialize"],[60,3,1,"_CPPv4N4espp13state_machine9StateBase10makeActiveEv","espp::state_machine::StateBase::makeActive"],[60,3,1,"_CPPv4N4espp13state_machine9StateBase14setActiveChildEP9StateBase","espp::state_machine::StateBase::setActiveChild"],[60,4,1,"_CPPv4N4espp13state_machine9StateBase14setActiveChildEP9StateBase","espp::state_machine::StateBase::setActiveChild::childState"],[60,3,1,"_CPPv4N4espp13state_machine9StateBase14setDeepHistoryEv","espp::state_machine::StateBase::setDeepHistory"],[60,3,1,"_CPPv4N4espp13state_machine9StateBase14setParentStateEP9StateBase","espp::state_machine::StateBase::setParentState"],[60,4,1,"_CPPv4N4espp13state_machine9StateBase14setParentStateEP9StateBase","espp::state_machine::StateBase::setParentState::parent"],[60,3,1,"_CPPv4N4espp13state_machine9StateBase17setShallowHistoryEv","espp::state_machine::StateBase::setShallowHistory"],[60,3,1,"_CPPv4N4espp13state_machine9StateBase4tickEv","espp::state_machine::StateBase::tick"]]},objnames:{"0":["c","macro","C macro"],"1":["cpp","member","C++ member"],"2":["cpp","class","C++ class"],"3":["cpp","function","C++ function"],"4":["cpp","functionParam","C++ function parameter"],"5":["cpp","templateParam","C++ template parameter"],"6":["cpp","enum","C++ enum"],"7":["cpp","enumerator","C++ enumerator"],"8":["cpp","type","C++ type"]},objtypes:{"0":"c:macro","1":"cpp:member","2":"cpp:class","3":"cpp:function","4":"cpp:functionParam","5":"cpp:templateParam","6":"cpp:enum","7":"cpp:enumerator","8":"cpp:type"},terms:{"0":[1,5,6,8,9,10,11,12,13,15,16,19,21,22,23,25,30,31,36,38,39,40,41,42,44,46,47,48,50,51,52,54,55,56,57,58,61,64],"00":16,"000f":6,"00b":54,"01":[12,30],"010f":6,"01f":[16,19],"02":5,"024v":1,"02x":55,"03":[41,48],"04":30,"048v":1,"05":[],"06f":61,"0755":21,"08":[],"096v":1,"0b00000001":55,"0b00000010":55,"0b00000011":36,"0b00000100":55,"0b00001000":55,"0b0000110":19,"0b00010000":55,"0b00100000":55,"0b00111111":36,"0b0100000":38,"0b01000000":55,"0b0110110":16,"0b10000000":55,"0b11":36,"0f":[5,6,10,16,19,30,39,40,41,42,44,48,56,57],"0s":40,"0x00":[36,38,55],"0x0000":13,"0x000000":55,"0x060504030201":55,"0x48":1,"0x58":36,"0xa6":55,"0xae":55,"0xff":55,"0xffffffffffff":54,"1":[1,2,5,6,8,9,10,11,12,13,15,16,19,20,21,22,23,31,36,38,39,40,41,42,44,46,50,51,52,54,55,56,58,59,61,63],"10":[6,8,12,15,40,41,48,59,61],"100":[13,38,39,40,56],"1000":[2,6,13,15,40,56,58],"1000000":57,"10000000":57,"100m":[13,40,48,56,61,64],"1024":[1,2,6,10,16,19,31,36,38,48,51,52,55,57,61],"10m":[40,51,61],"123":31,"127":[51,52,54],"128":[1,51,52,54,58],"12800":13,"13":[36,63],"135":13,"14":36,"144v":1,"15":[36,59],"1500":58,"16":[1,13,36,54,55],"1600":1,"16384":[13,16,19],"1678892742599":31,"16kb":55,"1700":[10,39],"1784807f":[],"18":57,"192":54,"1b":54,"1f":[15,39,40,56],"1s":[30,31,41,48,51,52,56,58,60,61],"2":[1,2,6,10,11,12,16,19,20,21,22,23,25,36,39,40,41,44,47,48,51,52,54,55,56,57,58],"20":[2,6,13,21],"200":[30,58],"200m":[1,55,61],"20143":16,"2046":54,"20df":16,"20m":10,"21":[6,10],"224":[50,51,52],"23017":38,"239":[50,51,52],"23s17":38,"240":13,"2400":1,"2435":58,"24b":55,"25":36,"250":1,"250m":15,"255":[9,36,50,51,52,54,55,57],"256":[2,54,57,58],"256v":1,"264":58,"265":58,"2f":10,"2pi":[16,19],"3":[1,5,6,10,11,12,26,30,36,38,40,51,52,54,57,59],"300f":6,"300m":41,"31":10,"32":[1,10,54],"320":[6,13],"33":10,"3300":[1,39],"34":6,"36":[6,10],"360":[9,16,19,57],"36005":16,"37":10,"37ma":36,"38":10,"39":10,"3914752":6,"3986":54,"3f":[1,15,16,19,31,36,38,41,56],"4":[1,6,10,11,16,19,31,42,51,52,54,55,57,61,63],"40":13,"4096":15,"42":[10,59],"43173a3eb323":16,"475":1,"48":54,"4886":36,"48b":55,"490":1,"4b":54,"4kb":55,"5":[1,2,6,10,11,16,19,23,25,30,31,36,38,44,48,51,52,54,55,57,59],"50":[13,36,40,55,57],"5000":[40,51,52,58],"5001":58,"500m":[2,4,10,20,39,41,48,61],"50m":[16,19,36,38,57],"50u":57,"512v":1,"53":13,"5f":[16,19,40,44,52,57],"5m":56,"5s":20,"6":[1,5,9,10,11,31,51,52,54,64],"60":[13,16,19],"61067330":21,"61622309":55,"64":[1,57],"649ee61c":16,"64kb":55,"7":[6,38,54,59],"720":[16,19],"72593":31,"75":36,"8":[1,9,12,31,36,38,48,54,55],"8192":15,"8554":58,"860":1,"8f9a":16,"9":[15,36,57],"920":1,"9692":8,"9781449324094":54,"9e10":16,"abstract":[33,49,50,61],"boolean":21,"break":60,"byte":[1,2,12,13,16,19,21,31,36,38,48,50,51,52,54,55,57,58],"case":[16,19,52,57],"char":[21,51,58,61],"class":24,"const":[1,2,4,5,6,8,9,10,11,12,13,15,16,19,20,21,22,23,25,26,28,30,31,35,36,38,39,40,41,42,44,46,47,50,51,52,54,55,56,57,58,61,63,64],"default":[1,8,10,12,13,30,31,36,38,42,44,46,47,48,57,58,59,63,64],"do":[4,10,11,31,48,58,59,60,61],"enum":[1,10,12,31,36,38,39,41,54],"final":[10,16,19,36,38,48,54,55,58,60],"float":[1,2,4,5,6,9,10,12,15,16,19,22,23,25,26,30,31,36,38,39,40,41,42,43,44,47,48,50,51,52,55,56,57,60,61],"function":[1,2,4,5,6,8,9,10,12,13,15,16,19,20,21,22,23,24,25,26,30,31,32,33,35,36,38,39,40,41,42,43,44,46,47,48,49,50,51,52,54,55,56,57,58,60,61,63,64],"goto":57,"int":[1,2,4,5,8,10,13,15,16,19,21,28,36,40,47,48,50,51,52,54,55,56,57,58,59,60,61],"long":58,"new":[4,5,6,8,13,20,22,23,25,26,28,36,39,40,41,44,46,47,54,55,56,58,60,61],"public":[1,2,4,5,6,8,9,10,12,13,15,16,19,20,21,22,23,25,26,28,30,31,35,36,38,39,40,41,42,44,46,47,48,50,51,52,54,55,56,57,58,60,61,63,64],"return":[1,2,4,5,6,8,9,10,12,13,15,16,19,20,21,22,23,25,26,28,30,31,36,38,39,40,41,42,44,46,47,48,50,51,52,54,55,56,57,58,60,61,64],"short":[10,54],"static":[1,6,8,13,16,19,20,21,30,31,36,38,40,43,48,50,51,52,54,55,57,60,61],"super":11,"switch":[12,57],"throw":[8,21],"true":[5,10,11,12,13,15,16,19,20,21,28,35,38,39,40,41,46,50,51,52,56,57,58,60,61,64],"void":[1,5,6,8,10,12,13,16,19,20,22,25,28,30,31,35,36,38,39,40,41,44,46,47,50,51,52,55,56,57,58,60,64],"while":[8,13,20,40,41,48,58,60,61,64],A:[5,10,20,27,28,38,51,54,58],As:20,By:8,For:[12,26,31,58,61],IN:31,IT:[21,55],If:[4,5,8,9,30,35,40,46,50,51,52,58,60,61,63,64],In:[10,20,36],Is:[50,51,52],It:[2,4,6,8,10,11,16,19,20,21,28,30,31,36,40,56,57,58,60,61],NOT:10,No:[30,41,54],Not:21,ON:8,ONE:1,On:30,The:[1,2,4,5,6,7,8,9,10,11,12,15,16,19,20,21,22,23,25,26,27,28,29,30,31,36,38,39,40,41,42,43,44,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,63,64],There:[16,18,19,24,32,37,48,60],These:[7,58],To:[20,58],Will:[5,16,19,46,48,50,55,58,60],With:39,_1:48,_2:48,_:11,__csv_documentation__:11,__gnu_linux__:[11,59],__linux__:8,__serialization_documentation__:59,__state_machine_documentation__:60,__unnamed11__:55,__unnamed13__:55,__unnamed7__:54,__unnamed9__:54,_activest:60,_build:28,_cli:8,_event_data:60,_in:8,_out:8,_parentst:60,_rate_limit:41,a0:[38,39],a1:39,a2:38,a_0:22,a_1:22,a_2:22,a_gpio:15,a_pin:38,ab:46,abi:[18,33],abi_encod:15,abiencod:[],abil:[41,48],abl:[28,39,51],about:[8,11,48,52,54,55,57,60],abov:[8,16,19,20,36,57],absolut:[16,19,21,54],absolute_uri:54,abxi:10,ac:54,acceler:25,accept:[28,51,58],access:[15,21,33,50,55,60,62,64],accord:[21,36,38,39,40,41,58],accordingli:10,accumul:[15,16,19],accur:56,acknowledg:51,across:[2,30],act:54,action:[60,61],activ:[5,10,38,55,58,60],active_high:38,active_low:10,activeleaf:60,actual:[1,10,13,20,30,31,58,60],actuat:[31,32],ad0:36,ad1:36,ad:[1,6,10,20,47,58],adafruit:[10,31,36,54],adc:[10,15,31,33,56],adc_atten_db_11:[2,4,10,39],adc_channel_1:[2,4,10],adc_channel_2:[2,4,10],adc_channel_8:39,adc_channel_9:39,adc_channel_t:[2,4],adc_conv_single_unit_2:2,adc_digi_convert_mode_t:2,adc_typ:0,adc_unit_2:[2,4,10,39],adc_unit_t:4,adcconfig:[2,4,10,39],add:[5,9,13,47,50,51,52,58],add_multicast_group:[50,51,52],add_publish:20,add_scan:58,add_subscrib:20,addit:[2,9,12,33,39,47,61],addition:[8,58],addr:[1,10,31,50,55],address:[1,13,16,19,28,31,36,38,50,51,52,54,55,58,64],adjust:[30,51],ads1015:1,ads1015config:[1,10],ads1015rat:1,ads1115:1,ads1115config:1,ads1115rat:1,ads1x15:[3,10,33],ads_read:[1,10],ads_read_task_fn:[1,10],ads_task:[1,10],ads_writ:[1,10],adventur:11,advis:46,ae:54,affect:[16,19,58],affin:61,after:[12,39,46,50,51,52,55,57,58,64],again:[20,55],against:55,agent:58,alert_1000m:31,alert_750m:31,algorithm:[5,6,7,9],alias:[16,19],aliv:28,all:[4,5,8,20,21,31,41,46,48,52,57,58,60],alloc:[2,12,48,61],allocatingconfig:[12,13],allocation_flag:12,allow:[1,2,4,5,6,8,10,12,15,16,19,30,31,36,38,39,40,44,46,49,50,51,52,55,56,57,58,60,61],along:[43,55],alow:44,alpaca:[20,33],alpha:[40,44],alreadi:[20,21,22,51,52,58,61],also:[8,10,11,12,13,16,19,20,21,30,31,36,48,57,58,60,61],alter_unit:2,altern:[2,21,54],alwai:[2,4,5,16,19,21,31,46,48,58,60],am:16,amount:[2,21,46,47],amp:6,amplitud:44,an:[0,4,5,8,9,10,15,16,19,21,22,23,25,26,27,29,30,31,35,36,38,39,42,44,46,48,50,51,52,54,57,58,60,61,64],analog:[2,4,31,39],analogjoystickconfig:10,analyz:48,anaolg:10,android:[54,55],angl:[6,16,19],angle_filt:6,angle_openloop:6,angle_pid_config:6,ani:[4,5,6,8,11,16,19,28,50,51,52,57,58,60,61],anonym:[20,54],anoth:[8,20,21,47],answer:8,anyth:[11,41,48,59,60],anywher:8,ap:[33,62,64],ap_mac:64,apa:54,api:33,app:[54,55],app_main:48,appear:54,append:58,appli:[2,39],applic:[33,58],appropri:[5,51,52],approxim:[39,43],ar:[3,5,6,7,8,10,13,14,15,18,20,21,24,30,31,32,36,37,38,39,41,46,48,49,51,54,55,56,58,59,60,61,62],arari:59,arbitrari:8,area:[12,13],arg:41,argument:[28,41],arithmet:22,around:[2,4,5,8,11,12,21,35,39,40,41,42,44,46,50,57,59,60,61],arrai:[1,13,16,19,22,25,26,31,36,38,42,50,51,52,55,59],arrow:8,artifact:57,as5600:[18,33],as5600_ds000365_5:16,as5600_read:16,as5600_writ:16,asid:40,ask:61,aspect:8,asset:31,assign:47,associ:[0,2,4,10,12,13,15,20,35,36,38,39,40,42,47,48,50,51,52,61],associt:[50,51,52],assum:[8,51,52],assumpt:[16,19],asymmetr:56,ate:21,atom:[6,10],attach:[13,36],attenu:[0,2,4,10,39],attribut:[1,16,19,36,38,55,57],audio:31,audiovib:31,authent:[28,54],auto:[1,2,4,6,8,10,11,13,15,16,19,20,21,30,31,36,38,39,40,41,48,51,52,55,56,57,59,60,61],autoc:31,automat:[8,9,58,61],autostop:61,avail:[2,15,20,47,55],averag:9,aw9523:[33,37],aw9523_read:36,aw9523_writ:36,aw9523b:36,awaken:11,ax:[10,39],axi:[6,10,39],b0:54,b1:54,b2:54,b3:54,b4:54,b7:38,b:[5,9,10,11,15,27,36,38,44,48,54,55,57,59,61],b_0:22,b_1:22,b_2:22,b_bright:36,b_down:36,b_gpio:15,b_led:36,b_pin:38,b_up:36,back:[12,21,51,52,57],background:30,backlight:13,backlight_on_valu:13,backlight_pin:13,backspac:8,bad:9,band:54,bandwidth:51,base:[6,9,16,19,22,23,24,25,26,30,40,48,50,55,56,57,58,60],base_encod:57,basic:8,batteri:20,becaus:[6,16,19,21,57],been:[8,22,31,51,52,55,57,58,61],befor:[15,21,30,51,58,60,61,64],beg:21,begin:[8,21,51,52,54,61],behavior:[30,56],being:[1,2,4,6,8,10,15,16,19,20,31,36,38,39,55,56,57,60,61],belong:52,below:[6,60],beta:[40,44],better:[25,56],between:[9,20,29,42,46,55],beyond:[8,11,57],bezier:[33,45],bezierinfo:42,bi:55,bia:30,biequad:22,binari:21,bind:[28,41,48,51,52,58],biquad:[23,24,26,33],biquad_filt:22,biquadfilt:22,biquadfilterdf1:22,biquadfilterdf2:[16,19,22,23,26],biquadrat:22,bit0:57,bit1:57,bit:[10,13,36,38,40,54,55],bldc:[32,33],bldc_driver:5,bldc_haptic:30,bldc_motor:[6,7],bldc_type:6,bldcdriver:[5,6],bldchaptic:30,bldcmotor:[6,16,19,30],ble:[54,55],ble_appear:55,ble_oob_record:55,ble_radio_nam:55,ble_rol:55,blend:9,blerol:[54,55],blob:[8,13],block:[2,4,8,30,40,51,52,57,58,61],block_siz:57,blue:[9,11,57],bluetooth:54,board:13,bob:[6,28],bodmer:13,bool:[5,10,12,13,15,16,19,20,21,28,35,38,39,40,46,50,51,52,56,57,58,60,61,64],both:[2,10,11,22,30,36,39,40,46,54],both_unit:2,bound:[30,51,57],bounded_no_det:30,box:[10,55],boxart:11,br:54,breathing_period:40,breathing_start:40,bredr:54,bright:36,bro:11,broadcast:[52,54],broken:58,brushless:[5,6,7],bsp:13,bt:[54,55],bt_device_class:55,bt_oob_record:55,bt_radio_nam:55,btappear:[54,55],bteir:54,btgoep:54,btl2cap:54,btspp:54,bttype:54,bu:13,bufer:61,buffer:[2,12,51,57,58,59,61],buffer_s:52,build:[24,33,58],built:[11,51,59,60],bundl:10,buscfg:13,busi:52,butterworth:[24,33],butterworth_filt:23,butterworthfilt:[16,19,23,26],button:[10,35,36],buzz1:31,buzz2:31,buzz3:31,buzz4:31,buzz5:31,buzz:[],bytes_encod:57,bytes_encoder_config:57,bytes_written:59,c:[5,8,11,13,20,21,33,54,57,59],c_str:21,cach:58,calcul:[6,30],calibr:[4,6,31,39],call:[2,4,8,9,10,12,15,16,19,20,30,31,39,41,48,50,51,52,55,56,57,58,60,61,63,64],call_onc:20,callback:[1,2,4,6,10,12,15,16,19,20,31,36,38,39,40,48,49,50,51,52,55,56,57,58,60,61],callback_fn:61,camera:58,can:[5,6,7,8,9,10,12,13,15,16,19,21,28,29,30,31,39,40,41,42,46,48,51,52,54,55,56,57,58,59,60,61,63],can_chang:40,cannot:[21,51,55,58,59],capabl:[36,54,55],captur:38,carrier:54,caus:[58,60],cb:[13,20,58],cc:55,cdn:36,cell:11,center:[10,30,39,46],central:54,central_onli:54,central_peripher:54,certain:[30,60],cf:54,ch04:54,chang:[6,9,30,36,38,40,41,44,56,58,60],change_gain:56,channel:[0,1,2,4,5,9,10,15,39,40,57,58,63,64],channelconfig:40,charact:8,chart:48,chdir:21,check:[5,21,28,40,50,51,55,58,64],child:60,childstat:60,chip:[1,2,15,18,36,37,38,55],choos:5,chrono:[1,6,12,16,19,31,36,38,40,41,48,50,51,52,55,56,57,60,61],chrono_liter:[1,10,31],chunk:54,cin:[8,60],circl:39,circular:39,clamp:[5,9,56,57],class_of_devic:54,classic:54,clean:[21,51,61],cleanup:[21,50],clear:[13,15,55,56,58],cli:[33,60],click:[],client:[28,29,33,49,50],client_socket:[51,52],client_task:[51,52],client_task_fn:[51,52],clifilesesson:8,clisess:8,clk_speed:[1,10,16,19,31,36,38,55],clock:[54,57],clock_spe:13,clock_speed_hz:13,clock_src:57,clockwis:[],close:[6,7,16,19,21,30,51,58],co:57,coars:30,coarse_values_strong_det:30,code:[3,6,7,8,13,14,15,20,21,39,41,48,49,54,56,57,58,59,60,61,62],coeffici:[22,25,27,44],collect:58,color:[8,12,13,33,57],color_data:12,color_map:13,com:[5,6,8,11,13,16,21,22,26,30,31,36,41,52,54,55,57,58,60,63,64],combin:[50,51,52],combo:50,come:52,comma:11,command:[6,13,28,33],common:[10,13,31,54],common_compon:8,commun:[1,10,16,19,31,36,38,51,52,55],compat:58,complet:[8,11,31,40,54,58,61],complex:61,complex_root:60,compon:[0,1,2,4,5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,23,25,26,27,28,30,31,32,33,35,36,37,38,39,40,41,42,43,44,46,47,48,50,51,52,54,55,56,57,58,59,60,61,63,64],compos:54,comput:[9,16,19,29,46,54,56],condit:[15,40,61],condition_vari:[1,2,4,6,10,15,16,19,31,36,38,39,55,56,57,60,61],conf:[2,4],config:[1,2,4,5,6,10,12,15,16,19,21,23,25,26,30,31,35,36,38,39,40,41,42,44,46,48,50,51,52,54,55,56,57,58,61,63,64],config_esp32_wifi_nvs_en:[63,64],config_esp_maximum_retri:64,config_esp_wifi_password:[55,63,64],config_esp_wifi_ssid:[55,63,64],config_freertos_generate_run_time_stat:48,config_freertos_use_trace_facil:48,config_hardware_box:13,config_hardware_ttgo:13,config_hardware_wrover_kit:13,config_rtsp_server_port:58,configur:[0,1,2,4,5,6,8,10,12,13,15,16,19,21,23,25,26,30,31,35,36,38,39,40,41,42,44,46,48,50,51,52,54,55,56,57,58,59,60,61,64],configure_global_control:36,configure_l:36,configure_pow:5,configure_stdin_stdout:[8,60],confirm:54,connect:[6,10,28,31,38,40,51,54,58,63,64],connect_callback:64,connect_config:51,connectconfig:51,constant:56,constexpr:[1,13,16,19,30,36,38,55,57,59],construct:[1,8,9,16,17,19,23,26,31,36,38,41,42,44,48,50,55,58],constructor:[8,9,20,30,41,47,50,57,58],consum:60,contain:[0,8,9,10,12,13,15,20,21,27,30,35,42,47,48,52,54,55,56,58,59,60,64],content:21,context:[20,60],continu:[3,21,31,33,52,61],continuous_adc:2,continuousadc:2,control:[5,6,7,13,16,19,20,28,30,31,33,36,38,40,42,54,56,58],control_point:42,control_socket:58,controller_driv:13,conveni:[8,10,11,16,19,40,50,59,60],convers:[1,2,9,16,19,39,50],convert:[4,5,6,9,10,16,19,21,39,46,50,58],convert_mod:2,convieni:[42,44],cool:41,coordin:[13,35],copi:[8,9,21,47,57,60,61],copy_encod:57,core:61,core_id:[6,61],core_update_period:6,corner:13,correct:[6,60],correspond:[13,31,36],could:[9,11,16,21,56,59,60],couldn:21,count:[1,6,15,16,19,31,36,38,40,41,48,55,56,57,61],counter:[15,16,19],counter_clockwis:6,counts_per_revolut:[15,16,19],counts_per_revolution_f:[16,19],counts_to_degre:[16,19],counts_to_radian:[16,19],coupl:[20,39],cout:8,cplusplu:8,cpp:[21,28,33,41,55,58],cpprefer:[21,41],cpu:48,cr:58,crd:15,creat:[6,8,9,10,11,13,15,16,19,21,28,30,39,41,46,48,51,52,54,55,56,57,58,60,61,63,64],create_directori:21,creation:[16,19],credenti:54,cross:[41,61],cs:6,cseq:58,csv2:11,csv:[21,33],csv_data:11,ctrl:8,cubic:42,curent:[50,60],current:[5,6,8,10,13,15,16,19,28,29,30,35,36,40,41,44,47,48,49,56,57,58,64],current_directori:28,current_duti:40,current_hfsm_period:60,current_limit:6,current_pid_config:6,current_sens:6,currentlyact:60,currentsensor:6,currentsensorconcept:6,cursor:[8,13],curv:42,custom:[12,20,21,31,57,59],cutoff:[6,23,25],cv:[1,2,4,6,10,15,16,19,20,31,36,38,39,40,51,55,56,57,60,61],cv_retval:61,cv_statu:61,cycl:[5,31,40,57],d2:10,d3:10,d4:10,d5:10,d6:10,d:[6,10,41,50,51,52],d_current_filt:6,daniele77:8,data:[0,1,2,4,6,9,10,11,12,13,16,19,20,21,22,23,25,26,28,31,35,36,38,39,48,50,51,52,54,55,58,59,60,64],data_address:55,data_command_pin:13,data_len:[1,10,16,19,31,36,38],data_s:57,datasheet:[16,31,36,55],date:[2,21],date_tim:21,dav:54,dbm:54,dc:[5,6,7,13],dc_current:[],dc_level_bit:13,dc_pin:13,dc_pin_num:13,de:20,dead_zon:5,deadband:[10,39,46],deadzon:39,deadzone_radiu:39,deal:54,debug:[41,55,60,61],debug_rate_limit:41,decod:[6,16,19,55,58],dedic:10,deep:60,deep_history_st:60,deephistoryst:60,default_address:[1,16,19,31,36,38],defautl:44,defin:[20,46,57,58,59,60],definit:[17,20],degre:[15,16,19],deinit:[2,64],del:57,delai:[6,22],delet:[4,8,10,15,21,57],delete_fn:57,delimit:11,demo:[8,13],depend:[2,30,46,57,60],depth:57,dequ:8,deriv:[56,60],describ:[12,13,46,51,54,58],descriptor:[50,51,52],deseri:[20,54,59],design:[10,16,19,30,32,35,58,60],desir:[0,5,30],destin:21,destroi:[1,2,4,5,6,10,15,16,19,28,31,36,38,39,55,56,57,58,60,61],destruct:61,destructor:[8,20,57,58],detail:[6,30,51],detent:30,detent_config:30,detentconfig:30,determin:[16,19],determinist:2,dev:13,dev_addr:[1,10,16,19,31,36,38],dev_kit:13,devcfg:13,develop:[6,13,54,60],devic:[1,13,16,19,30,31,35,36,38,54,55,63],device_address:[1,16,19,31,36,38],device_class:54,devkit:13,diagno:31,diagnost:31,did_pub:20,did_sub:20,differ:[13,16,17,18,19,20,22,24,31,37,40,41,55,56,57,60],digial:25,digit:[22,23,26],digital_biquad_filt:[22,26],digitalconfig:10,dim:36,dimension:47,dir_entri:21,direct:[4,10,22,36,38,55],directli:[5,7,18,31,32,42],directori:[21,28],directory_iter:21,directory_list:21,disabl:[5,6,8,15,16,36,55,57],disconnect:[58,64],disconnect_callback:64,discontinu:46,discover:54,discuss:[8,55],displai:[11,33,54,58],display_driv:[13,14],display_event_menu:60,distinguish:59,distribut:[20,46],divid:[9,22,47,56],dma:[2,57],dma_en:57,doc:[5,8,12,28,57,63,64],document:[8,11,16,55,57,59,60],doe:[2,4,5,11,15,16,19,21,28,30,36,38,50,58,59,60],doesn:21,don:[1,2,4,6,10,15,16,19,20,31,36,38,39,48,51,52,55,56,57,61],done:[20,40,50,51,52],dot:47,doubl:[8,12],double_buff:12,double_click:31,down:[8,10,50,51,52,56,60,61],doxygen:28,doxygenclass:[],doxygenfunct:28,dq:[],draw:[12,13],drive:[6,20,31,32,36,57],driven:[30,32],driver:[1,6,7,8,10,12,14,16,19,32,33,35,36,38,55,58],driverconcept:6,drv2605:[32,33],drv:13,ds:31,dsiplai:12,dsp:[22,25],dsprelat:[22,26],dual:[10,54],dualconfig:10,dummycurrentsens:6,durat:[1,6,12,16,19,30,31,36,38,40,41,48,50,51,52,55,56,57,60,61],duration0:57,duration1:57,dure:[56,60],duti:[5,40],duty_a:5,duty_b:5,duty_c:5,duty_perc:40,duty_resolut:40,dx:11,dynam:[6,30,44,55,56],dynamictask:61,e:[8,21,31,44,57,60],each:[2,4,5,9,10,20,21,26,28,30,36,39,41,48,58,59],earli:[1,2,4,6,10,15,16,19,31,36,38,39,55,56,57,60,61],easili:[16,49,61],ec:[21,58,59],eccentr:[31,32],ecm:31,ed:15,edg:[16,19,30,31,57],edit:8,edr:54,eeprom:55,effici:11,eh_ctrl:55,eight:1,eir:54,either:[10,15,48],el_angl:6,elaps:[1,31,40,41,56,61],electr:6,element:[4,47],els:[2,4,6,21,36,38,59,60],em:20,empti:[31,54,58,63,64],en:[5,8,21,22,23,26,28,41,50,51,52,54,55,57,63,64],enabl:[2,4,5,6,8,10,12,20,30,36,48,49,51,55,61,63,64],enable_if:[15,47],enable_reus:[50,51,52],encapsul:55,encod:[30,33,58],encode_fn:57,encoded_symbol:57,encoder_typ:17,encoder_update_period:[16,19],encodertyp:15,encrypt:54,end:[8,13,21,30,31,51,52,54,55,60],endev:60,endif:13,endl:8,endpoint:[50,51,52],energi:54,enforc:60,english:[36,54],enough:61,ensur:[6,8,46,57,63,64],enter:[8,60],enterpris:54,entri:[48,60],enumer:[1,10,12,31,36,38,39,41,54],eoi:58,epc:54,equal:8,equat:[15,22],equival:[8,11,36],erm:[31,32],err:[1,10,16,19,21,31,36,38,55],error:[1,21,31,36,41,56,57,58],error_cod:[21,58,59],error_rate_limit:41,esp32:[2,5,8,10,21,28,30,39,57,58,63,64],esp32s2:2,esp32s3:2,esp:[2,4,5,8,13,15,22,25,28,33,40,41,52,55,57,58,61,63,64],esp_err_t:[13,57],esp_err_to_nam:[1,31,36],esp_error_check:13,esp_lcd_ili9341:13,esp_log:41,esp_ok:[1,10,16,19,31,36,38,55,57],esphom:13,espp:[1,2,4,5,6,8,9,10,12,13,15,16,19,20,21,22,23,25,26,28,29,30,31,35,36,38,39,40,41,42,44,46,47,48,50,51,52,54,55,56,57,58,59,60,61,63,64],espressif:[5,8,13,25,52,57,63,64],etc:[21,36,38,56,57,59],evalu:[42,44],even:[55,59],evenli:30,event1:20,event2:20,event:[33,55,60,64],event_callback_fn:20,event_manag:20,eventbas:60,eventdata:64,eventmanag:20,everi:[12,16,19,41],everybodi:8,everyth:8,exactli:54,exampl:[3,7,14,49,62],exceed:64,excel:6,except:[8,21],exchang:54,execut:[8,20,60,61],exis:64,exist:[5,8,11,21,58,59,60],exit:[1,2,4,6,8,10,15,16,19,31,36,38,39,55,56,57,60,61],exitact:8,exitchildren:60,exitselect:60,exp:[44,48],expand:33,explicit:[8,50,58],explicitli:8,expos:[8,11,41],extend:54,extern:[8,31,39,54,60],external_typ:54,extra:[57,58],extra_head:58,exttrigedg:31,exttriglvl:31,f:21,f_cutoff:[23,25],f_sampl:[23,25],facil:48,factor:[16,19,25,30],fade:40,fade_time_m:40,fail:[1,10,16,19,31,36,38,55,59,64],fake:61,fall:[55,57],fals:[1,2,4,5,6,10,13,15,16,19,20,21,28,31,35,36,38,39,40,46,48,51,52,55,56,57,58,60,61,64],famili:1,far:8,fast:[33,45,55],fast_co:43,fast_ln:43,fast_math:43,fast_sin:43,fast_sqrt:43,fastest:[16,19],fault:5,fclose:21,feedback:[30,31,32],feel:6,few:[8,13,20,60],ff:54,fi:[63,64],field:[6,21,39,54,55,58],field_fal:55,field_ris:55,figur:[11,21,59,60],file2:21,file:[29,33],file_byt:21,file_cont:21,file_s:21,file_str:21,file_system:21,filenam:11,filesystem:28,fill:[13,22,25,35,39,50,51,52,55],filter:[2,4,6,15,16,19,27,33],filter_cutoff_hz:[16,19],filter_fn:[6,16,19],find:[],fine:30,fine_values_no_det:30,fine_values_with_det:30,finger563:60,finish:[8,30,57],first:[6,20,51,52,54,55,58],first_row_is_head:11,fish:8,fit:12,fixed_length_encod:59,flag:[13,20,54,55,57],flip:46,floatrangemapp:39,flush:[12,13,21],flush_callback:[12,13],flush_cb:13,flush_fn:12,fmod:40,fmt:[2,4,8,10,11,13,15,16,19,20,36,38,39,40,48,51,52,55,56,57,58,59,61,64],foc:[5,6],foc_curr:[],foc_typ:6,foctyp:6,folder:[3,7,8,11,14,15,39,41,48,49,56,59,60,61,62],follow:[6,22,30,31,43,48,54,55,57,60],fopen:21,forc:[5,12],force_refresh:12,form:[22,23,58],format:[11,13,21,33,48,54,58,61],forum:54,found:[16,19,31,54,55],four:1,frac:[22,44],frag_typ:58,fragment:58,frame:58,fread:21,free:[12,21,40,57],free_spac:21,freebook:[22,26],freerto:[48,61],frequenc:[2,4,16,19,23,25,30,40],frequency_hz:40,frequent:[12,56],from:[1,2,4,5,6,8,9,10,12,13,16,19,20,21,24,28,30,31,32,33,35,36,38,39,40,41,44,46,47,50,51,52,54,55,56,57,58,59,60,61,64],from_sockaddr:50,fs:21,fseek:21,ftell:21,fthat:9,ftm:55,ftp:[33,54,58],ftp_anon:54,ftp_client_sess:28,ftp_ftp:54,ftp_server:28,ftpclientsess:28,ftpserver:28,fulfil:[16,19],full:[5,36,58],fulli:[31,60,61],fun:20,further:58,futur:[41,54,58],fwrite:21,g:[9,21,31,36,44,57],g_bright:36,g_down:36,g_led:36,g_up:36,gain:[1,30,56],game:54,gamepad:[54,55],gamma:[40,44],gate:5,gaussian:[33,40,45],gb:11,gbc:11,gener:[16,19,24,50,54,57,58,63,64],generatedeventbas:60,generic_hid:54,geometr:9,get:[1,2,5,6,8,9,10,11,12,13,15,16,19,20,21,28,30,35,38,39,40,44,48,50,51,52,54,55,56,57,58,59,60,61,64],get_accumul:[16,19],get_config:56,get_count:[15,16,19],get_data:58,get_degre:[15,16,19],get_duti:40,get_electrical_angl:6,get_error:56,get_free_spac:21,get_ftm_length:55,get_head:58,get_height:58,get_histori:8,get_info:61,get_integr:56,get_interrupt_captur:38,get_interrupt_statu:55,get_ipv4_info:[50,51,52],get_jpeg_data:58,get_mechanical_degre:[16,19],get_mechanical_radian:[16,19],get_mjpeg_head:58,get_mount_point:21,get_mv:2,get_num_q_t:58,get_offset:[13,58],get_output_cent:46,get_output_max:46,get_output_min:46,get_output_rang:46,get_packet:58,get_partition_label:21,get_payload:58,get_pin:[36,38],get_posit:30,get_power_supply_limit:5,get_q:58,get_q_tabl:58,get_quantization_t:58,get_radian:[15,16,19],get_rat:2,get_remote_info:51,get_revolut:15,get_root_path:21,get_rpm:[16,19],get_rpt_head:58,get_rtp_header_s:58,get_scan_data:58,get_session_id:58,get_shaft_angl:6,get_shaft_veloc:6,get_siz:54,get_stat:10,get_total_spac:21,get_type_specif:58,get_used_spac:21,get_user_input:8,get_user_select:60,get_valu:[10,39],get_values_fn:39,get_vers:58,get_voltage_limit:5,get_width:58,getactivechild:60,getactiveleaf:60,getiniti:60,getinputhistori:8,getlin:8,getparentst:60,getsocknam:[50,51,52],getter:[47,58],gettimerperiod:60,gettin:39,gimbal:30,github:[8,11,13,30,42,52,55,57,58,60],give:[50,60,61],given:[20,23,58,60],glitch:15,global:[2,36],go:[20,21,60],gone:61,goodby:8,googl:55,got:[20,58,64],gotten:[6,8,64],gpio:[5,10,15,36,38,40,57],gpio_a:10,gpio_a_h:[5,6],gpio_a_l:[5,6],gpio_b:10,gpio_b_h:[5,6],gpio_b_l:[5,6],gpio_c_h:[5,6],gpio_c_l:[5,6],gpio_down:10,gpio_en:[5,6],gpio_fault:[5,6],gpio_i:10,gpio_joystick_select:10,gpio_left:10,gpio_num:57,gpio_num_18:13,gpio_num_19:13,gpio_num_22:13,gpio_num_23:13,gpio_num_45:13,gpio_num_48:13,gpio_num_4:13,gpio_num_5:13,gpio_num_6:13,gpio_num_7:13,gpio_num_t:13,gpio_pullup:10,gpio_pullup_en:[1,10,16,19,31,36,38,55],gpio_right:10,gpio_select:10,gpio_start:10,gpio_up:10,gpio_x:10,gpo:55,grab:39,gradient:9,grai:41,graphic:9,greater:41,green:[9,41,57],ground:10,group:[21,50,51,52,54],guard:60,gui:[12,13,48],guid:[8,63,64],h:[8,9,13,41,58],ha:[6,8,10,15,16,19,20,21,28,31,36,38,40,48,51,52,54,55,57,58,60,61,64],half:[16,19,22],handl:[8,28,36,38,51,52,57,60,61],handle_all_ev:60,handleev:60,handler:52,handov:54,happen:20,haptic:33,haptic_config:30,haptic_motor:30,hapticconfig:30,hardawr:40,hardwar:[6,15,25,36,40,58],has_q_tabl:58,has_stop:60,has_valu:[2,4,10,39,40],hash:54,have:[6,8,11,12,20,22,30,31,36,39,40,41,48,51,56,57,58,60,61,63,64],hc:54,heart:6,height:[12,13,58],hello:[8,55],hello_everysess:8,help:54,helper:50,henri:6,here:[8,11,16,20,31,36,38,55,56],hid:54,high:[2,5,12,15,30,38,48,57],high_limit:15,high_resolution_clock:[1,6,16,19,31,36,38,40,41,48,55,56,57,61],high_water_mark:48,higher:[22,25],histori:[8,22,23,25,26,60],history_s:8,hmi:13,hold:[12,54,55],home:35,hop:[50,51,52],host:[13,36,54,63],how:[6,11,12,15,56,59,60],howev:22,hpp:[0,1,2,4,5,6,8,9,10,11,12,13,15,16,17,19,20,21,22,23,25,26,27,28,30,31,35,36,38,39,40,41,42,43,44,46,47,48,50,51,52,54,55,56,57,58,59,60,61,63,64],hr:54,hs:54,hsfm:60,hsv:[9,57],html:[5,8,12,13,22,26,54,57,63,64],http:[5,6,8,11,12,13,16,21,22,23,26,30,31,36,41,42,50,51,52,54,55,57,58,60,63,64],http_www:54,https_www:54,hue:[9,57],human:[11,21],human_read:21,hz:[2,30],i2c:[3,16,18,19,31,33,36,37,38,55],i2c_cfg:[1,10,16,19,31,36,38,55],i2c_config_t:[1,10,16,19,31,36,38,55],i2c_driver_instal:[1,10,16,19,31,36,38,55],i2c_freq_hz:[1,10,16,19,31,36,38,55],i2c_master_write_read_devic:[1,10,16,19,31,36,38,55],i2c_master_write_to_devic:[1,10,16,19,31,36,38,55],i2c_mode_mast:[1,10,16,19,31,36,38,55],i2c_num:[1,10,16,19,31,36,38,55],i2c_param_config:[1,10,16,19,31,36,38,55],i2c_read:31,i2c_scl_io:[1,10,16,19,31,36,38,55],i2c_sda_io:[1,10,16,19,31,36,38,55],i2c_timeout_m:[1,10,16,19,31,36,38,55],i2c_writ:31,i:[6,11,15,33,37,48,56,59,60,61],i_gpio:15,id:[28,31,54,58,61],ident:8,identifi:[31,54,58],idf:[2,4,5,8,33,40,41,52,57,63,64],ifs:21,ifstream:21,ignor:15,iir:25,il:54,imag:58,imap:54,imax:36,imax_25:36,imax_50:36,imax_75:36,immedi:[60,61],imped:5,impl:[23,26],implement:[5,6,7,8,9,22,23,25,26,28,29,30,42,43,44,47,54,58,60],implicit:[16,19],impuls:25,includ:[0,1,2,4,5,6,8,9,10,11,12,13,15,16,17,19,20,21,22,23,25,26,27,28,30,31,35,36,38,39,40,41,42,43,44,46,47,48,50,51,52,54,55,56,57,58,59,60,61,63,64],incom:51,incomplet:54,increas:[15,41,56],increment:[15,36],incur:12,independ:[39,47],index:[15,47,58],indic:[36,38,51,52,54,55,61],individu:[39,42],induct:6,infinit:25,info:[1,2,4,6,10,15,30,31,39,41,48,50,51,52,56,57,58],info_rate_limit:41,inform:[9,12,16,19,23,26,36,38,39,42,48,50,51,52,54,55,57,60,63,64],infrar:57,inherit:8,init:[39,50,51],init_ipv4:50,initail:2,initi:[1,2,4,5,6,10,12,13,15,16,19,25,31,35,36,38,39,40,44,46,50,51,52,55,57,60,61,63,64],inlin:[1,2,4,5,6,8,10,12,13,15,16,19,20,21,22,23,25,26,28,30,31,35,36,38,39,40,41,42,44,46,47,48,50,51,52,54,55,56,57,58,60,61,63,64],input:[6,8,10,16,19,22,23,25,26,30,31,33,36,38,39,46],input_delay_n:13,input_driv:35,inquiri:54,insert:8,instal:[1,10,16,19,31,36,38,55],instanc:[20,21],instant:40,instanti:48,instead:[8,28,46,59,60],instruct:25,instrument:31,int16_t:15,int8_t:59,integ:[5,15,43,50],integr:56,integrator_max:[6,56],integrator_min:[6,56],intend:[42,60,61],interact:[8,18,20,21,37,58],interest:[10,20],interfac:[5,7,12,18,21,28,30,31,33,36,37,38,57,58],interfer:30,intermedi:54,intern:[8,10,13,15,22,23,25,26,31,36,38,50,60],interpol:9,interrupt:[15,36,38,55,61],introduc:46,inttrig:31,invalid:[8,9],invalid_argu:8,invers:40,invert:[10,35,36,38,40,46],invert_color:13,invert_i:35,invert_input:46,invert_output:46,invert_x:35,invoc:56,io:[12,13,21,33,42,54],ip2str:64,ip:[28,50,51,52,58,64],ip_add_membership:[50,51,52],ip_address:[28,51,52,58],ip_callback:64,ip_event_got_ip_t:64,ip_evt:64,ip_info:64,ip_multicast_loop:[50,51,52],ip_multicast_ttl:[50,51,52],ipv4:50,ipv4_ptr:50,ipv6:50,ipv6_ptr:50,ir:57,irdaobex:54,is_a_press:10,is_act:58,is_al:28,is_b_press:10,is_clos:58,is_complet:58,is_connect:[28,51,58,64],is_dir:21,is_directori:21,is_down_press:10,is_en:5,is_fault:5,is_floating_point:47,is_left_press:10,is_multicast_endpoint:52,is_passive_data_connect:28,is_press:10,is_right_press:10,is_select_press:10,is_start:61,is_start_press:10,is_up_press:10,is_valid:[50,51,52],issu:8,istream:8,it_st:55,item:[11,21],iter:[13,21,51,52,61],its:[2,16,19,20,28,30,36,38,44,48,50,51,52,55,56,60,63],itself:[12,20,35,58,61],join:[50,51,52],joybonnet:[1,10],joystick:[10,33,54],joystick_config:10,joystick_i:10,joystick_select:10,joystick_x:10,jpeg:58,jpeg_data:58,jpeg_fram:58,jpeg_frame_callback_t:58,jpeg_head:58,jpegfram:58,jpeghead:58,jpg:11,js1:39,js2:39,jump:46,just:[10,16,19,20,54,57,58,59,60],k:8,k_bemf:6,kbit:55,kd:[6,30,56],kd_factor_max:30,kd_factor_min:30,keepal:51,kei:[8,54,55,58],keyboard:[8,54],ki:[6,56],kind:[17,60],know:[12,16,19,61],known:[54,60],kohm:38,kp:[6,30,56],kp_factor:30,kv:6,kv_rate:6,label:[13,21],lack:21,lambda:[1,10,16,19,31,36,38,41,55],landscap:[12,13],landscape_invert:12,larg:58,larger:[2,8,58],last:[10,15,39,54,56,60],last_unus:10,latch:57,later:[5,13,15],latest:[2,5,8,35,39,48,56,57,63,64],launch:54,launcher:55,launcher_record:55,lazi:11,lcd:13,lcd_send_lin:13,lcd_spi_post_transfer_callback:13,lcd_spi_pre_transfer_callback:13,lcd_write:13,le:54,le_rol:54,le_sc_confirm:54,le_sc_random:54,lead:[2,9],leaf:60,learn:[31,54],least:[15,51],led:[33,36,57],led_callback:40,led_channel:40,led_encod:57,led_encoder_st:57,led_fade_time_m:40,led_reset_cod:57,led_stip:57,led_strip:57,led_task:40,ledc:40,ledc_channel_5:40,ledc_channel_t:40,ledc_high_speed_mod:40,ledc_mode_t:40,ledc_timer_10_bit:40,ledc_timer_13_bit:40,ledc_timer_2:40,ledc_timer_bit_t:40,ledc_timer_t:40,left:[10,13,15],legaci:54,legend:11,length16:55,length:[13,22,25,47,54,55,57],less:[5,39,54,55,61],let:[8,12,20,48],level0:57,level1:57,level:[5,6,7,20,30,31,38,41,50,51,52,54,57,58,60],leverag:25,lh:[],lib:31,libarari:59,libfmt:41,librari:[8,20,21,30,31,33,54,59],life:[8,59],lifecycl:12,light:[9,35,41,59,60],like:[20,50],limit:[5,6,8,15,41,54,56],limit_voltag:[5,6],line:33,line_input:8,linear:[31,32],lineinput:8,link:[11,21],links_awaken:11,list:[21,31,54],list_directori:21,listconfig:21,listen:[28,51,58],lit:31,littl:[20,40],littlef:21,lk:[1,2,4,6,10,15,16,19,20,31,36,38,39,40,55,56,57,60,61],ll:[1,10,16,19,20,31,36,38,55],load:[10,11,54],local:54,lock:[51,61],log:[6,20,30,31,33,35,36,38,40,48,55,57,58,61],log_level:[1,2,4,5,6,10,12,15,16,19,30,31,35,36,38,39,40,51,52,55,56,57,58,60,61,63,64],logger1:41,logger1_thread:41,logger2:41,logger2_thread:41,logger:[1,2,4,5,6,10,12,15,16,19,20,21,30,31,33,35,36,38,39,40,50,51,52,55,56,57,58,60,61,63,64],logger_:[12,39],logger_config:50,logger_fn:41,logic:[10,52,54],long_local_nam:54,longer:8,loop:[6,7,8,16,19,21,30,41,61],loop_foc:6,loop_iter:41,loopback_en:[50,51,52],loos:20,lose:8,low:[4,5,6,7,10,15,20,38,50,54,57],low_limit:15,lower:[15,36,38],lowest:61,lowpass:[24,33],lowpass_filt:25,lowpassfilt:25,lra:[31,32],lsb:36,lv_area_t:[12,13],lv_color_t:[12,13],lv_disp_drv_t:[12,13],lv_disp_flush_readi:12,lv_tick_inc:12,lvgl:[12,13,35],lvgl_esp32_driv:13,lvgl_tft:13,m:[1,2,4,6,10,15,16,19,20,30,31,36,38,39,40,41,51,55,56,57,60,61],m_pi:[16,19,48],mac:[54,64],mac_addr:54,mac_address:54,machin:33,macro:41,made:55,magic_enum_no_check_support:60,magnet:[18,30,33],magnetic_det:30,magnitud:[39,47,56],magnitude_squar:47,mai:[2,30,54,55,60],mailbox:55,mailto:54,main:[6,12,57],mainli:12,maintain:[12,16,19,55],make:[1,6,10,16,19,20,21,31,36,38,50,54,55,58,60],make_android_launch:[54,55],make_ev:60,make_le_oob_pair:[54,55],make_multicast:[50,51,52],make_oob_pair:[54,55],make_shar:[6,13],make_text:[54,55],make_uniqu:[1,8,10,31,40,48,51,52,57,61],make_uri:[54,55],make_wifi_config:[54,55],makeact:60,malloc_cap_8bit:12,malloc_cap_dma:12,manag:[4,9,10,11,12,21,33,36,38,40,51,52,54,55],mani:[6,15,20,51,52,64],manual:[8,30,58,60],map:[10,39,46,58],mapper:[33,39,45],mario:11,mark:[48,58],marker:58,mask:[36,38],maskaravivek:54,mass:[31,32],master:[1,8,10,13,16,19,31,36,38,52,55,57],match:[21,28],math:[33,42,44,46,47],max:[5,15,30,31,36,44,46,51,52,56,63],max_connect:51,max_data_s:58,max_glitch_n:15,max_led_curr:36,max_num_byt:[51,52],max_number_of_st:63,max_pending_connect:51,max_receive_s:51,max_transfer_sz:13,maximum:[5,10,16,19,36,39,46,51,52,56,58],maxledcurr:36,maybe_duti:40,maybe_mv:[2,4],maybe_r:2,maybe_x_mv:[10,39],maybe_y_mv:[10,39],mb:[21,54],mb_ctrl:55,mcp23x17:[33,37],mcp23x17_read:38,mcp23x17_write:38,mcpwm:[5,30],me:54,mean:[5,9,16,19,22,39,46,48,57,59,61],measur:[2,4,6,15,16,19,39,56],mechan:[2,6,16,19,20,28],media:54,mega_man:11,megaman1:11,megaman:11,member:[1,2,4,5,6,9,10,12,15,16,19,21,23,25,30,31,35,36,38,39,40,41,42,44,46,48,50,51,52,54,55,56,57,58,61,63,64],memori:[8,12,22,25,40,55,57,61],memset:[1,10,13,16,19,31,36,38,55],mention:8,menu:8,menuconfig:21,mere:5,messag:[21,54,55,58,59],method:[6,15,21,42,44,56,58,59],metroid1:11,metroid:11,micro:13,middl:54,millisecond:40,mime_media:54,min:[30,46],minimum:[10,39,46,56],minu:58,minut:[16,19],mireq:13,mirror:38,mirror_i:13,mirror_x:13,miso_io_num:13,mix:9,mjepg:58,mjpeg:58,mkdir:21,mode:[1,2,10,13,16,19,30,31,36,38,40,54,55],model:[9,60],moder:4,modif:6,modifi:[13,36,58],modul:[],modulo:[16,19],monitor:33,more:[2,8,9,12,23,24,26,31,39,40,41,44,50,51,52,57,60],mosi:13,mosi_io_num:13,most:[2,6,10,16,19,39,56],motion:[6,30],motion_control_typ:6,motioncontroltyp:6,motoion:6,motor:[5,7,16,19,30,32,33],motor_task:6,motor_task_fn:6,motor_typ:31,motorconcept:30,motortyp:31,mount:21,mount_point:21,mous:54,move:[6,8,48,57,61],movement:8,ms:12,msb:36,msb_first:57,mt6701:[6,18,33],mt6701_read:[6,19],mt6701_write:[6,19],much:22,multi_rev_no_det:30,multicast:[50,51],multicast_address:[50,51,52],multicast_group:[50,51,52],multipl:[2,4,6,10,30,31,32,41,56,58],multipli:[30,47,56],must:[4,6,8,15,20,21,48,50,51,52,54,55,59,60,61,63,64],mutabl:[47,61],mutat:61,mutex:[1,2,4,6,10,15,16,19,20,31,36,38,39,40,51,55,56,57,60,61],mv:[1,2,4,39],mystruct:59,n:[2,4,8,10,11,15,16,19,20,21,22,26,27,36,38,39,40,48,51,52,55,56,57,58,59,61,64],name:[1,2,4,6,10,11,15,16,19,20,31,36,38,39,40,48,51,52,54,55,56,57,58,59,60,61],namespac:[1,10,21,31],nanosecond:15,navig:8,ndef:[33,53,55],ndeflib:54,ndefmessag:54,ne:11,nearest:[30,43],necessari:[6,61],need:[2,4,8,16,19,20,21,22,30,36,48,54,56,57,60,61],needs_zero_search:[16,19],neg:[47,56],negat:[10,47],network:[33,51,52,54,63],new_duti:40,new_object:59,new_siz:8,new_target:6,newli:61,newlin:48,next:[8,30,57],nf:54,nfault:6,nfc:[33,54,55],nicer:41,nm:6,no_timeout:61,nocolor:8,node:[50,51,52,60],nois:46,non:[2,30,46,55],nonallocatingconfig:12,none:[12,28,41,54,60],normal:[12,20,22,47],normalizd:[23,25],normalized_cutoff_frequ:[16,19,23,25],note:[1,2,4,6,8,10,15,16,19,20,21,28,30,31,36,38,39,41,51,52,55,56,57,59,60,61],noth:[5,48],notifi:[58,61],now:[1,6,11,16,19,20,30,31,36,38,40,41,48,51,52,55,56,57,61],nthe:64,nullopt:[40,52],nullptr:[6,8,16,19,21,47,51,52,60,64],num:58,num_connect_retri:64,num_periods_to_run:40,num_pole_pair:6,num_seconds_to_run:[40,41,56,61],num_steps_per_iter:61,num_task:[48,61],num_touch:35,number:[1,2,6,8,12,13,15,16,19,21,22,25,30,31,35,36,38,40,43,50,51,52,54,55,57,58,63,64],number_of_link:21,nvs_flash_init:[63,64],o:[33,37],object:[6,8,9,11,20,41,44,48,54,57,58,59,60],occur:[20,58,60],off:[5,8,15,30,36,41,58],offset:[13,55,58],offset_i:13,offset_x:13,ofs:21,ofstream:21,ohm:6,ok:58,oldest:8,on_connect:64,on_disconnect:64,on_got_ip:64,on_jpeg_fram:58,on_off_strong_det:30,on_receive_callback:52,on_response_callback:[51,52],onc:[10,15,16,19,20,58],once_flag:20,one:[8,16,19,20,28,40,51,52,55,57,60],oneshot:[3,33],oneshot_adc:4,oneshotadc:[4,10,39],onli:[6,10,11,15,16,19,20,22,39,41,47,52,54,55,57,58,59,60],oob:[54,55],open:[6,7,8,21,30,51,54,63,64],open_drain:36,oper:[9,21,23,25,26,42,44,47,56],oppos:9,opposit:40,optim:[6,22,43],option:[2,4,5,6,8,10,12,13,16,19,35,39,40,41,46,50,51,52,55,58,59,61],order:[22,23,24,27,33,41,51],oreilli:54,org:[22,23,26,50,51,52],orient:[6,12],origin:21,oscil:46,ostream:8,ostringstream:11,other:[6,8,9,12,47,50,51,52,55,56,59,60,61,63],otherwis:[5,10,20,28,38,39,40,51,52,54,57,58,60,61,64],our:[40,50,51,52,61],out:[8,11,21,48,50,51,52,54,55,57,59,60],output:[6,7,8,15,20,21,22,23,25,26,28,35,36,38,40,41,44,46,48,55,56],output_cent:46,output_drive_mode_p0:36,output_invert:40,output_max:[6,46,56],output_min:[6,46,56],output_rang:46,outputdrivemodep0:36,outsid:[8,9],over:[5,18,21,37,40,49,51,52,58,61],overflow:[15,22],overhead:[12,20],overload:21,overstai:41,overwrit:58,own:[2,12,16,19,28,36,38,50,51,52,63],owner:21,p0:36,p0_0:36,p0_1:36,p0_2:36,p0_3:36,p0_5:36,p1:36,p1_0:36,p1_1:36,p1_5:36,p1_6:36,p1_7:36,p1_8:36,p:[8,11,56],pack:10,packag:54,packet:[50,51,52,54,58],packet_:58,pad:10,page:21,pair:[6,54,55],panel:35,param:[1,6,12,16,19,20,31,35,36,38,39,50,51,52,55,57,61,64],paramet:[1,2,4,5,6,8,9,10,12,13,17,20,21,22,23,25,26,28,30,31,35,36,38,39,40,41,42,44,46,47,50,51,52,54,55,56,57,58,60,61,63,64],parent:60,pars:[11,48,58],part:[5,13,30,35],parti:59,partit:21,partition_label:21,pass:[13,20,28,41,46],passiv:28,password:[28,54,63,64],pasv:28,pat:54,path:[21,28,58],paus:[12,58],payload:[54,55,58],payload_s:58,pdf:[16,31,36,55],pend:51,per:[1,2,6,16,19],perceiv:9,percent:40,percentag:[5,30,40],perform:[2,4,9,21,39,61],perhipher:40,period:[10,12,16,19,20,36,38,48,55,60],peripher:[5,15,30,32,40,54,57],peripheral_centr:54,peripheral_onli:[54,55],permiss:21,person:54,phase:[5,6],phase_induct:6,phase_resist:6,phone:[54,55],photo:55,pick:15,pico:39,pid:[6,30,33],pid_config:56,pin:[1,5,6,10,13,31,36,38,40,57,61],pin_mask:38,pinout:6,pixel:[12,13,58],pixel_buffer_s:[12,13],place:[20,30],plai:[31,58],platform:[41,61],play_hapt:30,playback:31,pleas:[8,9,11,26,31,60],pn532:54,point:[9,15,21,22,25,30,33,35,40,42,43,47,51,52,54,62,64],pointer:[1,12,13,16,19,22,25,30,31,35,36,38,39,50,51,55,57,58,60,61,64],pokemon:11,pokemon_blu:11,pokemon_r:11,pokemon_yellow:11,polar:38,pole:6,poll:[10,16,19,36,38,55],pomax:42,pop:54,popul:52,port0:36,port1:36,port:[6,12,28,36,38,50,51,52,58],port_0_direction_mask:36,port_0_interrupt_mask:36,port_1_direction_mask:36,port_1_interrupt_mask:36,port_a:38,port_a_direction_mask:38,port_a_interrupt_mask:38,port_b:38,port_b_direction_mask:38,port_b_interrupt_mask:38,portrait:[12,13],portrait_invert:12,porttick_period_m:[1,10,16,19,31,36,38,55],pos_typ:21,posit:[6,13,15,16,19,30,35,39,46],posix:[49,50],possibl:[5,12,46,54],post:54,post_cb:13,post_transfer_callback:12,poster:54,potenti:[2,22,28],power:[5,6,54],power_supply_voltag:[5,6],pranav:11,pre:[13,56],pre_cb:13,precis:57,preconfigur:31,prefer:54,prefix:21,prepend:41,present:[54,58],preset:31,press:[10,35],prevent:[12,56],previou:[8,40],previous:[5,6,46],primari:57,primarili:8,primary_data:57,print:[2,4,8,10,11,15,16,19,20,36,38,39,40,41,48,51,52,55,56,57,58,59,61,64],printf:[10,16,19,36,38,55],prior:[55,63,64],prioriti:[2,6,12,41,48,61],privat:8,process:[40,51,52,61],processor:[25,61],produc:9,product:[36,47,60],profil:30,programmed_data:55,project:[5,8,28,57,58,63,64],prompt:8,prompt_fn:8,proper:[9,60],properli:[4,58],proport:56,protocol:[28,51,52,57],protocol_examples_common:8,prototyp:[20,35],provid:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20,21,22,23,24,25,26,27,29,30,32,33,35,36,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,62,64],prt:50,pseudost:60,pub:20,publish:20,pull:[36,38],puls:[15,57],pulsing_strong_1:31,pulsing_strong_2:31,pure:[15,60],push_push:36,put:55,pwm:[5,6,7,31,40],pwmanalog:31,py:39,python:48,q0:58,q0_tabl:58,q1:58,q1_tabl:58,q:[6,25,58],q_current_filt:6,q_factor:25,qt:39,quadhd_io_num:13,quadratur:15,quadwp_io_num:13,qualiti:25,quantiz:58,question:[8,11,40,55],queu:57,queue:[8,57],queue_siz:13,quickli:60,quit:55,quit_test:[10,16,19,38,55],quote_charact:11,r:[9,21,36,46,54,57],r_bright:36,r_down:36,r_led:36,r_up:36,race:40,rad:6,radian:[6,15,16,19,47],radio:[54,55],radio_mac_addr:55,radiu:39,rainbow:57,ram:12,ranav:11,random:54,rang:[1,5,9,16,19,21,23,25,30,32,33,39,44,45,63],range_mapp:46,rangemapp:[39,46],rate:[1,2,6,16,19,36,38,41],rate_limit:41,ration:42,raw:[1,4,6,10,16,19,39,42,50,54,55],rb:21,re:[8,10,16,19,31,50,51,52,60],reach:[31,51,55,60],read:[1,2,4,6,8,10,16,19,21,31,35,36,38,39,51,55],read_fn:[1,16,19,31,36,38,55],read_joystick:[10,39],read_mv:[4,10,39],read_raw:4,read_valu:11,readabl:[11,21],reader:[2,4,39],readthedoc:54,real:[20,31],realli:[11,59,60],realtim:31,reason:[59,61],receic:20,receiv:[13,50,51,52,55,58],receive_callback_fn:[50,51,52],receive_config:52,receiveconfig:52,recent:[2,6,10,16,19,39,56],recommend:[16,19,20,39],record:[54,55],rectangular:39,recurs:[21,60],recursive_directory_iter:21,recvfrom:[50,52],red:[9,11,41,57],redraw:12,reepres:58,refer:33,reference_wrapp:30,refresh:12,reg:55,reg_addr:[1,10,16,19,31,36,38,55],regard:[16,19],regardless:39,regist:[1,16,19,20,31,35,36,38,55,58],registr:20,registri:20,reinit:51,reiniti:51,reistor:36,rel:46,relat:[8,40],relev:21,reli:60,reliabl:[16,19,51],remain:41,remot:[33,51,52,54],remote_control:54,remote_info:52,remov:[5,8,20,21],remove_publish:20,remove_subscrib:20,renam:21,render:[12,48],repeatedli:[57,61],replac:8,report:55,repres:[9,16,19,28,40,47,54,55,56,57,58],represent:9,request:[28,50,51,52,54,55,58],requir:[6,55],rescal:9,reserv:54,reset:[13,15,55,56,57],reset_fn:57,reset_pin:13,reset_st:56,reset_tick:57,resist:6,resistor:36,resiz:[8,21,48,61],resolut:[40,57],resolution_hz:57,resolv:28,reson:[31,32],resourc:[4,50,51,52,55,57],respect:[58,60],respond:[50,51,52],respons:[12,21,25,28,54,56,58],response_callback_fn:[50,51,52],response_s:[51,52],response_timeout:52,restart:60,restartselect:60,restrict:[16,19],result:[2,9,47,58],resum:12,ret:13,ret_stat:57,retri:[58,64],retriev:[2,10,35,39],return_to_center_with_det:30,return_to_center_with_detents_and_multiple_revolut:30,reusabl:[8,33],revers:[51,52],revolut:[15,16,19,30],rf:55,rf_activ:55,rf_get_msg:55,rf_intterupt:55,rf_put_msg:55,rf_user:55,rf_write:55,rfc:[54,58],rfid:[54,55],rgb:[9,57],rh:[9,47],right:[6,10,28,55],rise:[31,55,57],risk:22,rmdir:21,rmt:33,rmt_bytes_encoder_config_t:57,rmt_channel_handle_t:57,rmt_clk_src_default:57,rmt_clock_source_t:57,rmt_encod:57,rmt_encode_state_t:57,rmt_encoder_handle_t:57,rmt_encoder_t:57,rmt_encoding_complet:57,rmt_encoding_mem_ful:57,rmt_encoding_reset:57,rmt_symbol_word_t:57,rmtencod:57,robust:41,robustli:46,role:54,root:[21,28,60],root_list:21,root_menu:8,root_path:21,rotari:30,rotat:[6,12,13,16,19,30,31,32,47,57],round:43,routin:39,row:11,row_index:11,rpm:[6,16,19],rpm_to_rad:6,rstp:54,rt_fmt_str:41,rtcp:58,rtcp_packet:58,rtcp_port:58,rtcppacket:58,rtd:54,rtp:[31,58],rtp_jpeg_packet:58,rtp_packet:58,rtp_port:58,rtpjpegpacket:58,rtppacket:58,rtsp:[33,54],rtsp_client:58,rtsp_path:58,rtsp_port:58,rtsp_server:58,rtsp_session:58,rtspclient:58,rtspserver:58,rtspsession:58,run:[2,6,8,12,16,19,20,28,30,40,41,48],runtim:41,s2:[2,13],s3:[2,10],s:[6,7,8,9,11,16,19,20,28,30,36,38,39,40,41,46,48,52,57,59,60,61],s_isdir:21,safe:[40,56],same:[4,6,20,54,56],sampl:[1,2,6,8,16,19,22,23,25,26,55,56],sample_mv:[1,10],sample_r:1,sample_rate_hz:2,sandbox:21,sarch:[16,19],satisfi:60,satur:[9,56],sbu:20,scalar:47,scale:[6,44,47,56],scaler:44,scan:[58,64],scan_data:58,scenario:[63,64],scheme:6,scl_io_num:[1,10,16,19,31,36,38,55],scl_pullup_en:[1,10,16,19,31,36,38,55],sclk:13,sclk_io_num:13,scottbez1:30,screen:13,sda_io_num:[1,10,16,19,31,36,38,55],sda_pullup_en:[1,10,16,19,31,36,38,55],sdp:58,search:[16,19],second:[1,2,6,16,19,23,24,33,36,38,40,41,47,55,58,61],secondari:12,seconds_per_minut:[16,19],seconds_since_start:48,section:[9,23,24,33],sectionimpl:26,secur:[54,63,64],security_manager_flag:54,security_manager_tk:54,see:[6,8,9,11,12,13,15,22,23,26,31,39,42,48,50,51,52,54,55,57,60,63,64],seek_end:21,seek_set:21,seekg:21,seem:[21,58],segment:12,select:[2,10,28,31,54,60],select_librari:31,send:[12,13,28,51,52,55,57,58],send_command:13,send_config:[51,52],send_data:13,send_fram:58,send_request:58,send_rtcp_packet:58,send_rtp_packet:58,sendconfig:52,sender:[50,51,52],sender_info:[50,51,52],sendto:50,sens:6,sensor:[6,16,19],sensor_direct:6,sensorconcept:6,sensordirect:6,sent:[13,28,51,52,57,58],separ:[10,11,12,48],sequenc:[20,31,48,54,55,60],seri:[26,58],serial:[18,20,31,33,36,37,38,54,55,58],serializa:59,series_second_order_sect:[22,26],serizalizt:11,server:[29,33,49,50],server_address:[51,52,58],server_config:52,server_port:58,server_socket:[51,52],server_task:51,server_task_config:[51,52],server_task_fn:51,server_uri:58,servic:54,session:[8,28,57,58],session_st:57,set:[5,6,8,13,20,31,36,38,39,40,43,44,46,48,50,51,52,54,55,57,58,60,63,64],set_ap_mac:64,set_calibr:39,set_config:56,set_deadzon:39,set_direct:[36,38],set_drawing_area:13,set_duti:40,set_encod:57,set_fade_with_tim:40,set_histori:8,set_history_s:8,set_input_polar:38,set_interrupt:36,set_interrupt_mirror:38,set_interrupt_on_chang:38,set_interrupt_on_valu:38,set_interrupt_polar:38,set_label:13,set_log_level:20,set_met:13,set_mod:31,set_motion_control_typ:6,set_offset:13,set_payload:58,set_phase_st:5,set_phase_voltag:6,set_pin:[36,38],set_pull_up:38,set_pwm:5,set_receive_timeout:[50,51,52],set_record:55,set_session_log_level:58,set_verbos:41,set_vers:58,set_voltag:5,set_waveform:31,setactivechild:60,setcolor:8,setdeephistori:60,setinputhistori:8,setinputhistorys:8,setnocolor:8,setparentst:60,setpoint:[6,30],setshallowhistori:60,setter:[47,58],setup:58,sever:[18,24,37],sftp:54,sgn:43,shaft:[6,16,19],shallow:60,shallow_history_st:60,shallowhistoryst:60,shape:44,share:54,shared_ptr:6,sharp_click:31,shield:10,shift:44,shifter:44,shop:36,short_local_nam:54,shorten:54,should:[5,6,8,9,10,12,13,21,22,25,38,39,40,47,50,51,52,56,57,58,60,61],shouldn:[21,41],show:[8,60],showcas:20,shown:41,shut:61,side:[5,29],sign:[15,43,46],signal:[10,12,22,23,25,26,31,56,57],signatur:61,similar:57,simpl:[0,4,21,27,28,41,54,56,59],simplefoc:6,simpler:[40,57],simpli:[2,8,16],simplifi:58,simultan:[8,54],sin:48,sinc:[15,16,19,20,21,36,58,61],sine_pwm:[],singl:[4,15,30,41],single_unit_1:2,singleton:[20,21],sinusoid:6,sip:54,sixteen:1,size:[1,8,10,12,21,31,48,51,52,54,55,57,58,59,61],size_t:[1,2,6,8,10,11,12,13,15,16,19,21,22,23,25,26,31,36,38,40,41,48,50,51,52,57,58,59,61,64],sizeof:[1,10,13,16,19,31,36,38,55,57,58],sleep:[1,2,4,6,10,15,16,19,20,31,36,38,39,40,41,48,55,56,57,60,61],sleep_for:[13,20,40,41,48,51,52,56,58,60,61,64],sleep_until:61,slope:44,slot:31,slow:4,small:[30,44],smart:54,smartknob:30,smb:54,snap:30,snprintf:61,so:[1,4,6,8,10,11,13,15,16,19,20,21,24,28,30,31,33,36,38,46,48,55,56,57,58,60,61],so_recvtimeo:[50,51,52],so_reuseaddr:[50,51,52],so_reuseport:[50,51,52],sockaddr:50,sockaddr_in6:50,sockaddr_in:50,sockaddr_storag:[50,51,52],socket:[28,33,49,58],socket_fd:[50,51,52],soft_bump:31,soft_fuzz:31,softwar:[12,20],software_rotation_en:[12,13],some:[1,6,8,10,16,18,19,20,21,24,30,31,36,38,41,43,48,50,54,55,57,60,61],someth:[12,61],somewhat:30,sos_filt:26,sosfilt:[23,26],sourc:[52,57],source_address:50,sp:54,sp_hash_c192:54,sp_hash_c256:54,sp_hash_r256:54,sp_random_r192:54,space:[6,9,21,30,57],space_vector_pwm:6,sparignli:46,sparkfun:10,spawn:[16,19,28,58,60,61],spawn_endevent_ev:60,spawn_event1_ev:60,spawn_event2_ev:60,spawn_event3_ev:60,spawn_event4_ev:60,specfici:1,special:[17,31,36,57],specif:[9,30,32,35,58,60,61],specifi:[16,19,21,30,41,52,58],speed:[6,16,19,40,51],speed_mod:40,spi2_host:13,spi:[13,16,19,38],spi_bus_add_devic:13,spi_bus_config_t:13,spi_bus_initi:13,spi_device_interface_config_t:13,spi_dma_ch_auto:13,spi_num:13,spi_queue_s:13,spic:13,spics_io_num:13,spike:44,sporad:4,spot:6,sps128:1,sps1600:1,sps16:1,sps2400:1,sps250:1,sps32:1,sps3300:1,sps475:1,sps490:1,sps64:1,sps860:1,sps8:1,sps920:1,squar:47,sr:54,ssid:[54,55,63,64],st25dv04k:55,st25dv:[33,53],st25dv_read:55,st25dv_write:55,st7789_defin:13,st7789v_8h_sourc:13,st:[21,55],st_mode:21,st_size:21,sta:[33,62],stabl:54,stack:[48,61],stack_size_byt:[1,6,10,16,19,31,36,38,48,51,52,55,57,61],stackoverflow:[21,55],stand:6,standalon:[18,37],standard:[21,41,46,58],star:31,start:[1,2,4,6,8,10,12,13,15,16,19,20,28,30,31,36,38,39,40,41,47,48,49,51,52,55,56,57,58,60,61],start_fast_transfer_mod:55,start_receiv:52,startup:[16,19],stat:[21,48],state:[5,10,16,19,20,22,23,25,26,31,33,35,36,38,48,55,56,57],state_a:5,state_b:5,state_bas:60,state_c:5,state_machin:60,statebas:60,static_cast:[41,57],station:[33,62,63],statu:55,std:[1,2,4,6,8,10,11,12,13,15,16,19,20,26,28,30,31,35,36,38,39,40,41,42,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,63,64],stdby:6,stdin:60,stdin_out:8,stdout:60,step:61,still:39,stop:[1,2,4,6,10,12,15,16,19,20,28,30,31,36,38,39,40,48,51,52,55,56,57,58,60,64],stop_fast_transfer_mod:55,storag:[8,50],store:[8,10,13,21,27,44,54,55,58],str:11,strcutur:13,stream:[8,11,58],streamer:58,strength:30,strictli:59,string:[8,11,20,21,41,48,50,51,52,54,58,59,61,63,64],string_view:[13,21,28,41,51,52,54,55,58,61],strip:57,strong:30,strong_buzz:31,strong_click:31,strongli:59,struct:[1,2,4,5,6,9,10,12,15,16,19,21,23,25,27,30,31,35,36,38,39,40,41,42,44,46,48,50,51,52,54,55,56,57,58,59,61,63,64],structur:[1,6,10,12,13,20,31,35,36,38,39,40,42,44,50,51,52,54,56,60,63,64],sub:[8,20],sub_menu:8,sub_sub_menu:8,subclass:[26,50,58,60],subdirectori:21,submenu:8,submodul:8,subscib:20,subscrib:20,subscript:20,subsequ:54,subset:10,substat:60,subsub:8,subsubmenu:8,subsystem:[2,4,12,40],subtract:47,subystem:64,success:58,successfulli:[15,20,50,51,52,57,58,59],suffix:41,suggest:57,suit:9,super_mario_1:11,super_mario_3:11,super_mario_bros_1:11,super_mario_bros_3:11,suppli:5,support:[6,8,9,10,15,17,21,31,36,49,54,55,58],sure:[6,58],swap:35,swap_xi:35,symlink:31,symmetr:44,syst_address:55,system:[8,11,20,33,48,55,59,60,61],sytl:59,t5t:55,t:[1,2,4,6,10,11,13,15,16,19,20,21,31,36,38,39,40,41,42,44,46,47,48,51,52,54,55,56,57,61],ta:10,tabl:[21,48,54,58],tag:[41,54,55],take:[4,21],taken:21,talk:36,target:[6,64],task1:20,task2:20,task:[1,2,4,6,10,12,15,16,19,20,28,30,31,33,36,38,39,40,51,52,55,56,57,58,60],task_1_fn:20,task_2_fn:20,task_callback:48,task_config:52,task_fn:[2,4,10,15,16,19,31,36,38,39,48,55,56,57,60,61],task_id:48,task_iter:61,task_monitor:48,task_nam:[48,61],task_prior:2,task_stack_size_byt:48,taskmonitor:48,tb:10,tcp:[33,49,58],tcp_socket:51,tcpclientsess:51,tcpobex:54,tcpserver:51,tcpsocket:[50,51,58],tcptransmitconfig:51,tdata:59,tdown:10,tear:[50,51,52,61],teardown:58,tel:54,tell:57,tellg:21,telnet:54,templat:[6,15,17,21,23,26,28,30,41,42,46,47,61],termin:[8,60,61],test2:21,test:6,test_dir:21,test_fil:21,test_start:61,texa:31,text:[54,55],text_record:55,tflite:13,tft_driver:13,tft_espi:13,tftp:54,th:[12,27],than:[5,8,12,39,41,55,58],thank:8,thei:[8,10,30,58,60,61],them:[9,10,20,44,55,57,58,60,61],therefor:[2,4,8,9,16,19,31,46,61],thi:[1,2,4,5,6,8,9,10,11,12,13,15,16,19,20,21,22,28,30,31,33,36,38,39,40,41,46,47,48,50,51,52,54,55,56,57,58,59,60,61,63,64],thin:44,thing:48,third:59,this_thread:[13,20,40,41,48,51,52,56,58,60,61,64],those:[20,36,41,48,60],though:20,thread:[20,28,30,40,48,51,52,56,58,61],through:[6,30,31,46,57,60],throughput:2,ti:31,tick:60,tickselect:60,time:[4,5,10,16,19,20,21,31,36,38,40,41,48,52,55,56,57,60,61,64],time_point:21,time_t:[21,28],time_to_l:[50,51,52],timeout:[50,51,52,61],timer:40,tinys3:[6,57],tk:54,tkip:54,tleft:10,tloz_links_awaken:11,tloz_links_awakening_dx:11,tlv:55,tm:48,tmc6300:6,tname:59,tnf:54,to_time_t:[21,28],todo:[],too:58,top:60,topic:20,torqu:6,torque_control:6,torquecontroltyp:6,total:[15,21],total_spac:21,touch:35,touchpad:[33,34,54],touchpad_input:35,touchpad_read:35,touchpad_read_fn:35,touchpadinput:35,tp:[21,28],trace:48,track:56,transact:57,transaction_queue_depth:57,transceiv:33,transfer:[13,24,29,33,55],transfer_funct:27,transferfunct:[26,27],transform:[6,20],transit:60,transition_click_1:31,transition_hum_1:31,transmiss:[51,57],transmit:[20,50,51,52,54],transmit_config:51,transmitt:57,transport:58,trapezoid_120:[],trapezoid_150:[],tree:[52,57,60],trigger:[4,30,31,38,55],tright:10,trim_polici:11,trim_whitespac:11,triple_click:31,truncat:8,ts:31,tselect:10,tstart:10,ttl:[50,51,52],tup:10,turn:41,tvalu:59,two:[1,9,10,12,36,38,41,48,57],twothird:1,tx:54,tx_power_level:54,type5tagtyp:55,type:[1,3,6,8,10,12,15,16,18,19,20,21,24,30,31,33,35,36,37,38,39,41,47,50,51,52,54,55,57,58,59,61,64],type_specif:58,typedef:[1,6,8,12,16,19,20,31,35,36,38,39,50,51,52,55,57,61,64],typenam:[21,28,41,42,46,47],u:[47,54],ua:5,uart:8,ub:5,uc:5,ud:6,udp:[33,49,58],udp_multicast:52,udp_socket:52,udpserv:52,udpsocket:[50,52],uic:[54,55],uint16_t:[1,12,13,28,35,36,54,55,57],uint32_t:[10,12,13,40,54,55,58,59],uint64_t:[54,55],uint8_t:[1,10,12,13,16,19,31,35,36,38,41,50,51,52,54,55,57,59,63,64],uint:57,unabl:28,unbound:30,unbounded_no_det:30,uncalibr:[10,39],uncent:46,unchang:54,under:[15,21],underflow:15,understand:54,unicast:52,uniqu:[51,58,61],unique_lock:[1,2,4,6,10,15,16,19,20,31,36,38,39,40,51,55,56,57,60,61],unique_ptr:[48,51,58,61],unit:[0,2,4,6,10,15,21,22,39,47],univers:8,unknown:[54,64],unless:20,unlimit:8,unlink:21,unmap:39,unord:52,unordered_map:58,unregist:35,unreli:52,until:[8,20,21,30,31,40,51,52,57,60,61],unus:[10,15,30],unweight:42,unwind:60,up:[2,8,10,12,15,21,31,36,38,44,51,55,56,58,60,61],upat:12,updat:[5,6,10,12,16,19,22,23,25,26,30,36,38,39,40,41,44,46,47,50,55,56,60],update_detent_config:30,update_period:[6,12,16,19],upper:13,uq:6,uri:[54,55,58],uri_record:55,urn:54,urn_epc:54,urn_epc_id:54,urn_epc_pat:54,urn_epc_raw:54,urn_epc_tag:54,urn_nfc:54,us:[1,2,4,5,6,7,8,9,10,12,13,15,16,17,19,20,21,22,23,28,29,30,31,32,36,38,39,40,41,42,44,46,48,49,50,51,52,54,55,57,58,59,60,61],usag:[8,11],used_spac:21,user:[2,4,7,8,13,15,16,19,28,30,31,36,38,57,58,61],usernam:28,ust:20,util:[21,39,41,43,47,48,50,54,55],uuid:54,uuids_128_bit_complet:54,uuids_128_bit_parti:54,uuids_16_bit_complet:54,uuids_16_bit_parti:54,uuids_32_bit_complet:54,uuids_32_bit_parti:54,v:[6,9,46,47],val_mask:38,valid:[28,31,50,51,52,58],valu:[1,2,4,9,10,11,12,15,16,19,21,25,30,31,36,38,39,40,41,42,43,44,46,47,54,55,56,58,59,61],vari:30,variabl:[13,39,41,61],ve:[8,21,61],vector2d:[33,42,45],vector2f:39,vector:[2,4,6,10,11,21,25,39,40,47,48,50,51,52,54,58,59,61],veloc:[6,16,19],velocity_filt:[6,16,19],velocity_filter_fn:[16,19],velocity_limit:6,velocity_openloop:6,velocity_pid_config:6,veloicti:6,veolciti:[16,19],verbos:[1,2,4,5,6,10,12,15,16,19,20,30,31,35,36,38,39,40,51,52,55,56,57,58,60,61,63,64],version:[8,47,58],via:[21,31,36,38],vibe:31,vibrat:[30,31],video:[12,58],view:[51,52,54],vio:6,virtual:[10,60],visual:48,volt:5,voltag:[1,2,4,5,6,7],voltage_limit:5,vram0:12,vram1:12,vram:12,vram_size_byt:12,vram_size_px:12,vtaskgetinfo:48,w:[21,31,41,46],wa:[2,4,5,8,10,13,15,16,19,20,28,39,50,51,52,57,58,60,61],wai:[1,2,4,6,8,10,11,15,16,19,21,30,31,36,38,39,54,55,56,57,59,60,61],wait:[20,30,51,52,61],wait_for:[1,2,4,10,15,16,19,20,31,36,38,39,40,51,55,56,57,60,61],wait_for_respons:[51,52],wait_tim:40,wait_until:[6,61],want:[1,2,4,6,8,10,12,15,16,19,20,30,31,36,38,39,40,48,51,52,55,56,57,61],warn:[1,2,4,5,6,10,12,15,16,19,20,21,31,35,36,38,39,40,41,51,52,55,56,57,58,61,63,64],warn_rate_limit:41,watch:54,water:48,wave:44,waveform:31,we:[1,5,6,8,10,16,19,20,21,30,31,36,38,40,50,51,52,55,57,60,61],weak:30,webgm:60,weight:42,weightedconfig:42,welcom:41,well:[10,18,20,24,26,31,44,48,51,54,55,58,60,61],well_known:54,wep:54,were:[5,8,39,50,51,52,56,61],what:[4,5,57,60],whatev:[36,38],whe:64,when:[1,2,4,6,8,10,13,15,16,17,19,20,30,31,36,38,39,46,50,51,52,55,56,57,58,59,60,61,64],whenev:60,where:[7,15,30,48,52,60],whether:[2,10,12,16,19,21,40,46,50,51,52,57,58,61,64],which:[1,2,4,6,7,8,9,10,11,12,16,19,20,21,22,23,24,25,30,31,32,36,37,38,40,41,42,43,46,47,48,51,52,54,55,57,58,60,61,63,64],who:13,whole:[58,60],wi:[63,64],width:[12,13,30,58],wifi:[33,54,55],wifi_ap:63,wifi_record:55,wifi_sta:64,wifiap:63,wifiauthenticationtyp:54,wificonfig:54,wifiencryptiontyp:54,wifista:64,wiki:[22,23,26,50,51,52],wikipedia:[15,22,23,26,50,51,52],wind:56,window_size_byt:2,windup:56,wire:57,wireless:55,wish:[8,10],witdth:15,within:[9,16,18,19,20,30,41,46,52,61],without:[2,6,8,30,48,55,57,58],work:[6,8,21,30,48,58,61],world:8,would:[15,20,60,61],wpa2:54,wpa2_enterpris:54,wpa2_person:54,wpa:54,wpa_enterpris:54,wpa_person:54,wpa_wpa2_person:54,wrap:[5,15,20,36,57],wrapper:[2,4,8,11,12,21,35,39,40,41,42,44,57,59,60],write:[1,6,8,10,12,13,16,19,21,25,31,36,38,55],write_fn:[1,16,19,31,36,38,55],write_row:11,written:[54,55,60],wrote:[11,21],ws2812_bytes_encoder_config:57,ws2812b:57,www:[22,26,31,54,55],x1:47,x2:47,x:[8,10,13,22,35,36,38,39,47,48,55,58],x_calibr:[10,39],x_mv:[1,10,39],xe:13,xml:28,xml_in:28,xs:13,y1:47,y2:47,y:[10,13,22,35,39,41,44,47,58,63,64],y_calibr:[10,39],y_mv:[1,10,39],ye:[13,64],yellow:[11,41],yet:[6,16,19,29,61],yield:57,you:[2,6,8,10,11,12,15,20,21,40,41,44,46,48,55,56,57,58,59,60,63,64],your:[20,41,48],yourself:60,ys:13,z:15,zelda1:11,zelda2:11,zelda:11,zelda_2:11,zero:[6,15,46,55],zero_electric_offset:6},titles:["ADC Types","ADS1x15 I2C ADC","Continuous ADC","ADC APIs","Oneshot ADC","BLDC Driver","BLDC Motor","BLDC APIs","Command Line Interface (CLI) APIs","Color APIs","Controller APIs","CSV APIs","Display","Display Drivers","Display APIs","ABI Encoder","AS5600 Magnetic Encoder","Encoder Types","Encoder APIs","MT6701 Magnetic Encoder","Event Manager APIs","File System APIs","Biquad Filter","Butterworth Filter","Filter APIs","Lowpass Filter","Second Order Sections (SoS) Filter","Transfer Function API","FTP Server","FTP APIs","BLDC Haptics","DRV2605 Haptic Motor Driver","Haptics APIs","ESPP Documentation","Input APIs","Touchpad Input","AW9523 I/O Expander","IO Expander APIs","MCP23x17 I/O Expander","Joystick APIs","LED APIs","Logging APIs","Bezier","Fast Math","Gaussian","Math APIs","Range Mapper","Vector2d","Monitoring APIs","Network APIs","Sockets","TCP Sockets","UDP Sockets","NFC APIs","NDEF","ST25DV","PID APIs","Remote Control Transceiver (RMT)","RTSP APIs","Serialization APIs","State Machine APIs","Task APIs","WiFi APIs","WiFi Access Point (AP)","WiFi Station (STA)"],titleterms:{"1":[30,57],"2":30,"class":[1,2,4,5,6,8,9,10,11,12,13,15,16,19,20,21,22,23,25,26,28,30,31,35,36,38,39,40,41,42,44,46,47,48,50,51,52,54,55,56,57,58,59,60,61,63,64],"function":[27,28],"long":61,abi:15,abiencod:15,access:63,adc:[0,1,2,3,4,39],ads1x15:1,alpaca:59,analog:10,ap:63,api:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64],as5600:16,aw9523:36,basic:[30,41,48,56,61],bench:60,bezier:42,biquad:22,bldc:[5,6,7,30],bound:[],box:13,breath:40,butterworth:23,buzz:30,cli:8,click:30,client:[51,52,58],color:9,command:8,complex:[11,56,59,60],config:13,continu:2,control:[10,57],csv:11,data:57,de:59,detent:[],devic:60,digit:10,displai:[12,13,14],document:33,driver:[5,13,31],drv2605:31,encod:[15,16,17,18,19,57],esp32:13,espp:33,event:20,exampl:[1,2,4,6,8,10,11,13,15,16,19,20,21,30,31,36,38,39,40,41,48,51,52,55,56,57,58,59,60,61,63,64],expand:[36,37,38],fast:43,file:[0,1,2,4,5,6,8,9,10,11,12,13,15,16,17,19,20,21,22,23,25,26,27,28,30,31,35,36,38,39,40,41,42,43,44,46,47,48,50,51,52,54,55,56,57,58,59,60,61,63,64],filesystem:21,filter:[22,23,24,25,26],format:41,ftp:[28,29],gaussian:44,gener:60,get_latest_info:48,haptic:[30,31,32],header:[0,1,2,4,5,6,8,9,10,11,12,13,15,16,17,19,20,21,22,23,25,26,27,28,30,31,35,36,38,39,40,41,42,43,44,46,47,48,50,51,52,54,55,56,57,58,59,60,61,63,64],hfsm:60,i2c:[1,10],i:[36,38],ili9341:13,info:[21,61],input:[34,35],interfac:8,io:37,joystick:39,kit:13,led:40,line:8,linear:[15,40],log:41,logger:41,lowpass:25,machin:60,macro:[8,11,59,60],magnet:[16,19],manag:20,mani:61,mapper:46,math:[43,45],mcp23x17:38,monitor:48,motor:[6,31],mt6701:19,multicast:52,ndef:54,network:49,newlib:21,nfc:53,o:[36,38],oneshot:[4,8],order:26,pid:56,plai:30,point:63,posix:21,rang:46,reader:11,real:60,refer:[0,1,2,4,5,6,8,9,10,11,12,13,15,16,17,19,20,21,22,23,25,26,27,28,30,31,35,36,38,39,40,41,42,43,44,46,47,48,50,51,52,54,55,56,57,58,59,60,61,63,64],remot:57,request:61,respons:[51,52],rmt:57,rotat:15,rtsp:58,run:[60,61],s3:13,second:26,section:26,serial:59,server:[28,51,52,58],so:26,socket:[50,51,52],st25dv:55,st7789:13,sta:64,state:60,station:64,std:21,stop:61,structur:59,system:21,task:[48,61],tcp:51,test:60,thread:41,touchpad:35,transceiv:57,transfer:27,transmit:57,ttgo:13,type:[0,17],udp:52,union:[54,55],usag:[6,30],vector2d:47,verbos:41,wifi:[62,63,64],writer:11,wrover:13,ws2812:57}}) \ No newline at end of file diff --git a/docs/serialization.html b/docs/serialization.html index 5f13caea0..8f1e71ef1 100644 --- a/docs/serialization.html +++ b/docs/serialization.html @@ -132,7 +132,7 @@
  • »
  • Serialization APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -160,7 +160,7 @@

    API Reference

    Header File

    diff --git a/docs/state_machine.html b/docs/state_machine.html index 8b976abd6..5322e7ca8 100644 --- a/docs/state_machine.html +++ b/docs/state_machine.html @@ -136,7 +136,7 @@
  • »
  • State Machine APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -159,7 +159,7 @@

    API Reference

    Header File

    @@ -271,7 +271,7 @@

    Running the HFSM Test Bench on a Real Device:

    Header File

    @@ -421,7 +421,7 @@

    Classes

    Header File

    @@ -562,7 +562,7 @@

    Classes

    Header File

    diff --git a/docs/task.html b/docs/task.html index 0b21af610..eaa65208a 100644 --- a/docs/task.html +++ b/docs/task.html @@ -130,7 +130,7 @@
  • »
  • Task APIs
  • - Edit on GitHub + Edit on GitHub

  • @@ -153,7 +153,7 @@

    API Reference

    Header File

    diff --git a/docs/wifi/index.html b/docs/wifi/index.html index 296262574..0e9c855fa 100644 --- a/docs/wifi/index.html +++ b/docs/wifi/index.html @@ -126,7 +126,7 @@
  • »
  • WiFi APIs
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/docs/wifi/wifi_ap.html b/docs/wifi/wifi_ap.html index c84b04dda..25d1ed75b 100644 --- a/docs/wifi/wifi_ap.html +++ b/docs/wifi/wifi_ap.html @@ -133,7 +133,7 @@
  • WiFi APIs »
  • WiFi Access Point (AP)
  • - Edit on GitHub + Edit on GitHub

  • @@ -150,7 +150,7 @@

    API Reference

    Header File

    diff --git a/docs/wifi/wifi_sta.html b/docs/wifi/wifi_sta.html index f94487832..5ac6d68f4 100644 --- a/docs/wifi/wifi_sta.html +++ b/docs/wifi/wifi_sta.html @@ -134,7 +134,7 @@
  • WiFi APIs »
  • WiFi Station (STA)
  • - Edit on GitHub + Edit on GitHub

  • @@ -151,7 +151,7 @@

    API Reference

    Header File