84 template <uint16_t TShortMin, uint16_t TShortMax,
85 uint16_t TLongMin, uint16_t TLongMax>
88 static_assert(TShortMin <= TShortMax,
89 "TShortMax must be less or equal than TShortMax");
90 static_assert(TShortMax <= TLongMin,
91 "TShortMax must be less or equal than TLongMin");
92 static_assert(TLongMin <= TLongMax,
93 "TLongMin must be less or equal than TLongMax");
102 template <
typename Demodulator>
114 return static_cast<Demodulator *
>(
this)->internalAddPulseWidth(
138 return static_cast<Demodulator *
>(
this)->internalReset();
179 template <
typename TDemodulatorType>
183 uint16_t TShortMin, uint16_t TShortMax,
184 uint16_t TLongMin, uint16_t TLongMax>
187 BiphaseMark<TShortMin, TShortMax, TLongMin, TLongMax>>>
190 TShortMin, TShortMax, TLongMin, TLongMax>>>;
197 if (isLong(pulseWidth)) {
198 m_expectShort =
false;
204 else if (isShort(pulseWidth)) {
207 if (!m_expectShort) {
208 m_expectShort =
true;
214 m_expectShort =
false;
215 this->m_data =
false;
225 m_expectShort =
false;
229 static bool isLong(uint16_t value)
231 return (value >= TLongMin && value < TLongMax);
234 static bool isShort(uint16_t value)
236 return (value >= TShortMin && value < TShortMax);
Configuration parameter for Demodulator that enables Biphase Mark demodulation.
Definition: demodulator.h:86
Transforms continuous streams with pulse widths (for example from RF receivers) into bits...
Definition: demodulator.h:180
void reset()
Resets the demodulator state.
Definition: demodulator.h:135
bool getData() const
Returns the converted data.
Definition: demodulator.h:123
Bit manipulation utilities.
DemodulatorStatus
Demodulator status returned from DemodulatorBase::addPulseWidth.
Definition: demodulator.h:49
Namespace containing all symbols of the Sensors library.
Definition: bitdecoder.h:40
Demodulator base implementation.
Definition: demodulator.h:103
DemodulatorStatus addPulseWidth(uint16_t pulseWidth)
Adds the pulseWidth value to the Demodulator state.
Definition: demodulator.h:112