Firmware  0.7.1
Loading...
Searching...
No Matches
config.hpp
Go to the documentation of this file.
1// Copyright (C) 2025 Vincent Hamp
2//
3// This program is free software: you can redistribute it and/or modify
4// it under the terms of the GNU General Public License as published by
5// the Free Software Foundation, either version 3 of the License, or
6// (at your option) any later version.
7//
8// This program is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11// GNU General Public License for more details.
12//
13// You should have received a copy of the GNU General Public License
14// along with this program. If not, see <https://www.gnu.org/licenses/>.
15
21
22#pragma once
23
24#include <driver/rmt_tx.h>
25#include <driver/spi_master.h>
26#include <esp_http_server.h>
27#include <freertos/message_buffer.h>
28#include <freertos/queue.h>
29#include <freertos/stream_buffer.h>
30#include <hal/gpio_types.h>
31#include <static_math/static_math.h>
32#include <atomic>
33#include <climits>
34#include <dcc/dcc.hpp>
35#include <magic_enum/magic_enum.hpp>
36#include <memory>
37#include <string>
38#include <vector>
39#include <ztl/enum.hpp>
40#include <ztl/implicit_wrapper.hpp>
41#include <ztl/limits.hpp>
42#include <ztl/string.hpp>
43#include "task.hpp"
44
45#if CONFIG_IDF_TARGET_ESP32S3
46# include <driver/gptimer.h>
47# include <driver/ledc.h>
48# include <esp_wifi.h>
49# include <hal/adc_types.h>
50#elif CONFIG_IDF_TARGET_LINUX
51# define APP_CPU_NUM 0
52# define PRO_CPU_NUM APP_CPU_NUM
53# define WIFI_TASK_CORE_ID APP_CPU_NUM
54# define ADC_CHANNEL_1 1
55# define ADC_CHANNEL_2 2
56# define ADC_CHANNEL_3 3
57# define ADC_CHANNEL_4 4
58# define ADC_CHANNEL_5 5
59# define ADC_CHANNEL_6 6
60# define ADC_CHANNEL_7 7
61# define ADC_CHANNEL_8 8
62# define ADC_CHANNEL_9 9
63# define ADC_ATTEN_DB_0 0
64# define ADC_ATTEN_DB_2_5 1
65# define ADC_ATTEN_DB_6 2
66# define ADC_ATTEN_DB_11 3
67# define LEDC_CHANNEL_0 0
68# define LEDC_CHANNEL_1 1
69# define LEDC_CHANNEL_2 2
70# define LEDC_CHANNEL_3 3
71# define LEDC_CHANNEL_4 4
72# define LEDC_CHANNEL_5 5
73# define LEDC_CHANNEL_6 6
74# define LEDC_CHANNEL_7 7
75# define SOC_ADC_PATT_LEN_MAX 24
76# define SOC_ADC_DIGI_MAX_BITWIDTH 12
77# define SOC_ADC_DIGI_DATA_BYTES_PER_CONV 4
78# define SOC_ADC_SAMPLE_FREQ_THRES_HIGH 83333
79# define GPIO_NUM_1 static_cast<gpio_num_t>(1)
80# define GPIO_NUM_2 static_cast<gpio_num_t>(2)
81# define GPIO_NUM_3 static_cast<gpio_num_t>(3)
82# define GPIO_NUM_4 static_cast<gpio_num_t>(4)
83# define GPIO_NUM_5 static_cast<gpio_num_t>(5)
84# define GPIO_NUM_6 static_cast<gpio_num_t>(6)
85# define GPIO_NUM_7 static_cast<gpio_num_t>(7)
86# define GPIO_NUM_8 static_cast<gpio_num_t>(8)
87# define GPIO_NUM_9 static_cast<gpio_num_t>(9)
88# define GPIO_NUM_10 static_cast<gpio_num_t>(10)
89# define GPIO_NUM_11 static_cast<gpio_num_t>(11)
90# define GPIO_NUM_12 static_cast<gpio_num_t>(12)
91# define GPIO_NUM_13 static_cast<gpio_num_t>(13)
92# define GPIO_NUM_14 static_cast<gpio_num_t>(14)
93# define GPIO_NUM_15 static_cast<gpio_num_t>(15)
94# define GPIO_NUM_16 static_cast<gpio_num_t>(16)
95# define GPIO_NUM_17 static_cast<gpio_num_t>(17)
96# define GPIO_NUM_18 static_cast<gpio_num_t>(18)
97# define GPIO_NUM_19 static_cast<gpio_num_t>(19)
98# define GPIO_NUM_20 static_cast<gpio_num_t>(20)
99# define GPIO_NUM_21 static_cast<gpio_num_t>(21)
100# define GPIO_NUM_22 static_cast<gpio_num_t>(22)
101# define GPIO_NUM_23 static_cast<gpio_num_t>(23)
102# define GPIO_NUM_24 static_cast<gpio_num_t>(24)
103# define GPIO_NUM_25 static_cast<gpio_num_t>(25)
104# define GPIO_NUM_26 static_cast<gpio_num_t>(26)
105# define GPIO_NUM_27 static_cast<gpio_num_t>(27)
106# define GPIO_NUM_28 static_cast<gpio_num_t>(28)
107# define GPIO_NUM_29 static_cast<gpio_num_t>(29)
108# define GPIO_NUM_30 static_cast<gpio_num_t>(30)
109# define GPIO_NUM_31 static_cast<gpio_num_t>(31)
110# define GPIO_NUM_32 static_cast<gpio_num_t>(32)
111# define GPIO_NUM_33 static_cast<gpio_num_t>(33)
112# define GPIO_NUM_34 static_cast<gpio_num_t>(34)
113# define GPIO_NUM_35 static_cast<gpio_num_t>(35)
114# define GPIO_NUM_36 static_cast<gpio_num_t>(36)
115# define GPIO_NUM_37 static_cast<gpio_num_t>(37)
116# define GPIO_NUM_38 static_cast<gpio_num_t>(38)
117# define GPIO_NUM_39 static_cast<gpio_num_t>(39)
118# define GPIO_NUM_40 static_cast<gpio_num_t>(40)
119# define GPIO_NUM_41 static_cast<gpio_num_t>(41)
120# define GPIO_NUM_42 static_cast<gpio_num_t>(42)
121# define GPIO_NUM_43 static_cast<gpio_num_t>(43)
122# define GPIO_NUM_44 static_cast<gpio_num_t>(44)
123# define GPIO_NUM_45 static_cast<gpio_num_t>(45)
124# define GPIO_NUM_46 static_cast<gpio_num_t>(46)
125# define GPIO_NUM_47 static_cast<gpio_num_t>(47)
126# define GPIO_NUM_48 static_cast<gpio_num_t>(48)
127#else
128# error "Unsupported SOC"
129#endif
130
142inline constexpr auto default_notify_index{tskDEFAULT_INDEX_TO_NOTIFY + 1u};
143static_assert(configTASK_NOTIFICATION_ARRAY_ENTRIES > 1);
144
146inline constexpr auto boot_gpio_num{GPIO_NUM_0};
147
149enum class State : uint16_t {
150 // Flags (8 bits)
151 Suspended = 0u << 0u,
154
155 // Outputs
156 DCCOperations = 1u << CHAR_BIT,
157 DCCService = 2u << CHAR_BIT,
158 DECUPZpp = 3u << CHAR_BIT,
159 DECUPZsu = 4u << CHAR_BIT,
160 MDUZpp = 5u << CHAR_BIT,
161 MDUZsu = 6u << CHAR_BIT,
162 ZUSI = 7u << CHAR_BIT,
163
164 // USB protocols
165 ULF_DCC_EIN = 8u << CHAR_BIT,
166 ULF_MDU_EIN = 9u << CHAR_BIT,
167 ULF_SUSIV2 = 10u << CHAR_BIT,
168
169 // System
170 OTA = 11u << CHAR_BIT,
171};
172static_assert(std::to_underlying(State::OTA) < MAGIC_ENUM_RANGE_MAX);
173
174ZTL_MAKE_ENUM_CLASS_FLAGS(State)
175
176
177inline std::atomic<State> state{State::Suspended};
178
179namespace drv {
180
181namespace anlg {
182
183inline constexpr auto ol_on_gpio_num{GPIO_NUM_17};
184
186inline constexpr auto voltage_upper_r{14300};
187
189inline constexpr auto voltage_lower_r{470};
190
192inline constexpr auto current_r{180};
193
195inline constexpr auto current_k{800};
196
197inline constexpr auto vref{1000};
198inline constexpr auto max_measurement{smath::pow(2, SOC_ADC_DIGI_MAX_BITWIDTH) -
199 1};
200inline constexpr auto voltage_channel{ADC_CHANNEL_2};
201inline constexpr auto current_channel{ADC_CHANNEL_9};
202inline constexpr auto attenuation{ADC_ATTEN_DB_0};
203inline constexpr std::array channels{current_channel, voltage_channel};
204
209inline constexpr auto sample_freq_hz{80'000u};
210
212inline constexpr auto conversion_frame_samples{1600uz};
213
215inline constexpr auto conversion_frame_time{(conversion_frame_samples * 1000u) /
217static_assert(conversion_frame_time == 20u);
218
220 SOC_ADC_DIGI_DATA_BYTES_PER_CONV};
221static_assert(conversion_frame_size == 6400uz);
224static_assert(size(channels) < SOC_ADC_PATT_LEN_MAX);
225
227inline TASK(adc_task,
228 "drv::anlg::adc", // Name
229 2048uz, // Stack size
230 ESP_TASK_PRIO_MAX - 2u, // Priority
231 APP_CPU_NUM, // Core
232 200u); // Timeout
233
235inline TASK(temp_task,
236 "drv::anlg::temp", // Name
237 2048uz, // Stack size
238 tskIDLE_PRIORITY, // Priority
239 APP_CPU_NUM, // Core
240 0u);
241
243 ztl::implicit_wrapper<ztl::smallest_signed_t<0, max_measurement>,
244 struct VoltageMeasurementTag>;
245
246using Voltage =
247 ztl::implicit_wrapper<VoltageMeasurement::value_type, struct VoltageTag>;
248
250 ztl::implicit_wrapper<ztl::smallest_signed_t<0, max_measurement>,
251 struct CurrentMeasurementTag>;
252
253using Current =
254 ztl::implicit_wrapper<CurrentMeasurement::value_type, struct CurrentTag>;
255
257inline struct VoltagesQueue {
259 std::array<VoltageMeasurement, conversion_frame_samples_per_channel>;
260 static constexpr auto size{1uz};
261 static inline QueueHandle_t handle{};
263
265inline struct CurrentsQueue {
267 std::array<CurrentMeasurement, conversion_frame_samples_per_channel>;
268 static constexpr auto size{1uz};
269 static inline QueueHandle_t handle{};
271
273inline struct TemperatureQueue {
274 using value_type = float;
275 static constexpr auto size{1uz};
276 static inline QueueHandle_t handle{};
278
279} // namespace anlg
280
281namespace eth {
282
284inline constexpr auto cs_gpio_num{GPIO_NUM_42};
285
287inline constexpr auto sclk_gpio_num{GPIO_NUM_2};
288
290inline constexpr auto miso_gpio_num{GPIO_NUM_40};
291
293inline constexpr auto mosi_gpio_num{GPIO_NUM_41};
294
295inline std::array<char, 16uz> ip{};
296inline std::string ip_str{};
297inline std::array<uint8_t, 6uz> mac{};
298inline std::string mac_str(2uz * 6uz + 5uz + sizeof('\n'), '\0');
299
300} // namespace eth
301
302namespace led {
303
305inline constexpr auto bug_gpio_num{GPIO_NUM_48};
306
308inline constexpr auto bug_channel{LEDC_CHANNEL_0};
309
311inline constexpr auto wifi_gpio_num{GPIO_NUM_47};
312
314inline constexpr auto wifi_channel{LEDC_CHANNEL_1};
315
316} // namespace led
317
318namespace out {
319
321inline std::array<StackType_t, 4096uz> stack{};
322
323#if !CONFIG_IDF_TARGET_LINUX
324inline gptimer_handle_t gptimer{};
325#endif
326
328inline struct RxMessageBuffer {
329 static constexpr auto size{320uz};
330 static inline MessageBufferHandle_t handle{};
332
334inline struct TxMessageBuffer {
335 static constexpr auto size{320uz};
336 static inline MessageBufferHandle_t front_handle{};
337 static inline MessageBufferHandle_t back_handle{};
339
340namespace susi {
341
342inline std::array<spi_device_handle_t, 4uz> spis{};
343
344inline constexpr auto enable_gpio_num{GPIO_NUM_4};
345inline constexpr auto clock_gpio_num{GPIO_NUM_6};
346inline constexpr auto data_gpio_num{GPIO_NUM_5};
347
348namespace zimo::zusi {
349
351inline SHARED_TASK(task,
352 "drv::out::susi::zimo::zusi", // Name
353 ESP_TASK_PRIO_MAX - 1u, // Priority
354 APP_CPU_NUM, // Core
355 0u);
356
357} // namespace zimo::zusi
358
359} // namespace susi
360
361namespace track {
362
363enum class CurrentLimit : uint8_t {
364 _500mA = 0b00u,
365 _1300mA = 0b01u,
366 _2700mA = 0b10u,
367 _4100mA = 0b11u
368};
369
371inline constexpr auto trans_queue_depth{2uz};
372
373inline constexpr auto p_gpio_num{GPIO_NUM_11};
374inline constexpr auto n_force_low_gpio_num{GPIO_NUM_9};
375
376inline constexpr auto ack_gpio_num{GPIO_NUM_18};
377inline constexpr auto nsleep_gpio_num{GPIO_NUM_8};
378inline constexpr auto ilim0_gpio_num{GPIO_NUM_15};
379inline constexpr auto ilim1_gpio_num{GPIO_NUM_16};
380inline constexpr auto nfault_gpio_num{GPIO_NUM_46};
381inline constexpr auto enable_gpio_num{GPIO_NUM_12};
382
384inline struct RxQueue {
385 struct value_type {
386 dcc::Packet packet{};
387 dcc::bidi::Datagram<> datagram{};
388 };
389 static constexpr auto size{32uz};
390 static inline QueueHandle_t handle{};
392
393inline rmt_channel_handle_t channel{};
394inline rmt_encoder_handle_t encoder{};
395
396namespace dcc {
397
398inline constexpr auto bidi_rx_gpio_num{GPIO_NUM_14};
399inline constexpr auto bidi_en_gpio_num{GPIO_NUM_13};
400
402inline SHARED_TASK(task,
403 "drv::out::track::dcc", // Name
404 ESP_TASK_PRIO_MAX - 1u, // Priority
405 APP_CPU_NUM, // Core
406 0u);
407
408} // namespace dcc
409
410namespace zimo {
411
412namespace decup {
413
415inline SHARED_TASK(task,
416 "drv::out::track::zimo::decup", // Name
417 ESP_TASK_PRIO_MAX - 1u, // Priority
418 APP_CPU_NUM, // Core
419 60'000u); // Timeout
420
421} // namespace decup
422
423namespace mdu {
424
426inline SHARED_TASK(task,
427 "drv::out::track::zimo::mdu", // Name
428 ESP_TASK_PRIO_MAX - 1u, // Priority
429 APP_CPU_NUM, // Core
430 0u);
431
432} // namespace mdu
433
434} // namespace zimo
435
436} // namespace track
437
438} // namespace out
439
440namespace wifi {
441
442//
444
445#if CONFIG_IDF_TARGET_ESP32S3
446inline std::vector<wifi_ap_record_t> ap_records;
447#endif
448
449} // namespace wifi
450
451} // namespace drv
452
453namespace intf {
454
455namespace http {
456
458inline httpd_handle_t handle{};
459
461inline constexpr auto stack_size{6144uz};
462
463namespace sta {
464
465class Server;
466inline std::shared_ptr<Server> server;
467
468} // namespace sta
469
470} // namespace http
471
472namespace mdns {
473
474inline std::string str;
475
476} // namespace mdns
477
478namespace udp {
479
480inline constexpr uint16_t port{21105u};
481inline int sock_fd;
482
483} // namespace udp
484
485namespace usb {
486
487inline constexpr auto vbus_gpio_num{GPIO_NUM_7};
488inline constexpr auto buffer_size{512uz};
489
491inline TASK(rx_task,
492 "intf::usb::rx", // Name
493 3072uz, // Stack size
494 5u, // Priority
495 APP_CPU_NUM, // Core
496 100u); // Timeout
497
499inline TASK(tx_task,
500 "intf::usb::tx", // Name
501 3072uz, // Stack size
502 1u, // Priority
503 APP_CPU_NUM, // Core
504 20u); // Timeout
505
507inline struct RxStreamBuffer {
508 static constexpr auto size{buffer_size};
509 StreamBufferHandle_t handle{};
511
513inline struct TxStreamBuffer {
514 static constexpr auto size{buffer_size};
515 StreamBufferHandle_t handle{};
517
518} // namespace usb
519
520} // namespace intf
521
522namespace mem {
523
524namespace nvs {
525
527inline TASK(task,
528 "mem::nvs", // Name
529 3072uz, // Stack size
530 tskIDLE_PRIORITY, // Priority
531 APP_CPU_NUM, // Core
532 0u);
533
534} // namespace nvs
535
536} // namespace mem
537
538namespace mw {
539
540namespace dcc {
541
542inline constexpr auto priority_bits{5u};
543
544class Service;
545inline std::shared_ptr<Service> service;
546
548inline TASK(task,
549 "mw::dcc", // Name
550 4096uz, // Stack size
551 2u, // Priority
552 APP_CPU_NUM, // Core
553 50u); // Timeout
554
555} // namespace dcc
556
557namespace disp {
558
560inline TASK(task,
561 "mw::disp", // Name
562 4096uz, // Stack size
563 tskIDLE_PRIORITY, // Priority
564 APP_CPU_NUM, // Core
565 1000u); // Timeout
566
567} // namespace disp
568
569namespace ota {
570
572inline constexpr uint8_t ack{0x06u};
573
575inline constexpr uint8_t nak{0x15u};
576
578inline TASK(task,
579 "mw::ota", // Name
580 4096uz, // Stack size
581 ESP_TASK_PRIO_MAX - 1u, // Priority
582 APP_CPU_NUM, // Core
583 0u);
584
585} // namespace ota
586
587namespace roco::z21 {
588
590inline TASK(task,
591 "mw::roco::z21", // Name
592 6144uz, // Stack size
593 5u, // Priority
594 APP_CPU_NUM, // Core
595 500u); // Timeout
596
597class Service;
598inline std::shared_ptr<Service> service;
599
600} // namespace roco::z21
601
602namespace zimo {
603
604namespace decup {
605
607inline TASK(task,
608 "mw::zimo::decup", // Name
609 4096uz, // Stack size
610 2u, // Priority
611 APP_CPU_NUM, // Core
612 drv::out::track::zimo::decup::task.timeout); // Timeout
613
614} // namespace decup
615
616namespace mdu {
617
619inline TASK(task,
620 "mw::zimo::mdu", // Name
621 4096uz, // Stack size
622 2u, // Priority
623 APP_CPU_NUM, // Core
624 0u);
625
626} // namespace mdu
627
628namespace ulf {
629
630inline std::array<StackType_t, 3072uz> stack{};
631
632namespace dcc_ein {
633
635inline SHARED_TASK(task,
636 "mw::zimo::ulf::dcc_ein", // Name
637 intf::usb::rx_task.priority - 1u, // Priority
638 APP_CPU_NUM, // Core
639 100u); // Timeout
640
641} // namespace dcc_ein
642
643namespace susiv2 {
644
646inline SHARED_TASK(task,
647 "mw::zimo::ulf::susiv2", // Name
648 intf::usb::rx_task.priority - 1u, // Priority
649 APP_CPU_NUM, // Core
650 0u);
651
652} // namespace susiv2
653
654// https://github.com/OpenRemise/Firmware/issues/36
655static_assert(dcc_ein::task.priority < intf::usb::rx_task.priority);
656static_assert(susiv2::task.priority < intf::usb::rx_task.priority);
657
658} // namespace ulf
659
660namespace zusi {
661
663inline TASK(task,
664 "mw::zimo::zusi", // Name
665 4096uz, // Stack size
666 2u, // Priority
667 APP_CPU_NUM, // Core
668 0u);
669
670} // namespace zusi
671
672} // namespace zimo
673
674} // namespace mw
Definition server.hpp:31
Definition service.hpp:31
std::atomic< State > state
Restricts access to low-level tasks.
Definition config.hpp:177
constexpr auto boot_gpio_num
BOOT pin used to boot into bootloader or resetting WiFi station settings.
Definition config.hpp:146
State
System state.
Definition config.hpp:149
@ MDUZpp
MDU ZPP update.
Definition config.hpp:160
@ DECUPZpp
DECUP ZPP update.
Definition config.hpp:158
@ DCCOperations
DCC operation mode.
Definition config.hpp:156
@ ShortCircuit
Short circuit.
Definition config.hpp:153
@ OTA
OTA update.
Definition config.hpp:170
@ ULF_DCC_EIN
ULF_DCC_EIN USB mode.
Definition config.hpp:165
@ DECUPZsu
DECUP ZSU update.
Definition config.hpp:159
@ Suspending
About to be idle.
Definition config.hpp:152
@ MDUZsu
MDU ZSU update.
Definition config.hpp:161
@ ULF_SUSIV2
ULF_SUSIV2 USB mode.
Definition config.hpp:167
@ Suspended
Idle.
Definition config.hpp:151
@ ULF_MDU_EIN
ULF_MDU_EIN USB mode.
Definition config.hpp:166
@ ZUSI
ZUSI mode.
Definition config.hpp:162
@ DCCService
DCC service mode.
Definition config.hpp:157
constexpr auto default_notify_index
Default task notification index.
Definition config.hpp:142
Definition config.hpp:181
constexpr std::array channels
Definition config.hpp:203
struct drv::anlg::TemperatureQueue temperature_queue
constexpr auto conversion_frame_time
Time per frame [ms].
Definition config.hpp:215
constexpr auto current_r
Current sense resistor.
Definition config.hpp:192
constexpr auto conversion_frame_samples
Number of samples per frame.
Definition config.hpp:212
ztl::implicit_wrapper< VoltageMeasurement::value_type, struct VoltageTag > Voltage
Definition config.hpp:246
constexpr auto conversion_frame_size
Definition config.hpp:219
ztl::implicit_wrapper< ztl::smallest_signed_t< 0, max_measurement >, struct VoltageMeasurementTag > VoltageMeasurement
Definition config.hpp:242
constexpr auto ol_on_gpio_num
Definition config.hpp:183
constexpr auto conversion_frame_samples_per_channel
Definition config.hpp:222
constexpr auto max_measurement
Definition config.hpp:198
constexpr auto voltage_channel
Definition config.hpp:200
constexpr auto voltage_lower_r
Voltage divider lower resistor for voltage measurement.
Definition config.hpp:189
ztl::implicit_wrapper< CurrentMeasurement::value_type, struct CurrentTag > Current
Definition config.hpp:253
constexpr auto current_channel
Definition config.hpp:201
constexpr auto voltage_upper_r
Voltage divider upper resistor for voltage measurement.
Definition config.hpp:186
constexpr auto sample_freq_hz
Sample frequency [Hz] (sample takes 12.5us, conversion frame 20ms).
Definition config.hpp:209
struct drv::anlg::VoltagesQueue voltages_queue
ztl::implicit_wrapper< ztl::smallest_signed_t< 0, max_measurement >, struct CurrentMeasurementTag > CurrentMeasurement
Definition config.hpp:249
constexpr auto vref
Definition config.hpp:197
struct drv::anlg::CurrentsQueue currents_queue
constexpr auto current_k
Current sense ratio.
Definition config.hpp:195
constexpr auto attenuation
Definition config.hpp:202
Definition config.hpp:281
constexpr auto sclk_gpio_num
W5500 SPI clock.
Definition config.hpp:287
std::string ip_str
Definition config.hpp:296
std::array< char, 16uz > ip
Definition config.hpp:295
std::array< uint8_t, 6uz > mac
Definition config.hpp:297
constexpr auto miso_gpio_num
W5500 SPI MISO.
Definition config.hpp:290
constexpr auto mosi_gpio_num
W5500 SPI MOSI.
Definition config.hpp:293
std::string mac_str(2uz *6uz+5uz+sizeof('\n'), '\0')
constexpr auto cs_gpio_num
W5500 SPI chip select.
Definition config.hpp:284
Definition config.hpp:302
constexpr auto bug_gpio_num
Bug LED pin used to indicate errors or updates.
Definition config.hpp:305
constexpr auto wifi_gpio_num
WiFi LED used to indicate WiFi connection status.
Definition config.hpp:311
constexpr auto wifi_channel
WiFi LED channel.
Definition config.hpp:314
constexpr auto bug_channel
Bug LED channel.
Definition config.hpp:308
Definition config.hpp:348
Definition config.hpp:340
constexpr auto enable_gpio_num
Definition config.hpp:344
std::array< spi_device_handle_t, 4uz > spis
Definition config.hpp:342
constexpr auto data_gpio_num
Definition config.hpp:346
constexpr auto clock_gpio_num
Definition config.hpp:345
Definition config.hpp:396
constexpr auto bidi_en_gpio_num
Definition config.hpp:399
constexpr auto bidi_rx_gpio_num
Definition config.hpp:398
Definition config.hpp:412
Definition config.hpp:423
Definition config.hpp:410
Definition config.hpp:361
constexpr auto nsleep_gpio_num
Definition config.hpp:377
constexpr auto ilim1_gpio_num
Definition config.hpp:379
constexpr auto trans_queue_depth
Continuous transmission requires at least a depth of 2.
Definition config.hpp:371
constexpr auto ilim0_gpio_num
Definition config.hpp:378
constexpr auto enable_gpio_num
Definition config.hpp:381
constexpr auto ack_gpio_num
Definition config.hpp:376
rmt_encoder_handle_t encoder
Definition config.hpp:394
constexpr auto n_force_low_gpio_num
Definition config.hpp:374
constexpr auto nfault_gpio_num
Definition config.hpp:380
CurrentLimit
Definition config.hpp:363
@ _4100mA
Definition config.hpp:367
@ _1300mA
Definition config.hpp:365
@ _500mA
Definition config.hpp:364
@ _2700mA
Definition config.hpp:366
rmt_channel_handle_t channel
Definition config.hpp:393
constexpr auto p_gpio_num
Definition config.hpp:373
struct drv::out::track::RxQueue rx_queue
Definition config.hpp:318
struct drv::out::TxMessageBuffer tx_message_buffer
std::array< StackType_t, 4096uz > stack
Definition config.hpp:321
struct drv::out::RxMessageBuffer rx_message_buffer
gptimer_handle_t gptimer
Definition config.hpp:324
Definition config.hpp:440
Definition config.hpp:179
Definition config.hpp:463
std::shared_ptr< Server > server
Definition config.hpp:466
Definition config.hpp:455
httpd_handle_t handle
Handle to server instance.
Definition config.hpp:458
constexpr auto stack_size
Definition config.hpp:461
Definition config.hpp:472
std::string str
Definition config.hpp:474
Definition config.hpp:478
constexpr uint16_t port
Definition config.hpp:480
int sock_fd
Definition config.hpp:481
Definition config.hpp:485
constexpr auto buffer_size
Definition config.hpp:488
struct intf::usb::RxStreamBuffer rx_stream_buffer
constexpr auto vbus_gpio_num
Definition config.hpp:487
struct intf::usb::TxStreamBuffer tx_stream_buffer
Definition config.hpp:453
Definition config.hpp:524
Definition config.hpp:522
Definition config.hpp:540
constexpr auto priority_bits
Definition config.hpp:542
std::shared_ptr< Service > service
Definition config.hpp:545
Definition config.hpp:557
Definition config.hpp:569
constexpr uint8_t nak
Definition config.hpp:575
constexpr uint8_t ack
Definition config.hpp:572
Definition config.hpp:587
std::shared_ptr< Service > service
Definition config.hpp:598
Definition config.hpp:604
Definition config.hpp:616
Definition config.hpp:632
Definition config.hpp:643
Definition config.hpp:628
std::array< StackType_t, 3072uz > stack
Definition config.hpp:630
Definition config.hpp:660
Definition config.hpp:602
Definition config.hpp:538
Definition config.hpp:265
std::array< CurrentMeasurement, conversion_frame_samples_per_channel > value_type
Definition config.hpp:266
static constexpr auto size
Definition config.hpp:268
static QueueHandle_t handle
Definition config.hpp:269
Definition config.hpp:273
float value_type
Definition config.hpp:274
static constexpr auto size
Definition config.hpp:275
static QueueHandle_t handle
Definition config.hpp:276
Definition config.hpp:257
std::array< VoltageMeasurement, conversion_frame_samples_per_channel > value_type
Definition config.hpp:258
static constexpr auto size
Definition config.hpp:260
static QueueHandle_t handle
Definition config.hpp:261
Definition config.hpp:328
static constexpr auto size
Definition config.hpp:329
static MessageBufferHandle_t handle
Definition config.hpp:330
Definition config.hpp:334
static MessageBufferHandle_t back_handle
Definition config.hpp:337
static constexpr auto size
Definition config.hpp:335
static MessageBufferHandle_t front_handle
Definition config.hpp:336
Definition config.hpp:385
dcc::Packet packet
Definition config.hpp:386
dcc::bidi::Datagram datagram
Definition config.hpp:387
Definition config.hpp:384
static QueueHandle_t handle
Definition config.hpp:390
static constexpr auto size
Definition config.hpp:389
Definition config.hpp:507
StreamBufferHandle_t handle
Definition config.hpp:509
static constexpr auto size
Definition config.hpp:508
Definition config.hpp:513
StreamBufferHandle_t handle
Definition config.hpp:515
static constexpr auto size
Definition config.hpp:514
Task macros.
#define SHARED_TASK(OBJECT, NAME, PRIORITY, CORE_ID, TIMEOUT)
Create shared task.
Definition task.hpp:82
#define TASK(OBJECT, NAME, STACK_SIZE, PRIORITY, CORE_ID, TIMEOUT)
Create task.
Definition task.hpp:69