ChoroQ
TransmitterChoroQ.h@0:2a40e6db61c2, 2010-09-19 (annotated)
- Committer:
- shintamainjp
- Date:
- Sun Sep 19 23:30:35 2010 +0000
- Revision:
- 0:2a40e6db61c2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shintamainjp | 0:2a40e6db61c2 | 1 | /** |
shintamainjp | 0:2a40e6db61c2 | 2 | * CHORO Q HYBRID transmitter (Version 0.0.1) |
shintamainjp | 0:2a40e6db61c2 | 3 | * |
shintamainjp | 0:2a40e6db61c2 | 4 | * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems) |
shintamainjp | 0:2a40e6db61c2 | 5 | * http://shinta.main.jp/ |
shintamainjp | 0:2a40e6db61c2 | 6 | */ |
shintamainjp | 0:2a40e6db61c2 | 7 | |
shintamainjp | 0:2a40e6db61c2 | 8 | #ifndef _TRANSMITTER_CHORO_Q_H_ |
shintamainjp | 0:2a40e6db61c2 | 9 | #define _TRANSMITTER_CHORO_Q_H_ |
shintamainjp | 0:2a40e6db61c2 | 10 | |
shintamainjp | 0:2a40e6db61c2 | 11 | #include <mbed.h> |
shintamainjp | 0:2a40e6db61c2 | 12 | |
shintamainjp | 0:2a40e6db61c2 | 13 | /** |
shintamainjp | 0:2a40e6db61c2 | 14 | * CHORO Q HYBRID transmitter class. |
shintamainjp | 0:2a40e6db61c2 | 15 | */ |
shintamainjp | 0:2a40e6db61c2 | 16 | class TransmitterChoroQ { |
shintamainjp | 0:2a40e6db61c2 | 17 | public: |
shintamainjp | 0:2a40e6db61c2 | 18 | |
shintamainjp | 0:2a40e6db61c2 | 19 | /** |
shintamainjp | 0:2a40e6db61c2 | 20 | * Constructor. |
shintamainjp | 0:2a40e6db61c2 | 21 | * |
shintamainjp | 0:2a40e6db61c2 | 22 | * @param txpin Pin for transmit IR signal. |
shintamainjp | 0:2a40e6db61c2 | 23 | */ |
shintamainjp | 0:2a40e6db61c2 | 24 | explicit TransmitterChoroQ(PinName txpin); |
shintamainjp | 0:2a40e6db61c2 | 25 | |
shintamainjp | 0:2a40e6db61c2 | 26 | /** |
shintamainjp | 0:2a40e6db61c2 | 27 | * Destructor. |
shintamainjp | 0:2a40e6db61c2 | 28 | */ |
shintamainjp | 0:2a40e6db61c2 | 29 | ~TransmitterChoroQ(); |
shintamainjp | 0:2a40e6db61c2 | 30 | |
shintamainjp | 0:2a40e6db61c2 | 31 | typedef enum { |
shintamainjp | 0:2a40e6db61c2 | 32 | Idle, |
shintamainjp | 0:2a40e6db61c2 | 33 | Leader, |
shintamainjp | 0:2a40e6db61c2 | 34 | Data, |
shintamainjp | 0:2a40e6db61c2 | 35 | Trailer |
shintamainjp | 0:2a40e6db61c2 | 36 | } State; |
shintamainjp | 0:2a40e6db61c2 | 37 | |
shintamainjp | 0:2a40e6db61c2 | 38 | /** |
shintamainjp | 0:2a40e6db61c2 | 39 | * Get state. |
shintamainjp | 0:2a40e6db61c2 | 40 | * |
shintamainjp | 0:2a40e6db61c2 | 41 | * @return Current state. |
shintamainjp | 0:2a40e6db61c2 | 42 | */ |
shintamainjp | 0:2a40e6db61c2 | 43 | State getState(void); |
shintamainjp | 0:2a40e6db61c2 | 44 | |
shintamainjp | 0:2a40e6db61c2 | 45 | /** |
shintamainjp | 0:2a40e6db61c2 | 46 | * Set data. |
shintamainjp | 0:2a40e6db61c2 | 47 | * |
shintamainjp | 0:2a40e6db61c2 | 48 | * @param format Format. |
shintamainjp | 0:2a40e6db61c2 | 49 | * @param buf Buffer of a data. |
shintamainjp | 0:2a40e6db61c2 | 50 | * @param bitlength Bit length of the data. |
shintamainjp | 0:2a40e6db61c2 | 51 | * |
shintamainjp | 0:2a40e6db61c2 | 52 | * @return Data bit length. |
shintamainjp | 0:2a40e6db61c2 | 53 | */ |
shintamainjp | 0:2a40e6db61c2 | 54 | int setData(uint8_t *buf, int bitlength); |
shintamainjp | 0:2a40e6db61c2 | 55 | |
shintamainjp | 0:2a40e6db61c2 | 56 | private: |
shintamainjp | 0:2a40e6db61c2 | 57 | |
shintamainjp | 0:2a40e6db61c2 | 58 | typedef struct { |
shintamainjp | 0:2a40e6db61c2 | 59 | State state; |
shintamainjp | 0:2a40e6db61c2 | 60 | int bitcount; |
shintamainjp | 0:2a40e6db61c2 | 61 | int leader; |
shintamainjp | 0:2a40e6db61c2 | 62 | int data; |
shintamainjp | 0:2a40e6db61c2 | 63 | int trailer; |
shintamainjp | 0:2a40e6db61c2 | 64 | } work_t; |
shintamainjp | 0:2a40e6db61c2 | 65 | |
shintamainjp | 0:2a40e6db61c2 | 66 | typedef struct { |
shintamainjp | 0:2a40e6db61c2 | 67 | int bitlength; |
shintamainjp | 0:2a40e6db61c2 | 68 | uint8_t buffer[64]; |
shintamainjp | 0:2a40e6db61c2 | 69 | } data_t; |
shintamainjp | 0:2a40e6db61c2 | 70 | |
shintamainjp | 0:2a40e6db61c2 | 71 | PwmOut tx; |
shintamainjp | 0:2a40e6db61c2 | 72 | Ticker ticker; |
shintamainjp | 0:2a40e6db61c2 | 73 | data_t data; |
shintamainjp | 0:2a40e6db61c2 | 74 | work_t work; |
shintamainjp | 0:2a40e6db61c2 | 75 | |
shintamainjp | 0:2a40e6db61c2 | 76 | static const int TUS_TAKARATOMY = 400; |
shintamainjp | 0:2a40e6db61c2 | 77 | |
shintamainjp | 0:2a40e6db61c2 | 78 | void tick(); |
shintamainjp | 0:2a40e6db61c2 | 79 | |
shintamainjp | 0:2a40e6db61c2 | 80 | }; |
shintamainjp | 0:2a40e6db61c2 | 81 | |
shintamainjp | 0:2a40e6db61c2 | 82 | #endif |