wpi-32u4-library
Public Member Functions | Private Types | Private Attributes
IRDecoder Class Reference

#include <IRdecoder.h>

Public Member Functions

 IRDecoder (uint8_t p)
 
void init (void)
 
void handleIRsensor (void)
 
uint32_t getCode (void)
 
int16_t getKeyCode (bool acceptRepeat=false)
 

Private Types

enum  IR_STATE {
  IR_READY , IR_PREAMBLE , IR_REPEAT , IR_ACTIVE ,
  IR_COMPLETE , IR_ERROR
}
 

Private Attributes

uint8_t pin = -1
 
IR_STATE state = IR_READY
 
volatile uint32_t lastReceiveTime = 0
 
volatile uint32_t currCode = 0
 
volatile uint8_t index = 0
 
volatile uint32_t fallingEdge = 0
 
volatile uint32_t risingEdge = 0
 
volatile uint32_t lastRisingEdge = 0
 

Detailed Description

A class to interpret IR remotes with NEC encoding.

NEC encoding sends four bytes: [device ID, ~divice ID, key code, ~key code]

Sending the inverse allow for easy error checking (and reduces saturation in the receiver).

Codes are send in little endian; this library reverses upon reception, so the first bit received is in the LSB of currCode. That means that the key code is found in bits [23..16] of currCode

https://techdocs.altium.com/display/FPGA/NEC+Infrared+Transmission+Protocol

This does not interpret the codes into which key was pressed. That needs to be mapped on a remote by remote basis.

Definition at line 20 of file IRdecoder.h.

Member Enumeration Documentation

◆ IR_STATE

enum IRDecoder::IR_STATE
private
Enumerator
IR_READY 
IR_PREAMBLE 
IR_REPEAT 
IR_ACTIVE 
IR_COMPLETE 
IR_ERROR 

Definition at line 25 of file IRdecoder.h.

Constructor & Destructor Documentation

◆ IRDecoder()

IRDecoder::IRDecoder ( uint8_t  p)
inline

Definition at line 50 of file IRdecoder.h.

Member Function Documentation

◆ getCode()

uint32_t IRDecoder::getCode ( void  )
inline

Definition at line 54 of file IRdecoder.h.

References currCode, IR_COMPLETE, IR_READY, IR_REPEAT, and state.

◆ getKeyCode()

int16_t IRDecoder::getKeyCode ( bool  acceptRepeat = false)
inline

Definition at line 65 of file IRdecoder.h.

References currCode, IR_COMPLETE, IR_READY, IR_REPEAT, and state.

Referenced by loop().

◆ handleIRsensor()

void IRDecoder::handleIRsensor ( void  )

◆ init()

void IRDecoder::init ( void  )

Definition at line 12 of file IRdecoder.cpp.

References attachPCInt(), digitalPinToPCInterrupt(), handleIRsensor(), and pin.

Referenced by setup().

Field Documentation

◆ currCode

volatile uint32_t IRDecoder::currCode = 0
private

Definition at line 39 of file IRdecoder.h.

Referenced by getCode(), getKeyCode(), and handleIRsensor().

◆ fallingEdge

volatile uint32_t IRDecoder::fallingEdge = 0
private

Definition at line 42 of file IRdecoder.h.

Referenced by handleIRsensor().

◆ index

volatile uint8_t IRDecoder::index = 0
private

Definition at line 40 of file IRdecoder.h.

Referenced by handleIRsensor().

◆ lastReceiveTime

volatile uint32_t IRDecoder::lastReceiveTime = 0
private

Definition at line 37 of file IRdecoder.h.

Referenced by handleIRsensor().

◆ lastRisingEdge

volatile uint32_t IRDecoder::lastRisingEdge = 0
private

Definition at line 45 of file IRdecoder.h.

Referenced by handleIRsensor().

◆ pin

uint8_t IRDecoder::pin = -1
private

Definition at line 23 of file IRdecoder.h.

Referenced by handleIRsensor(), and init().

◆ risingEdge

volatile uint32_t IRDecoder::risingEdge = 0
private

Definition at line 43 of file IRdecoder.h.

Referenced by handleIRsensor().

◆ state

IR_STATE IRDecoder::state = IR_READY
private

Definition at line 35 of file IRdecoder.h.

Referenced by getCode(), getKeyCode(), and handleIRsensor().


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