Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
ReceiverIR.h
- Committer:
- shintamainjp
- Date:
- 2010-08-17
- Revision:
- 0:ec264f4ce158
- Child:
- 1:4adf16017a0f
File content as of revision 0:ec264f4ce158:
/**
* IR receiver (Version 0.0.3)
*
* Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
* http://shinta.main.jp/
*/
#ifndef _RECEIVER_IR_H_
#define _RECEIVER_IR_H_
#include <mbed.h>
#include "Semaphore.h"
#include "RemoteIR.h"
/**
* IR receiver class.
*/
class ReceiverIR {
public:
/**
* Constructor.
*
* @param rxpin Pin for receive IR signal.
*/
explicit ReceiverIR(PinName rxpin);
/**
* Destructor.
*/
~ReceiverIR();
/**
* State.
*/
typedef enum {
Idle,
Receiving,
Received
} State;
void init(void);
/**
* Get state.
*
* @return Current state.
*/
State getState();
/**
* Get data.
*
* @param format Pointer to format.
* @param buf Buffer of data.
* @param bufsiz Buffer byte size.
*
* @return Data bit length.
*/
int getData(RemoteIR::Format *format, uint8_t *buf, int bufsiz);
private:
typedef struct {
State state;
RemoteIR::Format format;
int bitcount;
uint8_t buffer[64];
} data_t;
typedef struct {
int c1;
int c2;
int c3;
int d1;
int d2;
} work_t;
static const int TUS_NEC = 562;
static const int TUS_AEHA = 425;
static const int TUS_SONY = 600;
InterruptIn evt; /**< Interrupt based input for input. */
Timer timer; /**< Timer for WDT. */
Ticker ticker; /**< Tciker for tick. */
Semaphore sem; /**< Semaphore for data. */
Timeout timeout; /**< Timeout for tail. */
data_t data;
work_t work;
void init_state(void);
void isr_wdt(void);
void isr_fall(void);
void isr_rise(void);
/**
* ISR timeout for tail detection.
*/
void isr_timeout(void);
};
#endif