RemoteIR.

Dependents:   RemoteIR_TestProgram SerialGPS_TestProgram StarBoardOrangeExpansion1 Door_Slamming_Device ... more

Committer:
shintamainjp
Date:
Mon Sep 20 00:54:59 2010 +0000
Revision:
11:268cc2ab63bd
Parent:
10:c54fb1204d1e

        

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
shintamainjp 0:ec264f4ce158 60 private:
shintamainjp 0:ec264f4ce158 61
shintamainjp 0:ec264f4ce158 62 typedef struct {
shintamainjp 0:ec264f4ce158 63 RemoteIR::Format format;
shintamainjp 0:ec264f4ce158 64 int bitcount;
shintamainjp 0:ec264f4ce158 65 uint8_t buffer[64];
shintamainjp 0:ec264f4ce158 66 } data_t;
shintamainjp 0:ec264f4ce158 67
shintamainjp 0:ec264f4ce158 68 typedef struct {
shintamainjp 9:dcfdac59ef74 69 State state;
shintamainjp 0:ec264f4ce158 70 int c1;
shintamainjp 0:ec264f4ce158 71 int c2;
shintamainjp 0:ec264f4ce158 72 int c3;
shintamainjp 0:ec264f4ce158 73 int d1;
shintamainjp 0:ec264f4ce158 74 int d2;
shintamainjp 0:ec264f4ce158 75 } work_t;
shintamainjp 0:ec264f4ce158 76
shintamainjp 0:ec264f4ce158 77 InterruptIn evt; /**< Interrupt based input for input. */
shintamainjp 0:ec264f4ce158 78 Timer timer; /**< Timer for WDT. */
shintamainjp 0:ec264f4ce158 79 Ticker ticker; /**< Tciker for tick. */
shintamainjp 0:ec264f4ce158 80 Timeout timeout; /**< Timeout for tail. */
shintamainjp 0:ec264f4ce158 81
shintamainjp 0:ec264f4ce158 82 data_t data;
shintamainjp 0:ec264f4ce158 83 work_t work;
shintamainjp 0:ec264f4ce158 84
shintamainjp 0:ec264f4ce158 85 void init_state(void);
shintamainjp 0:ec264f4ce158 86
shintamainjp 0:ec264f4ce158 87 void isr_wdt(void);
shintamainjp 0:ec264f4ce158 88 void isr_fall(void);
shintamainjp 0:ec264f4ce158 89 void isr_rise(void);
shintamainjp 0:ec264f4ce158 90
shintamainjp 0:ec264f4ce158 91 /**
shintamainjp 0:ec264f4ce158 92 * ISR timeout for tail detection.
shintamainjp 0:ec264f4ce158 93 */
shintamainjp 0:ec264f4ce158 94 void isr_timeout(void);
shintamainjp 0:ec264f4ce158 95
shintamainjp 0:ec264f4ce158 96 };
shintamainjp 0:ec264f4ce158 97
shintamainjp 0:ec264f4ce158 98 #endif