libNeon
Loading...
Searching...
No Matches
rmt.hpp
Go to the documentation of this file.
1//
2// Created by spak on 5/28/21.
3//
4
5#ifndef NEO_RMT_HPP
6#define NEO_RMT_HPP
7
8#include <cstdint>
9#include <driver/rmt_types_legacy.h>
10#include <driver/rmt.h>
11#include <utility>
12
13namespace neo {
14
15 enum struct controller {
18 };
19
20 [[nodiscard]] const char *to_string(controller c);
21
22 class rmt_manager;
23
24 [[nodiscard]] rmt_config_t make_rmt_config(rmt_channel_t channel, gpio_num_t gpio);
25
26 [[nodiscard]] std::pair<rmt_item32_t, rmt_item32_t> make_zero_one(rmt_manager const &manager, controller chip, bool inverted = false);
27
29 rmt_channel_t _channel = RMT_CHANNEL_MAX;
30 bool _manage_driver = false;
31
32 public:
33 rmt_manager() = default;
34 rmt_manager(rmt_config_t config, bool manage_driver);
35 rmt_manager(rmt_manager const &) = delete;
36 rmt_manager &operator=(rmt_manager const &) = delete;
37 rmt_manager(rmt_manager &&other) noexcept;
38 rmt_manager &operator=(rmt_manager &&other) noexcept;
39
40 [[nodiscard]] inline operator rmt_channel_t() const;
41
42 [[nodiscard]] std::uint32_t get_clock_hertz() const;
43
45 };
46
47}// namespace neo
48
49namespace neo {
50
51 rmt_manager::operator rmt_channel_t() const {
52 return _channel;
53 }
54
55}// namespace neo
56
57#endif//NEO_RMT_HPP
Definition: rmt.hpp:28
~rmt_manager()
Definition: rmt.cpp:125
std::uint32_t get_clock_hertz() const
Definition: rmt.cpp:117
rmt_manager(rmt_manager const &)=delete
rmt_manager & operator=(rmt_manager const &)=delete
bool _manage_driver
Definition: rmt.hpp:30
rmt_channel_t _channel
Definition: rmt.hpp:29
rmt_manager()=default
Definition: any_fx.cpp:7
const char * to_string(controller c)
Definition: rmt.cpp:54
std::pair< rmt_item32_t, rmt_item32_t > make_zero_one(rmt_manager const &manager, controller chip, bool inverted)
Definition: rmt.cpp:72
controller
Definition: rmt.hpp:15
rmt_config_t make_rmt_config(rmt_channel_t channel, gpio_num_t gpio)
Definition: rmt.cpp:65