Infrared4Arduino
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | List of all members
IrReceiverSampler Class Reference

This receiving class samples the input pin every 50 microseconds using a timer interrupt. More...

#include <IrReceiverSampler.h>

Inheritance diagram for IrReceiverSampler:
Inheritance graph
[legend]
Collaboration diagram for IrReceiverSampler:
Collaboration graph
[legend]

Public Types

enum  ReceiverState_t { STATE_IDLE, STATE_MARK, STATE_SPACE, STATE_STOP }
 State space for the receiver state machine. More...
 
- Public Types inherited from IrReceiver
enum  irdata_t { IR_MARK, IR_SPACE }
 Enum for the duration types. More...
 

Public Member Functions

void enable ()
 Start reception of IR data. More...
 
void disable ()
 Stop reception of IR data. More...
 
void reset ()
 
void setEndingTimeout (milliseconds_t timeOut)
 
milliseconds_t getEndingTimeout () const
 
void setBeginningTimeout (milliseconds_t timeOut)
 
milliseconds_t getBeginningTimeout () const
 
size_t getDataLength () const
 Returns the number of collected durations. More...
 
microseconds_t getDuration (unsigned int i) const
 Returns the index-th duration, if possible. More...
 
boolean isReady () const
 Returns true if there is collected data. More...
 
- Public Member Functions inherited from IrReceiver
 IrReceiver (size_t bufSize, pin_t pin, boolean pullup=false, microseconds_t markExcess=defaultMarkExcess)
 Constructor. More...
 
virtual ~IrReceiver ()
 
virtual void receive ()
 Convenience function: enable, wait until data is collected or timeout has occured, disable. More...
 
pin_t getPin () const
 
- Public Member Functions inherited from IrReader
virtual void dump (Stream &stream) const
 Prints a textual representation of the received data to the Stream supplied. More...
 
IrSequencetoIrSequence () const
 Generates an IrSequence from the IrReader. More...
 
virtual boolean isEmpty () const
 
unsigned int getBufferSize () const
 
void setMarkExcess (int16_t markExcess_)
 Sets the markExcess, a number (possibly negative) to be subtracted from the on-durations and added to the off.durations. More...
 
int16_t getMarkExcess () const
 Gets the markExcess, a number (possibly negative) to be subtracted from the on-durations and added to the off.durations. More...
 

Static Public Member Functions

static IrReceiverSamplernewIrReceiverSampler (size_t captureLength=defaultCaptureLength, pin_t pin=defaultPin, boolean pullup=false, microseconds_t markExcess=defaultMarkExcess, milliseconds_t beginningTimeout=defaultBeginningTimeout, milliseconds_t endingTimeout=defaultEndingTimeout)
 This factory method replaces public constructors. More...
 
static void deleteInstance ()
 Deletes the instance, thereby freeing up the resources it occupied, and allowing for another instance to be created. More...
 
static IrReceiverSamplergetInstance ()
 Returns a pointer to the instance, or NULL. More...
 

Public Attributes

volatile ReceiverState_t receiverState
 State of the state machine. More...
 
uint32_t endingTimeoutInTicks
 
uint32_t beginningTimeoutInTicks
 
volatile uint32_t timer
 state timer, counts 50uS ticks. More...
 
volatile microseconds_tdurationData
 Data buffer. More...
 
volatile size_t dataLength
 Number of entries in durationData. More...
 

Static Public Attributes

static const unsigned long microsPerTick = 50
 microseconds per clock interrupt More...
 
- Static Public Attributes inherited from IrReceiver
static const pin_t defaultPin = 5
 
static const microseconds_t defaultMarkExcess = 50U
 
static const boolean invertingSensor = true
 Are we using inverting sensor, like most TSOPs? More...
 
- Static Public Attributes inherited from IrReader
static const milliseconds_t defaultBeginningTimeout = 2000U
 
static const milliseconds_t defaultEndingTimeout = 30U
 
static const size_t defaultCaptureLength = 100U
 

Protected Member Functions

virtual ~IrReceiverSampler ()
 
- Protected Member Functions inherited from IrReader
 IrReader (size_t bufSize_)
 Constructs an IrReader with buffersize bufSize_, possibly increased to be even. More...
 
 IrReader ()
 
virtual ~IrReader ()
 

Additional Inherited Members

- Static Protected Member Functions inherited from IrReader
static unsigned int forceEven (unsigned int x)
 
- Protected Attributes inherited from IrReader
milliseconds_t beginningTimeout
 
milliseconds_t endingTimeout
 
size_t bufferSize
 
int16_t markExcess
 Microseconds subtracted from pulses and added to gaps. More...
 
boolean timeouted
 True if last receive ended with a timeout. More...
 

Detailed Description

This receiving class samples the input pin every 50 microseconds using a timer interrupt.

Due to the ISP, this is a singleton class; it can only be instantiated once. This is enforced by the absence of public constructors: it has to be instantiated by the factory method newIrReceiverSampler.

Definition at line 18 of file IrReceiverSampler.h.

Member Enumeration Documentation

State space for the receiver state machine.

Enumerator
STATE_IDLE 

Between signals; waiting for first mark.

STATE_MARK 

Last read a mark.

STATE_SPACE 

Last read a space.

STATE_STOP 

Complete signal has been read.

Definition at line 25 of file IrReceiverSampler.h.

Constructor & Destructor Documentation

IrReceiverSampler::~IrReceiverSampler ( )
protectedvirtual

Definition at line 45 of file IrReceiverSampler.cpp.

Member Function Documentation

void IrReceiverSampler::deleteInstance ( )
static

Deletes the instance, thereby freeing up the resources it occupied, and allowing for another instance to be created.

Definition at line 40 of file IrReceiverSampler.cpp.

void IrReceiverSampler::disable ( )
virtual

Stop reception of IR data.

Reimplemented from IrReader.

Definition at line 66 of file IrReceiverSampler.cpp.

void IrReceiverSampler::enable ( )
virtual

Start reception of IR data.

Reimplemented from IrReader.

Definition at line 57 of file IrReceiverSampler.cpp.

milliseconds_t IrReceiverSampler::getBeginningTimeout ( ) const
virtual

Reimplemented from IrReader.

Definition at line 82 of file IrReceiverSampler.cpp.

size_t IrReceiverSampler::getDataLength ( ) const
inlinevirtual

Returns the number of collected durations.

Returns
number durations

Implements IrReader.

Definition at line 114 of file IrReceiverSampler.h.

microseconds_t IrReceiverSampler::getDuration ( unsigned int  index) const
inlinevirtual

Returns the index-th duration, if possible.

Parameters
indexindex of duration
Returns
requested duration

Implements IrReader.

Definition at line 118 of file IrReceiverSampler.h.

milliseconds_t IrReceiverSampler::getEndingTimeout ( ) const
virtual

Reimplemented from IrReader.

Definition at line 78 of file IrReceiverSampler.cpp.

static IrReceiverSampler* IrReceiverSampler::getInstance ( )
inlinestatic

Returns a pointer to the instance, or NULL.

Returns
pointer to instance, possibly NULL.

Definition at line 96 of file IrReceiverSampler.h.

boolean IrReceiverSampler::isReady ( ) const
inlinevirtual

Returns true if there is collected data.

Returns
status

Implements IrReader.

Definition at line 122 of file IrReceiverSampler.h.

IrReceiverSampler * IrReceiverSampler::newIrReceiverSampler ( size_t  captureLength = defaultCaptureLength,
pin_t  pin = defaultPin,
boolean  pullup = false,
microseconds_t  markExcess = defaultMarkExcess,
milliseconds_t  beginningTimeout = defaultBeginningTimeout,
milliseconds_t  endingTimeout = defaultEndingTimeout 
)
static

This factory method replaces public constructors.

Provided that no instance currently exists, it constructs a new instance and return a pointer to it, if possible. Otherwise, it returns NULL.

Parameters
captureLengthbuffersize requested
pinGPIO pin to use
pulluptrue if the internal pullup resistor should be enabled
markExcessmarkExcess to use
beginningTimeoutbeginningTimeout to use
endingTimeoutendingTimeout to use
Returns
pointer to a valid instance, or NULL.

Definition at line 28 of file IrReceiverSampler.cpp.

void IrReceiverSampler::reset ( )
virtual

Reimplemented from IrReader.

Definition at line 52 of file IrReceiverSampler.cpp.

void IrReceiverSampler::setBeginningTimeout ( milliseconds_t  timeOut)
virtual

Reimplemented from IrReader.

Definition at line 74 of file IrReceiverSampler.cpp.

void IrReceiverSampler::setEndingTimeout ( milliseconds_t  timeOut)
virtual

Reimplemented from IrReader.

Definition at line 70 of file IrReceiverSampler.cpp.

Member Data Documentation

uint32_t IrReceiverSampler::beginningTimeoutInTicks

Definition at line 39 of file IrReceiverSampler.h.

volatile size_t IrReceiverSampler::dataLength

Number of entries in durationData.

Definition at line 48 of file IrReceiverSampler.h.

volatile microseconds_t* IrReceiverSampler::durationData

Data buffer.

Definition at line 45 of file IrReceiverSampler.h.

uint32_t IrReceiverSampler::endingTimeoutInTicks

Definition at line 37 of file IrReceiverSampler.h.

const unsigned long IrReceiverSampler::microsPerTick = 50
static

microseconds per clock interrupt

Definition at line 22 of file IrReceiverSampler.h.

volatile ReceiverState_t IrReceiverSampler::receiverState

State of the state machine.

Definition at line 33 of file IrReceiverSampler.h.

volatile uint32_t IrReceiverSampler::timer

state timer, counts 50uS ticks.

Definition at line 42 of file IrReceiverSampler.h.


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