RoemoteIR

Committer:
kmsmile2
Date:
Wed Jun 12 08:05:57 2019 +0000
Revision:
12:5833495063f7
Parent:
11:268cc2ab63bd
remotIR;

Who changed what in which revision?

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