RemoteIR.

Dependents:   RemoteIR_TestProgram SerialGPS_TestProgram StarBoardOrangeExpansion1 Door_Slamming_Device ... more

Committer:
shintamainjp
Date:
Fri Sep 17 20:22:38 2010 +0000
Revision:
9:dcfdac59ef74
Parent:
8:46e34d6ddbe4
Child:
10:c54fb1204d1e

        

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