Config. More...
#include <driver/rmt_tx.h>#include <driver/spi_master.h>#include <esp_http_server.h>#include <freertos/message_buffer.h>#include <freertos/queue.h>#include <freertos/stream_buffer.h>#include <hal/gpio_types.h>#include <static_math/static_math.h>#include <atomic>#include <climits>#include <dcc/dcc.hpp>#include <magic_enum/magic_enum.hpp>#include <memory>#include <string>#include <vector>#include <ztl/enum.hpp>#include <ztl/implicit_wrapper.hpp>#include <ztl/limits.hpp>#include <ztl/string.hpp>#include "task.hpp"Go to the source code of this file.
Classes | |
| struct | drv::analog::VoltagesQueue |
| struct | drv::analog::CurrentsQueue |
| struct | drv::analog::TemperatureQueue |
| struct | drv::out::RxMessageBuffer |
| struct | drv::out::TxMessageBuffer |
| struct | drv::out::track::RxQueue |
| struct | drv::out::track::RxQueue::value_type |
| struct | intf::usb::RxStreamBuffer |
| struct | intf::usb::TxStreamBuffer |
Namespaces | |
| namespace | drv |
| namespace | drv::analog |
| namespace | drv::led |
| namespace | drv::out |
| namespace | drv::out::susi |
| namespace | drv::out::susi::zimo |
| namespace | drv::out::susi::zimo::zusi |
| namespace | drv::out::track |
| namespace | drv::out::track::dcc |
| namespace | drv::out::track::zimo |
| namespace | drv::out::track::zimo::decup |
| namespace | drv::out::track::zimo::mdu |
| namespace | drv::wifi |
| namespace | intf |
| namespace | intf::http |
| namespace | intf::http::sta |
| namespace | intf::mdns |
| namespace | intf::udp |
| namespace | intf::usb |
| namespace | mw |
| namespace | mw::dcc |
| namespace | mw::ota |
| namespace | mw::roco |
| namespace | mw::roco::z21 |
| namespace | mw::zimo |
| namespace | mw::zimo::decup |
| namespace | mw::zimo::mdu |
| namespace | mw::zimo::ulf |
| namespace | mw::zimo::ulf::dcc_ein |
| namespace | mw::zimo::ulf::decup_ein |
| namespace | mw::zimo::ulf::susiv2 |
| namespace | mw::zimo::zusi |
Typedefs | |
| using | drv::analog::VoltageMeasurement |
| using | drv::analog::Voltage |
| using | drv::analog::CurrentMeasurement |
| using | drv::analog::Current |
Enumerations | |
| enum class | State : uint16_t { Suspended = 0u << 0u , Suspending = !Suspended << 0u , ShortCircuit = Suspending << 1u , DCCOperations = 1u << CHAR_BIT , DCCService = 2u << CHAR_BIT , DECUPZpp = 3u << CHAR_BIT , DECUPZsu = 4u << CHAR_BIT , MDUZpp = 5u << CHAR_BIT , MDUZsu = 6u << CHAR_BIT , ZUSI = 7u << CHAR_BIT , ULF_DCC_EIN = 8u << CHAR_BIT , ULF_DECUP_EIN = 9u << CHAR_BIT , ULF_MDU_EIN = 10u << CHAR_BIT , ULF_SUSIV2 = 11u << CHAR_BIT , OTA = 12u << CHAR_BIT } |
| System state. More... | |
| enum class | drv::out::track::CurrentLimit : uint8_t { drv::out::track::_500mA = 0b00u , drv::out::track::_1300mA = 0b01u , drv::out::track::_2700mA = 0b10u , drv::out::track::_4100mA = 0b11u } |
Functions | |
| drv::analog::TASK (adc_task, "drv::analog::adc", 4096uz, ESP_TASK_PRIO_MAX - 2u, APP_CPU_NUM, 200u) | |
| drv::analog::TASK (temp_task, "drv::analog::temp", 2048uz, tskIDLE_PRIORITY, APP_CPU_NUM, 0u) | |
| drv::out::susi::zimo::zusi::SHARED_TASK (task, "drv::out::susi::zimo::zusi", ESP_TASK_PRIO_MAX - 1u, APP_CPU_NUM, 0u) | |
| drv::out::track::dcc::SHARED_TASK (task, "drv::out::track::dcc", ESP_TASK_PRIO_MAX - 1u, APP_CPU_NUM, 0u) | |
| drv::out::track::zimo::decup::SHARED_TASK (task, "drv::out::track::zimo::decup", ESP_TASK_PRIO_MAX - 1u, APP_CPU_NUM, 60 '000u) | |
| drv::out::track::zimo::mdu::SHARED_TASK (task, "drv::out::track::zimo::mdu", ESP_TASK_PRIO_MAX - 1u, APP_CPU_NUM, 0u) | |
| std::string | drv::wifi::mac_str (2uz *6uz+5uz+sizeof('\n'), '\0') |
| drv::wifi::TASK (task, "drv::wifi", 3072uz, tskIDLE_PRIORITY, WIFI_TASK_CORE_ID, 0u) | |
| intf::usb::TASK (rx_task, "intf::usb::rx", 3072uz, 5u, APP_CPU_NUM, 100u) | |
| intf::usb::TASK (tx_task, "intf::usb::tx", 3072uz, 1u, APP_CPU_NUM, 20u) | |
| mw::dcc::TASK (task, "mw::dcc", 4096uz, 2u, APP_CPU_NUM, 50u) | |
| mw::ota::TASK (task, "mw::ota", 4096uz, ESP_TASK_PRIO_MAX - 1u, APP_CPU_NUM, 0u) | |
| mw::roco::z21::TASK (task, "mw::roco::z21", 6144uz, 5u, APP_CPU_NUM, 500u) | |
| mw::zimo::decup::TASK (task, "mw::zimo::decup", 4096uz, 2u, APP_CPU_NUM, drv::out::track::zimo::decup::task.timeout) | |
| mw::zimo::mdu::TASK (task, "mw::zimo::mdu", 4096uz, 2u, APP_CPU_NUM, 0u) | |
| mw::zimo::ulf::dcc_ein::SHARED_TASK (task, "mw::zimo::ulf::dcc_ein", intf::usb::rx_task.priority - 1u, APP_CPU_NUM, 100u) | |
| mw::zimo::ulf::decup_ein::SHARED_TASK (task, "mw::zimo::ulf::decup_ein", intf::usb::rx_task.priority - 1u, APP_CPU_NUM, drv::out::track::zimo::decup::task.timeout) | |
| mw::zimo::ulf::susiv2::SHARED_TASK (task, "mw::zimo::ulf::susiv2", intf::usb::rx_task.priority - 1u, APP_CPU_NUM, 0u) | |
| mw::zimo::zusi::TASK (task, "mw::zimo::zusi", 4096uz, 2u, APP_CPU_NUM, 0u) | |
Variables | |
| constexpr auto | default_notify_index {tskDEFAULT_INDEX_TO_NOTIFY + 1u} |
| Default task notification index. | |
| constexpr auto | boot_gpio_num {GPIO_NUM_0} |
| BOOT pin used to boot into bootloader or resetting WiFi station settings. | |
| std::atomic< State > | state {State::Suspended} |
| Restricts access to low-level tasks. | |
| constexpr auto | drv::analog::ol_on_gpio_num {GPIO_NUM_17} |
| constexpr auto | drv::analog::voltage_upper_r {14300} |
| Voltage divider upper resistor for voltage measurement. | |
| constexpr auto | drv::analog::voltage_lower_r {470} |
| Voltage divider lower resistor for voltage measurement. | |
| constexpr auto | drv::analog::current_r {180} |
| Current sense resistor. | |
| constexpr auto | drv::analog::current_k {800} |
| Current sense ratio. | |
| constexpr auto | drv::analog::vref {1000} |
| constexpr auto | drv::analog::max_measurement |
| constexpr auto | drv::analog::voltage_channel {ADC_CHANNEL_2} |
| constexpr auto | drv::analog::current_channel {ADC_CHANNEL_9} |
| constexpr auto | drv::analog::attenuation {ADC_ATTEN_DB_0} |
| constexpr std::array | drv::analog::channels {current_channel, voltage_channel} |
| constexpr auto | drv::analog::sample_freq_hz {80'000u} |
| Sample frequency [Hz] (sample takes 12.5us, conversion frame 20ms) | |
| constexpr auto | drv::analog::conversion_frame_samples {1600uz} |
| Number of samples per frame. | |
| constexpr auto | drv::analog::conversion_frame_time |
| Time per frame [ms]. | |
| constexpr auto | drv::analog::conversion_frame_size |
| constexpr auto | drv::analog::conversion_frame_samples_per_channel |
| struct drv::analog::VoltagesQueue | drv::analog::voltages_queue |
| struct drv::analog::CurrentsQueue | drv::analog::currents_queue |
| struct drv::analog::TemperatureQueue | drv::analog::temperature_queue |
| constexpr auto | drv::led::bug_gpio_num {GPIO_NUM_48} |
| Bug LED pin used to indicate errors or updates. | |
| constexpr auto | drv::led::bug_channel {LEDC_CHANNEL_0} |
| Bug LED channel. | |
| constexpr auto | drv::led::wifi_gpio_num {GPIO_NUM_47} |
| WiFi LED used to indicate WiFi connection status. | |
| constexpr auto | drv::led::wifi_channel {LEDC_CHANNEL_1} |
| WiFi LED channel. | |
| std::array< StackType_t, 4096uz > | drv::out::stack {} |
| gptimer_handle_t | drv::out::gptimer {} |
| struct drv::out::RxMessageBuffer | drv::out::rx_message_buffer |
| struct drv::out::TxMessageBuffer | drv::out::tx_message_buffer |
| std::array< spi_device_handle_t, 4uz > | drv::out::susi::spis {} |
| constexpr auto | drv::out::susi::enable_gpio_num {GPIO_NUM_4} |
| constexpr auto | drv::out::susi::clock_gpio_num {GPIO_NUM_6} |
| constexpr auto | drv::out::susi::data_gpio_num {GPIO_NUM_5} |
| constexpr auto | drv::out::track::trans_queue_depth {2uz} |
| Continuous transmission requires at least a depth of 2. | |
| constexpr auto | drv::out::track::p_gpio_num {GPIO_NUM_11} |
| constexpr auto | drv::out::track::n_force_low_gpio_num {GPIO_NUM_9} |
| constexpr auto | drv::out::track::ack_gpio_num {GPIO_NUM_18} |
| constexpr auto | drv::out::track::nsleep_gpio_num {GPIO_NUM_8} |
| constexpr auto | drv::out::track::ilim0_gpio_num {GPIO_NUM_15} |
| constexpr auto | drv::out::track::ilim1_gpio_num {GPIO_NUM_16} |
| constexpr auto | drv::out::track::nfault_gpio_num {GPIO_NUM_46} |
| constexpr auto | drv::out::track::enable_gpio_num {GPIO_NUM_12} |
| struct drv::out::track::RxQueue | drv::out::track::rx_queue |
| rmt_channel_handle_t | drv::out::track::channel {} |
| rmt_encoder_handle_t | drv::out::track::encoder {} |
| constexpr auto | drv::out::track::dcc::bidi_rx_gpio_num {GPIO_NUM_14} |
| constexpr auto | drv::out::track::dcc::bidi_en_gpio_num {GPIO_NUM_13} |
| std::string | drv::wifi::ip_str |
| std::array< uint8_t, 6uz > | drv::wifi::mac |
| httpd_handle_t | intf::http::handle {} |
| Handle to server instance. | |
| constexpr auto | intf::http::stack_size {6144uz} |
| std::shared_ptr< Server > | intf::http::sta::server |
| std::string | intf::mdns::str |
| constexpr uint16_t | intf::udp::port {21105u} |
| int | intf::udp::sock_fd |
| bool volatile | intf::usb::rts {} |
| constexpr auto | intf::usb::vbus_gpio_num {GPIO_NUM_7} |
| constexpr auto | intf::usb::buffer_size {512uz} |
| struct intf::usb::RxStreamBuffer | intf::usb::rx_stream_buffer |
| struct intf::usb::TxStreamBuffer | intf::usb::tx_stream_buffer |
| constexpr auto | mw::dcc::priority_bits {5u} |
| std::shared_ptr< Service > | mw::dcc::service |
| constexpr uint8_t | mw::ota::ack {0x06u} |
| constexpr uint8_t | mw::ota::nak {0x15u} |
| std::shared_ptr< Service > | mw::roco::z21::service |
| std::array< StackType_t, 3072uz > | mw::zimo::ulf::stack {} |
|
strong |
|
inlineconstexpr |
|
inlineconstexpr |
Index 0 is used by the Stream and Message Buffer implementation as indicated by the following warning from the Task Notifications documentation.
|
inline |