Firmware  0.5.1
Loading...
Searching...
No Matches
config.hpp File Reference

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"
Include dependency graph for config.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< Statestate {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< Serverintf::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< Servicemw::dcc::service
constexpr uint8_t mw::ota::ack {0x06u}
constexpr uint8_t mw::ota::nak {0x15u}
std::shared_ptr< Servicemw::roco::z21::service
std::array< StackType_t, 3072uz > mw::zimo::ulf::stack {}

Detailed Description

Author
Vincent Hamp
Date
09/02/2023

Enumeration Type Documentation

◆ State

enum class State : uint16_t
strong
Enumerator
Suspended 

Idle.

Suspending 

About to be idle.

ShortCircuit 

Short circuit.

DCCOperations 

DCC operation mode.

DCCService 

DCC service mode.

DECUPZpp 

DECUP ZPP update.

DECUPZsu 

DECUP ZSU update.

MDUZpp 

MDU ZPP update.

MDUZsu 

MDU ZSU update.

ZUSI 

ZUSI mode.

ULF_DCC_EIN 

ULF_DCC_EIN USB mode.

ULF_DECUP_EIN 

ULF_DECUP_EIN USB mode.

ULF_MDU_EIN 

ULF_MDU_EIN USB mode.

ULF_SUSIV2 

ULF_SUSIV2 USB mode.

OTA 

OTA update.

Variable Documentation

◆ boot_gpio_num

auto boot_gpio_num {GPIO_NUM_0}
inlineconstexpr

◆ default_notify_index

auto default_notify_index {tskDEFAULT_INDEX_TO_NOTIFY + 1u}
inlineconstexpr

Index 0 is used by the Stream and Message Buffer implementation as indicated by the following warning from the Task Notifications documentation.

Warning
FreeRTOS Stream and Message Buffers use the task notification at array index 0. If you want to maintain the state of a task notification across a call to a Stream or Message Buffer API function then use a task notification at an array index greater than 0.

◆ state

std::atomic<State> state {State::Suspended}
inline