IR remote receiver

Dependents:   experience

Committer:
Wimpie
Date:
Sun Apr 17 17:51:34 2011 +0000
Revision:
0:62d8d73b3c38
Remote IR library with IR codes from Sony

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wimpie 0:62d8d73b3c38 1 /**
Wimpie 0:62d8d73b3c38 2 * IR transmitter (Version 0.0.4)
Wimpie 0:62d8d73b3c38 3 *
Wimpie 0:62d8d73b3c38 4 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
Wimpie 0:62d8d73b3c38 5 * http://shinta.main.jp/
Wimpie 0:62d8d73b3c38 6 */
Wimpie 0:62d8d73b3c38 7
Wimpie 0:62d8d73b3c38 8 #ifndef _TRANSMITTER_IR_H_
Wimpie 0:62d8d73b3c38 9 #define _TRANSMITTER_IR_H_
Wimpie 0:62d8d73b3c38 10
Wimpie 0:62d8d73b3c38 11 #include <mbed.h>
Wimpie 0:62d8d73b3c38 12
Wimpie 0:62d8d73b3c38 13 #include "RemoteIR.h"
Wimpie 0:62d8d73b3c38 14
Wimpie 0:62d8d73b3c38 15 /**
Wimpie 0:62d8d73b3c38 16 * IR transmitter class.
Wimpie 0:62d8d73b3c38 17 */
Wimpie 0:62d8d73b3c38 18 class TransmitterIR {
Wimpie 0:62d8d73b3c38 19 public:
Wimpie 0:62d8d73b3c38 20
Wimpie 0:62d8d73b3c38 21 /**
Wimpie 0:62d8d73b3c38 22 * Constructor.
Wimpie 0:62d8d73b3c38 23 *
Wimpie 0:62d8d73b3c38 24 * @param txpin Pin for transmit IR signal.
Wimpie 0:62d8d73b3c38 25 */
Wimpie 0:62d8d73b3c38 26 explicit TransmitterIR(PinName txpin);
Wimpie 0:62d8d73b3c38 27
Wimpie 0:62d8d73b3c38 28 /**
Wimpie 0:62d8d73b3c38 29 * Destructor.
Wimpie 0:62d8d73b3c38 30 */
Wimpie 0:62d8d73b3c38 31 ~TransmitterIR();
Wimpie 0:62d8d73b3c38 32
Wimpie 0:62d8d73b3c38 33 typedef enum {
Wimpie 0:62d8d73b3c38 34 Idle,
Wimpie 0:62d8d73b3c38 35 Leader,
Wimpie 0:62d8d73b3c38 36 Data,
Wimpie 0:62d8d73b3c38 37 Trailer
Wimpie 0:62d8d73b3c38 38 } State;
Wimpie 0:62d8d73b3c38 39
Wimpie 0:62d8d73b3c38 40 /**
Wimpie 0:62d8d73b3c38 41 * Get state.
Wimpie 0:62d8d73b3c38 42 *
Wimpie 0:62d8d73b3c38 43 * @return Current state.
Wimpie 0:62d8d73b3c38 44 */
Wimpie 0:62d8d73b3c38 45 State getState(void);
Wimpie 0:62d8d73b3c38 46
Wimpie 0:62d8d73b3c38 47 /**
Wimpie 0:62d8d73b3c38 48 * Set data.
Wimpie 0:62d8d73b3c38 49 *
Wimpie 0:62d8d73b3c38 50 * @param format Format.
Wimpie 0:62d8d73b3c38 51 * @param buf Buffer of a data.
Wimpie 0:62d8d73b3c38 52 * @param bitlength Bit length of the data.
Wimpie 0:62d8d73b3c38 53 *
Wimpie 0:62d8d73b3c38 54 * @return Data bit length.
Wimpie 0:62d8d73b3c38 55 */
Wimpie 0:62d8d73b3c38 56 int setData(RemoteIR::Format format, uint8_t *buf, int bitlength);
Wimpie 0:62d8d73b3c38 57
Wimpie 0:62d8d73b3c38 58 private:
Wimpie 0:62d8d73b3c38 59
Wimpie 0:62d8d73b3c38 60 typedef struct {
Wimpie 0:62d8d73b3c38 61 State state;
Wimpie 0:62d8d73b3c38 62 int bitcount;
Wimpie 0:62d8d73b3c38 63 int leader;
Wimpie 0:62d8d73b3c38 64 int data;
Wimpie 0:62d8d73b3c38 65 int trailer;
Wimpie 0:62d8d73b3c38 66 } work_t;
Wimpie 0:62d8d73b3c38 67
Wimpie 0:62d8d73b3c38 68 typedef struct {
Wimpie 0:62d8d73b3c38 69 RemoteIR::Format format;
Wimpie 0:62d8d73b3c38 70 int bitlength;
Wimpie 0:62d8d73b3c38 71 uint8_t buffer[64];
Wimpie 0:62d8d73b3c38 72 } data_t;
Wimpie 0:62d8d73b3c38 73
Wimpie 0:62d8d73b3c38 74 PwmOut tx;
Wimpie 0:62d8d73b3c38 75 Ticker ticker;
Wimpie 0:62d8d73b3c38 76 data_t data;
Wimpie 0:62d8d73b3c38 77 work_t work;
Wimpie 0:62d8d73b3c38 78
Wimpie 0:62d8d73b3c38 79 void tick();
Wimpie 0:62d8d73b3c38 80
Wimpie 0:62d8d73b3c38 81 };
Wimpie 0:62d8d73b3c38 82
Wimpie 0:62d8d73b3c38 83 #endif