Arduino PulseWire Transceiver Library
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes
pulsewire::ManchesterPreamble Class Reference

Custom Manchester preamble detector: run-in of alternating edges plus unique start pulse. More...

#include <Preamble.h>

Inheritance diagram for pulsewire::ManchesterPreamble:
Inheritance graph
[legend]
Collaboration diagram for pulsewire::ManchesterPreamble:
Collaboration graph
[legend]

Public Member Functions

 ManchesterPreamble (uint8_t runInCycles=2)
 
bool begin (uint16_t bitFrequencyHz) override
 
void setEdges (const pulsewire::Vector< pulsewire::OutputEdge > &edges)
 
void addEdge (const pulsewire::OutputEdge &edge)
 
void addEdge (bool level, uint32_t pulseUs)
 
void addEdge (bool level, uint16_t pulseCount, uint32_t frequencyHz)
 
void clear ()
 
int getEdges (Vector< OutputEdge > &output) const override
 Returns the expected preamble edges for this protocol.
 
size_t preambleLength () const override
 
void reset ()
 
virtual bool detect (const OutputEdge &edge)
 Detects if the incoming edge matches the expected preamble pattern.
 
bool inRange (uint32_t value, uint32_t target, uint32_t tolerance) const
 

Protected Attributes

pulsewire::Vector< pulsewire::OutputEdge_history
 
pulsewire::Vector< pulsewire::OutputEdge_expected
 

Detailed Description

Custom Manchester preamble detector: run-in of alternating edges plus unique start pulse.

This preamble consists of several cycles of alternating HIGH/LOW pulses (run-in), followed by a unique longer start pulse. This pattern is highly reliable for Manchester encoding, as it provides both clock synchronization and a unique start marker that cannot occur in normal Manchester data. The detector is efficient: it only needs to check the last N edges for the pattern, minimizing processing time.

Example (bitPeriod = 500us, runInCycles = 4): [HIGH 500us, LOW 500us, HIGH 500us, LOW 500us, HIGH 500us, LOW 500us, HIGH 500us, LOW 500us, HIGH 1000us]

Definition at line 202 of file Preamble.h.

Constructor & Destructor Documentation

◆ ManchesterPreamble()

pulsewire::ManchesterPreamble::ManchesterPreamble ( uint8_t  runInCycles = 2)
inline

Definition at line 204 of file Preamble.h.

Member Function Documentation

◆ addEdge() [1/3]

void pulsewire::CustomPreambleUs::addEdge ( bool  level,
uint16_t  pulseCount,
uint32_t  frequencyHz 
)
inlineinherited

Definition at line 142 of file Preamble.h.

◆ addEdge() [2/3]

void pulsewire::CustomPreambleUs::addEdge ( bool  level,
uint32_t  pulseUs 
)
inlineinherited

Definition at line 138 of file Preamble.h.

◆ addEdge() [3/3]

void pulsewire::CustomPreambleUs::addEdge ( const pulsewire::OutputEdge edge)
inlineinherited

Definition at line 137 of file Preamble.h.

◆ begin()

bool pulsewire::ManchesterPreamble::begin ( uint16_t  bitFrequencyHz)
inlineoverridevirtual

Reimplemented from pulsewire::Preamble.

Definition at line 206 of file Preamble.h.

◆ clear()

void pulsewire::CustomPreambleUs::clear ( )
inlineinherited

Definition at line 147 of file Preamble.h.

◆ detect()

virtual bool pulsewire::Preamble::detect ( const OutputEdge edge)
inlinevirtualinherited

Detects if the incoming edge matches the expected preamble pattern.

Reimplemented in pulsewire::IRMultiProtocol, and pulsewire::NoPreamble.

Definition at line 52 of file Preamble.h.

◆ getEdges()

int pulsewire::CustomPreambleUs::getEdges ( Vector< OutputEdge > &  output) const
inlineoverridevirtualinherited

Returns the expected preamble edges for this protocol.

Implements pulsewire::Preamble.

Definition at line 148 of file Preamble.h.

◆ inRange()

bool pulsewire::Preamble::inRange ( uint32_t  value,
uint32_t  target,
uint32_t  tolerance 
) const
inlineinherited

Utility function to check if a value is within a specified tolerance range of a target

Definition at line 95 of file Preamble.h.

◆ preambleLength()

size_t pulsewire::CustomPreambleUs::preambleLength ( ) const
inlineoverridevirtualinherited

Implements pulsewire::Preamble.

Definition at line 154 of file Preamble.h.

◆ reset()

void pulsewire::Preamble::reset ( )
inlineinherited

Definition at line 49 of file Preamble.h.

◆ setEdges()

void pulsewire::CustomPreambleUs::setEdges ( const pulsewire::Vector< pulsewire::OutputEdge > &  edges)
inlineinherited

Definition at line 134 of file Preamble.h.

Field Documentation

◆ _expected

pulsewire::Vector<pulsewire::OutputEdge> pulsewire::Preamble::_expected
protectedinherited

Definition at line 102 of file Preamble.h.

◆ _history

pulsewire::Vector<pulsewire::OutputEdge> pulsewire::Preamble::_history
protectedinherited

Definition at line 101 of file Preamble.h.


The documentation for this class was generated from the following file: