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 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 */
shintamainjp 0:ec264f4ce158 26 explicit TransmitterIR(PinName txpin);
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;
shintamainjp 0:ec264f4ce158 78
shintamainjp 0:ec264f4ce158 79 void tick();
shintamainjp 0:ec264f4ce158 80
shintamainjp 0:ec264f4ce158 81 };
shintamainjp 0:ec264f4ce158 82
shintamainjp 0:ec264f4ce158 83 #endif