forked RemoteIR

Fork of RemoteIR by Shinichiro Nakamura

Committer:
misodengaku
Date:
Sat Mar 17 14:42:15 2018 +0000
Revision:
12:d86179332137
Parent:
11:268cc2ab63bd
support level inversion

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shintamainjp 0:ec264f4ce158 1 /**
shintamainjp 9:dcfdac59ef74 2 * IR transmitter (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 _TRANSMITTER_IR_H_
shintamainjp 0:ec264f4ce158 9 #define _TRANSMITTER_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 8:46e34d6ddbe4 15 /**
shintamainjp 8:46e34d6ddbe4 16 * IR transmitter class.
shintamainjp 8:46e34d6ddbe4 17 */
shintamainjp 0:ec264f4ce158 18 class TransmitterIR {
shintamainjp 0:ec264f4ce158 19 public:
shintamainjp 8:46e34d6ddbe4 20
shintamainjp 8:46e34d6ddbe4 21 /**
shintamainjp 8:46e34d6ddbe4 22 * Constructor.
shintamainjp 8:46e34d6ddbe4 23 *
shintamainjp 8:46e34d6ddbe4 24 * @param txpin Pin for transmit IR signal.
shintamainjp 8:46e34d6ddbe4 25 */
misodengaku 12:d86179332137 26 explicit TransmitterIR(PinName txpin, bool txInversion);
shintamainjp 8:46e34d6ddbe4 27
shintamainjp 8:46e34d6ddbe4 28 /**
shintamainjp 8:46e34d6ddbe4 29 * Destructor.
shintamainjp 8:46e34d6ddbe4 30 */
shintamainjp 0:ec264f4ce158 31 ~TransmitterIR();
shintamainjp 0:ec264f4ce158 32
shintamainjp 0:ec264f4ce158 33 typedef enum {
shintamainjp 0:ec264f4ce158 34 Idle,
shintamainjp 0:ec264f4ce158 35 Leader,
shintamainjp 0:ec264f4ce158 36 Data,
shintamainjp 0:ec264f4ce158 37 Trailer
shintamainjp 0:ec264f4ce158 38 } State;
shintamainjp 0:ec264f4ce158 39
shintamainjp 8:46e34d6ddbe4 40 /**
shintamainjp 8:46e34d6ddbe4 41 * Get state.
shintamainjp 8:46e34d6ddbe4 42 *
shintamainjp 8:46e34d6ddbe4 43 * @return Current state.
shintamainjp 8:46e34d6ddbe4 44 */
shintamainjp 0:ec264f4ce158 45 State getState(void);
shintamainjp 8:46e34d6ddbe4 46
shintamainjp 8:46e34d6ddbe4 47 /**
shintamainjp 8:46e34d6ddbe4 48 * Set data.
shintamainjp 8:46e34d6ddbe4 49 *
shintamainjp 8:46e34d6ddbe4 50 * @param format Format.
shintamainjp 8:46e34d6ddbe4 51 * @param buf Buffer of a data.
shintamainjp 8:46e34d6ddbe4 52 * @param bitlength Bit length of the data.
shintamainjp 8:46e34d6ddbe4 53 *
shintamainjp 8:46e34d6ddbe4 54 * @return Data bit length.
shintamainjp 8:46e34d6ddbe4 55 */
shintamainjp 0:ec264f4ce158 56 int setData(RemoteIR::Format format, uint8_t *buf, int bitlength);
shintamainjp 0:ec264f4ce158 57
shintamainjp 0:ec264f4ce158 58 private:
shintamainjp 0:ec264f4ce158 59
shintamainjp 0:ec264f4ce158 60 typedef struct {
shintamainjp 0:ec264f4ce158 61 State state;
shintamainjp 0:ec264f4ce158 62 int bitcount;
shintamainjp 0:ec264f4ce158 63 int leader;
shintamainjp 0:ec264f4ce158 64 int data;
shintamainjp 0:ec264f4ce158 65 int trailer;
shintamainjp 0:ec264f4ce158 66 } work_t;
shintamainjp 0:ec264f4ce158 67
shintamainjp 0:ec264f4ce158 68 typedef struct {
shintamainjp 0:ec264f4ce158 69 RemoteIR::Format format;
shintamainjp 0:ec264f4ce158 70 int bitlength;
shintamainjp 0:ec264f4ce158 71 uint8_t buffer[64];
shintamainjp 0:ec264f4ce158 72 } data_t;
shintamainjp 0:ec264f4ce158 73
shintamainjp 0:ec264f4ce158 74 PwmOut tx;
shintamainjp 0:ec264f4ce158 75 Ticker ticker;
shintamainjp 0:ec264f4ce158 76 data_t data;
shintamainjp 0:ec264f4ce158 77 work_t work;
misodengaku 12:d86179332137 78 bool txInversion;
shintamainjp 0:ec264f4ce158 79
shintamainjp 0:ec264f4ce158 80 void tick();
misodengaku 12:d86179332137 81 void setLEDHigh(void);
misodengaku 12:d86179332137 82 void setLEDLow(void);
shintamainjp 0:ec264f4ce158 83
shintamainjp 0:ec264f4ce158 84 };
shintamainjp 0:ec264f4ce158 85
shintamainjp 0:ec264f4ce158 86 #endif