FastLED 3.10.8
Loading...
Searching...
No Matches
channel.h
Go to the documentation of this file.
1#pragma once
2
4#include "fl/channels/rx.h"
6#include "fl/stl/noexcept.h"
7#include "fl/stl/shared_ptr.h"
8#include "fl/stl/stdint.h"
9#include "fl/stl/string.h"
10
11namespace fl {
12
13class RxChannel;
15
16class RxChannel {
17public:
18 static RxChannelPtr create(const RxChannelConfig& config) FL_NO_EXCEPT;
19
21
22 i32 id() const FL_NO_EXCEPT { return mId; }
23 const fl::string& name() const FL_NO_EXCEPT { return mName; }
24 int getPin() const FL_NO_EXCEPT;
25 fl::string getEngineName() const FL_NO_EXCEPT;
26
34
36 const char* lastBeginError() const FL_NO_EXCEPT;
38 bool finished() const FL_NO_EXCEPT;
39 RxWaitResult wait(u32 timeout_ms) FL_NO_EXCEPT;
40
41 fl::result<u32, DecodeError> decode(const ChipsetTiming4Phase& timing,
42 fl::span<u8> out) FL_NO_EXCEPT;
43 size_t getRawEdgeTimes(fl::span<EdgeTime> out, size_t offset = 0) FL_NO_EXCEPT;
44 bool injectEdges(fl::span<const EdgeTime> edges) FL_NO_EXCEPT;
45
46 const RxChannelConfig& config() const FL_NO_EXCEPT { return mConfig; }
47
48private:
49 template<typename T, typename... Args>
50 friend fl::shared_ptr<T> fl::adl_barrier::make_shared(Args&&... args) FL_NO_EXCEPT; // see fl/stl/adl_barrier.h
51
53
54 static i32 nextId() FL_NO_EXCEPT;
55 static fl::string makeName(i32 id, const fl::string& config_name) FL_NO_EXCEPT;
56
58 RxChannel& operator=(const RxChannel&) FL_NO_EXCEPT = delete;
60 RxChannel& operator=(RxChannel&&) FL_NO_EXCEPT = delete;
61
62 const i32 mId;
63 fl::string mName;
66};
67
68} // namespace fl
fl::shared_ptr< RxDevice > mDevice
Definition channel.h:65
bool injectEdges(fl::span< const EdgeTime > edges) FL_NO_EXCEPT
size_t getRawEdgeTimes(fl::span< EdgeTime > out, size_t offset=0) FL_NO_EXCEPT
const i32 mId
Definition channel.h:62
const char * lastBeginError() const FL_NO_EXCEPT
fl::result< u32, DecodeError > decode(const ChipsetTiming4Phase &timing, fl::span< u8 > out) FL_NO_EXCEPT
bool finished() const FL_NO_EXCEPT
static i32 nextId() FL_NO_EXCEPT
RxBackend backend() const FL_NO_EXCEPT
The capture backend this channel was created with.
RxChannelConfig mConfig
Definition channel.h:64
fl::string getEngineName() const FL_NO_EXCEPT
virtual ~RxChannel() FL_NO_EXCEPT
static fl::string makeName(i32 id, const fl::string &config_name) FL_NO_EXCEPT
const fl::string & name() const FL_NO_EXCEPT
Definition channel.h:23
static RxChannelPtr create(const RxChannelConfig &config) FL_NO_EXCEPT
int getPin() const FL_NO_EXCEPT
void setConfig(const RxChannelConfig &config) FL_NO_EXCEPT
const RxChannelConfig & config() const FL_NO_EXCEPT
Definition channel.h:46
fl::string mName
Definition channel.h:63
RxWaitResult wait(u32 timeout_ms) FL_NO_EXCEPT
RxChannel(const RxChannelConfig &config, fl::shared_ptr< RxDevice > device) FL_NO_EXCEPT
Common interface for RX devices.
Definition rx.h:269
fl::UISlider offset("Offset", 0.0f, 0.0f, 1.0f, 0.01f)
constexpr T * begin(T(&array)[N]) FL_NO_EXCEPT
shared_ptr< T > make_shared(Args &&... args) FL_NO_EXCEPT
Definition shared_ptr.h:423
unsigned char u8
Definition stdint.h:131
u8 u8 fract8 blur_amount FL_NO_EXCEPT
Definition blur.h:186
RxBackend
Definition types.h:8
expected< T, E > result
Alias for expected (Rust-style naming)
Definition result.h:31
RxWaitResult
Result codes for RX wait() operations.
Definition rx.h:152
DecodeError
Error codes for RX decoder operations.
Definition rx.h:68
Base definition for an LED controller.
4-phase RX timing thresholds for chipset detection
Definition rx.h:88
corkscrew_args args
Definition old.h:149
Common RX interfaces and shared types.
#define FASTLED_SHARED_PTR(type)
Definition shared_ptr.h:577
Universal edge timing representation (platform-agnostic)
Definition rx.h:34