愛莉 結城 / Mbed 2 deprecated MARY_IRReceive

Dependencies:   mbed

Committer:
yuki
Date:
Sun Aug 24 06:58:30 2014 +0000
Revision:
1:4e6dc3e5ab7c
????;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yuki 1:4e6dc3e5ab7c 1 /**
yuki 1:4e6dc3e5ab7c 2 * IR receiver (Version 0.0.4)
yuki 1:4e6dc3e5ab7c 3 *
yuki 1:4e6dc3e5ab7c 4 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
yuki 1:4e6dc3e5ab7c 5 * http://shinta.main.jp/
yuki 1:4e6dc3e5ab7c 6 */
yuki 1:4e6dc3e5ab7c 7
yuki 1:4e6dc3e5ab7c 8 #ifndef _RECEIVER_IR_H_
yuki 1:4e6dc3e5ab7c 9 #define _RECEIVER_IR_H_
yuki 1:4e6dc3e5ab7c 10
yuki 1:4e6dc3e5ab7c 11 #include <mbed.h>
yuki 1:4e6dc3e5ab7c 12
yuki 1:4e6dc3e5ab7c 13 #include "RemoteIR.h"
yuki 1:4e6dc3e5ab7c 14
yuki 1:4e6dc3e5ab7c 15 /**
yuki 1:4e6dc3e5ab7c 16 * IR receiver class.
yuki 1:4e6dc3e5ab7c 17 */
yuki 1:4e6dc3e5ab7c 18 class ReceiverIR {
yuki 1:4e6dc3e5ab7c 19 public:
yuki 1:4e6dc3e5ab7c 20
yuki 1:4e6dc3e5ab7c 21 /**
yuki 1:4e6dc3e5ab7c 22 * Constructor.
yuki 1:4e6dc3e5ab7c 23 *
yuki 1:4e6dc3e5ab7c 24 * @param rxpin Pin for receive IR signal.
yuki 1:4e6dc3e5ab7c 25 */
yuki 1:4e6dc3e5ab7c 26 explicit ReceiverIR(PinName rxpin);
yuki 1:4e6dc3e5ab7c 27
yuki 1:4e6dc3e5ab7c 28 /**
yuki 1:4e6dc3e5ab7c 29 * Destructor.
yuki 1:4e6dc3e5ab7c 30 */
yuki 1:4e6dc3e5ab7c 31 ~ReceiverIR();
yuki 1:4e6dc3e5ab7c 32
yuki 1:4e6dc3e5ab7c 33 /**
yuki 1:4e6dc3e5ab7c 34 * State.
yuki 1:4e6dc3e5ab7c 35 */
yuki 1:4e6dc3e5ab7c 36 typedef enum {
yuki 1:4e6dc3e5ab7c 37 Idle,
yuki 1:4e6dc3e5ab7c 38 Receiving,
yuki 1:4e6dc3e5ab7c 39 Received
yuki 1:4e6dc3e5ab7c 40 } State;
yuki 1:4e6dc3e5ab7c 41
yuki 1:4e6dc3e5ab7c 42 /**
yuki 1:4e6dc3e5ab7c 43 * Get state.
yuki 1:4e6dc3e5ab7c 44 *
yuki 1:4e6dc3e5ab7c 45 * @return Current state.
yuki 1:4e6dc3e5ab7c 46 */
yuki 1:4e6dc3e5ab7c 47 State getState();
yuki 1:4e6dc3e5ab7c 48
yuki 1:4e6dc3e5ab7c 49 /**
yuki 1:4e6dc3e5ab7c 50 * Get data.
yuki 1:4e6dc3e5ab7c 51 *
yuki 1:4e6dc3e5ab7c 52 * @param format Pointer to format.
yuki 1:4e6dc3e5ab7c 53 * @param buf Buffer of a data.
yuki 1:4e6dc3e5ab7c 54 * @param bitlength Bit length of the buffer.
yuki 1:4e6dc3e5ab7c 55 *
yuki 1:4e6dc3e5ab7c 56 * @return Data bit length.
yuki 1:4e6dc3e5ab7c 57 */
yuki 1:4e6dc3e5ab7c 58 int getData(RemoteIR::Format *format, uint8_t *buf, int bitlength);
yuki 1:4e6dc3e5ab7c 59
yuki 1:4e6dc3e5ab7c 60 private:
yuki 1:4e6dc3e5ab7c 61
yuki 1:4e6dc3e5ab7c 62 typedef struct {
yuki 1:4e6dc3e5ab7c 63 RemoteIR::Format format;
yuki 1:4e6dc3e5ab7c 64 int bitcount;
yuki 1:4e6dc3e5ab7c 65 uint8_t buffer[256];
yuki 1:4e6dc3e5ab7c 66 } data_t;
yuki 1:4e6dc3e5ab7c 67
yuki 1:4e6dc3e5ab7c 68 typedef struct {
yuki 1:4e6dc3e5ab7c 69 State state;
yuki 1:4e6dc3e5ab7c 70 int c1;
yuki 1:4e6dc3e5ab7c 71 int c2;
yuki 1:4e6dc3e5ab7c 72 int c3;
yuki 1:4e6dc3e5ab7c 73 int d1;
yuki 1:4e6dc3e5ab7c 74 int d2;
yuki 1:4e6dc3e5ab7c 75 } work_t;
yuki 1:4e6dc3e5ab7c 76
yuki 1:4e6dc3e5ab7c 77 InterruptIn evt; /**< Interrupt based input for input. */
yuki 1:4e6dc3e5ab7c 78 Timer timer; /**< Timer for WDT. */
yuki 1:4e6dc3e5ab7c 79 Ticker ticker; /**< Tciker for tick. */
yuki 1:4e6dc3e5ab7c 80 Timeout timeout; /**< Timeout for tail. */
yuki 1:4e6dc3e5ab7c 81
yuki 1:4e6dc3e5ab7c 82 data_t data;
yuki 1:4e6dc3e5ab7c 83 work_t work;
yuki 1:4e6dc3e5ab7c 84
yuki 1:4e6dc3e5ab7c 85 void init_state(void);
yuki 1:4e6dc3e5ab7c 86
yuki 1:4e6dc3e5ab7c 87 void isr_wdt(void);
yuki 1:4e6dc3e5ab7c 88 void isr_fall(void);
yuki 1:4e6dc3e5ab7c 89 void isr_rise(void);
yuki 1:4e6dc3e5ab7c 90
yuki 1:4e6dc3e5ab7c 91 /**
yuki 1:4e6dc3e5ab7c 92 * ISR timeout for tail detection.
yuki 1:4e6dc3e5ab7c 93 */
yuki 1:4e6dc3e5ab7c 94 void isr_timeout(void);
yuki 1:4e6dc3e5ab7c 95
yuki 1:4e6dc3e5ab7c 96 };
yuki 1:4e6dc3e5ab7c 97
yuki 1:4e6dc3e5ab7c 98 #endif