Firmware  0.4.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 {8'000u}
 Sample frequency [Hz] (sample takes 125µs, conversion frame 20ms)
 
constexpr auto drv::analog::conversion_frame_samples {160uz}
 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